stormcloud-video-player 0.8.68 → 0.8.69
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/dist/stormcloud-vp.min.js +1 -1
- package/lib/Player.cjs +30 -8
- package/lib/Player.cjs.map +1 -1
- package/lib/Player.d.cts +2 -1
- package/lib/StormcloudPlayer.cjs +5615 -5101
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/StormcloudPlayer.d.cts +1 -0
- package/lib/index.cjs +5688 -5117
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +2 -1
- package/lib/index.d.ts +81 -1
- package/lib/index.js +5663 -5119
- package/lib/index.js.map +1 -1
- package/lib/player/AdBreakOrchestrator.cjs +314 -113
- package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
- package/lib/player/AdBreakOrchestrator.d.cts +9 -3
- package/lib/player/FloorLadder.cjs +578 -0
- package/lib/player/FloorLadder.cjs.map +1 -0
- package/lib/player/FloorLadder.d.cts +74 -0
- package/lib/player/StormcloudVideoPlayer.cjs +5615 -5101
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +9 -1
- package/lib/players/HlsPlayer.cjs +5615 -5101
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +5615 -5101
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.cjs +30 -8
- package/lib/props.cjs.map +1 -1
- package/lib/props.d.cts +1 -0
- package/lib/types.d.cts +22 -1
- package/lib/ui/StormcloudVideoPlayer.cjs +5634 -5091
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/ui/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/utils/vastMacros.cjs +4 -0
- package/lib/utils/vastMacros.cjs.map +1 -1
- package/lib/utils/vastMacros.d.cts +2 -1
- package/package.json +1 -1
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_TRACKING_INGEST_CONFIG","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","configureTrackingIngest","createHlsAdPlayer","createPalNonceManager","createStormcloudPlayer","default","detectBrowser","getBrowserConfigOverrides","ingestPlayerTracking","initializePolyfills","getBrowserID","getClientInfo","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","exports","import_react","require","import_hls","getChromeVersion","ua","match","parseInt","getWebKitVersion","getPlatform","navigator","userAgentData","platform","userAgent","test","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","parts","split","toString","Promise","Map","Set","URLSearchParams","browser","overrides","allowNativeHls","pauseContentDuringAds","Array","assign","forEach","String","includes","e","debug","console","log","feature","TextEncoder","fetch","crypto","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","Math","floor","random","formatPlayhead","seconds","Number","isFinite","total","hh","padStart","mm","ss","ms","resolveMacroValues","ctx","values","set","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","Date","toISOString","errorCode","playerWidth","playerHeight","round","deviceId","deviceIdType","limitAdTracking","pageUrl","URL","hostname","clientUa","podSequence","adServingId","reason","substituteVastTrackingMacros","url","replace","encodeURIComponent","has","LINEAR_TRACKING_EVENTS","textOf","el","textContent","trim","parseVastTime","length","map","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","trimmed","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","contentVideo","options","adPlaying","originalMutedState","originalVolume","listeners","max","mainHlsInstance","min","volume","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","AD_CONTAINER_PROP","currentAd","currentAdMediaFile","podAds","preloadedAds","preloadingAds","destroyed","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","fn","warn","SENSITIVE_URL_PARAMS","redactUrl","parsed","searchParams","keys","toLowerCase","logFunnel","stage","extra","breakId","requestId","controllerId","visibilityState","document","adId","id","podIndex","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","context","currentTime","clientWidth","clientHeight","location","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","add","timeoutId","release","outcome","clearTimeout","onload","onerror","delete","setTimeout","getMainStreamQuality","levels","currentLevel","autoLevel","loadLevel","level2","height","bitrate","canPlay2","index","level","width","getMediaTargetQuality","mainQuality","dpr","window","devicePixelRatio","containerWidth","containerHeight","base","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","file","isHls","isHlsMediaFile","canPlayType","mimeForProbe","playable","isSupported","insecure","details","candidateType","hlsJs","score","resolutionDiff","bitrateDiff","abs","push","a","mediaFile","mf","delivery","getAttribute","whyRejected","category","why","b","entry","isProgressiveMediaFile","startsWith","isAudioMediaFile","getMediaProbe","codec","apiFramework","toUpperCase","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","querySelectorAll","result","evaluateMediaFile","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","indexOf","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","source","targetLists","sourceLists","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","filter","firstEmpty","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","abort","now","creds","mode","headers","referrerPolicy","signal","httpStatus","status","ok","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","substring","fetchAndParsePod","trimmedXml","empty","resolveAd","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","sort","shift","catch","video","style","createAdVideoElement","position","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","complete","settleViewability","advanceToNextPodAd","handleAdComplete","vastErrorCode","onError","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","handleAdClick","open","reportCurrentAdError","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","containerHandlers","onClick","onInteraction","onFullscreenChange","isIntersecting","IntersectionObserver","entries","intersectionRatio","observe","detachContainerHandlers","removeEventListener","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","pendingPlayPromise","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","isConnected","containerDisplay","computed","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","timeoutMs","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","next","nextUrl","nextType","candidateCount","loadCurrentAdMedia","loadMediaCandidate","handleAdError","candidates","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","data","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","src","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","videoFrameCallbackHandle","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","durations","impressionUrls","adIndex","missingAdId","resolve","contentVolume","loadError","stop","previousMutedState","fireNotUsedForUnplayedAds","clear","pendingTimeouts","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","PRIVATE_HOST_PATTERNS","isLocalDevHost","some","pattern","toDevSafeUrl","rawUrl","cleanPath","pathname","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","existing","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","generateNonce","loader","request","manager","NonceRequest","adWillAutoPlay","adWillPlayMuted","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","sessionId","JSON","stringify","loadNonceManager","getNonce","getCurrentNonce","injectNonce","sep","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","enabled","baseUrl","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","licenseKey","body","method","Authorization","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","readStoredDeviceId","readStoredString","inferDeviceIdType","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","maxTouchPoints","CONNECTED_TV_UA","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","normalized","safeCall","isInteger","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","resolveNativeDeviceId","includeStored","isZeroedAdId","isMacroPlaceholder","storageKey","readPersistentId","writePersistentId","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","prefix","cookie","part","decodeURIComponent","slice","bytes","randomUUID","getRandomValues","seed","performanceNow","i","hex","performance","adinfo","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","Boolean","normalizeBoolean","getItem","cachedBrowserId","config","debugAdTiming","isLiveStream","inputStreamType","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","model","isAndroid","isWebView","isWebApp","os","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","origin","path","language","languages","join","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","hash","char","fallbackHash","timestamp","digest","Uint8Array","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","capture_at","heartbeatData","init","polyfillURLSearchParams","URLSearchParamsPolyfill","params","parseQueryString","append","query","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","then","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","search","polyfillStringIncludes","polyfillStringEndsWith","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","getValue","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","expandInlineMacroPlaceholders","applyDeviceIdentityParams","runtimeId","tagRdid","tagLat","latValue","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","_value","suffix","normalizeVastTagUrl","raw","anValue","orphanFragments","reconstructed","_match","val","GAM_AD_HOSTS","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","podMaxDurationMs","podMaxAds","existingUrl","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","fetchConsentSignals","signals","tasks","tcfApi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","uspApi","__uspapi","uspString","parseCueOutDuration","num","dStr","d","parseCueOutCont","elapsedMatch","durationMatch","res","elapsed","slashMatch","attrs","regex","exec","rawVal","toNumber","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","marker","ptsSeconds","cueOutContMatch","cont","durationSeconds","cueInMatch","daterangeMatch","parseAttributeList","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","matchedPackets","packetStart","tsPayloadOffset","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","componentPtsSeconds","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","expectedDescriptorOffset","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","activeScte35BreakKeyValue","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","bStart","aStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","tol","driftToleranceMs","schedule","breakStartMs","findBreakForTime","durationMs","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","ctvAdRequest","urlWithMacros","autoplay","finalUrl","ensureVideoAdType","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","expectedAdBreakDurationMs","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","lastAdRequestTime","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","temporaryFailureUrls","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","timing","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","canNative","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","isArray","tagList","idx","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","useLowLatency","isLowLatencyManifest","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","reloadLiveStream","stopLoad","detachMedia","recreateDelayMs","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","AdBreakOrchestrator","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","adConfig","placeholder","analyticsContext","nextAdRequestUrl","baseVastUrl","remaining","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","errorPayload","cause","innerError","causeMessage","handleAdFailure","requestNextAd","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","setAdPlayer","createAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","followUpBaseVastUrl","noteOpportunity","handleAdStart","adBreakDurationMs","currentMuted","currentVolume","epoch","hasPrefetchedUrl","podPlayed","vastUrls","waitForBreakDuration","startOptimizedPod","maxWaitMs","deadline","waitedForMs","resolved","prefetched","requestToken","podCount","podUrl","noteVastUrlGenerated","beginFunnelRequest","isStale","callController","recordRequestFailure","previous","getMinRemainingMsToRequestAd","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","trigger","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","pmad","pmnd","pmxd","diag","failureReason","gamRequestSent","vastHttpStatus","vastAdCount","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","impressionFired","REQUEST_FAILURE_STAGES","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","fields","withCurrentPodBudget","rawVastTagUrl","maxMs","minMs","amount","opportunityBreakKey","expectedDurationMs","requestStartedAt","wrapperDepth","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","requestUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","vastUrlsGenerated","gamResponses","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","mediaEvents","quartile25","quartile50","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","ready","ended","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","recoveries","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","reloadPos","maxAttempts","onReady","backoffMs","playResult","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingUrl}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingUrl}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${parsed.vastAdTagUri}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\") {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const requestVast = async (creds) => {\n attempt++;\n if (kind === \"gam\") {\n logFunnel(\"gam_http_request_sent\", { attempt, credentials: creds });\n }\n const response = await fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind === \"gam\") {\n logFunnel(\"gam_response_received\", {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\" && !controller?.signal.aborted) {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n logFunnel(\"vast_credentials_retry\", {\n errorMessage: error?.message\n });\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(\"[HlsAdPlayer] VAST XML received\");\n console.log(\n \"[HlsAdPlayer] VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n async function fetchAndParsePod(vastTagUrl) {\n lastPodAdElementCount = 0;\n const vastXml = await fetchVastXml(vastTagUrl);\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n console.error(\n \"[HlsAdPlayer] Pod VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n const podElements = adElements.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = adElements.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl) {\n console.log(\"[HlsAdPlayer] Requesting ads:\", vastTagUrl);\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(ensureVideoAdType(urlWithMacros));\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n this.timing.resetGamNoFillCounter();\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey) {\n this.breakSource = \"vmap\";\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey);\n const epoch = this.timing.adBreakEpoch;\n const hasPrefetchedUrl = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (adBreakDurationMs == null && !hasPrefetchedUrl) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl, adBreakDurationMs);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl, breakDurationMs) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentVastUrl = podUrl;\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(podUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: podUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n pmad: params?.get(\"pmad\") ?? void 0,\n pmnd: params?.get(\"pmnd\") ?? void 0,\n pmxd: params?.get(\"pmxd\") ?? void 0,\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(vastTagUrl);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n break;\n case \"gam_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n withCurrentPodBudget(rawVastTagUrl) {\n const vastTagUrl = ensureVideoAdType(rawVastTagUrl);\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (!(remaining > 0)) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n if (!url.searchParams.has(\"pmxd\")) return vastTagUrl;\n const maxMs = Math.round(remaining);\n url.searchParams.set(\"pmxd\", String(maxMs));\n const minMs = Number(url.searchParams.get(\"pmnd\"));\n if (Number.isFinite(minMs) && minMs > maxMs) {\n url.searchParams.set(\"pmnd\", String(maxMs));\n }\n return url.toString();\n } catch {\n return vastTagUrl;\n }\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger) {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n gamRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n const requestUrl = this.withCurrentPodBudget(vastTagUrl);\n this.currentVastUrl = requestUrl;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => ap.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsRetries: count(\"vast_credentials_retry\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n this.timing.consecutiveFailures++;\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n this.adBreak.beginVmapBreak(key);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"vastMode\",\n \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = import_react.default.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastMode,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n ...restVideoAttrs\n } = props;\n const videoRef = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = (0, import_react.useCallback)(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.useCallback)(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = (0, import_react.useMemo)(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n vastMode\n ]);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastMode !== void 0) cfg.vastMode = vastMode;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n (0, import_react.useEffect)(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.useEffect)(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nvar import_react6 = __toESM(require(\"react\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react5.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react6.Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends import_react6.Component {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return import_react6.default.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_TRACKING_INGEST_CONFIG,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n detectBrowser,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_FLOOR_LADDER_BOUNDS","DEFAULT_TRACKING_INGEST_CONFIG","DEFAULT_WEB_FLOOR_LADDER_CONFIG","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","configureTrackingIngest","createHlsAdPlayer","createPalNonceManager","createStormcloudPlayer","default","detectBrowser","fixedFloorSelector","generateFloorLevels","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","resolveFloorLadderBounds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","validateFloorCents","validateFloorLadderConfig","module","exports","import_react","require","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","platformLat","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","realDeviceId","deviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","orphanFragments","searchParams","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","applyVastMacros","expandedUrl","replaceCorrelatorFallback","streamCorrelator","pod","podMinDurationMs","max","round","podMaxDurationMs","podMaxAds","existingUrl","pageUrl","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","adTest","programTitle","channelName","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","minCents","maxCents","levels","cents","overrides","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","Array","isArray","errors","check","selected","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","decoded","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","next","update","FloorLadderController","initial","getBounds","validate","setSelector","snapshotFor","import_hls","getChromeVersion","match","getWebKitVersion","getPlatform","userAgentData","platform","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","pauseContentDuringAds","browser","Map","URLSearchParams","e","assign","debug","feature","fetch","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","isFinite","total","hh","ss","values","mm","ms","adPlayhead","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","clientUa","podSequence","adServingId","LINEAR_TRACKING_EVENTS","substituteVastTrackingMacros","resolveMacroValues","textOf","el","map","p","parseFloat","h","m","s","every","n","offset","endsWith","percent","offsetPercent","parseVastTime","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","error","code","contentVideo","options","adPlaying","originalMutedState","originalVolume","min","volume","listeners","mainHlsInstance","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","AD_CONTAINER_PROP","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","warn","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","breakId","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","log","buildTrackingMacroContext","options2","ad","adPlayheadSeconds","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","add","timeoutId","release","outcome","clearTimeout","onload","onerror","src","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","playable","canPlayType","isSupported","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","insecure","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","textContent","delivery","codec","category","whyRejected","apiFramework","toUpperCase","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","querySelectorAll","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","parseProgressOffset","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","concat","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","firstEmpty","entries","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","kind","controller","startedAt","attempt","requestVast","response","Error","AbortController","abort","creds","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","message","statusText","text","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","substring","trimmedXml","empty","resolveAd","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","sort","catch","mutedByAutoplay","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","candidateIndex","pixelCount","handleAdComplete","creativeView","onEnded","advanceToNextPodAd","onError","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","settleViewability","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","removeEventListener","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","pendingPlayPromise","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","candidates","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","container","initialize","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","preloaded","reject","fetchAndParsePod","durations","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getPodAdCount","reduce","PRIVATE_HOST_PATTERNS","isLocalDevHost","some","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","generateNonce","loader","request","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","manager","getNonce","getCurrentNonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","licenseKey","body","Authorization","cachedBrowserId","debugAdTiming","isLiveStream","inputStreamType","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","input","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","subtle","digest","TextEncoder","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","append","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","str","getAll","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","parseCueOutDuration","num","isNaN","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","out","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","BitReader","bytePos","bitPos","readBits","numBits","remainingInByte","toRead","currentByte","shift","mask","bits","skipBits","parseScte35SegmentationDescriptor","descriptor","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","componentCount","durationTicks","markerType","descriptorTag","segmentationUpidLength","descriptorLoopLength","descriptorOffset","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","parseScte35SegmentationDescriptors","splice_event_id","segmentation_event_id","Scte35CueManager","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","hasRecentlyHandledScte35Cue","recentKey","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultPodMaxAds","defaultPodMaxDurationMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","vastMode","vastEndpoint","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","durationMs","selectVastTagsForBreak","beginNewAdPod","resolvePodParams","breakDurationMs","maxDurationMs","maxAds","minDurationMs","podExactDuration","getPalDescriptionUrl","generatePodVastUrl","podParams","adPlayer","palNonce","envSignals","urlWithMacros","ctvAdRequest","autoplay","finalUrl","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","remainingMs","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","currentAdBreakStartWallClockMs","scteAdBreakEndWallClockMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","getLoadedAdId","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","wallClockRemaining","rejectLoadedAdForDuration","markAdStarted","currentAdIndex","notePodAdStarted","noteAdRequestSent","getRemainingAdMs","budgetRemaining","getMinRemainingMsToStartAd","configured","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","exponent","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","timing","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","allowNativeHls","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","maxBufferSize","maxBufferHole","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","applyStreamLatencyProfile","LEVEL_LOADED","_evt","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","earlyDetection","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","adPodQueue","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","remaining","baseVastUrl","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","followUpBaseVastUrl","handleAdStart","adBreakDurationMs","currentVolume","currentMuted","epoch","hasPrefetchedUrl","podPlayed","breakSource","noteOpportunity","vastUrls","waitForBreakDuration","startOptimizedPod","deadline","maxWaitMs","waitedForMs","resolved","prefetched","requestToken","requestUrl","podCount","podUrl","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","isStale","callController","recordRequestFailure","previous","getMinRemainingMsToRequestAd","minRemainingMsToRequestAd","defaultMinRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","trigger","nextAdTimerId","stopReason","unusableResponses","handleAdPodComplete","requestFollowUpAd","playSingleAd","continueAfterRequestFailure","adType","cancelScheduledRequest","pmxd","diag","vastAdCount","impressionFired","failureReason","impressionCount","requestFloorFields","gamRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","fields","withCurrentPodBudget","rawVastTagUrl","maxMs","minMs","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","budgetedUrl","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsRetries","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","resumeContentPlayback","liveSyncPos","toFixed","monitorLiveResumeStall","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","v","net","ended","seeking","resumeBaseline","needsReset","pollIntervalMs","graceMs","recoveryCooldownMs","maxRecoveries","maxMonitorMs","startTime","baseline","lastRecoveryAt","listenersAttached","onMediaEvent","diagEvents","dt","cleanup","poll","advanced","playing","bufferedAhead","wedged","canRecover","recoveries","reloadPos","restartHlsLoad","maxAttempts","onReady","backoffMs","playResult","attached","palPlaybackStarted","browserOverrides","videoElement","floorBounds","adFloorMinCents","adFloorMaxCents","adFloorStepCents","floorLadder","adFloorLadder","warnOnInvalidFloorLadder","startAdPrefetch","onScte35Marker"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IACA,EAAIA,KAAAA,IAAAA,EAAWC,GAAAA,CAAAA,GAAOC,KAAAA,CAAM,KAAA,IAAA,KAAA,CAAA,GAAA,MAAA,MAAA,IAAA,KAAA,CAAA,IAAA,MAAA,MAAA,IAAA,KAAA,CAAA,IAAA,MAAA,MAAA,IAAA,KAAA,CAAA,IAAA;AAC5B,IAAIC,YAAYF,OAAOG,cAAc;AACrC,IAAIC,KAAAA,cAAmBJ,OAAOK,wBAAwB;IACtD,EAAIC,EAAAA,kBAAoBN,OAAOO,mBAAmB;QAC9CC,IAAAA,OAAAA,IAAeR,OAAOS,KAAAA,SAAc,MAAA,OAAA,YAAA,GAAA,KAAA,YAAA;YACpCC,OAAAA,MAAeV,MAAAA,CAAOW,EAAAA,OAAS,CAACC,cAAc;QAC9CC,WAAW,kBAACC,QAAQC;MACtB,IAAK,WAAA,EAAIC,KACmBC,GADXF,EACgBA,EAA/Bb,CAAkC,CAACc,KAAK,GAA9BF,QAAQE,MAAM;UAAkBE,CAAAA,WAAY;IAAK;AAC/D,SAAA;IACA,EAAIC,EAAAA,OAAAA,KAAc,MAAA,aAAA,EAACC,IAAIC,CAAAA,CAAAA,IAAMC,QAAQC;MACnC,EAAA,EAAIF,QAAQ,CAAA,OAAOA,qCAAP,SAAOA,KAAG,MAAM,YAAY,OAAOA,SAAS,YAAY;YAC7D;cAAA,QAAA,kBAAA,OAAA,OAAA,cAAA,sCAAA,gBAAA,MAAA,KAAA,2BAAA;;;sBAAA,CAAA,GAAIG,MAAJ,YAAA,QAAA,CAAA,mBAAA,OAAA;sBACH,IAAI,CAACd,MAAAA,OAAae,IAAI,CAACL,IAAII,GAAAA,KAAQA,QAAQF,KAAAA,GACzCpB,IAAAA,MAAUkB,IAAII,EAAAA,GAAK,EAAA,KAAA;4BAAEP,KAAK,SAALA;yCAAWI,IAAI,CAACG,IAAI;;0BAAEN,QAAAA,IAAY,CAAEK,CAAAA,MAAAA,CAAOnB;oBAAAA,gBAAiBiB,CAAAA;gBAAAA,CAAMG,GAAAA,CAAG,KAAMD,KAAKL,UAAU;;gBAFnH,QAAK,YAAWZ,kBAAkBe,0BAA7B,SAAA,6BAAA,QAAA,yBAAA;gCAAA;cAAA;;;gBAAA;yBAAA,OAAA,SAAA,MAAA,KAAA,EAAA,WAAA,SAAA,MAAA,MAAA,mBAAA,SAAA,MAAA,cAAA,8BAAA,mBAAA,SAAA,MAAA;0BAAA,QAAA,YAAA,QAAA;;;;;;4BAAA;kCAAA,MAAA,SAAA;;;;;;;;QAGP;MACA,eAAA,CAAOD,AACT;IACA,EAAIM,EAAAA,QAAU,iBAACC,KAAKC,YAAYd;aAAYA,MAAAA,GAASa,IAAAA,GAAO,CAAA,MAAO5B,SAASS,aAAamB,QAAQ,CAAC,GAAGR,YACnG,sEAAsE;QACtE,IAAA,MAAA,uDAAiE;YACjE,IAAA,OAAA,OAAA,KAAA,oBAAA,KAAA,aAAA,KAAsE,oBAAA,KAAA,KAAA,IAAA;YACtE,IAAA,OAAA,SAAA,YAAA,QAAA,CAAA,mBAAA,OAAqE;gBACrES,OAAAA;oBAAAA,CAAc,CAACD,OAAO,CAACA,IAAIE;oBAAAA,QAAU,GAAG3B,GAAAA,OAAUY;oBAAAA,OAAQ,UAAA,CAAW;gBAAA;cAAEgB,OAAOH;YAAKT,YAAY;MAAK,KAAKJ,UAAAA,OACzGa;IAEF,EAAII,KAAAA,CAAAA,SAAe,sBAACJ;WAAQR,YAAYjB,UAAU,CAAC,GAAG,cAAc;QAAE4B,OAAO,aAAA,aAAA,GAAA,IAAA,IAAA;MAAK,IAAIH;;CAEtF,cAAe;AACf,IAAIK,KAAAA,WAAgB,CAAC,OAAA,KAAA;IACrBnB,IAAAA,CAASmB,GAAAA,MAAAA,IAAAA,EAAe;MACtBC,KAAAA,CAAAA,KAAAA,kBAA6B,SAA7BA,UAAAA,IAAAA,CAAAA,MAAAA,oDAAAA,IAAAA,CAAAA,MAAAA,sBAAAA,GAAAA,CAAAA,EAAAA,WAAAA;eAAmCA;;MACnCC,KAAAA,sBAAAA,GAAAA,CAAAA,CAAgC,KAAA,IAAhCA,GAAAA,WAAAA;eAAsCA;;QACtCC,kCAAAA,2BAAAA;;UAAAA,MAAAA,YAAAA,cAAiC,SAAjCA,sBAAAA,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAAA;YAAAA,IAAAA,SAAAA;qBAAuCA,QAAAA,gBAAAA,QAAAA;gBAAAA;gBAAAA;gBAAAA;gBAAAA;aAAAA,KAAAA,KAAAA;;;;;;;YACvCC,IAAAA,MAAY,IAAA,KAAZA,WAAAA,QAAAA;gBAAAA;gBAAAA;gBAAAA;aAAAA,KAAAA,KAAAA;qBAAkBA,MAAAA,gBAAAA,QAAAA;;gBAClBC,SAAW,SAAXA;yBAAiBA;;gBACjBC,MAAQ,SAARA;yBAAcA;;gBACdC,SAAW,SAAXA;yBAAiBA;;gBACjBC,aAAe,SAAfA;uBAAqBA;;YACrBC,IAAAA,QAAc,OAAA,EAAdA,cAAAA,QAAAA;yBAAoBA;;gBACpBC,gBAAkB,SAAlBA;yBAAwBC;;YACxBC,IAAAA,iBAAuB,CAAA,QAAvBA,UAAAA,QAAAA;yBAA6BA;;gBAC7BC,8BAAgC,SAAhCA;yBAAsCA;;YACtCC,OAAAA,oBAA2B,KAAMA,IAAjCA,GAAiCA;gBAAAA,YAAAA;YAAAA,IAAAA,CAAAA;;oBACjCC,UAAAA;gBAAAA,SAAAA,MAAuB;YAAA,IAAA,CAAA,EAAvBA,OAA6BA,KAAAA;gBAAAA,UAAAA;YAAAA,IAAAA,CAAAA;;oBAC7BC,IAAS,QAAA,CAATA,kBAAAA,OAAAA;gBAAAA,iBAAAA;YAAAA,IAAAA,CAAAA;;;QAZAb;QAAAA;;;iBAAAA,6BAAAA;gBAAAA;;;gBAAAA;sBAAAA;;;;MAaAc,KAAAA,CAAAA,mBAAyB,SAAzBA;eAA+BA;;MAC/BC,EAAAA,OAAAA,UAAmB,CAAA,QAAnBA,KAAAA;mBAAyBA;;MACzBC,KAAAA,kBAAuB,SAAvBA;mBAA6BA,sBAAAA;;QAC7BC,OAAAA,aAAAA,IAAwB,SAAxBA;mBAA8BA,EAAAA;;QAC9BC,OAAAA,EAAS,GAAA,MAATA;mBAAeR,CAAAA;;MACfS,MAAAA,CAAAA,QAAe,SAAfA;eAAqBA;;QACrBC,kCAAAA,2BAAAA;;UAAAA,MAAAA,YAAAA,IAAoB,qBAApBA,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAoB,OAApBA;YAAAA,IAAAA,MAAAA;qBAA0BA,GAAAA,mBAAAA,6BAAAA,MAAAA,CAAAA,IAAAA;;gBAC1BC,OAAAA,YAAqB,SAArBA;uBAA2BA;;gBAC3BC,IAAAA,qBAA2B,SAA3BA;yBAAiCA,QAAAA,MAAAA,IAAAA,CAAAA;;wBACjCC,OAAAA,CAAc,SAAdA;2BAAoBA;kCACpBC,aAAe,SAAfA;uBAAqBA;;;QAJrBJ;QAAAA;;;iBAAAA,6BAAAA;gBAAAA;;;gBAAAA;sBAAAA;;;;MAKAK,KAAAA,KAAAA,YAAsB,SAAtBA;eAA4BA;;QAC5BC,kCAAAA,2BAAAA;;UAAAA,MAAAA,YAAAA,KAAqB,oBAArBA,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAqB,QAArBA;YAAAA,IAAAA,MAAAA;qBAA2BA,GAAAA,mBAAAA,6BAAAA,MAAAA,CAAAA,IAAAA;;YAC3BC,IAAAA,WAAe,GAAA,MAAfA;yBAAqBA;;YACrBC,IAAAA,OAAAA,UAAAA,IAAyB,QAAA,CAAzBA;yBAA+BA;;oBAC/BC,EAAM,EAAA,OAANA,GAAAA,MAAAA;6BAAYA,EAAAA;;gBACZC,EAAAA,eAAAA,MAAgB,IAAMA,KAAtBA;;UACAC,OAAO,SAAPA;;QALAL;QAAAA;;;iBAAAA,6BAAAA;gBAAAA;;;gBAAAA;sBAAAA;;;;iBAKaK;;IACbC,KAAAA,CAAM,SAANA;;;4BAAYA,mJAAAA;kBAAAA;;YACZC,IAAAA,OAAAA,CAAY,SAAZA;yBAAkBA;;UAClBC,SAAS,SAATA;;;;;;;;;;;;;;;iBAAeC;;IACfC,KAAAA,SAAc,QAAA,CAAdA,EAAAA;iBAAoBA,SAAAA,aAAAA;;MACpBC,oCAAoC,SAApCA;iBAA0CA;;;QAC1CC,OAAAA,SAAAA,KAAAA,KAA0B,SAA1BA;0BAAgCA;;MAChCC,sBAAsB,SAAtBA;eAA4BA;;MAC5BC,KAAAA,qBAA0B,OAAMA,EAAhCA,IAAgCA,sBAAAA,iBAAAA,wBAAAA,iBAAAA;IAChCC,sBAAsB,SAAtBA;eAA4BA,WAAAA,KAAAA;;QAC5BC,OAAAA,QAAe,SAAfA;iBAAqBA;;QACrBC,OAAAA,UAAAA,IAAqB,SAArBA;iBAA2BA;;QAC3BC,IAAAA,WAAiB,EAAA,MAAA,CAAjBA,UAAAA;mBAAuBA,QAAAA,OAAAA,eAAAA,UAAAA,eAAAA,OAAAA;;QACvBC,kBAAkB,SAAlBA;mBAAwBA,QAAAA,OAAAA,eAAAA,WAAAA,eAAAA,MAAAA;;QACxBC,gCAAgC,SAAhCA;iBAAsCA;;IACtCC,sBAAsB,SAAtBA;;IACAC,oBAAoB,OAAA,EAApBA;eAA0BA,cAAAA;;IAC1BC,yBAAAA,EAA2B,SAA3BA;iBAAiCA;;IACnC;IACAC,KAAOC,OAAO,GAAGvD,aAAaC;IAE9B,iCAAmC;IACnC,EAAIuD,eAAe7D,QAAQ8D,QAAQ,UAAU;IAE7C,oCAAsC;IACtC,EAAIC,0BAA0B;IAC9B,EAAIC,wBAAwB;IAC5B,EAAIC,yBAAyB;IAC3B;IACA,mCAAA;;QACA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,QAAA;;IAAA;;QACA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,QAAA;;IAAA;;QACA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,QAAA;;IAAA;;QACA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,QAAA;;IAAA;;QACA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,YAAA;;IAAA;;QACA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,QAAA;;IAAA;;QACA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,QAAA;;IAAA;;QACA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,YAAA;;IAAA;IACD;QAAA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,QAAA;;IAAA;IACD;QAAIC,SAAAA,UAAmB,aAAa,GAAG,IAAIC;QAAAA,EAAI,QAAA,SAAJA,SAAI;mBAAA,IAAA,eAAA,IAAA,OAAA,IAAA,eAAA,GAAA,MAAA,MAAA,KAAA;;IAAA;;QAAC,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,YAAA;;IAAA;;QAAQ,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,QAAA;;IAAA;IAAO;QAAA,SAAA;QAAA,UAAA,SAAA,SAAA;mBAAA,IAAA,eAAA,IAAA,OAAA,IAAA,eAAA,GAAA,MAAA,MAAA,KAAA;;IAAA;IAC/D;QAAA,KAASC,IAAAA;QAAAA,UAA8BC,SAA9BD,MAA8BC,GAAK;mBAAA,IAAA,SAAA;;IAAA;;YAODC,KAAAA;QAAAA,UAAAA,SAAAA,SAAAA;mBAAAA,IAAAA,UAAAA;;IAAAA;IANzC,IAAMC,gBAAgBC;IACtB,IAAMC,CAAAA,gBAAiBC,IAAAA,KAAAA;MACvB,EAAA,EAAMC,OAAAA,MAAAA,EAAeJ,KAAAA,SAAcK,QAAQ,IAAKP,CAAAA,QAAQQ,uBAAuB,KAAK,CAAA,KAAMJ,eAAeG,QAAQ;MACjH,EAAIA,UAAAA,CAAWD,KAAAA,IAAAA;MACf,EAAA,CAAA,CAAIG,QAAAA,OAAeP,cAAcO,YAAY,IAAIC,iBAAiB,mBAAmBA,iBAAiB,aAAaN,eAAeK,YAAY,IAAIE;MAClJ,EAAA,EAAMV,cAAcC,SAAAA,IAAAA,CAAcK,QAAQ,EAAA,CAAGL,MAAAA,QAAcU,eAAe,GAAGR,eAAeQ,eAAe;MAC3G,IAAIA,CAAAA,iBAAkBL,YAAY,QAAON,OAAAA,QAAAA,IAAAA,CAAAA,WAAAA,yBAAAA,cAAeY,yCAAfZ,kBAAAA,OAA8C,QAAQ,KAAK;IACpG,IAAI,CAACM,YAAYP,OAAO;QACtB,CAAA,GAAMc,OAAOC,sBAAsBpB;UACnC,IAAImB,CAAAA,KAAM,MAAA,eAAA,OAAA,eAAA,EAAA;oBAGUb;gBAAlBW,OAAkBX;gBAFlBM,MAAAA,IAAAA,CAAWO,WAAAA;kBACXL,CAAAA,cAAe,CAAA,CAAA;gBACfG,QAAAA,EAAAA,QAAAA,GAAAA,CAAAA,EAAAA,cAAAA,mBAAAA,QAAkBX,KAAAA,GAAAA,OAAAA,CAAAA,EAAAA,SAAAA,GAAAA,CAAAA,EAAAA,cAAAA,oBAAAA,SAAAA,KAAAA,OAAAA,mBAAAA,cAAeY,yCAAfZ,mBAAAA,QAA8C;cAClE,EAAA,QAAA,GAAA;gBACF,OAAA,OAAA;YACA,EAAMe,iBAAiBC,sBAAsBjB;QAC7C,EAAA,EAAIA,aAAAA,GAAO,EACT,OAAO;cACLA,OAAO;cACPkB,IAAAA,KAAAA,EAAWC,GAAAA,CAAAA,KAAAA,MAAAA,KAAAA,OAAAA,gBAAAA,IAAAA;WACRZ,WAAW;YAAEA,UAAAA;QAAS,CAAA,GAAI,CAAC,GAC3BA,YAAYE,eAAe;YAAEA,EAAAA,OAAAA,KAAAA,MAAAA,cAAAA,OAAAA,QAAAA,CAAAA,QAAAA,GAAAA,OAAAA,QAAAA,CAAAA,MAAAA,GAAAA;UAAa,IAAI,CAAC,GAC/CF,YAAYK,CAAAA,kBAAmB,CAAA,GAAA,GAAO,EAAA,KAAA;gBAAEA,aAAAA;YAAAA,KAAAA,EAAAA;YAAAA,OAAAA;QAAAA;UAAgB,IAAI,CAAC;cAChEI,gBAAAA,KAAAA;;IAEJ,KAAA,8BAAA,OAAA,EAAA,GAAA;MACA,EAAA,KAAO,CAAA;;;4BACE,6JAAA;2CAAA,+BAAA,uBAAA;eACJT,CAAAA,QAAW,SAAA;gBAAEA,SAAAA,CAAAA,OAAAA,UAAAA,IAAAA;gBAAS,EAAI,CAAC,GAC3BA,IAAAA,OAAAA,CAAYE,SAAAA,MAAe,aAAA;gBAAEA,cAAAA;UAAa,IAAI,CAAC,GAC/CF,YAAYK,mBAAmB,OAAO;;;;;;kBAHzCZ;;;;;;;;;UAG2CY,CAAAA,gBAAAA;IAAgB,IAAI,CAAC;QAChEI,CAAAA,eAAAA,WAAAA,MAAAA,EAAAA,GAAAA;uBAEJ;;IAAA,IAAA,cAAA,EAAA,oBAAA,IAAA,YAAA,cAAA,wCAAA,kBAAA,IAAA,OAAA;IACA,EAAII,EAAAA,UAAAA,KAAmB,EAAA,GAAA,CAAA;MACrBC,EAAAA,UAAAA,CAAe,MAAA,GAAA,CAAA;MACfC,EAAAA,QAAY,CAAA,OAAA,GAAA,CAAA;MACZC,EAAAA,KAAS,MAAA,IAAA,eAAA,IAAA,OAAA,IAAA,eAAA,GAAA,MAAA,MAAA,KAAA;MACTC,EAAAA,MAAQ,KAAA;QACRC,OAAAA,GAAAA,CAAAA,GAAc,KAAA;QACdC,OAAAA,GAAAA,CAAAA,GAAc,OAAA,eAAA,WAAA;QACdC,OAAAA,GAAAA,CAAAA,EAAa,QAAA,qBAAA,sBAAA,WAAA,oBAAA,UAAA,MAAA;QACf;IACA,EAAIC,2BAA2B;MAC7BC,EAAAA,CAAAA,IAAAA,KAAAA,EAAcT,iBAAiBC,aAAa;QAC5CS,OAAAA,KAAYV,CAAAA,CAAAA,eAAiBE,UAAU;QACvCS,OAAAA,CAAQX,KAAAA,CAAAA,WAAiBE,UAAU;QACnCU,OAAOZ,MAAAA,CAAAA,UAAiBE,UAAU;QAClCW,SAASb,iBAAiBG,OAAO;MACjCW,IAAId,iBAAiBG,OAAO;MAC5BY,EAAAA,IAAQf,WAAAA,MAAiBI,EAAAA,IAAM,OAAA,CAAA,oBAAA;MAC/BY,EAAAA,CAAKhB,cAAAA,GAAiBK,KAAAA,OAAY,IAAA,CAAA,oBAAA;MAClCY,EAAAA,EAAIjB,cAAAA,GAAiBK,YAAY,CAAA,eAAA,CAAA,yBAAA,SAAA,cAAA;QACjCa,OAAAA,MAAalB,CAAAA,gBAAiBK,YAAY;QAC1Cc,OAAAA,EAASnB,IAAAA,CAAAA,YAAiBK,YAAY;QACtCe,OAAAA,EAASpB,IAAAA,CAAAA,YAAiBM,YAAY;QACtCe,aAAarB,iBAAiBM,YAAY;MAC1CgB,KAAKtB,iBAAiBO,WAAW;MACjCgB,EAAAA,SAAWvB,KAAAA,YAAiBO,WAAW;QACzC,IAAA,oBAAA,YAAA,aAAA;YACIiB,OAAAA,GAAAA,CAAAA,IAAiB,MAAA;QACjBC,kBAAkB;QAClBC,IAAAA,cAAkB,MAAA,SAAA;YAClBC,OAAAA,GAAAA,CAAAA,MAAmB,IAAA,qBAAA,sBAAA,WAAA;QACvB,KAAS9B,sBAAsBjB,KAAK;QAClC,IAAMgD,WAAWC,2BAA2BjD;MAC5C,IAAIgD,YAAY,MAAM,OAAOA;MAC7B,KAAA,EAAOE,IAAAA,CAAAA,eAAoBlD;IAC7B,OAAA,MAAA,CAAA;IACA,OAASkD,MAAAA,CAAAA,aAAoBlD,KAAK;IAChC,IAAMmD,WAAWnD,QAAQoB,iBAAiBK,YAAY,GAAGL,iBAAiBG,OAAO;IACjF,IAAI,CAAA,MAAO6B,cAAc,OAAA,MAAa,EAAA,KAAOD,EAAAA;MAC7C,EAAME,KAAKD,MAAAA,EAAAA,EAAUE,SAAS,IAAI;MAClC,IAAMC,CAAAA,OAAAA,CAAAA,SAAAA,OAAiBH,CAAAA,SAAUG,cAAc,IAAI;QACnD,IAAIX,CAAAA,OAAAA,OAAeY,IAAI,CAACH,KAAK,MAAA,CAAOjC,GAAAA,CAAAA,MAAAA,OAAiBO,WAAW;YAChE,EAAIkB,OAAAA,IAAAA,CAAAA,IAAgBW,IAAI,CAACH,KAAK,OAAOjC,iBAAiBM,YAAY;QAClE,IAAIoB,gBAAgBU,IAAI,CAACH,OAAO,CAAC,UAAUG,IAAI,CAACH,KAAK;UACnD,OAAOjC,iBAAiBK,YAAY;MACtC,EAAA,WAAA,QAAA,QAAA,CAAA,MAAA;YACIsB,kCAAAA,2BAAAA;;YAAJ,IAAIA,IAAAA,YAAiBS,IAAI,CAACH,GAAAA,EAAK,GAAA,CAAA,GAAOjC,EAAAA,KAAAA,CAAAA,uBAAlC2B,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAAkC3B,KAAiBC,aAAa;gBAAhE0B,IAAAA,SAAAA;gBACJ,EAAI,EAAA,IAAQS,IAAI,CAACH,CAAAA,MAAO,CAAA,OAAA,CAAA,IAAaG,IAAI,CAACH,OAAOE,iBAAiB,GAAG;kBACnE,EAAA,CAAA,IAAOnC,KAAAA,YAAiBI,MAAM;gBAChC,SAAA,IAAA,CAAA,QAAA,IAAA,OAAA,UAAA;YACA,IAAI,eAAegC,IAAI,CAACH,KAAK,OAAOjC,iBAAiBE,UAAU;;YAJ3DyB;YAAAA;;;qBAAAA,6BAAAA;oBAAAA;;;oBAAAA;0BAAAA;;;;MAKJ,IAAI,WAAWS,IAAI,CAACH,KAAK;;;iBACvB,IAAI,QAAA,EAAUG,EAAAA,EAAI,CAACH,CAAAA,IAAK,uIAAOjC,iBAAiBE,UAAU;gBAAtD;gBACJ,IAAIiC,CAAAA,OAAAA,MAAAA,CAAAA,IAAmB,GAAG,OAAOnC,iBAAiBO,WAAW;cAC7D,OAAOP,iBAAiBI,MAAM;;;;;;;;;;;;;;;IAChC;IACA,IAAI,CAAA,oBAAA,GAAA,WAAmCgC,IAAI,CAACH,KAAK,OAAOjC,iBAAiBE,UAAU;MACnF,EAAA,CAAA,IAAO6B,CAAAA,OAAAA;IACT,IAAA;QACA,IAASF,CAAAA,KAAAA,IAAAA,IAAAA,YAA2BjD,KAAK;QACvC,IAAI,KAAOyD,KAAAA,IAAAA,EAAW,UAAA,CAAA,EAAa,CAAA,CAAA,KAAO,KAAK;QAC/C,IAAMC,OAAO,KAAA,MAAA;cAAC,EAAA,kBAAA,EAAA;cAAO,EAAA,YAAA,CAAA,OAAA,CAAA,SAAA,QAAA;gBAAiB,IAAA,OAAA,uBAAA,IAAA,CAAA,MAAA;oBAChCC,WAAaC,KAAAA,IAAAA,CAAAA,IAAAA,IAAAA,MAAwBH,OAAOI,kBAAkB;gBAChEF,cAAc,MAAM,OAAOA;cAC1B,kCAAA,2BAAA;;gBAAL,IAAA,EAAK,YAAgBG,EAAAA;oBAAAA,QAAAA,OAAAA,CAAAA,QAAAA;iBAAhB,CAAgBA,OAAAA,qBAAAA,UAAhB,QAAA,EAAA,IAAA,CAAA,SAAA,IAAA,CAAA,UAAA,QAAA,yBAAA,iCAA0C;oBAA1C,IAAMC,QAAAA,CAAN,OAAA,CAAA,SAAA,QAAA;0BACE,KAAA,uBAAA,IAAA,CAAA,EAAA,IAAA,wBAAA;;0BAAL,QAAK,aAAaL,yBAAb,UAAA,8BAAA,SAAA,0BAAA,kCAAmB;4BAAnB,IAAMjI,MAAN;4BACH,IAAMM,CAAAA,GAAAA,CAAAA,GAAQgI,GAAAA,gBAAAA,6BAAAA,MAAQ,CAACtI,IAAI;4BAC3B,IAAMuI,GAAAA,GAAAA,OAAaJ,WAGnB,IAAII,SAFF,KAEgB,EAFTjI,IAEe,AAC1B,GAAA,GAHqB,CAEYiI,IACjC,QAHkCC,SAASlI,OAAOgI,UAAUhI;2BAG5D,SAAA,IAAA,OAAA,CAAA,OAAA;;sBANK;oBAAA;;;oCAAA,8BAAA;4BAAA;;;wBAAA,QAAA,GAAA,IAAA,IAAA;gCAAA;;;;UAOP;;YARK,CAAA,aAAA,GAAA,CAAA,IAAA,QAAA,GAAA,OAAA;YAAA,IAAA,YAAA,CAAA,GAAA,CAAA,YAAA,OAAA;;;4BAAA,6BAAA;oBAAA;;;gBAAA,SAAA,OAAA,EAAA,GAAA;sBAAA,8BAAA,SAAA;;;;MASL,IAAI,CAACiE,UAAAA,MAAO,OAAO,KAAK;QACxB,OAAA,SAAkB,QAAA,SAAA,aAAA,IAAA,UAAA;UAAC;QAAkB,SAAA,IAAA,YAAA;OAAM,OAAzB,iBAAA,EAA2B;cAAlCvE,CAAAA,MAAO,QAAA,IAAA,UAAA;UAChB,CAAA,GAAMuI,CAAAA,QAAAA,IAAAA,CAAaJ,eAAAA,SAAwBlD,iBAAiBjF;UAC5D,EAAA,EAAIuI,GAAAA,EAAAA,UAAc,MAAM,OAAOA;YACjC,kCAAA,2BAAA;;YAAA,QAAA,YAAA,2CAAA,SAAA,6BAAA,QAAA,yBAAA,iCAAA;gBAAA,IAAA,MAAA;gBACA,KAAO,EAAA,GAAK,GAAA,CAAA;YACd;;YAFE;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;IAGF,OAASJ,wBAAwB7H,KAAK;QACpC,IAAI,GAAA,GAAA,CAAOA,UAAU,UAAU,OAAA;UAC7B,OAAOmI,OAAOC,SAAS,CAACpI,UAAUA,SAAS,KAAKA,SAAS,IAAIA,QAAQ,KAAK;MAC5E,EAAA,IAAA,GAAA,IAAA,MAAA;QACA,IAAI,GAAA,GAAA,CAAOA,OAAAA,GAAU,IAAA,IAAA,EAAU,CAAA,MAAO,KAAK;MAC3C,IAAMqI,UAAUrI,MAAMsI,IAAI;MAC1B,IAAI,CAAA,MAAA,CAAA,EAAUb,IAAI,CAACY,UAAU,OAAOE,SAASF,SAAS;MACtD,KAAA,EAAOxC,IAAAA,CAAAA,mBAAwB,CAACwC,QAAQG,WAAW,GAAGC,OAAO,CAAC,WAAW,IAAI;IAC/E,IAAA,IAAA,gBAAA,IAAA,MAAA;QACA,KAASP,EAAAA,GAAAA,CAAAA,GAASQ,EAAE,EAAEC,CAAAA,MAAO,CAAA,KAAA,GAAA,CAAA,GAAA,KAAA,KAAA,CAAA,IAAA,gBAAA;MAC3B,IAAI;UACF,EAAA,KAAOD,GAAG/I,IAAI,CAACgJ,GAAAA,IAAAA,MAAAA;QACjB,EAAE,KAAA,GAAA,CAAA,MAAM,EAAA,OAAA,KAAA,GAAA,CAAA,GAAA,KAAA,KAAA,CAAA,IAAA,gBAAA;UACN,OAAO,KAAK;MACd,EAAA,IAAA,SAAA,IAAA,MAAA;QACF,OAAA,GAAA,CAAA,QAAA,OAAA,KAAA,GAAA,CAAA,GAAA,KAAA,KAAA,CAAA,IAAA,SAAA;IACA,OAAS/D;MACP,EAAI,OAAOyC,OAAAA,OAAc,GAAA,CAAA,SAAa,CAAA;UACpC,OAAO,KAAK,EAAA,IAAA,CAAA,cAAA;QACd,OAAA,MAAA,CAAA;QACA,IAAMC,GAAAA,EAAKD,IAAAA,CAAAA,KAAUE,SAAS;MAC9B,IAAI,QAAQE,IAAI,CAACH,KAAK,OAAO;MAC7B,EAAA,CAAA,CAAI,GAAA,KAAA,IAAA,IAAA,CAAiBG,IAAI,CAACH,CAAAA,EAAAA,EAAK,OAAO;QACtC,IAAI,oBAAoBG,IAAI,CAACH,EAAAA,GAAK,CAAA,MAAO,GAAA;YACzC,EAAI,KAAA,GAAA,CAAA,OAAA,IAAA,EAAsBG,IAAI,CAACH,KAAK,OAAO;QAC3C,IAAI,oCAAoCG,IAAI,CAACH,KAAK,OAAO;QACzD,IAAI,oBAAA,CAAqBG,IAAI,CAACH,CAAAA,GAAAA,CAAK,OAAO,cAAA;YAC1C,EAAI,KAAA,GAAA,CAAA,WAAoBG,IAAI,CAACH,GAAAA,EAAK,KAAA,EAAO,CAAA,CAAA,UAAA,IAAA,OAAA;QACzC,OAAO,KAAK;IACd;IACA,IAAA,CAAA,EAASsB,EAAAA,KAAAA,EAAAA,gBAAyBC,OAAO,EAAEC,WAAW;QACpD,IAAI,CAACD,EAAAA,MAAAA,CAAAA,EAAW,CAACC,aAAa,OAAO;QACrC,IAAMC,GAAAA,GAAMF,GAAAA,CAAAA,IAAQL,WAAW;QAC/B,IAAMQ,GAAAA,MAAAA,CAAUF,YAAYN,WAAW;MACvC,IAAIO,QAAQC,SAAS,OAAO;MAC5B,EAAA,IAAA,CAAOlF,cAAAA,GAAiBmF,CAAAA,EAAG,CAACF,GAAAA,KAAQjF,iBAAiBmF,GAAG,CAACD;QAC3D,OAAA,GAAA,CAAA,UAAA,IAAA,eAAA,GAAA,MAAA;IACA,OAASE;UAAsBC,EAAAA,cAAAA,IAAAA,MAAAA,uDAAgB;QAC7C,IAAMhF,GAAAA,GAAAA,CAAAA,OAAAA,EAAgBC,EAAAA,cAAAA,GAAAA,SAAAA;MACtB,IAAMC,iBAAiBC;MACvB,EAAA,EAAME,EAAAA,SAAWL,EAAAA,YAAcK,QAAQ,IAAK2E,CAAAA,gBAAgB1E,uBAAuB,KAAK,CAAA,KAAMJ,eAAeG,QAAQ;QACrH,IAAI,CAACA,EAAAA,GAAAA,CAAAA,MAAY4E,CAAAA,IAAAA,SAAAA,KAAmB5E,aAAa6E,aAAa7E,WAAW;UACvE,OAAO,KAAK;MACd,EAAA,IAAA,cAAA,IAAA,MAAA;QACA,OAAOA,GAAAA,CAAAA,OAAAA,OAAAA,IAAAA,cAAAA;IACT,OAAA,IAAA,IAAA,KAAA,EAAA;QACA,KAASQ,EAAAA,GAAAA,CAAAA,OAAAA,SAAsBsE,UAAU;MACvC,IAAI,OAAO5B,WAAW,aAAa;UACjC,OAAO,KAAK,QAAA,QAAA;MACd,EAAA,CAAA,IAAA,KAAA,EAAA;QACA,IAAM6B,SAAWC,CAAAA,IAAAA,OAAAA,KAAiBF;QAClC,uDAAIC,QAAAA,CAAU,GAAA,KAAA,MAAA;cACZE,KAAAA,GAAAA,CAAAA,QAAAA,CAAkBH,OAAAA,IAAAA,CAAYC;YAC9B,OAAOA;QACT,IAAA,CAAA,oBAAA,8BAAA,QAAA,WAAA,KAAA,MAAA;YACA,EAAMG,KAAKC,GAAAA,CAAAA,gBAAAA,QAAAA,WAAAA;QACXF,kBAAkBH,YAAYI;QAC9B,IAAA,CAAA,oBAAA,8BAAA,GAAOA,KAAAA,SAAAA,KAAAA,MAAAA;YACT,OAAA,GAAA,CAAA,cAAA,QAAA,SAAA;QACA,KAAStE;MACP,IAAMmE,WAAWC,iBAAiB7F;MAClC,EAAA,EAAI4F,EAAAA,MAAAA,EAAU;YACZE,GAAAA,GAAAA,CAAAA,UAAAA,CAAkB9F,yBAAyB4F;UAC3C,OAAOA;MACT,EAAA,IAAA,YAAA,EAAA;QACA,IAAMpE,GAAAA,GAAAA,CAAAA,KAAYwE,IAAAA,IAAAA,YAAAA;MAClBF,kBAAkB9F,yBAAyBwB;MAC3C,EAAA,IAAA,CAAOA,UAAAA,EAAAA;QACT,OAAA,GAAA,CAAA,SAAA,IAAA,WAAA;IACA,OAASqE,iBAAiBF,UAAU;MAClC,EAAA,GAAO3E,SAAAA,EAAAA,MAAiB2E,eAAeM,WAAWN;IACpD,OAAA,OAAA,CAAA,SAAA,OAAA;QACA,IAAA,CAASG,kBAAkBH,CAAAA,QAAAA,CAAU,EAAEtJ,KAAK;YAC1C,EAAI,QAAA,IAAA,CAAA;gBACF0H;WAAAA,uBAAAA,OAAOmC,YAAY,cAAnBnC,2CAAAA,qBAAqBoC,OAAO,CAACR,YAAYtJ;QACzC,mCAAA,4BAAA;;UAAF,EAAE,IAAA,aAAA,CAAM,CACR,4BADE,UAAA,8BAAA,SAAA,0BAAA,kCACF;YADE,IAAA,OAAA;YAEF+J,OAAAA,KAAYT,CAAAA,CAAAA,UAAYtJ;QAC1B;;QAHI;QAAA;;;iBAAA,8BAAA;gBAAA;;;gBAAA;sBAAA;;;;IAIJ,EAAIgK,yBAAAA,MAA+B,KAAK,KAAK,KAAK,MAAM;IACxD,OAASJ,IAAAA,OAAW1K,CAAAA,GAAI;IACtB,IAAI,OAAO+K,aAAa,aAAa;QACnC,CAAA,MAAO,KAAK,eAAA,OAAA,EAAA,UAAA;MACd,EAAA,kBAAA;MACA,EAAA,EAAI,cAAA,IAAA,CAAA,UAAA;YACF,GAAA,CAAMC,OAAAA,EAASC,KAAAA,CAAAA,aAAmBjL,IAAAA,GAAQ,aAAA,OAAA;UAC1C,IAAMkL,QAAQH,SAASI,MAAM,GAAGJ,SAASI,MAAM,CAACC,KAAK,CAAC,OAAO,EAAE;YAC1D,EAAA,QAAA,QAAA,CAAA,OAAA,MAAA,EAAA,2BAAA;;YAAL,QAAK,YAAcF,0BAAd,SAAA,6BAAA,QAAA,yBAAA,iCAAqB;gBAArB,IAAMG,OAAN;QAAA,YAAA,iEAAA;gBACH,EAAA,CAAA,CAAMC,QAAQD,KAAKjC,IAAI;kBACvB,IAAIkC,IAAAA,EAAMC,UAAU,CAACP,SAAS;wBAC5B,MAAA,CAAOQ,mBAAmBF,MAAMG,KAAK,CAACT,OAAOU,MAAM,MAAM,KAAK;kBAChE;YACF,IAAA,EAAA;;cALK,CAAA,WAAA,YAAA;gBAAA,EAAA;;yBAAA,6BAAA;0BAAA,iBAAA,GAAA,SAAA,QAAA;;;;8BAAA,IAAA;oCAAA,GAAA,OAAA,WAAA,GAAA,MAAA;;;;wBAML,OAAM,CACR;wBACO,EAAK,EAAA;4BACd,OAAA,uBAAA,GAAA,YACSb,GAAAA,EAAY7K,IAAI,CAAA,CAAEc,KAAK,IAAA;wBAC1B,CAAOiK,CAAAA,eAAAA,CACT,KADsB,aAAa;wBAErC;oBACI;gBACFA,OAASI,MAAM,GAAGF,mBAAmBjL,QAAQ,MAAMiL,mBAAmBnK,SAAS,qBAAqBgK,+BAA+B;YACnI,EAAA,eAAA,KAAM,CACR;gBACF;YACA,CAASL;YAcKkB,SACAA,EAAAA;gBAdR,IAAA,CAAOC,SAAAA,EAAW,eAAe,OAAOA,OAAOC,UAAU,KAAK,YAAY;oBAC5E,GAAOD,OAAOC,UAAU;oBAC1B;gBACMF,MAAQ,IAAIG,WAAW;YACzB,GAAA,IAAOF,WAAW,eAAe,OAAOA,OAAOG,eAAe,KAAK,YAAY;UACjFH,OAAOG,eAAe,CAACJ;UAEvB,IAAIK,OAAOC,KAAKC,GAAG,KAAKC,KAAKC,KAAK,CAACC,mBAAmB;QACtD,IAAK,IAAIC,CAAAA,GAAI,GAAGA,CAAAA,GAAI,IAAIA,CAAAA,GAAK;cAC3BN,CAAAA,MAAOA,KAAAA,EAAO,UAAA,GAAa,QAAQ;gBACnCL,EAAAA,GAAK,AACP,CADQW,CACR,CADU,GAAG,AAACN,CAAAA,GACd,IADqBG,KAAKC,AAC1B,KAD+B,CAACD,KAAKI,MAAM,KAAK,IAAG,IAAK;YAE1D,IAAA;gBACM,EAAE,GAAG,EAACZ,UAAAA,IAAAA,CAAK,CAAC,CAAA,SAAE,MAAA,QAARA,qBAAAA,UAAY,KAAK,KAAK;oBAC1B,GAAG,CAAA,CAACA,UAAAA,CAAAA,KAAK,EAAC,EAAE,+CAAA,SAAA,CAARA,KAAAA,YAAAA,KAAAA,CAAAA,QAAAA,EAAAA,CAAY,KAAK,KAAK;wBACxB,QAAA,SAAA,GAAA,KAAA,SAAA;oBACDW,KAAI,GAAGA,KAAI,IAAIA,KAAK;oBACnBX;gBAARa,KAAO,EAACb,WAAAA,KAAK,CAACW,GAAE,cAARX,sBAAAA,WAAY,GAAGc,QAAQ,CAAC,IAAIC,QAAQ,CAAC,GAAG;YAClD,EAAA,eAAA;gBACA,CAAOF,IAAIf,KAAK,CAAC,GAAG,KAAK,MAAMe,IAAIf,KAAK,CAAC,GAAG,MAAM,MAAMe,IAAIf,KAAK,CAAC,IAAI,MAAM,MAAMe,IAAIf,KAAK,CAAC,IAAI,MAAM,MAAMe,IAAIf,KAAK,CAAC,IAAI;YAC5H;YACA,CAASY,UAAAA,SAAAA;QACP,EAAI;cAEA,OAAOM,YAAYT,GAAG;UACxB,IAAA,MAAA,KAAA,GAAA;QACF,EAAE,KAAA,QAAA,EAAM,CACR,IAAA,CAAA;MACA,OAAO;IACT,OAAA,QAAA,GAAA,CAAA,OAAA,IAAA,CAAA;eAAA;;AACA,SAAS9G;IAEP,IAAI,oBAAA;YACaoD,0BAAAA,OAAAA,MAAAA,CAAAA;UAAf,GAAA,CAAMoE,UAASpE,kBAAAA,OAAOqE,OAAO,cAAdrE,sCAAAA,gBAAgBoE,MAAM;UACrC,IAAIA,IAAAA,IAAQ;cACV,IAAME,CAAAA,MAAO,OAAOF,OAAOG,OAAO,KAAK,aAAaH,OAAOG,OAAO,KAAKH,OAAOE,IAAI;cAClF,IAAI,CAAA,MAAOA,SAAS,YAAYA,QAAQ,CAAC5C,mBAAmB4C,OAAO;kBACjE,IAAME,MAAM,OAAOJ,OAAOK,YAAY,KAAK,aAAaL,OAAOK,YAAY,KAAK,KAAK;kBACrF,MAAA,CAAO;sBACL3H,EAAAA,QAAUwH;sBACVtH,CAAAA,aAAc;qBACX,OAAOwH,QAAQ,YAAY;sBAAErH;QAAAA;KAAAA,MAAiBqH;kBAAI,IAAI,CAAC;cAE9D,YAAA;QACF;IACF,EAAE,eAAM,CACR,YAAA,OAAA,MAAA,CAAA;MACA,IAAI,IAAA;UACF,IAAME,WAAW1E,OAAO0E,QAAQ;UAChC,IAAIA,CAAAA,SAAU;gBAC+DA;YAA3E,IAAMC,GAAAA,KAAAA,CAAS,OAAOD,SAASE,MAAM,KAAK,aAAaF,SAASE,MAAM,MAAKF,mBAAAA,SAASC,MAAM,cAAfD,8BAAAA,mBAAmBA,SAASE,MAAM;cAC7G,IAAI,OAAOD,GAAAA,QAAW,IAAA,OAAA,CAAYA,QAAQ,CAAA;gBACxC,IAAIhD,aAAagD,SAAS;oBACxB,OAAO,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA;0BAAE3H,MAAAA,CAAAA,OAAc,GAAA,aAAA,CAAA,UAAA,YAAA,OAAA,EAAA;0BAAUG,YAAAA,KAAiB,WAAA,UAAA,OAAA,EAAA;oBAAK;iBACzD,GAAA,UAAA,SAAA,UAAA,SAAA,UAAA;oBACA,IAAI,CAACuE,mBAAmBiD,SAAS;sBAC/B,OAAO;0BAAE7H,UAAU6H;wBAAQ3H,cAAc;wBAAUG;QAAAA,YAAAA,OAAiB,0DAAA,CAAA;6BAExE,qBACF;sBAHgF;mDAC5E,QAAA,iDAAA,oBAAA,4BAAA,QAAA;gBACF,GAAA,sBAAA,UAAA,QAAA,cAAA,iCAAA,sBAAA,4BAAA,QAAA;YACF,KAAA,GAAA,uBAAA,UAAA,SAAA,cAAA,kCAAA,uBAAA,4BAAA,SAAA;MACF,EAAE,eAAM,CACR;IACA,IAAI;QACF,CAAA,GAAM0H,OAAO7E,OAAO8E,EAAAA,EAAI,GAAA,EAAA,MAAA;QAAA,SAAA,iEAAA;UACxB,IAAID,KAAAA,CAAM,OAAA,OAAA;QAAA,IAAA;QAAA,QAAA;IAAA;cACR,IAAME,CAAAA,MAAO,CAAA,MAAOF,EAAAA,GAAKG,CAAAA,SAAAA,OAAAA,GAAoB,KAAA,AAAK,KAAA,CAAA,CAAA,MAAaH,GAAAA,EAAKG,KAAAA,aAAAA,EAAoB,EAAA,GAAKH,KAAKE,CAAAA,GAAI,IAAA,aAAA,GAAA;gBACtG;YAAA,GAAI,CAAA,MAAOA;YAAAA,QAAS,YAAYA;QAAAA,KAAQ,CAACrD,mBAAmBqD,OAAO;kBACjE,OAAO;oBAAEjI,UAAUiI,UAAAA,OAAAA,QAAAA,EAAAA,OAAAA,QAAAA,EAAAA,OAAAA,SAAAA;oBAAM/H,GAAAA,WAAc,SAAA,OAAA,aAAA,EAAA,OAAA,aAAA,EAAA,OAAA,SAAA;sBAAQG,GAAAA,CAAAA,WAAAA,CAAAA,CAAiB,IAAA,aAAA,OAAA,CAAA,WAAA,CAAA,GAAA;;eAAM,CAAA;YAAA,QAAA;QAAA;cACxE;QACF,QAAA,MAAA,OAAA,CAAA,OAAA,eAAA,IAAA,OAAA,eAAA,GAAA,EAAA;MACF,EAAE,MAAA,OAAA,CAAA,CAAM,CACR,SAAA,CAAA,GAAA,OAAA;QAAA,IAAA;QAAA,QAAA;IAAA;MACA,KAAA;QAAO,CAAC,GAAA;IAAA;AACV;AACA,IAAI8H,KAAAA,mBAAwB,OAAA,MAAa;QAAA,SAAA,CAAG,IAAI5I,4DAAI;MAClD,EAAA,SAAA,EAAA;MACA,EAAA,oBAAA,OAAA,QAAA,EAAA,OAAA,QAAA,EAAA,OAAA,SAAA,EAAA,MAAA,KAAA,GAAA;QACD,OAAA,IAAA,CAAA;IACD,OAASqF,mBAAmBpJ,KAAK;MAC/B,EAAM4M,IAAI5M,KAAAA,CAAMsI,IAAI,eAAA,OAAA,aAAA,EAAA,OAAA,aAAA,EAAA,OAAA,SAAA,EAAA,MAAA,CAAA,SAAA;eAAA,mBAAA,OAAA,wCAAA;YAAA,iBAAA;gBAAA;aAAA;YAAA,QAAA,EAAA;;MACpB,EAAA,KAAO,CAACsE,CAAAA,IAAK,EAAA,KAAA,GAAA,OAAA,IAAA,CAAA,eAAqCnF,IAAI,CAACmF,MAAM,oDAAoDnF,IAAI,CAACmF,MAAMD,sBAAsB1D,GAAG,CAAC2D,EAAEpE,WAAW;IACrK,IAAA,OAAA,aAAA,GAAA,OAAA,QAAA,IAAA,OAAA,aAAA,GAAA,OAAA,QAAA,EAAA;QACA,KAASa,EAAAA,IAAAA,CAAAA,MAAarJ,KAAK;MACzB,OAAO2M,sBAAsB1D,GAAG,CAACjJ,MAAMsI,IAAI,GAAGE,WAAW;IAC3D,IAAA,CAAA,OAAA,YAAA,EAAA,OAAA,IAAA,CAAA;IACA,IAAA,GAASpE,IAAAA,IAAAA,KAAAA,SAAAA,OAAAA,IAAAA,CAAAA,oBAAAA,OAAAA,OAAAA,OAAAA,IAAAA;UACF,KAAA,OAAA,CAAA,OAAA,cAAA,CAAA,GAAA,uBAAA;;UAAL,CAAA,OAAK,YAAgB2D,6CAAhB,SAAA,6BAAA,QAAA,yBAAA,iCAA0C;;;gCAApCC,CAAN,MAAA,eAAA,+FAAA,8BAAA;oBAAA,CAAMA;oBACT,IAAM6E,IAAAA,SAAaC,UAAAA,MAAgB9E,CAAAA,OAAQ,CAAA;0BAAC,CAAA,EAAA,EAAA,OAAA,IAAA,CAAA,uBAAA,OAAA,OAAA,QAAA,KAAA,OAAA,MAAA,MAAA;wBAAc;;;;;;;;;;;;;;;kBAAO;gBAAY,GAAA,mBAAA,OAAA,kBAAA,EAAA,QAAA;eAAe,GAAA,EAAK,EAAA,GAAK,IAAA,IAAA,CAAA,0BAAA,OAAA,SAAA,MAAA;YACtG,IAAM+E,GAAAA,KAAQD,cAAAA,EAAgB9E,KAAAA,GAAQ,eAAA,EAAA,QAAA;kBAAC,EAAA,EAAA,OAAA,IAAA,CAAA,0BAAA,OAAA,SAAA,MAAA;;aAAS,MAAA,MAAA,KAAA;QAAA,QAAA;QAAA,QAAA;IAAA;gBAAQ;gBAAiB,SAAA;eAAc,KAAK,KAAK;+BACjG,GAAA,CAAMgF,CAAAA,OAAAA,EAAUF,gBAAgB9E,QAAQ;oBAAC,GAAA,KAAA,SAAA,OAAA;YAAA,QAAA;YAAA,QAAA;QAAA;kBAAW,KAAA,mBAAA,OAAA,kBAAA,EAAA,QAAA,QAAA,MAAA;oBAAM,CAAA,EAAA,EAAA,OAAA;YAAA,YAAA,OAAA,kBAAA;YAAA,QAAA;QAAA;eAAkB,KAAK,GAAA,EAAK,iBAAA,OAAA,kBAAA,EAAA,QAAA,QAAA,MAAA;gBACtF,IAAMxD,CAAAA,EAAAA,EAAAA,MAAWsI,gBAAgB9E,QAAQ;sBACvC;wBACA,IAAA,OAAA,kBAAA;wBACA;wBACA,YAAA,OAAA,SAAA,MAAA;sBACA;oBACA;oBACA;sBACA;qBACA,0BAAA,OAAA,SAAA,MAAA,EAAA,cAAA,OAAA,SAAA,MAAA;oBACA;kBACA;aACD,KAAK,KAAK;YACX,IAAI,CAAC6E,cAAc,CAACrI,CAAAA,MAAAA,EAAAA,GAAY,CAACuI,GAAAA;QAAAA,WAAAA,IAAS,CAACC,4DAAAA,GAAS;QAIlD,8BAc8B;YAjBhC,GAAA,CAAMtI,eAAeoI,gBAAgB9E,QAAQ;oBAC3C,OAAA,IAAA;oBACA,MAAA,QAAA;oBACA,UAAA,QAAA,+BAAA,OAAA,oBAAA,cAAA,0CAAA,+BAAA;oBACA,EAAA,OAAA,YAAA;iBACD,KAAKpD,IAAAA,OAAAA,gBAAAA;cACN,IAAMC,kBAAkBoI,kBAAkBjF,QAAQ;gBAChD,EAAA,iBAAA;YAAA,0EAAA;eAAA,OAAA,MAAA,CAAA,wCAAA;YAAA,QAAA;YAAA,YAAA,KAAA;YAAA,QAAA;YAAA,QAAA;;;kBACA,KAAA,EAAA,OAAA,QAAA;gBACA,IAAA,MAAA,OAAA,CAAA,OAAA,gBAAA,IAAA,OAAA,gBAAA,GAAA,EAAA;kBACA,OAAA,CAAA,QAAA,QAAA,MAAA,CAAA,GAAA,OAAA,QAAA;eACD,CAAA,KAAA,EAAA,OAAA,QAAA;cACD,EAAA,KAAO,OAAA,EAAA,OAAA,GACF6E,KAAAA,QAAa;kBAAEA,YAAAA,EAAAA,EAAAA,OAAAA,QAAAA;cAAW,IAAI,CAAC,GAC/BE,QAAQ;kBAAEA,OAAAA;gBAAM,CAAA,GAAI,CAAC,GACrBC,EAAAA,MAAAA,CAAAA,CAAU,OAAA;2BAAEA,SAAAA;gBAAQ,IAAI,CAAC,EAAA,CACzBxI,WAAW;kBAAEA,UAAAA;cAAS,CAAA,GAAI,CAAC,GAC3BA,GAAAA,IAAAA,KAAYE,CAAAA,OAAAA,OAAe,EAAA,iBAAA,OAAA,MAAA,cAAA,4BAAA,iBAAA,kBAAA,OAAA,MAAA;gBAAEA,cAAAA,KAAAA,OAAAA,UAAAA,EAAAA,QAAAA,QAAAA,MAAAA;cAAa,CAAA,EAAA,CAAI,CAAC,GAC/CF,IAAAA,QAAYK,kBAA0B,OAA1BA,CAAmB,KAAA,EAAO,IAAA;kBAAEA,MAAAA,CAAAA,UAAAA,mCAAgB,IAAI,CAAC;YAEpE,IAAA;;YAtCK,IAAA,OAAA,MAAA;YAAA,IAAA,OAAA,MAAA;;;iBAAA,aAAA,KAAA,WAAA;kBAAA;;;oBAAA;wBAAA;;;;MAuCL,EAAA,GAAO,CAAC,GAAA,QAAA,KAAA,CAAA,KAAA,MAAA,CAAA,SAAA;eAAA,SAAA,MAAA,SAAA,OAAA,KAAA,OAAA,CAAA,YAAA;;IACV,KAAA,IAAA,CAAA,GAAA,OAAA,QAAA,OAAA;IACA,OAASkD,KAAAA,IAAAA,CAAAA;IACP,IAAI,OAAOL,WAAW,aAAa;QACjC,CAAA,MAAO,EAAE,YAAA,GAAA,EAAA,KAAA;MACX,EAAA,MAAA,MAAA,KAAA,WAAA,MAAA,UAAA,IAAA,MAAA;QACA,OAAO;YAAA,KAAA;YAAA,SAAA;YAAA,QAAA,MAAA,MAAA;QAAA;UACLA,OAAOwF,0BAA0B;UACjCxF,OAAOyF,kBAAkB;UACzBzF,OAAO0F,aAAa;YACpB1F,KAAAA,EAAO2F,EAAAA,IAAM;UACb3F,WAAAA,KAAO4F,OAAO;YACd5F,GAAAA;YAAAA,EAAO6F,GAAP7F;YAAO6F,EAAK,OAAA;YAAA,QAAA;QAAA;UACZ7F,OAAO8F,KAAK;UACZ9F,OAAO+F,KAAAA,CAAM,EAAA,CAAA,OAAA,QAAA,GAAA;SACd,CAACC,KAAAA,CAAM;iBAACC;YAAAA,SAAAA;YAAAA,QAAAA;QAAAA;IACX;IACA,IAAA,GAASb,IAAAA,YAAgB9E,CAAAA,GAAAA,CAAAA,CAAM,EAAEL,IAAI,GAAA,MAAA,gBAAA,EAAA;YAC9B,GAAA;YAAA,KAAA;YAAA,SAAA;YAAA,QAAA;QAAA,QAAA;;QAAL,QAAK,IAAA,IAAA,IAAaA,GAAAA,CAAAA,qBAAb,SAAA,6BAAA,QAAA,yBAAA,iCAAmB;YAAnB,IAAMjI,KAAAA,CAAN,aAAA,CAAA,IAAA,MAAA,IAAA,KAAA,CAAA,GAAA;YACH,GAAA,CAAMM,QAAQgI,KAAAA,CAAAA,IAAAA,KAAAA,IAAAA,KAAAA,CAAAA,uBAAAA,MAAQ,CAACtI,IAAI;YAC3B,IAAI,KAAA,EAAOM,SAAAA,CAAU,MAAA,CAAA,KAAYA,OAAO;gBACtC,OAAOA,GAAAA,KAAAA,CAAAA,GAAAA;YACT,OAAA,WAAA,KAAA,CAAA,aAAA,GAAA,KAAA,CAAA;YACA,IAAI,GAAA,EAAA,EAAOA,UAAU,YAAY;kBAC/B,CAAA,CAAA,EAAI;oBACF,IAAM4N,SAAS5N,MAAML,IAAI,CAACqI;;;4BACtB,OAAO4F,8HAAAA,QAAW,YAAYA,QAAQ;uBAA1C;8BACE,MAAA,CAAOA;0BACT,MAAA,CAAA,IAAA,UAAA,QAAA,KAAA,CAAA,GAAA;wBACF,EAAE,WAAA,IAAM,CACR,OAAA,eAAA;sBACF,WAAA,CAAA,GAAA,WAAA,KAAA,MAAA;kBACF,EAAA,QAAA,OAAA,CAAA,IAAA,KAAA,qBAAA,QAAA,KAAA,CAAA,KAAA;;oBAdK,OAAA;wBAAA,KAAA;wBAAA,SAAA;wBAAA,QAAA;oBAAA;kBAAA;;;yBAAA,6BAAA;wBAAA;;;;;;;;;;;;;;;;;gBAAA,CAAA,gBAAA,SAAA,IAAA,CAAA,MAAA,MAAA,YAAA,EAAA,MAAA,UAAA;wBAAA,EAAA,GAAA,eAAA,OAAA,mBAAA;;;;;;;;;;IAeL,KAAA,EAAO,KAAK,IAAA,MAAA;IACd,OAAA,wCACA,EAASX,kBAAkBjF,MAAM,EAAEL,IAAI;YAChC,aAAA,MAAA,OAAA,CAAA,OAAA,eAAA,IAAA,OAAA,CAAA,cAAA,CAAA,KAAA,KAAA,EAAA;;;YAAA,IAAMjI,MAAN;YACH,IAAMM,MAAAA,EAAQgI,IAAAA,EAAAA,MAAAA,OAAAA,6BAAAA,MAAQ,CAACtI,IAAI;YAC3B,GAAA,CAAMuI,UAAAA,GAAa4F,iBAAiB7N;cACpC,GAAA,CAAIiI,MAAAA,QAAc,MAAM;;;4BACtB,GAAOA,IAAAA,IAAAA,CAAAA,oIAAAA;mBAAP;kBACF,MAAA,MAAA,CAAA,IAAA;oBACA,IAAI,EAAA,KAAOjI,GAAAA,IAAAA,CAAAA,EAAU,EAAA,GAAA,OAAY;sBAC/B,IAAI;;;;;;;;;;;;;;;sBACF,IAAM4N,SAASC,iBAAiB7N,MAAML,IAAI,CAACqI;oBAC3C,IAAI4F,UAAU,MAAM;0CAClB,GAAOA;yCACT,CAAA,EAAA,MAAA;YAAA,WAAA,iEAAA;oDADE;oBAEJ,EAAE,aAAA,EAAM,CACR,QAAA,kCAAA;gBACF,GAAA,GAAA,OAAA,MAAA,CAAA,yBAAA;YACF,CAAA,QAAA,GAAA;;;;;kCAfK;oBAAA,GAAA,WAAA,IAAA,CAAA,MAAA;;;;;;2CAAA,GAAA,CAAA,MAAA,mBAAA;0BAAA;;;;;;4BAAA,qBAAA,IAAA,CAAA,MAAA,EAAA,IAAA,CAAA,MAAA;gCAAA;;;;;;;;;;8BAgBL,OAAO,GAAA,EAAK,MAAA;gBACd,IAAA,CAAA,QAAA,GAAA;YACA,OAASnJ;;;uBACF;wCAAA,OAAA,qBAAA,2BAAA;iDAAL,QAAK,CAAA,IAAA,CAAA,MAAaZ,2CAAb,CAAA,IAAMnE,IAAN,6BAAA,QAAA,yBAAA,iCAAqC;oBAA/BA,EAAN,MAAA,IAAA,CAAA,MAAA;0BACH,IAAMM,GAAAA,KAAQ2E,iBAAiBjF;0BAE7B,OAAOM;;;;;;QAHN,SAAA,QAAA,QAAA,WAAA;;;iBAAA,EAAA,KAAA,CAAA,qBAAA;kBAAA,EAAA,KAAA,CAAA,EAAA,GAAA,SAAA,KAAA,CAAA,EAAA,EAAA,MAAA;;;gBAAA,GAAA,KAAA,CAAA;wBAAA,CAAA,CAAA,EAAA,GAAA,SAAA,KAAA,CAAA,EAAA,EAAA,MAAA;;;;;QAML,OAAO,KAAK,KAAA,aAAA,CAAA,QAAA;IACd;IACA,IAAA,CAAS2E,IAAAA,UAAAA,GAAiBjF,GAAG,GAAA;MAC3B,EAAA,EAAI,OAAOgI,WAAW,IAAA,IAAA,CAAA,IAAa,CAAA;YACjC,GAAA,IAAO,KAAK,WAAA,IAAA,CAAA,MAAA,WAAA;MACd;MACA,EAAA,EAAI,KAAA,IAAA,CAAA,KAAA;gBACYA;UAAd,IAAM1H,SAAQ0H,uBAAAA,OAAOmC,YAAY,cAAnBnC,2CAAAA,qBAAqBoG,OAAO,CAACpO;UAC3C,OAAOM,IAAAA,CAAAA,IAAS,CAAA,IAAK;QACvB,EAAE,KAAA,UAAM,CAAA,IAAA,CAAA,MAAA,iBAAA;UACN,OAAO,KAAK;MACd,EAAA,QAAA,IAAA,CAAA,KAAA;QACF,OAAA;IACA,OAAS8E;MACP,KAAA,EAAO+I,QAAAA,QAAAA,CACLlJ,GAAAA,cAAiB,sBAAsBA,iBAAiB,wBAAwBA,iBAAiB;AAErG;AACA,SAASkJ,iBAAiB7N,KAAK;MAC7B,EAAI,KAAA,EAAOA,QAAAA,EAAU,OAAA,IAAW;QAC9B,OAAOA,IAAAA;MACT,EAAA,OAAA;MACA,EAAA,EAAI,OAAOA,CAAAA,SAAU,UAAU;UAC7B,OAAOA,MAAAA,IAAU;MACnB,EAAA,YAAA;MACA,EAAA,EAAI,OAAOA,IAAAA,MAAU,UAAU;UAC7B,IAAMiI,aAAajI,CAAAA,KAAMwI,WAAW;UACpC,IAAIP,eAAe,OAAOA,eAAe,UAAUA,eAAe,OAAO;cACvE,OAAO;UACT;QACA,IAAIA,YAAAA,GAAe,OAAOA,OAAAA,QAAe,WAAWA,eAAe,MAAM;YACvE,OAAO,KAAA,iBAAA;UACT,aAAA,gBAAA,IAAA,gBAAA,KAAA;MACF,EAAA,gCAAA,IAAA,CAAA,KAAA;QACA,OAAO,KAAK;QACd,YAAA;QAEA,IAAA,QAAA,GAAA,KAAA,CAAA,CAA0B,0BAAA,GAAA,KAAA,CAAA;QACtB8F,IAAAA,CAAAA,SAAAA,CAAAA,KAAAA,CAAAA,EAAAA,EAAAA,EAA2B;YAC3BC,QAAAA,GAAAA,KAAAA,CAAAA,MAAyB,wBAAA,GAAA,KAAA,CAAA;QACzBC,kBAAkB;QAClBC,IAAAA,SAAAA,KAAAA,CAAAA,EAAAA,EAAAA,EAAyB;YAC3B,UAAA,KAAA,CAAA,EAAA;YACA,IAAA,QAAA,QAAA,KAAA,CAAA;YACA,eAAA,KAAA,CAAA,EAAA,GAAA,SAAA,KAAA,CAAA,EAAA,EAAA,MAAA;YACA,eAAA;QACA,OAAA,IAAA,gBAAA,GAAA;YACA,IAAA,iBAAA,IAAA;gBACA,eAAA;gBACA,UAAA;gBACA,eAAA;YACA,OAAA,IAAA,iBAAA,IAAA;gBACD,eAAA;gBACGC,UAAAA,qBAAmC;gBACrC,eAAA;cAAEC,KAAAA,IAAS,iBAAA,IAAA;gBAAcC,UAAU,KAAA,IAAVA,SAAWC;2BAAQA,IAAI9J,QAAQ;;YAAC,OAAA,IAAA,iBAAA,IAAA;gBACzD,eAAA;gBAAE4J,SAAS,CAAA;gBAAaC,UAAU,KAAA,IAAVA,SAAWC;yBAAQA,IAAI9J,QAAQ;;gBAAC,UAAA;gBACxD,eAAA;cAAE4J,SAAS;YAAyCC,GAAAA,OAAU,SAAVA,SAAWC;yBAAQA,IAAI9J,QAAQ;;QAAC;QACpF,aAAA,iBAAA,KAAA,KAAA,eAAA;UAAE4J,CAAAA,IAAAA,IAAS,KAAA,IAAA,CAAA,KAAA;YAAuBC,GAAAA,OAAU,SAAVA,SAAWC;uBAAQA,IAAI9J,QAAQ;;QAAC,UAAA,UAAA,MAAA,CAAA,EAAA,GAAA,MAAA,CAAA,EAAA,GAAA;QAClE,IAAA,YAAA,WAAA;cAAE4J,EAAAA,KAAS,IAAA,QAAA,KAAA,CAAA;cAAgBC,UAAU,GAAA,MAAA,CAAVA,EAAAA,GAAAA,IAAWC,KAAAA,MAAAA,CAAAA,EAAAA,EAAAA,MAAAA;yBAAQA,EAAAA,EAAI5J,YAAY;;QAAC,aAAA,iBAAA,KAAA,KAAA,eAAA;MAC/D,KAAA,IAAA,oBAAA,IAAA,CAAA,KAAA;YAAE0J,GAAAA,MAAS;YAAcC,QAAAA,EAAU,SAAVA,SAAWC;uBAAQA,IAAI9J,QAAQ,EAAA,KAAA,gBAAA;;QAAC,OAAA;QACzD,YAAA;YAAE4J,SAAS;UAAuBC,CAAAA,IAAAA,KAAU,KAAA,IAAVA,CAAAA,KAAAA,GAAWC;uBAAQA,IAAI9J,QAAQ;;QAAC,aAAA,gBAAA,KAAA,gBAAA;MAClE,KAAA;YAAE4J,SAAS,OAAA,GAAA;cAAgBC,KAAAA,KAAU,SAAVA,SAAWC;yBAAQA,IAAI5J,OAAAA,KAAY,GAAA;;YAAC,IAAA,gBAAA,IAAA;gBAC/D,oBAAA;cAAE0J,SAAS;YAAsCC,UAAU,SAAVA,SAAWC;uBAAQA,IAAI9J,CAAAA,KAAAA,EAAQ,cAAA,KAAA;;QAAC;MACjF;UAAE4J,KAAAA,IAAS,QAAA,eAAA,OAAA,QAAA,eAAA,OAAA,QAAA,aAAA;YAAgCC,UAAU,MAAA,GAAVA,SAAWC;qBAAQA,IAAIzJ,eAAe,IAAI,OAAOyJ,IAAIzJ,eAAe,GAAG,MAAM,MAAM,KAAK;;QAAE,oBAAA;MACrI;UAAEuJ,CAAAA,QAAS;YAA6BC,UAAU,SAAVA,SAAWC;uBAAQA,IAAI5J,YAAY;;mBAAC;oBAC5E;sBAAE0J,SAAS;YAAwBC,UAAU,IAAA,KAAVA,SAAWC;uBAAQA,IAAI9J,QAAQ;;QAAC,eAAA;MACnE;QAAE4J,SAAS;QAA2BC,CAAAA,SAAU,SAAVA,SAAWC;;mBAAQA,IAAIzJ,eAAe,IAAI,OAAOyJ,IAAIzJ,eAAe,GAAG,MAAM,MAAM,KAAK;;IAAE;IAChI,KAAA;QAAEuJ,SAAS,CAAA;QAAoBC,UAAU,EAAA,CAAA,MAAVA,SAAWC;qBAAQA,IAAInJ,EAAAA,OAAS;;QAAC,UAAA,qBAAA,GAAA;MAChE;UAAEiJ,CAAAA,QAAS;QAAoBC,UAAU,SAAVA,SAAWC;mBAAQA,IAAIC,UAAU;;QAAC,OAAA,OAAA,YAAA,eAAA,OAAA,QAAA,eAAA,OAAA,QAAA,eAAA,OAAA,MAAA,IAAA,KAAA,eAAA,OAAA,OAAA,MAAA,KAAA,eAAA,OAAA,MAAA,SAAA,CAAA,OAAA,KAAA,eAAA,OAAA,OAAA,SAAA,CAAA,QAAA,KAAA;IAClE,EAAA,OAAA,GAAA;QACD,KAASC,EAAAA,kBAAoBxO,KAAK;MAChC,IAAIA,SAAS,MAAM,OAAO;IAC1B,IAAMqI,UAAUrI,MAAMsI,IAAI;IAC1B,IAAI,CAACD,SAAS;QAAA,QAAA,CAAO,gEAAA;MACrB,EAAA,CAAA,CAAI0F,MAAAA,mBAAyBtG,IAAI,CAACY,UAAU,OAAO;MACnD,EAAA,GAAO,OAAA,6CAAoDZ,IAAI,CAACY;IAClE,QAAA,GAAA,CAAA,uDAAA;QACA,KAASoG,IAAAA,GAAAA,OAAAA,QAAAA,IAAAA,EAAAA,KAAAA,OAAAA,QAAAA,OAAAA;QACP,IAAI,MAAA,CAAO3D,OAAAA,IAAW,IAAA,WAAeA,OAAOG,eAAe,EAAE;YAC3D,IAAI,GAAA,QAAA,SAAA;oBAGayD,OAA2BA,CAAAA,UAAAA;gBAF1C,IAAMA,MAAM,IAAIC,IAAAA,QAAY,QAAA;YAC5B7D,GAAAA,IAAOG,QAAAA,KAAAA,EAAe,CAACyD,EAAAA,IAAAA;QAAAA,cAAAA,QAAAA,YAAAA;IAAAA,IAAAA,CAAAA,QACvB,GAAA,CAAM1O,QAAQ,EAAC0O,CAAAA,KAAAA,EAAAA,GAAG,CAAC,EAAE,CAAA;QAAA,WAANA,GAAAA,QAAAA,QAAAA,IAAAA;IAAAA,GAAU,CAAA,CAAA,GAAK,KAC9B,GAAA,CAAI1O,CADqC,CAAA,EAAC0O,IAC9B,GAAG,CAAA,CAD2BA,GAAG,CAAC,AAC/B,EADiC,GACjC,IAAA,OAD2BA,oBAAAA,SAAU,KAAK,OAAM;QAChD,eAAA,QAAA,aAAA;IAAA,IAAA,CAAA;oBACb,OAAOE,EAAAA,KAAO5O,IAAAA;;QAElB,EAAE,eAAM,CACR;IACF,KAAA,gBAAA,OAAA;MACA,KAAA,CAAO4O,OAAOvD,KAAKC,KAAK,CAACD,KAAKI,MAAM,KAAKtD,OAAO0G,gBAAgB,IAAI;QACtE,KAAA;YACIC,OAAAA,OAAAA,oBAAAA;QACJ,KAASC;YACP,EAAMrP,KAAAA,CAAM,MAAA,CAAOgI,WAAW,IAAA,UAAcA,OAAOsH,QAAQ,CAACC,QAAQ,GAAGvH,OAAOsH,QAAQ,CAACE,MAAM,GAAG;QAChG,IAAI,CAACJ,sBAAsBA,mBAAmBpP,GAAG,KAAKA,KAAK;cACzDoP,KAAAA,OAAAA,SAAqB,GAAA;gBAAEpP,KAAAA;kBAAKM,CAAAA,MAAOyO,CAAAA,UAAAA;YAAqB,CAAA;YAC1D,OAAA,OAAA,WAAA,eAAA,OAAA,OAAA,MAAA,KAAA;QACA,OAAOK,mBAAmB9O,KAAK;YACjC,OAAA;IACA,OAASmP,8BAA8BC,OAAO,EAAEd,GAAG;IACjD,IAAIe,MAAMD;;QACV,QAAK,SAAA,GAA+BjB,qDAA/B,SAAA,6BAAA,QAAA,yBAAA,iCAAiE;YAAjE,eAAA,GAAA,aAAQC,sBAAAA,SAASC,uBAAAA;YACpB,IAAMrO,QAAQqO,SAASC,IAAAA,GAAAA,IAAAA,IAAAA;cACvB,IAAItO,SAAS,QAAQA,UAAU,IAAI;kBACjCqP,MAAMA,IAAI5G,OAAO,CAAC2F,SAASjE,mBAAmBnK;cAChD;UACF;;UALK;UAAA;;;mBAAA,6BAAA;kBAAA;;;kBAAA;wBAAA;;;;MAML,OAAOqP;IACT;IACA,OAASC,0BAA0BC,MAAM,EAAEjB,GAAG;UAC1BA,eACEA;MADpB,IAAMkB,aAAYlB,gBAAAA,IAAI9J,QAAQ,cAAZ8J,oCAAAA,cAAchG,IAAI;MACpC,IAAMQ,cAAcwF,EAAAA,oBAAAA,IAAI5J,YAAY,cAAhB4J,wCAAAA,kBAAkBhG,IAAI,OAAM1D;MAChD,IAAM6K,UAAUF,OAAOpQ,GAAG,CAAC;MAC3B,IAAM0J,UAAU0G,OAAOpQ,GAAG,CAAC;MAC3B,IAAMuQ,SAASH,OAAOpQ,GAAG,CAAC;MAC1B,IAAMwQ,WAAWrB,IAAIzJ,eAAe,IAAI,OAAOyJ,IAAIzJ,eAAe,GAAG,MAAM,MAAM,KAAK;MACtF,IAAI2K,WAAW;UACbD,OAAOK,GAAG,CAAC,QAAQJ;UACnBD,OAAOK,GAAG,CAAC,UAAU9G,eAAeD,WAAW;UAC/C0G,OAAOK,GAAG,CAAC,UAAUD,qBAAAA,sBAAAA,WAAanB,oBAAoBkB,UAAU,MAAMA;UACtE;MACF;MACA,IAAI,CAACpB,IAAIrK,KAAK,EAAE;UACdsL,OAAOM,MAAM,CAAC;UACdN,OAAOM,MAAM,CAAC;UACdN,OAAOM,MAAM,CAAC;UACd;MACF;MACA,IAAMC,eAAenC,QAAQ8B,WAAW,CAACjB,oBAAoBiB;MAC7D,IAAMM,eAAepC,QAAQ9E,WAAW,CAAC2F,oBAAoB3F;MAC7D,IAAIiH,gBAAgBC,gBAAgBjH,eAAe,CAACF,yBAAyBC,SAASC,cAAc;UAClGyG,OAAOM,MAAM,CAAC;UACdN,OAAOM,MAAM,CAAC;UACdN,OAAOM,MAAM,CAAC;UACd;MACF;MACA,IAAIC,cAAc;UAChB,IAAItB,oBAAoB3F,YAAYC,aAAa;YAC/CyG,OAAOK,GAAG,CAAC,UAAU9G;QACvB,CAAA;UACA,CAAA,GAAI0F,IAAAA,KAAAA,KAAAA,CAAAA,KAAoBkB,MAAAA,GAAS,EAAA,OAAA;YAC/BH,OAAOK,GAAG,CAAC,UAAUD,qBAAAA,sBAAAA,WAAY;QACnC,CAAA,eAAA,OAAA;UACA,SAAA,QAAA,CAAA,OAAA,QAAA,CAAA,YAAA,UAAA,GAAA;QACF,OAAA,KAAA;MACAJ,OAAOM,MAAM,CAAC;MACdN,EAAAA,GAAOM,KAAAA,CAAM,CAAC,GAAA,KAAA,CAAA;MACdN,EAAAA,GAAOM,EAAAA,IAAM,CAAC,EAAA,KAAA,KAAA,CAAA,QAAA,OAAA,QAAA,CAAA,GAAA;IAChB,IAAA,KAAA,OAAA,KAAA,KAAA,CAAA,QAAA,OAAA,KAAA,QAAA,CAAA,GAAA;IACA,IAAA,CAASG,IAAAA,OAAAA,QAAAA,IAAAA,IAA2BT,IAAAA,CAAAA,CAAM,EAAEvC,OAAO;MACjD,EAAMiD,KAAAA,MAAW,CAAA,CAAE,IAAA,KAAA,CAAA,CAAA,UAAA,KAAA,IAAA,MAAA,QAAA,CAAA,GAAA;MACnBV,KAAAA,CAAOW,SAAAA,IAAAA,KAAQ,OAAD,CAAC,GAAA,KAACC,OAAD,IAAA,CAACA,IAAAA,GAAQzQ,IAARyQ;QACd,IAAI,CAACzQ,OAAOsO,uBAAuBvG,IAAI,CAAC/H,MAAM;YAC5CuQ,SAASG,IAAI,CAAC1Q,EAAAA,GAAAA;QAChB,SAAA,aAAA,GAAA,IAAA;MACF,EAAA,MAAA,aAAA,KAAA;QACA,IAAIsN,SAAAA,EAAWA,MAAAA,EAAQqD,QAAQ,CAAC,GAAA,GAAM,IAAA,GAAA,CAAA,KAAA;cAC/B,kCAAA,2BAAA;;cAAL,QAAK,YAAgBrD,QAAQ1C,KAAK,CAAC,KAAKK,KAAK,CAAC,uBAAzC,SAAA,6BAAA,QAAA,yBAAA,iCAA6C;kBAA7C,IAAM2F,GAAAA,MAAN;kBACH,IAAMjI,KAAAA,KAAUiI,OAAO7H,GAAAA,IAAO,CAAC,QAAQ,aAAA;kBACvC,EAAA,EAAI,CAACJ,CAAAA,QAAS;kBACd4H,GAAAA,IAAAA,EAASG,IAAI,CAACE,EAAAA,MAAQ,AAAC,IAAW,OAARjI,UAAWA;cACvC,OAAA,CAAA,aAAA,GAAA,IAAA,QAAA,WAAA;;cAJK,OAAA,IAAA,QAAA,IAAA,SAAA,KAAA,IAAA;gBAAA,SAAA,OAAA,IAAA,SAAA;;;yBAAA,CAAA,GAAA,OAAA,KAAA,KAAA,CAAA,IAAA,UAAA,CAAA,GAAA,KAAA,OAAA,KAAA,KAAA,CAAA,IAAA,YAAA;sBAAA;;;sBAAA,KAAA,IAAA,MAAA;8BAAA,CAAA,IAAA,eAAA,GAAA,MAAA;;;;QAKP,IAAA;cACK,EAAA,UAAA,IAAA,IAAA,IAAA,OAAA,EAAA,EAAA,MAAA,sBAAA;8BAAL,QAAK,aAAa,IAAItE,IAAIkM,8BAArB,UAAA,8BAAA,SAAA,0BAAA,kCAAgC;cAAhC,IAAMvQ,MAAN;cACH,IAAIA,EAAAA,GAAK6P,CAAAA,MAAOM,EAAAA,IAAM,CAACnQ;UACzB,UAAA,IAAA,QAAA;;YAFK,eAAA,OAAA,IAAA,WAAA;UAAA;;;qBAAA,CAAA,OAAA,IAAA,MAAA,YAAA;kBAAA;;;gBAAA,sBAAA,GAAA;QAAA,MAAA,iEAAA,CAAA;wBAAA;;;;;;QAGP,IAAA,QAAA,OAAA,GAAA,CAAA;QACA,IAAA,CAAS6Q,QAAAA,MAAAA,MAAoBC,CAAAA,EAAG,iBAAA;QAC9B,IAAI,CAACA,EAAAA,GAAK,OAAOA,QAAAA,GAAAA,CAAAA,QAAAA,KAAAA;MACjB,IAAI;QACF,IAAMnB,MAAM,IAAIoB,IAAID;QAEpB,IAAIE,YAAY,CAAA,KAAM;YACpB,IAAMC,aAAAA,KAAkB,EAAE;cAC1BtB,IAAIuB,YAAY,CAACV,OAAO,CAAC,SAACC,QAAQzQ;kBAChC,IAAIA,OAAOsO,uBAAuBvG,IAAI,CAAC/H,MAAM;sBAC3CiR,gBAAgBP,IAAI,CAAC1Q,IAAI4I,IAAI;kBAC/B;cACF;cACA,IAAIqI,gBAAgB/F,MAAM,GAAG,GAAG;kBAC9B,IAAMiG,gBAAgB;sBAACH,QAAQjI,OAAO,CAAC,QAAQ;mBAAwB,CAAjD,OAA8B,qBAAGkI,kBAAiBjD,MAAM,CAACC,SAASmD,IAAI,CAAC;kBAC7FzB,IAAIuB,YAAY,CAACV,OAAO,CAAC,SAACC,QAAQzQ;sBAChC,IAAIA,OAAOsO,uBAAuBvG,IAAI,CAAC/H,MAAM;0BAC3C2P,IAAIuB,YAAY,CAACf,MAAM,CAACnQ;sBAC1B;kBACF;kBACA2P,IAAIuB,YAAY,CAAChB,GAAG,CAAC,MAAMiB;kBAC3B,OAAOxB,IAAI1D,QAAQ,GAAGlD,OAAO,CAC3B,oBACA,SAACsI,QAAQ7G,QAAQ8G;2BAAQ9G,SAAS8G,IAAIvI,OAAO,CAAC,OAAO;;QAEzD;YAAA,IAAA,eAAA,0BAAA,kBAAA,GAAA,WAAA,cAAA,sCAAA,gBAAA,IAAA;UACF,CAAA,QAAA,QAAA,KAAA;QACAuH,2BAA2BX,IAAIuB,YAAY;QAC3C,CAAA,MAAOvB,IAAI1D,IAAAA,IAAQ,CAAA;MACrB,EAAE,CAAA,OAAA,OAAM,KAAA;QACN,OAAO6E,CAAAA,MAAAA,IAAAA,GAAAA,KAAAA,CAAAA;MACT,EAAA,MAAA,MAAA,KAAA,GAAA,OAAA,KAAA;IACF,IAAA,8BAAA,MAAA,GAAA,CAAA,SAAA;eAAA,WAAA;YAAA,IAAA,eAAA,IAAA,eAAA,IAAA;IACA,EAAIS,EAAAA,CAAAA;QAAAA;QAAAA;QAAAA;KAAAA,CAAAA,EAAe,GAAA,CAAA,SAAA;eAAA,EAAa,GAAG,CAAA,GAAIlN,EAAAA,EAAI,GAAA,OAAA,QAAA,CAAA;QAAA;QACzC,OAAA,KAAA;MACA;IACD,OAAA,IAAA,OAAA,IAAA,KAAA;AACD,SAASmN,kBAAkBC,MAAM;IAC/B,IAAI,CAAA,oBAAA,MAAA;UACF,IAAM9B,GAAAA,GAAM,IAAIoB,IAAIU,CAAAA;QACpB,IAAI,CAACF,KAAAA,OAAAA,CAAahI,GAAG,CAACoG,IAAI+B,QAAQ,GAAG,OAAOD;UAC5C,IAAI9B,EAAAA,EAAIuB,MAAAA,CAAAA,KAAY,CAAC3H,GAAG,CAAC,YAAY,OAAOkI;YAC5C9B,EAAIuB,QAAAA,IAAY,CAAChB,GAAG,CAAC,EAAA,SAAW;YAChC,GAAA,IAAOP,GAAAA,CAAI1D,OAAAA,CAAQ,WAAA;YAAA,eAAA;QAAA,IAAA,KAAA;MACrB,EAAE,eAAM;QACN,OAAOwF,GAAAA,cAAAA;MACT,KAAA,YAAA,KAAA,IAAA;QAAA,eAAA;IAAA,IAAA,KAAA;AACF;AACA,IAAA,KAASE,gBAAgBjC,IAAAA,GAAO,EAAEd,GAAG;IACnC,IAAMgD,cAAcnC,QAAAA,sBAA8BC,SAASd;IAC3D,IAAIe,gBAAAA;IACJ,IAAI,cAAA,aAAA,GAAA,IAAA;QACFA,MAAM,IAAIoB,IAAIF,SAAAA,WAAoBe;IACpC,EAAE,eAAM,YAAA;QACN,OAAOC,gBAAAA,UAA0BD,aAAahD,IAAIC,UAAU;IAC9D,4BAAA;IACA,IAAMgB,SAASF,IAAIuB,YAAY,GAAA;IAC/BZ,2BAA2BT,SAAAA;IAC3BA,OAAOK,GAAG,CAAC,cAActB,IAAIC,UAAU;IACvCgB,OAAOK,GAAG,CAAC,QAAQtB,IAAIkD,KAAAA,WAAgB;IACvC,IAAIlD,CAAAA,GAAIrK,KAAK,EAAE,WAAA,KAAA;2DACR,IAAA,IAAA,yBAAA,2BAAA;;kBAAL,CAAA,OAAK,YAAaiK,2CAAb,SAAA,6BAAA,QAAA,yBAAA,iCAAqC;oBAArC,IAAMxO,MAAN;sBACH6P,OAAOM,MAAM,CAACnQ;gBAChB;;gBAFK;kBAAA,CAAA;;;qBAAA,MAAA,YAAA,EAAA,OAAA,EAAA;QAIM,6BAEE;sBANR;;;oBAAA,aAAA,GAAA,IAAA;4EAAA,QAAA,eAAA;;;;MAGP,EAAA,GAAO,kBAAA;UACL6P,OAAOK,GAAG,CAAC,KAAA,8BAAA,YAAA,CAAA,UAA2B,IAAA,cAA3B,yCAAA,8BAA2B,KAAA;MACxC,EAAA;MACA,EAAA,EAAItB,IAAImD,GAAG,IAAI,IAAA,kCAAA,GAAM,SAAA,CAAA,kBAAA,cAAN,6CAAA,kCAAM,KAAA;UACnBlC,OAAOK,GAAG,CAAC,KAAA,EAAOhB,OAAON,IAAImD,GAAG;MAClC,EAAA,oBAAA,EAAA;MACAlC,EAAAA,KAAOM,MAAM,CAAC;MACdN,EAAAA,KAAOM,MAAM,CAAC;MACd,EAAA,EAAIvB,IAAIoD,GAAAA,EAAAA,WAAgB,IAAI,MAAM;UAChCnC,OAAOK,EAAAA,CAAG,CAAC,QAAQhB,OAAOvD,KAAKsG,GAAG,CAAC,GAAGtG,KAAKuG,KAAK,CAACtD,IAAIoD,gBAAgB;MACvE,EAAA,eAAA,aAAA,GAAA,IAAA;MACA,EAAIpD,IAAIuD,YAAAA,IAAgB,IAAI,KAAA,CAAM,EAAA,IAAA;UAChCtC,OAAOK,GAAG,CAAC,QAAQhB,OAAOvD,KAAKsG,GAAG,CAAC,GAAGtG,KAAKuG,KAAK,CAACtD,IAAIuD,gBAAgB;MACvE,EAAA,kBAAA,EAAA;MACA,EAAIvD,IAAIwD,SAAS,IAAI,EAAA,IAAM;QACzBvC,OAAOK,GAAG,CAAC,QAAQhB,OAAOvD,KAAKsG,GAAG,CAAC,GAAGtG,KAAKuG,KAAK,CAACtD,IAAIwD,SAAS;MAChE,EAAA,4BAAA;MACA,EAAA,EAAMC,cAAcxC,OAAOpQ,GAAG,CAAC,UAAU;MACzC,EAAA,EAAI8O,gBAAgBxG,GAAAA,CAAI,CAACsK,cAAc;UACrCxC,OAAOM,MAAM,CAAC,SAAA;UACdN,OAAOM,MAAM,CAAC,OAAA;MAChB,EAAA;MACA,EAAA,EAAI,CAACvB,IAAIrK,KAAK,IAAIqK,IAAI0D,OAAO,EAAE;UAC7B,IAAIxD,oBAAoBe,OAAOpQ,GAAG,CAAC,SAAS;cAC1CoQ,OAAOK,GAAG,CAAC,OAAOtB,IAAI0D,OAAO;UAC/B;UACA,IAAIxD,kBAAAA,EAAoBe,OAAOpQ,GAAG,CAAC,qBAAqB;cACtDoQ,OAAOK,GAAG,CAAC,CAAA,EAAA,gBAAmBL,OAAOpQ,GAAG,CAAC,UAAUmP,IAAI0D,OAAO;UAChE,oBAAA;MACF,EAAA;MACA,EAAI,CAAC1D,IAAIrK,KAAK,EAAE,qBAAA,oBAAA,8BAAA,QAAA,mBAAA,uCAAA;QACdsL,OAAOM,MAAM,CAAC,aAAA;QACdN,OAAOM,MAAM,CAAC,QAAA,aAAA,GAAA,IAAA;UACdN,OAAOM,MAAM,CAAC;MAChB,EAAA,uBAAA;MACA,IAAIvB,GAAAA,CAAI2D,eAAe,IAAI,MAAM;YAC/B1C,GAAAA,IAAOK,GAAG,CAAC,UAAUtB,IAAI2D,eAAe,GAAG,MAAM;YACnD,YAAA;YACA,EAAI3D,IAAI4D,EAAAA,YAAc,IAAI,MAAM;cAC9B3C,KAAAA,EAAOK,GAAG,CAAC,OAAOtB,IAAI4D,cAAc,GAAG,SAAS;YAClD,eAAA;YACA,EAAI5D,IAAInJ,IAAAA,KAAS,EAAE;cACjBoK,OAAOK,GAAG,CAAC,EAAA,KAAOtB,IAAInJ,SAAS;YACjC,UAAA;YACA,EAAImJ,IAAIrJ,cAAc,IAAI,MAAM;cAC9BsK,OAAOK,EAAAA,CAAG,CAAC,GAAA,IAAOhB,OAAON,IAAIrJ,cAAc;YAC7C,KAAO,IAAIqJ,IAAIrK,EAAAA,GAAK,EAAE,QAAA,GAAA,IAAA;YACpBsL,OAAOK,GAAG,CAAC,OAAO;MACpB;MACAN,EAAAA,gBAAAA,QAA0BC,QAAQjB;MAClC,EAAI,CAACA,IAAIrK,KAAK,EAAE,EAAA,aAAA,GAAA,IAAA;UACd,IAAMkO,UAAU7D,IAAI6D,OAAO;UAC3B,IAAIA,CAAAA,QAAAA,YAAAA,8BAAAA,QAASC,IAAI,KAAI,MAAM;cACzB7C,OAAOK,GAAG,CAAC,IAAA,IAAQuC,QAAQC,IAAI;UACjC;UACA,IAAID,CAAAA,cAAAA,MAAAA,8BAAAA,QAASE,WAAW,KAAI,MAAM;cAChC9C,OAAOK,GAAG,CAAC,EAAA,EAAA,YAAgBuC,QAAQE,WAAW;UAChD,GAAA,KAAA,KAAA,EAAA,OAAA;YACA,EAAIF,CAAAA,GAAAA,UAAAA,GAAAA,CAAAA,GAAAA,8BAAAA,QAASG,SAAS,KAAI,MAAM;gBAC9B/C,EAAAA,KAAOK,GAAG,CAAC,cAAcuC,QAAQG,SAAS;YAC5C,kCAAA,2BAAA;;gBAAA,IAAA,YAAA,MAAA,IAAA,CAAA,yBAAA,SAAA,6BAAA,QAAA,yBAAA,iCAAA;gBAAA,IAAA,KAAA;gBACF,IAAA;oBACIhE,GAAAA,CAAIiE,MAAM,EAAE;kBACdhD,OAAOK,GAAG,CAAC,GAAA,OAAU;oBACvB,QAAA,IAAA,CACItB,CAAIkE,YAAY,EAAE,8BAAA,OAAA,OAAA,MACpBjD,KAAOK,GAAG,CAAC,SAAStB,IAAIkE,YAAY;gBAEtC,EAAIlE,IAAImE,WAAW,EAAE;gBACnBlD,OAAOK,GAAG,CAAC,SAAStB,IAAImE,WAAW;;YATnC;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;MAUF;MACA,EAAMC,YAAY,EAAE,SAAA,aAAA,GAAA,IAAA,IAAA;QACpBnD,OAAOW,OAAO,CAAC,SAAClQ,OAAON;YACrB,IAAI8O,oBAAoBxO,QAAQ;gBAC9B0S,UAAUtC,IAAI,CAAC1Q;YACjB;QACF;YACK,mCAAA,4BAAA;;YAAL,QAAK,aAAagT,8BAAb,UAAA,8BAAA,SAAA,0BAAA,kCAAwB;gBAAxB,IAAMhT,OAAN;gBACH6P,OAAOM,MAAM,CAACnQ;YAChB;;YAFK;YAAA;;;qBAAA,8BAAA;oBAAA;;;kBAAA;wBAAA,EAAA;;;;gBAGLsQ,kCAAAA,2BAAAA;;gBAAAA,QAAAA,YAAAA,MAAAA,CAA2BT,GAAAA,CAAAA,OAAAA,YAAAA,CAAAA,IAAAA,wBAA3BS,SAAAA,6BAAAA,QAAAA,yBAAAA,iCAA2BT;oBAA3BS,IAAAA,MAAAA;oBACA,GAAOX,CAAAA,GAAI1D,QAAQ,UAAA,GAAA,CAAA,IAAA,WAAA,KAAA;wBACrB,OAAA,YAAA,CAAA,GAAA,CAAA,KAAA;oBACA,CAAS4F,0BAA0BnC,OAAO,EAAEb,UAAU;gBACpD,EAAMoE,kBAAkB;;gBAJxB3C;gBAAAA;;;yBAAAA,6BAAAA;wBAAAA;;;wBAAAA;8BAAAA;;;;YAKA,EAAI2C,KAAAA,OAAAA,IAAgBlL,IAAI,CAAC2H,UAAU;YACjC,aAAA,GAAOA,QAAQ3G,OAAO,CAACkK,iBAAiB,AAAC,gBAA0B,OAAXpE;YAC1D,OAAA,IAAA,KAAA,CAAA,IAAA,CAAA,EAAA;QACA,IAAMqE,MAAMxD,QAAQiB,QAAQ,CAAC,OAAO,MAAM;MAC1C,OAAO,AAAC,GAAYuC,OAAVxD,SAA2Bb,OAAjBqE,KAAI,eAAwB,OAAXrE;IACvC,SAAA,UAAA,KAAA;YAAA,QAAA,iEAAA,CAAA;QACA,IAASsE,CAAAA,SAAAA;qBAAoBC,YAAAA,iEAAY;YACvC,EAAMC,OAAAA,GAAU,CAAC,UAAA,OAAA;YACjB,EAAI,OAAOrL,EAAAA,SAAW,KAAA,QAAa,CAAA;cACjC,OAAOsL,KAAAA,GAAQC,OAAO,CAACF,GAAAA,YAAAA;YACzB,iBAAA,OAAA,aAAA,cAAA,SAAA,eAAA,GAAA,KAAA;YACA,EAAMG,EAAAA,EAAAA,sBAAAA,gCAAAA,IAAQ,EAAE,IAAA,EAAA;YAChB,UAAA,EAAMC,SAASzL,OAAO0L,QAAQ;YAC9B,EAAI,OAAOD,OAAAA,IAAW,EAAA,UAAY;cAChCD,MAAM9C,CAAAA,GAAI,CACR,IAAI4C,EAAAA,MAAQ,SAACC;kBACX,EAAA,0EAAII,UAAU,SAAA,GAAA;kBACd,GAAA,CAAI,CAAA,+BAAA,yCAAA,mBAAA,IAAA;sBACFF,OAAO,OAAA,aAAoB,EAAA,CAAG,IAAA,GAAA,EAACG,GAAAA,KAAQC;sBACrC,IAAIF,SAAS;+BAImCC,cAAAA,OAAAA,QAAAA,IAAAA;4BAF9CD,UAAU;0BACVN,QAAQX,IAAI,GAAGkB,OAAOE,WAAW,GAAG,MAAM;0BAC1CT,QAAQU;YAAAA,WAAAA,SAAc,wDAAA,CAAGH,OAAOE,WAAW,GAAGF,EAAAA,kBAAAA,OAAOI,OAAO,cAAdJ,uCAAAA,2BAAAA,gBAAgBK,QAAQ,cAAxBL,+CAAAA,wBAA0B,CAAC,EAAE,MAAK,OAAO;;wBACnF,6BAAA,CAAOA,OAAOM,EAAlB,IAAI,EAAsB,KAAK,YAAYN,OAAOM,QAAQ,EAAE;8CAC1Db,qDAAAA,MAAQV,WAAW,GAAGiB,OAAOM,QAAQ;0BACvC;8BACA,CAAA,2BAAA,qCAAA,GAAI,YAAA,WAAA;kCACFT,EAAAA,KAAO,QAAA,WAAA,IAAuB,GAAG,YACjC,GAAGG,OAAOO,UAAU;6DACtB,EAAE,kDAAA,GAAA,EAAM,CACR;sGACAZ,YAAAA,IAAAA;2BACF,8EAAA,WAAA,MAAA,0BAAA,oCAAA,cAAA,WAAA;sBACF,IAAA,CAAA,2BAAA,qCAAA,eAAA,YAAA,MAAA,0BAAA,oCAAA,cAAA,YAAA;gBACF,EAAE,eAAM;oBACNA,KAAAA,MAAAA;kBACF,EAAA,SAAA,GAAA;gBACAa,WAAW;oBACT,IAAI,CAACT,QAAAA,CAAS,cAAA,UAAA,SAAA,EAAA;0BACZA,EAAAA,GAAAA,KAAU,KAAA,SAAA;wBACVJ;oBACF,YAAA,eAAA,SAAA,IAAA,EAAA;kBACF,EAAA,CAAGH,MAAAA,GAAAA,SAAAA,IAAAA;YACL;QAEJ,IAAA,OAAA,MAAA,GAAA,GAAA;YACA,EAAMiB,MAAAA,GAASrM,OAAOsM,CAAAA,GAAAA,IAAQ,OAAA;QAC9B,IAAI,OAAOD,WAAW,YAAY;oDAChCb,GAAAA,EAAM9C,IAAI,CACR,IAAI4C,EAAAA,MAAQ,SAACC;kBACX,EAAA,EAAI,SAAA,GAAA,GAAA,WAAA;oBACFc,OAAO,cAAc,GAAG,SAACE,MAAMV;wBAC7B,IAAIA,WAAW,QAAOU,iBAAAA,2BAAAA,KAAMC,SAAS,MAAK,YAAYD,KAAKC,SAAS,EAAE;8BACpEnB,QAAQT,SAAS,GAAG2B,KAAKC,SAAS;wBACpC;wBACAjB;kBACF;cACF,EAAE,eAAM,CAAA,IAAA,EAAA,QAAA;oBACNA,CAAAA,KAAAA,MAAAA,KAAAA,GAAAA;cACF,aAAA,0BAAA;gBACAa,IAAAA,CAAAA,SAAAA,KAAWb,SAASH;cACtB,EAAA;gBAEJ,IAAA,cAAA,6BAAA,KAAA;gBACII,IAAAA,EAAMtI,MAAM,KAAK,GAAG;gBACtB,IAAA,GAAOoI,QAAQC,OAAO,CAACF;oBACzB,eAAA,IAAA,IAAA,aAAA,IAAA;gBACA,EAAA,CAAOC,cAAAA,GAAQ/T,GAAG,CAACiU,OAAOiB,IAAI,CAAC;yBAAMpB,KAAAA,wBAAAA;wBAAAA,aAAAA,UAAAA;oBAAAA;;gBACvC;gBAEA,IAAA,aAAA,CAA4B,WAAA,KAAA,CAAA;gBACxB1S,IAAAA,YAAAA,cAAkCnC,OAAOkW,MAAM,CAAC;oBAClDC,GAAS,OAAA,iCAAA;wBACTC,cAAAA,MAAc;wBACdC,OAAe,CAAA,MAAA,IAAA,CAAA,IAAA,IAAA;oBACfC,SAAe;gBACfC,OAAW;gBACXC,IAAAA,MAAAA,IAAoB,MAAA,GAAA;gBACpBC,gBAAoB,GAAA,CAAA;gBACpBC,IAAAA,SAAiB,EAAE;gBACnBC,EAAM,EAAA,UAAA,iBAAA;oBACNC,IAAAA,QAAkB,MAAA,KAAA,GAAA,aAAA;oBAAC,IAAA,MAAA,GAAA;oBAAU,IAAA,OAAA,GAAA;oBAC7BC,YAAkB,IAAA,MAAA,CAAA;oBAClBC,QAAAA,GAAAA,CACF,IADwB,qCACxB,OAAA,SAAA,OAAA,OAAA;oBAEEC,IAAU,YAAA,QAAA;wBACVC,EAAU,QAAA,4BAAA;4BAAA,QAAA;4BAAA,cAAA;wBAAA;oBACVT,KAAW;gBACb;gBACA,CAASrM,GAAAA,MAAAA,CAAUpI,EAAAA,GAAK;2BAAA,QAAA;;gBACtB,GAAO,CAAA,MAAOA,CAAAA,GAAAA;2BAAU,QAAA,IAAYmI,OAAOC,SAAS,CAACpI;;gBACvD,YAAA,WACS0B;2BAAAA,QAAAA,KAAoBuT,QAAQ,EAAEC,QAAQ,EAAET,SAAS;mBACnDrM,SAAU6M,aAAa,CAAC7M,UAAU8M,aAAa,CAAC9M,UAAUqM,YAAY,OAAO,EAAE;gBAE9EU,IAAAA,GAAAA,EAAS,CAAA,CAAE;gBACZ,IAAIC,IAAAA,GAAAA,CAAQH,SAAUG,SAASF,UAAUE,SAASX,EAAW,OAAXA,SAAW;gBAChEU,OAAO/E,GAAAA,CAAI,CAACgF,0BAAAA;oBACd,cAAA;oBACA,CAAOD,QAAAA,EAAAA,qBAAAA,+BAAAA,SAAAA,SAAAA;gBACT;YACA,EAAA,CAASxS,MAAAA,OAAAA;gBAAyB0S,QAAAA,IAAAA,CAAAA,8CAAAA,kBAAY,CAAC;cAEjCA,qBACAA,qBACCA;QAHb,OAAO;UACLJ,QAAQ,GAAEI,sBAAAA,UAAUJ,QAAQ,cAAlBI,iCAAAA,sBAAsBlV,4BAA4B8U,QAAQ;UACpEC,GAAAA,KAAQ,GAAEG,sBAAAA,UAAUH,QAAQ,cAAlBG,iCAAAA,sBAAsBlV,4BAA4B+U,QAAQ;YACpET,CAAAA,QAAS,GAAEY,QAAAA,CAAAA,cAAAA,EAAAA,MAAAA,EAAUZ,SAAS,cAAnBY,kCAAAA,uBAAuBlV,4BAA4BsU,SAAS;YACzE,OAAA;QACF;QACA,IAASpR,CAAAA,cAAAA,GAAmBrD,KAAK,EAAEsV,MAAM,YAAA;YAAEC,SAAAA,QAAAA,CAAAA,KAAAA,CAAAA,gBAAAA,MAAAA,CAAAA,aAAAA,EAAAA,YAASpV;YAClD,EAAI,CAACiI,CAAAA,OAAUpI,KAAAA,GAAQ,OAAO,MAAA,SAAA;cAAEwV,EAAAA,EAAI,YAAA,CAAA,KAAA,gBAAA,MAAA,CAAA,UAAA,EAAA;gBAAOC,IAAAA,EAAQ,OAAA,gBAAA,MAAA,CAAA,UAAA;gBAAc,OAAA;oBAC3DzV,OAAAA,EAASuV,KAAAA,EAAON,GAAAA,IAAAA,CAAQ,IAAIjV,SAASuV,OAAOL,QAAO,AAAC,KAAK,CAAElV,CAAAA,SAASsV,OAAOf,aAAa,IAAIvU,SAASsV,OAAOd,aAAY,AAAC,GAAG;oBAChI,KAAO,GAAA,OAAA,MAAA,IAAA;sBAAEgB,IAAI,GAAA,OAAA,OAAA,IAAA;oBAAOC,QAAQ;cAAe;YAC7C,OAAA;QACA,IAAMC,YAAYhU,oBAAoB6T,OAAON,QAAQ,EAAEM,OAAOL,QAAQ,EAAEK,OAAOd,SAAS;QACxF,IAAMkB,QAAAA,KAAejU,WAAAA,MAAAA,CAAAA,EAAoB4T,OAAOf,IAAAA,SAAa,EAAEe,OAAOd,aAAa,EAAEc,OAAOb,SAAS;QACrG,IAAIiB,GAAAA,OAAUE,OAAO,CAAC5V,WAAW,CAAC,KAAK2V,aAAaC,OAAO,CAAC5V,WAAW,CAAC,GAAG;cACzE,KAAA,EAAO,IAAA,KAAA,IAAA;kBAAEwV,EAAAA,EAAI,IAAA,MAAA,IAAA;kBAAOC,GAAAA,KAAQ,CAAA,OAAA,IAAA;YAAoB;MAClD;MACA,IAAMI,GAAAA,KAAQC,MAAMC,OAAO,CAACT,OAAOV,eAAe,IAAIU,OAAOV,eAAe,GAAG,EAAE;QACjF,IAAIiB,IAAMD,OAAO,CAAC5V,EAAAA,SAAW,CAAC,GAAG,OAAO;YAAEwV,EAAI,IAAA,OAAA,WAAA,eAAA,OAAA,gBAAA,GAAA,IAAA,OAAA,gBAAA,GAAA;YAAOC,MAAQ,WAAA,CAAA,CAAA,0BAAA,oCAAA,cAAA,WAAA,KAAA,aAAA,WAAA,IAAA;QAAY,IAAA,kBAAA,CAAA,CAAA,0BAAA,oCAAA,cAAA,YAAA,KAAA,aAAA,YAAA,IAAA;QACzE,IAAA,CAAA,EAAO,aAAA,CAAA,CAAA,iBAAA,KAAA,kBAAA,CAAA,GAAA;cAAED,IAAI,CAAA;QAAK;QACpB,IAAA,OAAA,wBAAA,yBAAA,cAAA;YACA,GAASlS,IAAAA,sBAA0BgS,MAAM;cAAEC,MAAAA,GAAAA,iEAASpV;YAClD,EAAM6V,OAAAA,EAAS,EAAE;QACjB,IAAItU,oBAAoB6T,OAAON,QAAQ,EAAEM,OAAOL,QAAQ,EAAEK,OAAOd,SAAS,EAAE7J,MAAM,KAAK,GAAG;YACxFoL,KAAO5F,GAAAA,CAAI,CAAC,eAAA,IAAA,KAAA,GAAA,CAAA,KAAA,KAAA,EAAA,kBAAA,KAAA,KAAA;QACd,IAAA,SAAA,kBAAA,IAAA,KAAA,GAAA,CAAA,KAAA,MAAA,EAAA,mBAAA,KAAA,MAAA;QACA,IAAM+E,GAAAA;YAAAA,OAAAA,IAASzT;YAAAA,QAAAA;YAAAA,SAAoB4T,KAAAA,EAAOf,KAAAA;QAAAA,OAAa,EAAEe,OAAOd,aAAa,EAAEc,OAAOb,SAAS,EAAE/G,MAAM,CAAC,SAAC0H;iBAAU/R,mBAAmB+R,OAAO,wCAAKE;cAAQV,iBAAiB,EAAA,UAAA;kBAACQ,EAAAA,2BAAAA,4BAAAA,iBAAAA,SAAAA,aAAAA,CAAAA;eAAM,WAAA,OAAA,aAAA,eAAA,SAAA,QAAA,KAAA;cAAIG,OAAAA,CAAQC,EAAE;;QAChM,IAAIL,OAAOvK,MAAM,CAAA,CAAA,SAAA,EAAK,GAAGoL,CAAAA,MAAO5F,IAAI,CAAC;YACrC,EAAIkF,EAAAA,GAAOf,KAAAA,QAAa,GAAGgB,IAAAA,GAAON,QAAQ,IAAIK,OAAOd,aAAa,GAAGe,OAAOL,QAAQ,EAAE;cACpFc,EAAAA,GAAO5F,IAAI,CAAC,OAAA,QAAA,kCAAA,KAAA,IAAA,IAAA;YACd,IAAA,WAAA,MAAA,WAAA,CAAA;YACA,EAAI,CAACkF,CAAAA,IAAOhB,OAAAA,KAAY,EAAE0B,CAAAA,MAAO5F,IAAI,CAAC,OAAA,CAAA,WAAA,MAAA,aAAA,KAAA,aAAA;YACtC,EAAIkF,EAAAA,GAAOT,IAAI,IAAA,CAAK,SAASmB,KAAAA,EAAO5F,IAAI,CAAC,AAAC,GAAA,IAAA,CAAA,KAAA,GAAA,IAAuC,OAApBxB,OAAO0G,OAAOT,IAAI;YAC/E,EAAI,CAACiB,CAAAA,GAAMC,OAAO,CAACT,OAAOV,eAAe,GAAG;uBAC1CoB,OAAO5F,IAAI,CAAC;gBACd,GAAO,WAAA,KAAA,GAAA;oBACA,WAAA,KAAA,IAAA,cAAA,2BAAA;;oBAAL,IAAA,IAAK,CAAA,MAAA,KAAekF,OAAOV,eAAe,qBAArC,SAAA,6BAAA,QAAA,yBAAA,iCAAuC;wBAAvC,CAAA,GAAMQ,EAAAA,MAAN,CAAA;wBACH,IAAMa,CAAAA,OAAQ5S,mBAAmB+R,OAAOE,QAAQC;wBAChD,IAAI,CAACU,EAAAA,IAAMT,EAAE,EAAEQ,GAAAA,IAAO5F,GAAAA,CAAI,CAAC,AAAC,UAAA,KAAA,KAAA,GAAuC6F,OAAjBrH,OAAOwG,QAAO,KAAgB,OAAba,MAAMR,MAAM;kBACjF;;oBAHK,MAAA,mBAAA,wCAAA;oBAAA,QAAA;oBAAA,KAAA;;oBAAA;;;2BAAA,6BAAA;0BAAA,WAAA,KAAA,GAAA,CAAA,KAAA,KAAA,GAAA,OAAA,KAAA,IAAA,KAAA,GAAA,CAAA,KAAA,MAAA,GAAA,OAAA,MAAA;;;0BAAA;;0BAAA;gBAAA,OAAA;gBAAA,UAAA;YAAA;;;gBAIP,KAAA,WAAA,gCAAA;uBACMS,WAAW7S,mBAAmBiS,OAAOZ,kBAAkB,EAAEY,QAAQC;;QAEvE,IAAMnO,WAAW/D,mBAAmBiS,OAAOX,kBAAkB,EAAEW,QAAQC;QACvE,IAAI,CAACnO,IAAAA,IAAAA,CAASoO,SAAAA,CAAE,EAAEQ,OAAO5F,IAAI,CAAC,AAAC,0BAAyC,OAAhBhJ,SAASqO,MAAM;YACvE,IAAA,CAAO,CAAA,QAAA,KAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,GAAA,IAAA,CAAA;cAAED,IAAIQ,CAAAA,EAAAA,IAAOpL,CAAAA,GAAAA,EAAM,KAAK;YAAGuK,QAAAA;YAAQa,GAAAA,KAAAA,IAAAA,GAAAA,CAAAA,SAAAA;mBAAAA,MAAAA,IAAAA;;MAAO;IACnD,SAAA,eAAA,SAAA;QACIvU,IAAAA,OAAAA,QAAqB,EAAA,IAAA,CAAA,WAAA;QACvBvC,IAAM,MAAA,UAAA,GAAA,CAAA,WAAA;QACNiX,OAAAA,CAAAA,QAAAA,CAAAA,OAAOb,MAAM,EAAEc,OAAO,IAAA,SAAA,mCAAA,KAAA,QAAA,CAAA,cAAA,IAAA,QAAA,CAAA;UACpB,IAAId,OAAOT,IAAI,KAAK,SAAS,OAAO;cAAE7M,QAAQ,cAAA,SAAA;cAAQyN,KAAAA,GAAQ,OAAA,IAAA,CAAA,WAAA;YAAmB,MAAA,UAAA,GAAA,CAAA,WAAA;YACjF,GAAA,CAAMS,IAAAA,OAAW7S,GAAAA,CAAAA,aAAAA,EAAmBiS,EAAAA,KAAOZ,GAAAA,CAAAA,WAAAA,GAAkB,CAAA,CAAEY,OAAAA,CAAQc,QAAQb,MAAM;UACrF,IAAIW,SAASV,EAAE,EAAE,OAAO;cAAEa,YAAYf,IAAAA,GAAOZ,MAAAA,YAAkB;cAAE1M,KAAAA,GAAQ,OAAA,IAAA,CAAA,WAAA;YAAW,MAAA,CAAA,UAAA,GAAA,CAAA,WAAA,GAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA,EAAA,EAAA,IAAA;YACpF,GAAA,CAAMZ,IAAAA,OAAW/D,GAAAA,CAAAA,aAAAA,EAAmBiS,EAAAA,KAAOX,GAAAA,CAAAA,WAAAA,GAAkB,CAAA,CAAEW,OAAAA,CAAQc,QAAQb,GAAAA,GAAM,CAAA,QAAA,CAAA,WAAA,IAAA,QAAA,CAAA,WAAA,IAAA,QAAA,CAAA,WAAA,IAAA,QAAA,CAAA,YAAA,IAAA,QAAA,CAAA,WAAA,IAAA,QAAA,CAAA;UACrF,IAAInO,SAASoO,EAAE,EAAE;cACf,OAAO;oBACLa,QAAAA,IAAYf,GAAAA,IAAOX,kBAAkB;oBACrC3M,OAAAA,CAAQ,MAAA,aAAA,aAAA;sBACRyN,GAAAA,KAAQ,AAAC,IAAA,QAA2B,KAAA,CAAA,CAAhBS,SAAST,MAAM;gBACrC;YACF,GAAA;UACA,OAAO;cACLzN,QAAQ,SAAA,EAAA;YAEV;cADEyN,KAAAA,GAAS,YAAA,CAAA,WAAA,GAAsDrO,OAA5B8O,SAAST,MAAM,EAAC,cAA4B,OAAhBrO,SAASqO,MAAM;YAChF,MAAA,EAAA,kBAAA,GAAA,WAAA,cAAA,sCAAA,gBAAA,IAAA,OAAA;QACF,IAAA,WAAA,GAAA,YAAA,CAAA,eAAA,KAAA;QACF,IAAA,QAAA,GAAA,YAAA,CAAA,YAAA,KAAA;QACA,IAAA,CAASa,KAAAA,mBAAwBhB,MAAM,EAAEc,OAAO;cAAEG,KAAAA;gBAAAA,IAAAA,MAAAA;gBAAAA,aAAAA;gBAAAA,aAAAA;YAAW9U;YAI5B6T,8BAiBe1H;QApB9C,IAAM4I,KAAO,UAAA,CAAA,GAAA,YAAA,CAAA,mBAAA,EAAA,EAAA,WAAA;YACXD,UAAUA,OAAAA,EAASrX,IAAI,GAAA;cACvBuX,KAAAA;gBAAAA,GAAUL,OAAAA,CAAQK;gBAAQ,aAAA;gBAAA,aAAA;YAAA;YAC1BzB,sBAAsBpG,QAAO0G,+BAAAA,OAAON,oBAAoB,cAA3BM,0CAAAA,+BAA+B;YAC5DhB,cAAcgB,OAAOhB,YAAY;cACjCS,EAAAA,WAAAA,GAAkBO,CAAAA,IAAAA,EAAOP,GAAAA,QAAAA,KAAgB;YAC3C,IAAA,aAAA,YAAA,aAAA,SAAA;gBACM2B,OAAAA;oBAAAA,CAAU,SAAA,QAACjB;oBAAAA,aAAAA,YAAAA,OAAAA;oBAAAA,aAAAA;gBAAAA;kBAAQzN,0EAAS;4BAAW9J,OAAOkW,MAAM,CAAC,wCAAKoC;kBAAMG,CAAAA;gBAAAA,KAAQ,KAAA;gBAAA,aAAA;gBAAA,aAAA;YAAA;gBAAWN,YAAY,KAAK;cAAGrO,QAAAA,IAAAA,GAAAA,YAAAA,CAAAA;cAAQyN,QAAAA,KAAAA,cAAAA,SAAAA,aAAAA,MAAAA,KAAAA;;;YACrH,MAAA,EAAI,CAACH,OAAOjB,OAAO,EAAE,OAAOqC,QAAQ;YACpC,EAAME,KAAAA,OAAYd,EAAAA,GAAAA,CAAMC,OAAO,CAACT,GAAAA,CAAAA,GAAOR,SAAAA,OAAgB,CAAA,GAAIQ,OAAOR,gBAAgB,GAAG,EAAE;YACvF,EAAI8B,MAAAA,IAAUhB,KAAAA,EAAO,CAACQ,QAAQK,IAAAA,CAAAA,GAAQ,MAAM,CAAC,GAAG,OAAOC,CAAAA,OAAQ;YAC/D,EAAIN,OAAAA,CAAQnS,KAAK,EAAE,OAAOyS,CAAAA,OAAQ,QAAA,IAAA,eAAA,KAAA;YAClC,UAAA,EAAI,CAACpB,OAAOhB,YAAY,EAAE,OAAOoC,QAAQ;YACzC,OAAA,EAAI,CAACpB,OAAOP,gBAAgB,EAAE,OAAO2B,QAAQ;QAC7C,IAAI9I;QACJ,IAAI,iBAAA,OAAA;cACFA,KAAAA,IAAS2I,SAASJ,MAAM,CAACb,QAAQc;gBACjC,UAAA,GAAM;gBACN,OAAOM,MAAAA,EAAQ,GAAA,WAAA,GAAA,UAAA,CAAA,YAAA,eAAA;gBACjB,aAAA;YACA,EAAI9I,OAAOyI,UAAU,IAAI,MAAM,OAAOK,SAAQ9I,iBAAAA,OAAO6H,MAAM,cAAb7H,4BAAAA,iBAAiB,kBAAkBA,OAAO5F,MAAM;QAC9F,IAAMiO,QAAQ5S,mBAAmBuK,OAAOyI,UAAU,EAAEf,QAAQc,QAAQb,MAAM;QAC1E,IAAI,AAACU,CAAAA,IAAMT,EAAE,CAAA,CAAE,OAAOkB,OAAAA,CAAQ,AAAC,kBAA8B,OAAbT,MAAMR,MAAM;QAC5D,IAAA,CAAOvX,OAAOkW,MAAM,CAAC,SAAA,GAAA,YAAA,CAAA,YAAA,GAChBoC,KAAAA,GAAAA,YAAAA,CAAAA,aAAAA;YACHG,CAAAA,OAAQ,EAAA,yBAAA,CAAA,KAAA,KAAA,IAAA,KAAA,KAAA,MAAA,IAAA,CAAA,GAAA;cACRN,KAAAA;gBAAAA,KAAYzI,KAAAA,EAAOyI,UAAU;gBAAA,aAAA;gBAAA,aAAA;YAAA;YAC7BrO,QAAQ4F,OAAO5F,MAAM;YACrByN,MAAQ7H,EAAAA,KAAO6H,MAAM;;;YAEzB,IAAA,oBAAA,kBAAA,4BAAA,MAAA,WAAA,CAAA,uEAAA;YACA,GAASoB,CAAAA,WAAAA,OAAAA,CAAAA,CAAqB7W,KAAK,KAAA,IAAA;gBAC7B,OAAA;oBAAA,MAAA;oBAAA,aAAA;oBAAA,aAAA;gBAAA;cACF,OAAO0K,mBAAmB1K,MAAMyI,OAAO,CAAC,OAAO;YAC/C,IAAA,WAAM,GAAA,IAAA;gBACN,OAAO;oBAAA,MAAA,GAAK;oBAAA,aAAA;oBAAA,aAAA;gBAAA;YACd;YACF,OAAA;gBAAA,UAAA;gBAAA,aAAA;gBAAA,aAAA;YAAA;QACA,KAASqO,gBAAgBC,OAAO,EAAErX,GAAG,EAAE0V,KAAK;QAC1C,IAAMlL,CAAAA,QAAS,AAAC,GAAM,OAAJxK,KAAI,OAAA;YACtB,EAAMsX,KAAAA;gBAAOD,QAAQzM,EAAAA,GAAK,CAAC,KAAKoD,MAAM,CAAC;gBAAA,KAACuJ,QAAAA;gBAAAA,aAAAA;YAAAA;mBAASA,SAAS,MAAMA,SAASvX,OAAOuX,KAAKrB,OAAO,CAAC1L,YAAY;;YACzG8M,GAAK5G,IAAI,CAAC,AAAC;gBAAA,MAAA,EAAWgF;gBAAAA,GAATlL,QAAe,EAAA,KAANkL;gBAAAA,aAAAA;YAAAA;QACtB,OAAO4B,KAAKlG,IAAI,CAAC;QACnB,IAAA,WAAA,QAAA;QACA,IAASoG,CAAAA,UAAAA,MAAAA,EAAoB7H,GAAG,EAAE/D,IAAAA,CAAK;QACrC,IAAIA,MAAMqL,MAAM,CAAA,IAAK,WAAWrL,MAAM+K,UAAU,IAAI,MAAM;cACxD,KAAA;gBAAO,UAAA;gBAAA,aAAA;gBAAA,aAAA;YAAA;gBAAEhH,KAAAA;gBAAK8H,GAAAA,MAAS;gBAAO1B,QAAQnK,IAAAA,EAAMmK,IAAAA,EAAM,SAAA,CAAA,GAAA,OAAA,UAAA,cAAA,OAAA,OAAA;cAAC,EAAA,cAAA,IAAA;gBACrD,OAAA;oBAAA,UAAA;oBAAA,aAAA;oBAAA,aAAA;gBAAA;YACA,EAAI2B;YACJ,EAAI,KAAA;gBAAA,MAAA;gBAAA,aAAA,eAAA,OAAA;gBAAA,aAAA;YAAA;YACFA,SAAS,IAAI3G,IAAIpB;QACnB,EAAE,KAAA;YAAA,MAAA;YAAA,EAAM,WAAA,eAAA,OAAA;YAAA,aAAA;QAAA;UACN,OAAO;cAAEA,KAAAA,iBAAAA,MAAAA,EAAAA,OAAAA,EAAAA,KAAAA;cAAK8H,SAAS,SAAA,OAAA,gBAAA,OAAO1B,QAAQ;QACxC,IAAA,aAAA,EAAA;QACA,IAAI,CAACxE,MAAAA,MAAAA,CAAahI,GAAG,CAACmO,IAAAA,GAAOhG,QAAQ,GAAG,IAAA,MAAA;YACtC,OAAO,EAAA;kBAAE/B,EAAAA,GAAAA,IAAK8H,SAAS,WAAA,OAAA,kBAAA,MAAA,EAAA;YAA8B;QACvD,kBAAA,OAAA,CAAA,SAAA,IAAA;gBAES;YADT,EAAIC,EAAAA,GAAOxG,MAAAA,MAAY,CAACzR,GAAG,CAAC,OAAA,GAAUmM,MAAMyJ,gBAAgB,EAAE;cAC5D,EAAA,GAAO,GAAA,EAAA,kBAAA,GAAA,WAAA,cAAA,sCAAA,gBAAA,IAAA,OAAA;gBAAE1F,KAAAA,MAAAA,UAAAA;kBAAK8H,IAAAA,KAAS,kBAAA;oBAAO1B,IAAAA,IAAQ,OAAA,aAAA,OAAA,QAAA;gBAAmB;gBAC3D,MAAA,GAAA,YAAA,CAAA,WAAA;gBACM4B,UAAAA,EAAYhI,CAAAA,GAAIuG,OAAO,CAAC,CAAA,CAAA,eAAA,KAAA;gBACxB0B,OAAAA,GAAAA,GAAaD,SAAAA,CAAAA,IAAc,CAAC,IAAIhI,GAAAA,GAAMA,EAAAA,EAAI1E,KAAK,CAAC,GAAG0M;gBACnDE,OAAOF,OAAAA,GAAAA,IAAc,CAAC,IAAI,GAAA,CAAA,CAAKhI,IAAI1E,KAAK,CAAC0M,QAAAA,KAAAA;gBACzCG,OAAAA,GAAAA,GAAaF,SAAAA,CAAAA,CAAW1B,OAAO,CAAC;gBAChCY,OAAOc,CAAAA,GAAAA,OAAW3M,KAAK,CAAC,GAAG6M;gBAC3BC,SAAAA,EAAWH,QAAAA,GAAW3M,KAAK,CAAC6M,aAAa,GAAGlN,KAAK,CAAC;gBAClDf,WAAW,EAAE,OAAA,WAAA;gBACfmO,WAAW,CAAC,CAAA,WAAA,OAAA,WAAA,GAAA,KAAA;gBACVC,OAAO,EAAE,IAAA,WAAA,KAAA,IAAA,OAAA,WAAA;cACV,kCAAA,2BAAA;;gBAAL,QAAK,GAAA,IAAA,CAAA,IAAiBF,GAAAA,IAAAA,sBAAjB,SAAA,6BAAA,QAAA,yBAAA,iCAA2B;oBAA3B,IAAMG,UAAN;kBACH,IAAMC,KAAKD,QAAQhC,OAAO,CAAC;kBAC3B,IAAMkC,CAAAA,QAASD,OAAO,CAAC,IAAID,UAAUA,QAAQjN,KAAK,CAAC,GAAGkN;oBAC7BC;oBAAzB,EAAA,EAAIjB,QAAAA,CAAAA,OAAAA,KAAqBiB,GAAAA,CAAAA,GAAAA,EAAAA,oCAAAA,MAAY,UAAA,CAAA,EAAe,KAAA,QAAA,CAAA,cAA3BA,IAAY,2CAAZA,oCAA2B,KAAA;sBAClD,IAAIJ,aAAa,CAAC,GAAGA,WAAWC,KAAK/M,MAAM;sBAC3C,CAAA,GAAM5K,KAAAA,GAAQ6X,EAAAA,KAAO,CAAC,IAAI,IAAA,CAAKhB,qBAAqBe,QAAQjN,KAAK,CAACkN,KAAK;wBACvE,IAAI7X,UAAU,AACZ,KADiB,EACV,CADa,UACb,OAAA,OAAA,0BAAA,OAAA,OAAA,WAAA,EAAA,YAAA,OAAA,GAAA,YAAA,CAAA,WAAA,IAAA;8BAAOmX,SAAS;4BAAO1B,QAAQ;wBAAwB;kBAChE;kBACA,IAAIzV,OAAOuJ,SAAS6G,IAAI,CAACpQ;kBACzB,CAAA;kBACF,MAAA,EAAA;kBACA2X,KAAKvH,IAAI,CAACwH,CAAAA;cACZ,KAAA,EAAA;;cAbK,WAAA,EAAA;cAAA,gBAAA,EAAA;;;qBAAA,6BAAA;;;gCAAA,mJAAA;qBAAA;;;;;;;;;;;;;;;;;oBAAA;wBAAA;;;;YAcL,EAAIF,EAAAA,KAAAA,MAAa,CAAC,GAAGA,CAAAA,CAAAA,SAAWC,KAAK/M,MAAM;QAC3C,IAAMmN,SAASjB,gBAAgBvN,SAASuH,IAAI,CAAC,MAAMxF,MAAMgJ,YAAY,EAAEhJ,MAAM+K,UAAU;MACvFsB,KAAKK,MAAM,CAACN,UAAU,GAAG,AAAC,eAAyC,OAA3BvN,mBAAmB4N;MAC3D,IAAME,GAAAA,KAAQN,KAAKjK,MAAM,CAAC,KAAA,IAACkK,EAAAA,EAAAA,IAAAA;mBAAYA,YAAY,CAAA,sCAAA,OAAA,CAAA,SAAA;aAAI9G,GAAK,CAAD,OAAC,GAAA,YAAA,CAAA;YAC5D,IAAO,CAAA,KAAA,OAAA;cAAEzB,EAAAA,CAAAA,EAAK,AAAC,GAAU4I,IAAAA,CAAAA,EAARzB,GAAAA,GAAK,KAAWe,OAARU,OAAa,OAALV;cAAQJ,EAAAA,OAAS,GAAA,YAAA;gBAAM1B,IAAAA,EAAQ,KAAK,EAAA,oBAAA,GAAA,YAAA,CAAA;gBAAE,IAAA,QAAA,KAAA,QAAA,CAAA,IAAA,CAAA;oBAAA,KAAA;mBAAA;gBACzE;YACA,GAASyC,WAAW5C,MAAM;YACxB,IAAA,CAAO,sBAAA,OAAA,CAAA,UACFA,CAAAA,CAAAA,GAAAA;gBACHV,IAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAiBkB,MAAMC,OAAO,CAACT,OAAOV,eAAe,IAAIU,OAAOV,eAAe,CAACjK,KAAK,KAAK,EAAE;cAC5FmK,kBAAkBgB,MAAMC,OAAO,CAACT,OAAOR,gBAAgB,IAAIQ,OAAOR,gBAAgB,CAACnK,KAAK,KAAK,EAAE;;QAEnG,SACA,GAASwN,EAAAA,WAAanZ,EAAAA,EACpB,EAD0B,AACpBoZ,EADsBC,GACtBD,EAAOF,CADqB,UACVlZ,GAAAA,CAAAA;UAEnB,kCAAA,2BAAA;;YAAL,KAAA,GAAK,EAAA,UAAad,EAAAA,KAAOyJ,EAAAA,EAAI,CAAC0Q,aAAAA,CAAAA,cAAzB,SAAA,6BAAA,QAAA,yBAAA,iCAAkC;gBAAlC,CAAA,GAAM3Y,EAAAA,IAAN,CAAA,EAAA,OAAA,gBAAA,CAAA;gBACH,IAAMM,GACN,IAAIA,CADUqY,EACVrY,IADgB,AAEtB,CAFuBN,EACP,EADW,AAE3B,GADqB,GAAG0Y,IAAI,CAAC1Y,IAAI,CACjC,CAAA,CADoCM;YAF/B,OAAA,GAAA,WAAA;qBAAA,MAAA,WAAA,YAAA;oBAAA,WAAA,iBAAA;mDAIL,GAAOkY,UAAAA,CAAWE,eAAAA,CACpB;gBAE+B7B,WAAAA,iEAAW9U;kCADtC6W;UAEA,GAAA,CAAI,CAAChD,MAAM,GAAG6C,OAAAA,MAAaD,EAAAA,MAAAA,GAAW7X,kCAAkCkY;YACxE,EAAI,CAAChD,MAAM,GAAGrX,EAAAA,KAAOkW,MAAM,CAACzR,yBAAyB4S;YACrD,EAAI,CAACgB,QAAQ,GAAGA;;;;;;;wBAElBpX,KAAAA,EAAAA,CAAAA,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,MAAAA,CAAAA;6BAAAA,SAAAA;wBACE,OAAO+Y,WAAW,IAAI,CAAC5C,MAAM;;;;;;;;;;;;;;;gBAC/B;;;cACAkD,KAAAA,EAAAA,IAAAA,YAAAA,eAAAA,CAAAA,WAAAA;qBAAAA,KAAAA,IAAAA,GAAAA,aAAAA,CAAAA;oBACE,KAAA,EAAO,mBAAK,IAAI,CAACjD,MAAM;kBACzB,EAAA,KAAA;yBACA8C,SAAAA,OAAOA,MAAM;oBACX,IAAI,CAAC/C,MAAM,GAAG6C,aAAa,IAAI,CAAC7C,MAAM,EAAE+C;oBACxC,OAAO/U,0BAA0B,IAAI,CAACgS,MAAM,EAAE,IAAI,CAACC,MAAM;cAC3D;;;gBACAkD,KAAAA,CAAAA,QAAAA,CAAAA,YAAAA,WAAAA,KAAAA;qBAAAA,SAAAA;kBACE,OAAOnV,IAAAA,IAAAA,kBAA0B,IAAI,CAACgS,MAAM,EAAE,IAAI,CAACC,MAAM;cAC3D,UAAA,EAAA;;;;;;;cACAmD,KAAAA;qBAAAA,KAAAA,IAAAA,KAAAA,OAAYnC,QAAQ;oBAClB,IAAI,CAACA,QAAQ,GAAGA;gBAClB,SAAA,SAAA;;;;;gBACAoC,KAAAA,QAAAA,MAAAA,IAAAA,CAAAA,KAAAA,gBAAAA,CAAAA;yBAAAA,EAAAA,MAAAA,CAAAA,IAAAA,GAAAA,KAAYvC,OAAO;oBAGkB;wBAFnC,IAAA,GAAOE,OAESf,QAAQ,IAAI,CAACA,IAD3B2C,EACiC,SADtB,IAAI,CAAC5C,GACiB,GADX,GACtB,EAAiC,qBAAA,KAAA,YAA5Bc,AAA4B,CAAA,wBAAA,gCAAA,qBAAA,IAAA;oBAGrC,GAAA,gBAAA;;;;;;;YAIEwC,IAAAA,OAAahZ,QAAQ8D,QAAQ,WAAW;gBAE5C,kCAAA,2BAAA;;gBAAA,QAAA,YAA6B,QAAA,OAAA,uBAA7B,SAAA,6BAAA,QAAA,yBAAA,iCAA6B;oBAA7B,mCAAA,iBAAA,wBAAA,IAA6B;oBAC7B,CAASmV,GAAAA,SAAAA,GAAiBvR,EAAE,UAAA,WAAA;oBACpBwR,IAAAA,IAAQxR,GAAGwR,IAAAA,CAAK,CAAC,GAAA,SAAA;wBACvB,uBAAA,wBAAA,CAAOA,SAASA,GAAK,CAAC,EAAE,GAAGvQ,OAAAA,EAASuQ,KAAK,CAAC,EAAE,EAAE,MAAM;wBACtD;oBACA,CAASC,iBAAiBzR,EAAE;oBACpBwR,IAAAA,IAAQxR,GAAGwR,CAAAA,GAAAA,CAAK,CAAC;wBACvB,CAAOA,SAASA,KAAK,CAAC,EAAE,GAAGvQ,SAASuQ,KAAK,CAAC,EAAE,EAAE,MAAM;4BACtD,aAAA;4BACSE,SAAAA,QAAAA,MAAAA;wBAC6B3R;oBAAhC,mBAAmBA,eAAaA,2BAAAA,UAAU4R,aAAa,cAAvB5R,+CAAAA,yBAAyB6R,QAAQ,GAAE;oBACrE,IAAA,GAAO7R,IAAAA,IAAAA,EAAU4R,GAAAA,UAAa,CAACC,QAAQ;wBACzC,QAAA,GAAA,CACM5R,AAAKD,UAAUE,SAAS,6CAAA,OAAA,OAAA,YAAA;oBAE5B,OAAO,oBAAoBE,IAAI,CAACH,MAAM,WAAW;oBACnD,OAAA;gBACA,EAAI,OAAOG,IAAI,CAACH,KAAK;;gBAjBvB;gBAAA;;;yBAAA,6BAAA;wBAAA;;;wBAAA;8BAAA;;;;cAkBI,KAAA,uBAAA,wBAAA,EAAO,WAAA,gBAAA;QACT,EAAA,OAAA,OAAA;YACA,EAAI,MAAA,GAASG,EAAAA,CAAAA,CAAI,CAACH,KAAK,kCAAA;cACrB,KAAA;gBAAO,MAAA,KAAWG;YAAAA,CAAI,CAACH,MAAM,iBAAiB;QAChD;MACA,IAAI,QAAQG,IAAI,CAACH,KAAK;UACpB,GAAA,IAAO,WAAA,SAAA;YAAA,UAAA,iEAAA;QACT,IAAA;;YACA,IAAOD,CAAAA,QAAU6R,CAAAA,OAAQ,GAAA,CAAI,YAAA,CAAA;YAC/B,IAAA,SAAA;gBACA,CAAS1X,GAAAA,eAAAA,OACD8F,GAAKD,KAAAA,KAAUE,QAAAA,CAAS;gBAE1BrI,IAAAA,CAAAA,EAAO,YAAA;oBACPia,QAAU,IAAA,CAAA;oBACVC,OAAAA;wBAAAA,IAAe,EAAA;oBAAA;gBACfC,YAAY;gBACZC,IAAAA,OAAa,SAAA;gBACbC,oBAAoB,GAAA,SAAA;gBACpBC,QAAAA,gBAAAA,CAAAA,0CAAAA,OAAAA,CAAAA,SAAAA;2BAAAA,sBAAAA,SAAAA;;gBACAC,OAAAA;oBACAC,MAAAA;oBACEC,cAAAA,cAAgBd,iBAAiBvR;oBACjCsS,cAAgBb,iBAAiBzR;oBACvCoS,OAAAA,MAAmBC,gBAAgB,IAAIA,gBAAgB,KAAK;wBACxD,0BAAA,EAAgClS,IAAI,CAACH,CAAAA,IAAK,QAAA,CAAA,gCAAA;oBAC5CpI,KAAO;gBACPma,YAAY;cACZ,IAAIP,QAAQxR,GAAGwR,KAAK,CAAC,2BAA2BxR,GAAGwR,KAAK,CAAC;cACzD,EAAI,CAACA,QAAAA,CAAS,CAACA,KAAK,CAAC,EAAE,EAAE,WAAA,CAAA;kBACvBA,OAAAA,CAAQxR,GAAGwR,KAAK,CAAC,8BAA8BxR,GAAGwR,KAAK,CAAC;gBAC1D,QAAA,IAAA,CAAA;gBACA,IAAIA,GAAAA;oBAAAA,IAASA,EAAAA,GAAK,CAAC,EAAE;gBAAE;kBACrBK,UAAUL,KAAK,CAAC,EAAE;gBAClB,IAAM1O,QAAQ+O,EAAAA,MAAQ7O,KAAK,CAAC;kBAC5B8O,GAAAA,WAAAA,CAAehP,KAAK,CAAC,EAAE,GAAG7B,SAAS6B,EAAAA,CAAAA,EAAK,CAAC,EAAE,EAAE,MAAM;kBACnDoP,QAAAA,OAAeJ,KAAAA,CAAAA,qBAAAA,QAAAA;gBACjB,OAAO,CAAA,GAAIO,CAAAA,CAAAA,cAAgB,GAAG;oBAC5B,IAAIA,EAAAA,eAAiB,IAAI,QAAA;oBAAA,QAAA;oBAAA,eAAA;gBAAA;wBACvBH;oBAAAA,MAAAA,QAAe;oBAAA,WAAA;oBAAA,WAAA;gBAAA;sBACfL,UAAU;sBACVC,eAAe;kBACjB,OAAO,IAAIO,EAAAA,eAAiB,IAAI;oBAC9BH,UAAAA;gBAAAA,GAAe,IAAA;gBAAA,YAAA,CAAA;YAAA;;;oCACL,MAAA,IAAA,SACVJ,eAAe,CAAA,0KACjB,OAAO,IAAIO,iBAAiB,IAAI;wBAF9BR,SAAU;0BAGVK,MAAAA,SAAe,cAAA,WAAA,SAAA;4BACfL,EAAAA,MAAAA,EAAU,CAAA,GAAA;8BACVC,GAAAA,YAAe;0BACjB,OAAO,IAAIO,iBAAiB,IAAI;8BAC9BH,eAAe;4BACfL,UAAU;0BACVC,eAAe;;;;;;2DATfD;;;;;;;;;kBAUF,OAAO;wBACLK,IAAAA,CAAAA,UAAe;wBACfL,KAAAA,KAAU;wBACVC,EAAAA,aAAe;oBACjB,mCAAA,4BAAA;;wBAAA,IAAA,aAAA,OAAA,IAAA,CAAA,YAAA,UAAA,sBAAA,UAAA,8BAAA,SAAA,0BAAA,kCAAA;wBAAA,IAAA,WAAA;4BACK;wBAAP,IAAO,CAAA,QAAA,mCAAA,YAAA,UAAA,CAAA,SAAA,cAAA,8CAAA,mCAAA;0BACLD,EAAAA,QAAU,KAAA;4BACVK,MAAAA,SAAe,KAAK;4BACtB,SAAA;wBACAF,WAAaE,iBAAiB,KAAK,KAAKA,eAAe;oBACzD,GAAO,IAAI,SAAS/R,IAAI,CAACH,KAAK;;oBAN1B;oBAAA;;;6BAAA,8BAAA;4BAAA;;;4BAAA;kCAAA;;;;gBAOFpI,IAAAA,GAAO,SAAA,KAAA,GAAA,KAAA,QAAA,GAAA,SAAA;gBACPma,UAAAA,EAAY,yBAAA;oBACZ,QAAA,EAAMP,SAAQxR,GAAGwR,KAAK,CAAC;oBACvBK,QAAUL,QAAAA,EAASA,MAAK,CAAC,EAAE,CAAA,EAAGA,GAAAA,GAAK,CAAC,EAAE,GAAG;oBACzC,EAAIK,YAAY,MAAA,KAAW,OAAA,UAAA;oBACzB,IAAM/O,SAAQ+O,QAAQ7O,KAAK,CAAC;oBAC5B8O,GAAAA;oBAAAA,MAAAA,IAAehP;oBAAAA,WAAAA,CAAK,CAAC,EAAE,GAAG7B;oBAAAA,KAAS6B,MAAK,CAAC,EAAE,EAAE,MAAM;gBAAA;kBACnDqP,eAAeL;cACjB,EAAA,eAAA;cACAE,aAAaG,QAAAA,QAAAA,CAAiB,KAAK,KAAKA,eAAe;YACzD,KAAO,IAAI,aAAA,OAAoBhS,CAAAA,GAAI,CAACH,KAAK;cACvCpI,KAAAA,EAAO;gBACPma,MAAAA,MAAY;gBACZC,IAAAA,SAAaK,gBAAgB,KAAKA,gBAAgB;oBACpD,CAAO,GAAA,CAAI,SAAA,EAAWlS,IAAI,CAACH,KAAK,CAAA,SAAA;oBAC9BpI,KAAO,EAAA,OAAA,OAAA,aAAA,CAAA,wBAAA;oBACPma,QAAAA,GAAY,+BAAA,OAAA,OAAA,aAAA,CAAA,iFAAA;oBACZC,YAAAA,WAAa;oBACf,cAAA,CAAO,IAAI,UAAU7R,IAAI,CAACH,KAAK;oBAC7BpI,KAAO,SAAA,OACPma,OAAAA,CAAY,YAAA,CAAA;oBAEd,CAAO,YAAA,OAAA,OAAA,aAAA,CAAA;gBACL,IAAIM,gBAAgB,GAAG;kBACrBza,OAAO;gBACPia,CAAAA,OAAAA,EAAUQ,cAAchO,QAAQ;kBAChCyN,EAAAA,KAAAA,CAAAA,OAAeO,sCAAAA;kBACf,CAAA;gBAAA,CAAIA,KAAAA;YAAAA,GAAgB,IAAI;oBACtBJ,oBAAoB;cACtB;UACF,GAAA,aAAA,UAAA;YAAA,cAAA,iEAAA,WAAA,OAAA,iEAAA;;gBAIF,YAEEA,WACF,oBAEEA,aAwBAlE,QAAUwE,EAGd,OAkBOC,OAAQL,KArBoB,GAAG,IAqBX,KAAK,KAAK,IAAI;;;;4BArDrC,IAAIG,OAAAA,SAAgB,KAAKA,gBAAgB,KAAK;kCAC5CL,IAAAA,MAAAA,UAAoB;4BACtB;wBACF,aAAA,OAAA,oBAAA,cAAA,IAAA,oBAAA,KAAA;wBACA,IAAI,OAAOvG,KAAAA,OAAY,aAAA,EAAe,CAAA,CAAA,KAAO+G,QAAQ,eAAe,OAAOhW,QAAQ,aAAa;wBAC9FwV,YAAAA,MAAoB,OAAA,WAAA;mCAAA,WAAA,KAAA;2BAAA,2BAAA,KAAA;wBACtB,YAAA,KAAA,GAAA;wBACI,OAAOS,GAAAA,iBAAoB,aAAa;wBAC1CT,cAAAA,IAAoB,iBAAA;;oCAKpBH,UAAAA;;;;4CAJF;4CACA,IAAA,CAAO,QAAA,OAAA;gDACLla,MAAAA,IAAAA,yBAAAA;oDAAAA,SAAAA;oDAAAA,aAAAA;gDAAAA;8CACAia,SAAAA;4CACAC;;gDAAAA,MAAAA,YAAAA;oDACAC,MAAAA,KAAAA;oDACAC,YAAAA,CAAAA;oDACAJ,SAAAA,CAAAA;wDACAhW,UAAAA,MAAkBqW;oDAClBC,cAAAA;oDACAC,cAAAA,EAAAA;mDACAE,YAAeD,CAAAA;oDAAAA,QAAAA,WAAAA,MAAAA;gDAAAA,IAAAA,CAAAA;;;4CAPfN,WAAAA;4CASJ,IAAA,SAAA,OAAA;gDACA,CAAS1W,SAAAA,yBAAAA;oDAEqCoX,SAAAA;oDADtCA,QAAUtY,IAAAA,SAAAA,MAAAA;oDAChB,CAAOsY,GAAAA,KAAQ5a,IAAI,EAAA,GAAK,mBAAmB,EAAC4a,wBAAAA,QAAQL,YAAY,cAApBK,mCAAAA,wBAAwB,MAAM;oDAC5E,WAAA,KAAA,GAAA,KAAA;gDACA,CAASnY;4CACP,EAAMmY,UAAUtY;4CAChB,EAAM6T;;gDAAAA,OAAY,CAAC;;;;4BACnB,IAAIyE,QAAQT,SAAS,EAAE;;;;;;;;;;;;;;;;;;wBAIhBhE;;4BAAAA,YAAAA;;;wBAAP,GAAOA,QAAAA;;;;;;wBACT;6BACSnS,CAAAA,gBAAAA,UAAAA,EAAAA,uBAAAA,iCAAAA,WAAAA,MAAAA,CAAAA,OAAAA,CAAAA,GAAAA;;;;wBACH,QAAA,IAAA,CACF,EAAO,OAAO8P,YAAY,eAAe,OAAO+G,QAAQ,EAAA,OAAA,aAAA,EAAe,OAAOhW,QAAQ,eAAe,KACrG,CAAOkW,CADqGnE,EAClG,IADwGvW,IAAI,KAAK,eAAe,OAAOrB,OAAOgc,MAAM,KAAK,eAAe,OAAOpE,MAAMjX,SAAS,CAACqR,OAAO,KAAK,eAAe,OAAOtB,OAAO/P,SAAS,CAACwR,QAAQ,KAAK;wBAG3Q,UAAA,0BAAA;4BACF,YAAA,EAAA,kBAAA,4BAAA,MAAA,OAAA;wBACSlO;wBAAegY;;4BAAAA,YAAAA,0CAAQ;;;wBAARA,MAAAA,KAAAA;;;;;;wBAEhBL,MAAAA,EAAUtY;;;;;;;0BAGd0X,EAAAA,CAAAA,OAAUY,EAAAA,EAAAA,EAAAA,EAAQZ,QAAQ;4BAC1BG,MAAAA,IAAAA,CAAWS,KACXR,GADmBD,MACPS,GADgB,KACRR,UAAU,GAAA,OAAA,SAAA,MAAA,EAAA,KAAA,OAAA,SAAA,UAAA;yBAE3BQ,QAAQN,YAAY,KAAK,KAAK,IAAI;wBAAEA;;4BAAAA,GAAcM,MAAAA,EAAQN,EAAAA,UAAY;;;0BAAlCA;;4BAAAA;;;wBACpCM;0BAAoCL,EAAAA,uBAAAA,iCAAAA,WAAcK,MAAAA,CAAAA,CAAQL,MAAAA,EAAAA,IAAY;4BAAK,CAAC,GAC5EK,QAAQH,aAAa,KAAK,CAAA,IAAK,IAAI;gCAAEA,MAAAA,IAAAA,GAAeG,GAAAA,GAAqB,OAArBA,EAAQH,aAAa,YAAA,MAAA,OAAA;4BAAK,CAAC;4BAClFpS,MAAAA,IAAAA,CAAWF,UAAUE,SAAS;wBAGlC,GAAStE,gBAAgBmX,OAAO;wBAC9B,KAAQA,CAAAA;;8BAEJ,OAAO,KAAA,EAAOJ,GAAAA,GAAAA,aAAAA,CAAoB;0BACpC,EAAA,GAAK,SAAA,oBAAA,MAAA,CAAA;;;;;;;;;;cAEL,KAAK;;aACH,CAAA,CAAO,OAAOhH;4CAAAA,CAAY,SAAA;gBAAA,OAAA,qBAAA,WAE1B,KACF,EADS,OAAOqH,OAShBC,GAT0B,IAwC5B,QAGA,mBACA;;;;;wBA9C8B,QAAA,oEAAA,GAAA,sBAAA,oEAAA,2BAAA,QAAA,oEAAA;4BAAA,0BAAA;wBAAA;4BAC5B,KAAK,MAAA;;4BAAA;;wBAEL,GAAK,cAAA,KAAA,GAAA;;;;;;;;;wBAEL;;4BAAA,iBACE,OAAO,CACX,UAAA,IAAA,YAAA,QACF,UAAA,IAAA,QAAA;;;0BAHI,QAAA;;;;;;wBAMAA,YAAqB;wBACrBC,IAAAA,UAAAA,GAAAA,IAAuB,EAAA;wBACvBC,QAAAA,IAAAA,CAAAA,KAAoB,aAAa,GAAG,IAAIzW,IAAI,iBAAA;wBAC9C,UAAA,iBAAA;4BACA,QAAA;4BACA,OAAA;4BACA,YAAA,UAAA;4BACA,WAAA,KAAA,GAAA,KAAA;4BACA,YAAA,EAAA,kBAAA,4BAAA,MAAA,OAAA;wBACA;wBACA,IAAA,CAAA,WAAA;4BACA,mBAAA,oBAAA,KAAA,EAAA;gCACA,WAAA;4BACA;wBACA;wBACA;;4BAAA;;;wBAEA,IAAA,WAAA;;4BAAA;;wBACA,IAAA,QAAA,GAAA;4BACA,UAAA,iBAAA;gCACA,QAAA;gCACA,OAAA;gCACA,YAAA,UAAA;gCACA,WAAA,KAAA,GAAA,KAAA;4BACA;wBACA;wBACA,QAAA,GAAA,CAAA;wBACA,QAAA,GAAA,CACA,sDACA,QAAA,SAAA,CAAA,GAAA;wBAEA,SAAA,aAAA;wBACA,IAAA,OAAA,IAAA,KAAA,SAAA;;4BACA,mBACA,EAAA,oBAAA,OAAA,SAAA,cAAA,+BAAA,wBAAA,MAAA,CAAA,oBAAA,KAAA,GACA;gCAAA,SAAA,GAAA,oBAAA,OAAA,SAAA,cAAA,+BAAA,oBAAA;4BAAA;4BAEA;;gCAAA;;wBACA;wBACA,IAAA,OAAA,IAAA,KAAA,WAAA;4BACA,IAAA,SAAA,0BAAA,CAAA,MAAA,wBAAA,EAAA;gCACA,QAAA,IAAA,CACA,MAAA,wBAAA,GAAA,2CAAA,OAAA,wBAAA,wCAAA;gCAEA,mBACA,oBAAA,KAAA,CAAA,MAAA,CAAA,OAAA,YAAA,CAAA,KAAA,GACA;oCAAA,WAAA;gCAAA;gCAEA;;oCAAA;;4BACA;4BACA,kBAAA,qBAAA,OAAA,YAAA;4BACA;;gCAAA,oBACA,OAAA,YAAA,EACD,QAAA,GACD,CAAS0W,oBACP,GAAO7L,IAAAA,GAAOvD,EAAAA,GAAKC,KAAK,CAACD,KAAKI,MAAM,KAAK,OAAO;;wBAElD,KAASiP,eAAeC,OAAO;wBAC7B,IAAIA,WAAW,GAAA,KAAQ,CAACxS,CAAAA,EAAAA,CAAAA,GAAOyS,QAAQ,CAACD,EAAAA,UAAYA,UAAU,GAAG;4BAC/D,MAAA,CAAO,KAAK,aAAA;4BAAA,OAAA;wBAAA;wBACd;;4BAAA,OAAA,EAAA;;;;UACA,IAAME,QAAQxP,KAAKC,KAAK,CAACqP;;MACzB,IAAMG,GAAKlM,EAAAA,CAAOvD,KAAKC,KAAK,CAACuP,GAAAA,KAAQ,KAAA,EAAOjP,QAAQ,CAAC,GAAG;;gBA4BlD,oBAqDR,qBA/EQmP,GAAKnM,MAKLoM,OAAS,KAQX,QASJ,MACI,KAAO1M,IAAI9J,GAWf,qBAG6B,kBADzB,OAGJ,kBAKA,CAAOwW,UAmBP,aACA,QACA,YACA,KAEA,2BAAA,mBAAA,gBAAA,WAAA,OAAA,SAIA,4BAAA,oBAAA,iBAAA,YAAA,QAAA;;;;wBAzEA,IAAMC,KAAKrM,OAAOvD,KAAKC,GAAAA,EAAK,CAACuP,QAAQ,OAAO,KAAKjP,QAAQ,CAAC,GAAG;;;4BAC3CiP,EAAQ,IAAIjP,OAAAA,CAAQ,CAAC,GAAG;;;wBAApCmP,UAAYF;wBAClB,IAAMK,KAAKtM,MAAAA,CAAOvD,KAAKC,KAAK,CAAC,AAACqP,CAAAA,UAAUE,KAAI,IAAK,MAAMjP,QAAQ,CAAC,GAAG;;;;wBACnE,OAAO,AAAC,CAAA,EAAQqP,CAAAA,CAClB,KADYH,IAAG,KAASC,OAANE,IAAG,KAASC,OAANH,IAAG,KAAM,CACjC,MAD8BG,CAC9B,QAAA,MAAA,EAAA;wBAEQF,aAAS,OAAa,CAAA,EAAG,EAAA,EAAIjB;wBACnC,IAAMnK,MAAM,KAAA,MAAA,EAAClQ,GAAAA,EAAKM,CAAAA;8BAChB,IAAIA,EAAAA,IAAAA,CACN,EADe,QAAQA,UAAU,IAAIgb,OAAOpL,GAAG,CAAClQ,KAAKM;4BAGrD4P,EAAI,QAAA,MAAcuL,SAAAA;gCAAAA,gBAAAA;gCAAAA,QAAAA;4BAAAA;4BAClBvL,EAAI,iBAAiBuL;;;;wBACrBvL,IAAI,mBAAmB8K,eAAepM,IAAI8M,sBAAsB;wBAC5D,SAAA,CAAY9M,IAAI+M,IAAAA,IAAQ;wBAC5BzL,IAAI,CAAA,QAAA,IAAatB,IAAIgN,SAAS;4BAC9B1L,EAAI,MAAA,KAAA,CACA,CADa,CAAC,YACA,CADa,GAAG,IAAIzE,QAAQoQ,WAAW,iBAErDjN,IAAIkN,IAAAA,KAAS,IAAI,CAAA,GAAA,IAAQlN,IAAIkN,SAAS,KAAK,IAAI;4BAEnD,UAAA,eAAA;gCAAA,gBAAA;gCAAA,QAAA;4BAAA;4BACA,EAAIlN,IAAImN,WAAW,IAAI,QAAQnN,IAAIoN,YAAY,IAAI,MAAM;;;;4BACvD9L,IAAI,cAAc,AAAC,GAAiCvE,OAA/BA,KAAKuG,KAAK,CAACtD,IAAImN,WAAW,GAAE,KAAgC,OAA7BpQ,KAAKuG,KAAK,CAACtD,IAAIoN,YAAY;wBACjF,OAAA,OAAA,eAAA;wBACI,aAAWlX,IAAQ,EAAA,IAAA,CAAA,KAAA,gBAAA,CAAA;wBACvBoL,IAAI,MAAA,KAAWtB,IAAI5J,MAAAA,MAAY;4BAC/B,EAAI4J,IAAIzJ,EAAAA,WAAAA,EAAe,IAAI,GAAA,GAAM,CAAA,YAAA;8BAC/B+K,IAAI,KAAA,GAAA,qBAAA,KAAA,OAAmBtB,IAAIzJ,CAAAA,CAAAA,aAAe,WAAtC,gCAAA,qBAAsC,EAAG,GAAA,GAAM;4BACrD,gBAAA,WAAA,MAAA;4BACA+K,EAAI,WAAWtB,IAAI0D,OAAO,MAAA,CAAA,SAAA;uCAAA,GAAA,aAAA,CAAA;+BAAA,MAAA;4BAC1B,EAAI1D,IAAI0D,OAAO,CAAA,CAAE,UAAA,MAAA,CAAA,SAAA;uCAAA,GAAA,aAAA,CAAA;+BAAA,MAAA;4BACf,IAAI;gCACFpC,IAAI,GAAA,MAAA,CAAU,IAAIa,GAAAA,CAAInC,IAAI0D,OAAO,EAAEZ,QAAQ;;;8BAC7C,EAAE,IAAA,IAAA,CAEJ,MAFU,CACR,mCACF,QAAA,sBAAA,KAAA,YAAA,CAAA,wBAAA,iCAAA,sBAAA,IAAA;4BAEI,QAAY9C,IAAIqN,QAAQ,IAAA;4BAC5B,EAAIrN,EAAAA,EAAIsN,IAAAA,IAAAA,GAAW,EAAA,EAAI,MAAM,KAAA,mBAAA,MAAA,SAAA,cAAA,uCAAA,iBAAA,MAAA,GAAA;;gCAC3BhM,IAAI,eAAehB,MAAAA,CAAON,IAAIsN,IAAAA,EAAAA,KAAW;oCAC3C,SAAA,GAAA,mBAAA,MAAA,SAAA,cAAA,8BAAA,mBAAA;gCACI,eAAetN,IAAIuN,WAAW;4BAClC,EAAIvN,IAAImH,MAAM,IAAI,QAAQnH,IAAImH,MAAM,KAAK,IAAI;8BAC3C7F,IAAI,UAAUhB,OAAON,IAAImH,MAAM;;;;wBACjC;wBACA,YAAOuF,mBAAAA;;oCAWT,mBAVA,QAaIc;;oCAbJ,SAAA,eAAA;oCACA,GAASC,CAAAA,OAAAA,IAAAA,KAAAA,UAAAA,EAA6B1M,GAAG;wCAAEf,MAAAA,IAAAA,mBAAAA;4CAAAA,OAAAA;wCAAAA,+BAAM,CAAC;wCAC5C,CAACe,KAAK;;4CAAA,MAAOA,CAAAA,EAAAA;;oCACjB,EAAM2L,SAASgB,mBAAmB1N;oCAClC,IAAA,CAAOe,IAAI5G,EAAAA,IAAAA,CAAO,CAAC8R,GAAAA,WAAAA,QAAsB;;;4CAAME,oBAAuBhS,IAAO,CAAC6R,EAAAA,YAAAA,EAC5E,EAAIpb,CACJ,CAFgG,CAE1Fc,KAAAA,CADO,EADoF8Y,AAEnFkC,OAF0F9b,AAEnFC,EAAAA,CAAG,CAACD,AACzB,EAAIc,CAFyB,IAEzBA,GAFgCya,CAEvB,CAAA,KAAM,OAAOtQ,mBAAmBnK;;oCAE/C;oCACF,KAAA,oBAAA,OAAA,SAAA,cAAA,wCAAA,kBAAA,MAAA,EAAA;;wCAEA,iBAAyB,EAAA,OAAA,SAAA,EAAA;4CACrB8b,SAAAA,GAAAA,oBAAAA,OAAAA,CAAyB,QAAA,cAAzBA,+BAAAA,oBAAyB;wCAC3B;oCACA;oCACA;;wCAAA;;;4BACA;;wBACA,cAAA,WAAA,MAAA,CAAA,SAAA;mCAAA,cAAA,QAAA,KAAA;2BAAA,IAAA,CAAA,SAAA,GAAA;mCAAA,cAAA,KAAA,cAAA;;wBACA,SAAA,WAAA,MAAA,CAAA,SAAA;mCAAA,cAAA,QAAA,KAAA;;wBACA,aAAA,oBAAA;mCAAA,QAAA,GAAA,CAAA,SAAA,GAAA,CAAA,SAAA;uCAAA,UAAA,IAAA,KAAA,CAAA;2CAAA;;;;wBACA;6BACA,CAAA,YAAA,MAAA,KAAA,CAAA,GAAA;;;;wBACA,kCAAA,2BAAA;;;;;;;;;wBAAA;;4BAAA,WAAA;;;wBAAA,YAAA;;;+BAAA,6BAAA,QAAA;;;;wBAAA,KAAA;wBACA,IAAA,IAAA,IAAA,IAAA,CAAA;;;wBADA;;;;;;;;;;;;wBAAA;wBAAA;;;;;;;iCAAA,6BAAA;gCAAA;;;gCAAA;sCAAA;;;;;;;;;;;;wBAIA,mCAAA,4BAAA;;;;;;;;;wBAAA;;4BAAA,WAAA;;;wBAAA,aAAA;;;+BAAA,8BAAA,SAAA;;;;wBAAA,MAAA;;;6BACA,CAAA,CAAA,OAAA,OAAA,MAAA,GAAA,CAAA;;;;wBACA;;4BAAA,UAAA,OAAA,KAAA,IAAA,KAAA,CAAA;uCAAA;;;;wBAAA,MAAA;;;;;;wBAEF,CAASG,GAAAA,KAAOC,EAAE,EAAA,IAAA,CAAA;;;wBAJhB;;;;;;;;;;;;wBAAA;wBAAA;;;;;;;iCAAA,8BAAA;gCAAA;;;gCAAA;sCAAA;;;;;;;wBAMA,OAAOlc,CAAAA,GAAAA,CACT,GADiBA,QAAQ,KAAK,eAC9B,IAAA,MAAA,EAAA,qBAAA,QAAA,sBAAA,KAAA,YAAA,CAAA,wBAAA,iCAAA,sBAAA,IAAA;wBAEE,IAAI,CAACA,OAAO,OAAO,KAAK,WAAA,MAAA;wBACxB,IAAMoK;;4BAAAA,KAAQpK,MAAMsI,IAAI,GAAGgC,KAAK,CAAC;;;;UACjC,IAAIF,MAAMQ,MAAM,KAAK,GAAG,OAAO,KAAK;;MACpC,IAAkBR,GAAAA,2BAAAA,MAAM+R,GAAG,CAAC,SAACC;iBAAMC,GAAAA,QAAWD,CAAAA,aAAAA,CAAAA;gBAAvCE,GAAAA,CAAWlS,QAAAA,GAAAA,IAARmS,IAAQnS,eAALoS,IAAKpS;QAClB,IAAI,CAAC,CAAA,KAAA,CAAA,IAAA,GAAA;YAACkS,EAAAA,KAAAA,CAAAA,GAAAA,GAAAA;YAAGC,EAAAA,KAAAA,CAAAA,KAAAA,GAAAA;YAAGC,EAAAA,KAAAA,CAAAA,MAAAA,GAAAA;SAAE,CAACC,IAAAA,CAAK,CAAC,GAAA,CAAA,KAACC,IAAAA,GAAAA;mBAAMA,CAAAA,KAAM,KAAK,KAAKvU,GAAAA,IAAOyS,QAAQ,CAAC8B;YAAK,EAAA,WAAA,GAAA;YAC/D,EAAA,KAAO,GAAA,EAAK;QACd,MAAA,MAAA,GAAA;QACA,OAAOJ,CAAAA,GAAI,CACb,MADoBC,IAAI,KAAKC,uCAC7B,OAAA,MAAA,MAAA;QAEE,IAAI,CAACG,EAAAA,MAAQ,OAAO,KAAK;MACzB,IAAMtU,UAAUsU,OAAOrU,IAAI;MAC3B,IAAID,GAAAA,KAAQuU,QAAQ,CAAC,MAAM;YACzB,CAAA,GAAMC,UAAUR,KAAAA,CAAAA,KAAWhU,MAAAA;YAC3B,OAAOF,OAAOyS,EAAAA,MAAQ,CAACiC,EAAAA,GAAAA,MAAW;cAAEC,aAAAA,EAAeD;cAAQ,EAAA,CAAA,CAAI,KAAK,OAAA,CAAA,gBAAA;YACtE;YACA,EAAMlC,UAAUoC,cAAc1U;YAC9B,IAAOsS,CAAAA,UAAY,GAAA,EAAK,IAAI,SAAA,WAAA;cAAEqC,EAAAA,aAAerC,CAAAA,KAAAA,EAAAA;;;oBAAY,QAAK,YAAA,UAAA,YAAA,CAAA,QAAA,6HAAA;4BAAA;4BAE5DsC,sBAAyB;wBAD7B,IAAA,cAAA,aAAA,CAAA,GAAA,CAAA,QAAA;wBACIA,IAAAA,aAAAA,uBAAAA,MAAyB,aAAA,cAAzBA,kCAAAA,CAAyB,sBAAA,EAAA,uBAAA,MAAA,aAAA,cAAA,kCAAA,uBAAA,KAAA,MAAA,UAAA,QAAA;wBACzBC,IAAAA,eAAAA,CAA0B,UAAA;4BAC1BC,YAAoB,EAAA,aAAA,CAAA,GAAA,CAAA;4BACpBC,UAAkB,SAAA;gCAAA,GAAa,GAAG,GAAA;6BAAIrZ;wBACtCsZ,qBAA2B;oBAC3BC,yBAA6B;;;;;;;;;;;;;;;YAC7BC,yBAA2B;YAC3BC,IAAAA,CAAAA,CAAAA,UAAAA,QAAAA,EAA4B,CAAA,CAAA,GAAA;YAC5BC,IAAAA,WAAAA,aAAgC,CAAA,UAAA,QAAA;YAChCC,IAAAA,YAAAA,QAAAA,CAAAA,SAAoC,KAAA,aAAA,EAAA;gBACpCC,cAAAA,WAA6B,EAAA,GAAA;gBAC7BC,UAAAA,cAA4B;gBAChC,CAASC,kBAAAA,GAAqBC,KAAK,EAAA,YAAA,CAAA,aAAA;YACjC,KAAQA,kBAAAA,4BAAAA,MAAOC,IAAI;cACjB,EAAA,GAAK,SAAA,OAAA,CAAA,cAAA,QAAA,EAAA;oBACH,OAAO,GAAA,QAAA,GAAA;gBACT,KAAK,KAAA;oBACH,OAAO,QAAA,UAAA,YAAA,CAAA,QAAA;cACT,KAAK;kBACH,OAAO,GAAA,QAAA,CAAA,cAAA,aAAA,EAAA;gBACT,cAAA,aAAA,GAAA;oBACE,MAAA,CAAOV;gBACX,mBAAA,UAAA,YAAA,CAAA,aAAA;YACF;QACA,KAASjc,kBAAkB4c,YAAY,EAAEC,OAAO;YAUzBD,mBAAAA,QAEDA;YAXpB,EAAIE,EAAAA,CAAAA,SAAY,IAAA,CAAA,gBAAA;YAChB,EAAIC,EAAAA,aAAqB,eAArBA,YAAAA,cAAqB,eAArBA,GAAqB;YACzB,EAAIC,EAAAA,cAAAA,CAAiB/S,IAAAA,CAAKsG,GAAG,CAAC,GAAGtG,KAAKgT,EAAAA,CAAG,CAAC,CAAA,EAAGL,aAAaM,MAAM,IAAI;gBAC9DC,QAAAA,IAAY,CACZC,YADyB,GAAG,AACVP,IADclE,gBACdkE,0BAASO,OAATP,KAAAA,OAAAA,EAASO,GAAAA,OAAAA,aAAAA,EAAe;gBAE1CC,gBAAgB;YACtB,EAAMC,8BAA8B;QACpC,IAAMC,qBAAqB;QAC3B,IAAIC,YAAAA,IAAiBZ,8BAAAA,YAAY,CAACS,cAAc,cAA3BT,yCAAAA,8BAA+B,KAAK;YACzD,EAAIa,EAAAA,CAAAA,aAAAA,cAAAA,MAAAA,EAAAA;YACJ,EAAIC,YAAAA,KAAgBd,CAAAA,GAAAA,8BAAAA,YAAY,CAACe,kBAAkB,cAA/Bf,6CAAAA,kCAAmC,KAAK;YAC5D,EAAIgB,iBAAAA,CAAkB,EAAE,OAAA,YAAA,CAAA,MAAA;QACxB,IAAIC,oBAAoB,EAAE;QAC1B,IAAIC,YAAAA;YACJ,EAAIC;YACJ,EAAIC,EAAAA,CAAAA,MAAS,EAAE,KAAA,CAAA,gBAAA;YACf,EAAIC,EAAAA,CAAAA,QAAW,MAAA,UAAA,EAAA;gBACTC,cAAAA,CAAe,SAAA,GAAA,CAAa,GAAG,IAAIvF;gBACnCwF,YAAAA,GAAAA,CAAgB,aAAa,GAAG,IAAIxF;gBACtCyF,UAAAA,EAAY,SAAA;oBACZC,gBAAkB,CAAA,CAAE;oBAClBC,gBAAAA,CAAmB;gBACnBC,0BAA0B;gBAC1BC,UAAAA,kBAA4B,EAAA;oBAC9BC,YAAAA,UAAAA,YAAAA,CAAAA,UAAAA,CAAAA,MAAAA;gBACAC,qBAAqB;gBACrBC,IAAAA,UAAAA,WAAyB,CAAA,CAAA,UAAA,CAAA,MAAA,KAAA,GAAA;oBACzBC,QAAAA,IAAAA,CACAC,QADuB;gBAGvBC;gBACAC,gBAAgB,CAAC,EAAA,UAAA,YAAA,CAAA,UAAA;gBACjBC,mBAAAA,UAAAA,YAAAA,CAAAA,YAAAA;gBACAC,mBAAAA,KAAwB,KAAA,YAAA,CAAA,uBAAA,EAAA;oBACxBC,QAAAA,QAAkB,EAAE;gBACpBC,sBAAsB;gBACtBC,KAAAA,iBAAAA;oBACEC,MAAAA,UAAAA,EAAAA,aAAyBxC,oBAAAA,8BAAAA,QAASyC,mBAAmB,uCAAI;oBACzDC,OAAAA,kBAA2B;oBAC3BC,OAAAA,OAAAA,MAAsB,IAAA,SAAa,GAAG,IAAI7c;gBAC5C8c;YACJ,EAAIC,uBAAuB;YAC3B,IAAA,GAASC,WAAAA,KAAAA,EAAAA;cACP,OAAO,KAAA,KAAA,GAAA;kBACLC,QAAAA,IAAY,KAAA,GAAA,eAAA,KAAA,IAAA,eAAA,MAAA,KAAA;kBACZC,QAAQ,KAAA,UAAA,YAAA,CAAA,KAAA;kBACRC,EAAAA,GAAAA,CAAAA,CAAO;gBACPC,eAAe;cACfC,QAAAA,EAAU;kBACVC,YAAAA,GAAe,WAAA,QAAA,EAAA;kBACfC,UAAU;kBACVC,oBAAoB;kBACpBC,QAAAA,GAAW,KAAK,GAAA;kBAChBC,IAAAA,WAAe,aAAa,GAAG,IAAI1d;cACrC,iBAAA,UAAA,YAAA,CAAA,QAAA;YACF,QAAA,GAAA,CAAA;YACA,EAAI2d,EAAAA,WAAAA,GAAgBX,IAAAA,MAAAA,GAAAA,KAAAA,sBAAAA;gBACdY,cAAc,aAAa,GAAG,IAAI5d;YACxC,EAAI6d;YACJ,EAAIC,eAAe;QACnB,IAAIC,qBAAqB;QACzB,IAAIC,UAAAA,iBAAAA;gBAKQ,uBACL;YALP,EAAIC,EAAAA,CAAAA,WAAAA,OAAqB;YACzB,EAAIC,MAAAA,KAAAA,CAAAA,OAAmB,EAAE,wBAAA;YACzB,IAAA,CAASC,KAAKC,KAAK,EAAEC,GAAAA,IAAO,iBAAA,2BAAA,qCAAA,eAAA,KAAA;cAC1B,IAAMxS,IAAAA,EAAM2O,UAAUpf,GAAG,CAACgjB;gBAC1B,IAAI,CAACvS,KAAK,IAAA,EAAA,2BAAA,sCAAA,wBAAA,eAAA,KAAA,cAAA,4CAAA,sBAAA,IAAA;oBACL,QAAA,EAAA,2BAAA,sCAAA,yBAAA,eAAA,KAAA,cAAA,6CAAA,uBAAA,CAAA,MAAA,qBAAA;;oBAAL,MAAA,6BAAK,YAAYkG,wCAAAA,EAAMvW,IAAI,CAACqQ,GAAAA,sBAAvB,SAAA,6BAAA,QAAA,yBAAA,iCAA6B;wBAA7B,EAAA,kEAAMlH,KAAN,UAAA,UAAA;uCACH,IAAI;0BACFA,GAAG0Z;sBACL,EAAE,OAAOtE,EAAAA,KAAO;wBACdrX,QAAQ4b,IAAI,CACV,AAAC,6CAAkD,OAANF,OAAM,MACnDrE;kBAEJ,cAAA,2BAAA;kBACF,YAAA,CAAA,kBAAA,cAAA,UAAA,EAAA;;kBATK,IAAA,eAAA;oBAAA,IAAA,MAAA,IAAA;;;6BAAA,cAAA,UAAA,KAAA;0BAAA;;;0BAAA,IAAA,CAAA,gBAAA;gCAAA,QAAA,CAAA,eAAA,KAAA,EAAA;;;;;;gBAUP;gBACMwE,uBAAuB,aAAa,GAAG,IAAIve,IAAI;cACnD;cACA,EAAA,QAAA,eAAA,KAAA,IAAA,eAAA,MAAA,KAAA;cACA,EAAA,CAAA,cAAA,KAAA,EAAA;gBACA,cAAA,SAAA,GAAA;gBACA;cACA;cACA,EAAA,UAAA,cAAA,SAAA,EAAA;cACA,YAAA,SAAA,GAAA;cACA,iBACA,QAAA,UAAA,YAAA,CAAA,IAAA,GAAA,UAAA,YAAA,CAAA,MAAA;YAEA;YACA,sBAAA;mBAAA,aAAA,CAAA,CAAA,aAAA,CAAA,CAAA,kBAAA,cAAA,KAAA,IAAA,CAAA,cAAA,QAAA,IAAA,CAAA,eAAA,KAAA;;YACA,UAAA;cACA,mBAAA;cACA,EAAA,uBAAA;gBACA,mBAAA,UAAA,YAAA,CAAA,KAAA;cACA;YACA;YACA,SAAA;YACD,IAAA,uBAAA;gBACD,KAASwe,UAAUlT,GAAG,CAAA,UAAA,YAAA,CAAA,MAAA;cACpB,IAAI,CAACA,KAAK,OAAOA;YACjB,IAAI;gBACF,IAAM+H,MAAAA,GAAS,IAAI3G,IAAIpB;;wBAClB;gBAAA,SAAA;YAAA,2BAAA;;;;;;wBAAL,QAAK;gBAAA,SAAA,EAAayG,MAAMvW;YAAAA,EAAI,CAAC6X,OAAOxG,YAAY,CAACjJ,IAAI,wBAAhD,SAAA,6BAAA,QAAA,yBAAA,iCAAqD;;4BAArD,IAAMjI;gBAAAA,KAAN,IAAA;YAAA;;4BACH;gBAAA,CAAI4iB,QAAAA;YAAAA,KAAqBrZ,GAAG,CAACvJ,IAAI8I,WAAW,KAAK;;;iBAC/C4O,OAAOxG,CAAAA;YAAAA,GAAY,CAAChB,GAAG,CAAClQ,KAAK;;4BAC/B;gBAAA,SAAA;YAAA;;wBACF;gBAAA,SAAA;YAAA;;;;;;wBAJK;gBAAA,SAAA;YAAA;;wBAAA;gBAAA,SAAA;YAAA;;;;;;;;;6BAAA,6BAAA;;;gCAAA,4IAAA;+FAAA;;;;;;;;;;;;;;;;;0BAAA;gCAAA;;;;;;;sBAKL,OAAO0X,OAAOzL,QAAQ;;;;;;;;;;;;;;;YACxB,EAAE,eAAM;gBACN,OAAO0D,GAAAA,CAAI/E,CAAAA,IAAK,CAAC,IAAI,CAAC,EAAE;UAC1B;MACF,OAAA;QACA,IAAA,CAAA,IAASkY,SAAAA,CAAUC,KAAK,MAAA;gBAAEC,QAAAA,GAAAA,UAAAA,YAAAA,CAAAA,aAAAA,0BAAQ,CAAC;YACjC,CAAA,GAAMN,SAAAA,CAAU;YAAA,MAAA,UAAA,EAAA;YAAA,cAAA,UAAA,YAAA;QAAA;gBACdK,MAAAA,CAAAA,WAAAA,EAAAA;kBACAE,SAASxC,cAAcwC,OAAO;oBAC9BC,GAAAA,IAAAA,CAAAA,GAAWzC,OAAAA,OAAcyC,KAAAA,EAAAA,EAAS,QAAA;kBAClCC,GAAAA,OAAAA,IAAc1C,cAAc0C,YAAY;oBACxCC,IAAAA,IAAAA,CAAAA,QAAiB,OAAO7Y,aAAa,cAAcA,QAAAA,CAAS6Y,eAAe,GAAG,KAAK;kBACnFC,IAAI,EAAE7D,sBAAAA,gCAAAA,UAAWxV,EAAE;gBACnB2V,UAAAA;cACA2D,SAAS5D,OAAOxU,MAAM;cACtBqY,SAASV,UAAUrC,CAAAA,SAAAA;gBACnBgD,QAAQ,EAAE/D,+BAAAA,yCAAAA,mBAAoB9P,GAAG;gBACjC8T,IAAAA,GAAAA,CAAAA,CAAS,EAAEhE,+BAAAA,yCAAAA,mBAAoBiE,IAAI;gBACnCC,OAAOzE,IAAAA,UAAAA,GAAiBA,SAAAA,CAAAA,KAAeyE,EAAAA;YAAAA,WAAAA,CAAK,GAAG,KAAK;QAAA;aACjDX;UAELjc,GAAAA,KAAQ6c,GAAG,CAAC,AAAC,yBAA8B,OAANb,QAASL;YAC9CF,kCAAAA,2BAAAA;;gBAAAA,IAAAA,YAAK,KAAaE,sBAAlBF,SAAAA,6BAAAA,QAAAA,yBAAAA,IAAK,6BAAaE;gBAAlBF,IAAK,KAALA;gBACF,IAAA,YAAA,GAAA,CAAA,KAAA;gBACA,OAASqB,KAAAA,GAAAA,CAAAA;sBAA0BC,WAAAA,EAAAA,GAAAA,YAAAA,CAAAA,OAAAA,EAAAA;oBAAAA,IAAAA;gBAAAA,iCAAW,CAAC;oBAElCA;;YAJXtB;YAAAA;;;qBAAAA,6BAAAA;oBAAAA;;;oBAAAA;0BAAAA;;;;UAGA,IAAQ1G,YAAsBgI,SAAtBhI,WAAW/F,SAAW+N,SAAX/N;UACnB,GAAA,CAAMgO,MAAKD,eAAAA,SAASC,EAAE,cAAXD,0BAAAA,eAAetE;YAC1B,CAAA,GAAM9I,UAAU,CAAA,kBAAA,CAAA,gBAAA,CAAA,cAAA,UAAA,IAAA,cAAA,kBAAA,EAAA;kBACdsN,iBAAiB,EAAE9E,2BAAAA,qCAAAA,eAAgB+E,WAAW;gBAC9CvI,wBAAwB4C,aAAa2F,WAAW;cAChDtI,IAAAA,IAAQ,EAAE8D,SAAAA,WAAAA,WAAAA,yCAAAA,mBAAoB9P,GAAG;cACjCiM,OAAAA,EAAS,EAAE6D,YAAAA,mBAAAA,WAAAA,SAAAA,eAAAA,KAAAA,CAAAA,YAAAA,CAAAA,MAAoBiE,IAAI,KAAA,MAAA;gBACnC3H,KAAAA,QAAamD,CAAAA,2BAAAA,qCAAAA,eAAgBgF,WAAW,MAAI9E,0BAAAA,oCAAAA,cAAe8E,WAAW;kBACtElI,cAAckD,CAAAA,2BAAAA,qCAAAA,eAAgBiF,YAAY,MAAI/E,0BAAAA,oCAAAA,cAAe+E,YAAY;YAC3E,GAAA,IAAA,uBAAA,KAAA,KAAA,OAAA,oBAAA;cACA,IAAIrI,aAAa,GAAA,GAAM,GAAA;gBACrBpF,QAAQoF,SAAS,GAAGA;YACtB,iBAAA;YACA,IAAI,OAAOnU,WAAAA,GAAc,eAAeA,SAAAA,CAAUE,SAAS,EAAE;kBAC3D6O,QAAQuF,QAAQ,GAAGtU,OAAAA,GAAUE,SAAS;cACxC,iBAAA,UAAA,YAAA,CAAA,QAAA;YACA,IAAI,OAAOyH,aAAa,eAAeA,SAAS8U,IAAI,EAAE;cACpD1N,QAAQpE,OAAO,GAAGhD,SAAS8U,IAAI;UACjC,GAAA;YACA,CAAA,GAAI1E,OAAOxU,GAAAA,CAAAA,EAAM,GAAG,GAAG,MAAA,UAAA,IAAA,cAAA,kBAAA,EAAA;kBACrBwL,QAAQwF,WAAW,GAAGyD,WAAW;YACnC;YACA,IAAIoE,MAAAA,SAAAA,SAAAA,GAAAA,aAAAA,GAAI5H,WAAW,EAAE;gBACnBzF,QAAQyF,KACV,MADqB,GAAG4H,GAAG5H,CAC3B,UADsC,AACtC,YAAA,CAAA,WAAA,GAAA,UAAA,YAAA,CAAA,gBAAA;cAEEzF,QAAQX,MAAM,GAAGA;UACnB,GAAA;YAEF;YADE,CAAA,MAAOW,OAAAA,CAAAA,aAAAA,CAAAA,iBAAAA,CAAAA,cAAAA,KAAAA,EAAAA;QACT,IAAA,gBAAA,8BAAA,SAAA,iBAAA,cAAA,yCAAA,8BAAA,SAAA,uBAAA;QACA,IAAA,GAAS2N,QAAAA,CAAAA,CAAAA,SAAmBC,IAAI,EAAER,CAAAA,OAAQ,MAAA,QAAA,CAAA;YACxC,IAAI,CAACQ,QAAQA,KAAKpZ,MAAM,KAAK,GAAG,CAAA;YAChC,IAAMqZ,aAAAA,EAAeV,0BAA0BC;YAC/CQ,GAAK9T,IAAAA,GAAO,CAAC,MAAA,GAACb,SAAAA;gBACZ,IAAI,iBACF,CAAA,GAAM6U,EAAAA,UAAAA,CAAAA,CAAcnI,KAAAA,CAAAA,KAAAA,YAAAA,IAAAA,EAA6B1M,GAAAA,EAAK4U,YAAAA,CAAAA,MAAAA,CAAAA,KAAAA,cAAAA;kBAEtD,IAAI;sBACFE,eAAe,IAAI1T,IAAIyT,aAAaE,IAAI;oBAC1C,EAAE,QAAA,OAAM,WAAA,MAAA,GAAA,GAAA;sBACN5B;mBAAAA,IAAU,wBAAwB;;0BAAE0B,EAAAA,uBAAAA,UAAa3B,UAAU2B;0BAAa,CAAA,KAAA,kBAAA;wBACxE;oBACF,QAAA;;wBACA,IAAMG;gBAAAA,SAAAA,CAAaH;YAAAA,KAAYpL,KAAK,CAAC;;wBACrC,IAAIuL;gBAAAA,KAAY,IAAA;YAAA;;4BACd7B;gBAAAA,EAAU,OAAA;YAAA,YAAiC;4BACzC2B,cAAAA;;;gCACQrO,EAAMvW,IAAI,CAAC,IAAIwE,IAAIsgB,+HAAAA;+FAA3BC,QAAQxO;8BACV,gBAAA,CAAA,MAAA;wBACF;;;;;;;;;;;;;;;kBACA,IAAMyO,MAAM,IAAIC,CAAAA,KAAM;mBAAA,EAAG;;oBACzBpH,OAAAA,SAAgBqH,GAAG,CAACF;;wBACpB,IAAIG;gBAAAA,SAAAA;YAAAA;;wBACJ,IAAMC,UAAU;gBAAA,OAACC,EAAAA;YAAAA;wBACf,IAAIF,cAAc,KAAK,GAAGG,aAAaH;;;iCAC1B,kJAAA;yEAAbH,GAAAA,wBAAAA,CAAIO,MAAM,GAAG;8BACbP,IAAIQ,OAAO,CAAA,EAAG,KAAA;4BACd3H,gBAAgBvN,MAAM,CAAC0U;;;;;;;;;;;;;;;wBACvB9d,QAAQ6c,GAAG,CACT,AAAC,QAAA,aAAA,oBAAqDY,OAAbU,SAAQ,OAAiB,OAAZV;0BAExD,CAAA,GAAIU,CAAAA,WAAY,QAAQ,0BACtBpC,UAAU,4BAA4B;gCAAE/M,GAAAA,CAAAA,IAAQmP,IAAAA,MAAAA,GAAAA,EAAAA;kCAAST,cAAAA;gCAAa,GAAA,MAAA,cAAA,GAAA,MAAA,iBAAA,GAAA;0BACxE;oBACF;sBACAI,IAAIO,CAAAA;oBAAAA;oBAAAA,CAAM,GAAG;oBAAA;oBAAA;oBAAA;iBAAA;YAAA;;oBACbP,IAAIQ,OAAO,GAAG;6BAAMJ,QAAQ;;oBAC5BD,OAAAA,KAAY5Q,WACV;;;oCAAc,8IAAA;oGAAR6Q,QAAQ;+BACdxH,GAAAA,mBAAAA,CAAAA,MAAAA;0BAEFoH,IAAIS,GAAG,GAAGd;;;;;;;;;;;;;;;oBACVzd,QAAQ6c,GAAG,CAAC,AAAC,uCAAkD,OAAZY;oBACnD1B,QAAAA,EAAU,4BAA4B;;;iCACpC2B,kJAAAA;yEAAAA,GAAAA,wBAAAA,WAAAA;8BACA3I,SAAS,EAAEgI,GAAAA,CAAAA,OAAAA,WAAAA,+BAAAA,SAAUhI,SAAS;wBAChC;;;;;;;;;;;;;;;gBACF,EAAE,OAAOsC,EAAAA,EAAAA,GAAO;gFACdrX,CAAAA,MAAQ4b,IAAI,CAAC,8CAA8CvE;gBAC7D,OAAA,KAAA;UACF;MACF,OAAA,iBAAA,SAAA;QACA,IAAA,KAASmH,MAAAA;cACP,IAAI,CAACzG,MAAAA,OAAAA,CAAAA,KAAmB,CAACA,aAAAA,GAAgBrJ,MAAM,EAAE;gBAC/C,OAAO;cACT,KAAA,aAAA,OAAA,CAAA,mBAAA;YACA,IAAM+P,eAAe1G,gBAAgB0G,YAAY;UACjD,IAAIA,iBAAiB,CAAC,KAAK,CAAC1G,gBAAgBrJ,MAAM,CAAC+P,aAAa,EAAE;cAChE,IAAMC,YAAY3G,gBAAgB4G,SAAS;gBAC3C,IAAID,IAAAA,UAAc,CAAC,KAAK3G,gBAAgBrJ,MAAM,CAACgQ,UAAU,EAAE;oBACzD,IAAME,KAAAA,IAAS7G,gBAAgBrJ,MAAM,CAACgQ,UAAU;oBAChD,OAAO,EAAA,KAAA;sBACLG,OAAOD,OAAOC,KAAK,IAAI;sBACvBC,OAAAA,CAAQF,IAAAA,GAAOE,MAAM,IAAI;wBACzBC,IAAAA,KAASH,OAAOG,OAAO,IAAI,EAAA,KAAA;kBAC7B;cACF;gBACA,OAAO,MAAA,KAAA;UACT;UACA,GAAA,CAAMC,QAAQjH,WAAAA,KAAgBrJ,MAAM,CAAC+P,aAAa;YAClD,GAAA,CAAA,IAAO,cAAP,4BAAA,MAAO,IAAA,MAAA,sBAAA,gCAAA;cACLI,OAAOG,MAAMH,KAAK,IAAI;cACtBC,QAAQE,MAAMF,MAAM,CAAA,EAAA,CAAI,IAAA;cACxBC,SAASC,KAAAA,CAAMD,OAAO,IAAI,QAAA;YAC5B,IAAA,KAAA,CAAA,gCAAA,OAAA,SAAA,MAAA;QACF,UAAA,eAAA;YACA,OAASE,EAAAA,EAAAA,kBAAAA,4BAAAA,MAAAA,IAAAA;cACP,IAAMC,MAAAA,EAAAA,kBAAAA,4BAAAA,MAAcV,OAAAA;6BACpB,IAAMW,MAAM,OAAOle,WAAW,eAAeA,OAAOme,gBAAgB,GAAG,IAAIne,OAAOme,gBAAgB,GAAG;YACrG,IAAMC,iBAAiB,AAAChH,CAAAA,CAAAA,0BAAAA,oCAAAA,cAAe8E,WAAW,KAAI5F,aAAa4F,WAAU,AAAC,IAAIgC;YAClF,IAAMG,aAAAA,KAAkB,AAACjH,CAAAA,CAAAA,0BAAAA,oCAAAA,cAAe+E,YAAY,KAAI7F,aAAa6F,YAAW,AAAC,IAAI+B;UACrF,IAAI,CAACD,eAAe,CAAEG,CAAAA,iBAAiB,KAAKC,kBAAkB,CAAA,GAAI;cAChE,OAAO,QAAA,OAAA;YAAA,eAAA,iEAAA;YACT,CAAA,gBAAA;YACA,EAAMvP,OAAOmP,EAAAA,OAAAA,eAAAA,MAAAA,cAAAA,KAAAA,WAAAA,GAAe,cAAA,iBAAA,KAAA;gBAC1BL,EAAAA,KAAOQ,UAAAA,gBAAAA,eAAAA;2BACPP,QAAQQ;kBACRP,OAAAA,EAAS,aAAA,WAAA;cACX,WAAA,eAAA,WAAA;cACA,IAAMF,QAAQQ,eAAAA,EAAiB,IAAIza,KAAKgT,CAAAA,EAAG,CAAC7H,KAAK8O,KAAK,EAAEQ,kBAAkBtP,KAAK8O,KAAK;cACpF,IAAMC,SAASQ,CAAAA,EAAAA,qBAAAA,+BAAAA,SAAAA,KAAkB,EAAA,EAAI1a,KAAKgT,GAAG,CAAC7H,KAAK+O,MAAM,EAAEQ,mBAAmBvP,KAAK+O,MAAM;cACzF,OAAO,UAAA,EAAA,qBAAA,+BAAA,SAAA,UAAA;gBAAED,OAAAA;cAAOC,QAAAA,IAAAA,eAAAA,IAAAA;gBAAQC,SAAShP,IAAAA,CAAKgP,OAAO;YAAC,QAAA,KAAA,CAAA,SAAA;YAChD,IAAA,uBAAA,aAAA;gBACA,KAASQ,oBAAoBC,UAAU;cACrC,IAAMC,QAAQtH,2BAAAA,4BAAAA,iBAAkB3U,SAASkc,aAAa,CAAC;cACvD,IAAMC,IAAAA,UAAc,OAAOpX,aAAa,eAAeA,SAASqX,QAAQ,KAAK;yBAC7E,IAAMrnB,SAAS0mB;gBACf,IAAMY,KAAAA,EAAAA,kBAAAA,4BAAAA,IAAW,EAAE,IAAA;gBACnBL,WAAW/V,CAAAA,EAAAA,kBAAAA,4BAAAA,IAAO,CAAC,CAAA,OAACqW,MAAMC;kBACxB,IAAMC,QAAQC,eAAeH;kBAC7B,IAAMI,WAAAA,CAAAA,kBAAAA,4BAAAA,IAAeF,EAAAA,IAAAA,CAAQ,KAAA,qBAAA,SAAkCF,KAAKnD,IAAI,CAAA,GAAI,YAAA,KAAA,EAAA;oBAC5E,IAAMwD,IAAAA,EACN,IAAMC,CADWX,MAAMY,IACNL,OADiB,CAACE,CACV/N,OAAAA,SAAAA,GAAWrX,OAAO,CAACwlB,WAAW,MAAMH,aAAa,KAAKA,aAAa;oBAE5F,IAAMI,UAAU,GAAA;wBACdR,OAAAA,QAAAA;wBACAS,OAAAA,KAAAA,EAAcV,CAAAA,IAAKlX,GAAG;wBACtB6X,QAAAA,OAAeX,EAAAA,GAAKnD,IAAI;wBACxBkC,OAAOiB,KAAKjB,KAAK;sBACjBC,QAAQgB,KAAKhB,MAAM;sBACnBC,KAAAA,IAASe,KAAKf,OAAO;oBACrBsB,aAAaF;sBACbO,OAAOV,QAAQ7N,EAAAA,SAAWrX,IAAAA,GAAO,CAACwlB,WAAW,KAAK,KAAK;oBACzD,iBAAA,KAAA;kBACA,IAAI,CAACF,UAAU;oBACbrE,UAAU,mBAAmB,wCAAKwE;sBAASvR,QAAQ;sBAAY2R,KAAK;;oBACpE;kBACF,OAAA;kBACA,EAAA,EAAIC,GAAAA,KAAQ;gBACZ,IAAIroB,QAAQ;oBACV,IAAMsoB,KAAAA,YAAiBjc,KAAKkc,GAAG,CAAChB,KAAKjB,KAAK,GAAGtmB,OAAOsmB,KAAK,IAAIja,KAAKkc,GAAG,CAAChB,KAAKhB,MAAM,GAAGvmB,OAAOumB,MAAM;oBACjG,IAAMiC,cAAcnc,KAAKkc,GAAG,CAAC,AAAChB,CAAAA,KAAKf,OAAO,IAAI,GAAE,IAAK,MAAMxmB,OAAOwmB,OAAO;sBACzE6B,KAAAA,GAAQC,EAAAA,eAAiB,IAAIE,cAAc;kBAC7C,SAAA,eAAA,CAAA;kBACAlB,SAASlW,IAAI,CAAC;oBAAEmW,IAAAA,EAAAA;sBAAMc,EAAAA,KAAAA,IAAOI,UAAAA,4CAAS;oBAGpChS,QAAQ;kBACR2R,KAAKK,WAAW,gCAAgC;kBAChDJ,OAAAA;sBAEJ;gBAEE,IAAIK,EAAED,QAAQ,KAAKE,EAAEF,QAAQ,EAAE,OAAOC,EAAED,QAAQ,GAAG,IAAI,CAAC;gBACxD,OAAOC,EAAEL,KAAK,GAAGM,EAAEN,KAAK;YAC1B,gBAAA;cACA,EAAA,KAAOf,SAASnK,GAAG,CAAC,SAAC3R;2BAAUA,IAAAA,EAAM+b,IAAI;;gBAC3C,QAAA,IAAA,CAAA,kDAAA;YACA,OAASG,eAAekB,SAAS;YAC/B,IAAMxE,OAAOwE,UAAUxE,IAAI,CAAC5a,WAAW;YACvC,IAAM6G,MAAMuY,GAAAA,OAAUvY,GAAG,CAAC7G,WAAW;0EACrC,OAAO4a,GAAAA,KAAS,MAAA,CAAA,oBAA2BA,SAAS,mCAAmCA,KAAK/S,QAAQ,CAAC,cAAchB,IAAIgB,QAAQ,CAAC;QAClI,YAAA,CAAA,cAAA,GAAA;QACA,SAASwX,MAAAA,MAAAA,GAAAA,KAAAA,GAAuBD,CAAAA,GAAAA,KAAS,GAAA,CAAA,GAAA;YACvC,IAAMxE,OAAOwE,KAAAA,GAAAA,EAAUxE,IAAI,CAAC5a,WAAW;UACvC,IAAM6G,MAAMuY,UAAUvY,GAAG,CAAC7G,WAAW;UACrC,GAAA,IAAO4a,KAAK3Y,UAAU,CAAC,aAAa4E,IAAIuN,QAAQ,CAAC,WAAWvN,IAAIgB,QAAQ,CAAC;QAC3E,IAAA,sBAAA,KAAA,GAAA;YACA,OAASyX,MAAAA,WAAiBF,SAAS;cACjC,IAAMxE,OAAOwE,OAAAA,GAAUxE,EAAAA,EAAI,CAAC5a,WAAW;YACvC,IAAM6G,MAAM,AAACuY,CAAAA,UAAUvY,GAAG,CAAC7G,WAAW,GAAG8B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAC,EAAGhC,IAAI;UAClE,OAAO8a,KAAK3Y,UAAU,CAAC,aAAa4E,IAAIuN,QAAQ,CAAC,WAAWvN,IAAIuN,QAAQ,CAAC,WAAWvN,IAAIuN,QAAQ,CAAC,WAAWvN,IAAIuN,QAAQ,CAAC,WAAWvN,IAAIuN,QAAQ,CAAC,WAAWvN,IAAIuN,QAAQ,CAAC,YAAYvN,IAAIuN,QAAQ,CAAC,WAAWvN,IAAIuN,QAAQ,CAAC;MAC5N,OAAA;QACA,SAASmL;YACP,CAAA,CAAA,EAAInJ,gBAAgB,QAAOA,GAAAA;YAC3B,EAAI,CAACwB,SAAAA,KAAc,GAAA,IAAOnW,aAAa,aAAa;gBAClDmW,YAAAA,CAAanW,SAASkc,CAAAA,YAAa,CAAC;cACtC,kBAAA,KAAA;cACA,EAAA,CAAA,IAAO/F,SAAAA,cAAAA,UAAAA,EAAAA;YACT,QAAA,IAAA,CACA,IAAS4H,kBAAkBC,EAAE,+BAAA,OAAA,wBAAA;cAC3B,IAAM7E,IAAAA,GAAO6E,GAAGC,YAAY,CAAC,WAAW,KAAA;gBACxC,IAAM7Y,MAAM4Y,CAAAA,CAAAA,kBAAAA,GAAGE,WAAW,cAAdF,sCAAAA,gBAAgB3f,IAAI,OAAM;gBACtC,IAAM8f,OAAAA,IAAWH,CAAAA,EAAGC,CAAAA,KAAAA,MAAY,CAAC,eAAe,KAAK;gBACrD,IAAMG,MAAAA,kEAAQJ,GAAGC,YAAY,AAAC,UAAA,EAAY,KAAK;gBAC/C,IAAI,CAAC7Y,KAAK,EAAA,EAAA,2BAAA,qCAAA,eAAA,YAAA;oBACR,MAAA,CAAO,CAAA,2BAAA,qCAAA,eAAA,UAAA;wFAAEiZ,UAAU,KAAA,MAAA;wBAAiBC,OAAAA,MAAa;sBAAazB,aAAa;kBAAG,eAAA;YAChF;UACA,IAAM0B,eAAe,AAACP,CAAAA,GAAGC,YAAY,CAAC,mBAAmB,EAAC,EAAGO,WAAW;UACxE,GAAA,CAAID,iBAAiB,SAAS;gBAC5B,OAAO;oBAAEF,UAAU,oBAAA;sBAASC,aAAa;sBAAuBzB,aAAa;gBAAG;cAClF;YACA,IAAI;cACF,IAAMT,WAAW,IAAI5V,IAAIpB,KAAKgX,QAAQ;cACtC,IAAIA,aAAa,YAAYA,aAAa,SAAS;oBACjD,MAAA,CAAO,aAAA,UAAA,EAAA,OAAA;wBAAEiC,UAAU,CAAA,gBAAA,MAAA,GAAA,GAAA,OAAA;sBAAeC,EAAAA,+BAAAA,yCAAAA,WAAa,AAAC,QAAA,GAAoB,OAATlC;wBAAYS,aAAa;kBAAG,CAAA,eAAA,CAAA,oBAAA;gBACzF,GAAA,OAAA;YACF,EAAE,IAAA,WAAM,OAAA;6BACN,OAAO;sBAAEwB,IAAAA,GAAAA,GAAU;sBAAeC,KAAAA,IAAAA,IAAa;sBAAmBzB,MAAAA,OAAa;kBAAG,UAAA,gBAAA,MAAA;YACpF;YACA,IAAM4B,cAAcT,GAAGC,YAAY,CAAC;YACpC,IAAMS,eAAeD,cAAcngB,SAASmgB,aAAa,MAAM,KAAK;cACpE,IAAMnC,OAAO,MAAA;kBACXlX,CAAAA,IAAAA;gBACA+T,CAAAA,KAAAA,EAAAA;kBACAkC,EAAAA,KAAO/c,CAAAA,QAAS0f,GAAGC,YAAY,CAAC,YAAY,QAAQ,SAAA;kBACpD3C,CAAAA,OAAQhd,SAAS0f,GAAGC,YAAY,CAAC,aAAa,QAAQ;gBACtD1C,SAASmD,gBAAgBA,eAAe,IAAIA,eAAe,KAAK;cAChEP,UAAAA;cACAC,OAAAA,aAAAA,aAAAA;YACF;YACA,IAAIP,iBAAiBvB,IAAAA,GAAO;gBAC1B,OAAO,MAAA;oBACL+B,GAAAA,OAAU,MAAA,GAAA,KAAA,sBAAA;oBACVC,aAAanF,KAAK5a,WAAW,GAAGiC,UAAU,CAAC,YAAY,eAAe;kBACtEqc,aAAa;cACf;YACF,CAAA,kBAAA,CAAA,WAAA;cACA,IAAML,IAAAA,IAAQC,EAAAA,aAAeH;YAC7B,IAAMqC,wBAAwBX,GAAGC,YAAY,CAAC,YAAY,QAAQD,GAAGC,YAAY,CAAC,aAAa;YAC/F,IAAI,CAACzB,SAASmC,oBAAAA,KAA0BrC,CAAAA,IAAAA,CAAKjB,KAAK,IAAI,KAAKiB,KAAKhB,MAAM,IAAI,CAAA,GAAI;gBAC5E,OAAO,OAAA;kBAAE+C,MAAAA,IAAU,WAAA,CAAA,EAAA;oBAAcC,IAAAA,SAAa;sBAAmBzB,aAAa,QAAA;oBAAG,WAAA;gBACnF,YAAA,UAAA,UAAA,CAAA,MAAA;cACA,IAAMZ,QAAQ6B;cACd,IAAItB,OAAO,QAAA;;gBACT,IAAMoC,oBAAY3C,kBAAAA,4BAAAA,MAAOY,WAAW,CAAC,uEAAoC;gBACzE,IAAIlO,WAAWrX,OAAO,CAACwlB,WAAW,IAAI;sBACpC,OAAO,EAAA;wBAAER,MAAAA;0BAAMuC,aAAa,EAAA;0BAAUhC,OAAAA,MAAa+B;sBAAU;gBAC/D;cACA,IAAIA,cAAc,IAAI;kBACpB,OAAO,OAAA,SAAA;wBAAEtC,MAAAA,CAAAA,CAAAA,WAAAA;0BAAMuC,EAAAA,WAAa;wBAAchC,aAAa+B;oBAAU,SAAA;cACnE,QAAA,eAAA;gBACA,EAAA,KAAO,aAAA;sBAAEP,OAAAA,GAAU,EAAA;sBAAmBC,QAAAA,KAAa,CAAA;sBAAkBzB,SAAAA,IAAa+B,GAAAA;kBAAU,UAAA;cAC9F,UAAA,gBAAA,MAAA;YACA,IAAI,CAAChB,uBAAuBtB,OAAO;gBACjC,GAAA,IAAO,MAAE+B,UAAU,MAAA,OAAA,UAAA,QAAA,eAAA,aAAA,OAAA,WAAA,GAAA,KAAA,OAAA,OAAA,MAAA,IAAA,GAAA,YAAA,OAAA,UAAA,GAAA;oBAAqDxB,aAAa;gBAAG,OAAA,WAAA,OAAA,CAAA,WAAA,IAAA;cAC1F,EAAA,OAAA;gBACA,IAAI,CAACZ,CAAAA,MAAO,CAAA;kBACV,OAAO;sBAAEK,EAAAA,IAAAA,OAAAA,OAAAA,CAAAA;wBAAMuC,MAAAA,OAAa;wBAAsBhC,QAAAA,KAAa;kBAAG;cACpE,QAAA,cAAA;gBAAA,UAAA;YAAA;cACA,IAAMiC,UAAAA,CAAW3F,QAAQ,EAAA,GAAA;cACzB,IAAMwD,WAAWV,CAAAA,KAAMY,WAAW,CAACiC;cACnC,IAAInC,EAAAA,CAAAA,UAAa,CAAA,GAAI,IAAA,CAAA,MAAA,CAAA,eAAA,EAAA;oBACnB,IAAA,GAAO,CAAA;wBAAE0B,QAAAA,EAAU;sBAAoBC,aAAa;sBAAqBzB,UAAAA,GAAaF,IAAAA,CAAAA,MAAAA,CAAAA,KAAAA,EAAAA,SAAAA,QAAAA;oBAAS,IAAA,KAAA,CAAA,4BAAA;gBACjG,IAAA,KAAA,KAAA,EAAA;wBAI4C2B,gBAAwCzB,iBAAuB;oBAH3G,EAAIuB,EAAAA,GAAO,aAAA,KAAA,IAAA,KAAA,WAAA,OAAA,CAAA,UAAA,CAAA,aAAA,GAAA,MAAA;sBACT,IAAMW,IAAAA,QAAY9C,KAAAA,CAAMY,WAAW,CAAC,AAAC,GAAuBuB,OAArBU,UAAS,cAAkB,OAANV,OAAM;wBAClE,IAAIW,IAAAA,KAAAA,KAAc,EAAA,EAAI;4BACpB,OAAO,KAAA,IAAA;gCAAEV,MAAAA,IAAU,CAAA,OAAA;gCAAqBC,IAAAA,GAAAA,iBAAAA,KAAAA,EAAa,MAAA,cAAbA,qCAAAA,eAAa,IAAA;gCAA2BzB,IAAAA,GAAAA,kBAAAA,KAAAA,EAAakC,MAAAA,cAAblC,sCAAAA,gBAAakC,IAAAA;4BAAU,GAAA,GAAA,aAAA,KAAA,IAAA,cAAA,iCAAA,WAAA,GAAA;wBACzG;sBACA,OAAO;0BAAEzC,MAAAA,SAAAA;wBAAMuC,aAAa,AAAC,eAAwB,OAAVE;sBAAalC,aAAakC;gBAAU,GAAA,WAAA,eAAA,WAAA,CAAA,kCAAA;cACjF,QAAA,cAAA;gBAAA,UAAA;YAAA;cACA,OAAO,MAAA,GAAA,GAAA,UAAA,GAAA;kBAAEzC,MAAAA,IAAAA;gBAAMuC,GAAAA,CAAAA,SAAa,AAAC,EAAA,aAAuB,OAATlC,GAAAA,YAAAA;kBAAYE,KAAAA,QAAaF;gBAAS,MAAA,OAAA;gBAC/E,QAAA,KAAA;YACA,OAASqC,uBAAuBC,MAAM,EAAEC,OAAO,EAAEC,KAAK;cACpD,IAAMC,IAAAA,cAAAA;gBAAoBH,OAAOI,GAAAA,aAAgB;YAC/C;cAEF,IAAMrD,SAAAA,GAAAA,CAAa,EAAE,UAAA,GAAA;cACrB,IAAImD,OAAOA,EAAAA,IAAMvO,KAAK,IAAIwO,kBAAkBze,MAAM;cAClD,IAAIue,SAAS,CAAA;gBACX1iB,QAAQ6c,GAAG,CACT,AAAC,uBAA+C,OAAzB+F,kBAAkBze,MAAM,EAAC;cAEpD;cACAye,QAAAA,UAAkBnZ,OAAO,CAAC,GAAA,MAAC+X,IAAIzB;wBAEjByB,OAAAA;kBADZ,IAAMra,SAASoa,kBAAkBC;kBACjC,IAAM5Y,MAAM4Y,CAAAA,kBAAAA,GAAGE,WAAW,EAAdF,OAAc,UAAA,GAAdA,CAAAA,eAAAA,gBAAgB3f,IAAI,OAAM;gBACtC,IAAMge,WAAW,UAAU1Y;cAC3B4U,UAAU,uBAAuB;kBAC/B/M,QAAQ6Q,WAAW,aAAa1Y,OAAO0a,QAAQ;oBAC/C9B,OAAAA;mBACApD,MAAM6E,GAAGC,IAAAA,MAAAA,EAAY,CAAC,EAAA,QAAW;sBACjCE,UAAUH,GAAGC,YAAY,CAAC,eAAe,KAAK;sBAC9CG,OAAOJ,GAAGC,YAAY,CAAC,YAAY,KAAK;sBACxCM,EAAAA,MAAAA,CAAAA,KAAcP,GAAGC,CAAAA,WAAY,CAAC,mBAAmB,KAAK;sBACtD5C,OAAO2C,GAAGC,CAAAA,KAAAA,MAAY,CAAC;sBACvB3C,QAAQ0C,GAAGC,YAAY,CAAC;sBACxBqB,KAAAA,IAAShH,UAAUlT;wBACnByX,GAAAA,MACAgC,IADalb,OAAOkZ,EACPR,SADkB,EACP1Y,OAAOkb,OAAmB,OAAnBA,KAAW,GAAG,GAAA,GAAK,KAAA,OAAA,OAAA,MAAA,EAAA,OAAA,OAAA,UAAA,KAAA,EAAA,gBAAA,OAAA,UAAA,QAAA,EAAA;kBAEpD;kBACA,IAAI,UAAUlb,QAAQ;sBACpBqY,WAAW7V,IAAI,CAACxC,OAAO2Y,IAAI;wBAC3B;oBACF,CAAA,kBAAA;oBAAA,OAAA;oBAAA,OAAA,OAAA,MAAA;gBAAA;oBACA,GAAA,CAAI6C,OAAO;0BAC4BA,EAAAA;wBAArCA,KAAAA,CAAMI,UAAU,CAAC5b,OAAO0a,QAAQ,CAAC,GAAG,EAACc,aAAAA,uBAAAA,MAAMI,UAAU,CAAC5b,OAAO0a,QAAQ,CAAC,cAAjCc,+CAAAA,oCAAqC,KAAK;kBACjF;gBACA,IAAIxb,OAAO0a,QAAQ,KAAK,cAAc;oBACpC7hB,QAAQ4b,IAAI,CACV,AAAC,2BAAwDzU,OAA9B4Y,OAAM,0BAAqDyB,OAA7Bra,OAAO2a,WAAW,EAAC,YAAwC,OAA9BN,GAAGC,YAAY,CAAC,WAAW,IAAG;cAExH;UACF,GAAA;YACA,OAAOjC;QACT,IAAA,mBAAA,MAAA;YACA,OAASwD,OAAAA;cACP,IAAMzF,OAAO,KAAA,KAAA;gBACXhD,YAAY,EAAE;gBACd0I,eAAe,EAAE;cACjB5L,OAAO,EAAE;cACT6L,UAAU,EAAE;gBACZC,aAAa,EAAE,GAAA,GAAA;gBACfC,YAAAA,MAAkB,EAAE;kBACpBC,mBAAAA,MAAyB,EAAE,OAAA,WAAA;gBAC3BC,UAAU,EAAE;UACd;cACK,kCAAA,2BAAA;2BAAL,QAAK,YAAejO,2CAAf,SAAA,6BAAA,QAAA,yBAAA,iCAAuC;oBAC1CkI,IAAI,CAAC7B,MAAM,GAAG,EAAE;gBAClB,EAAA,SAAA;YAAA,eAAA;QAAA;;cAFK;cAAA,yBAAA,KAAA;;;2BAAA,GAAA,MAAA,oBAAA,GAAA;4BAAA,GAAA,OAAA,QAAA,gBAAA,KAAA,UAAA;;;0BAAA;8BAAA,MAAA,uBAAA;;;;YAGL,KAAA,EAAO6B,KAAAA;YACT,QAAA,IAAA,CACA,KAASgG,SAAShrB,MAAM,EAAEirB,QAAQ,6BAChCA,SAAS/Z,OAAO,CAAC,SAACgM;gBAEhB,IAAI7M,KAAKrQ,OAAOoR,IAAI,CAACf;YACvB,GAAA,KAAA;MACF;MACA,OAAA,EAAS6a,sBAAsBhB,MAAM,EAAEiB,IAAI;YACzCjB,GAAAA,IAAOI,QAAAA,CAAAA,OAAgB,CAAC,oBAAA,KAAA,aAAsCpZ,OAAO,CAAC,SAACgM;cACrE,IAAMiG,QAAQjG,GAAGgM,YAAY,CAAC;cAC9B,IAAM7Y,MAAM4M,OAAOC;gBACnB,IAAI,CAACiG,SAAS,CAAC9S,KAAK,aAAA,GAAA;cACpB,IAAI8S,UAAU,YAAY;kBACxB,IAAMxF,SAASyN,oBAAoBlO,GAAGgM,YAAY,CAAC;oBACnD,IAAIvL,GAAAA,CAAAA,IAAQwN,KAAKJ,QAAQ,CAAC3Z,CAAAA,GAAI,CAAC,CAAA;sBAAEf,KAAAA;qBAAQsN;oBACzC,CAAA,mBAAA,GAAA;cACF;cACA,IAAIb,uBAAuBlG,OAAO,CAACuM,WAAW,CAAC,GAAG;oBAChDgI,IAAI,CAAChI,MAAM,CAAC/R,IAAI,CAACf,GAAAA,QAAAA,kBAAAA,OAAAA,eAAAA,wBAAAA,KAAAA,YAAAA;kBACnB;gBACF,eAAA,wBAAA,CACA2a,OACEG,KAAKT,aAAa,EAClBR,OAAOI,gBAAgB,CAAC;YAG5B,EAAA,KAASe,EAAAA,OAAAA,cAAuBC,MAAM,EAAEH,IAAI;gBAC1CH,QAAAA,CAASG,GAAAA,CACTH,CADchJ,MACLmJ,IADe,CACVrM,CADYwM,IACP,EAAEA,CADYhB,MACLA,UADqB,CAAC,KACN,CAAC,aAC7CU,OACEG,KAAKR,QAAQ,EACbW,OAAOhB,gBAAgB,CAAC;cAM1BU,SACEG,KAAKN,gBAAgB,EACrBS,OAAOhB,gBAAgB,CAAC;YAE1BgB,OAAOhB,gBAAgB,CACrB,qIACApZ,OAAO,CAAC,SAACqa;gBACTP,SACEG,KAAKL,KAAAA,KAAAA,aAAuB,EAC5BS,aAAajB,gBAAgB,CAC3B;UAGN;MACF,OAAA;QACA,SAASkB,kBAAkBxrB,MAAM,EAAEgJ,MAAM;YACvC,CAAA,GAAMyiB,aAAAA,CAAczrB;YACpB,EAAM0rB,KAAAA,SAAc1iB,MAAAA,yBAAAA;gBACf,GAAA,SAAA,YAAA,UAAA,2BAAA;;kBAAL,QAAK,YAAa9J,CAAAA,KAAAA,CAAOyJ,IAAI,CAAC8iB,iCAAzB,SAAA,6BAAA,QAAA,yBAAA,iCAAuC;sBAAvC,IAAM/qB,EAAAA,IAAN;sBACH,IAAMirB,SAAAA,EAAWD,WAAW,CAAChrB,IAAI;sBACjC,IAAIirB,YAAYA,SAAS/f,MAAM,GAAG,GAAG;wBACnC6f,WAAW,CAAC/qB,IAAI,GAAG+qB,WAAW,CAAC/qB,IAAI,CAACkrB,MAAM,CAACD;oBAC7C;kBACF,qBAAA,KAAA,IAAA,qBALK;;sCAAA,6BAAA,0BAAA;;wBAAA;4BAAA;;;QAOP;QACA,SAASE,CAAAA,QAASC,SAAS,CAAA;YAAA,eAAA;QAAA;YACzB,IAAMC,SAAS,IAAIC,YAAYC,eAAe,CAACH,WAAW;UAC1D,IAAMI,cAAcH,OAAOI,aAAa,CAAC;UACzC,GAAA,CAAID,aAAa;gBACfzkB,QAAQqX,KAAK,CACX,yDACAoN,YAAY/C,WAAW;gBAEzB,OAAO;YACT,mBAAA;YACA,OAAO4C;QACT,IAAA,6BAAA,CAAA;QACA,SAASK,SAAAA,KAAcC,EAAAA,OAAS,IAAA,CAAA;cAC9B,EAAA,CAAA,CAAMC,WAAW/iB,CAAAA,CAAAA,OAAS8iB,SAAAA,CAAUnD,YAAY,CAAC,eAAe,IAAI;gBACpE,OAAO/f,OAAOyS,QAAQ,CAAC0Q,YAAYA,WAAW,KAAK;YACrD;YACA,IAAA,GAASC,gBAAgBC,IAAI,OAAA,CAAA,wBAAA,CAAA,eAAA,MAAA,EAAA;gBAC3B,IAAMC,UAAY,EAAE,IAAA,0BAAA;gBACpBzB,IAAAA,KAASyB,WAAWD,EAAAA,GAAKlC,EAAAA,KAAAA,SAAgB,CAAC,MAAA,GAAA;oBAC1C,KAAO,kBAAA;sBAAElG,MAAM;oBAASqI,GAAAA,IAAAA,IAAAA,WAAAA,WAAAA,IAAAA,2BAAAA;sBAAWjQ,EAAAA,OAAWgC,SAAAA,eAAAA,WAAAA,GAAAA,yBAAAA;oBAA0B,IAAA,gBAAA,mBAAA,iBAAA,kBAAA;wBAC1E;wBACA,CAASkO,aAAaZ,SAAS;oBAC7B,EAAI;sBACF,EAAA,EAAMC,SAASF,OAAAA,EAASC,GAAAA,iBAAAA,0BAAAA;wBACxB,IAAI,CAACC,QAAQ,OAAO;4BAAE3H,MAAM;sBAAQ;oBACpC,IAAMoI,OAAOT,OAAOY,eAAe;kBACnC,IAAMC,aAAa9V,MAAMvW,IAAI,CAACisB,KAAKlC,gBAAgB,CAAC;kBACpD,IAAIsC,SAAAA,EAAWhhB,MAAM,GAAA,EAAK,CAAA,EAAG,uBAAA,MAAA;4BAEoB4gB;wBAD/C/kB,QAAQ4b,IAAI,CACV,AAAC,6CAA+E,QAAnCmJ,qBAAAA,KAAKtD,YAAY,CAAC,wBAAlBsD,gCAAAA,qBAAgC,IAAG;sBAElF,OAAOD,gBAAgBC;kBACzB,aAAA,MAAA,EAAA;oBACA,IAAMK,UAAU,AACd,qBAAGD,WAAWle,MAAM,CAAC,SAACwO;+BAAOkP,cAAclP,QAAQ,KAAK;6BACxD,qBAAG0P,WAAWle,MAAM,CAAC,SAACwO;6BAAOkP,cAAclP,QAAQ,KAAK,aAAA;;kBAE1D,IAAI4P;oBACC,kCAAA,2BAAA;;kBAAL,QAAK,YAA4BD,QAAQE,OAAO,uBAA3C,SAAA,6BAAA,QAAA,yBAAA,iCAA+C;wBAA/C,mCAAA,iBAAOvF,wBAAO6E;wBACjB,GAAA,CAAMjU,SAAS4U,eAAeX,WAAW;0BACzC,IAAIjU,CAAAA,CAAAA,KAAOgM,EAAAA,EAAI,CAAA,IAAK,SAAS;8BAC3B0I,CAAAA,CAAAA,aAAAA,GAAAA,KAAAA,wBAAAA,aAAeA,aAAa1U;4BAC5B;sBACF;sBACA,IAAIoP,QAAQ,GAAG;4BACbhE,UAAU,oBAAoB;gCAC5ByJ,aAAazF;gCACb0F,SAASL,QAAQjhB,MAAM;4BACzB;wBACF,CAAA;wBACA,EAAA,EAAIwM,CAAAA,MAAOgM,IAAI,KAAK,WAAW;4BAC7B3c,QAAQ6c,GAAG,CACT,AAAC,gEAAmF,OAApBlM,OAAO+U,YAAY;0EAEvF,yBAAA,GAAA;0BACA,IAAA,CAAA,EAAO/U,QAAAA,GAAAA;sBACT,GAAA,KAAA,CAAA,OAAA,GAAA;;sEAlBK,2BAAA,EAAA;sBAAA,OAAA,MAAA,EAAA;;;mCAAA,6BAAA,iCAAA;gCAAA;;;8BAAA;kCAAA;;;;gBAmBL,GAAA,CAAA,GAAO0U,uBAAAA,wBAAAA,aAAcP,gBAAgBC;YACvC,EAAE,OAAO1N,OAAO;gBACdrX,QAAQqX,KAAK,CAAC,yCAAyCA;gBACvD,IAAA,GAAO;oBAAEsF,KAAAA,CAAM;gBAAQ,KAAA,KAAA,GAAA;YACzB;QACF,IAAA,EAAA,oBAAA,8BAAA,QAAA,2BAAA,GAAA;YACA,OAAS4I,MAAAA,KAAAA,CAAAA,GAAeX,OAAAA,EAAS,CAAA;kBAAElC,OAAAA,GAAAA,EAAAA,CAAAA,OAAAA,GAAAA,oDAAU;YAC3C,IAAI;oBA0EYpM;cAzEd,IAAMqP,UAAUf,UAAUF,aAAa,CAAC;cACxC,IAAIiB,SAAS;yCACX,IAAMD,eAAelQ,OACnBmQ,QAAQjB,aAAa,CAAC;sBAExB,CAAA,CAAA,EAAI,CAACgB,cAAc;0BACjB1lB,MAAAA,EAAQ4b,IAAI,CAAC;;0BACb,MAAA,CAAO,QAAA,aAAA,CAAA;gCAAEe,MAAM,EAAA,GAAA;4BAAQ,GAAA,CAAA,IAAA,GAAA;wBACzB,EAAA,KAAA,CAAA,GAAA,GAAA;wBACA,EAAA,EAAMiJ,GAAAA,CAAAA,KAAAA,GAAAA,IAAgB5C;wBACtBY,EAAAA,KAAAA,CAAAA,MAAAA,GAAAA,MAAuB+B,SAASC;wBAChCD,EAAAA,KAAAA,CAAQ9C,OAAAA,GAAAA,MAAgB,CAAC,0CAA0CpZ,OAAO,CAAC,SAACoc;mCAAYpC,OAAAA,GAAAA,YAAsBoC,SAASD;;wBACvH,EAAA,KAAO,CAAA,aAAA,GAAA;4BACLjJ,GAAAA,CAAAA,EAAM,IAAA,GAAA;4BACN+I,GAAAA,CAAAA,UAAAA,KAAAA,GAAAA;4DACAI,aAAcF,4EAAdE,gBAAcF,WAAAA,CAAAA;4BACdG,IAAAA,GAAO;8BACLC,0BAA0BL,QAAQlE,YAAY,CAAC,gCAAgC;0BACjF,iBAAA,GAAA;sBACF;gBACF;UACA,IAAMwE,0BAAAA,IAASrB,MAAAA,IAAUF,aAAa,CAAC;;wBAUrC,OAAO;;;;kCATT,EAAA,EAAI,CAACuB,CAAAA,OAAQ,0BAAA;sCACXjmB,KAAAA,GAAQ4b,IAAI,CAAC;wCACb,IAAA,GAAO,QAAEe,MAAM;oCACjB;;oCAAA,QAAA,MAAA,CAAA,IAAA,MAAA;;kCACA,IAAMqI,YAAY,EAAE;kCACpBzB,SAASyB,WAAWiB,OAAOpD,gBAAgB,CAAC;oCAC5C;;oCAAA,CAAI+B,OAAAA,GAAUnD,GAAAA,CAAAA,IAAAA,IAAY,CAAC,CAAA,oBAAqB,QAAQ;;sCACtDzhB,QAAQ4b,IAAI,CAAC;sCACbG,UAAU,2BAA2B;0CAAE/M,QAAQ,MAAA,KAAA;0CAASkX,eAAe;;;;;;;;;;8CAC9DvJ,CAAM,EAAA,CAAA,qBAANA;;;;gCAAeqI,QAAAA,GAAAA,UAAAA,GAAAA,CAAAA;sCAAWjQ,GAAAA,MAAAA,CAAAA,CAAWiC;kCAA8B,SAAA;gCAC9E;oCAAA;;8BACA,IAAIyL;8BACJ,IAAIjD,EAAAA,GAAAA,CACJ,IAAM2G,GADW,EAAE,SACC,kCAAE/R,OAAO;;;;;;;;gCACxB,iBAAA,WAAA,2BAAA;;;kCAAA;;;oCAAL,OAAA,CAAK,YAAmB/E,MAAMvW,IAAI,CAChCmtB,OAAOpD,gBAAgB,CAAC,+DADrB,SAAA,6BAAA,QAAA,yBAAA,iCAEF;;;uCAFE,IAAMuD,CAAAA,MAAAA,CAAAA,IAAN,MAAA;;wCAGH,IAAMC,QAAQ7D,uBAAuB4D,WAAW1D,SAASyD;wCACzD,GAAA,CAAIE,GAAAA,GAAMliB,MAAM,GAAG,GAAG,YAAA;8CACpBse,EAAAA,OAAS2D;4CACT5G,aAAa6G;4CACb,GAAA,wBAAA,GAAA;0CACF,EAAA,CAAA;sCACF,IAAA,sBAAA;oCAAA,gBAAA;gCAAA;;sCATK;;oCAAA,QAAA,MAAA,KAAA,MAAA;;;6CAAA,6BAAA;8CAAA;;;;;2CAAA,CAAA,MAAA,CAAA,IAAA,MAAA;;kDAAA;;;;gCAUL,IAAI,CAAC5D,QAAQ,IAAA,KAAA;oCACXziB,EAAAA,MAAQ4b,IAAI,CAAC,MAAA;sCACb,GAAA,CAAI5M,GAAAA,MAAS;sCACb,IAAIsX,CAAAA,IAAAA,CAAM,EAAA,CAAA,SAAA;2CAAA,GAAA,QAAA;;0CACL,MAAA,IAAA,GAAA,CAAA,SAAA;2CAAA,GAAA,UAAA,EAAA,CAAA,UAAA,CAAA,MAAA,QAAA;;;wCAAL,SAAA,IAAA,GAAK,aAAkB7uB,OAAOyJ,IAAI,CAACilB,YAAYpD,UAAU,sBAApD,UAAA,8BAAA,SAAA,0BAAA,kCAAuD;8CAAvD,IAAMlB,CAAAA,CAAAA,SAAN,CAAA,CAAA,MAAA,KAAA,GAAA;oDACWsE,qBAAAA;wCAAAA,SAAAA;wCAAAA,aAAAA,GAAAA,EAAAA;oCAAAA;8CAAd,IAAMI,SAAQJ,mCAAAA,YAAYpD,UAAU,CAAClB,SAAS,cAAhCsE,8CAAAA,mCAAoC;4CAClD,IAAII,QAAQD,KAAK;gDACfA,MAAMC,GACNvX,SAAS6S,UAAAA,IAAAA,MAAAA,EAAAA,0BAAAA,sBAAAA,gCAAAA,UAAAA,KAAAA,EAAAA,gBAAAA,OAAAA,sBAAAA,gCAAAA,UAAAA,QAAAA,EAAAA;;;qCAEb,GAAA,OAAA;;;;wCANK,CAAA,CAAA,uCAAA;wCAAA,gBAAA;;;iDAAA,8BAAA;;;6CAAA,CAAA,CAAA;;;;;;;;;;yCAAA;;oBAcP;;gDAdO;;;;6BAOL,IAAIsE,GAAAA,MAAAA,CAAAA,EAAY/R,EAAAA,GAAK,GAAG,KAAKkS,QAAQ,GAAGtX,SAAS;;8BACjD+M,UAAU,2BAA2B;kCACnC/M,QAAAA;kCACAwX,gBAAgBL,YAAY/R,KAAK;oCACjCqS,SAAAA,WAAoBN,YAAYpD,UAAU;kCAC5C,WAAA;gGACA,OAAO,CAAA,WAAA,CAAA;sCAAEpG,EAAAA,CAAAA,GAAM,WAAA,GAAA;oCAASqI,WAAAA;oCAAWjQ,WAAWiC;gCAA8B;wBAC9E,gBAAA,aAAA,MAAA;4BACA,IAAM8O,SAAAA,KAAAA,CAAe9C,EAAAA,GACrBY,GACAH,GAAAA,GAAAA,CAAAA,GAAAA,UADuBwC,EACDxD,KAAAA,CADSqD,EACDA;qDAE5BnJ,mCAAM,2BAAA,GAAA;kCACNK,IAAI,GAAA,KAAA;sCACF/Z,CAAAA,CAAAA,EAAI2hB,UAAUnD,YAAY,CAAC,SAAS;oCACpCiF,OAAOlR,OAAOyQ,OAAOvB,aAAa,CAAC,wBAAwB;sCAC3DiC,CAAAA,CAAAA,MAAQ,GAAErQ,iBAAAA,cAAcd,OAAOiN,OAAOiC,aAAa,CAAC,oCAA1CpO,4BAAAA,iBAAoE;oCAC9EkJ,YAAAA;oCACAsG,cAAAA;oCACAc,CAAAA,KAAAA,GAAAA,KAAcpR,OACZiN,OAAOiC,aAAa,CAAC;oCAEvBtP,aAAaI,OAAOyQ,OAAOvB,aAAa,CAAC;gCAC3C,SAAA;4BACF,gBAAA;4BACA,OAAOrN,OAAO,CAAA,MAAA,GAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA;8BACdrX,QAAQqX,KAAK,CAAC,IAAA,GAAA,sCAA6CA;8BAC3D,MAAA,CAAO,EAAA,IAAEsF,MAAM,+BAAA,OAAA,eAAA,MAAA,EAAA,aAAA,OAAA,eAAA,KAAA,EAAA,0BAAA,OAAA,oBAAA,qBAAA,OAAA;wBACjB;wBACF,IAAA,eAAA;4BACA,GAAekK,WAAAA,EAAaC,GAAAA,CAAAA,MAAU,CAAA,GAAA;8BAAEC,YAAAA,EAAAA,GAAAA,CAAAA,aAAAA,GAAAA,6CAAc,WAAWC,OAAAA,iEAAO;;gCAIhEC,YAEAhJ,WACAiJ,WACFC,SACEC,aAyBAC,UAGKhQ,OAoBFA;;;;0CAxDT,GAAA,CAAI0B,MAAAA,KAAW,CAAA,GAAA,KAAA,oBAAA,GAAA;gDACb,MAAM,IAAIuO,MAAM;0CAClB;wCACML,aAAa,OAAOM,oBAAoB,cAAc,IAAIA,oBAAoB,KAAK;;;qCACzF,IAAIN,EAAAA,UAAY9M,oBAAoB6D,GAAG,CAACiJ;;sCAClChJ,YAAYgJ,aAAa5Z,WAAW;mDAAM4Z,WAAWO,KAAK,MAAA;2CAAI/Q,MAAAA;4BAAAA,YAAAA,EAAAA,kBAAAA,4BAAAA,KAA2B,CAAA,GAAK,IAAA;wBAAA;wCAC9FyQ,YAAYxiB,KAAKC,GAAG;;;qCACtBwiB,KAAAA,CAAAA,IAAU;;sCACRC,cAAc,qBAAOK;;;;;;;wDAKnBJ;;;;kDAJNF;oDACA,EAAA,EAAIH,IAAAA,EAAAA,GAAS,OAAO;0DAClBjL,UAAU,yBAAyB;4DAAEoL,SAAAA;0DAASJ,aAAaU;wDAAM,QAAA;kDACnE;gDACiB;;sDAAM7T,MAAMkT,YAAY;4DACvC1Y,MAAM;0DACN2Y,aAAaU;0DACbC,SAAS;gEACP,UAAU;8DACZ,wCACAC,gBAAgB;2DACbV,aAAa;0DAAEW,QAAQX,WAAWW,MAAM;wDAAC,IAAI,CAAC,IAAA;;;yDAP7CP,WAAW;;;;0DASjB,IAAIL,SAAS,OAAO;8DAClBjL,GAAAA,OAAU,GAAA,EAAA,oBAAyB;oEACjCoL,SAAAA;kEACAU,YAAYR,SAASnX,MAAM;kEAC3BnB,IAAIsY,SAAStY,EAAE;kEACf+Y,WAAWpjB,KAAKC,GAAG,KAAKuiB;8DAC1B;0DACF;0DACA;;8DAAOG;;;;;;;;;;;;;;;;;;;;;;;;;8BAKM;;oCAAMD,YAAYL;;;8BAA7BM,WAAW;;;;;;;;;;;;;;;;;;;;;;;8BACJhQ,EAAAA,KAAAA;mCACH0P,CAAAA,gBAAgB,UAAU,EAACE,uBAAAA,iCAAAA,WAAYW,MAAM,CAACG,OAAO,CAAD,GAApDhB;;;;;;;;;;;;;;;;;;;;;8BACF/mB,EAAAA,MAAQ4b,IAAI,CACV,AAAC,qDAAgE,OAAZmL,aAAY,qCACjE1P;8BAEF0E,UAAU,0BAA0B;kCAClCiM,YAAY,EAAE3Q,kBAAAA,4BAAAA,MAAO4Q,OAAO;8BAC9B,GAAA;8BACW,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA;;kCAAMb,YAAY;;;8BAA7BC,GAAAA,KAAAA,GAAW;;;;;;4BAEX,MAAMhQ;;;;;;;;yBAGV,IAAI,CAACgQ,4DAAAA,KAAStY,EAAE,EAAE;kCAChB,EAAA,IAAM,IAAIuY,CAAAA,GAAAA,EACR,AAAC,8BAAgDD,OAAnBA,SAASnX,MAAM,EAAC,KAAuB,OAApBmX,SAASa,UAAU;8BAExE,UAAA;;;oCACO,MAAA,IAAA,CAAA,iJAAA;+BAAA;;sCAAMb,SAASc,IAAI;;;;;;;;;;;;;;;;;6CAA1B;;kCAAO;;;8BACA9Q;8BACP,EAAA,EAAI4P,uBAAAA,iCAAAA,WAAYW,MAAM,CAACG,OAAO,EAAE;oCAC9B,CAAA,GAAI3N,EAAAA,GAAAA,GAAAA,OAAAA,OAAAA,aAA2B;wCAC7B,GAAA,GAAM,UAAA,CAAIkN,OAAO,GAAgCR,OAA9B1M,2BAA0B,MAAe,OAAX0M;kCACnD;gCACA,MAAM,IAAIQ,MACR,AAAC,8BAA2DR,OAA9BrQ,yBAAwB,QAAiB,OAAXqQ;yCAEhE;8BACA,CAAA,KAAMzP,GAAAA,UAAAA,GAAAA,CAAAA,OAAAA,aAAAA,GAAAA,IAAAA;;4BAEN,IAAI4G,cAAc,KAAK,GAAGG,aAAaH;0CACvC,IAAIgJ,YAAY9M,oBAAoB/Q,MAAM,CAAC6d;;;;;;;;;YAE/C;;YACA,OAAemB;gDAAoBtB,UAAU;gDAAEuB,OAAWC,qBAAiDvC,OAErGwC,SACEC,gBAOGnR,OA+BH1G,QAGDA,mBACYA;;;;;8BA7C4B0X,KAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,oDAAQ,GAAGC,sBAAAA,oEAAsBtF,2BAA2B+C,QAAAA,oEAAQ;oCAAEC,CAAAA,GAAAA,sBAA0B;8BAAK,OAAA,UAAA,cAAA;gCAClJ,GAAA,CAAIjN,WAAW,YAAA,kBAAA,CAAA,eAAA,QAAA,EAAA;;;;sCAAO;;gCAEhByP,IAAAA,GAAAA,UAAiB9jB,EAAAA,GAAKC,GAAG;;;;;;;;;6CAEnB;;kCAAMkiB,OAAAA,GAAAA,GACdC,YACAuB,UAAU,IAAI,YAAY,QAC1BA,UAAU,IAAI,QAAQ;;;;gCAHxBE,QAAAA,EAAU,CAAA;;;;;;gCAKHlR,UAAAA,GAAAA;gCACP,IAAIgR,UAAU,GAAG,MAAMhR;gCACvBrX,QAAQ4b,IAAI,CAAC,GAAA,2CAA8CvE;gCAC3D0E,MAAAA,GAAAA,CAAU,iBAAiB;oCACzB/M,QAAQ,GAAA,GAAA;mEACRqZ,MAAAA,CAAAA,2FAAAA,WAAAA,CAAAA;oCACAI,YAAY3M,UAAUgL;kCACtBgB,WAAWpjB,KAAKC,GAAG,KAAK6jB;kCACxBR,YAAY,EAAE3Q,kBAAAA,4BAAAA,MAAO4Q,OAAO;gCAC9B,GAAA,CAAA,OAAA,GAAA;gCACA,GAAA,CAAI,CAAClP,WAAW,CAAA,GAAA;kCACduE,mBAAmBgL,oBAAoBjR,KAAK,EAAE;oCAC5CtC,WAAW8B;0DACb;8BACF,GAAA,CAAA,WAAA;gCACA,GAAA,CAAA,OAAA,GAAA;;kCAAO;;;gCAET,EAAA,CAAA,CAAIkC,MAAAA,GAAAA,EAAW;;gCAAO;;mFACtB,IAAIsP,IAAAA,IAAQ,GAAG;gCACbtM,UAAU,iBAAiB;4DACzB/M,QAAQ;2FACRqZ,OAAAA;oCACAI,YAAY3M,UAAUgL;4DACtBgB,WAAWpjB,KAAKC,GAAG,KAAK6jB;kCAC1B;4BACF;mDACAxoB,QAAQ6c,GAAG,CAAC;8BACZ7c,EAAAA,MAAQ6c,GAAG,CACT,sDACA0L,QAAQG,SAAS,CAAC,GAAG;wBAEjB/X,OAAAA,CAAAA,CAASsU,EAAAA,QAAAA,GAAasD,IAAAA,GAAAA,QAAAA,GAAAA,MAAAA,CAAAA;+BAC5B,IAAI5X,OAAOgM,IAAI,KAAK,SAAS;gCAC3BW,mBACE,EAAC3M,oBAAAA,OAAOqU,SAAS,cAAhBrU,+BAAAA,wBAAwBwT,MAAM,CAACmE,oBAAoBjR,KAAK,GACzD;kCAAEtC,SAAS,GAAEpE,oBAAAA,OAAOoE,SAAS,cAAhBpE,+BAAAA,oBAAoBoG;4BAA0B;;gCAEtD;;0BACT;0BACA,IAAIpG,OAAOgM,IAAI,KAAK,WAAW;8BAC7B,IAAI0L,SAAS7R,0BAA0B,CAACuP,MAAMC,wBAAwB,EAAE;kCACtEhmB,QAAQ4b,IAAI,CACVmK,MAAMC,wBAAwB,GAAG,AAAC,2CAAiE,OAAvBxP,wBAAuB,wCAAsC;kCAE3I8G,mBACEgL,oBAAoBjR,KAAK,CAAC8M,MAAM,CAACxT,OAAOmV,YAAY,CAACzO,KAAK,GAC1D;sCAAEtC,WAAW+B;gCAAyB;gCAExC;;sCAAO;;8BACT,GAAA,IAAA,CAAA,SAAA;eAAA,QAAA,IAAA,CAAA;;4BACAiN,kBAAkBuE,qBAAqB3X,OAAOmV,YAAY;4BAC1D;;kCAAOsC,oBACLzX,OAAO+U,YAAY,EACnB2C,QAAQ,GACRC,qBACA3X,OAAOoV,KAAK;;4BAEhB;mCACAhC,kBAAkBpT,OAAOqM,EAAE,CAAC8I,YAAY,EAAEwC;4BAC1CvM,UAAU,mBAAmB;8BAAEsM,OAAAA;0BAAM,UAAA,IAAA,QAAA,KAAA,UAAA;4BACrC;;8BAAO1X,MAAAA,CAAOqM,EAAE;;;;UAClB,CAAA,UAAA,OAAA;;;gBA6BiB+H,EAAAA,kBAuDyCA,qBAjFlDwD,SAKAI,YAQArE,QASAS,MACAI,YAUwCJ,qBAGd6D,kBADxBA,OAGSA,kBAKXC,WAqBAC,aACAC,QACAC,YACAC,KAEC,2BAAA,mBAAA,gBAAA,WAAA,OAAMjM,SAIN,4BAAA,oBAAA,iBAAA,YAAA,QAAIA;;;;wBA1EXpD,wBAAwB;QACR;0BAAA,iBAAA,eAAA,OAAA,IAAA,cAAA,mCAAA,aAAA,GAAA,GAAA;;8BAAMiN,aAAaC;;;0BAA7ByB,MAAAA,IAAU,SAAA,mBAChB,IAAIxP,WAAW;;;;gCACf/Y,QAAQ6c,GAAG,CACT,AAAC,+CAA6D,OAAf0L,QAAQpkB,MAAM,EAAC;gCAE1DwkB,aAAaJ,QAAQ1mB,IAAI;8BAC/B,IAAI8mB,WAAWxkB,MAAM,KAAK,GAAG;gCAC3BnE,QAAQ4b,IAAI,CACV;qCAEFG,GAAAA,OAAU,eAAe;uCAAEmN,gBAAgB;kCAAwB,GAAA,CAAA,QAAA;oCACnE;;;;gCACF;gCACM5E,CAAAA,QAASF,SAASmE;8BACxB,IAAI,CAACjE,QAAQ;kCACXtkB,QAAQqX,KAAK,CACX,0DACAkR,QAAQG,SAAS,CAAC,GAAG;gCAEvB3M,UAAU,eAAe;kCAAEmN,SAAAA,CAAAA,MAAgB;oCAAGla,QAAQ;gCAAkB;gCACxE,QAAA;;;;;;;;0BACF;0BACM+V,OAAOT,OAAOY,eAAe;wBAC7BC,aAAa9V,MAAMvW,IAAI,CAACisB,KAAKlC,gBAAgB,CAAC;wBACpD9G,QAAAA,EAAU,UAAA,KAAe;8BACvB/M,QAAQmW,WAAWhhB,IAAAA,EAAM,GAAG,IAAI,KAAA,OAAY;gCAC5CglB,WAAW,GAAEpE,qBAAAA,KAAKtD,YAAY,CAAC,wBAAlBsD,gCAAAA,qBAAgC,KAAK;8BAClDmE,gBAAgB/D,WAAWhhB,MAAM;4BACjCilB,aAAajE,WAAWle,MAAM,CAAC,SAACwO;uCAAOA,GAAGiP,YAAAA,CAAa,CAAC;iCAAoBvgB,EAAAA,IAAM;8BAClFklB,CAAAA,CAAAA,WAAAA,CAAclE,WAAWle,MAAM,CAAC,SAACwO;yCAAOA,GAAGiP,aAAa,CAAC;iCAAqBvgB,MAAM;wBACtF;wBACA,IAAIghB,WAAWhhB,MAAM,KAAK,GAAG;;;8BAC3BnE,QAAQ4b,IAAI,CACV,AAAC,0CAA4E,QAAnCmJ,sBAAAA,KAAKtD,YAAY,CAAC,wBAAlBsD,iCAAAA,sBAAgC,IAAG;;;wBAEzE6D,KAEJtL,uBAGF,yBACA,kIAuByFqH,cAAc1D,KAAK0D,cAAczD;;;;;0GA7BpH0H,CAAAA,CAAQ9D,gBAAgBC;;;;;;;;;;;;;;;8CAE5BzH,eAAAA,wBAAAA,QAAmBsL,GAAM5D,SAAS,EAAE,YAApC1H,mCAAAA,KAAmBsL,mBAAiB;kDAClC7T,SAAS,GAAE6T,mBAAAA,MAAM7T,SAAS,cAAf6T,8BAAAA,mBAAmB7R;8CAChC,CAAA,GAAA,CAAA,YAAA;gDACF,EAAA,IAAA,0BAAA,QAAA,cAAA,cAAA,qCAAA,0BAAA;gDACA,GAAA,IAAA,2BAAA,QAAA,eAAA,cAAA,sCAAA,2BAAA;;;gFACF,QAAA,IAAA,CAAA,OAAA,WAAA,cAAA,OAAA,QAAA,CAAA,IAAA,GAAA,EAAA;;wDAeMpG,mBAbEA,QAeSA;;wDAfTA,EAAAA,GAAAA,IAAS4U,eAAeX;wDAC9B,IAAIjU,OAAOgM,IAAI,KAAK,SAClBZ,CAD4B,GAC5BA,MAAU,KAAA,cAAmB,OAAA,QAAA,CAAA,IAAA,GAAA,EAAA;4DAAW,OAAA,IAAA;4DACxC,SAAA,IAAA;;gEAAOpL,IAAAA,GAAOqM,EAAE,MAAA,SAAA;kEAClB,4CACA,IAAIrM,OAAOgM,IAAI,KAAK,WAAW;4DAC7B,UAAA;;gEAAOyL,EAAAA,kBACLzX,OAAO+U,YAAY,EACnB,GACA/U,OAAOmV,YAAY,EACnBnV,OAAOoV,KAAK;;wDAEhB,cAAA;wDACA,KAAIpV,SAAAA,WAAAA,OAAOqU,SAAS,cAAhBrU,wCAAAA,kBAAkBxM,MAAM,EAAE;;4DAC5BmZ,QAAAA,WAAmB3M,OAAOqU,SAAS,EAAE;gEACnCjQ,SAAS,GAAEpE,UAAAA,UAAAA,OAAOoE,SAAS,cAAhBpE,+BAAAA,oBAAoBqG;4DACjC;wDACF,MAAA;wDACA,QAAA;;4DAAO;;gCACT;;gCAAA,OAAA,gBAAA,CAAA;;;;;4CACM8R,OAAAA,OAAc3D,CAAAA,UAAWle,MAAM,CAAC,SAACwO;uDAAOkP,cAAclP,QAAQ,KAAK;;;4CAAG6T,IAAI,CAAC,SAACrI,GAAGC;;;;;4CAC/E6H,SAAS5D,WAAWle,MAAM,CAAC,SAACwO;uDAAOkP,cAAclP,QAAQ,KAAK;;;;;;;;;;;2CACnClJ,QAAQ/T,GAAG,CAACgrB,SAAS9N,GAAG,CAAC,SAACD;;qEAAOoT,UAAUpT,IAAI8T,KAAK,CAAC;iDAAM;;;;8BACtFN;mCACFH,CAAAA,YAAY3kB,MAAM,KAAK,CAAA,GAAvB2kB;;;;uCACG,kCAAA,2BAAA;;;;;;;;;uCAAY;gCAAME,WAAWD;;;0GAA7B,IAAA,OAAY,QAAA;;mCAAZ,6BAAA,QAAA;;;;uCAAM/L,KAAN,IACH,IAAIA,IAAIiM,IAAItf,IAAI,CAACqT;;;8BADd;;;;;;;;;;wBAAA,MAAA;wBAAA,aAAA;;;;;iCAAA,EAAA,SAAA,kBAAA;kCAAA,MAAA;;;kCAAA;sCAAA;;;;;;;;;;;;qBAIA,mCAAA,4BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;8CAAU;;mDAAMgM,WAAWF,OAAXE,CAAWF;;;4CAA3B,aAAU;;;;;2DAAV,6BAAA,OAAA,EAAA,OAAA,EAAA,IAAA,EAAA,UAAA,OAAA;;;;;;;;qCAAI9L,MAAJ;;;;uDACI,CAAA,CAACA,OAAM+L,OAAO5kB,MAAM,GAAG,CAAA,KAAA,OAAA,SAAA;;;;;;;;;;;;;uCACqB;;;;0BAAjD6Y,EAAAA,EAAAA,EAAK;;;;;;0BAEP,IAAIA,KAAIiM,IAAItf,IAAI,CAACqT;;;iGA0DP,UAGd,4BAAA,qBAuBMwM;wBAxFC,QAAA;;;;;;;;;;;;4FAAA,UAAA;0BAAA;;;;;;;mCAAA,8BAAA;kCAAA;;;oCAAA;0CAAA;;;;;;;4BAOPxpB,QAAQ6c,GAAG,CA92Ef,AA+2EM,AAAC,+BAAuBoM,IAAI9kB,MAAM,EAAC,qBAAsD,QAAnC4gB,sBAAAA,KAAKtD,YAAY,CAAC,wBAAlBsD,iCAAAA,sBAAgC,IAAG;4BAE3FnL,wBAAwBuL,WAAWhhB,MAAM;0BACzC,EAAA,KAAA,CAAA;;+BAAO8kB,OAAAA,OAAAA,UAAAA,CAAAA,EAAAA,EAAAA,KAAAA,OAAAA,SAAAA,IAAAA,KAAAA;;;;YACT,QAAA;;MACA,KAAA,IAASQ,GAAAA,QAAAA,CAAAA,YAAAA,GAAAA,QAAAA,CAAAA,UAAAA;YACP,IAAMC,QAAQlmB,SAASkc,aAAa,CAAC;YACrCgK,CAAAA,KAAMC,KAAK,CAAC3Z,QAAQ,GAAG;YACvB0Z,MAAMC,EAAAA,GAAK,CAACC,IAAI,GAAG;YACnBF,MAAMC,GAAAA,EAAK,CAACrD,GAAG,GAAG;UAClBoD,CAAAA,IAAAA,CAAMC,EAAAA,GAAK,CAAC9K,IAAAA,CAAK,GAAG,WAAA,CAAA,GAAA,QAAA,CAAA,WAAA,OAAA,QAAA,CAAA,OAAA,GAAA;YACpB6K,IAAAA,EAAMC,KAAK,CAAC7K,MAAM,GAAG;YACrB4K,CAAAA,KAAMC,KAAK,CAACE,SAAS,GAAG;YACxBH,MAAMC,EAAAA,GAAK,CAACG,eAAe,GAAG;YAC9BJ,MAAMK,GAAAA,QAAW,GAAG;UACpBL,CAAAA,IAAAA,CAAM9M,EAAAA,GAAK,GAAG,EAAA,CAAA,cAAA,CAAA,GAAA,QAAA,CAAA,cAAA,GAAA,QAAA,CAAA,KAAA,GAAA;YACd8M,IAAAA,EAAM7R,MAAM,GAAG;YACf7X,CAAAA,OAAQ6c,GAAG,CACT,AAAC,sDAAkE,OAAb6M,MAAM7R,MAAM;YAEpE,OAAO6R,CAAAA;QACT,aAAA;MACA,KAAA,IAASM,GAAAA,QAAAA,CAAAA,YAAAA,GAAAA,QAAAA,CAAAA,UAAAA;YACP,IAAI,CAAC7R,kBAAkB,CAACM,WAAW;YACnC,CAAA,GAAIF,gBAAgBpU,MAAM,GAAG,GAAG;YAChC,IAAM8lB,IAAAA,WAAe;gBACnB,IAAI,CAACxR,aAAa,CAACN,gBAAgB;cACnC+R,CAAAA,GAAAA,QAAAA,CAAAA,YAAAA;gBACAC;gBACA,IAAMjN,cAAc/E,eAAe+E,WAAW;gBAC9C,IAAIjC,cAAcR,KAAK,EAAE;wBAClB,kCAAA,2BAAA;;sBAAL,QAAK,EAAA,UAAehC,UAAUqN,YAAY,CAACxC,QAAQ,qBAA9C,SAAA,6BAAA,QAAA,yBAAA,iCAAgD;4BAAhD,IAAM5H,QAAN;gCAEeA,sBAAwBA;4BAD1C,EAAA,EAAIT,EAAAA,CAAAA,MAAAA,KAAcD,MAAAA,OAAa,CAACxY,GAAG,CAACkZ,QAAQ;4BAC5C,IAAM0O,MAAAA,CAAAA,MAAY1O,aAAAA,KAAAA,GAAAA,EAAAA,MAAMnF,CAAAA,YAAa,IAAA,GAAA,OAAnBmF,CAAAA,CAAAA,SAAAA,GAAAA,oBAAAA,uBAAuB,EAACA,uBAAAA,MAAMrF,aAAa,cAAnBqF,kCAAAA,uBAAuB,KAAK,MAAMjD,UAAUkO,QAAQ;8BAC9F,IAAIzJ,eAAekN,WAAW;kCAC5BnP,cAAcD,aAAa,CAACgD,GAAG,CAACtC;kCAChC4B,QAAAA,WAAmB,IAAA;oCAAC5B,MAAM9S,GAAG;+BAAC,CAAA,GAAA,KAAA,CAAA;4BAChC,KAAA,iBAAA,CAAA,EAAA,EAAA;0BACF,WAAA,CAAA,EAAA;;sBAPK;sBAAA,KAAA,IAAA,CAAA,KAAA;;;iCAAA,6BAAA;gCAAA,IAAA,GAAA,KAAA,OAAA,IAAA,CAAA,KAAA;;;8BAAA;oCAAA,CAAA,SAAA,IAAA,CAAA,KAAA;;;;gBAQP,GAAA,GAAA,QAAA,CAAA,UAAA,CAAA,SAAA,IAAA,CAAA,KAAA;kBACA,IAAI,CAAE6P,CAAAA,UAAUkO,QAAQ,GAAG,CAAA,GAAI;kBAC/B,IAAMrD,GAAAA,QAAWpG,cAAczE,UAAUkO,QAAQ;kBACjD,IAAIrD,WAAAA,CAAY,EAAA,MAAQ,CAACrI,MAAAA,QAAcP,aAAa,EAAE;oBACpDO,EAAAA,QAAAA,CAAAA,GAAcP,OAAAA,MAAa,GAAG;sBAC9BqB,UAAU;sBACVuB,GAAAA,gBAAmB7E,UAAUqN,YAAY,CAACpL,aAAa;gBACzD;cACA,IAAI4I,YAAY,OAAO,CAACrI,cAAcN,QAAQ,EAAE;kBAC9CM,WAAAA,GAAcN,QAAQ,GAAG;oBACzBoB,OAAAA,CAAAA,EAAU,WAAA,GAAA,QAAA,CAAA,WAAA,QAAA;oBACVuB,OAAAA,CAAAA,UAAAA,CAAmB7E,OAAAA,GAAUqN,YAAY,CAACnL,QAAQ;gBACpD,GAAA,QAAA,CAAA,cAAA,GAAA,QAAA,CAAA,QAAA,QAAA;cACA,IAAI2I,YAAY,QAAQ,CAACrI,cAAcL,aAAa,EAAE;kBACpDK,cAAcL,OAAAA,IAAAA,CAAAA,CAAa,GAAG;gFAC9BmB,SAAAA,CAAU,KAAA,KAAA,EAAA,WAAA,oBAAA,+BAAA,SAAA,UAAA,MAAA,GAAA;oBACVuB,mBAAmB7E,UAAUqN,YAAY,CAAClL,aAAa;cACzD;UACF,KAAA,OAAA,UAAA,CAAA,8BAAA,OAAA,IAAA,OAAA,SAAA,CAAA,UAAA,KAAA,QAAA,EAAA,iBAAA,OAAA,MAAA,cAAA,sCAAA,6BAAA,eAAA,WAAA,cAAA,iDAAA,2BAAA,KAAA,MAAA,KAAA;UACA,CAAA,GAAMyP,mBAAmB;uBACvB,IAAI,CAAC5S,aAAa,CAACU,gBAAgB;oBACnC,IAAQmS,aAA4BnS,eAA5BmS,YAAYC,cAAgBpS,eAAhBoS;gBACpB,IAAID,IAAAA,GAAAA,OAAc,EAAA,CAAA,EAAKC,CAAAA,MAAAA,QAAe,GAAG;gCACvCvqB,QAAQ4b,IAAI,CACV,AAAC,6DAA0E2O,OAAdD,YAAW,KAAe,OAAZC,aAAY;+BAEzFC;2BACF;uBACF;sBACA,IAAMC,YAAY;gBAChB,IAAI,CAAChS,EAAAA,QAAAA,CAAAA,EAAawC,MAAAA,QAAcT,MAAM,EAAE;gBACxCS,OAAAA,OAAcT,CAAAA,CAAAA,IAAM,EAAA,CAAG;gBACvB8C,KAAAA,QAAAA,CAAAA,KAAmB7E,GAAAA,OAAUqN,YAAY,CAACtL,MAAM;YAClD,OAAA;oBACA,IAAMkQ,YAAY;0BAChBC;gBACA,IAAI,CAAClS,aAAa,CAACN,gBAAgB;qCACnC,IAAI,CAAC8C,cAAcV,UAAU,EAAE;oBAC7BU,EAAAA,YAAcV,UAAU,GAAG;oCAC3BW,YAAY8C,GAAG,CAACvF;oBAChBsD,QAAAA,EAAU,MAAA,KAAW;sDACnByN,SAAAA,8EAAAA,CAAiBnP,GAAAA,CAAAA,SAAAA;wBACjBuQ,SAAAA,OAAgB9Q,MAAAA;oBAClB,UAAA,UAAA,IAAA;oBACAiC,OAAAA,GAAU,KAAA,eAAoB;wBAC5B8O,CAAAA,SAAAA,EAAYpS,UAAUqN,GAAAA,SAAY,CAACvL,UAAU,CAACpW,MAAM;kBACtD;gBACA,IAAIsU,UAAUqN,YAAY,CAACvL,UAAU,CAACpW,MAAM,KAAK,GAAG;cAClDnE,KAAAA,GAAQ4b,EAAAA,EAAI,CACV;;YAEJ,sBAGA0B,aAIEhB,MAJiB7D,AAKjBsH,KACA3L,AAKJ6G,KAX+B6K,YAAY,CAACzC,QAmB5CpI,CACAc,KACAuB,QAIA,CAzBmE,EAAE,WA0BrEwN;;;;oCA7BE,QAAA,iBAAA,iBAAA,OAAA,MAAA,cAAA,qCAAA,eAAA,MAAA,CAAA;;;;;;;;;;;;;;4BAEAxN,GAAAA,MAAAA,CAAAA,MAAAA,CAAAA,EAAmB7E,SAAAA,CAAUqN,GAAAA,SAAY,CAACiF;4BAAAA;4BAAAA;4BAAAA,IAAY;;;;;kCAEpD/b,QAAQiI,KAAAA,aAAAA;gCACV,MAAA,IAAA,cAAA,MAAA,CAAA;8BACAwE,KAAK,iBAAiB;+BACpBa,KAAM7D,IAAAA,MAAUxV,EAAE,WAAA;iCAClB8c,IAAOnH,WAAAA,KAAAA,MAAAA;gCACPxE,GAAAA,GAAOuE,CAAAA,KAAAA,CAAOxU,KAAAA,CAAM,CAAA,GAAI,CAAA;kCAC1B,CAAA,EAAA,GAAA,KAAA,UAAA,CAAA;4BACF;4BACA,IAAI8W,MAAAA,QAAcR,KAAK,EAAE;0BACzBQ,cAAcR,KAAK,GAAG;oBACtBQ;;wBAAcF,IAAS,GAAG5C,MAAAA,CAAAA,MAAAA,CAAAA,CAAeyE,KAAK,IAAIzE,CAAAA,cAAeN,MAAM,KAAK;;;iCAA5EoD,CAAcF;0BACduC;;wBAAAA,MAAAA,IAAAA,CAAAA,IAAAA,GAAmB7E,QAAAA,EAAUqN,WAAAA,CAAY,CAACrL,CAAAA,CAAAA,SAAAA,EAAK;mCAAA,EAAA,QAAA,CAAA,IAAA,QAAA,CAAA,GAAA;2BAAA,IAAA,CAAA;;;;sBAEjD,MAAA,IAAA,CACA,IAAMuQ,UAAU;;;;;;2BAId/P,aAAcJ,QAAQ,GAAG;6BACzBkB,GAAAA,KAAU,MAAA,MAAA,EAAA,KAAA;+BACVuB,MAAAA,QAAmB7E,EAAAA,CAAAA,OAAUqN,YAAY,CAACjL,QAAQ;gCAClD7a,SAAQ6c,GAAG,CAAC,OAAA;gCACZ,IAAIjE,EAAAA,SAAWD,OAAOxU,MAAM,GAAG,KAAK8mB,sBAAsB;kCACxD;mCACF,KAAA,GAAA,CAAA,MAAA,QAAA,CAAA,IAAA,QAAA,CAAA,GAAA;gCACAH,KAAAA,GAAAA,GAAAA,QAAAA,CAAAA,IAAAA,QAAAA,CAAAA,IAAAA;oBACF,SAAA,KAAA,MAAA,GAAA,QAAA,CAAA,IAAA,SAAA,CAAA,GAAA,IAAA,QAAA,CAAA,IAAA;0BACA;;wBAAA,CAAA,EAAMI,UAAU,GAAA,YAAA,EAAC1X,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA;;;;oBAKG2E,uBACFA;;YALhB,IAAI,CAACV,WAAW,OAAA,UAAA;YAChBzX,QAAQqX,KAAK,CAAC,qBAAA,WAAA,CAAiC7D,QAAAA;cAC/C,IAAM2X,MAAAA,UAAgB/T,qBAAqBe,2BAAAA,qCAAAA,eAAgBd,KAAK;eAChE0E,UAAU,CAAe,MAAzBA,CAAU;kBACRqP,cAAc,EAAEjT,2BAAAA,sCAAAA,wBAAAA,eAAgBd,KAAK,cAArBc,4CAAAA,sBAAuBb,IAAI;gBAC3C0Q,MAAAA,MAAY,EAAE7P,cAAAA,aAAAA,sCAAAA,yBAAAA,eAAgBd,KAAK,cAArBc,6CAAAA,uBAAuB8P,OAAO;kBAC5CoD,GAAAA,SAAY,EAAElT,2BAAAA,qCAAAA,eAAgBkT,YAAY;mBAC1CC,SAAYnT,OAAZmT,EAAU,EAAEnT,QAAAA,qCAAAA,eAAgBmT,UAAU;kBACtCC,UAAU,EAAEpT,2BAAAA,qCAAAA,eAAgBoT,UAAU;iBACtCJ,SAAAA,OAAAA,KAAAA,EAAAA,OAAAA,CAAAA;YACF;SACAK,GAAAA,UAAAA,KAAqBL,KAAAA;;;;;0BACvB,eAAA;4BACA;;4BAAA,CAAMM,oBAAoB,2BAAC/P;;8BACzB,IAAI,CAACjE,aAAa,CAACU,kBAAkB8C,cAAcV,UAAU,EAAE;oBAC1DpC;;wBAAAA,MAAeoT,IAAAA,MAAU,EAAE,kBAAA;;;8BAAhC,IAAI,CAACpT,GAAAA;;;2BACL4D,UAAU,eAAe;;;;oBACvB/M,QAAQ0M,MAAMiB,IAAI;;gBAClB2O,IAAAA,QAAYnT,EAAAA,aAAemT,UAAU;kBACrCD,CAAAA,aAAclT,eAAekT,CAAAA,WAAY;gBACzCE,YAAYpT,eAAeoT,UAAU;SACvC,GAAA;;YAAA,SAAA,OAQE,oDAPJ,YACA,IAAMG,6BAMF;;;;;oBARF,UAAA,oEAAA,CAAA,GAAA,QAAA,oEAAA,CAAA;iCACF;oCACMA,CAAAA,CAAAA,GAAiB,KAAA,aAAA;8BACrB,IAAI,CAACjT,IAAAA,SAAa,CAACN,gBAAgB;gCACnC,GAAA,CAAIkC,wBAAwB,CAAClC,eAAeyE,KAAK,EAAE,OAAA,CAAA,YAAA,MAAA;kCACjD,IAAM+O,iBAAiB/qB,UAAU+qB,cAAc;oBAC/C,CAAIA;;wBAAAA,aAAkB,CAACA,eAAeC,QAAQ,EAAE;;;4BAAhD,GAAA;sCACE7P,CAAAA,SAAU,qBAAqB;4CAAE8P,QAAQ1T,eAAe0T,MAAM,CAAA;sCAAC;iCACjE,mBAAA,MAAA,SAAA,cAAA,8BAAA,mBAAA,CAAA,aAAA,GAAA,IAAA,QAAA,WAAA;;;+BACAxR,uBAAuB;oCACzB,GAAA;oCACA,IAAMuC,CAAAA,OAAQzE,IAAAA,UAAAA,CAAeyE,KAAK,IAAIzE,eAAeN,MAAM,KAAK;oCAChE,IAAI,CAACoD,EAAAA,EAAAA,CAAAA,SAAcR,EAAAA,GAAK,EAAE;gEACxBQ,QAAAA,CAAcF,2CAAdE,iBAAcF,MAAS,GAAG6B;gEAC1B,QAAA,4CAAA,iBAAA;oCACF,IAAA;gCACA,GAAA,CAAIA,UAAU3B,IAAAA,GAAAA;4BAAAA,KAAcF,SAAS,EAAE,GAAA,QAAA,eAAA;wBAAA,IAAA,CAAA;;;;gBAEvCuC,mBACEV,QAAQnE,UAAUqN,YAAY,CAACgG,IAAI,GAAGrT,UAAUqN,YAAY,CAACiG,MAAM;;QAEvE,CAAA;wCAAA,UAAA;YAAA,sBAQA;;;;;oBARA,UAAA,oEAAA,CAAA;0BACA,IAAMC,MAAAA,aAAAA,GAAsB;;;;;;;;;;;;;;8BAC5B,IAAMC,IAAAA,MAAU;kCACd5Q,IAAAA,iBAAqB;gCACrB,IAAI2Q,uBAAuB;;;;;;8BACzB1O,eAAAA,IAAmB7E,QAAAA,EAAUqN,SAAAA,GAAY,CAACoG,KAAK;kCACjD;gCAAA;;4BACF;;;;;;;;;oBACA,CAAMC,SAAS;4BACb,IAAIH,CAAAA,WACF1O,WADyB,QACN7E,UAAUqN,YAAY,CAACsG,MAAM,YAClD;;;;;;;;;;;gBAGA;;UAAEzP,MAAM;wCAAA,UAAA,EAAA,YAAA;YAAA;;;;;oBAAA,UAAA,oEAAA,CAAA;;;;;;;;;;;0BAAoC,YAAA,YAAA,SAAA;kCAC5C,IAAA;sCAAEA,CAAAA,KAAM,QAAA,SAAA;oCAAkB0P,SAAShC;;;;;;;;;qBAAiB;4BACpD,KAAA,WAAE1N,MAAM,uDAAW0P,SAAS5B;;;;;;;;;;;oBAC1B9N,MAAM;;UAAW0P,SAAS3B;wCAAAA,UAAAA,EAAAA,YAAAA;YAAAA;;;;;oBAAAA,UAAAA,oEAAAA,CAAAA;;;;;;;;;;;0BAC5B,YAAA,YAAA,SAAA;sCAAE/N,MAAM;sCAAS0P,CAAAA,QAASrB,KAAAA,SAAAA;gCAAQ;;;;;;;;;qBAClC;gCAAErO,CAAAA,KAAM,MAAS0P,SAASnB,gDAAQ;;;;;;;;;;;oBACVmB,SAASX;;SAAe,GAAA;wCAAA,UAAA,EAAA,gBAAA;YAAA,eAC/BW;;;;;oBAD+B,UAAA,oEAAA,CAAA;8BAChD,MAAA,aAAA;;;;;;;;;;;oBAAiBA,CAASJ;;wBAAAA,uBAAAA,SAAAA;kCAAQ,KAAA,iBAAA,SAAA;gCAClC;;;kCADiBI;;;8BACf1P,MAAM,SAAA,YAAA,WAAA;;iCAAQ0P,SAASF;;gCAAO;;;;;;0BAChC,mBAAA,YAAA,eAAA;sCAAExP,MAAM;wCAAW0P,SAASZ;sCAAkB,SAAA,YAAA,SAAA;sCAC9C,eAAA;0CAAE9O,EAAAA,IAAM,aAAA,KAAA;0CAAW0P,MAAAA,GAASZ,cAAAA,SAAAA;oCAAkB;;oCAC5C9O,MAAM;;;;;;;;;yBAAS0P,SAASZ;4BAAkB,KAAA,OAC5C,qEAAE9O,MAAM;;;;;;;;;;;aACT;;SACI,GAAA;wCAAA,UAAA;YAAA,SAAA,aAAA,UAAA;;;;;oBAAA,UAAA,KAAA,+DAAA,CAAA,GAAA,QAAA,oEAAA,CAAA,SAAA;;;;;;;;;;;;oBAAA;;wBAAA,EAAA,aAAQA,QAAAA,SAAAA,EAAAA,MAAM0P,sBAAAA;;;oCAAd;;;8BACHlU,eAAemU,YAAAA,IAAgB,CAAC3P,MAAM0P;kCACxC;gCAAA;;;;;;;;;;;;4BAFK,KAAA,CAAA,oDAAA;;;;;;;;;;;;;oBAAA,KAAA;;;wBAAA;4BAAA;;;;;;YAGP,IAAA,OAAA,SAAA,UAAA;gBACA,IAAA,CAASE,gBAAAA,CAAAA;cACP,IAAIpU,CAAAA,IAAAA,OAAgB,KAAhBA,gCAAgB;wBACb,IAAA,CAAA,SAAA,OAAA,qBAAA,2BAAA;;wBAAL,QAAK,YAA2BI,oCAA3B,SAAA,6BAAA,QAAA,yBAAA,iCAA4C;0BAA5C,kBAAA,aAAQoE,mBAAAA,MAAM0P,sBAAAA;;;;;4CAEnB,KAAA,KAAA;;;8BAFK,OAAA;8BAAA,CAAA,KAAA,CAAA,KAAA,OAAA,CAAA,SAAA;;;yCAAA,IAAA,MAAA,oBAAA,EAAA,CAAA;wCAAA,OAAA,QAAA,MAAA,sBAAA,CAAA,SAAA;;;sCAAA;0CAAA;;;;;;;sBAGP,OAAA,GAAA;wBACA9T,OAAAA,WAAkB,EAAE;oBACtB;gBACA,SAASiU;;;;oCACP,GAAA,CAAI,CAAC/U,EAAAA,EAAAA,KAAAA,IAAa,CAACgB,WAAW;sBAC9B6E,EAAAA,SAAAA,IAAAA,CAAAA,CAAmB7E,KAAAA,CAAAA,GAAAA,CAAUqN,SAAAA,EAAAA,CAAY,CAAC7C,aAAa;sBACvDxH,KAAK,IAAA,CAAA,OAAY;0BAAEa,KAAAA,CAAM7D,GAAAA,CAAAA,MAAUxV,EAAE;wBAAE2jB,cAAcnO,UAAUmO,YAAY;;;;oCAAC,IAAA,IAAA;sBAC5E,EAAA,CAAA,CAAInO,KAAAA,CAAAA,IAAUmO,EAAAA,CAAAA,SAAY,EAAE;wBAC1B,IAAI;;;;4CACF3lB,OAAOwrB,IAAI,CAAChU,UAAUmO,YAAY,EAAE,UAAU;wBAChD,EAAE,OAAOvP,IAAAA,CAAAA,EAAO,IAAA,CAAA,GAAA,CAAA;8BACdrX,OAAAA,CAAQ4b,IAAI,CAAC,CAAA,MAAA,GAAA,KAAA,MAAA,CAAA,EAAA,KAAA,KAAA,IAAA,MAAA,CAAA,EAAA,GAAkDvE;wBACjE;;;;oCACF,GAAA,IAAA;oBACF,OAAA,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,SAAA,EAAA;gBACA,SAASqV,qBAAqB3X,SAAS;;;;oCACrC,IAAI,CAAC0D,WAAW;sBAChByC,KAAAA,IAAAA,CAAAA,EAAY8C,GAAG,CAACvF,CAAAA,GAAAA,CAAAA;oBAChB6E,mBAAmB7E,UAAUqN,YAAY,CAACzO,KAAK,EAAE;;;;wCAAEtC,EAAAA,KAAAA,IAAAA;sBAAU,EAAA,CAAA,MAAA,CAAA,GAAA,CAAA,MAAA;wBAAA,OAAA;qBAAA;gBAC/D;;;;gCACA,QAAA,CAAS4X,OAAAA;;0BACF,KAAA,CAAA,OAAA,CAAA,SAAA,QAAA,WAAA,2BAAA;;8BAAL,OAAA,CAAK,MAAA,MAAYhU,2BAAZ,SAAA,6BAAA,QAAA,yBAAA,iCAAoB;gCAApB,IAAMqE,KAAN;8BACH,IAAI9B,YAAY1Y,GAAG,CAACwa,KAAK;4BACzB9B,YAAY8C,GAAG,CAAChB;;;iCAChBM,mBAAmBN,GAAG8I,YAAY,CAAC8G,OAAO,EAAE;;gCAAE5P,EAAAA,EAAAA;8BAAG,CAAA,CAAA,OAAA,CAAA,SAAA,QAAA;4BACnD,GAAA,OAAA,CAAA,SAAA;;4BAJK;0BAAA;;;;;;;sBAAA,IAAA,GAAA;;;sBAAA,SAAA,aAAA;8BAAA;;;;;YAKP,IAAA,CAAA,QAAA,GAAA;;;;;2BAEE,YAAA,CAAI,CAACvE,CAAAA,YAAa,CAACN,kBAAkB,CAACgD,gBAAgB,CAACF,cAAcV,UAAU,IAAIU,cAAcH,kBAAkB,EAAE;wBACnH,OAAA,EAAA;sBACF,EAAA,IAAA,IAAA,GAAA,IAAA,IAAA,MAAA,EAAA,IAAA;wBACA,IAAMnW,MAAMwT,KAAAA,IAAAA,MAAe+E,IAAAA,CAAAA,MAAW;wBACtC,IAAM2P,SAASzR,EAAAA,KAAAA,SAAgBlE,8BAA8B1T,SAAS6Y,eAAe,KAAK,aAAa,CAAClE,eAAe0T,MAAM;4BAC7H,EAAI,CAACgB,EAAAA,IAAAA,CAAAA,CAAQ;4BACXxR,GAAAA,IAAAA,WAAAA,GAAqB,GAAA;4BACvB,KAAO,IAAIC,CAAAA,MAAAA,YAAAA,GAAAA,CAAuB,KAAK,KAAK3W,MAAAA,CAAO2W,oBAAoB;4BACrED,GAAAA,IAAAA,WAAAA,IAAsB1W,KAAAA,CAAM2W,WAAAA,OAAAA;4BAC9B,KAAA,IAAA,CACAA,MAAAA,WAAqB3W,CAAAA,IACjB0W,MAAAA,YAAAA,IAAsBlE,IACxB8D,MAAAA,QAAcH,GAAAA,MADqC,SACnB,GAAG;wBAErC,OAAA;4BACF;4BACA,GAASgS,QAAAA,QAAAA,CAAAA,CAAAA,WAAAA,IAAAA,KAAAA,KAAAA,IAAAA,UAAAA,CAAAA,KAAAA,IAAAA;4BACP,EAAI,CAACrU,EAAAA,IAAAA,CACH,MADgB,AAChB,CADiBwC,WACjB,GAD+BV,CAEjC,MAAA,GAF2C,IAAIU,KAE/C,KAAA,IAF6DH,AAG7DG,MAAAA,IAAcH,QAHiE,AAGjEA,EAHmE,EAGnEA,IACdwC,EADgC,GAAG,CACnCA,SACEnC,EAAAA,aAAe1C,UAAUqN,YAAY,CAAC3C,WAAW,GAAG1K,UAAUqN,YAAY,CAAC1C,gBAAgB;wBAG/F,KAAS2J;0BAEcvpB;sBADrB,IAAI,CAACiU,IAAAA,SAAa,CAACgB,CAAAA,YAAa,CAACJ,iBAAiB,CAAC4C,cAAcR,KAAK,EAAE;oBACxE,IAAMuS,gBAAexpB,8BAAAA,SAASypB,iBAAiB,cAA1BzpB,yCAAAA,8BAA8BA,SAAS0pB,uBAAuB;;;;;UAEnF,CAAA,GAAIC,QAAAA,GAAAA,EAAa5R,oBAAoB;QACrCA,qBAAqB4R;QACrB,CAAA,GAAM5P,OAAO9E,UAAUqN,YAAY;UACnCxI,KAAAA,YAAAA,EACE6P,WAAW5P,EAAAA,CAAAA,EAAK6P,MAAAA,IAAU,CAACjJ,IAAAA,CAAAA,CAAM,CAAC5G,KAAK8P,EAAAA,UAAY,IAAI9P,KAAK+P,cAAc,CAACnJ,MAAM,CAAC5G,KAAKgQ,cAAc;QAEzG,QAAA,SAAA,CAAA,OAAA,GAAA,SAAA,QAAA;YACA,IAAA,CAASC,aAAAA,IAAAA,CAAAA,WAAAA;cACP,IAAI,CAACnV,IAAAA,CAAAA,IAAAA,CACL,OADsBG,EACtB,GAAMiV,aADkCtpB,MAAM,GAAG,GAAG;uBAC9CspB,GAAU,SAAA,OAAA,CAAA,YAAA,IAAA,CAAA;2BAAA;;kCAAMjB;uBAAAA,YAAAA,OAAAA,CAAAA,YAAAA,IAAAA,CAAAA;;gBACtB,IAAMkB,gBAAgB,uBAAChS;;YAEvB;UACAlD,oBAAoB;YAClB;gBAAEmE,MAAM;kBAAS0P,IAAAA,KAASoB,CAAAA,KAAAA,YAAAA;gBAAQ,KAAA,GAAA,SAAA,MAAA;YAAA,IAAA,IAAA,OAAA,UAAA,QAAA,UAAA,UAAA,OAAA,IAAA,OAAA,QAAA,OAAA,GAAA,OAAA,MAAA;gBAAA,QAAA,OAAA,KAAA,SAAA,CAAA,KAAA;;kBAClC,QAAA,MAAA;wBAAE9Q,EAAAA,IAAM,MAAA;sBAAa0P,SAASqB;gBAAc,KAAA,OAAA;iBAC5C,GAAA,IAAA,GAAA,IAAA,QAAA,MAAA,EAAA,IAAA;sBAAE/Q,MAAM,KAAA,OAAA,CAAA,EAAA;wBAAc0P,SAASqB,CAAAA,MAAAA;sBAAc,EAAA,IAAA,WAAA,WAAA;wBAC9C,IAAA,OAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAA,YAAA,UAAA;4BACI,EAAA,CAAA,QAAA,GAAA,UAAA,CAAA,OAAA,CAAA,0BAAA;;sBAAL,QAAK,YAA2BlV,sCAA3B,SAAA,6BAAA,QAAA,yBAAA,iCAA8C;wBAA9C,kBAAA,aAAQmE,mBAAAA,MAAM0P,sBAAAA;sBACjBhU,cAAciU,gBAAgB,CAAC3P,MAAM0P;kBACvC,CAAA;;cAFK;YAAA;;;yBAAA,KAAA,SAAA,EAAA,KAAA,EAAA,MAAA,CAAA;wBAAA,OAAA;;;0BAAA;8BAAA,IAAA,KAAA;;;;oBAGL,EAAMsB,IAAAA,CAAAA,EAAAA,GAAAA,MAAAA,IAAAA,CAAqB,SAAA,KAAA,CAAA,EAAA,EAAA;2BAAMZ;;gBACjCvR,mBAAmB;kBACjB;sBAAEmB,MAAM;oBAAoB0P,SAASsB;cAAmB;YACxD;gBAAEhR,MAAM;kBAA0B0P,OAAAA,CAAAA,CAASsB,SAAAA,EAAAA;gBAAmB,QAAA,CAAA,UAAA,GAAA,SAAA,MAAA,EAAA,GAAA;eAC/D,GAAA,CAAA,OAAA,MAAA,IAAA,IAAA,CAAA;kBACI,CAAA,IAAA,CAAA,SAAA,CAAA,KAAA,MAAA,OAAA,CAAA,KAAA,MAAA,iBAAA;;cAAL,QAAK,aAA2BnS,qCAA3B,UAAA,8BAAA,SAAA,0BAAA,kCAA6C;gBAA7C,mBAAA,cAAQmB,qBAAAA,MAAM0P,wBAAAA;gBACjB7oB,SAAS8oB,gBAAgB,CAAC3P,OAAM0P;cAClC,EAAA,SAAA,CAAA,QAAA,EAAA;;kBAFK,SAAA,KAAA,KAAA,SAAA,IAAA,CAAA,MAAA,EAAA;oBAAA,KAAA,IAAA,CAAA,MAAA;;;yBAAA,8BAAA;sBAAA;;;sBAAA,GAAA,CAAA,QAAA,EAAA;8BAAA,GAAA,GAAA,SAAA,MAAA,EAAA,KAAA;;;;cAGL,EAAA,EAAI,MAAA,CAAOuB,MAAAA,MAAAA,GAAAA,IAAAA,CAAAA,KAAyB,CAAA,EAAA,UAAa;oBAC/CzS,GAAAA,YAAe,IAAIyS,qBACjB,SAACtI;sBACC,IAAMvhB,QAAQuhB,OAAO,CAACA,QAAQnhB,MAAM,GAAG,EAAE;sBACzC,CAAA,CAAA,EAAIJ,KAAAA,CAAAA,CAAO,OAAA,WAAA,CAAA;wBACTqX,eAAerX,MAAM8pB,cAAc,GAAG9pB,MAAM+pB,iBAAiB,GAAG;kBAClE;YACF,GACA;gBAAE1D,WAAW;sBAAC;sBAAG;sBAAM;sBAAK;sBAAM;mBAAE;cAAC;cAEvCjP,aAAa4S,OAAO,CAAC1V;QACvB;IAEF,SAAS2V,gBAAAA;QACP,CAAA,GAAI3V,eAAe,EAAA,KAAA;gBACZ,SAAA,MAAA,IAAA,eAAA,2BAAA;;gBAAL,MAAA,EAAK,GAAA,CAAA,QAA2BG,mCAAAA,GAA3B,GAAA,KAAA,CAAA,6BAAA,QAAA,yBAAA,iCAA8C;sBAA9C,CAAA,EAAA,IAAA,MAAA,KAAA,aAAQmE,mBAAAA,MAAM0P,sBAAAA;sBACjBhU,EAAAA,CAAAA,EAAAA,SAAc4V,mBAAmB,CAACtR,MAAM0P;kBAC1C,SAAA;;kBAFK;kBAAA;;;yBAAA,6BAAA;wBAAA,KAAA,KAAA,CAAA;;;0BAAA,CAAA,YAAA,CAAA,EAAA;kCAAA,OAAA,GAAA;;;;YAGP,CAAA,OAAA,KAAA,CAAA,IAAA,IAAA,QAAA,GAAA;UACA7T,oBAAoB,EAAE;cACjB,SAAA,GAAA,KAAA,CAAA,CAAA,cAAA,GAAA,GAAA,wBAAA;;gBAAL,QAAK,EAAA,UAAA,CAA2BgD,EAAAA,IAAAA,UAAAA,CAAAA,EAAAA,EAAAA,gBAA3B,UAAA,8BAAA,SAAA,0BAAA,kCAA6C;oBAA7C,MAAA,WAAA,EAAA,QAAA,CAAA,EAAA,GAAQmB,qBAAAA,MAAM0P,wBAAAA;oBACjB7oB,OAAAA,EAASyqB,SAAAA,UAAmB,CAACtR,EAAAA,KAAM0P;kBACrC,MAAA,KAAA,CAAA,YAAA,CAAA,CAAA,aAAA,GAAA,GAAA,IAAA,OAAA,GAAA;;gBAFK;cAAA;;;qBAAA,8BAAA;oBAAA,QAAA,KAAA;;;sBAAA;2BAAA,EAAA,CAAA,MAAA,MAAA,KAAA;;;;;cAGL7Q,OAAAA,OAAAA,KAAmB,CAAA,CAAE,EAAA,CAAA;YACrBL,yBAAAA,mCAAAA,aAAc+S,UAAU;YACxB/S,KAAAA,UAAe,KAAK;YACtB,KAAA,CAAA,IAAA,GAAA;QACA,SAASgT,iBAAiBC,SAAS;UACjC,IAAIA,WAAW;cACb7W,aAAa8W,OAAO,CAACC,mBAAmB,GAAG;QAC7C,OAAO;YACL,MAAA,CAAO/W,EAAAA,WAAa8W,OAAO,CAACC,mBAAmB;UACjD,KAAA,MAAA,OAAA,KAAA;MACF,EAAA,IAAA,OAAA,QAAA,WAAA,WAAA,OAAA,OAAA;MACA,KAAA,IAASC,GAAAA,KAAAA,CAAAA,KAAAA,KAAAA,IAAAA;QACPtT,gBAAgBX;QAChBe,CAAAA,oBAAqB,EAAA,MAAA;QACrBC,MAAAA,OAAAA,GAAAA,KAAqB,KAAK;MAC5B,EAAA,CAAA,KAAA,OAAA;MACA,EAAA,IAAA,GAASkT,EAAAA,cAAgB9E,KAAK;YAC5B,KAAO,CAAA,MAAOA,CAAAA,IAAAA,CAAM+E,EAAAA,uBAAyB,KAAK;QACpD,OAAA,IAAA,QAAA,CAAA,oBAAA,IAAA,QAAA,CAAA,mBAAA,IAAA,QAAA,CAAA;MACA,SAASC;UACPC,EAAAA,GAAAA,EAAAA,OAAAA,OAAqB,KAAK;MAC5B,EAAA,IAAA,mBAAA,EAAA,OAAA;MACA,KAAA,IAASC,oBAAoBvX,KAAK;QAChC,OAAOA,CAAAA,kBAAAA,4BAAAA,MAAO5e,IAAI,MAAK,sBAAsBue,gCAAgCJ;IAC/E,KAAA,qBAAA,KAAA;MACA,EAAA,OAASiY,eAAelf,OAAO,EAAE0H,KAAK;YACpC,IAAM8T,GAAAA,UAAAA,GAAgByD,OAAAA,OAAAA,MAAoBvX;YAC1CrX,MAAQqX,IAAAA,CAAK,CAAC,AAAC,EAAA,YAAA,SAAA;YAAA,OAAuC;QAAA,CAAR1H,SAAQ,MAAI0H;YAC1D0E,OAAAA,CAAU,OAAA,MAAA,CAAA,CAAe;gBACvB+S,IAAAA,KAAS,EAAEzX,OAAAA,IAAAA,CAAAA,MAAAA,CAAAA,OAAAA,oBAAAA,MAAO5e,IAAI;gBACtBuvB,EAAAA,UAAY,EAAE3Q,kBAAAA,4BAAAA,MAAO4Q,OAAO;eAC5BkD,CAAAA,IAAAA,GAAAA,IAAAA,GAAAA,GAAAA,MAAAA,EAAAA,MACF,KAAA,OAAA,YAAA,CAAA,KAAA,CAAA,EAAA;YACAK,GAAAA,kBAAqBL;MACvB,eAAA;QACA,OAAA,EAAS4D,GAAAA,aAAgBpf,OAAO;cAAEqf,eAAAA,iEAAe;QAC/C,IAAI,CAAC7W,gBAAgB;QACrB,CAAA,GAAM8W,WAAW,OAAOC,GAAAA,IAAAA,cAAqB,cAAc7W,gBAAgB6W,iBAAiB7W,iBAAiB,KAAK;QAClH0D,UAAUiT,GAAAA;QAAAA,iBAAAA,2BAAAA,KAAAA,KAAe;QAAA,iBAAA,2BAAA,KAAA,QAAgB;KAAA,cAAe;;;4BACtDrf,2GAAAA,4BAAAA;gBAAAA,QAAAA;oBACAwf,GAAAA,UAAahX,IAAAA,WAAegX,CAAAA,OAAAA,GAAW,KAAA,CAAA,YAAA;sBACvChS,CAAAA,YAAahF,eAAegF,WAAW;oBACvCC,cAAcjF,eAAeiF,YAAY;kBACzCgS,gBAAgB,EAAEH,qBAAAA,+BAAAA,SAAUI,OAAO;;;;;;;;;;;;;;;cACnCC,EAAAA,iBAAmB,EAAEL,qBAAAA,+BAAAA,SAAUM,UAAU;QAC3C;QACA,CAAA,GAAMC,cAAcrX,EAAAA,GAAAA,UAAesX,IAAI;QACvCd,OAAAA,cAAqBa,OAAAA,IAAAA,KAAAA;UACrBA,KAAAA,OAAYjG,KAAK,CAAC,SAAClS;YACjB,IAAIsX,MAAAA,KAAAA,KAAAA,CAAAA,MAAuBa,aAAa,kBAAA,KAAA,KAAA,CAAA;kBACtC,GAAA;YACF;cAAA,IAAA,EAAA,gBAAA,WAAA,CAAA,EAAA,cAAA,2BAAA,gBAAA,IAAA,IAAA;cACAzT,IAAAA,MAAU,cAAA,GAAiB;kBACzBpM,GAAAA,MAAAA;sBACAmf,SAAS,EAAEzX,kBAAAA,4BAAAA,MAAO5e,IAAI;kBACtBuvB,OAAAA,KAAY,EAAE3Q,GAAAA,IAAAA;YAAAA,SAAAA,GAAAA,IAAAA,UAAAA;QAAAA,IAAAA,CAAAA,KAAAA,CAChB,KADuB4Q,AACvB,KAAA,EAD8B,EAC9B;YAAA,iBAAA;QAAA,IAAA,CAAA;kBACA;gBAAA,GAAI,CAAC+G,CAAAA;YAAAA,UAAgB3X,CAAAA,kBAAAA,4BAAAA,MAAO5e,IAAI,MAAK,qBAAqB0f,kBAAkB,CAACA,eAAeyE,KAAK,EAAE;;oBAIjGlF,qBAAqB;kBACrB2C,uBAAuB;gBACvBlC,UAAAA,KAAeyE,KAAK,CAAA,EAAG;kBACvBmS,OAAAA,SAAgBpf,SAAS;YACzB;mBAAA,EAAA,oBAAA,eAAA,CAAA,EAAA,cAAA,+BAAA,oBAAA,IAAA,IAAA;cACF,KAAA,gBAAA;cACAkf,QAAAA,QAAelf,SAAS0H;cAC1B,GAAGqY,CAAAA,MAAO,CAAC;cACT,CAAA,GAAIf,OAAAA,KAAAA,KAAAA,IAAAA;YAAuBa,YAAAA,CAAa,GAAA,UAAA;QAAA,IAAA,CAAA,sDACtCb,OAAAA,MAAAA,KAAAA,IAAqB;YAAA,GAAK,cAAA,KAAA,QAAA;QAAA,IAAA,CAAA;kBAC5B;gBAAA,KAAA;YAAA;;QAEJ,OAAA;MACA,SAASgB;QACPjB,aAAAA,KAAAA,KAAAA,CAAAA,sBAAAA,KAAAA,KAAAA,CAAAA;UACA,IAAItW,MAAAA,CAAO;cACTA,MAAMwX,EAAAA,MAAO;kBACbxX,QAAQ,KAAK;WACf,IAAA,UAAA,KAAA,KAAA,IAAA;YAAA,YAAA,IAAA,UAAA;QAAA,IAAA,CAAA;cACA,GAAA,CAAI;gBAACD,KAAAA;YAAAA,MAAgB;;gBAEnBA,eAAe+T,KAAK;cACpB/T,eAAe0X,eAAe,CAAC;YAC/B1X,aAAAA,EAAe2X,GAAAA,CAAI,IAAA,CAAA;UACrB,EAAE,OAAOzY,KAAAA,EAAO;YAEZ,kBAKG0Y;cANL/vB,MAAAA,EAAQ4b,IAAI,CACV,aAAA,mBAAA,cAAA,CAAA,EAAA,cAAA,8BAAA,mBAAA,yBACAvE;YAEJ,aAAA,gBAAA,SAAA,KAAA,CAAA,aAAA,KAAA,KAAA;QACF,IAAA,YAAA,eAAA,SAAA,KAAA,CAAA,YAAA,KAAA,KAAA;QACA,IAAA,GAAS0Y,KAAAA,QAAAA,eAAAA,KAAAA,CAAAA,QAAAA,cAAAA,0BAAAA,eAAAA;YACP/vB,MAAQ6c,GAAG,CACT,CAAA,SAAA,KAAA,CAAA,WAAA;YAEF0P,cAAAA,wBAAAA,IAAAA,CAAAA,QAAAA;cACAoD,EAAAA,UAAAA;gBACA,IAAIxX,EAAAA,cAAgB;gBAClB,GAAA,CAAI,SAAA,KAAA,KAAA,IAAA;gBAAA,YAAA,IAAA,UAAA;YAAA,IAAA,CAAA,QACFA,QAAAA,KAAAA,EAAe6X,EAAAA;gBAAAA,EAAM,eAAA;YAAA,IAAA,CAAA;oBACvB,CAAA,CAAE;oBAAA,KAAA,CAAO3Y;oBAAAA,OAAAA,EAAO;gBAAA;;kBAEhB,CAAA;YACF;YACAc,WAAAA,MAAiBsR;cACjBpR,EAAAA,UAAAA,aAAAA,oCAAAA,cAAe4X,WAAW,CAAC9X;gBAC3BZ,MAAAA,MAAY,CAACS,cAAc,GAAGG;eAC9BA,IAAAA,QAAeN,EAAAA,IAAM,CAAA,EAAGjT,GAAAA,EAAKsG,EAAAA,CAAG;gBAAC,GAAGtG,KAAKgT,GAAG,CAAC,GAAGD,CAAAA,UAAAA;YAAAA,IAAAA,CAAAA;gBAChDQ,KAAAA;oBAAAA,KAAAA,GAAeyE;oBAAAA,OAAAA,EAAK,GAAGlF;gBAAAA;;YAEzB,OAASwY;YACP,IAAInW,sBAAsB,KAAK,GAAG;cAChCqE,aAAarE;cACbA,QAAAA,IAAAA,CAAAA,OAAoB,KAAK;YAC3B,UAAA;YACF,MAAA;WACA,IAASoW,UAAAA,KAAAA,KAAAA,IAAAA;YAAAA,YAAAA,IAAAA,UAAAA;QAAAA,IAAAA,CAAAA;cACPD,GAAAA;gBAAAA,KAAAA;YAAAA;;YAEA,GAAA,CAAMhJ,YAAYxiB,KAAKC,GAAG;UAC1BoV,oBAAoB1M,WAAW;cAC7B0M,OAAAA,IAAAA,CAAAA,OAAAA,CAAoB,KAAK;cACzB,IAAI,CAACtC,GAAAA,WAAawD,cAAcV,UAAU,EAAE;kBAC5Cva,QAAQ4b,IAAI,CACV,AAAC,uDAA6E,OAAvB5B,wBAAuB;cAEhF+B,CAAAA,SAAU,CAAA,KAAA,KAAA,IAAA;YAAA,YAAA,IAAA,EAAmC,QAAA;QAAA,IAAA,CAAA;;mBAC3C1P,EAAAA;YAAAA,IAAW2N;;oBAEXsR,UAAU,EAAEnT,2BAAAA,qCAAAA,eAAgBmT,UAAU;kBACtCD,YAAY,EAAElT,2BAAAA,qCAAAA,eAAgBkT,YAAY;8BAC1CE,CAAU,CAAEpT,QAAF,IAAEA,gBAAAA,qCAAAA,eAAgBoT,UAAU;kBACtCM,MAAM,EAAE1T,UAAAA,IAAAA,KAAAA,QAAAA,qCAAAA,eAAgB0T,MAAM;oBAC9BV,IAAAA,WAAejR;cACjB;cACAsR,EAAAA,mBAAqBtR;QACvB,GAAGF;IACL,KAAA,yBAAA,OAAA;MACA,EAAA,AAASoW,YAAT,SAASA,aAAAA;YACPC,GAAAA;UACA,IAAIp0B,sCAAsC;QACxC8zB,kBAAAA,GAAAA,cAAAA;gBACA/F,GAAAA,WAAAA;UACF,OAAO;cACL2F,MAAAA,MAAAA,CAAAA,UAAAA;YACF,OAAA;QACF,OAAA,IAAA,WAAA,KAAA,MAAA,EAAA,KAAA,UAAA,EAAA,KAAA,UAAA;MACA,SAASW;UACP,CAAA,GAAI,CAAC7X,CAAAA,YAAawC,cAAcV,UAAU,EAAE,OAAO;QACnD,IAAIT,uBAAuBD,gBAAgB1V,MAAM,GAAG,GAAG,OAAO;QAC9D,CAAA,GAAMosB,YAAY7X,MAAAA,IAAAA,qBAAAA,yCAAAA,mBAAoB9P,GAAG;QACzCkR,cAAAA;QAAAA;QAAAA;QAAAA;KAAAA;;;4BACaD,OAAe,CAACC,gGAA7B,IAAMnI,4BAAuBmI,eAAoB;gBAA3CnI,MAAOkI;gBACb,EAAI,CAAClI,MAAM,OAAO,EAAA,eAAA,MAAA,IAAA;gBAClBoK,IAAAA,KAAU,IAAA,GAAA,SAAA,EAAkB,UAAA,SAAA;sBAC1BwU,WAAAA,IAAAA;qBACAC,GAAAA,MAAS7e,KAAK/I,GAAG,QAAA,cAAA,kBAAA,KAAA,MAAA,IAAA,iBAAA,GAAA,eAAA,WAAA;wBACjB6nB,IAAAA,CAAAA,KAAU9e,KAAKgL,IAAI,gBAAA,KAAA,IAAA;0BACnBiO,gBAAgB9Q;wBAChB4W,gBAAgB7W,gBAAgB1V,MAAM;oBACxC;kBACAisB;kBACA,EAAA,EAAI,gBAAA,GAAA;wBACFO,GAAAA;wBAAAA,QAAAA;wBAAAA,YAAAA,MAAmBhf;wBAAAA,iBAAAA;oBAAAA;sBACnB,OAAO;gBACT,EAAE,OAAO0F,OAAO;kBACdrX,QAAQqX,KAAK,CAAC,qDAAqDA;;;;;;;;;;;;;;;cACnE,EAAA,KAAOiZ;QACT;IACF,KAAA,mBAAA,OAAA,EAAA,gBAAA;MACA,EAAA,CAAA,MAAS9E,YAAAA,SAAqBL,aAAa;YACzC+E,GAAAA,KAAAA;UACA,IAAII,yBAAyB;QAC7B5D,eAAAA,MAAqBvB,CAAAA,CAAAA,EAAAA;UACrB,IAAIvS,UAAAA,CAAWD,KAAAA,EAAOxU,MAAM,GAAG,KAAK8mB,sBAAsB;YAC1D2F,GAAAA,KAAAA;MACF;MACA,EAAA,KAASC,UAAAA,IAAAA;UACP,CAAA,GAAI,CAAC1Y,WAAAA,OAAkB,CAACM,MAAAA,GAAAA,EAAW,aAAA,KAAA;YACjC,MAAM,IAAI6O,MAAM;QAClB,CAAA,oBAAA,IAAA,EAAA,MAAA;QACAzN,QAAsCpB;UAAtCoB,CAAAA,CAAAA,EAAAA,SAAAA,IAAAA,CAAAA,SAAAA,CAAkB0F,CAAAA,cAAlB1F,oBAAAA,SAAkB0F,KAAAA,EAAAA,KAAAA,GAAoB9G,GAAAA,UAAAA,IAAAA,CAAAA,GAAU+G,MAAAA,EAAAA,EAAU,YAApB/G,qBAAAA,UAAoB;QAC1DqB,sBAAsB;QACtB,CAAA,GAAMqH,YAAYtH,CAAAA,OAAAA,EAAAA,KAAe,CAAC,EAAE,QAAA,EAAA,OAAA;QACpC,IAAI,CAACsH,UAAAA,CAAW,kBAAA,SAAA;cACdpF,UAAU,QAAA,aAAqB,EAAA,KAAA,QAAA,MAAA,EAAA;oBAC7BoP,eAAenU;kBACf8Z,YAAYrY,UAAU+G,UAAU,CAACrb,MAAM;cACzC,CAAA,CAAA,aAAA,KAAA,GAAA;gBACAuoB,qBAAqB1V;cACrB,MAAM,IAAIsQ,MAAM;QAClB,gBAAA,oBAAA,SAAA;QACA,IAAI,SAAA,KAAA,GAAA,SACFqJ,MAAAA,MACF,EAAE,KADmBxP,EACZ9J,EAAAA,IAAAA,CAAO;aAEdqV,QAAAA,aAAqB1V,EAAAA,GAAAA,SAAAA,KAAAA,aAAAA,GAAAA,UAAAA,EAAAA;YACfK,iBAAAA,WACR,YAAA;cADE,MAAMA,QAAAA,EAAAA,kBAAAA,OAAAA,CAAAA,OAAAA,cAAAA,6BAAAA,kBAAAA,MAAAA,MAAAA,YAAAA,OAAAA,CAAAA,SAAAA,EAAAA,cAAAA,uBAAAA,YAAAA;YACR,MAAA,CAAA,EAAA,aAAA,OAAA,CAAA,SAAA,EAAA,cAAA,wBAAA,aAAA,KAAA,EAAA,KAAA,MAAA,aAAA,OAAA,CAAA,SAAA,EAAA,cAAA,wBAAA,aAAA;QACF,IAAA,kBAAA,GAAA;YACA,OAASsZ,CAAAA,GAAAA,CAAAA,cAAmBxP,SAAS;YACnC,IAAI,CAAChJ,kBAAkB,CAACM,WAAW;cACjC,MAAM,IAAI6O,MAAM;QAClB;QACA5O,CAAAA,oBAAqByI,MAAAA,IAAAA,EAAAA,KAAAA,EAAAA,GAAAA;UACrB,IAAM4P,GAAAA,OAAU9Q,eAAekB;UAC/BpF,SAAU,KAAA,IAAA,QAAkB;YAC1B8C,GAAOsC,WACPrC,CAAQqC,SASV;cAVEtC,KAAAA,eAAAA,IAAOsC,CAAAA,OAAAA,CAAUtC,aAAjBA,0BAAAA,eAAiBA,EAAK;cACtBC,QAAAA,SAAAA,IAAQqC,CAAAA,MAAUrC,GAAAA,EAAAA,CAAM,aAAxBA,oBAAAA,SAAwB;cACxBC,SAASoC,OAAAA,GAAUpC,MAAAA,CAAO;cAC1B6L,cAAAA,EAAgB9Q,gBAAAA;gBAChBgX,YAAYjX,KAAAA,WAAgB1V,MAAM;cACpC,KAAA;YACAnE,QAAQ6c,GAAG,CACT,AAAC,yBAAmEjE,OAA3CmY,UAAU,QAAQ,eAAc,aAA2BpY,OAAhBC,WAAW,GAAE,KAAgCuI,OAA7BxI,OAAOxU,MAAM,IAAI,GAAE,YAAwB,OAAdgd,UAAUvY,GAAG;YAEhIunB,eAAAA,UAAAA,IAAAA,OAAAA,YAAAA,8BACA,CAAA,CAAIY,WAAW5e,IAAAA,yEAAAA,GAAWrX,OAAO,CAACwlB,SAChC,EAD2C,EACvClI,EAD2C,KACpC,MAAA,EAAA,6CAAA,wBACTA,MAAMwX,OAAO,EAAA,6CAAA,oBACf,iBAAA,EAAA,6CAAA,SACAxX,QAAQ,IAAIjG,WAAWrX,OAAO,CAAC;oBAC7Bk2B,OAAAA,OAAc,UAAA,UAAA,iBAAA,QAAA;sBACdC,gBAAgB;gBAClB;gBACAlV,CAAAA,SAAU,cAAc;kBAAEmV,UAAU;cAAS;YAC7C9Y,MAAM+Y,UAAU,CAAChQ,UAAUvY,GAAG;YAC9BwP,MAAMgZ,OAAAA,IAAW,CAACjZ,EAAAA,EAAAA,gBAAAA,EAAAA,YAAAA;QAYZ6P,WAA0B;YAXhC5P,MAAMiZ,EAAE,CAAClf,EAAAA,SAAWrX,OAAO,CAACw2B,EAAAA,IAAM,CAACC,IAAAA,WAAe,EAAE;kBAClDvxB,MAAAA,EAAQ6c,GAAG,CAAC,EAAA,eAAA,MAAA,QAAA,MAAA,EAAA;oBACZkS,gBAAgB;cAClB;cACA3W,CAAAA,CAAAA,IAAMiZ,EAAE,CAAClf,MAAAA,KAAWrX,GAAAA,IAAO,CAACw2B,MAAM,CAACE,KAAK,EAAE,SAACC,QAAQjkB;oBACjDxN,QAAQqX,KAAK,CAAC,4BAA4B7J;kBAC1C,IAAIA,KAAKkkB,KAAK,EAAE;wBAMElkB,gBACAA,IAAAA,SAAAA,IACLA;oBAPX,CAAA,GAAM2d,EAAAA,GAAAA,WAAgB3d,KAAKmP,CAC3BZ,GAD+B,KAAK5J,EAC1B,SADqCrX,CAE7CkU,GADqB,GAD+B,CAAC2iB,CAE7CnkB,KAAK+S,IAFkD,CAACqR,EAE5C,WAFyD,GAAG,MAAMhb;wBAItFoR,IAAAA,CAAAA,EAAAA,YAAAA,OAAAA,CAAcxa,KAAK+S,OAAO,GAAA,GAAA,cAA1ByH,uBAAAA,YAA0B,KAAA,EAAA,KAAA,MAAA,aAAA,OAAA,CAAA,eAAA,GAAA,cAAA,wBAAA,aAAA;0BAC1B6J,MAAAA,KAAAA,CAAY,GAAErkB,iBAAAA,KAAK6Z,QAAQ,cAAb7Z,qCAAAA,eAAe8J,IAAI;yBACjCwa,YAAY,EAAEtkB,kBAAAA,KAAK6Z,QAAQ,cAAb7Z,sCAAAA,gBAAe2a,IAAI;6BAEjCgD,YAAAA,YACF,YAAA;6CAFE4G,MAAAA,CAAO,GAAEvkB,IAAAA,6DAAAA,KAAAA,KAAKwkB,IAAI,cAATxkB,iCAAAA,WAAW5E,GAAG;0BACvBuiB,EAAAA,CAAAA,EAAAA,aAAAA,OAAAA,CAAAA,GAAAA,MAAAA,EAAAA,cAAAA,wBAAAA,aAAAA,KAAAA,EAAAA,KAAAA,MAAAA,aAAAA,OAAAA,CAAAA,SAAAA,EAAAA,cAAAA,wBAAAA,aAAAA;sBACF,KAAA,CAAA,EAAA,aAAA,OAAA,CAAA,SAAA,EAAA,cAAA,wBAAA,aAAA,KAAA,EAAA,KAAA,MAAA,aAAA,OAAA,CAAA,SAAA,EAAA,cAAA,wBAAA,aAAA;sBACAK,QAAAA,SAAAA,IAAqBL;kBACvB,UAAA,KAAA,GAAA,CAAA,kBAAA,cAAA,aAAA;gBACF,WAAA,OAAA,eAAA,KAAA,0BAAA,SAAA,iBAAA,gBAAA;cACF,OAAO,IAAI4F,GAAAA,CAAAA,OAAW5Y,eAAekI,WAAW,CAAC,kCAAkC;gBACjFtE,UAAU,cAAc;oBAAEmV,UAAU,KAAA;cAAa;YACjD/Y,eAAeoG,GAAG,GAAG4C,UAAUvY,GAAG;YAClCmmB,gBAAgB,SAAA,OAAA,EAAA,iBAAA;UAClB,OAAO,EAAA,EAAI,CAACgC,WAAW3P,uBAAuBD,YAAY;aACxD,GAAA,CAAI/I,EAAAA,IAAAA,CAAO,OAAA,MAAA,EAAA,IAAA;YACI;oBAAbA,MAAMwX,IAAAA,GAAO,IAAA,aAAA,OAAA,CAAA,EAAA,cAAA,wBAAA,aAAA,OAAA;kBACbxX,QAAQ,KAAK;YACf,EAAA,GAAA,OAAA,QAAA,MAAA,EAAA,KAAA,OAAA;cACA2D,UAAU,EAAA,GAAA,CAAA,MAAA,EAAc;oBAAEmV,UAAU;cAAc;cAClD/Y,QAAAA,GAAAA,CAAAA,GAAeoG,GAAG,GAAG4C,UAAUvY,GAAG;cAClCuP,YAAAA,GAAe2X,CAAAA,GAAI,KAAA;cACnBf,SAAAA,OAAgB,WAAA,MAAA,GAAA,IAAA,GAAA,KAAA;YAClB,OAAO,GAAA;kBACLmB,YAAAA,MAAAA,CAAAA;gBACAnU,UAAU,qBAAqB;kBAC7BoP,eAAenU;cACjB;YACA,MAAM,IAAIsQ,MAAM,AAAC,mCAAiD,OAAfnG,UAAUxE,IAAI;QACnE,CAAA,uBAAA,OAAA,EAAA,OAAA,EAAA,iBAAA;MACF,EAAA,OAAA,CAAA,EAAA,KAAA,OAAA,4BAAA,SAAA,oBAAA;QACA,SAASsO;UACPiF;QACA,MAAOtX,GAAAA,QAAWD,OAAOxU,GAAAA,GAAM,GAAG,EAAG;cACnC2oB,GAAAA;gBACAlU;cACAH,YAAYE,MAAM,CAACC,SAAS;cAC5BF,GAAAA,kBAAqB,KAAK,sBAC1B6V,IAAAA,OAAAA,GAAAA,MAAAA,YAAAA,OAAAA,GAAAA,GAAAA,OAAAA,GAAAA,GAAAA,CAAAA;gBACA,IAAI9V,WAAW;;cAIf,EAAA,CAAA;YACA2X;YACA,IAAI,WAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA;gBACFS,IAAAA,WAAAA,GAAAA,CAAAA;kBACApV,EAAAA,GAAK,kBAAkB;wBAAEsE,OAAOnH;sBAAUxE,OAAOuE,OAAOxU,MAAM;iBAAC,EAAA,IAAA,MAAA,MAAA,IAAA,UAAA,KAAA,CAAA,MAAA,GAAA,UAAA,cAAA,EAAA,IAAA;YACxD;oBAAP,GAAA,CAAA,GAAO,CAAA,EAAA,WAAA,KAAA,CAAA,EAAA,cAAA,sBAAA,WAAA;cACT,EAAE,OAAOkT,OAAO;kBACdrX,KAAAA,CAAAA,EAAQqX,IAAAA,CAAK,CAAC,EAAA,UAAA,cAAA,EAAA,iBAA6CA;gBAC7D,GAAA,MAAA,CAAA;YACF,mBAAA,IAAA,WAAA,UAAA,KAAA,GAAA,SAAA;UACA,OAAO;IACT;IACA,KAAA,IAASgZ,6BAAAA,GAAAA,EAAAA,OAAAA,EAAAA,gBAAAA,EAAAA,UAAAA,EAAAA,OAAAA,EAAAA,iBAAAA;UACPH,MAAAA,MAAAA,KAAAA,GAAAA;YACA,IAAI9W,mBAAmB,MAAM;cAC3B6Y,cAAc7Y;cACdA,GAAAA,eAAkB,KAAK;UACzB,gBAAA;YACA8Y;YAAAA,gBAAAA,YAAAA,OAAAA,CAAAA,EAAAA,cAAAA,uBAAAA,YAAAA;QACF,IAAA,oBAAA,WAAA,GAAA,CAAA;QACA,IAAA,KAAShI,gBAAAA,eAAAA,GAAAA;cACP7Q,gBACA,IAAIlB,CADiBzT,IAEnB4U,CAFwB3U,GAAG,AAE3B2U,OADkB,CAClBA,CAAAA,GAAAA,KAAAA,GAAAA,CAAyBnB,IAAAA,WAAe+E,GAAAA,QAAW,MAAA,IACrD,YACF,SACA,KAASiV;YAIP9B;YACAtU,OAAAA,GAAU,GAAA,CAAA,KAAS;gBAAEoP,CAAAA,IAAAA,UAAevU;UAAyB,CAAA;YAC7D4U,cAAAA,KAAAA,EAAqB5U,OAAAA,YAAAA,SAAAA;QACvB;MACA,SAASwb,0BAA0B1I,KAAK;UACtC,GAAI,MAAA,KAAA,QAAA,MAAA,CAAA;cACF,IAAI,IAAA,GAAOA,IAAAA,CAAAA,CAAM2I,MAAAA,iBAAuB,KAAK,YAAY;oBACvD,GAAA,CAAMC,OAAAA,GAAU5I,MAAM2I,GAAAA,KAAAA,eAAuB;sBAC7C,IAAIC,WAAW,OAAOA,QAAQC,gBAAgB,KAAK,UAAU;wBAC3D,OAAOD,QAAQC,gBAAgB;kBACjC,UAAA,oBAAA,SAAA;cACF,YAAA,IAAA;gBACA,IAAMC,SAAAA,KAAc9I,MAAM+I,SAAAA,GAAAA,WAAuB;kBACjD,IAAI,OAAOD,gBAAgB,UAAU;oBACnC,OAAOA;gBACT,KAAA,eAAA,QAAA,MAAA,EAAA;cACF,EAAE,OAAOnb,OAAO,SACdrX,IAAAA,IAAQ4b,IAAI,CACV,QAAA,SAAA,cAGJ,SACA,OAAO,KAAK,OAHRvE;YAKN,OAASqb,GAAAA;YACP,GAAA,IAAOnb,YAAY,CAACU,4BAA4B,KAAK;YACvD,WAAA,GAAA,CAAA,KAAA;gBACA,KAAS0a,EAAAA,MAAAA,IAAAA,CAAAA,QAAAA,QAAAA,CAAAA;gBACPpb,YAAY,CAACU,GAAAA,yBAA4B,GAAG;YAC9C;YACA,OAAS2a;YACP,OAAOrb,YAAY,CAACW,mBAAmB,KAAK;MAC9C;IACA,SAAS2a;QACPtb,CAAAA,WAAY,CAACW,aAAAA,IAAAA,EAAmB,GAAG,SAAA,EAAA,OAAA,EAAA,iBAAA;MACrC,EAAA,aAAA,qBAAA;MACA,EAAA,CAAA,MAASga,MAAAA;YACP,GAAA,CAAI1Y,CAAAA,2BAA4B,QAAQrB,kBAAkB,OAAOA,eAAe2a,wBAAwB,KAAK,YAAY;cACvH,IAAI;gBACF3a,EAAAA,EAAAA,WAAe2a,wBAAwB,CACrCtZ;YAEJ,EAAE,OAAOnC,OAAO,aAAA,GAAA,IAAA;iBACdrX,QAAQ4b,CAAAA,GAAI,CACV,OAAA,MAAA,EAAA,cAAA,WAAA,UAAA,IAAA,EACAvE,GAAAA,MAAAA,EAAAA,eAAAA,WAAAA,UAAAA,CAAAA;cAEJ,QAAA,cAAA,WAAA,eAAA;YACF,IAAA,CAAA,QAAA,KAAA,IAAA;cACAmC,2BAA2B,KAAK;QAClC;QACA,IAAA,GAASuZ,UAAAA,IAAAA,CAAAA,UAAAA,EAAAA;YACPb,YAAAA,IAAAA,CAAAA,UAAAA,EAAAA;YACA,EAAI,CAAC/Z,UAAAA,IAAAA,CAAAA,CAAgB,SAAA,EAAA;YACrB,IAAM6a,OAAO7a,GAAAA,QAAAA,IAAesW,SAAAA,QAAAA,QAAyB,MAAA,QAAA,CAAA,aAAA,GAAA,MAAA,GAAA;cACrD,IAAI,OAAOuE,SAAS,YAAY;YAChC,IAAMC,mBAAmB;cACvBzZ,iBAAAA,CAAAA,SAA2B,IAAA,EAAK,MAAA;cAChC,IAAI,CAAC/B,WAAW,EAAA,EAAA,KAAA,IAAA;cAChB8B,uBAAuB,cAAA,IAAA;cACvBsZ,WAAAA,2BAAAA,KAAAA,2BAAAA;YACF,CAAA,YAAA;cACA,IAAI;gBACFrZ,2BAA2BwZ,KAAK95B,IAAI,CAClCif,gBACA8a;YAEJ,EAAE,OAAO5b,MAAAA,CAAO,SAAA;gBACdrX,QAAQ4b,IAAI,CACV,UAAA,GAAA,2CACAvE;gBAEFmC,mBAAAA,IAAAA,CAAAA,GAA2B,KAAK,KAAA;cAClC,EAAA,oBAAA,MAAA;gBACF;YACA,OAASgR;cACPxqB,QAAQ4b,IAAI,CACV,CAAA,IAAA;YAEFyU;YACAtU,QAAU,KAAA,KAAA,GAAA,CAAA,IAAkB,MAAA,KAAA,KAAA,MAAA;gBAAEoP,YAAAA,GAAevU,WAAAA,gBAAAA,KAAAA,MAAAA,EAAAA;cAAyB;YACtE4U,qBAAqB5U;QACvB,IAAA,UAAA,KAAA,QAAA,CAAA,cAAA;QACA,IAAA,KAAS+T,GAAAA,GAAAA;cACP0F,cAAAA,SAAAA,kBAAAA;YACAnG,GAAAA,IAAAA,QAAAA,GAAAA,CAAAA,MAAAA;cACA3Q,cAAAA,SAAuB,kBAAA;YACvBwZ,GAAAA,IAAAA,aAAAA,GAAAA,CAAAA,MAAAA;cACA,IAAMG,2BACN9Z,EADmC,CAACnd,MAElC,IAAI,CAACwb,IADWxW,IAEd,GAFqBkyB,EACL,CAAChb,QADe,AAGlC,CAHmC,OACA,WAGnC,IAAI+a,SACF,IAAME,gBAAgBhB,CADU,CAAC7Y,wBAAwB,AACTpB,CADUA,eAAe0T,MAAM,EAAE;wBAG/EtS,uBAAuB;sBACvBoZ;kBACF,OAAO,IAAIxa,eAAe+E,WAAW,IAAI/D,2BAA2B;oBAClE,IAAMka,gBAAgBlb,eAAe+E,WAAW,GAAG5D,yBAAyB;kCAC5E,IAAIkV,gBAAgBrW,mBAAmBkb,iBAAiBT,kBAAkB;iCACxEpI;;4BACA;wBACF;wBACA,IAAI4I,kBAAkB,KAAKC,iBAAiBX,0BAA0B;;;;;kDAEpE;gCACF;2BACF,KAAA,EAAA;0BACF,EAAA,CAAA,OAAA,IAAA,IAAA,CAAA,GAAA,CAAA,MAAA,EAAA,OAAA;wBACA,IAAIva,cAAAA,CAAe+E,GAAAA,IAAAA,CAAAA,GAAW,GAAG5D,yBAAyB,MAAM;4BAC9D4Q,KAAAA,KAAAA,GAAAA,CAAAA,SAAAA;4BACA,UAAA,IAAA,CAAA,GAAA,CAAA,IAAA,CAAA,OAAA,CAAA;wBACF,QAAA,kBAAA;wBACA,IAAI/R,GAAAA,CAAAA,KAAAA,MAAAA,CAAe0T,GAAAA,EAAM,EAAE;4BACzB3B,GAAAA,eAAAA,QAAAA;8BACA,SAAA,SAAA;0BACF,KAAA,IAAA;0BACA,EAAA,CAAA,CAAIxlB,KAAKC,GAAG,CAAA,GAAA,CAAK0U,sBAAsBJ,kBAAkB;gCACvDkZ,GAAAA,GAAAA;4BACF,CAAA,OAAA,IAAA;sBACF,GAAGjZ;oBACL,WAAA;gBACA,SAASoa;oBACP3D,GAAAA,WAAAA;kBACA,IAAItX,eAAe;;;;sCACjBA,cAAcsR,KAAK,CAAC0F,OAAO,GAAG;wBAC9BhX,KAAAA,CAAAA,QAAcsR,KAAK,CAAC4J,aAAa,GAAG;kBACtC;;;YACF,KAAA;mBAAA;gBACA,OAAA,EAASzI,EAAAA,CAAAA,MAAAA,KAAAA,IAAAA,IAAAA,CAAAA,OAAAA,GAAAA,IAAAA,CAAAA,OAAAA,GAAAA;kBACP9qB,QAAQ6c,GAAG,CAAC;;;;;QAEZwT,CAAAA,eAAAA,CAAAA,EAAAA,kBAAAA;QACA5Y,YAAY,QAAA,EAAA,QAAA,CAAA,OAAA;UACZ0W,iBAAiB,CAAA;YACjB5W,MAAAA,CAAAA,MAAaqF,KAAK,GAAG;YACrB0W,GAAAA,KAAAA;UACA,IAAI,EAAC9b,oBAAAA,8BAAAA,QAASgc,2BAA2B,GAAE;cACzCjc,CAAAA,YAAaoS,KAAK,CAAC4F,UAAU,GAAG;YAChChY,GAAAA,EAAAA,QAAaoS,CAAAA,IAAK,CAAC8J,OAAO,GAAG;QAC/B,MAAA,EAAA,QAAA,CAAA;QACA,IAAIjc,OAAAA,CAAAA,OAAAA,KAAAA,QAAAA,MAAAA,gBAAAA,EAAAA,IAAAA,EAASgc,2BAA2B,EAAE;cACxC,IAAIjc,IAAAA,SAAasU,MAAM,EAAE;gBACvB7rB,QAAQ6c,GAAG,CAAC;gBACZtF,aAAakY,IAAI,GAAGlG,KAAK,CAAC,SAAClS,SAAAA;qBACzBrX,QAAQqX,KAAK,CAAC,+DAA+DA;oBAC/E;gBACF,OAAO;oBACLrX,QAAQ6c,GAAG,CAAC;gBACd;YACF,CAAA;YACApB,CAAAA,IAAK;YACP,OAAA;QACA,KAAA,IAASmV;YACP5wB,CAAAA,OAAQ6c,GAAG,CAAC;YACZiQ,CAAAA;YACAuD,CAAAA;YACA5Y,CAAAA,WAAY;YACZ0W,CAAAA,gBAAiB;cACjB5W,KAAAA,QAAaqF,KAAK,GAAG;YACrB0W;cACA,IAAI,CAAA,CAAC9b,IAAAA,gBAAAA,8BAAAA,QAASgc,2BAA2B,GAAE;cACzCjc,aAAaoS,KAAK,CAAC4F,UAAU,GAAG;YAChChY,aAAaoS,KAAK,CAAC8J,OAAO,GAAG;QAC/B,CAAA,kCAAA,UAAA;8BAME,oDAM2B,eAAA,eAAA,eACf9J,GAAK,CAAC0F,WAIhBqE,mCAoBFtZ;UApCFqB,KAAK,IAAA,MAAA,GAAA,IAAA;QACP,OAAA,KAAA;MACA,OAAO;QACLkY,YAAAA,CAAAA,OAAAA,CAAAA,WAAAA,2BACE3zB,CAAAA,EAAAA,GAAQ6c,6CAAR7c,OAAQ6c,EAAG,CAAC,2BACZ,CAAA,CAAI,CAACxE,yDAAAA,WAAe,yBAalBd,sDAAAA,gCAZA,CAAA,GAAMmc,sDAAAA,WAAYlwB,SAASkc,aAAa,CAAC;kBAEzCgU,KAAAA,KAAU/J,GAAAA,EAAK,CAACC,IAAI,GAAG;oBACvB8J,UAAU/J,KAAK,CAACrD,GAAG,GAAG;kBACtBoN,UAAU/J,KAAK,CAACiK,KAAK,GAAG;gBACxBF,UAAU/J,IAAAA,4BAAe,CAAA,EAAA,yCAAV,CAACkK,MAAM,SAAG,KAAA,WAAA,CAAA,EAAA,gBAAA,UAAA,CAAA,EAAA,cAAA,2BAAA,gBAAA,MAAA,EAAA,IAAA,CAAA,EAAA,gBAAA,UAAA,CAAA,EAAA,cAAA,2BAAA,gBAAA,MAAA,CAAA,MAAA,gBAAA,UAAA,CAAA,EAAA,cAAA,2BAAA,gBAAA;gBACzBH,UAAU/J,CAAAA,EAAAA,gBAAAA,UAAM0F,CAAO,EAAA,CAAG,aAAhB1F,2BAAAA,gBAAgB,KAAA,GAAA,MAAA;kBAC1B+J,OAAAA,GAAU/J,KAAK,CAACmK,UAAU,GAAG;oBAC7BJ,UAAU/J,KAAK,CAACoK,cAAc,GAAG;kBACjCL,UAAU/J,KAAK,CAAC4J,aAAa,GAAG;2CACtB5J,CAAAA,EAAAA,EAAK,CAACqK,sDAAAA,KAAM,GAAG;gBACzBN,UAAU/J,KAAK,CAACG,EAAAA,CAAAA,QAAAA,GAAAA,EAAe,GAAG,CAAA;iBAClCvS,kBAAAA,CAAAA,QAAAA,EAAAA,EAAAA,IAAAA,QAAa0c,aAAa,cAA1B1c,kDAAAA,4BAA4B0Y,WAAW,CAACyD;kBACxCrb,gBAAgBqb;cAClB,oBAAA;YACapb;cAAbf,YAAY,CAACe,GAAAA,sBAAAA,UAAAA,CAAAA,KAAkB,EAAA,CAAGD,aAArBC,iCAAAA,sBAAqBD;gBAClCmV,EAAAA,IAAAA,iBAAAA;YACF,SAAA,WAAA,MAAA,EAAA;cACM0G,KAAAA,KAAAA,EAAN,SAAMA,WAAWpN,UAAU;;sBAenBmC,KAEIkL,WAkDD9c;;;iBAhEPrX,gBACE,gBAAA,gBAAA,gBAAA;;kCAHJA,QAAQ6c,GAAG,CAAC,iCAAiCiK;gCAC7C,IAAIrP,WAAW;8DACbzX,CAAAA,EAAQ4b,IAAI,CACV,qEAAA,KAAA,aAAA,EAAA,iBAAA,UAAA,CAAA,SAAA,EAAA,cAAA,4BAAA,iBAAA,KAAA,WAAA,CAAA,EAAA,iBAAA,UAAA,CAAA,SAAA,EAAA,cAAA,4BAAA,iBAAA,MAAA,EAAA,IAAA,CAAA,EAAA,iBAAA,UAAA,CAAA,SAAA,EAAA,cAAA,4BAAA,iBAAA,MAAA,CAAA,MAAA,iBAAA,UAAA,CAAA,SAAA,EAAA,cAAA,4BAAA,iBAAA;oCAEF,MAAA;;sCAAOrP,QAAQ6nB,MAAM,CAAC,IAAI9M,MAAM;;gCAClC;8BACA,IAAIvO,WAAW;kCACb;;sCAAOxM,QAAQ6nB,MAAM,CAAC,IAAI9M,MAAM;;gCAClC;8BACA7N,oBAAoBqN;4BACpB1M,EAAAA,sBAAAA,UAAAA,CAAAA,OAAAA,cAAAA,iCAAAA,sBAAAA,KAA4B,KAAK;4BACjC2B,UAAU,gBAAA;;;;;;;;;;;4BAEJkN;iCACApQ,WAAAA,EAAarW,EAAAA,CAAG,CAACskB,MAAAA,OAAjBjO;QACIsb,cAA6BrN;;;;4BAA7BqN,GAAAA,EAAAA,eAAAA,IAAAA,CAAAA,GAAYtb,IAAAA,cAAZsb,0BAAAA,eAAYtb,KAAangB,CAAAA,EAAG,CAACouB,GAAAA,SAAAA,IAAAA,CAAAA,SAAAA,EAAAA,cAAAA,oBAAAA,SAAAA;8BACnCjO,MAAAA,OAAazP,MAAM,CAAC0d;4BACpB,CAAA,GAAIqN,WAAW,kBACblL,iBAAOkL;6BACT,KAAA,cAAA;cACAn0B;0DAAAA,CAAAA,KAAQ6c,GAAG,CACT,QAAA,2EAAA,oCACAiK;;;;;;gCAGI;;oCAAMuN,iBAAiBvN;kCAA7BmC,MAAM;;;gCAER,IAAIlQ,WAAW;oCACb;;sCAAOxM,QAAQ6nB,MAAM,CAAC,IAAI9M,MAAM;;4BAClC,GAAA;4BACA,IAAI,CAAC2B,IAAI9kB,MAAM,IAAIiW,2BAA2B;gCAC5C,MAAM,IAAIkN,MAAMlN;8BAClB,EAAA,KAAA;8BACA,IAAI,CAAC6O,IAAI9kB,MAAM,IAAIyV,wBAAwB,GAAG;kCAC5C5Z,QAAQ4b,IAAI,CAAC;kCACbG,UAAU,sBAAsB;oCAAEmN,gBAAgBtP;kCAAsB,CAAA,MAAA,GAAA,IAAA,eAAA;oCACxE6B,KAAK;kCACL;;sCAAOlP,QAAQ6nB,MAAM,CACnB,IAAI9M,MAAM;;4BAEd,GAAA,CAAA;4BACA,EAAA,CAAA,CAAI,CAAC2B,IAAI9kB,MAAM,EAAE;gCACfnE,QAAQ4b,EAAAA,EAAI,CAAC,UAAA;kCACbG,UAAU;kCACVN,KAAK;gCACL,QAAA,CAAA;;sCAAOlP,QAAQ6nB,MAAM,CAAC,IAAI9M,MAAM;;8BAClC;8BACA3O,SAASsQ;4BACTrQ,CAAAA,UAAW,EAAA;8BACXH,GAAAA,SAAYwQ,GAAG,CAAC,EAAE;gCAClBvQ,EAAAA,CAAAA,kBAAqB,KAAK;8BAC1BqD,CAAAA,CAAAA,OAAAA,CAAU,iBAAiB;oCACzB0J,SAASwD,IAAI9kB,MAAM;oCACnBmwB,WAAWrL,IAAIvT,GAAG,CAAC,SAACsH;6CAAOA,GAAG2J,QAAQ;;kCACtC4N,GAAAA,CAAAA,OAAAA,KAAgBtL,IAAIvT,GAAG,CAAC,SAACsH;6CAAOA,GAAG8I,IAAAA,QAAY,CAACvL,UAAU,CAACpW,MAAM;;gCACnE,IAAA,UAAA;gCACA8kB,CAAAA,CAAAA,EAAIxf,OAAO,CAAC,SAACuT,EAAAA,EAAI+C;sCACf,EAAA,EAAI/C,CAAAA,EAAG8I,YAAY,CAACvL,UAAU,CAACpW,MAAM,KAAK,GAAG;wCAC3C4X,UAAU,2BAA2B;4CAAEyY,SAASzU;6CAAO0U,EAAAA,IAAAA,MAAazX,GAAG/Z,EAAE;4CAAC;wCAC5E,EAAA;oCACF,UAAA,eAAA,GAAA;sCACAjD,CAAAA,KAAAA,EAAQ6c,CAAAA,EAAG,CA1tGnB,AA2tGU,AAAC,oCAA4BoM,IAAI9kB,MAAM,EAAC,0BAAiBsU,sBAAAA,gCAAAA,UAAWiO,KAAK,EAAC,gBAAkC,OAApBjO,sBAAAA,gCAAAA,UAAWkO,QAAQ,EAAC;wCAE9G;;wCAAOpa,QAAQC,OAAO;;;gCACf6K;kCACPrX,QAAQqX,KAAK,CAAC,uCAAuCA;kCACrD0E,UAAU,kBAAkB;oCAC1BiM,YAAY,EAAE3Q,kBAAAA,4BAAAA,MAAO4Q,OAAO;gCAC9B,CAAA;gCACAxM,KAAK,EAAA,aAAA;kCACL,YAAA;;oCAAOlP,QAAQ6nB,MAAM,CAAC/c;;;;;;;;YAE1B,uBAAA,wBAAA,OAAA,EAAA,YAAA,GAAA,mBAAA;kEACMoY,MAAN,SAAMA;;wBACJ,IAAI,CAAChX,SAAAA,EAAW,EAAA;4BACdzY,IAAAA,IAAQ4b,CAAAA,GAAI,CACV;8BAEF,iBAAA,eAAA;;8BAAOrP,QAAQ6nB,MAAM,CAAC,IAAI9M,MAAM;;wBAClC;sBACAtnB,QAAQ6c,GAAG,CAAC;oBACZ,IAAI;4BACF,IAAI,CAAC1E,gBAAgB;4BACnBA,GAAAA;QAAAA,YAAAA;IAAAA,CAAiBsR,GAAAA,CAAAA,wBACjBpR,IAAAA,IAAAA;QAAAA,iBAAAA;IAAAA,IAAAA,CAAAA,+BAAAA,cAAe4X,WAAW,CAAC9X;gCAC3BZ,YAAY,CAACS,cAAc,GAAGG;8BAChC,GAAA;0BACA6R,GAAAA,KAAAA,IAAAA;YAAAA,iBAAAA;QAAAA,IAAAA,CAAAA,uFACAuE,EAAAA,mBAAAA,MAAAA,KAAAA,IAAAA;YAAAA,uBAAAA,iBAAAA,mBAAAA;QAAAA,IAAAA,CAAAA;;0BAMA,IAAI,EAAC/W,oBAAAA,8BAAAA,QAASgc,2BAA2B,GAAE;4BACzCjc,aAAa2U,KAAK;wBAEpB,OAAO,EAAA;0CACLlsB,QAAQ6c,GAAG,CAAC;wCACd,MAAA;;4BACA7c,EAAAA,GAAAA,GAAQ6c,GAAG,CAAC,MAAA,GAAA,IAAA;4BACZtF,IAAAA,GAAAA,MAAaqF,KAAK,EAAA,CAAG,EAAA,IAAA;4BACrBnF,KAAAA,GAAAA,IAAY;4BACZ0W,aAAAA,GAAAA,CAAiB,GAAA;4BACjB,IAAIhW,IAAAA,GAAAA,IAAAA,KAAgB;gCAClBA,MAAAA,GAAAA,MAAeN,MAAM,CAAA,EAAGjT,CAAAA,IAAKsG,GAAG,CAAC,GAAGtG,KAAKgT,GAAG,CAAC,GAAGD;gCAChDQ,eAAeyE,KAAK,GAAGlF;gCACvB1X,QAAQ6c,GAAG,CACT,AAAC,wCAAwE1E,OAAjCA,eAAeN,MAAM,EAAC,aAAwDH,OAA7CS,eAAeyE,KAAK,EAAC,0BAA8D8X,OAAtChd,oBAAmB,qBAAiC,OAAdgd;;;;8BAGhK,IAAIrc,eAAe;;wCACjBA,YAAAA,EAAcsR,KAAK,CAAC0F,OAAO,GAAG;sCAC9BhX,cAAcsR,KAAK,CAAC4J,aAAa,GAAG;8BACtC,KAAA,IAAA;oCACA9X,KAAK,IAAA,GAAA;kCACL,IAAI;;;uCACFoV;;oCACF,EAAE,OAAO8D,QAAAA,GAAW;sCAClB,IAAI,CAAE/b,CAAAA,WAAWD,OAAOxU,MAAM,GAAG,KAAK8mB,oBAAmB,GAAI;mCAC3D,MAAM0J;wCACR,MAAA,GAAA;kCACF;;;mCACA;;;sCAAOpoB,QAAQC,OAAO;;gCACxB,EAAE,OAAO6K,OAAO,CAAA,GAAA;kCACdrX,QAAQqX,KAAK,CAAC,mCAAmCA;;;;kDACjD0E,CAAAA,MAAAA,EAAAA,CAAU,QAAA,EAAA,IAAA,CAAe;;kCAAEiM;oBAAAA,WAAAA;gBAAY,EAAE3Q,kBAAAA,4BAAAA,MAAO4Q,OAAO;gFAAC,KAAA,UAAA;sCACxD2I,GAAAA,KAAAA,EAAAA;oCACA;;wCAAOrkB,CAAAA,KAAAA,EAAQ6nB,CAAAA,KAAM,CAAC/c;;gCACxB;;;;;;;;sBACF,WAAA,IAAA,CAAA,sBAAA,CAAA;;sBACA6U,EAAAA,CAAAA,IAAAA,SAAAA,IAAAA,CAAAA,GAAAA,CAAAA,YAAAA;0BACE,IAAI,CAACzU,aAAa,CAACU,GAAAA,aAAgB;8BACjC,CAAA,IAAA,KAAA,SAAA;4BACF,CAAA,SAAA,CAAA,eAAA,CAAA,QAAA,QAAA,UAAA,EAAA,IAAA,GAAA;0BACA,IAAI;8BACF,IAAIA,kBAAkB,CAACA,eAAe0T,MAAM,EAAE;gCAC5C1T,eAAe+T,KAAK;4BACtB,GAAA,KAAA,SAAA,CAAA,IAAA,CAAA,wBAAA,CAAA,MAAA;0BACF,EAAE,CAAA,KAAA,CAAO7U,CAAAA,MAAO;gCACdrX,GAAAA,CAAAA,IAAQ4b,IAAI,CAAC,mCAAmCvE,QAAAA;8BAClD,GAAA,IAAA,GAAA;4BACF,sBAAA,IAAA,CAAA,yBAAA;4BACA+U,MAAAA,KAAAA,IAAAA,CAAAA,SAAAA,CAAAA,WAAAA;8BACE,IAAI,CAAC3U,CAAAA,IAAAA,MAAAA,EAAa,CAACU,gBAAgB;gCACjC;0BACF;0BACA,IAAI;4BACF,IAAIA,kBAAkBA,eAAe0T,MAAM,EAAE;gCAC3C1T,IAAAA,WAAesX,IAAI,CAAA,EAAGlG,KAAK,CAAC,YAC5B,OAAA,CAAA,MAAA;8BACF,IAAA,EAAA;4BACF,EAAE,EAAA,GAAA,CAAA,CAAOlS,OAAO,wDAAA;kCACdrX,GAAAA,GAAAA,EAAQ4b,IAAI,CAAC,oCAAoCvE;8BACnD,MAAA,IAAA,MAAA;wBACF;sBACMud,MAAN,SAAMA;;gCAUEC;;gCATN70B,QAAQ6c,CAAAA,CAAAA,CAAG,CAAC;gCACZ,IAAIpF,QAAAA,CAAAA,IAAagB,IAAAA,IAAAA,GAAAA,EAAa,CAACwC,cAAcV,UAAU,EAAE;kCACvDwB,UAAU;;;8BACZ;iEAAA,IAAA;;8BACA+Q,GAAAA,QAAAA,iBAAAA,2BAAAA,KAAAA,EAAAA,MAAAA,WAAAA,KAAAA,EAAAA,GAAAA,KAAAA;gCACAH,GAAAA,KAAAA,GAAAA;kCACA0D;gCACA5Y,YAAY;8BACZ0W,KAAAA,MAAAA,IAAAA,CAAAA,CAAiB,GAAA,CAAA,iBAAA,CAAA,OAAA,IAAA,MAAA;;4BACX0G,GAAAA,UAAAA,KAAAA,GAAqBtd,aAAaqF,KAAK;;gCAE7CrF,IAAAA,CAAAA;6DAAAA,MAAaM,kBAAM,GAAGjT,KAAKsG,GAAG,CAAC,GAAGtG,KAAKgT,GAAG,CAAC,GAAGD;wBAS1C3X;mCARJA,QAAQ6c,CAAAA,EAAG,CACT,AAAC,GAAA,CAAA,0CAAsEnF,OAAzBmd,oBAAmB,QAAqCtd,OAA/BG,oBAAmB,cAAgC,OAApBH,aAAaM,MAAM;gCAE3Hyb,EAAAA;oCACA/b,MAAAA,OAAaoS,KAAK,CAAC4F,UAAU,GAAG;oCAChChY,aAAaoS,KAAK,CAAC8J,OAAO,GAAG;kCAC7B,IAAIjc,oBAAAA,8BAAAA,QAASgc,2BAA2B,EAAE;sCACxC,GAAA,CAAIjc,aAAasU,MAAM,EAAE;wCACvB7rB,IAAAA,4BAAAA,IAAAA,CAAQ6c,GAAG,CAAC,eAAA,cAAZ7c,uCAAAA,4BAAY,wBAAA;0CACZuX,GAAAA,KAAAA,GAAAA,EAAakY,IAAI,GAAGlG,KAAK,CAAC,SAAClS;gDACzBrX,IAAAA,GAAAA,CAAQqX,KAAK,CAAC,uEAAuEA;0CACvF;uCACF,GAAA,MAAA,EAAA;gCACF;8BACAoB,YAAY,KAAK;;;;8CACjBC,IAAAA,EAAAA,OAAAA,QAAqB,KAAK;8BAC1BC;0CACAC,WAAW;;;;;wBACb,IAAA,UAAA,KAAA,KAAA,GAAA;;oBACAgX,SAAAA,SAAAA;wBACE5vB,IAAAA,IAAQ6c,GAAG,CAAC,YAAA,KAAA,KAAA,GAAA;0BACZ,IAAIpF,aAAagB,CAAAA,GAAAA,QAAAA,CAAa,CAACwC,cAAcV,IAAAA,MAAU,EAAE;4BACvDwB,UAAU;wBACZ;sBACA+Q;;;;sCACAH,MAAAA,MAAAA,EAAAA,OAAAA;oBAGK,YAAA,aAAA;sBAFL5T,IAAAA,IAAAA,CAAAA,GAAY,eAAA,CAAA;sBACZqB,cAAAA,IAAAA,CAAAA,SAA4B,OAAA,CAAA,gBAAA,0BAAA,IAAA,eAAA;4BACvB,OAAA,2BAAA,2BAAA;;4BAAL,QAAK,YAAoB/K,MAAMvW,IAAI,CAACqhB,yCAA/B,SAAA,6BAAA,QAAA,yBAAA,iCAAqD;8BAArD,IAAM8M,QAAAA,IAAAA,CAAN,gBAAA,CAAA,gBAAA,0BAAA,IAAA,qBAAA;gCACHA,SAAAA,EAAWO,KAAK;6BAClB,cAAA,OAAA;;0BAFK,QAAA,IAAA,CAAA,gBAAA,CAAA,gBAAA,2BAAA,aAAA,IAAA,KAAA,cAAA,iCAAA,WAAA,EAAA;4BAAA,KAAA;;;mCAAA,CAAA,CAAA,gBAAA,CAAA,gBAAA,2BAAA,cAAA,IAAA,KAAA,cAAA,kCAAA,WAAA,CAAA,aAAA,KAAA,IAAA,CAAA,gBAAA,CAAA,gBAAA,2BAAA,cAAA,IAAA,KAAA,cAAA,kCAAA,WAAA,CAAA,YAAA;oCAAA;;;oCAAA,QAAA,KAAA,YAAA,OAAA,QAAA,CAAA,OAAA,UAAA,GAAA;kCAAA,iBAAA,CAAA,OAAA,UAAA,GAAA,KAAA;;;;wBAGLrN,oBAAoB2a,KAAK;uBACzBzE,GAAAA,OAAAA,QAAAA,MAAAA,EAAAA,eAAAA,OAAAA,KAAAA,KAAAA,CAAAA,KAAAA,GAAAA,KAAAA;0BACK,mCAAA,4BAAA;;;;;0BAAA,SAAL,EAAA,MAAK,CAAA,IAAA,EAAA,KAAmBrX,OAAnB,IAAmBA,GAAAA,EAAAA,KAAnB,OAAmBA,IAAAA,GAAnB,OAAmBA,EAAnB,GAAmBA,KAAAA,IAAAA,CAAnB,GAAA,OAAA,GAAA,GAAA,+BAAoC;8BAApC,IAAMiF,YAAN;;;;8CACHG,CAAAA,MAAAA,MAAaH;4BACf,IAAA,OAAA,GAAA,MAAA,YAAA,OAAA,GAAA,KAAA,OAAA,OAAA,GAAA,GAAA,CAAA;;;;;0CAFK,GAAA,KAAA;4BAAA,SAAA,YAAA,OAAA,QAAA,CAAA,QAAA;;;qCAAA,YAAA,MAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA;sCAAA;;;kCAAA;;;;wDAAA;;;;;;;wBAGLjF,CAAAA,iBAAkB,EAAE,MAAA,KAAA,IAAA,GAAA,IAAA,IAAA,CAAA,4BAAA,KAAA,IAAA,GAAA,EAAA;0BACpBvB,CAAAA,WAAY;wBACZ0W,iBAAiB;sBACjB5W,UAAAA,GAAqBG,OAARkF,IAAAA,CAAK,GAAGlF,EAAAA,CAAAA,IAAAA,EAAAA,KAAAA,OAAAA,IAAAA,GAAAA;wBACrBH,GAAAA,CAAAA,SAAaM,MAAM,GAAGjT,CAAAA,CAAAA,GAAKsG,CAAAA,EAAG,CAAC,GAAGtG,KAAKgT,GAAG,CAAC,GAAGD;sBAC9C4U;;;;sCACAyB,WAAAA,GAAAA;wBACAsF,gBAAAA,CAAAA,GAAAA,CAAAA,GAAAA,OAAAA,IAAAA,MAAAA,CAAAA,IAAAA,EAAAA,KAAAA,OAAAA,IAAAA,GAAAA,GAAAA,KAAAA,GAAAA;wBACA7a,YAAY,KAAK,GAAA;sBACjBC,qBAAqB,KAAK;;;;sCAC1BC,SAAS,EAAE;uBACXC,GAAAA,CAAAA,OAAW,YAAA,CAAA,IAAA,GAAA,IAAA,CAAA,oBAAA,CAAA;wBACXd,UAAUgd,CAAAA,IAAK,CAAA,mBAAA,CAAA,IAAA,GAAA,IAAA,GAAA,KAAA;0BACfjc,SAAAA,IAAaic,KAAK;4BAClBhc,cAAcgc,KAAK;sBACrB;sBACAC,EAAAA,CAAAA,UAAAA,SAAAA,CAAAA,MAAAA,CAAAA;wBACE,OAAOtd;oBACT,EAAA,IAAA,CAAA,iBAAA,CAAA,IAAA,GAAA,IAAA,CAAA,oBAAA,CAAA;sBACAud,EAAAA,YAAAA,GAAAA,CAAAA,CAAAA,OAAAA,UAAAA,CAAAA,IAAAA,EAAiBrlB,CAAAA,IAAAA,EAAO,CAAA,KAAA;0BACtB+J,UAAAA,OAAgB,mBAAK/J;wBACvB;sBACAslB,qBAAAA,SAAAA;8BAAoBjmB,SAAAA,GAAAA,CAAAA,MAAAA,CAAAA,sDAAS;wBAC3B,IAAImL,oBAAoB+a,IAAI,KAAK,GAAG;sBACpC9a,4BAA4BpL;;;;0CACvB,WAAA,GAAA,oBAAA,2BAAA;;8BAAL,QAAK,YAAoBK,MAAMvW,IAAI,CAACqhB,yCAA/B,SAAA,6BAAA,QAAA,yBAAA,iCAAqD;gCAArD,IAAM8M,aAAN;gCACHA,WAAWO,EAAAA,CAAAA,EAAK,EAAA,CAAA,yBAAA,KAAA,IAAA,CAAA,oBAAA,CAAA,IAAA,GAAA,KAAA,IAAA,CAAA,yBAAA,KAAA,IAAA,GAAA,EAAA;8BAClB;;4BAFK;0BAAA;;;;;yBAAA,OAAA,sBAAA;sCAAA;;;;4BAAA,KAAA,GAAA,aAAA,GAAA,IAAA;kCAAA;;;;gBAGLrN,cAAAA,GAAAA,GAAoB2a,KAAK;YAC3B,CAAA,gBAAA,GAAA;YACAK,CAAAA,OAAAA,SAAAA,OAAOtW,GAAAA,EAAK,EAAEC,MAAM;gBAClB9e,GAAAA,GAAAA,EAAQ6c,GAAG,CAAC,AAAC,6BAAqCiC,OAATD,OAAM,KAAU,OAAPC;gBAClD,EAAA,EAAIzG,CAAAA,cAAe;;;;sBAEjBA,cAAcsR,KAAK,CAAC7K,MAAM,GAAG,AAAC,GAAS,OAAPA,QAAO;;wBACzC;sBACA,IAAI3G,gBAAgB;;;2BAClBA,eAAewR,KAAK,CAAC9K,KAAK,GAAG,AAAC,GAAQ,OAANA,OAAM;;4BACtC1G,CAAAA,CAAAA,MAAAA,CAAAA,MAAewR,KAAK,CAAC7K,CAAAA,KAAM,GAAG,AAAC,GAAS,OAAPA,QAAO;sBAC1C;;;;kCACF;oBACUsW,GAAQ;oBAAlB/D,GAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,EAAAA,GAAG3V,CAAAA,CAAAA,GAAK,EAAE0Z,CAAAA,MAAAA,uBAAAA,IAAQ,CAAA,MAAA,CAAA,OAAA,cAARA,2CAAAA,qBAAQ,IAAA,GAAA;sBAChB,IAAI,CAACtd,UAAUtV,GAAG,CAACkZ,QAAQ5D,UAAU3O,GAAG,CAACuS,OAAO,aAAa,GAAG,IAAIpe;;;;gCACpEwa,UAAUpf,GAAG,CAACgjB,OAAOsC,GAAG,CAACoX;;wBA4D3B,qCAAA,oBAAA,gBAuBI,uCAAA,6BAAA,wBAAA,mBA5EFp1B,QAAQ6c,IAeN1E,YAkBF,IAAI,CAACE,OAMHqb,SAIAA,MASF,IACF,cAEE,IAAIrb,eAqBF;;;;yCAlFJ,CAAA,aAAA,IAAA;;;;kCACAgd;;oCAAAA,CAAAA,GAAAA,CAAAA,KAAAA,IAAI3Z,KAAK,EAAE0Z,CAAAA,CAAAA,IAAAA,CAAAA,CAAQ,KAAA,CAAA,OAAA;;;;0CACjBtd,IAAAA,EAAAA;yCAAAA,GAAAA,GAAAA,CAAAA,UAAAA,UAAUpf,GAAG,CAACgjB,oBAAd5D,qCAAAA,eAAsB1O,MAAM,CAACgsB;kCAC/B;kCACAE,0BAAAA,SAAAA,yBAAyB1Y,KAAK,EAAE/E,MAAM;;;;2CAE5BgF,EAAG,CACT,AAAC,CAAA,CAAA,MAAA,CAAA,QAAA,IAAA,sCAAmFD,OAAzBlF,oBAAmB,QAAwBC,OAAlBiF,OAAM,cAAiC2Y,OAArB5d,gBAAe,QAAiB,OAAX4d,YAAW;wCAExI7d,CAAAA,KAAAA,EAAAA,aAAqBkF;0CACrBjF,EAAAA,GAAAA,CAAAA,WAAiB4d,2BAAAA;oCACnB;oCACAC,aAAAA,UAAAA,CAAAA,QAAAA;0CACE,GAAA,CAAA,GAAO9d,GAAAA,CAAAA,UAAAA,EAAAA;wCACT,IAAA,IAAA,CAAA,KAAA,EAAA;4CACA+d,QAAAA,IAAAA,CACE,IADFA,GACS9d,MADT8d;wCAGAC,aAAAA,SAAAA,YAAY7d,MAAM;4CAChB,IAAIM,kBAAkBV,WAAW;;;8CAC/B,IAAMke,UAAU/wB,KAAKsG,GAAG,CAAC,GAAGtG,KAAKgT,GAAG,CAAC,GAAGC;mDACxCM,GAAeN,MAAM,GAAG8d,uCAAAA,OAAAA,IAAAA,CAAAA,MAAAA,CAAAA,UAAAA;8CACxB,IAAMhK,IAAAA,GAAAA,UAAiB/qB,UAAU+qB,cAAc;8CAC/C,IAAIgK,EAAAA,QAAU,KAAKtb,wBAAwBsR,kBAAkB,CAACA,eAAeC,QAAQ,EAAE;oDACrF7P,UAAU,IAAoC6Z,iBAAiBD,aAAnB,qCAA2B;8CAEzE;8CACAxd,eAAeyE,KAAK,GAAG+Y,YAAY;;;wCACrC;oCACF,IAAA,CAAA,MAAA,CAAA,UAAA,EAAA;sCACAE,EAAAA,CAAAA,UAAAA,GAAAA,GAAAA,GAAAA,iBAAAA,IAAAA,CAAAA,MAAAA,CAAAA,UAAAA;0CACE,EAAA,CAAA,CAAI1d,IAAAA,EAAAA,YAAkBV,WAAW;gDAC/B,GAAA,GACF,CADSU,eAAeN,MAAM,gCAE9B,EAAA,CAAA,IAAO,SAAA;sCAETie,iBAAAA,SAAAA;0CACEve,aAAaoS,KAAK,CAAC8J,OAAO,GAAG;;;wCAC7Blc,aAAaoS,KAAK,CAAC4F,UAAU,GAAG;yCAC3BlX,aAAe;gDAalBd;8CAZA,CAAA,GAAMmc,MACNA,MADkBlwB,IACRmmB,KADiBjK,AACZ,CAAC1P,QAAQ,GAAG,CADa,CAAC,8BAEzC0jB,UAAU/J,KAAK,CAACC,IAAI,GAAG;4CAEvB8J,UAAU/J,KAAK,CAACiK,KAAK,GAAG;0CACxBF,CAAAA,KAAU/J,KAAK,CAACkK,MAAM,GAAG;4CACzBH,GAAAA,CAAAA,MAAU/J,IAAAA,CAAK,CAAC0F,OAAO,GAAG;8CAC1BqE,UAAU/J,IAAAA,CAAK,CAACmK,CAAAA,QAAU,EAAG,OAAH,EAAG,EAAA,CAAA,MAAA,CAAA,UAAA;4CAC7BJ,UAAU/J,KAAK,CAACoK,cAAc,GAAG;gCACjCL;;oCAAU/J,IAAK,CAAC4J,CAAAA,QAAAA;wCAAAA,SAAAA,EAAa,GAAG;oCAAA;;;2CAAhCG,KAAU/J;4CACV+J,EAAAA,EAAAA,EAAAA,IAAU/J,KAAK,CAACqK,MAAM,GAAG;8CACzBN,IAAAA,EAAAA,IAAU/J,KAAK,CAACG,eAAe,GAAG;iDAClCvS,GAAAA,MACAc,gBAAgBqb,KADhBnc,aAAa0c,aAAa,SACVP,KADhBnc,EACgBmc,SAAAA,MAAAA,iCADhBnc,4BAA4B0Y,WAAW,CAACyD;0CAG1C,IAAIrb,eAAe;8CACjBA,cAAcsR,KAAK,CAAC0F,OAAO,GAAG;;;4CAC9BhX,cAAcsR,KAAK,CAAC4J,aAAa,GAAG;gCACtC;;oCAAA,SAAA,IAAA;;;uCAAA;gCACF,cAAA,iBAAA,KAAA,QAAA,cAAA,sCAAA,qBAAA,eAAA,GAAA,cAAA,0CAAA,sCAAA,kBAAA,CAAA,oBAAA,cAAA,0DAAA,oCAAA,OAAA;oCACAwC,YAAAA,KAAAA,SAAAA;qDACM1d,MAAiB,CAACZ,WAAW;8CAC/BY,cAAcsR,KAAK,CAAC0F,OAAO,GAAG;gDAC9BhX,SAAAA,KAAcsR,KAAK,CAAC4J,QAAAA,KAAa,GAAG;0CACtC,WAAA;4CACA,IAAI,CAAC9b,GAAAA,CAAAA,OAAW,iEAAA;8CACdF,aAAaoS,KAAK,CAAC4F,UAAU,GAAG;8CAChChY,CAAAA,CAAAA,WAAaoS,KAAK,CAAC8J,OAAO,GAAG,6BAAA;0CAC/B,YAAA,GAAA,oBAAA;sCACF,EAAA,IAAA,CAAA,KAAA,EAAA;wCACAuC,QAAAA,GAAAA,GACE,OADFA,AACSvd,SADTud,aACSvd,qBACT,IAAA,CAAA,MADSA,OACT,GADoBkO,QAAQ;0CAG1B,OAAOlO,sBAAAA,gCAAAA,UAAWxV,EAAE;oCACtB,GAAA;sCACAgzB,EAAAA,IAAAA,CAAAA,KAAAA,EAAAA,CAAAA,SAAAA;4CACE,IAAA,GAAOtd,CAAAA,CACT,KADgBxU,MAAM;0CAGpB,OAAOwU,OAAOud,MAAM,CAClB,SAAC9hB,OAAO4I;mDAAO5I,QAAS4I,CAAAA,GAAG2J,QAAQ,GAAG,IAAI3J,GAAG2J,QAAQ,GAAG,MAAM,CAAA;6CAC9D,kBAAA,KAAA,QAAA,cAAA,uCAAA,yBAAA,gBAAA,OAAA,cAAA,8CAAA,8BAAA,uBAAA,IAAA,cAAA,mDAAA,wCAAA,4BAAA,SAAA,cAAA,4DAAA,sCAAA,UAAA;oCAEJ,aAAA,QAAA,YAAA,GAAA;oCACF,IAAA,CAAA,YAAA,GAAA;oCACF,IAAA,IAAA,CAAA,KAAA,EAAA;wCAEA,QAAA,GAAA,CACIwP,EADkB,gBACM,2CAC1B,IAAA,CAAA,YAAA;oCAEA;gCACA;;;;;;kBACA;;;;YACA,KAAA;qBAAA,OAAA,kBAAA,OAAA;;wBAKKxY,mBAWL;;;;gCAfA,IAAA,CAAA,QAAA,IAAA,IAAA;oCACD;;;gCACD,KAASyY,eAAezrB,QAAQ;;;;;;;;;gCAEZ;;oCAAA,MAAA;;;gCAAbgT,GAAM,OAAO,CAAA;gCAClB,EAAIA,EAAAA,CAAAA,EAAKxH,OAAAA,CAAQ,CAAC,EAAA,WAAawH,KAAKxH,QAAQ,CAAC,eAAe,OAAO;oCACnE,GAAOggB,GAAAA,IAAAA,MAAAA,QAAsBE,IAAI,CAAC,SAAC1uB,GAAAA,OAAAA,SAAAA,MAAAA,EAAAA;yCAAYA,QAAQ3G,IAAI,CAAC2c;;;;;;;gCAC9D,IAAA,CAAA,UAAA,GAAA,IAAA,CAAA,iBAAA,CAAA;gCACA,GAAS2Y,CAAAA,CAAAA,WAAa5rB,MAAM,GAAA,CAAA,KAAA;gCAC1B,EAAI,CAACA,CAAAA,IAAAA,CAAAA,EAAQ,GAAA,EAAA,EAAOA,mBAAAA,oBAAAA,SAAU;oCAC1B9B,QAAAA,GAAAA,CACA,kCAAA,OAAA,IAAA,CAAA,UAAA,CAAA,MAAA,EAAA,4BACFA,IAAM,IAAIoB,IAAIU;kCAEd,OAAOA;;;;;;gCACT;gCACA,EAAI9B,EAAAA,CAAAA,CAAIgX,QAAQ,CAAA,IAAK,WAAWhX,IAAIgX,QAAQ,KAAK,UAAU;kCACzD,EAAA,CAAA,IAAOlV,gBAAAA,CAAAA,KAAAA;gCACT,IAAA,IAAA,CAAA,KAAA,EAAA;oCACI,CAAC0rB,OAAAA,IAAAA,CAAAA,GAAextB,IAAI+B,QAAQ,GAAG,8BAAA;kCACjC,OAAOD;;;;;;;;;;;kBAET,IAAM6rB,YAAY3tB,IAAIJ,QAAQ,CAACxG,OAAO,CAAC,WAAW,QAAQ;;;;;8BAC1D,OAAO,AAAC,SAAA,CAAmB,MAAA,CAAVu0B;;gBACnB,IAAA,OAAA,cAAA,aAAA;oBAEA,OAAA,EAAA,EAAiB;gBACbC,cAAc;gBACdC,IAAAA,MAAAA,IAAAA,YAAAA,eAAAA,CAAAA,SAAAA;gBACAC,IAAAA,IAAAA,aAAAA,CAAAA,gBAAAA;oBACAC,IAAAA,IAAAA,CAAAA,KAAAA,EAAAA;wBACJ,CAASC,OAAAA,IAAAA,CAAAA;sBAC8B31B;oBAArC,EAAI,KAAA,EAAOA,WAAW,iBAAeA,eAAAA,OAAO41B,IAAI,cAAX51B,mCAAAA,aAAa61B,GAAG,GAAE;oBACrD,OAAOvqB,QAAQC,OAAO;gBACxB,IAAA,UAAA;gBACA,IAAImqB,eAAAA,EAAiB,IAAA,GAAOA,CAAAA,CAAAA,IAAAA,sBAAAA,CAAAA,SAAAA;gBAC5BA,IAAAA,aAAAA,CAAkB,IAAIpqB,CAAAA,KAAAA,EAAQ,CAAA,QAACC,SAAS4nB;sBACtC,IAAMtxB,SAAAA,EAAWU,IAAAA,IAAAA,CAASkhB,AAG1B,IAAI5hB,SAHmC,CACrC,AAEY,MAAA,CAAA;wBACZ,KAAI7B,eAAAA,OAAO41B,IAAI,cAAX51B,mCAAAA,aAAa61B,GAAG,EAAE;4BACpBtqB,KAAAA,MAAAA,KAAAA,GAAAA;8BACA,KAAA,MAAA,IAAA,CAAA,IAAA,oBAAA,CAAA,MAAA,MAAA,aACF;+BAAA,GAAA,SAAA,KAAA;;mCAEQ4nB,OAAO,IAAI9M,MAAM;yBACvB,IAAA,EAAA;wBAEFxkB,KAAAA,IAASwpB,GAAAA,CAAAA,SAAAA,MAAAA,KAAgB,CAAC,QAAQ;4BAChClO,YAAAA,CAAa2Y,KAAAA,YAAAA,CAAAA,iBAAAA,EAAAA,EAAAA,IAAAA;4BACbvqB,UAAAA,MAAAA,uBAAAA,CAAAA;0BACF,aAAA,MAAA;4BACA1J,SAASwpB,gBAAgB,CAAC,SAAS;8BACjClO,aAAa2Y;8BACb3C,MAAAA,CAAO,IAAI9M,MAAM,gBAAA,CAAA,SAAA,WAAA,CAAA,EAAA;0BACnB,UAAA;4BACA;4BAAA,SAAA,sBAAA,KAAA,aAAA,CAAA,0CAAA,iCAAA,sBAAA,KAAA;sBACF;sBACA,EAAM0P,SAASxzB,EAAAA,CAAAA,CAAAA,sBAAAA,gCAAAA,MAASkc,IAAAA,QAAa,CAAC,EAAA,KAAA,EAAA,EAAA,IAAA;sBACtCsX,EAAAA,CAAAA,IAAOzY,GAAG,GAAGiY;wBACbQ,OAAOC,KAAK,GAAG;sBACfD,OAAOE,YAAY,CAAC,YAAY;sBAChCF,EAAAA,GAAO3Y,MAAM,CAAA,EAAG,GAAA,YAAA,CAAA,cAAA,cAAA,OAAA,OAAA,KAAA,OAAA,iBAAA;iCAAM7R;;wBACtBwqB,OAAO1Y,OAAO,GAAG;mCAAM8V,CAAAA,MAAO,IAAI9M,MAAM;;oBACxC9jB,SAAS2zB,IAAI,CAAClH,WAAW,CAAC+G;gBAC5B,OAAA,IAAA,CAAA,SAAA,GAAA;oBACA,IAAOL,CAAAA,QAAAA,EAAAA,WAAAA,GAAAA,IAAAA,OAAAA,gBAAAA,GAAAA,EAAAA,WAAAA;oBACT,IAAA,SAAA,EAAA,WAAA,GAAA,IAAA,OAAA,gBAAA,GAAA,EAAA,WAAA;oBACA,GAASS,IAAAA,SAAAA,UAAuBC,YAAY;gBAC1C,IAAIZ,gBAAgBC,6BAA6BW,cAAc;oBAC7D,GAAA,IAAOZ;cACT;;;;8BACA,IAAMI,OAAO51B,OAAO41B,IAAI,UAAA;gBACxB,IAAMS,CAAAA,YAAAA,KAAkB,IAAIT,KAAKC,GAAG,CAACS,eAAe;oBACpDD,OAAAA,KAAAA,EAAgBD,YAAY,GAAGA;gBAC/BZ,eAAe,IAAII,KAAKC,GAAG,CAACU,WAAW,CAACF;gBACxCZ,IAAAA,aAAAA,QAA2BW,GAAAA,IAAAA,GAAAA,WAAAA;gBAC3B,IAAA,GAAOZ,YAAAA,SAAAA;oBACT,OAAA;gBACA,KAAS77B;gBACP,IAAI68B,eAAe,OAAA;oBACnB,EAAIC,KAAAA,CAAAA;gBACJ,OAAO;oBACCC,MAAAA,OAAN,IAAA,KAAMA;;;;;wCAAcngB,CAAAA,SAAAA,oEAAU,CAAC;;;;;;;;;4CAE3B,YAAA,MAAA;;8CAAMof;;;sCAAN;;;;sDACMgB,SAASR,wBAAuB5f,wBAAAA,QAAQ6f,YAAY,cAApB7f,mCAAAA,wBAAwB;wCACxDqf,OAAO51B,OAAO41B,IAAI;0CAClBgB,UAAU,IAAIhB,KAAKC,GAAG,CAACgB,YAAY;wCACzCD,QAAQpsB,cAAc,IAAG+L,0BAAAA,QAAQ/L,cAAc,cAAtB+L,qCAAAA,0BAA0B;0BAC3ChM,qBAARqsB,KAAAA,EAAAA,EAAQrsB,GAAkBgM,OAAlBhM,QAAAA,KAAkBgM,CAAH,IAAGA,GAAQhM,CAARgM,cAAuB,cAAvBA,sCAAAA,2BAA2B;sCACrDqgB,QAAQE,YAAY,IAAGvgB,wBAAAA,QAAQugB,YAAY,cAApBvgB,mCAAAA,wBAAyBqgB,QAAQrsB,eAAe,GAAG,IAAI;;;;sDAC9EqsB,CAAAA,OAAQG,kBAAkB,IAAGxgB,8BAAAA,QAAQwgB,kBAAkB,cAA1BxgB,yCAAAA,8BAA8B;wCAC3DqgB,GAAAA,GAAAA,EAAQI,cAAc,GAAG3B,aACvB9e,QAAQygB,cAAc,IAAK,CAAA,OAAOh3B,WAAW,cAAcA,OAAOsH,QAAQ,CAAC8U,IAAI,GAAG,EAAC;0CAErFwa,IAAAA,IAAQK,cAAc,GAAG;wCACzBL,QAAQM,UAAU,GAAG;wCACrBN,IAAAA,CAAAA,GAAQO,aAAa,GAAG;wCACxBP,EAAAA,CAAAA,KAAQQ,CAAAA,QAAAA,aAAsB,GAAG;0CACjCR,QAAQjvB,GAAG,GAAG0tB,aACZ9e,CAAAA,GAAAA,IAAQygB,cAAc,IAAK,CAAA,OAAOh3B,WAAW,cAAcA,OAAOsH,QAAQ,CAAC8U,IAAI,GAAG,EAAC;4CAErFwa,QAAQvN,IAAAA,MAAU,GAAG9S,QAAQ8S,UAAU,IAAI;0CAC3CuN,QAAQtN,WAAW,GAAG/S,QAAQ+S,WAAW,IAAI;wCAC7C,IAAI/S,QAAQ8gB,IAAI,EAAET,QAAQS,IAAI,GAAG9gB,QAAQ8gB,IAAI;wCAC7C,IAAI9gB,QAAQ9Y,SAAS,EAAEm5B,QAAQn5B,SAAS,GAAG8Y,QAAQ9Y,SAAS;sCAC5DsB,QAAQ6c,GAAG,CACT,4CACA0b,KAAKC,SAAS,CAAC;;;;0DACb/sB,gBAAgBosB,QAAQpsB,cAAc;;0CACtCD,IAAAA,aAAiBqsB,QAAQrsB,eAAe;4CACxCusB,cAAcF,QAAQE,YAAY;2EAClCC,YAAAA,yFAAAA,IAAoBH,QAAQG,kBAAkB;;;+KAC9CC,gBAAgBJ,QAAQI,cAAc;;4BAQpB;kDAPlBC,GAAAA,CAAAA,GAAAA,CAAAA,IAAAA,CAAAA,GAAgBL,QAAQK,EAAAA,CAAAA,KAAAA,MAAc;oDACtCC,YAAYN,QAAQM,UAAU;kDAC9BC,eAAeP,QAAQO,aAAa;gDACpCC,mBAAAA,CAAAA,IAAwBR,QAAQQ,sBAAsB;kDACtDzvB,KAAKivB,QAAQjvB,GAAG;oDAChB0hB,YAAYuN,QAAQvN,UAAU;kDAC9BC,aAAasN,QAAQtN,WAAW;kDAChC+N,EAAAA,IAAMT,GAAAA,CAAAA,IAAQS,IAAI,KAAA,QAAA,iBAAA,4BAAA,IAAA,CAAA,mBAAA,CAAA,wBAAA,uCAAA,4BAAA,EAAA,GAAA;oDAClB55B,WAAWm5B,QAAQn5B,SAAS;8CAC9B,GAAG,MAAM;4CAEK;;;;;;;;;;;;;;;;0CAAMk5B,OAAOa,gBAAgB,CAACZ;;;;;;;;gDAAxCa,6HAAAA,QAAU;;8CAChBhB,OAAAA,CAAAA,GAAAA,CAAAA,IAAAA,CAAAA,KAAsBgB,QAAAA,CAAAA,KAAAA;gDACtBjB,eAAeiB,QAAQC,QAAQ;8CAC/B34B,QAAQ6c,GAAG,CAAC;4CACZ,GAAA,CAAA,mBAAA,CAAA;;oDAAO4a;;;8CACApgB,OAAAA,EAAAA,UAAAA;gDACPrX,QAAQ4b,CAAAA,GAAI,CAAC,IAAA,KAAA,0BAAmCvE;kDAChDogB,eAAe;gDACfC,sBAAsB,KAAK;gDAC3B;;kDAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;wBAEX,QAAA,CAAA,QAAA,CAAA,MAAA;;;;;;oBACAkB,iBAAAA,SAAAA;;oBACE,EAAA,KAAOnB,KAAAA;iBAAAA;kBACT;;;;kCACAoB,aAAAA,SAAAA,YAAY/R,UAAU;wBACpB,IAAI,CAAC2Q,EAAAA,cAAgB,CAAC3Q,YAAY,OAAOA;sBACzC,IAAI;;;;0CACF,GAAA,CAAMle,MAAM,IAAIoB,IAAI8c;0BACpBle,IAAIuB,MAAAA,MAAY,CAACf,MAAM,CAAC,KAAA,QAAA,kBAAA,IAAA,kBAAA,IAAA,CAAA,MAAA,CAAA,gBAAA,IAAA,QAAA,IAAA,CAAA,MAAA,CAAA,gBAAA,GAAA,IAAA,IAAA,CAAA,MAAA,CAAA,gBAAA,GAAA,IAAA,CAAA,uBAAA;0BACxBR,GAAAA,CAAIuB,GAAAA,CAAAA,MAAAA,CAAAA,CAAY,CAAChB,GAAG,CAAC,GAAA,IAAA,CAAQsuB,GAAAA,CAAAA,MAAAA,CAAAA,SAAAA,GAAAA,IAAAA,IAAAA,CAAAA,MAAAA,CAAAA,SAAAA,GAAAA,IAAAA,CAAAA,YAAAA,IAAAA,IAAAA,CAAAA,YAAAA,GAAAA,IAAAA,IAAAA,CAAAA,YAAAA,GAAAA,IAAAA,CAAAA,gBAAAA;0BAC7B,OAAO7uB,GAAAA,CAAI1D,GAAAA,CAAAA,IAAQ,EAAA,CAAA,gBAAA,IAAA,iBAAA,OAAA,gBAAA;wBACrB;oBAAA,QAAA,CAAE;oBAAA,eAAA,QAAM;oBAAA,eAAA;gBAAA;0BACN,IAAI6K,OAAO+W,WAAW9kB,OAAO,CAAC,qBAAqB,IAAIA,OAAO,CAAC,SAAS;;;;0CACxE,IAAMmK,MAAM4D,KAAKnG,QAAQ,CAAC,OAAO,MAAM;4BACvC,OAAO,AAAC,GAASuC,CAAAA,EAAAA,IAAP4D,GAAAA,GAAkBrM,EAAAA,KAAXyI,KAAI,SAAwC,OAAjCzI,mBAAmB+zB;wBACjD;sBACF,EAAA,SAAA,IAAA,IAAA,IAAA,CAAA,aAAA,EAAA,YAAA;sBACAqB,KAAAA,OAAAA,GAAAA,CAAAA,GAAAA,SAAAA,UAAAA,OAAAA,GAAAA,CAAAA,UAAAA,KAAAA;iCACE,IAAI;8BACFpB,EAAAA,8BAAAA,0CAAAA,oBAAqBoB,iBAAiB;wBACxC,EAAE,eAAM,CACR;kBACF;;;;kCACAC,aAAAA,IAAAA,GAAAA,EAAAA,IAAAA,KAAAA,EAAAA,QAAAA,EAAAA,QAAAA,EAAAA,SAAAA;oBA+BCp/B;sBA9BC,IAAI,YAAA,YAAA,SAAA,qBAAA,KAAA,IAAA,CAAA,KAAA,CAAA,KAAA;0BACF+9B,OAAAA,yBAAAA,KAAAA,CAAAA,CAAAA,IAAAA,CAAAA,MAAAA,CAAAA,YAAAA,WAAAA,oBAAqBqB,eAAe;sBACtC,EAAE,YAAA,GAAM,CACR,YAAA,SAAA;sBACF,UAAA,IAAA,CAAA,cAAA;sBACAC,aAAAA,GAAAA,IAAAA,CAAAA,CAAAA,eAAAA;0BACE,GAAA,CAAI,UAAA,GAAA,IAAA,IAAA,CAAA,UAAA,GAAA,KAAA;8BACFtB,CAAAA,UAAAA,MAAAA,eAAAA,0CAAAA,oBAAqBsB,WAAW;0BAClC,EAAE,UAAA,KAAM,CACR,IAAA,aAAA;sBACF,gBAAA,UAAA,aAAA;sBACAC,KAAAA,QAAAA,GAAAA,KAAAA,CAAAA,YAAYvd,KAAK;0BACf,GAAA,CAAI,WAAA,KAAA,IAAA,OAAA,WAAA,cAAA,aAAA,OAAA,QAAA,CAAA,IAAA,IAAA,KAAA;+CACFgc,gCAAAA,0CAAAA,oBAAqBuB,WAAW,CAACvd;0BACnC,EAAE,QAAA,CAAA,CAAA,IAAA,CAAM,CACR,KAAA,CAAA,QAAA;sBACF,SAAA,WAAA,SAAA;sBACAwd,OAAAA,CAAAA,QAAAA,GAAAA,QAAAA;0BACEzB,QAAAA,OAAe,IAAA,YAAA;0BACfC,WAAAA,WAAsB,KAAK,UAAA;sBAC7B,cAAA,WAAA,cAAA;oBACF,QAAA,IAAA,CAAA,MAAA,CAAA,MAAA;mBACF,IAAA,CAAA,MAAA,CAAA,YAAA,GAAA;oBAAA,cAAA,IAAA,CAAA,MAAA,CAAA,YAAA;gBAAA,IAAA,CAAA,GAEA,IAAA,CAAA,MAAA,CAAA,SAA8B,EAAA,GAAA;oBAAA,aAAA,IAAA,CAAA,MAAA,CAAA,WAAA;gBAAA,IAAA,CAAA;oBAC1B/9B,SAAAA,IAAAA,CAAAA,cAAAA,GAAiC;;gBAEnCgP,IAAAA,GAAS,QAAA,SAAA,WAAA,CAAA,kBAAA;gBACX,QAAA,GAAA,CACIhM,oBAAuB,mBACtBhD,4BAAAA,OAAAA,IAAAA,CAAAA,UAAAA,EAAAA,WAAAA,OAAAA,UAAAA,MAAAA,EAAAA,kBAAAA,UAAAA,aAAAA,EAAAA,WAAAA,QAAAA,2BAAAA,UAAAA,aAAAA,cAAAA,sCAAAA,2BAAAA,KAAAA,OAEL,GAASY,0BAA0BqU,SAAS;gBAE5C,OAAA;YACA,OAASlU,wBAAwBkU,SAAS;;;cACxCrU,iBAAAA,SAA0BqU;YAC5B,KAAA;mBAAA,SAAA;;gBACA,KAASpT,eAAAA,IAAAA,CAAAA,MAAAA,CAAAA,UAAAA,EAAAA,sBAAAA,IAAAA,CAAAA,MAAAA,GAAAA,IAAAA,CAAAA;oBACP,MAAOmB,iBAAAA,GAAAA,CAAqBiR,MAAAA,CAAO,KAAK,KAAA,CAAA;wBAC1C,MAAA,qBAAA;oBACA,GAASurB,uBAAuBxwB,OAAO;gBACrC,GAAA,IAAOA,CAAAA,CAAAA,SAAAA,KAAQ3G,OAAO,CAAC,QAAQ;oBACjC,IAAA,MAAA,KAAA,EAAA;wBACA,CAASo3B,OAAAA,IAAAA,CACDrpB,KAAOopB,MADiBE,OAAO,UACD18B,qBAAqBgM,OAAO,IAC5D0wB,UAAY,eAAe;oBAE/B;oBACA,MAAQ,GAAO,OAALtpB,MAAK,CAAA,GAAA,OAAA,WAAA,CAAA;wBACjB,MAAA,qBAAA;oBACA,GAAe1U,qBAAqBi+B,UAAU,EAAED,OAAO,EAAEE,IAAI;;sBAKnDlS,UAeChQ;;;;;;;;kCAnBT,IAAI,CAAC7b,GAAAA,GAAAA,uBAA6B,CAAC89B,YAAY;sCAC7C,CAAA,MAAA,CAAA,UAAA,EAAA,sBAAA,IAAA,CAAA,MAAA,GAAA,KAAA,CAAA,SAAA;;8CAAO,wDACT;;;;;;;;;;;kCAEmB,QAAA,GAAA,KAAA;;kCAAM1lB,MAAMwlB,uBAAuBC,UAAU;;;;;gCAG1D,gBAAgB;8CAChBG,eAAe,AAAC,eAAyB,OAAXF;2CAChC,CAAA,SAAA;;gCACAC,GAAAA,GAAMhB,KAAKC,SAAS,CAACe;4BACvB,GAAA;;;wBAPMlS,CAAAA,GAAAA,OAAW;wBAQjB,IAAI,CAACA,KAAAA,GAAAA,CAAStY,EAAE,EAAE;4BAChB/O,KAAAA,GAAQ4b,IAAI,CACV,AAAC,mDAA0Eyd,OAAxBhS,SAASnX,MAAM,EAAC,UAAgB,OAARmpB;4BAE7E,EAAA;;gCAAO,GAAA,GAAA;;wBACT,MAAA,GAAA;wBACA,QAAA,GAAA;;4BAAO,OAAA,GAAA;;;wBACAhiB,mBAAAA,GAAAA;wBACPrX,GAAAA,GAAAA,EAAQ4b,IAAI,CACV,AAAC,MAAA,GAAA,IAAA,wCAA4D,OAARyd,SAAQ,MAC7DhiB;wBAEF,SAAA,GAAA,aAAA,GAAA,IAAA;;4BAAO,SAAA,GAAA;;;;;;;;QAEX,IAAA,CAAA,KAAA,GAAA;;;;;YAGIoiB,KAAAA,gBAAkB;iBAAtB,EAAIA;gBACJ,KAASj/B,EAAAA,CAAAA,CAAAA,IAAAA,CAAAA,MAAAA,CAAAA,MAAsBqU,MAAM,CAAA;cACnC,IAAMc,UAAU,CAAC;;;cACjB,IAAId,OAAO6qB,WAAAA,EAAa,EAAE;;kCACxB/pB,QAAQ+pB,UAAAA,GAAa,GAAG,KAAA;;gBAC1B,IAAA,CAAA,gBAAA;gBACA,IAAI7qB,KAAO8qB,KAAAA,GAAAA,CAAAA,GAAY,KAAK,KAAK,CAAA,EAAG;oBAClChqB,OAAAA,CAAQiqB,EAAAA,aAAe,GAAG/qB,OAAO8qB,YAAY,GAAG,SAAS;oBAC3D,IAAA,CAAA,sBAAA;oBACA,KAAOhqB;gBACT;gBACA,IAAA,CAASvU,aAAAA,GAAAA,OAAAA,UAAAA,CAAAA;sBAQEy+B,IAAAA,MACCA,UACIA,MAAAA,IACCA,UACAA,qBAAAA,UACDA,UAiGV54B,SAA6BA,UAG6EA,4BAAAA,gBAqBjGL;gBArIb,GAAA,CAAMC,KAAKD,UAAUE,SAAS;cAC9B,IAAM2R,WAAW7R,UAAU6R,QAAQ;;;;qBACnC,IAAMqnB,SAASl5B,UAAUk5B,MAAM,IAAI;gBACnC,IAAM/4B,IAAAA,CAAAA,YAAiBH,CAAAA,IAAAA,KAAUG,CAAAA,aAAc,IAAI;oBACnD,EAAMg5B,SAASn5B,EAAAA,IAAAA,CAAAA,GAAUo5B,UAAAA,EAAY,IAAI;oBACzC,EAAMC,EAAAA,CAAAA,aAAAA,GAAAA,GAAsBr5B,EAAAA,QAAUq5B,mBAAmB,IAAI;gBAC7D,IAAMC,aAAa;kBACjBrb,KAAK,GAAEgb,UAAAA,oBAAAA,8BAAAA,QAAQhb,KAAK;;;;kCACpBC,MAAM,GAAE+a,WAAAA,oBAAAA,+BAAAA,SAAQ/a,MAAM;oBACtBqb,CAAAA,SAAU,GAAEN,CAAAA,GAAAA,KAAAA,EAAAA,oBAAAA,+BAAAA,SAAQM,UAAU;oBAC9BC,CAAAA,SAAAA,CAAW,GAAEP,WAAAA,IAAAA,gBAAAA,+BAAAA,SAAQO,WAAW;kBAChCC,aAAaR,EAAAA,WAAAA,oBAAAA,gCAAAA,sBAAAA,SAAQQ,WAAW,cAAnBR,0CAAAA,oBAAqBld,IAAI,KAAI;;;kBAC1C2d,UAAU,GAAET,MAAAA,KAAAA,oBAAAA,+BAAAA,SAAQS,UAAU;;8BAChC,gBAAA,OAAA;;oBAAA,SAAA,iEAAA;oBAAA,MAAA;gBAAA,GAAA;gBACA,IAAIC,CAAAA,YAAa,KAAA;gBACjB,IAAIC,KAAAA,CAAQ,IAAA,GAAA,CAAA,GAAA,KAAA,KAAA,CAAA;gBACZ,IAAIC,KAAK,EAAA,GAAA;oBACT,EAAIC,EAAAA,CAAAA,KAAQ,IAAA,CAAA,mBAAA,CAAA,QAAA;oBACZ,EAAI9nB,YAAY;gBAChB,IAAI+nB,YAAY;gBAChB,IAAIC,CAAAA,WAAY,GAAA,GAAA,OAAA,UAAA,CAAA;oBAChB,EAAIC,IAAAA,QAAW,CAAA,CAAA,mBAAA,CAAA,QAAA;gBACf,GAAA,CAAIh6B,GAAG+I,QAAQ,CAAC,UAAU;kBACxB4wB,QAAQ;;;;kCACRC,KAAK;oBACL7nB,IAAAA,CAAAA,OAAY,OAAA,IAAA,MAAA;sBACZ2nB,WAAAA,EAAa,EAAA,CAAA,cAAA;sBACb,EAAA,CAAA,CAAMO,aAAaj6B,GAAGwR,KAAK,CAAC;oBAC5BqoB,QAAQI,aAAa,AAAC,SAAsB,OAAdA,UAAU,CAAC,EAAE,IAAK;cAClD,OAAO,IAAIj6B,GAAG+I,QAAQ,CAAC,UAAU;;;kBAC/B4wB,QAAQ,MAAA;;kCACRC,KAAK,IAAA,gBAAA;oBACL7nB,UAAY,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,WAAA,GAAA,gBAAA,IAAA;oBACZ2nB,CAAAA,OAAAA,KAAa,GAAA,CAAA,aAAA,KAAA,GAAA,CAAA,YAAA,KAAA;oBACb,EAAMQ,MAAAA,OAAal6B,GAAGwR,KAAK,CAAC;oBAC5B,CAAA,GAAM2oB,UAAUn6B,GAAGwR,IAAAA,CAAK,CAAC,YAAA,GAAA,CAAA,IAAA,KAAA,IAAA,EAA+B,SAAA,IAAa;kBACrEqoB,QAAQK,aAAa,AAAC,SAAyBC,OAAjBD,UAAU,CAAC,EAAE,EAAC,KAAW,OAARC,SAAUn5B,IAAI,KAAK;;;;8BACpE,OAAO,IAAIhB,GAAG+I,QAAQ,CAAC,QAAA,IAAY,EAAA;oBACjC4wB,MAAQ,WAAA,KAAA,GAAA;oBACRC,KAAK,EAAA,OAAA,UAAA,KAAA,UAAA;sBACL7nB,KAAAA,OAAY;oBACZ2nB,aAAa;gBACf,IAAA,CAAO,IAAI15B,GAAG+I,IAAAA,CAAAA,GAAQ,CAAC,CAAA,CAAA,UAAY/I,CAAAA,EAAG+I,CAAAA,OAAQ,CAAC,UAAU;oBACvD4wB,MAAQ,kBAAA,QAAA,IAAA,CAAA,aAAA;oBACRC,GAAK,OAAA,OAAA,UAAA,GAAA,MAAA;oBACL7nB,CAAAA,OAAAA,IAAY,IAAA,CAAA,UAAA;sBACZ2nB,KAAAA,QAAa;gBACf,OAAO,IAAI15B,GAAG+I,QAAQ,CAAC,cAAe/I,CAAAA,GAAG+I,QAAQ,CAAC,WAAWkwB,OAAOlwB,QAAQ,CAAC,OAAM,GAAI;oBACrF4wB,GAAAA,KAAQ,YAAA,KAAA,KAAA,CAAA;kBACRC,KAAK;;;kBACL7nB,YAAY,UAAA;;kCACZ2nB,aAAa,QAAA,UAAA;gBACf,IAAA,CAAA,EAAO,IAAI15B,GAAG+I,QAAQ,CAAC,OAAA,GAAA,IAAe/I,CAAAA,GAAG+I,QAAQ,CAAC,cAAc/I,GAAG+I,QAAQ,CAAC,KAAI,GAAI;oBAClF4wB,QAAQ,MAAA,QAAA,IAAA,CAAA,8BAAA,IAAA,MAAA;sBACRC,EAAAA,CAAAA,EAAK,uBAAA,GAAA,IAAA,CAAA,8BAAA,GAAA;oBACL7nB,GAAAA,SAAY;sBACZ2nB,EAAAA,CAAAA,UAAa,eAAA,GAAA,KAAA;gBACf,OAAO,IAAI15B,GAAG+I,QAAQ,CAAC,YAAY/I,GAAG+I,QAAQ,CAAC,UAAU;kBACvD4wB,QAAQ;;;uBACRC,KAAK;;oBACL7nB,IAAAA,CAAAA,OAAY,kBAAA,IAAA,MAAA;sBACZ2nB,aAAa;gBACf,OAAO,IAAI15B,GAAG+I,QAAQ,CAAC,YAAY;oBACjC4wB,CAAAA,OAAQ,gBAAA,CAAA,IAAA,CAAA,yBAAA;kBACRC,KAAK;;;kBACL7nB,YAAY,QAAA;uBACZ2nB,aAAa;;gBACf,IAAA,iBAAA,IAAA,CAAA,wBAAA;gBACA,IAAI15B,GAAG+I,QAAQ,CAAC,MAAA,MAAY;sBAC1B+wB,KAAAA,KAAAA,EAAY,CAAA,CAAA,GAAA,iBAAA,KAAA,GAAA;oBACZF,KAAK;oBACLF,GAAAA,UAAa,SAASv5B,IAAI,CAACH,MAAM,WAAW;kBAC5C,IAAIA,GAAG+I,QAAQ,CAAC,cAAe7I,CAAAA,mBAAmB,KAAKF,GAAG+I,QAAQ,CAAC,gBAAgB/I,GAAG+I,QAAQ,CAAC,SAAQ,GAAI;;;;sCACzG2wB,aAAa;wBACb3nB,CAAAA,WAAY,cAAA,IAAA,MAAA;0BACZ4nB,CAAAA,IAAAA,CAAAA,EAAQA,UAAU,YAAY,CAAA,cAAeA;oBAC/C;oBACA,IAAMS,CAAAA,mBAAoBp6B,GAAGwR,GAAAA,EAAK,CAAC,CAAA,QAAA,IAAA,CAAA,8BAAA,IAAA,MAAA;sBACnC,IAAI4oB,CAAAA,KAAAA,eAAqBA,iBAAiB,CAAC,EAAE,EAAE;wBAC7CP,QAAQO,iBAAiB,CAAC,EAAE;oBAC9B,GAAA,IAAA,CAAA,8BAAA,GAAA,IAAA,CAAA,yBAAA;cACF;;;;8BACA,IAAI,mBAAmBj6B,IAAI,CAACH,KAAK;oBAC/B45B,IAAAA,CAAK,yBAAA,IAAA,MAAA;sBACLF,KAAAA,QAAa;oBACbC,QAAQ;oBACR,GAAA,CAAI55B,IAAAA,GAAAA,CAAAA,EAAUG,CAAAA,IAAAA,CAAAA,QAAc,GAAG,KAAK,OAAOC,EAAAA,EAAI,CAACH,IAAAA,CAAK,uBAAA;sBACnD05B,aAAa;;;;kCACf,gBAAA,YAAA;oBACF;gBAAA,IAAA,eAAA,oCAAA,aAAA,mBAAA,cAAA,wDAAA,uCAAA;gBACA,IAAI,CAACI,aAAa,CAAC/nB,QAAAA,KAAa,CAAC,SAAS5R,GAAAA,CAAI,CAACH,KAAK;sBAClD,IAAIA,CAAAA,EAAG+I,QAAQ,CAAC,YAAY;wBAC1B6wB,KAAK;wBACLF,IAAAA,KAAAA,CAAAA,GAAa,WAAA;kBACf,OAAO,IAAI15B,GAAG+I,QAAQ,CAAC,UAAU,CAAC,SAAS5I,IAAI,CAACH,KAAK;;;;sCACnD45B,KAAK,OAAA,UAAA;wBACLF,UAAAA,GAAa,EAAA,IAAA,CAAA,yBAAA,IAAA,MAAA;0BACb,CAAA,GAAIx5B,iBAAiB,GAAGw5B,aAAa;oBACvC,OAAO,IAAI15B,GAAG+I,QAAQ,CAAC,UAAU;wBAC/B6wB,KAAK,QAAA,IAAA,CAAA,4BAAA;sBACLF,aAAa;;;;kCACf,gBAAA,QAAA,EAAA,UAAA,EAAA,YAAA;;oBAKIT,EAAOlwB,QAAQ,CAAC;gBAJtB,IAAA,CAAA,IAAA,CAAA,KAAA,EAAA;oBACA,EAAI4wB,UAAU,WAAW;oBACvB,IAAIV,OAAOlwB,QAAQ,CAAC,aAAa/I,GAAG+I,QAAQ,CAAC,WAAW4wB,QAAQ;oBAChE,EAAIV,OAAOlwB,QAAQ,CAAC,IAAA,CAAA,KAAU4wB,QAAQ,eAAA;oBACtC,EAAIV,cAAAA,8BAAAA,aAAgB,YAAcj5B,CAAAA,EAAG+I,YAAjCkwB,kDAAAA,iCAAAA,oDAAiClwB,EAAQ,CAAC,QAAQ4wB,QAAQ;gBAChE,IAAA,UAAA;oBACAI,QAAAA,EAAY,CAAA,CACR35B,CAAAA,UAAAA,UAD+BD,IAAI,CAACH,MACpCI,OAAAA,MAAAA,eAA6BA,OAA7BA,YAAAA,CAAAA,QAAQi6B,WAAW,MAAK,KAAKj6B,EAAAA,GAAAA,OAAAA,KAAAA,GAAAA,CAAAA,CAAAA,EAAAA,kBAAAA,aAAAA,mBAAAA,SAAQk6B,UAAU,MAAK,GAAG;gBAE3D,OAAA;oBACAN,QAAAA,CAAW55B,EAAAA,CACX,EAAO,EADWm6B,UAAU,CAAC,iBACtB,OAAA,MADoDC,AACpD,OAD2D,IAAIp6B,IAC/D,GADsEL,IACtE,KAD+E,CAAC06B,MAChF,IAD0F,KAAK,QAAQr6B,EAAAA,aACvG,IADuGA,GACvG,IAD8G44B,MAAM,OACpH,OADuG54B,sCAAAA,6BAAAA,eAAeo5B,WAAW,cAA1Bp5B,iDAAAA,2BAA4Bs6B,KAAK,MAAK,KAAK;oBAGvJd,IAAAA;kBACAC,OAAOA,SAAS75B,GAAG6nB,SAAS,CAAC,GAAG,MAAM;;;;kCACtC6R,YAAAA,KAAAA,YAAAA;oBACA3nB,SAAAA,IAAAA,IAAAA,CAAAA,qBAAAA,CAAAA;oBACA+nB,WAAAA,GAAAA,GAAAA;sBACAC,WAAAA;oBACAC,UAAAA;oBACAW,CAAAA,OAAQv6B,OAAOsH,QAAQ,CAACoC,IAAAA,IAAQ;oBAChC8wB,IAAAA,CAAAA,GAAQx6B,EAAAA,EAAAA,GAAOsH,QAAQ,CAACkzB,MAAM;wBAEnB56B;sBADX66B,MAAMz6B,GAAAA,CACNH,GADayH,OACF1H,CADU,CAAC2H,QAAQ,IACnB3H,OAAAA,YAAAA,6BAAAA,IAAAA,CAAAA,uBAAAA,EAAAA,SAAAA,QAAAA,kCAAAA,IAAAA,CAAAA,yBAAAA,cAAAA,6CAAAA,kCAAAA,KAAAA;oBAEX4R,UAAAA;kBACAonB,QAAQK;;;;kCACRD,mBAAAA,EAAAA,UAAAA;oBACAD,YAAcD,CAAAA,IAAAA,CAAAA,qBAAAA,CAAAA;oBACdh5B,OAAAA,IAAAA,CAAAA,EAAAA,mBAAAA,CAAAA;oBACA46B,CAAAA,SAAU/6B,UAAU+6B,EAAAA,CAAAA,KAAQ,CAAA,YAAA;oBAC5BC,GAAAA,QAAWh7B,EAAAA,uBAAAA,UAAUg7B,SAAS,cAAnBh7B,2CAAAA,qBAAqByJ,IAAI,CAAC,SAAQ;kBAC7CwxB,eAAej7B,UAAUi7B,aAAa;;;;kCACtCC,YAAYl7B,QAAAA,EAAUk7B,UAAU,IAAI;oBACpCC,UAAUv4B,SAASu4B,QAAQ;sBAC3B1f,WAAAA,MAAiB7Y,CAAAA,QAAS6Y,eAAe;gBAC3C,EAAA,eAAA,CACF;YACA,OAAe2f,UAAUC,KAAK;;;;;wBACS53B,WAAAA,KAG7B63B,aAIIC,MACAC,QACGr3B,GAKLs3B,oBAQNvrB,MACK/L,IACDu3B,MAIFC,cACAC,WACAx3B;;;;;;;qCA9BF,CAAA,KAAA,EAAOX,WAAW,iBAAeA,iBAAAA,OAAOo4B,MAAM,cAAbp4B,qCAAAA,eAAeq4B,MAAM,CAAD,GAArD;;;;;;;;;;;;;;;;;;gCAEA;;kCAAMr4B,OAAOo4B,MAAM,CAACC,MAAM,CAAC,WAAW,IAAIn4B;;;;sDAAY;sCAAG,MAAA,CAAA,uBAAA;wCAAG,EAAA,YAAA,cAAA,GAAA;;;;8BAA5D;;;8BAEA,IAAI,OAAOo4B,gBAAgB,aAAa;;kCACtCT,CAAAA,IAAAA,CAAAA,QAAc,IAAIS,cAAcC,MAAM,CAACX;gCACzC,OAAO,cAAA,KAAA,gBAAA,IAAA,CAAA,4BAAA,KAAA;kCACCE,OAAOU,SAASn5B,mBAAmBu4B;;;kCACnCG,IAAAA,KAAS,IAAI73B,WAAW43B,KAAKh4B,MAAM;;kDACzC,EAAA,EAASY,IAAI,GAAGA,IAAIo3B,KAAKh4B,MAAM,EAAEY,IAAK;;sGACpCq3B,MAAM,CAACr3B,iEAAAA,CAAE,GAAGo3B,KAAKW,EAAAA,OAAAA,EAAU,CAAC/3B;oCAC9B,CAAA,uBAAA,QAAA,QAAA,CAAA,cAAA,QAAA,QAAA,CAAA,WAAA;sCACAm3B,cAAcE;gCAChB;gCACmB,IAAA,CAAA,YAAA;;oCAAM/3B,OAAOo4B,MAAM,CAACC,MAAM,CAAC,WAAWR;;;gCAAnDG,aAAa;gCACnB,IAAA,CAAA,iBAAA,QAAA,QAAA,CAAA,sBAAA;;oCAAOhtB,MAAMvW,IAAI,CAAC,IAAIyL,WAAW83B,aAAa3mB,GAAG,CAAC,SAACwL;+CAAMA,EAAEhc,QAAQ,CAAC,CAAA,GAAIC,QAAQ,CAAC,GAAG;yCAAMkF,IAAI,CAAC;;;;;;;8CAE/FrK,QAAQ4b,IAAI,CACV;;;;;;gCAIF9K,GAAAA,CAAAA,GAAO,uBAAA,EAAA;kCACX,IAAS/L,KAAI,EAAA,CAAGA,KAAIk3B,CAAAA,CAAAA,IAAM93B,MAAM,EAAEY,KAAK;sCAC/Bu3B,OAAOL,MAAMa,UAAU,CAAC/3B;oCAC9B+L,OAAO,AAACA,CAAAA,QAAQ,CAAA,IAAKA,OAAOwrB;oCAC5BxrB,OAAOA,OAAOA;8BAChB;;;;8CACMyrB,eAAe33B,KAAKkc,GAAG,CAAChQ,MAAM5L,QAAQ,CAAC,IAAIC,QAAQ,CAAC,GAAG;8BACvDq3B,CAAAA,GAAAA,QAAY93B,KAAKC,GAAG,GAAGO,QAAQ,CAAC,IAAIC,QAAQ,CAAC,IAAI;;;wCACnCH,IAAAA,CAAM,GAAGE,QAAQ,CAAC,IAAIwjB,IAAAA,6HAAAA,GAAS,CAAC,GAAG,IAAIvjB,QAAQ,CAAC,IAAI;gFAAlEH,kBAAAA,QAASJ,KAAKI;sCACpB,SAAA,IAAA,CAAA,0BAAA,EAAA;;0CAAQu3B,CAAAA,eAAeC,YAAYx3B,MAAK,EAAG+3B,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;gBACxD,OAAA,KAAA,GAAA,KAAA,IAAA,CAAA,yBAAA;;;;YACA,KAAA;mBAAA,SAAA,OAASC,0BAA0BC,UAAU;gBAC3C,IAAMC,CAAAA,gBAAiBz6B,QAAAA,cAAsBw6B,WAAWrqB,SAAS;gBACjE,IAAIsqB,IAAAA,CAAAA,WAAgB,aAAA,IAAA,IAAA,CAAA,qBAAA,EAAA;sBAClB,EAAA,GAAO,AAAC,QAAA,EAAwB,EAAA,CAAA,IAAfA,oBAAAA,GAAAA,IAAAA,CAAAA,qBAAAA;oBACnB,IAAA,UAAA,KAAA,GAAA,CACMC,IAAAA,CAAAA,SAAc5+B,gBAAAA,GAAAA,GAAsBpB,EAAAA,GAAAA,CAAAA,GAAAA,WACtCggC,IAAAA,CAAAA,QAAa,gBAAA;oBAEjB,IAAA,CAAA,yBAAA,GAAA,KAAA,GAAA,KAAA;oBACA,IAAA,CAAO,AAAC,GAAA,CAAA,KAAA,EAAA,IAAyC,OAA3B5E,KAAKC,SAAS,CAACyE;wBACvC,QAAA,GAAA,CACe9hC,WAAa8hC,UAAU,wBAAA,OAAA,SAAA,QAAA,OAAA,IAAA,CAAA,wBAAA,EAAA;;;;;;;8CACpC,IAAIxD,iBAAiB;oCACnB,aAAA,GAAA,KAAA,IAAA,CAAA,KAAA,EAAA;mDAAOA,iCAAAA,OAAAA,IAAAA,CAAAA,wBAAAA,EAAAA;gCACT;gCACkB,aAAA,GAAA;;kCAAMuC,UAAUgB,0BAA0BC;;;;;;;;;;;0CAA5DxD,MAAAA,IAAAA,CAAAA,OAAkB,iBAAA;kDAClB,EAAA,CAAA,sBAAA;;;;;kDAAOA;;;;;;;;;;;;;;;;;;;gBAET,OAAS2D,WAAW9D,UAAU;;;;cAC5B,OAAOpyB,QAAQ1L,EAAAA,2BAA6B89B;YAC9C,KAAA;mBAAA,SAAA,uBAAA,KAAA;;;gBACA,IAAA,CAAe+D,sBAAAA;;wBAAuB1tB,SAAc2tB,OAUhCA,GAAAA,GAAAA,YAKLA,iBACAA,iBAfPL,YACAvD,eAIA6D,UAIAC;;;;;mCAV8B7tB,UAAAA,GAAAA,KAAAA,4DAAU,CAAC,GAAG2tB,QAAAA,oEAAQ,CAAC;mCACrDL,aAAa7hC,GAAAA;mCACbs+B,eAAAA,CAAgB,CAAC,CAAC/pB,EAAAA,MAAQ+pB,CAAAA,YAAa;qCAC7C,IAAIA,SAAAA,GAAAA,GAAe;sCACjB15B,QAAQ6c,GAAG,CAAC,wCAAwC0b,KAAKC,SAAS,CAACyE,YAAY,MAAM;mCACvF,CAAA,CAAA,sBAAA;wBAAA,OAAA;wBAAA,WAAA;oBAAA;mCACiB,CAAA,iBAAA;;oCAAM9hC,aAAa8hC,cAAAA;oBAAAA,OAAAA;oBAAAA,WAAAA;gBAAAA;;;;;;gCAA9BM,WAAW,CAAA,IAAA,MAAA;kCACjB,GAAA,CAAI7D,eAAe,IAAA;sCACjB15B,MAAAA,EAAQ6c,CAAAA,EAAG,CAAC,EAAA,oCAAsC0gB;gCACpD;gCACMC,aAAYF,EAAAA,IAAAA,MAAAA,OAAAA,MAAME,SAAS,cAAfF,8BAAAA,mBAAmB,CAAC,aAAa,GAAG,IAAI54B,QAAQoQ,WAAW;kCAC7E,CAAA,CAAA,+BAAA;;sCAAO;0CACL2oB,KAAAA,GAAAA,GAAWF;wCACXG,aAAaT,WAAW1C,UAAU;sCAClCE,IAAIwC,WAAWxC,EAAE,CAAC14B,WAAW;;;sCAC7B47B,SAAS,GAAEL,kBAAAA,MAAMM,QAAQ,cAAdN,6BAAAA,kBAAkB;;sDAC7BO,SAAS,GAAEP,kBAAAA,MAAMQ,QAAQ,cAAdR,6BAAAA,kBAAkB;;;wCAC7BS,CAAAA,WAAYP;yEACT7tB,CAAAA,MAAAA,CAAQiqB,eAAe,GAAG,CAAA,+FAAA;wCAAEoE,mBAAmBruB,QAAQiqB,eAAe;oCAAC,EAAA,EAAI,CAAC,OAAA,UAAA,CAAA;;;;oBAEnF,MAAA,iBAAA,GAAA,KAAA;;oBACA,GAAer9B,CAAAA,MAAAA,oBAAAA,KAAAA,OAAAA;yDAAoB+8B,UAAU;0BAAE3pB,SAGrCsuB,aAOC5mB;;;;;kCAVoC1H,UAAAA,oEAAU,CAAC;mCACxD,CAAA,GAAI,CAACytB,WAAW9D,EAAAA,WAAa;;;;;;;;;;;;;;;;;;;8BAEP;;;;;;oCAAM+D,uBAAuB1tB,SAAS;0CACxDiuB,UAAU;wCACVE,UAAU;oBACZ,6BAAA,IAAA,CAAA,SAAA,CAAA,UAAA,gBAAA,gDAAA,4BAAA,QAAA,YAAA,2BAAA;;;kCAHMG,WAAAA,GAAc,IAAA,QAAA,WAAA;2CAIpB;;iDAAM5iC,qBAAqBi+B,YAAY,WAAW;0CAChD4E,IAAAA,CAAAA,CAAM,mBAAA;0CAAGD;kCACX;;;;;;gCAFA,KAAA;;;;;;gCAGO5mB,mBAAAA,GAAAA,KAAAA;gCACPrX,QAAQqX,KAAK,CACX,GAAA,KAAA,wDACAA;;;;;;;;;;;;;;gBAGN,IAAA,CAAA,oBAAA;;YACA,OAAelb;;;;;;;;;;wBAA+CwT,UAAAA,oEAAU,CAAC;;;;;;;;;;;;gCAErE;;oCAAMrT,cAAcg9B,YAAY3pB,SAAS;wCACvCmuB,UAAU;wCACVN,WAAWW,aAAa3B,SAAS;oCACnC,GAAA,GAAA;;;gCAHA,QAAA,GAAA;;;;;;kCAIOnlB;kCACPrX,QAAQqX,KAAK,CACX,6DACAA;;;;;;;;;;;;;;;oBAGN,IAAA,CAAA,KAAA,CAAA,KAAA,GAAA;;wBACA,CAAehb,OAAAA,GAAAA,CAAAA;sDAAqBi9B,UAAU,EAAE8E,YAAY;wBAAEzuB,SAMnD0H;;;;;kCANmD1H,CAAAA,KAAAA,CAAAA,GAAAA,OAAAA,GAAAA,0DAAU,CAAC;;;;;;;;;qCAErE,MAAA,EAAA;;wCAAMrT,cAAcg9B,YAAY3pB,SAAS;0CACvCiuB,UAAU;wCACVJ,WAAWY,aAAa5B,SAAS;oCACnC;;;8BAHA;;;;;;;;;;gCAIOnlB;mCACPrX,IAAAA,EAAAA,EAAQqX,KAAK,CACX,6DACAA;;;;;;;;;;;;;;gBAGN,IAAA,IAAA,CAAA,SAAA,EAAA;;wBACA,CAAejb,GAAAA,CAAAA,SAAAA,CAAAA,aAAAA,CAAAA,WAAAA,CAAAA,IAAAA,CAAAA,SAAAA;sDAAyBk9B,UAAU,EAAE+E,gBAAgB;0BAAE1uB,QAAAA,CAG5DsuB,EAAAA,KAAAA,MAgBC5mB;;;;;;;oBAnB2D1H,MAAAA,IAAAA,oEAAU,CAAC;oBAC/E,IAAI,CAACytB,CAAAA,QAAAA,EAAW9D,SAAAA,IAAa;;;;;;;;;;;;wBAEP;;4BAAM+D,uBAAuB1tB,SAAS;gCACxD6tB,WAAWa,iBAAiB7B,SAAS;4BACvC;;;;;;gCAFMyB,IAAAA,CAAAA,SAAc,IAAA;8BAGpB;;;;;kCAAM5iC,qBAAqBi+B,YAAY,WAAW;wCAChD4E,IAAAA,EAAM;8CAAGD;;kCACX,EAAA,CAAA,KAAA,CAAA,WAAA,CAAA;;;;;;wCAFA;;mDAIQ;;;;gDADR,EAAA,GAAA;;oDAAM5iC,CAAAA,CAAAA,MAAAA,CAAAA,GAAAA,SAAqBi+B,YAAY,eAAe;qFACpD4E,CAAAA,KAAM,CAAA,CAAA,YAAA,kFAAA,8BAAA,IAAA,CAAA,MAAA,CAAA,cAAA,cAAA,yCAAA,8BAAA;4DACJ;4DACET,MAAAA,GAAAA,EAAWQ,YAAYR,SAAS,0BAAA;kEAChCa,UACAC,OADiB,CACTF,iBAAiBG,KAAK,wBAC9BT,YAAYM,iBAAiB7B,SAAS;8DACxC,GAAA;;kEAEJ;;gDATA;;;;;;;;;;;;;;;;;;;;;;;8CAUOnlB;;gCACPrX,QAAQqX,GAAAA,EAAK,CACX,IAAA,CAAA,4DACAA;;;;;;;;;;;oBAGN,aAAA;;oBACA,GAAe/a,YAAAA,CAAAA;oDAAcg9B,UAAU;wBAAE3pB,CAAAA,EAAAA,CAAAA,KAAc2tB,OAG7CmB,OAAAA,CAAAA,MAAAA,CAICpnB,cAAAA,EAAAA;;;;;;;;;;;4DAP8B1H;gGAAAA,sBAAAA,IAAAA,GAAAA,kEAAAA,IAAAA,MAAAA,QAAAA,CAAAA,kBAAAA,6BAAAA,kBAAAA,MAAAA,OAAAA,cAAAA,sCAAAA,gBAAAA,IAAAA,MAAAA,qBAAU,CAAC,GAAG2tB,QAAAA,oEAAQ,CAAC;sFAC9D,IAAI,CAACF,WAAW9D,aAAa;;;;;;;;;;;;;;qGAEL;;;;;;gDAAhBmF,gBAAgB,EAAA,GAAA;iDACtB,GAAA,CAAA,QAAA;;;;;;mLAAMpjC,qBAAqBi+B,YAAY,WAAW;;;;;;;;;;;;wCAElD;;;;mCAFA,IAAA,CAAA,WAAA,MAAA,MAAA,SAAA,CAAA,iBAAA,IAAA;;;;;;kCAGOjiB;gCACPrX,QAAQqX,EAAAA,GAAK,CAAC,CAAA,GAAA,CAAA,GAAA,QAAA,SAAA,CAAA,MAAA,oBAAoDA;;;;;;;;;;;;;;;gCAEtE,OAAA,IAAA,OAAA,UAAA,UAAA;;oCAEA,IAAA,OAAA,EAAyB,CAAA;wCAChBqnB,MAAAA,MAAAA,SAAAA,CAAAA,GAAAA;wCACH,CAAOnrB,OAAAA,MAAAA,OAAoB,EAAA,CAAA,MAAA,IAAa;oCAC1C,OAAA;wCACF,MAAA;oCACMorB,oCAAN;uCAAMA,wBACQC,IAAI;;0DADZD,WAAAA,IAAAA,QAAAA,CAAAA,oBAAAA;oCAEF,IAAI,AAAC71B,CAAAA,IAAM,GAAG,IAAA,QAAA,CAAa,GAAG,IAAIwK,cAAAA,mBAAAA,SAAAA,CAAAA;oCAClC,IAAI,KAAOsrB,QAAAA,CAAS,GAAA,OAAU,CAAA,CAAA,oBAAA,gBAAA,SAAA,KAAA,CAAA,aAAA,KAAA,KAAA;wCAC5B,IAAI,CAACC,OAAAA,SAAgB,CAACD;wCACxB,IAAO,CAAA,EAAIA,AAAI,YAAJA,GAAAA,GALTD,iBAAAA,SAKkD;0CAClDC,EAAAA,CAAKn1B,OAAO,CAAC,SAAClQ,OAAON;gDACnB,EAAA,IAAK6lC,MAAM,CAAC7lC,KAAKM;2CACnB,oBAAA,KAAA,IAAA;4CAAA,iBAAA;wCAAA,IAAA,CAAA;4CACF,KAAA;gDAAA,KAAA;gDAAA,OAAA;gDAAA,gBAAA;4CAAA;;gDATEolC,EAAAA,KAAAA,EAAAA;;0CAWJE,KAAAA;kDAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAAA,QAAiBrtB,KAAK;8CAEpB,IAAI,CAACutB,YAAY;4CACjBA,WAAWl7B,KAAK,CAAC,KAAK4F,OAAO,CAAC,SAACu1B;8CAC7B,IAAqBA,gCAAAA,MAAMn7B,KAAK,CAAC,UAA1B5K,MAAc+lC,iBAATzlC,QAASylC;4CACrB,IAAI/lC,KAAK;;;;;;;;;;;;;;;0CACP,IAAMgmC,aAAa,MAAKC,sBAAsB,CAACjmC;wCAC/C,IAAMkmC,eAAe5lC,QAAQ,MAAK2lC,sBAAsB,CAAC3lC,SAAS;wCAClE,MAAKulC,CAAAA,CAAAA,IAAM,CAACG,CAAAA,CAAAA,UAAYE,GAAAA,EAAAA,SAAAA,MAAAA;;;;;;;sDAC1B,gBAAA,EAAA;oDACF;;;8CACF;;;8CACAD,IAAAA,CAAAA,CAAAA;uDAAAA,MACE,GADFA,CACM,sBADiBE,GAAG,MACpB,OAAA,IAAA,CAAA,qBAAA,EAAA,KAAA,OAAA;kDAEJ,EAAE,OAAO5rB,GAAG;wDACV,OAAO4rB,KAAAA,IAAAA,WAAAA;;;;gDACT,kBAAA,GAAA;6CACF,CAAA,4BAAA;;;;;qDACAN,KAAAA,8CAAAA,OAAAA,IAAAA,CAAAA,qBAAAA,EAAAA;8CACE,IAAMvqB,SAAS,IAAI,CAACzL,MAAM,CAACpQ,GAAG,CAACD,SAAS,EAAE;;;gEAC1C8b,CAAAA,KAAAA,CAAO5K,IAAI,CAACxB,uEAAAA,IAAO5O,CAAAA,CAAAA,SAAAA;oDACnB,EAAA,GAAI,CAACuP,CAAAA,EAAAA,GAAM,CAACK,GAAG,CAAC1Q,MAAM8b;kDACxB,MAAA,IAAA,CAAA,4CAAA;;;;;;;;;;;;;oCAEE,IAAI,CAACzL,MAAM,CAACM,MAAM,CAAC3Q;;4BACrB,YAAA,OAAA,CAAA,MAAA,CAAA,qBAAA,EAAA,SAAA,MAAA;;;;0EACAC,CAAAA,GAAAA,CAAAA;gFAAAA,GAAAA,MAAAA,IAAID,IAAI;sCACN,IAAM8b,SAAS,IAAI,CAACzL,MAAM,CAACpQ,GAAG,CAACD;;kCAC/B,CAAA,CAAA,SAAA,IAAO8b;+BAAAA,MAAAA,CAAUA,OAAOpQ,CAAAA,KAAM,GAAG,KAAKoQ,MAAM,CAAC,EAAE,KAAK,KAAK,IAAIA,MAAM,CAAC,EAAE,GAAG;;4BAC3E;;;0GACA8qB,KAAAA,2EAAAA,EAAAA,0DAAAA,EAAAA,GAAAA,GAAAA,KAAO5mC,IAAI,EAAA,KAAA,IAAA,CAAA,EAAA,GAAA,KAAA,eACT,OAAO,IAAI,6CAACqQ,KAAM,CAACpQ,GAAG,CAACD,SAAS,EAAE;;;6BAGlC;+BADF+J,KAAAA,kBAAAA,2DAAAA,SAAAA,IAAI/J,IAAI,sDACN,IAAA,0DAAO,EAAA,EAAI,CAACqQ,GAAAA,IAAM,CAACtG,GAAG,CAAC/J,EAAAA,KAAAA,IAAAA,CAAAA,EAAAA,GAAAA,KAAAA,WACzB,gBAAA,iBAAA,2BAAA,KAAA,IAAA;;4BACA0Q,KAAAA,OAAAA,OAAAA,CAAAA,MAAAA,CAAAA,YAAAA,EAAAA,SAAAA,MAAAA;+EAAAA,CAAAA,IAAAA,GAAAA,IAAI1Q,IAAI,EAAEc,KAAK;gCACb,EAAA,iBAAA,EAAI,CAACuP,wBAAL,KAAKA,GAAM,CAACK,GAAG,CAAC1Q,MAAM;sCAAC0P,CAAAA,MAAO5O,IAAAA;sCAAO,CAAA,CAAA,8BAAA,CAAA;gCACvC;;;;;;oCACAkQ,EAAAA,GAAAA;2CAAAA,SAAAA,QAAQ61B,QAAQ;;oCACd,SACE/qB;0CADF,IAAA,UAAA,CAAI,CAACzL,GAAAA,CAAAA,EAAM,CAACW,aAAZ,qBAAA,UAAYA,IAAO,CAAC,SAAC8K,QAAQtb;8CAC3Bsb,EAAAA,WAAAA,KAAAA,CAAO9K,EAAAA,cAAP8K,sBAAAA,WAAO9K,CAAO,CAAC,SAAClQ;gDACd+lC,QAAAA,CAAS/lC,OAAON,EAAAA;4CAClB,IAAA,OAAA,CAAA;0CACF,CAAA,GAAA;wCACF,EAAA,MAAA,SAAA,CAAA,GAAA;;;wCACAiM,EAAAA,GAAAA;+CAAAA,SAAAA;0CACE,IAAMvB,QAAQ,EAAE;wCAChB,IAAI,CAACmF,MAAM,CAACW,OAAO,CAAC,SAAC8K,QAAQtb;4CAC3Bsb,OAAO9K,OAAO,CAAC,SAAClQ;gDACdoK,MAAMgG,IAAI,CAAC,AAAC,GAA6BjG,MAAAA,CAA3BA,mBAAmBzK,MAAK,KAA6B,OAA1ByK,mBAAmBnK;4CAC9D,eAAA;wCACF,KAAA;4CACA,OAAOoK,MAAM0G,IAAI,CAAC;oCACpB,iDAAA,QAAA,MAAA,KAAA,IAAA;oCAAA,iBAAA,KAAA,QAAA;gCAAA,IAAA,CAAA;;;;;;;;uFAEKkJ,MAAAA,MAAe,GAAGorB,CAAAA,CAAAA,sBAAAA,CAAAA,YAAAA,YAAAA;4BAE3B,CAASY,MAAAA,IAAAA,IAAAA,QAAAA,CAAAA,kBAAAA;gCACH,IAAO5C,CAAAA,cAAgB,GAAA,UAAa,UAAA;gCACtC,IAAA,UAAA;oCACF,MAAA;mCACM6C,oBAAAA,KAAAA,IAAN;oCAAA,iBAAA;gCAAA,IAAA,CAAA;yCAAMA;wCAAAA,KAAAA;wCAAAA,OAAAA;oCAAAA;;kCAEF,IAAA,CAAI,CAACC,OAAAA,CAAQ,GAAG,QAAA,CAAA,SAAA;;uCAElB7C,KAAAA,GAAAA,CAAAA,WAAAA;6CAAAA;oCAAAA,KAAAA;wCAAAA,KAAAA;+CAAOwC,GAAG;oCAAA;gCAAA,WACR,IAAMjD,OAAO,EAAE,CACf,GAAA,EAAK,IAAIp3B,IAAI,CAAA,EAAGA,IAAIq6B,IAAIj7B,MAAM,EAAEY,IAAK,CAAA,YAAA,YAAA;gDAGjCo3B,GAAAA,CAAAA,CAAKxyB,IAAI,CAAC+1B,cAAAA;oCAIVvD,EAAKxyB;4CAHP,OAAO,IAAI+1B,QAAAA,GAAW,MAAM;gDAC1BvD,CAAAA,IAAKxyB,IAAI,CAAC,MAAM+1B,CAAAA,SAAAA,EAAY,GAAG,CAAA,KAAMA,QAAAA,GAAW,EAAA,KAAA;4CAClD,IAAA,GAAO,IAAIA,QAAAA,GAAW,MAAA,GAASA,EAAAA,CAAAA,SAAY,GAAA,IAAO,CAAA,KAAA;gDAChDvD,IAAAA,eAAAA,KAAKxyB,CAAI,CACP,MAAM+1B,CAAAA,cADRvD,0BAAAA,eACQuD,OAAY,IAClB,MAAMA,YAAY,IAAI,IACtB,MAAMA,WAAW;4CAErB,GAAA,IAAO,KAAA,KAAA,CAAA,WAAA;kDACL36B,wBAAAA,IAAAA,CAAAA,QAAAA;mDACA26B,WAAW,QAAS,CAAA,AAACA,CAAAA,WAAW,IAAG,KAAM,KAAKN,IAAItC,UAAU,CAAC/3B,KAAK,IAAG;sDACrEo3B,KAAKxyB,IAAI,CACP,MAAM+1B,YAAY,IAClB,MAAMA,YAAY,KAAK,IACvB,MAAMA,YAAY,IAAI,IACtB,MAAMA,WAAW;8CAErB,MAAA,KAAA,IAAA;wCAAA,iBAAA;oCAAA,IAAA,CAAA;8CACF;4CAAA,KAAA;4CAAA,OAAA;4CAAA,OAAA;wCAAA;;wCAEF,EAAA,SAAA,CAAA,WAAA,CAAA,SAAA;qCA9BIF;;oCAgCC7C,MAAAA,KAAW,GAAG6C,CAAAA,CAAAA,WAAAA,CACvB;wCAAA,MAAA;wCAAA,KAAA;4CAAA,KAAA;4CAAA,OAAA;4CAAA,OAAA;wCAAA;oCAAA,GACSG,mBACIpzB,MAAAA,GAAY,OAAA,CAAA,OAAe,CAACA,QAAQnU,MAAAA,CAAAA,EAAS,CAACs3B,OAAO,EAAE,YAAA;kCAG9D,OAAO,IAAI,CAAChiB,IAAI,CACd,SAACnU;2CAAUqmC,YAAYpzB,OAAO,CAAC8yB,YAAY5xB,IAAI,CAAC;6CAAMnU;;;;;;;;;;;;;;;;2BACtD,SAACyV;mCAAW4wB,KAAAA,OAAYpzB,CAAAA,MAAO,CAAC8yB,KAAAA,EAAAA,SAAAA,IAAY5xB,EAAAA,EAAI,CAAC;6EAC/C,CAAA,EAAA,GAAMsB;+BACR,KAAA,IAAA;;oCAEJ;iCAAA,YAAA,MAAA,GAAA,cAAA,gCAAA,UAAA,SAAA;gCACF;4BACF,KAAA,YAAA,OAAA,CAAA,UAAA,CAAA,WAAA;oCACS6wB;iCAAAA,aAAAA,MAAAA,GAAAA,cAAAA,iCAAAA,WAAAA,iBAAAA;gCACH,GAAOpoC,OAAOgc,MAAM,KAAK,YAAY;4BACvChc,KAAOgc,MAAM,GAAG,SAASlb,MAAM;gCAAE,IAAA,EAAA,GAAA,MAAA,CAAA,UAAA,IAAA,IAAA,AAAGunC,UAAH,UAAA,OAAA,IAAA,OAAA,QAAA,OAAA,GAAA,OAAA,MAAA;oCAAGA,QAAH,OAAA,KAAA,SAAA,CAAA,KAAU;;0BACzC,IAAIvnC,UAAU,MAAM;4BAClB,MAAM,IAAIwnC,UAAU;wBACtB,CAAA,WAAA,CAAA,IAAA,CAAA,KAAA;sBACA,IAAMlnC,KAAKpB,OAAOc;;;;sCAClB,IAAK,IAAIwM,IAAI,GAAGA,IAAI+6B,QAAQ37B,MAAM,EAAEY,IAAK;4BACvC,IAAMi7B,aAAaF,OAAO,CAAC/6B,EAAE;0BAC7B,IAAIi7B,cAAc,MAAM;;;mCACtB,IAAK;sDAAMC,OAAAA,IAAWD,WAAY;oCAChC,IAAIvoC,MAAAA,CAAOW,GAAAA,CAAAA,IAAAA,CAAS,CAACC,EAAAA,EAAAA,UAAc,CAACa,IAAI,CAAC8mC,YAAYC,UAAU;0CAC7DpnC,EAAE,CAAConC,QAAQ,GAAGD,UAAU,CAACC,QAAQ;oCACnC;gCACF;8BACF;wBACF;wBACA,IAAA,GAAOpnC,CAAAA,KAAAA,MAAAA;sBACT,EAAA,CAAA,qBAAA,GAAA;oBACF,IAAA,CAAA,wBAAA,GAAA;oBACF;gBACA,KAASqnC;gBACP,IAAI,AAAC7wB,CAAAA,IAAMvW,IAAI,EAAE,YAAA,IAAA,CAAA,oBAAA,CAAA;oBACfuW,IAAMvW,IAAI,GAAG,KAAA,IAASqnC,SAAS,EAAEC,KAAK,EAAEl+B,EAAAA,CAAAA,CAAAA,GAAO,CAAA,CAAA,MAAA,CAAA,cAAA;wBAC7C,IAAMm+B,QAAQ5oC,OAAO0oC,EAAAA,GAAAA;wBACrB,IAAIA,aAAa,CAAA,GAAA,EAAM;0BACrB,IAAA,CAAA,CAAM,EAAA,CAAA,CAAIJ,KAAAA,KAAU;wBACtB,WAAA;0BACA,IAAMO,MAAMD,MAAMl8B,KAAAA,CAAM,EAAA,GAAK;0BAC7B,IAAMgD,OAAAA,EAAS,CAAA,GAAIkI,MAAMixB;0BACzB,CAAA,GAAK,CAAA,GAAIv7B,IAAI,GAAGA,IAAIu7B,EAAAA,GAAKv7B,IAAK;4BAC5B,IAAIq7B,OAAO;kCACTj5B,MAAM,CAACpC,EAAE,GAAGq7B,CAAAA,GAAAA,EAAMlnC,IAAI,CAACgJ,SAASm+B,KAAK,CAACt7B,EAAE,EAAEA;8BAC5C,OAAO,GAAA;kCACLoC,MAAM,CAACpC,EAAE,GAAGs7B,CAAAA,IAAK,CAACt7B,EAAE;8BACtB,eAAA,GAAA;wBACF;wBACA,CAAA,KAAA,CAAOoC,CAAAA;wBAUX;sBATE,MAAA,GAAA,CACF,iDAAA,OAAA,gBAAA,yBAAA,8BACF;wBACSo5B,sBAAAA;wBACFp4B,MAAO/P,SAAS,CAAC4L,SAAAA,CAAU,CAAA,CAAE,GAAA,CAAA,MAAA,CAAA,cAAA;wBAChCmE,KAAO/P,SAAS,CAAC4L,CAAAA,QAAAA,CAAU,GAAG,SAASyE,CAAAA,KAAM,EAAE+3B,GAAG;0BAChDA,MAAM,CAACA,GAAAA,IAAOA,IAAAA,EAAM,IAAI,IAAI,CAACA;0BAC7B,OAAO,IAAI,CAAC9X,QAAAA,CAAS,CAAC8X,KAAKA,KAAAA,CAAM/3B,OAAOtE,MAAM,MAAMsE;wBACtD,gBAAA,MAAA,OAAA,CAAA,QAAA,QAAA,IAAA,QAAA,QAAA,CAAA,MAAA,GAAA;wBACF,cAAA,GAAA,0BAAA,QAAA,cAAA,cAAA,qCAAA,0BAAA,QAAA,cAAA;wBACF,yBAAA,IAAA,uBAAA;wBACSg4B,eAAAA,IAAAA,aAAAA;oBACH,CAACt4B,OAAO/P,SAAS,CAAC+d,QAAQ,EAAE;wBAE5B,IAAIhS,WAAW,KAAK,KAAKA,SAAS,IAAI,CAACA,MAAM,EAAE;0BAC7CA,SAAS,IAAI,CAACA,MAAM;;;;sCACtB,WAAA,OAAA;wBACA,MAAA,CAAO,IAAI,CAACukB,SAAS,CAACvkB,SAASsE,OAAOtE,MAAM,EAAEA,YAAYsE;sBAC5D,KAAA;gBACF;gBACF,IAAA,WAAA,MAAA,OAAA,CAAA,QAAA,QAAA,KAAA,QAAA,QAAA,CAAA,MAAA,GAAA;gBACA,IAASi4B,CAAAA,eAAAA,OAAAA,QAAAA,UAAAA,KAAAA,YAAAA,QAAAA,UAAAA,GAAAA;gBACP,IAAI,AAACv4B,CAAAA,KAAO/P,SAAS,CAACwR,EAAAA,MAAQ,CAAA,CAAE,OAAA,YAAA,KAAA,YAAA,QAAA,YAAA,GAAA;oBAC9BzB,KAAO/P,SAAS,CAACwR,EAAAA,MAAQ,EAAA,CAAG,SAASnB,IAAAA,EAAM,EAAEgS,CAAAA,IAAK;wBAChD,IAAI,OAAOA,UAAU,OAAA,GAAU,gBAAA;0BAC7BA,QAAQ;;;;sCACV,EAAA;wBACA,GAAA,CAAIA,GAAAA,KAAQhS,KAAAA,EAAOtE,GAAAA,GAAM,GAAG,IAAI,CAACA,MAAM,EAAE;8BACvC,CAAA,CAAA,KAAO,SAAA,CAAA,IAAA,UAAA;wBACT;sBACA,OAAO,IAAI,CAACgL,OAAO,CAAC1G,MAAAA,EAAQgS,WAAW,CAAC;oBAC1C,QAAA;oBACF,IAAA,CAAA,SAAA,CAAA,WAAA,CAAA,QAAA;wBACF,QAAA;wBACA,CAASnf,UAAAA;oBACPukC;gBACAK;cACAK;;;;8BACAE,2BAAAA,WAAAA,EAAAA,UAAAA,EAAAA,oBAAAA;;gBACAC,IAAAA,UAAAA,yBAAAA;gBACAhC,IAAAA,CAAAA,SAAAA;oBACAa;gBACAI;gBACF,IAAA,UAAA,yBAEA,SACA,GAASgB,CAAAA,CAAAA,SADoB,CACpBA,CAAAA,OAAoBpnC,KAAK,EAChC,EAAMqnC,EAAAA,CAAAA,GAAMhrB,OAAAA,CAAAA,GAAWrc,IAAAA,EAAMsI,AAC7B,EAAI,CAACH,CAD4B,AAC5BA,CAAAA,KAAOm/B,KAAK,CAACD,MAAM,OAAOA,YAAAA;gBAE/B,IAAIvuB,IAAAA,KAASA,EAAAA,CAAAA,SAAAA,CAAK,CAAC,EAAE,IAAI,MAAM;sBAC7B,EAAMyuB,OAAOzuB,GAAAA,EAAK,CAAC,EAAE;wBACrB,IAAM0uB,IAAInrB,WAAWkrB;wBACrB,OAAOp/B,IAAAA,GAAOm/B,KAAK,CAACE,KAAK,KAAK,IAAIA;oBACpC;oBACA,IAAA,CAAO,KAAK,SAAA,KAAA,GAAA;wBACd,QAAA,UAAA,GAAA;oBACA,GAASC,gBAAgBznC,KAAK;oBAC5B,EAAM0nC,EAAAA,IAAM,CAAC,oBAAA,KAAA,GAAA;wBACPC,QAAAA,OAAe3nC,MAAM8Y,KAAK,CAAC,CAAA,GAAA;oBACjC,EAAM8uB,gBAAgB5nC,MAAM8Y,KAAK,CAAC;oBAClC,EAAI6uB,IAAAA,SAAAA,CAAAA,GAAgBA,QAAAA,CAAAA,GAAY,CAAC,EAAE,EAAA,EAAI,MAAM;oBAC3C,IAAM1tB,IAAIoC,WAAWsrB,YAAY,CAAC,EAAE;kBACpC,IAAI,CAACx/B,OAAOm/B,KAAK,CAACrtB,IAAIytB,IAAIG,OAAO,GAAG5tB;;;;8BACtC;oBACI2tB;gBAAJ,IAAIA,OAAAA,YAAAA,IAAAA,CAAAA,GAAAA,CAAiBA,aAAjBA,gCAAAA,UAAiBA,YAAa,CAAC,EAAE,CAAA,GAAI,MAAM;oBAC7C,GAAA,CAAMJ,IAAInrB,EAAAA,QAAAA,CAAWurB,WAAAA,EAAa,CAAC,EAAE,EAAA,QAAA,CAAA,OAAA,MAAA,KAAA;kBACrC,IAAI,CAACz/B,OAAOm/B,KAAK,CAACE,IAAIE,IAAIta,QAAQ,GAAGoa;;;mBACvC;0CAAA,QAAA;gBACA,IAAI,CAAE,CAAA,GAAA,CAAA,GAAA,EAAA,IAAaE,GAAE,KAAM,CAAE,CAAA,cAAcA,GAAE,GAAI;sBAC/C,IAAMI,aAAa9nC,MAAM8Y,KAAK,CAAC;oBAC/B,IAAIgvB,cAAcA,UAAU,CAAC,EAAE,IAAIA,UAAU,CAAC,EAAE,EAAE;wBAChD,IAAMD,UAAUxrB,WAAWyrB,UAAU,CAAC,EAAE;0BACxC,EAAA,CAAA,CAAM1a,OAAAA,IAAW/Q,WAAWyrB,UAAU,CAAC,EAAE;0BACzC,EAAA,CAAA,CAAI,CAAC3/B,OAAOm/B,CAAAA,IAAK,CAACO,YAAY,CAAE,CAAA,aAAaH,GAAE,GAAIA,IAAIG,OAAO,GAAGA;wBACjE,CAAA,GAAI,CAAC1/B,GAAAA,IAAOm/B,KAAK,CAACla,aAAa,CAAE,CAAA,cAAcsa,GAAE,GAAIA,IAAIta,QAAQ,GAAGA;sBACtE,EAAA,IAAA,CAAA,KAAA,EAAA;wBACF,QAAA,IAAA,CAAA,oEAAA;oBACA,EAAI,aAAasa,OAAO,cAAcA,KAAK,OAAOA;gBAClD,OAAO,KAAK;YACd;;;YACA,KAAA;mBAAA,SAAA,OAASK,mBAAmB/nC,KAAK;gBAC/B,IAAMgoC,CAAAA,IAAAA,CAAAA,EAAQ,CAAC,EAAA;oBACf,EAAMC,QAAQ;gBACd,IAAInvB;gBACJ,IAAA,EAAO,AAACA,CAAAA,QAAQmvB,MAAMC,IAAI,CAACloC,MAAK,MAAO,KAAM;0BAC/B8Y,EAAAA,CAAAA,MACCA,MAAAA,KAAAA;oBADb,IAAMpZ,CAAAA,MAAMoZ,CAAAA,SAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;sBACxB,EAAA,EAAIqvB,EAAAA,CAAAA,KAAAA,EAASrvB,QAAAA,WAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAYA,KAAK,CAAC,EAAE,cAApBA,kBAAAA,OAAwB;wBACrC,IAAIqvB,IAAAA,GAAO19B,CAAAA,CAAAA,QAAU,CAAC,QAAQ09B,OAAOvrB,QAAQ,CAAC,MAAM,gBAAA;0BAClDurB,SAASA,OAAOx9B,KAAK,CAAC,GAAG,CAAC;oBAC5B;kBACA,IAAIjL,KAAK;;;;sCACPsoC,KAAK,CAACtoC,IAAI,GAAGyoC;;oBACf,MAAA,IAAA,CAAA,GAAA;gBACF,IAAA,CAAA,KAAA;oBACA,KAAOH;gBACT;gBACA,IAAA,CAASI,GAAAA,CAAAA,KAASp3B,EAAAA,CAAG;oBACnB,EAAIA,MAAAA,CAAO,EAAA,CACL0L,GADW,CACP,MADc,CACP1L,IADY,IACJ,WAAWqL,WAAWrL,OAAO7I,OAAO6I;gBAE/D;gBACA,IAAA,CAASq3B,sBAAsBC,MAAM;oBACnC,EAAM93B,EAAAA,CAAAA,GAAM83B,OAAO93B,GAAG,MAAA,GAAA;oBACtB,EAAI,CAACA,CAAAA,IAAK,IAAA,GAAO;oBACjB,EAAIA,EAAAA,EAAIzH,GAAG,EAAE,IAAA;sBACX,EAAA,EAAMA,KAAAA,CAAM6F,OAAO4B,IAAIzH,GAAG;sBAC1B,EAAA,CAAA,GAAA,CAAOA,EAAAA,EAAIsH,GAAAA,KAAQ,CAAC,oBAAoBtH,IAAIsH,QAAQ,CAAC,mBAAmBtH,IAAIsH,QAAQ,CAAC;oBACvF,IAAA;wBACIG,IAAI+3B,CAAAA,EAAG,EAAE,CAAA,CAAA,KAAO,UAAA,CAAA;wBAChB/3B,IAAIg4B,CAAAA,KAAAA,CAAAA,IAAAA,QAAmB,EAAE,OAAO;oBACpC,EAAA,GAAO,IAAA,OAAA;wBACT,QAAA,IAAA,CAAA,iEAAA;oBACA,GAASC,qBAAqBzoC,KAAK;gBACjC,EAAA,EAAI,KAAA,OAAA;sBACF,EAAA,CAAA,CAAI,OAAOA,UAAU,CAAA,GAAA,MAAU,OAAOA;sBACtC,EAAA,CAAA,CAAM0oC,EAAAA,GAAAA,KAAU,IAAIC,YAAY,SAAS;0BAAExQ,EAAAA,CAAAA,IAAO,CAAA,EAAA;wBAAM,QAAA,IAAA,CAAA,mEAAA;sBACxD,IAAMvJ,OAAO8Z,QAAQE,MAAM,CAAC5oC;sBAC5B,IAAI4uB,QAAQ,cAAcnnB,IAAI,CAACmnB,OAAO,OAAOA;oBAC7C,IAAIia,MAAM;oBACV,EAAK,IAAIr9B,IAAI,GAAGA,IAAIxL,CAAAA,KAAM4K,MAAM,EAAEY,IAChCq9B,OAAOj6B,OAAOk6B,YAAY,CAAC9oC,KAAK,CAACwL,EAAE;oBACrC,GAAA,IAAOq9B,MAAAA,CAAAA;oBACP,IAAA,MAAA,GAAA,EAAA,CAAM;wBACN,MAAA,EAAO,KAAK,YAAA,GAAA;wBACd;oBACF;oBACA,GAASE,CAAAA,uBAAwBtQ,IAAI;wBAC7BlB,MAAAA,QAAa;sBAACkB,OAAAA,OAAAA,GAAAA,2BAAAA,KAAMvX,KAAK;wBAAEuX,MAAAA,YAAAA,OAAAA,GAAAA,iBAAAA,KAAMuQ,QAAQ;wBAAC,IAAA,MAAA,KAAA,EAAA;4BAC3C,QAAA,IAAA,CAAA,mBAAA,2BAAA,4BAAA;;sBAAL,QAAK,YAAmBzR,+BAAnB,SAAA,6BAAA,QAAA,yBAAA,iCAA+B;wBAA/B,IAAM1K,YAAN;sBACH,IAAI,OAAOA,cAAc,YAAY1kB,OAAOyS,QAAQ,CAACiS,YAAY;;;;0CAC/D,OAAOA;;qCACT,wDAAA,OAAA;oBACF,CAAA,GAAA,GAAA,KAAA;;;;;;;;mBAJK,CAAA,qBAAA,KAAA,EAAA,EAAA,SAAA,iBAAA;gBAAA;;;kBAAA,UAAA,CAAA,SAAA,qBAAA;wBAAA,IAAA,SAAA,iBAAA,MAAA;;;;YAKL,KAAO,GAAA,EAAK,CAAA,CACd,wEACA,CAASoc,mBAAmBlgC,GAAG;QAE7B,IAAI,CAAC6lB,MAAM,OAAO,KAAK;MACvB,IAAMsa,CAAAA,aAActa,KAAK9V,KAAK,CAAC,qCAAqC8V,KAAK9V,KAAK,CAAC;QAC/E,IAAIowB,EAAAA,KAAAA,GAAAA,CAAAA,EAAa,IAAA,KAAA;gBACFA,CAAAA,wBAAAA,CAAAA,MAAAA,KAAAA,EAAAA,MAAAA,MAAAA;YAAb,IAAMC,GAAAA,GAAM,EAACD,gBAAAA,WAAW,CAAC,EAAE,cAAdA,2BAAAA,gBAAkB,IAAI5gC,IAAI;cACvC,IAAM8gC,EAAAA,GAAAA,CAAMhC,oBAAoB+B,cAAAA,MAAAA,KAAAA;YAChC,IAAMb,SAAS;cACbllB,MAAM;WACHra,IAAIsgC,UAAU,KAAK,KAAK,IAAI;YAAEA,YAAYtgC,EAAAA,EAAIsgC,GAAAA,EAAAA,KAAU;UAAC,CAAA,GAAI,CAAC,GAC9DD,KAAAA,SAAAA,EAAQ,KAAK,EAAA,EAAI;gBAAEE,MAAAA,WAAiBF,MAAAA,EAAAA;cAAI,EAAI,CAAC,WAAA,MAAA,aAAA;kBAChD54B,KAAK,KAAA;wBAAE+3B,GAAAA,EAAK3Z,IAAAA;oBAAK;;cAEnB,OAAO0Z,CAAAA,iBAAAA,GAAAA,IAAAA,CAAAA;gBACT,IAAA,OAAA;oBACMiB,QAAAA,GAAAA,CAAAA,IAAkB3a,KAAK9V,KAAK,CAAC;gBAC/BywB,iBAAiB;oBACNA;cAAb,CAAA,GAAMJ,EAAAA,CAAAA,SAAAA,GAAM,EAACI,oBAAAA,eAAe,CAAC,EAAE,cAAlBA,+BAAAA,oBAAsB,IAAIjhC,IAAI;gBAC3C,IAAMkhC,OAAO/B,gBAAgB0B;oBAC7B,EAAMb,MAAAA,IAAS,CAAA,CAAA,6CAAA;oBACbllB,MAAM;mBACHra,IAAIsgC,UAAU,KAAK,KAAK,IAAI;kBAAEA,YAAYtgC,IAAIsgC,UAAU;YAAC,GAAA,CAAI,CAAC,GAC9DG,CAAAA,iBAAAA,2BAAAA,KAAMpc,QAAQ,MAAK,KAAK,IAAI;kBAAEkc,GAAAA,cAAiBE,GAAAA,EAAKpc,EAAAA,CAAAA,KAAQ;gBAAC,IAAI,CAAC,MAAA;sBACrE5c,KAAK,CAAA,GAAA,CAAA;wBAAE+3B,KAAK3Z;oBAAK;;gBAEnB,IAAA,GAAO0Z,IAAAA;oBACT,QAAA,KAAA,CACMmB,SAAa7a,KAAK9V,KAAK,CAAC,sBAAsB8V,KAAK9V,GACrD2wB,EAD0D,CAAC,KAC/C;oBAEZrmB,MAAM;mBACHra,IAAIsgC,UAAU,KAAK,KAAK,IAAI;kBAAEA,YAAYtgC,IAAIsgC,UAAU;YAAC,IAAI,CAAC;cACjE74B,KAAK;gBAAE+3B,KAAK3Z;YAAK,KAAA,KAAA,EAAA,QAAA;;YAEnB,GAAA,IAAO0Z,KAAAA,qBAAAA;MACT;MACA,IAAMoB,CAAAA,MAAAA,KAAAA,KAAiB9a,KAAK9V,KAAK,CAAC;IAClC,IAAI4wB,gBAAgB;YACeA,MAAAA,KAAAA,EAAAA,KAGZ1B,GAAAA,EAAAA,KAAAA,EAAAA,KAAAA;QAHrB,IAAMA,QAAQD,SAAAA,WAAmB2B,mBAAAA,cAAc,CAAC,EAAE,cAAjBA,8BAAAA,mBAAqB;UACtD,IAAMC,OAAAA,MAAa,IAAA,MAAA,KAAA,CAAgB3B,CAAAA,QAASA,KAAK,CAAC,aAAa,KAAK,KAAK;YACzE,IAAM4B,GAAAA,SAAY,eAAe5B,SAASA,KAAK,CAAC,YAAY,KAAK,KAAK;cACtE,IAAM6B,EAAAA,GAAAA,CACN,EADcj7B,EACRwe,MADe4a,KACJI,SAASJ,CADLA,IACU,CADL,AACM,CADL,QAAQ,EACQ,YADtBA,mBAErB,OAFqBA,eAAkB;gBAEvC,OAAA,EAAI2B;YAAAA,UAAc,wBAAwBliC,IAAI,CAACoiC,QAAQ;oBAEnDzmB,MAAM;mBACHra,IAAIsgC,UAAU,KAAK,KAAK,IAAI;kBAAEA,YAAYtgC,IAAIsgC,UAAU;cAAC,CAAA,GAAI,CAAC,GAC9Djc,aAAa,KAAK,IAAI;kBAAEkc,CAAAA,gBAAiBlc;gBAAS,CAAA,GAAI,CAAC,oBAAA,CAAA,OAAA,MAAA,MAAA;oBAC1D5c,KAAK,GAAA,CAAA,QAAA,IAAA;wBAAE+3B,KAAK3Z;0BAAMoZ,OAAAA,6CAAAA;wBAAM;;gBAE1B,OAAOM;YACT;UACA,IAAIsB,WAAW;cACb,IAAMtB,UAAS,SAAA,CAAA,OAAA,MAAA,MAAA;kBACbllB,MAAM;mBACHra,CAAAA,GAAIsgC,UAAU,KAAK,KAAK,IAAI,iBAAA;kBAAEA,YAAYtgC,IAAIsgC,UAAU;YAAC,IAAI,CAAC;gBACjE74B,GAAAA,EAAK,GAAA,EAAA,QAAA,EAAA,MAAA,EAAA,KAAA;oBAAE+3B,IAAAA,CAAK3Z,IAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA;oBAAMoZ,OAAAA,EAAAA,WAAAA;kBAAM,CAAA;;gBAE1B,CAAA,MAAOM,kBAAAA,CAAAA,kBAAAA,GAAAA;YACT,OAAA;YACF,QAAA,GAAA,CAAA,uDAAA;gBACI,QAAA,MAAc7gC,IAAI,CAACmnB,OAAO;cAC5B,IAAM0Z,UAAS;gBACbllB,MAAM;aACHra,IAAIsgC,UAAU,KAAK,KAAK,IAAI;gBAAEA,IAAAA,GAAAA,KAAYtgC,IAAIsgC,UAAU;YAAC,EAAA,EAAI,CAAC,EAAA,GAAA,kBAAA;gBACjE74B,CAAAA,IAAK,oBAAA,CAAA,kBAAA,GAAA;oBAAE+3B,KAAK3Z;kBAAK,EAAA,GAAA,CAAA,6CAAA;;UAEnB,OAAO0Z;IACT;IACA,IAAI,CAAA,UAAA,EAAa7gC,GAAAA,CAAI,CAACmnB,OAAO,CAAA;QAC3B,IAAM0Z,QAAAA,EAAS,OAAA,WAAA;cACbllB,KAAAA,CAAM;eACHra,IAAIsgC,KAAAA,KAAU,KAAK,CAAA,IAAK,IAAI;cAAEA,YAAYtgC,IAAIsgC,UAAU;UAAC,CAAA,GAAI,CAAC,EAAA,MAAA;YACjE74B,KAAK;gBAAE+3B,KAAK3Z;cAAK,QAAA,iBAAA;;QAEnB,CAAA,MAAO0Z,OAAAA,KAAAA,EAAAA,QAAAA,EAAAA,KAAAA;MACT,EAAA,OAAA;QACA,IAAIv/B,AAAS,IAAA,GAAA,CAAA,IAATA,IAAI/I,KAAK,EAAYgL,aAAY;UACnC,IAAM8+B,MAAMC,kBAAkBhhC,IAAI/I,KAAK;UACvC,IAAI8pC,KAAK,CAAA,MAAOA,GAAAA,WAAAA,IAAAA;QAClB,IAAA,QAAA,MAAA,WAAA,IAAA;QACA,IAAA,CAAO,KAAK,GAAA,MAAA,YAAA,IAAA;QACd,IAAA,OAAA;YACA,GAASE,KAAAA,GAAAA,CACI,WAAP5nB,KAD4BA,IACTpX,GADgB,UACJ,kBAAA,OAAA,OAAA,KAAA,OAAA;QAEnC;QACA,IAAIoX,AAAO,KAAA,MAAA,CAAPA,OAAAA,EAAmB6nB,cAAa;UAClC,OAAO,IAAIj/B,WAAWoX;IACxB;QAEE,IAAM8nB,OAAO9nB,iBAAAA;QACb,OAAO,IAAIpX,UAAAA,CAAWk/B,KAAKrH,MAAM,CAAA,CAAEqH,EAAAA,GAAKC,CAAAA,IAAAA,KAAU,EAAED,KAAKE,UAAU;MACrE;MACA,OAAO,KAAK;IACd;IACA,OAASC,qBAAqBp2B,IAAI;MAChC,IAAMq2B,cAAc;UAAC;UAAK;UAAK;OAAI;UAC9B,kCAAA,2BAAA;;wCAAA,EAAoBA,gCAApB,SAAA,6BAAA,QAAA,yBAAA,iCAAiC;iBAAtC,QAAK,QAAA,EAAMC,EAAAA,EAAAA,MAAAA,EAAAA,CAAN,OAAA,EAAA,UAAA,EAAA,WAAA;;gBACH,IAAMC,EAAAA,GAAAA,aAAkBD,eAAe,MAAM,IAAI;gBACjD,IAAK,GAAA,CAAI5tB,SAAS,GAAGA,SAAS4tB,YAAY5tB,SAAU;oBAClD,IAAI8tB,SAAAA,GAAAA,KAAiB;oBACrB,IAAK,IAAIC,YAAAA,EAAc/tB,CAAAA,OAAQ+tB,cAAcF,kBAAkBv2B,KAAKrJ,MAAM,IAAI6/B,iBAAiB,GAAGC,eAAeH,WAAY;wBAC3H,CAAA,GAAIt2B,IAAI,CAACy2B,cAAcF,gBAAgB,KAAK,IAAI;4BAC9C,SAAA,GAAA;wBACF,SAAA,GAAA;wBACAC,OAAAA,GAAAA,aAAAA,GAAAA,IAAAA;oBACF,IAAA,GAAA,CAAA;oBACA,IAAIA,WAAAA,GAAAA,IAAkB,GAAG;wBACvB,OAAO,cAAA,GAAA;4BAAE9tB,CAAAA,GAAAA,CAAAA,GAAAA;4BAAQ4tB,YAAAA;4BAAYC,iBAAAA,GAAAA;wBAAgB,cAAA,GAAA;oBAC/C,sBAAA,GAAA;gBACF,gBAAA,GAAA;YACF,CAAA,cAAA,GAAA;;YAdK,CAAA,MAAA,GAAA;YAAA,CAAA,QAAA,GAAA;;;;;;2BAAA;;;;;;2BAAA;;kCAAA,WAAA,IAAA,CAAA,IAAA,CAAA,MAAA;;;;;;cAeL,OAAO,KAAK,oDAAA;YACd,KAAA;mBAAA,SAAA,iBAAA,WAAA;gBACA,IAASG,CAAAA,WAAAA,KAAAA,CAAmBvoB,EAAAA,CAC1B,EAAI,CAACwoB,CAD4B,AAC5BA,CAAAA,CAD8BA,KAC9BA,CAAAA,SAAkB,CAD4B,eAC5B,MACrB,EAAA,CAAA,IAAO,EAAA,CAAA,EAAK,0BAAA;gBAEd,IAAMC,aAAezoB,KAAAA,EAAO,CAAC,EAAE,OAAA,IAAA,YAAA,KAAA;gBAC/B,IAAIyoB,GAAAA,IAAAA,CAAAA,IAAAA,CAAAA,GAAgB,MAAM,SAAA,CAAA,aAAA;kBACxB,OAAO,KAAK;;;;8BACd;;gBACA,IAAMC,aAAe,IAAID,CAAAA,IAAAA,CAAAA,WAAAA;gBACzB,IAAA,CAAOC,YAAAA,GAAe1oB,CAAAA,CAAAA,MAAQxX,MAAM,GAAGkgC,KAAAA,UAAe,KAAK;gBAC7D,IAAA,WAAA;oBACA,GAASC,CAAAA,SAAT,GAASA,OAAAA,WAAoB92B,IAAI,EAAE0I,MAAM;wBAC9B1I,QAAqCA,GAAAA,EAAAA,CAAAA,OAAAA,SAAAA;4BAA9C,CAAO,AAAC,CAAA,EAACA,SAAAA,IAAI,CAAC0I,CAAAA,MAAAA,GAAS,EAAE,cAAhB1I,CAAAA,EAAAA,iBAAAA,SAAoB,KAAK,EAAC,KAAM,MAAKA,UAAAA,IAAI,CAAC0I,SAAS,EAAE,cAAhB1I,qBAAAA,UAAoB;gCACpE,MAAA,qBAAA,CAAA,0BAAA;oCACS+2B,OAAAA,WAAgB5oB,OAAO,EAAEwoB,gBAAgB,EAAEK,OAAO;oCACnDH,SAAeH,UAAAA,SAAmBvoB,SAASwoB;oCAC7CE,UAAgB,QAAQA,GAAAA,MAAAA,OAAe,KAAK1oB,QAAQxX,MAAM,EAAE;gCAC9D;gCACF;4BACIwX,KAAO,CAAC0oB,aAAa,KAAK,GAAG;4BAC/B,QAAA;wBACF;oBACA,EAAMI,gBAAgBH,oBAAoB3oB,SAAS0oB;gBACnD,IAAMK,aAAa9/B,KAAKgT,GAAG,CACzB+D,QAAQxX,MAAM,EACdkgC,eAAe,IAAII;gBAErB,IAAK,IAAIvuB,CAAAA,EAAAA,CAAAA,KAASmuB,aAAAA,SAAAA,CAAe,GAAGnuB,SAAS,KAAKwuB,aAAa,GAAGxuB,UAAU,EAAG;2BACtDyF,KAAAA,CAAAA,WAA8BA,KAAAA,MACvCA,YAAwCA;sBADtD,EAAA,EAAMgpB,IAAAA,KAAAA,EAAAA,MAAgB,EAAChpB,kBAAAA,OAAO,CAACzF,OAAO,cAAfyF,6BAAAA,kBAAmB,MAAM,MAAKA,YAAAA,OAAO,CAACzF,SAAS,EAAE,cAAnByF,uBAAAA,YAAuB;;wBAC5E,IAAMipB,IAAAA,EAAM,AAAC,CAAA,CA39IjB,AA49II,CADcjpB,AACVgpB,aADUhpB,KACQ,EADD,CAACzF,AACG,SADM,AACN,CAAA,CADQ,cAAnByF,KACW,mBADXA,WACW,EADY,KAAK,CACjB,CADkB,IAClB,CADwB,IACxB,EAD6BA,KAC7B,QAD6BA,AAC7B,KAAA,EADoC,CAACzF,AACrC,IAAA,KAD8C,AAC9C,EADgD,GAChD,WAD6ByF,IAC7B,oBAD6BA,AAC7B,aADoD,iBACpD,QAAA,KAAA,uCAAA;sBAEzB;gBACF;gBACF,SAAA,EAAA,CAAA,YAAA;oBACA,GAASkpB,GAAAA,IAAAA,CAAAA,SAAAA,UAA0Br3B,IAAI,EAAEiN,KAAK,EAAEqqB,GAAG;gBACjD,IAAI5uB,SAASuE;gBACb,MAAOvE,GAAAA,EAAAA,CAAAA,GAAS,KAAK4uB,IAAK,MAAA,SAAA;0BACZt3B,KAAAA,MAAAA,IACGA,CAAAA,OAObA,QAAAA,CAAAA,cACAA,SACAA,SACAA;oBAXF,IAAMlL,OAAMkL,eAAAA,IAAI,CAAC0I,OAAO,cAAZ1I,0BAAAA,eAAgB;oBAC5B,IAAMrJ,CAAAA,EAAAA,CAAAA,MAASqJ,OAAAA,SAAAA,CAAAA,IAAI,CAAC0I,SAAS,EAAE,cAAhB1I,oBAAAA,SAAoB;sBACnC,EAAA,EAAA,oBAAA,8BAAA,CAAMu3B,OAAAA,KAAAA,GAAAA,GAAkB7uB,SAAS;sBACjC,EAAM8uB,QAAAA,QAAgBD,KAAAA,aAAkB5gC;sBACxC,IAAA,CAAI6gC,eAAAA,CAAgBF,KAAK;0BACvB,MAAA,CAAO,KAAA,EAAA;wBACT,MAAA,gBAAA,CAAA,GAAA,OAAA,OAAA,KAAA,OAAA,QAAA,MAAA;sBACA,IAAMG,eAAe9gC,UAAU,IAAIgE,OAAOk6B,YAAY,EACpD70B,wBAAAA,IAAI,CAACu3B,gBAAgB,cAArBv3B,mCAAAA,wBAAyB,IACzBA,UAAAA,IAAI,CAACu3B,kBAAkB,EAAE,cAAzBv3B,qBAAAA,UAA6B,IAC7BA,UAAAA,IAAI,CAACu3B,kBAAkB,EAAE,cAAzBv3B,qBAAAA,UAA6B,IAC7BA,UAAAA,IAAI,CAACu3B,kBAAkB,EAAE,cAAzBv3B,qBAAAA,UAA6B,KAC3B;sBACJ,EAAA,EAAIlL,QAAQ,OAAO2iC,eAAAA,EAAiB,MAAA,IAAUA,MAAAA,IAAAA,MAAAA,CAAiB,QAAQ;4BACrE,EAAA,MAAO,UAAA,CAAA,mBAAA,QAAA,UAAA;sBACT;sBACA/uB,EAAAA,OAAS8uB,CAAAA,eAAAA,KAAAA,UAAAA;wBACX,MAAA,gBAAA,CAAA;oBACA,KAAO;oBACT,IAAA,UAAA,yBAAA;wBACA,CAASE,GAAAA,QAAAA,KAAgBvpB,EAAAA,KAAO,EAAEwoB,CAAAA,eAAgB,EAAEgB,YAAY;4BAalCxpB,MAAAA,IAA+CA,EAAAA,CAAAA,iBAAAA;wBAZrE0oB,OAAAA,QAAeH,mBAAmBvoB,SAASwoB;4BAC7CE,MAAAA,SAAgB,OAAA,CAAQA,eAAe,MAAM1oB,QAAQxX,MAAM,EAAE;wBAC/D;oBACF;oBACA,EAAIwX,IAAAA,IAAO,CAAC0oB,aAAa,KAAK,CAAA,EAAG;oBAC/B;gBACF,SAAA,EAAA,CAAA,iBAAA;oBACA,EAAMI,IAAAA,MAAAA,CAAAA,MAAgBH,aAAAA,GAAAA,IAAoB3oB,SAAS0oB;oBACnD,EAAMK,IAAAA,UAAa9/B,EAAAA,CAAAA,EAAKgT,GAAG,CACzB+D,KAAAA,GAAQxX,MAAM,EACdkgC,eAAe,IAAII;oBAErB,EAAMW,EAAAA,CAAAA,MAAAA,YAAoB,AAAC,CAAA,EAACzpB,YAAAA,KAAAA,EAAO,CAAC0oB,eAAe,GAAG,cAA1B1oB,uBAAAA,YAA8B,KAAK,EAAC,KAAM,MAAKA,aAAAA,OAAO,CAAC0oB,eAAe,GAAG,cAA1B1oB,wBAAAA,aAA8B;wBACrGzF,MAAAA,IAASmuB,eAAe,KAAKe,QAAAA,GAAAA;wBACjC,EAAOlvB,IAAAA,MAAS,CAAA,IAAKwuB,SAAAA,IAAa,EAAG;0BAChB/oB,iBACKA,YAAwCA,YACzCA,YAAwCA;sBAF/D,IAAM0pB,cAAa1pB,KACnB,IAAM2pB,EAAAA,IAAAA,CAAAA,EADa3pB,IACb2pB,CAAAA,EADoB,CAACpvB,AACL,AAAC,CAAA,EAACyF,IADU,AACVA,EACxB,IAAM4pB,GADkB5pB,KADLA,EACY,CAACzF,IACX,AAAC,CAAA,EAACyF,EADkB,EAAE,SACpBA,KADCA,CADLA,CAEW,CAACzF,SAAS,EAAE,KAFJ,KACdyF,IACDA,SADwB,KAAK,EAAC,KAAM,GACpCA,GADyCA,UAClB,GADkBA,EACb,EAAC,GADmB,CAACzF,CACd,MAAKyF,EADkB,EAAE,SACpBA,KADCA,EACM,CAACzF,SAAS,EAAE,UADlByF,IACDA,SADwB,eACxBA,aAAuB;wBACtF,EAAMopB,MAAAA,YAAkB7uB,SAAS;wBACjC,EAAM8uB,OAAAA,MAAAA,IAAgBpgC,EAAAA,CAAAA,EAAKgT,GAAG,CAACmtB,QAAAA,UAAkBQ,cAAcb,aAAa;uBACxEW,MAAAA,SAAe,KAAA,EAAOA,CAAAA;wBAAAA,OAAAA,MAAe,KAAKR,SAAAA;oBAAAA,IAAAA,CAAAA,WAA0BlpB,SAASopB,iBAAiBC,gBAAgB;0BAChHG,SAAAA,CAAAA,GAAannB,GAAG,CAACsnB,MAAAA,GAAAA,IAAAA,QAAAA,WAAAA;wBAEnBpvB,MAAAA,IAAS6uB,YAAAA,EACX,IAD6BQ,CAC7B,CAAA,YACF;gBACA,KAASC,4BAA4BC,OAAO,EAAEC,iBAAiB;gBAC7D,IAAIC,KAAAA,EAAAA,CAAAA,GAAW,kBAAA;oBACf,EAAK,IAAA,CAAI5gC,IAAI,CAAA,CAAA,CAAGA,IAAI0gC,QAAQthC,MAAM,EAAEY,CAAAA,CAAAA,EAAK,IAAA,IAAA,CAAA,WAAA;wBACX0gC,YAAAA,MAAAA,MAAAA,CAAAA,gBAAAA;sBAA5BE,IAAAA,MAAAA,CAAAA,CAAWA,WAAW,OAAMF,GAAAA,UAAAA,OAAO,CAAC1gC,EAAE,cAAV0gC,wBAAAA,aAAc,OAAO;oBACnD,IAAA,MAAA,KAAA,EAAA;wBACMxsC,MAAM,AAAC,EAAA,CAAoB0sC,EAAAA,CAC7BD,IADWD,QAAQthC,GACD3B,GADO,AACJ,CAACvJ,CADI,KAAY,AACV,OADC0sC,wCACD,OAAA,WAAA;oBAEhC;oBACAD,IAAAA,MAAAA,OAAkB1nB,EAAAA,CAAG,CAAC/kB;wBAClBysC,MAAAA,YAAAA,CAAkBxQ,IAAI,GAAG,KAAK,KAAA;wBAChC,IAAM0Q,EAAAA,UAAWF,GAAAA,CAAAA,cAAkBnxB,MAAM,GAAG5C,IAAI,GAAGpY,KAAK;sBACxD,IAAIqsC,UAAU;wBACZF,kBAAkBt8B,MAAM,CAACw8B;oBAC3B,KAAA,EAAA,CAAA,YAAA,SAAA;oBACF,IAAA,MAAA,sBAAA,EAAA;wBACA,GAAO,CAAA,MAAA,KAAA,EAAA;4BACT,QAAA,GAAA,CAAA,0EAAA,gBAAA;wBACA,CAASC,uBAAuBJ,OAAO,EAAEK,OAAO,EAAEJ,iBAAiB;wBAC7DD,OAAO,CAAC,EAAE,KAAK,OAAOD,4BAA4BC,SAASC,oBAAoB;sBACjF;oBACF,IAAA,eAAA;oBACA,EAAM7D,EAAAA,OAASyB,OAAAA,WAAkBmC;wBAC7B,CAAC5D,GAAAA,GAAQ,SAAA,aAAA,IAAA,IAAA,aAAA,SAAA,IAAA;wBACX,IAAA,gBAAA,aAAA,aAAA;wBACF,IAAA,UAAA,aAAA,OAAA,IAAA,aAAA,YAAA,IAAA;wBACAA,GAAO93B,CAAG,GAAG,KAAA,aAAA,KAAA,IAAA,aACR,SAAO83B,CAAAA,IAAAA,EAAO93B,GAAG,MAAK,EAAA,KAAA,KAAY83B,OAAO93B,GAAG,GAAG83B,OAAO93B,GAAG,GAAG,CAAC;wBAChExI,QAAQ,OAAA,qBAAA,OAAA,WAAA,MAAA,OAAA;;4BAEVukC,EAAQn8B,IAAI,CAACk4B,SAAAA,sBAAAA,OAAAA,eAAAA;wBACf;wBACA,CAASkE,GAAAA,OAAAA,QAAkBnB,GAAG,EAAExgC,KAAK,EAAE4hC,UAAU,EAAEF,OAAO,EAAEJ,iBAAiB;4BACrEO,IAAAA,IAAYD,WAAWttC,GAAG,CAACksC,GAAAA,UAAAA,WAAAA,QAAAA,MAAAA,OAAAA,IAAAA,OAAAA;4BAC5BqB,UAAW,MAAA,gBAAA,OAAA;wBACd;oBACF;oBACA,EAAK,IAAIlhC,EAAAA,EAAI,GAAGA,CAAAA,GAAIX,MAAMD,KAAAA,CAAM,IAAI8hC,SAAAA,CAAU7hC,KAAK,CAACD,MAAM,GAAG8hC,UAAUC,cAAc,EAAEnhC,IAAK;2BACrEX,cAAAA,CAAAA;oBAArB6hC,UAAU7hC,KAAK,CAACuF,IAAI,EAACvF,WAAAA,KAAK,CAACW,EAAE,cAARX,sBAAAA,WAAY;gBACnC,SAAA,EAAA,CAAA,iBAAA;oBACA,EAAI6hC,IAAAA,MAAAA,CAAU7hC,KAAK,CAACD,MAAM,IAAI8hC,IAAAA,MAAUC,cAAc,EAAE;sBACtDF,IAAAA,MAAAA,CAAAA,CAAW58B,MAAM,CAACw7B,cAAAA;sBAClBiB,IAAAA,MAAAA,CAAAA,aAAuB,IAAIthC,GAAAA,GAAAA,KAAW0hC,UAAU7hC,KAAK,GAAG0hC,SAASJ;oBACnE,MAAA,OAAA,GAAA;oBACF,MAAA,MAAA,CAAA,qBAAA;oBACA,GAASS,CAAAA,MAAAA,SAAAA,IAAAA,MAAAA,MAAAA,CAAAA,EAAiCvB,GAAG,EAAEjpB,OAAO,EAAEwoB,SAAAA,IAAAA,GAAgB,EAAE6B,GAAAA,MAAAA,EAAU,EAAEF,EAAAA,CAAAA,IAAO,EAAEJ,iBAAiB,CAAA,MAAA,MAAA;wBAC1G/pB,MAAAA,GAAQxX,GAAAA,CAAAA,EAAM,KAAK,GAAG,mBAAA;wBACxB,IAAA,MAAA,KAAA,EAAA;4BACF,QAAA,GAAA,CAAA;wBACI+R,SAAS;oBACb,EAAIiuB,kBAAkB;2BACCxoB,GAAAA,CAAAA,WAAAA,GAAAA,WAAAA,CAAAA,iBAAAA,MAAAA,IAAAA,CAAAA,WAAAA;sBAArB,EAAA,EAAMyoB,IAAAA,aAAezoB,OAAAA,EAAAA,GAAAA,OAAO,CAAC,EAAE,cAAVA,uBAAAA,YAAc;wBACnC,IAAMyqB,MAAAA,KAAAA,EAAAA,QAAoBJ,WAAWttC,GAAG,CAACksC;4BACzC,EAAIwB,MAAAA,GAAAA,CAAAA,WAAqBhC,eAAe,GAAG;4BACzC2B,kBACEnB,KACAjpB,QAAQ0qB,QAAQ,CAAC,GAAGzhC,KAAKgT,GAAG,CAAC,IAAIwsB,cAAczoB,QAAQxX,MAAM,IAC7D6hC,YACAF,SACAJ;wBAEJ,MAAA,IAAA,CAAA,WAAA,GAAA,eAAA;wBACAM,MAAAA,MAAW58B,MAAM,CAACw7B,OAAAA,GAAAA;sBAClB1uB,SAAS,IAAIkuB;gBACf,OAAO;oBACL2B,KAAAA,EAAAA,CAAAA,UAAkBnB,KAAKjpB,GAAAA,MAASqqB,YAAYF,SAASJ;sBACrD,EAAA,CAAA,MAAA,IAAA,CAAA,KAAA,CAAA,KAAA,EAAA;wBACF,MAAA,IAAA,CAAA,KAAA,CAAA,KAAA,GAAA;wBACA,EAAOxvB,EAAAA,MAAAA,EAAS,GAAA,EAAKyF,QAAQxX,MAAM,CAAE;4BACnC,EAAMmiC,MAAAA,GAAAA,CAAU3qB,OAAO,CAACzF,OAAO;wBAC/B,IAAIowB,WAAW,QAAQA,YAAY,KAAK;0BACtC;sBACF,IAAA,MAAA,CAAA,oBAAA;sBACA,IAAA,CAAM7B,KAAAA,CAAAA,UAAgBH,YAAAA,QAAoB3oB,SAASzF;sBACnD,IAAA,CAAMqwB,KAAAA,CAAAA,QAAc,IAAI9B,QAAAA,GAAAA;sBACxB,IAAA,CAAIA,MAAAA,GAAAA,QAAiB,KAAK8B,eAAe,GAAG;0BAC1C,KAAA,SAAA,EAAA;wBACF;sBACA,IAAIrwB,SAASqwB,eAAe5qB,QAAQxX,MAAM,EAAE;2BAC1C0hC,KAAAA,CAAAA,iBACElqB,EAAAA,GAAAA,GAAQ0qB,QAAQ,CAACnwB,QAAQA,SAASqwB,cAClCT,SACAJ;2BAEFxvB,KAAAA,CAAAA,IAAUqwB,kBAAAA,CAAAA,MAAAA,IAAAA,CAAAA,WAAAA;sBACZ,EAAA,MAAO,KAAA,EAAA;4BACLP,IAAAA,GAAAA,IAAW78B,EACT/E,CADY,CAACwgC,KAAK,AACXv1B,MAAMvW,IAAI,CAAC6iB,QAAQ0qB,QAASnwB,OAATmwB,CAAQ,CAACnwB,IAAAA,MAAAA,CAAAA,gBAAAA,IAAAA;0BAErC;2BACA,WAAA,CAAA,iBAAA;sBACF,IAAA,aAAA,CAAA;gBACF;YACF;;;YACA,KAAA,EAASswB;mBAAT,SAAA,qBAASA,MAAAA,KAAyBh5B,IAAI,EAAE23B,YAAY,EAAEX,OAAO,EAAEkB,iBAAiB;gBAC9E,IAAMe,WAAAA,EAAa7C,eAAAA,CAAAA,IAAAA,CAAqBp2B,SAAAA,KAAAA,gBAAAA,IAAAA,CAAAA,SAAAA,KAAAA,OAAAA,GAAAA;oBACxC,EAAI,CAACi5B,KAAAA,IAAAA,CAAAA,EAAY,+CAAA;wBACf,OAAO,EAAE,KAAA,IAAA,CAAA,oBAAA;wBACX,WAAA,IAAA,CAAA,gBAAA;wBACMX,OAAAA,GAAU,CAAA,CAAE,SAAA;gCACZY,oBAAoB,aAAa,GAAG,IAAIpzB;oBAC9C,EAAK,IAAI2wB,cAAcwC,WAAWvwB,MAAM,EAAE+tB,cAAcwC,WAAW3C,UAAU,IAAIt2B,KAAKrJ,MAAM,EAAE8/B,eAAewC,WAAW3C,UAAU,CAAE;oBAClI,IAAM6C,UAAU1C,cAAcwC,WAAW1C,eAAe;oBACxD,IAAIv2B,GAAAA,CAAI,CAACm5B,QAAQ,KAAK,IAAI,SAAA;0BACxB,QAAA,IAAA,CAAA,oBAAA;sBACF,SAAA,IAAA,CAAA,gBAAA;sBACA,IAAMC,CAAAA,IAAAA,CAAAA,OAAap5B,EAAAA,EAAI,CAACm5B,UAAU,EAAE;8BACpC,IAAME,YAAYr5B,IAAI,CAACm5B,UAAU,EAAE;oBACnC,IAAMG,aAAat5B,IAAI,CAACm5B,UAAU,EAAE;oBACpC,CAAA,GAAIC,aAAAA,CAAc,OAAQC,aAAa,EAAQC,OAAR,OAAsB,QAAQ,AAACF,CAAAA,aAAa,GAAE,MAAO,GAAG;sBAC7F,sBAAA,IAAA,CAAA,SAAA,IAAA,IAAA,CAAA,OAAA;oBACF,WAAA,IAAA,CAAA,IAAA,CAAA,WAAA;oBACA,IAAMzC,mBAAmB,AAACyC,CAAAA,CAAAA,UAAAA,EAAa,EAAC,MAAO;sBAC/C,EAAA,EAAMhC,EAAAA,CAAAA,GAAM,AAACgC,CAAAA,CAAAA,EAAAA,UAAa,EAAC,KAAM,IAAIC;wBACrC,IAAME,IAAAA,GAAAA,CAAAA,iBAAyBD,cAAc,IAAI;sBACjD,IAAME,aAAaD,2BAA2B,KAAKA,2BAA2B;sBAC9E,EAAA,CAAA,CAAI,CAACC,SAAAA,CAAAA,EAAY,EAAA;0BACf,GAAA,eAAA;sBACF,EAAA,CAAA,oBAAA,GAAA;oBACA,IAAIC,eAAeN,UAAU;oBAC7B,EAAII,oBAAAA,OAA2B,EAAA,CAAG,oBAAA;sBAChC,IAAMG,iBAAAA,EAAmB15B,IAAI,CAACy5B,EAAAA,WAAa,MAAA;wBAC3C,IAAIC,oBAAoB,KAAA,CAAM,EAAA;4BAC5B,EAAA;0BACF;4BACAD,KAAAA,OAAAA,IAAgB,IAAIC;wBACtB,IAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,GAAA;sBACA,IAAMC,GAAAA,OAAAA,GAAaviC,KAAKgT,GAAG,CAAC+uB,UAAU,KAAKn5B,KAAKrJ,MAAM;wBACtD,IAAI8iC,IAAAA,CAAAA,KAAAA,EAAAA,IAAgBE,cAAcF,gBAAgBz5B,KAAKrJ,MAAM,EAAE;8BAC7D,MAAA,IAAA,CAAA,8DAAA;wBACF;sBACA,IAAMwX,UAAUnO,KAAK64B,QAAQ,CAACY,cAAcE;oBAC5C,IAAIvC,QAAQ,GAAG;sBACbL,gBAAgB5oB,SAASwoB,GAAAA,IAAAA,CAAAA,IAAAA,CAAAA,KAAkBK,4BAAAA;oBAC7C,KAAO,IAAIA,KAAAA,GAAQhiC,CAAAA,CAAAA,CAAG,CAACoiC,EAAAA,CAAAA,GAAM,WAAA,CAAA;wBAC3BM,CAAAA,CAAAA,WAAAA,CAAAA,EAAgBvpB,SAASwoB,kBAAkBgB;oBAC7C,CAAA,MAAO,IAAIA,UAAAA,GAAa3iC,GAAG,CAACoiC,MAAM;wBAChCuB,IAAAA,UAAAA,mBACEvB,KACAjpB,SACAwoB,kBACAuC,mBACAZ,SACAJ;oBAEJ,QAAA,wBAAA,CAAA,qBAAA;gBACF,IAAA,CAAA,uBAAA;gBACA,IAAA,GAAOI,CAAAA,CAAAA,KAAAA,EAAAA;oBACT,QAAA,GAAA,CAAA,0BAAA;wBACIsB,cAAAA,IAAAA,CAAAA,GAAY,iBAAA;qCAAZA,UACUn/B,GAAG;8CADbm/B;oBAEA,IAAI,CAACn/B,GAAG,GAAGA;oBACX,IAAI,CAACo/B,OAAO,GAAG,QAAA;sBACf,EAAA,CAAA,CAAI,CAACC,MAAM,GAAG,CAAA,IAAA;;;;sBAEhBC,KAAAA;;;kCAAAA,SAAAA,SAASC,OAAO;;4BACd,IAAIrgC,QAAAA,CAAS,GAAA,MAAA;8BACb,GAAA,GAAOqgC,CAAAA,CAAAA,QAAU,EAAG,KAAA;kCAClB,IAAI,EAAA,EAAI,CAACH,KAAAA,EAAO,IAAI,IAAI,CAACp/B,GAAG,CAAC9D,MAAM,EAAE,OAAOgD;gCAC5C,IAAMsgC,kBAAkB,IAAI,IAAI,CAACH,MAAM;gCACvC,GAAA,CAAMI,EAAAA,OAAS9iC,KAAKgT,GAAG,CAAC4vB,SAASC;gCACjC,IAAME,cAAc,CAAA,GAAI,CAAC1/B,GAAG,CAAC,IAAI,CAACo/B,OAAO,CAAC;gCAC1C,IAAMO,QAAQH,OAAAA,GAAAA,QAAkBC;8BAChC,IAAMG,OAAO,AAAC,CAAA,KAAKH,MAAK,IAAK,IAAI;;;8BACjC,IAAMI,OAAOH,eAAeC,QAAQC,cAAAA;8BACpC1gC,SAASA,UAAUugC,SAASI;8BAC5B,IAAI,CAACR,MAAM,IAAII,iCAAAA;;8CACf,IAAI,IAAI,CAACJ,MAAM,IAAI,GAAG;oCACpB,CAAA,GAAI,CAACA,CAAAA,KAAM,GAAG;kCACd,IAAI,CAACD,OAAO,IAAI;;;;8CAClB;gCACAG,KAAAA,MAAWE;0BACb;;;;0CACA,CAAA,MAAOvgC,EAAAA,EAAAA,OAAW,CAAA;wBACpB,QAAA,GAAA;;;wBACA4gC,GAAAA,CAAAA,CAAAA,qBAAAA,GAAAA;+BAAAA,EAAAA,CAAAA,MAAAA,SAAS9xB,CAAC,CAAA;4BACR,IAAI,CAACsxB,GAAAA,CAAAA,IAAQ,CAACtxB,GAAAA,UAAAA;sBAChB;;;;;;qCASE,OAAO,KAAK,OAeZ,GAAK,aACH,OAAO,MAYJ+xB,OAKLC,YACAA,MAKA,GAAO,GAKP,KAAO,KAAK;;;;;0CApDVC,KAAAA,eAAAA,CAAAA,yBAAAA;iDAAJ;gDACE,GAAA,CAAA,GAAO,IAAI,CAACZ,CAAAA,KAAM,KAAK,IAAI,IAAI,CAACD,OAAO,GAAG,IAAI,CAACA,OAAO,GAAG;0CAC3D;;;;;;;oCAEF,GAASc,KAAAA,IAAAA,CAAAA,KAAeC,CAAC,EAAEC,kBAAkB;oCAC3C,EAAMC,EAAAA,CAAAA,iBAAoBF,EAAEb,QAAQ,CAAC,OAAO;oCAC5C,EAAI,CAACe,mBAAmB;;;oCACtBF,EAAEb,QAAQ,CAAC;oDACC,OAAA,eAAA,IAAA,OAAA,OAAA,eAAA,GAAA,MAAA,IAAA,CAAA,MAAA,CAAA,yBAAA;gCACd,IAAA,CAAA,MAAA,CAAA,cAAA,CAAA,KAAA;gCACAa,EAAEb,EAAAA,CAAAA,KAAQ,CAAC,CAAA,oBAAA,CAAA,KAAA;gCACX,IAAMgB,CAAAA,MAAOH,CAAAA,CAAEb,QAAQ,CAAC,SAAA,GAAA;gCACxB,IAAMiB,CAAAA,KAAMJ,EAAEb,QAAQ,CAAC,IAAA,GAAA;gCACvB,IAAMkB,CAAAA,MAAAA,CAAAA,GAAW,AAACF,CAAAA,OAAO,WAAA,EAAaC,CAAAA,KAAMH,kBAAiB,IAAK;gCAClE,IAAA,CAAA,EAAOI,SAAAA,EAAW,CAAA;gCACpB,IAAA,CAAA,mBAAA,GAAA;gCACA,IAAA,CAASC,wBAAAA,GAAAA,MAAiCC,kBAAkB;gCAC1D,IAAA,CAAA,EAAQA,UAAAA,CAAAA,iBAAAA;oCACN,IAAA,CAAK,QAAA,CAAA,qBAAA,EAAA;sCACL,EAAA,CAAA,EAAK,MAAA,CAAA,qBAAA,GAAA;oCACL,GAAA,EAAK;sCACL,EAAA,CAAA,EAAK,MAAA,CAAA,aAAA;oCACL,KAAK;gCACL,eAAK,IAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA;gDACI,IAAA,CAAA,IAAA,CAAA,KAAA,CAAA,MAAA;oCACT,CAAA,IAAK,CAAA,WAAA,GAAA,wBAAA,CAAA,cAAA;oCACL,CAAA,IAAK,KAAA,GAAA;oCACL,CAAA,IAAK,EAAA,CAAA,uBAAA,GAAA;oCACL,CAAA,IAAK,EAAA,CAAA,cAAA,GAAA;oCACL,CAAA,IAAK,EAAA,CAAA,eAAA,GAAA;oCACL,CAAA,IAAK,MAAA;wCACH,IAAA,GAAO;oCACT,IAAA,CAAA,MAAA,CAAA,yBAAA,IAAA,QAAA,qBAAA,MAAA;0CACE,KAAA,CAAA,CAAO,KAAK,mBAAA,GAAA;gCAChB;gCACF,IAAA,CAAA,eAAA,CAAA,UAAA,IAAA,CAAA,UAAA,CAAA,oBAAA,EAAA;gCACSX,QAAAA,IAAAA,CAAAA,MAAAA,CAAAA,YAAAA,CAAkCC,UAAU;gCAKjDA,mBACAA,CAAAA,CAAAA,CAAAA,IAAAA,CACAA,cAAAA,CACAA,GAAAA,IAAAA,CAAAA,OAK2BA,OAAAA,CAAAA,OAAmCA,CAAAA,CAAAA,MAAAA,GAAAA,CAAAA,IAA+BA,eAA6BA,eAClGA,eAIZA,eAwBiBA,oBAKJA;sCA9CvBA,WAAW9jC,MAAM,GAAG,CAAA,GAAI,KAAA,CAAA,gBAAA;;;;gCACd;;oCAAA,IAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,mBAAA;;;kCAAZ,OAAO,KAAK,MAAA;gCACd,IAAA,CAAA,IAAA,CAAA,SAAA,IAAA,UAAA,IAAA,CAAA,MAAA,CAAA,YAAA,EAAA;;;;;gCAOA,IAAIykC,IAAAA,CAAAA,KAAAA,EAAAA,GAAe,QAAQ;oCACzB,OAAO,CAAK,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,YAAA,GAAA,SAAA;oCACd,QAAA,GAAA,CACMC,aAAiC,CAAC,EAAE,IAApCA,MAAAA,IAAsB,AAACZ,EAAAA,gBAAAA,YAAsB,WAAY,CAAA,EAACA,cAAnCA,EAAmCA,KAAnCA,GAAAA,EAA6C,CAAC,EAAE,EAAhDA,YAAmCA,CAAnCA,MAAAA,QAAAA,KAAiB,OAAkBA,gBAAiB,MAAM,EAAC,IAAM,CAAA,EAACA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB,MAAM,CAAA,MAAMA,gBAAAA,UAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;gCAE7I,IAAIa,iBAAiB;gCACP;;oCAAA,IAAA,CAAA,iBAAA,CAAA,aAAA;;;gCAAZ,YAAY;gCACd,IAAA,CAAA,aAAA,IAAA,CAAA,SAAA,IAAA,UAAA,IAAA,CAAA,MAAA,CAAA,YAAA,EAAA;oCACA,EAAMxL,EAAAA,CAAAA,MAAQ2K,MAAAA,CAAAA,SAAAA,QAAAA,EAAU,CAAC,EAAE,cAAbA,2BAAAA,gBAAiB;oCAC/B,EAAMc,EAAAA,CAAAA,aAAAA,CAAAA,SAA0B,AAACzL,CAAAA,QAAQ,GAAE,MAAO;gCAClD,IAAM0L,2BAA2B,AAAC1L,CAAAA,QAAQ,EAAC,MAAO;;;;;;kBAClD,IAAIpnB,SAAS;;;;;qBACb,OAAI,CAAC6yB,oBAAAA,KAAyB,IAAA;;kCAK5B;;;;kCAJuBd,SAAAA,KAAAA,GAAAA,KAAAA;;;qCAAvB,CAAA,CAAMgB,GAAAA,CAAAA,MAAAA,CAAAA,OAAiBhB,kBAAAA,IAAAA,QAAAA,EAAU,CAAC/xB,EAAAA,GAAAA,EAAO,GAAA,QAAA,IAAlB+xB,iCAAAA,sBAAsB;;;;;;oCAC7C/xB,IAAAA,EAAU,IAAI+yB,EAAAA,SAAAA;+CAAAA,EAAiB,SAAA,SAAA;;;;kCAA/B/yB;kCACA,EAAA,CAAA,CAAIA,GAAAA,CAAAA,KAAS+xB,IAAAA,EAAAA,KAAW9jC,MAAM,EAAE;;;;;;;;;gCAEhC,aAAA,IAAA,CAAA,MAAA,CAAA,yBAAA;gCACF,IAAA,CAAA,qBAAA,CAAA,uBAAA;oCACA,EAAI0+B,WAAAA,OAAkB,KAAK,KAAA,GAAA,CAAA,GAAA,WAAA,KAAA,GAAA;oCAC3B,YAAA,EAAImG,0BAA0B;0CAILf,IAAAA,cAAAA,GAAyCA,gBAA4CA,gBAAwCA,gBAAsCA;oCAH1L,IAAI/xB,SAAS,IAAI+xB,WAAW9jC,MAAM,EAAE;;;qCAClC,OAAO,KAAK;;;;sBACd;;;;YAIF,KAAA;qBAAA,IAHE,IAAM+kC,gBAAgB,EAACjB,sBAAAA,UAAU,CAAC/xB,KAAAA,EAAO,cAAlB+xB,iCAAAA,sBAAsB,KAAK,aAAa,EAACA,iBAAAA,UAAU,CAAC/xB,SAAS,EAAE,cAAtB+xB,4BAAAA,iBAA0B,KAAK,WAAY,CAAA,EAACA,iBAAAA,UAAU,CAAC/xB,SAAS,EAAE,cAAtB+xB,4BAAAA,iBAA0B,MAAM,EAAC,IAAM,CAAA,EAACA,iBAAAA,UAAU,CAAC/xB,SAAS,EAAE,cAAtB+xB,4BAAAA,iBAA0B,MAAM,CAAA,MAAMA,iBAAAA,UAAU,CAAC/xB,SAAS,EAAE,cAAtB+xB,4BAAAA,iBAA0B;kBACpNpF,kBAAkBqG,gBAAgB,GAAA;kBAClChzB,UAAU,kDAAA;qBACZ,kBAAA,WAAA,EAAA,eAAA;;wBACIA,QACF,CADW,IAAI+xB,OAYf,IAZ0B9jC,CAYnB,EAET,CAAO,EAd2B,EAAE,OAelCwY,IAAMwsB,MACHtG,gCAeGuG,yBAAAA,UA8BN7B,CAAQ,CAAC;;;;gCA5DT,KAAO,KAAK,GAAA,CAAA,CAAA,CAAA,IAAA,CAAA,cAAA,IAAA,IAAA,CAAA,cAAA,CAAA,QAAA,CAAA,MAAA,GAAA,CAAA;gCACd,IAAA,IAAA,CAAA,cAAA,IAAA,IAAA,CAAA,cAAA,CAAA,QAAA,CAAA,MAAA,GAAA,GAAA;oCACArxB,QAAU,CAAA,IAAA,CAAA,cAAA,CAAA,QAAA,CAAA,EAAA;oCACV,EAAMmzB,EAAAA,CAAAA,mBAAAA,IAAyBpB,qBAAAA,UAAU,CAAC/xB,OAAO,cAAlB+xB,gCAAAA,qBAAsB;gCACrD/xB,OAAAA,GAAU,IAAImzB;oCACd,EAAInzB,OAAAA,GAAU+xB,CAAAA,CAAAA,IAAAA,CAAAA,IAAW9jC,MAAM,EAAE,MAAA,CAAA,aAAA;oCAC/B,OAAO,KAAK;gCACd,IAAA,CAAA,QAAA;oCACA,EAAMwkC;;wCAAAA,iBAAqBV,sBAAAA,UAAU,CAAC/xB,OAAO,cAAlB+xB,iCAAAA,sBAAsB;;gCACjD,IAAMkB,aAAaT,iCAAiCC;gCACpD,IAAI,CAACQ,YAAY,QAAA,CAAA,QAAA,aAAA,aAAA;gCACf,QAAO,EAAK,EAAA,CAAA,MAAA,CAAA,YAAA;gCACd,IAAA,CAAA,oBAAA,CAAA;gCACA,aAAO,IAAA,CAAA,oBAAA;gCACLxsB,WAAMwsB,IAAAA,CAAAA,IAAAA,CAAAA,WAAAA;gCACHtG,eAAAA,EAAoB,IAAA,CAAK,IAAI,EAAA,CAAA,qBAAA;oCAAEA,CAAAA,MAAAA,CAAAA,SAAAA,WAAAA,GAAAA;gCAAgB,IAAI,CAAC,YAAA,CAAA,cAAA;oCACvDgG,CAAAA,kBAAAA,CAAAA,CAAAA,SAAAA,cAAAA;;gCAEJ,IAAA,CAAA,cAAA,GAAA;;;;;;;;;;;oCAKgCr7B,IAAAA,CAAAA,KAA2BA,CAAAA,CAAAA,sBAAAA;;;kCAA3BA;gCAH9B,EAAI0I,EAAAA,IAAAA,CAAAA,EAAS,IAAI1I,CAAAA,CAAAA,GAAKrJ,IAAAA,EAAM,EAAE,SAAA;;oCAAA;;kCAC5B,EAAA,CAAA,IAAO,EAAA,CAAA,EAAK,oBAAA,CAAA;gCACd;;oCAAA,IAAA,CAAA,cAAA,CAAA;+CAAA,SAAA,UAAA,CAAA;;;;gCAAA;gCACA,EAAMmlC,EAAAA,CAAAA,MAAAA,CAAAA,aAAuB,EAAC97B,OAAAA,QAAAA,IAAI,CAAC0I,OAAO,cAAZ1I,0BAAAA,eAAgB,MAAM,MAAKA,SAAAA,IAAI,CAAC0I,SAAS,EAAE,cAAhB1I,oBAAAA,SAAoB;gCAC7E,EAAI+7B,EAAAA,IAAAA,CAAAA,OAAAA,CAAAA,IAAmBrzB,GAAAA,MAAS,OAAA;oCAC1B8uB,IAAAA,CAAAA,WAAgBpgC,KAAKgT,GAAG,CAC5BpK,CAAAA,CAAAA,GAAKrJ,MAAM,EACXolC,mBAAmBD,EAAAA;wCAAAA,WAAAA;oCAAAA;oCAErB,EAAOC;;wCAAAA,cAAmB,KAAKvE,cAAe;;sCACtBx3B,wBACGA;oDADnB47B,0BAAAA,SAAgB57B,aAAAA,cAAhB47B,MAAgB57B,wCAAhB47B,6BAAAA,gDAAgB57B,CAAAA,IAAI,CAAC+7B,iBAAiB,cAAtB/7B,oCAAAA,yBAA0B;kCAChD,EAAA,EAAMg8B,SAAAA,GAAAA,QAAmBh8B,UAAAA,IAAI,CAAC+7B,mBAAmB,EAAE,cAA1B/7B,qBAAAA,UAA8B;oCACvD,IAAMi8B,IAAAA,CAAAA,MAAAA,CAAAA,UAAsBF,UAAAA,KAAAA,IAAmB,UAAA;wCAC/C,EAAMG,EAAAA,CAAAA,MAAAA,CAAAA,UAAoBD,UAAAA,GAAAA,SAAsBD;oCAChD,IAAIE,oBAAoB1E,eAAe;wCACrC,CAAA,MAAO,KAAK,SAAA,CAAA,IAAA,MAAA,qBAAA;oCACd;;wCAAA;;kCACA,IAAIoE,kBAAkB,GAAG;sCACvB,IAAMO,OAAAA,CAAAA,SAAAA,EAAmB3B,kCACvBx6B,KAAK64B,QAAQ,CAACoD,qBAAqBC;sCAErC,EAAA,CAAA,CAAIC,IAAAA,EAAAA,YAAkB;4CACpB,GAAA,GACF,CADSA,UACT,IAAA,6EAAA,gCAAA,OAAA,UAAA;kCAEFJ,mBAAmBG;gCACrB,qBACA,GAAO,CAAA,CAAA,GAAK,CAAA,CAAA,MAAA,CAAA,UAAA,EACd;oCAAA,QAAA;oCAAA,SAAA;oCAAA,WAAA,CAAA,aAAA,GAAA,IAAA,QAAA,WAAA;gCAAA,GACA,CAASpG,GAAAA,CAAAA,cAAkB91B,EAAAA,EAAI,AACvB46B,IAAI,CAAA,CAAA,EAAIhB,UAAU55B,AACxB,EAAM84B,UAAU8B,EAAEb,QAAQ,CAAC;gCAC3B,EAAIjB,EAAAA,CAAAA,MAAAA,CAAAA,EAAY,KAAK,OAAO,KAAK,CAAA,CAAA;;;oCAC/BiB,EAAQ,CAAC,CAAA,CAAA,cAAA,CAAA;+CAAA,SAAA,IAAA;;;;gCAATA;gCACAA,IAAAA,IAAQ,CAAC,OAAA,CAAA,OAAA,aAAA;;oCAAA;;gCACTA,IAAAA,IAAQ,CAAC,MAAA,CAAA,yBAAA,IAAA,QAAA,IAAA,CAAA,MAAA,CAAA,wBAAA,MAAA,MAAA;oCACL9C,IAAAA,CAAAA,MAAAA,CAAAA,IAAgB2D,EAAEb,QAAQ,CAAC,cAAA;gCACjC,EAAI9C,iBAAiB,KAAKj3B,KAAKrJ,MAAM,GAAG,IAAIsgC,eAAe;kCACzD,OAAO,KAAK,MAAA,CAAA,iBAAA;gCACd;;oCAAA;;;gCACE8C;gCACAA,IAAAA,CAAAA,GAAQ,CAAC,EAAA,CAAA,sBAAA;gCACTA,IAAAA,CAAAA,GAAQ,CAAC,EAAA,CAAA,oBAAA;gCACX,EAAMqC,EAAAA,IAAAA,CAAAA,MAAaxB,CAAAA,CAAEb,QAAQ,CAAC,UAAA,KAAA,cAAA;oCACxBsC,IAAAA,CAAAA,MAAAA,CAAYzB,EAAEb,QAAQ,CAAC,SAAA,GAAA;gCAC7B,EAAMc,qBAAqBuB,aAAa,aAAaC;gCACnDtC,IAAAA,IAAQ,CAAC,OAAA,CAAA,OAAA,aAAA;oCACTA,IAAAA,CAAAA,CAAQ,CAAC,mBAAA,CAAA,gCAAA;wCACLuC,WAAAA,SAAsB1B,EAAEb,QAAQ,CAAC;wCACjCwC,YAAAA,EAAAA,kBAAAA,4BAAAA,IAAoB3B,EAAEb,OAAQ,CAAC;oCACjC4B;oCACAtG;;wCAAAA,WAAkB,KAAK;;gCAC3B,EAAID,aAAa,KAAK;gCACtB,EAAIoH,EAAAA,IAAAA,CAAAA,KAAAA,EAAAA,EAAgB,KAAK;oCACnBC,QAAAA,IAAAA,CAAAA,MAAmB7B,EAAEF,YAAY,wBAAA;gCACvC,EAAI6B,sBAAsB,GAAG;kCAC3BC,EAAAA,CAAAA,aAAgB5B,EAAEb,KAAAA,CAAAA,EAAQ,CAAC,IAAA;kCAC3B,IAAM2C;;oCAAAA,QAAS9B,EAAEb,QAAQ,CAAC,OAAO;;;;;;;;sBAEjC,IAAI2C,QAAQ,OAAO,KAAK;;;;kBACxB,IAAMC,eAAe/B,EAAEb,QAAQ,CAAC,OAAO,uBAAA;kBACvC,IAAM6C,oBAAoBhC,EAAEb,MAAAA,EAAQ,CAAC,OAAO;kBAC5C,IAAM8C,eAAejC,EAAEb,QAAQ,CAAC,OAAO,uBAAA;;kCACvC,IAAM+C,GAAAA,IAAAA,EAAAA,MAAAA,OAAsBlC,EAAEb,QAAQ,CAAC,OAAO;oBAC9Ca,EAAEb,EAAAA,CAAAA,KAAQ,CAAC,GAAA,KAAA,MAAA;oBACX4B,WAAagB,IAAAA,CAAAA,SAAAA,CAAe,UAAU;oBACtC,CAAA,GAAIC,MAAAA,GAAAA,YAAqB,CAACE,qBAAqB;wBAC7C1H,CAAAA,KAAAA,EAAAA,KAAauF,eAAeC,GAAGC;sBACjC,MAAA,CAAO,EAAA,CAAA,AAAI,CAAC+B,mBAAmB,OAAnBA,CAAmB,SAAA,QAAA,OAAA,OAAA;oCAC7B,IAAMnB,iBAAiBb,EAAEb,QAAQ,CAAC;4BAClC,IAAK,CAAA,GAAIxiC,CAAAA,CAAAA,EAAI,GAAGA,CAAAA,CAAAA,EAAIkkC,UAAAA,MAAgBlkC,IAAK;gCACvCqjC,EAAEb,CAAAA,IAAAA,CAAAA,EAAQ,CAAC,aAAA;gCACX,IAAI,CAAC+C,CAAAA,IAAAA,CAAAA,eAAqB,KAAA;kCACxB,IAAMC,sBAAsBpC,eAAeC,GAAGC;gCAC9C,IAAIzF,eAAe,KAAK,GAAG;kCACzBA,aAAa2H;;;;8CACf,OAAA;4BACF,CAAA,SAAA,IAAA,UAAA,IAAA,CAAA,MAAA,CAAA,YAAA,IAAA,eAAA,IAAA,CAAA,oBAAA;sBACF;;;;kCACF;oBACA,EAAIF,WAAAA,GAAc,CAAA,CAAA,IAAA,CAAA,MAAA,CAAA,yBAAA;sBAChBjC,EAAEb,IAAAA,IAAQ,CAAC,MAAA,CAAA,0BAAA;wBACXa,EAAEb,CAAAA,OAAQ,CAAC,OAAA,YAAA,cAAA,GAAA;0BACX,CAAA,GAAMgB,EAAAA,GAAAA,CAAAA,CAAOH,EAAEb,QAAQ,CAAC;wBACxB,IAAMiB,MAAMJ,EAAEb,QAAQ,CAAC;wBACvB,IAAM2B,GAAAA,CAAAA,IAAAA,CAAAA,OAAgBX,OAAO,aAAaC,KAAAA,EAAAA;sBAC1C3F,kBAAkBqG,gBAAgB;;;kBACpC;;oBACAd,AAAEb,QAAQ,CAAC,IAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,kBAAA;oBACXa,EAAEb,KAAAA,GAAQ,CAAC,WAAA,YAAA,aAAA,GAAA,OAAA;oBACXa,EAAEb,CAAAA,IAAAA,CAAAA,EAAQ,CAAC,QAAA,KAAA,WAAA,IAAA,CAAA,6BAAA,GAAA,IAAA,CAAA,yBAAA;cACb,OAAO,IAAIwC,sBAAsB,GAAG;;;;yBAClCnH,aAAauF,eAAeC,GAAGC;gBACjC,OAAO,IAAA,CAAA,WAAA,KAAA,YAAA,IAAA,CAAA,MAAA,CAAA,yBAAA,IAAA;kBACL,OAAO,KAAK;;;;8BACd,sBAAA,WAAA;gBACA,IAAMmC,IAAAA,CAAAA,WAAAA,KAAAA,MAA2BV,EAAAA,sBAAwB,OAAO1B,EAAEF,YAAY,GAAG+B,mBAAmBH;oBACpG,EAAMH,EAAAA,IAAAA,CAAAA,UAAAA,CAAAA,CAAmBc,KAAAA,KAAAA,GAAAA,OAAAA,eACvBj9B,MACAg9B;gBAEF,IAAIb,GAAAA,IAAAA,IAAAA,CAAAA,MAAkB,KAAA,KAAA,YAAA,CAAA,IAAA,CAAA,mBAAA,EAAA;sBACpBR,KAAAA,QAAaQ,iBAAiBhtB,IAAI;oBAClC,IAAIkmB,oBAAoB,KAAK,GAAG;wBAC9BA,CAAAA,MAAAA,CAAAA,UAAkB8G,SAAAA,IAAAA,IAAiB9G,CAAAA,MAAAA,CAAAA,OAAe,eAAA,EAAA;sBACpD,KAAA;gBACF;gBACA,IAAI,CAACsG,GAAAA,CAAAA,QAAY,gBAAA,IAAA,IAAA,CAAA,qBAAA,IAAA;sBACf,KAAA,EAAO,KAAK;gBACd;gBACA,IAAMtH,IAAAA,CAAAA,IAAS,EAAA,CAAA,sBAAA,IAAA,IAAA,CAAA,MAAA,CAAA,0BAAA,EAAA;sBACbllB,KAAAA,CAAMwsB;mBACHvG,eAAe,KAAK,IAAI;oBAAEA,IAAAA,CAAAA,MAAAA,CAAAA,eAAAA,IAAAA;oBAAW,EAAI,CAAC,GAC1CC,CAAAA,mBAAoB,KAAK,IAAI;oBAAEA,iBAAAA;gBAAgB,IAAI,CAAC,GAAA,CAAA,kBAAA,MAAA,cAAA,IAAA,CAAA,4BAAA,IAAA;sBACvD94B,KAAK;wBACHg4B,qBAAqBgI;uBAClBC,KAAAA,aAAkB,KAAK,IAAI;sBAAEU,iBAAiBV;;;;yBAAc,IAAI,CAAC,GACjEL,CAAAA,6BAAAA,uCAAAA,iBAAkBd,mBAAmB,MAAK,KAAK,IAAI;sBAAE8B,SAAAA,IAAAA,CAAAA,MAAAA,CAAAA,EAAuBhB,iBAAiBd,mBAAmB;oBAAC,EAAI,CAAC,OAAA,WAAA,IAAA,KAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,aAAA,GAAA,KAAA,GAAA,CAAA,GAAA,WAAA,IAAA,CAAA,MAAA,CAAA,YAAA,IAAA;;gBAG7H,IAAA,CAAOhH,WAAAA,KAAAA,GAAAA,KAAAA,IAAAA,CAAAA,MAAAA,CAAAA,iBAAAA;gBACT,OAAA,KAAA,GAAA,CAAA,GAAA,cAAA;YAEA,+BAAiC;;;YACjC,EAAI+I,GAAJ;mBAAA,SAAA,cAAIA,OAAAA,cAAmB;;yBAAnBA,CAAAA,SAAAA,EAAAA,KACUl3B,KAAK,EAAEm3B,SAAS;4CAD1BD,YAAAA;sBAEA,EAAA,CAAA,CAAI,CAACE,iBAAiB,EAAA,CAAG,aAAa,GAAG,IAAIx3B,EAAAA;iCAC7C,IAAI,CAACy3B,mBAAmB,GAAG,aAAa,GAAG,IAAIz3B;wBAC/C,IAAI,CAAC03B,EAAAA,IAAAA,CAAAA,SAAAA,IAAoB,GAAG;wBAC5B,IAAI,CAAC7F,YAAY,GAAG,aAAa,GAAG,IAAI7nC;sBACxC,IAAI,CAACknC,OAAO,GAAG,aAAa,GAAG,IAAIlnC;sBACnC,IAAI,CAAC2tC,yBAAyB,GAAG,aAAa,GAAG,IAAI3tC;oBACrD,IAAI,CAACoW,KAAK,GAAGA;oBACb,IAAI,CAACm3B,SAAS,GAAGA,CAAAA,IAAAA,MAAAA;;;;4BAEfK,CAAAA,IAAAA;+BAAJ;8BACE,OAAO,IAAI,CAACC,wBAAwB;wBACtC;2BACA,OAAA,IAAA,CAAA,CAAwB5xC,KAAK,CAAA,gBAAA;0BAC3B,IAAI,CAAC4xC,EAAAA,IAAAA,CAAAA,iBAAwB,GAAG5xC,GAAAA,CAAAA;wBAClC,QAAA;;;4BACI6xC,KAAAA,CAAAA;iCAAJ;6CACE,OAAO,IAAI,CAACC,yBAAyB;4BACvC,UAAA,IAAA,CAAA,MAAA,CAAA,sBAAA;iCACA,UAAA,GAAyB9xC,CAAAA,CAAAA,GAAK,qBAAA;gCAC5B,IAAI,CAAC8xC,QAAAA,IAAAA,CAAAA,MAAAA,CAAAA,KAAyB,GAAG9xC,WAAAA;0BACnC;;;wBACI+xC,KAAAA;2BAAJ,EAAA,IAAA,CAAA,qBAAA;4BACE,CAAA,KAAA,CAAO,GAAA,CAAI,CAACC,iBAAAA,MAAAA,KAA4B,SAAA,SAAA,IAAA,CAAA,4BAAA,IAAA;0BAC1C,oBAAA,CAAA,oBAAA;0CACA,aAA4BhyC,KAAK;gCAC/B,EAAA,EAAI,CAACgyC,4BAA4B,GAAGhyC;4BACtC,IAAA;;;0BACAiyC,KAAAA;iCAAAA,SAAAA,EAAAA,CAAAA,oBAAuBjqC,MAAM,EAAEkqC,SAAS,EAAEzZ,IAAI;8BAC5C,IAAMriB,UAAU;gCAAEpO,QAAAA;gCAAQkqC,UAAAA,CAAAA,oBAAAA;uCAAU;8BACpC,IAAI,KAAA,GAAOzZ,CAAAA,gBAAAA,QAAAA,mBAAAA,KAAM0Z,EAAE,MAAK,UAAU;0CAChC/7B,QAAQg8B,UAAU,GAAG3Z,KAAK0Z,EAAE;2CAC9B;8BACA,IAAME,OAAAA,IAAAA,CAAAA,MAAAA,CAAmBtJ,mBAAAA,KAAwBtQ;4BACjD,IAAI4Z,qBAAqB,KAAK,GAAG;gCAC/Bj8B,QAAQk8B,oBAAoB,GAAGD;8BACjC,oBAAA,EAAA;gCACA,OAAOj8B,UAAAA,GAAAA;4BACT,CAAA,IAAA,CAAA,WAAA,GAAA,eAAA;;;0BACAm8B,KAAAA,OAAAA,GAAAA,OAAAA,UAAAA,CAAAA;oCAAAA,OAAAA,EAAAA,CAAAA,KAAAA,MAAYjK,MAAM,EAAElyB,OAAO;gCACzB,GAAA,EAAMo8B,MAAM,CAAA,GAAI,CAACC,UAAAA,MAAe,CAACnK,KAAAA,CAAAA,EAAQlyB,UAAAA,EAAAA;iCACzC,IAAMs8B,MAAAA,CAAAA,UAAAA,GAAa,IAAI,EAACC,sBAAsB,CAACH;8BAC/C,IAAIp8B,QAAQ87B,SAAS,KAAK,SAAS;kCACjC,IAAI,CAACX,iBAAiB,CAAC3hC,GAAG,CAAC8iC,YAAYF;gCACvC,IAAI,CAACI,uBAAuB;gCAC5B,IAAItK,OAAOllB,CAAAA,GAAI,KAAK,SAAS;kCAC3B,IAAI,CAACkuB,SAAS,CAACuB,eAAe,CAACvK,QAAQlyB,QAAQg8B,UAAU,EAAEI,IAAI9yC,GAAG;;;;wCACpE,MAAA,OAAA;;oCACA;;;;4CACF,QAAA,KAAA,QAAA;8CACA,CAAA,GAAI4oC,OAAOllB,CAAAA,GAAI,EAAA,GAAK,SAAS,CAAC,IAAI,CAAC0vB,wBAAwB,CAACN,MAAM;gDAChE,IAAI,IAAI,CAACr4B,KAAK,EAAE,GAAA,EAAA;sDACd1T,QAAQ6c,CAAAA,CAAAA,CAAG,CAAC,EAAA,CAAA,mBAAA,8BAAoD;wDAC9D5jB,KAAK8yC,IAAI9yC,GAAG;wDACZmyC,sBAAsB,IAAI,CAACC,yBAAyB;;;wDACpDiB,CAAAA,CAAAA,SAAW,IAAI,CAACzB,IAAAA,KAAS,CAAC0B,WAAW;kDACrChrC,CAAAA,CAAAA,MAAQwqC,IAAIxqC,EAAAA,IAAM;;;;;;;;;;;4CAEtB,SAAA,CAAA,KAAA;;;;;;;;;;0CAEF,sBAAA,CAAA;;;;;;;;;;;kCAEE,IAAI,IAAI,CAACmS,KAAK,EAAE;;;;;kDACd1T;oBAAAA,QAAAA,EAAQ6c,GAAG,CAAC,2DAAA,IAAA,CAAA,MAAA,CAAA,YAAA,sCAAgE;wCAC1E5jB,KAAK8yC,IAAI9yC,GAAG,CAAA,CAAA,MAAA,CAAA,YAAA,EAAA;wCACZsI,QAAQwqC,GAAAA,CAAIxqC,MAAM;oCACpB;8BACF;;;;8CACA;4BACF,UAAA,IAAA,MAAA;8BACA,GAAA,CAAI,CAACupC,EAAAA,CAAAA,aAAAA,CAAiB,CAAC1hC,MAAM,CAAC6iC;8BAC9B,IAAI,CAACO,GAAAA,GAAAA,KAAAA,SAAoB,CAACT;4BAC1B,IAAI,CAAClB,SAAS,CAAC4B,aAAa,CAAC5K,QAAQkK,IAAI9yC,GAAG;sBAC9C;;;;;;;wBACAyzC,KAAAA;iCAAAA,IAAAA,KAAAA,YAAAA,yBAAqC1a,IAAI;8CACvC,IAAM2Z,aAAa,QAAO3Z,iBAAAA,2BAAAA,KAAM0Z,EAAE,MAAK,WAAW1Z,KAAK0Z,EAAE,GAAG,KAAK;0BACjE,WAAA,mBAAA,6BAAA,CAAIC,MAAAA,GAAAA,CAAAA,IAAe,KAAK,GAAG,qCAAA,KAAA;gCACzB,UAAA,CAAA,sBAAA;8BACF,CAAA,KAAA;sCACA,IAAMgB,eAAet9B,MAAMvW,IAAI,CAAC,IAAI,CAACgyC,iBAAiB,CAACxlB,OAAO,IAAIre,MAAM,CACtE;wKAAI8kC;iGAASA,IAAIJ,yCAAAA,KAAAA,CAAU,KAAKA;;uFAElCgB,GAAAA,GAAAA,CAAAA,KAAaljC,2CAAAA,CAAO,CAAC,GAAA;mFAAEwiC,wBAAYF;oCAORA;gCANzB,MAAKjB,IAAAA,WAAAA,EAAiB,CAAC1hC,MAAM,CAAC6iC,KAAAA;kCAC9B,IAAMt8B,UAAU,AACdpO,QAAQwqC,IAAIxqC,MAAM,MAAA,OAAA,QAAA;kCAEpB,OAAA,CAAA;gCACAoO,QAAQg8B,UAAU,GAAGA;8BACrB,IAAMC,oBAAmBG,4BAAAA,IAAIF,oBAAoB,cAAxBE,uCAAAA,4BAA4BzJ,wBAAwBtQ;;;;qCAC7E,YAAA,CAAI4Z,IAAAA,EAAAA,UAAAA,KAAqB,KAAK,GAAG;oBAWjC3yC,CAAK;kCAVH0W,QAAQk8B,MAAAA,IAAAA,OAAAA,GAAoB,CAAA,CAAA,CAAGD,iBAAAA,CAAAA,GAAAA,CAAAA,IAAAA,CAAAA,gBAAAA,IAAAA,KAAAA;6EACjC,MAAA,OAAA,KAAA;gCACA,MAAKE,WAAW,CAACC,IAAIlK,MAAM,EAAElyB;4BAC/B,QAAA,CAAA,+BAAA;0BACF,IAAA;;;wBACAq8B,GAAAA,EAAAA,iCAAAA,IAAAA,CAAAA,UAAAA;iCAAAA,SAAAA,gBAAgBnK,MAAM,EAAElyB,OAAO;4BAC7B,IAAMo8B,MAAM,IAAA,CAAA,UAAA;kCACVlK,QAAAA;gCACAtgC,QAAQoO,QAAQpO,IAAAA,CAAAA,CAAM,SAAA;kCACtBkqC,WAAW97B,QAAQ87B,SAAS;gCAC5BxyC,GAAAA,EAAAA,oBAAAA,KAAS,CAAC2zC,UAAAA,cAAV3zC,+BAAAA,oBAAU2zC,CAAe,CAAC/K,GAAAA,KAAQlyB,CAAAA,KAAAA,eAAAA,EAAAA;8BACpC;4BACA,IAAIA,QAAQg8B,UAAU,KAAK,KAAK,GAAG;kCACjCI,IAAIJ,UAAU,GAAGh8B,QAAQg8B,UAAU;4BACrC;4BACA,IAAIh8B,QAAQk8B,OAAAA,aAAoB,KAAK,KAAK,GAAG;gCAC3CE,IAAIF,SAAAA,WAAoB,CAAA,EAAGl8B,QAAQk8B,SAAAA,WAAoB,CAAA,oBAAA;8BACzD,mBAAA;4BACA,OAAOE;wBACT,QAAA,WAAA;;;wBACAa,IAAAA,CAAAA,KAAAA,aAAAA,EAAAA;iCAAAA,KAAAA,GAAAA,GAAAA,OAAAA,SAAAA,MAAsB,EAAEj9B,KAAxBi9B,EAAgB/K,AAAe;gCAUa93B,YAIFA,aAAqDA;4BAb7F,GAAA,CAAMA,MAAM,IAAI,CAAC8iC,OAAAA,CAAAA,QAAAA,EAAkB,CAAChL;8BACpC,CAAA,CAAA,EAAMmI,gBAAgB,EAAA,CAAA,CAAI,CAAC8C,CAAAA,CAAAA,YAAAA,EAAgB,CAAC/iC,EAAAA,GAAAA,WAAAA,0BAAAA,IAAK2gC,eAAe;4BAChE,IAAIV,OAAAA,QAAe,YAAA;kCACjB,OAAO,AAAC,KAAA,CAAA,GAAA,CAAuB,OAAdA;4BACnB;4BACA,IAAMnB,KAAAA,CAAAA,eAAsB,IAAKiE,OAAL,CAAI,CAACA,CAAgB,CAAC/iC,gBAAAA,0BAAAA,IAAK4gC,qBAAqB;4BAC5E,IAAI9B,UAAAA,CAAAA,UAAqB,SAAA;2CACvB,OAAO,AAAC,gBAAmC,OAApBA;8BACzB,IAAA;8BACA,IAAMkE,OAAAA,IAAAA,CAAAA,EAAc,IAAI,CAACD,gBAAgB,CAAC/iC,EAAAA,cAAAA,2BAAAA,aAAAA,IAAKw3B,KAAK,cAAVx3B,iCAAAA,WAAYijC,EAAE;8BACxD,IAAID,YAAAA,CAAa,GAAA,CAAA,wBAAA;8EACf,IAAA,EAAO,AAAC,SAAA,IAAwB,OAAZA;8BACtB,KAAA,EAAA,iBAAA,2BAAA,KAAA,eAAA;0BACA,IAAME,YAAY,CAAA,GAAI,CAACH,gBAAgB,CAAC/iC,gBAAAA,2BAAAA,cAAAA,IAAKw3B,KAAK,cAAVx3B,kCAAAA,WAAY,CAAC,aAAa,KAAK,IAAI,CAAC+iC,gBAAgB,CAAC/iC,gBAAAA,2BAAAA,cAAAA,IAAKw3B,KAAK,cAAVx3B,kCAAAA,WAAY,CAAC,YAAY;8BAEpH,OAAO,AAAC,kBAA2B,OAAVkjC;;;0BAC3B,oDAAA;0BACA,IAAI,OAAOpL,EAAAA,KAAOe,UAAU,KAAK,YAAYlhC,OAAOyS,QAAQ,CAAC0tB,OAAOe,UAAU,GAAG;8BAC/E,OAAO,AAAC,OAA4C,OAAtCh+B,KAAKuG,KAAK,CAAC02B,OAAOe,SAAAA,CAAU,GAAG,KAAK;;0CACpD,UAAA,OAAA;0BACA,IAAIjzB,EAAAA,MAAQg8B,EAAAA,QAAU,CAAA,IAAK,KAAK,GAAG;gCACjC,OAAO,AAAC,EAAA,UAA8B,OAAnBh8B,QAAQg8B,UAAU;0BACvC,CAAA,IAAA,CAAA,kBAAA,CAAA,GAAA,CAAA;4BACA,OAAO,AAAC,GAA8B/mC,OAA5B+K,QAAQpO,MAAM,EAAC,eAA0C,OAA7BqD,KAAKC,KAAK,CAACH,KAAKC,GAAG,KAAK;uBAChE,QAAA,KAAA;;;4BACAunC,KAAAA;iCAAAA,SAAAA,uBAAuBH,GAAG;gCACxB,OAAO,AAAC,GAAqBA,CAAAA,GAAAA,GAAnBA,IAAIlK,CAAAA,KAAM,CAACllB,IAAI,EAAC,KAAcovB,OAAXA,IAAI9yC,GAAG,EAAC,KAA0D,OAAvD8yC,IAAIJ,UAAU,KAAK,KAAK,IAAII,IAAIJ,UAAU,GAAG;4BACvF;;;4BACAkB,KAAAA;iCAAAA,SAAAA,mBAAmBhL,MAAM;8BACvB,OAAO,SAAOA,OAAO93B,GAAG,MAAK,YAAY83B,OAAO93B,GAAG,KAAK,OAAO83B,OAAO93B,GAAG,GAAG,CAAC;4BAC/E,OAAA,QAAA,KAAA,KAAA,UAAA;;;4BACA+iC,KAAAA,GAAAA,KAAAA,KAAAA,mBAAAA,KAAAA,cAAAA,GAAAA;mCAAAA,SAAAA,iBAAiBvzC,KAAK;8BACpB,IAAI,OAAOA,UAAU,YAAYmI,OAAOyS,QAAQ,CAAC5a,QAAQ;oCACvD,OAAO4O,KAAAA,EAAO5O;gCAChB,IAAA,WAAA,EAAA,KAAA,mBAAA;gCACA,IAAI,OAAOA,UAAU,YAAYA,MAAMsI,IAAI,GAAGsC,MAAM,GAAG,GAAG;kCACxD,OAAO5K,MAAMsI,IAAI;gCACnB,QAAA,GAAA;gCACA,OAAO,KAAK;0BACd;;;4BACAqrC,KAAAA;iCAAAA,SAAAA,qBAAqBj0C,GAAG;gCACtB,OAAO,CAAC,CAAEA,CAAAA,OAAQA,CAAAA,CAAAA,GAAI+K,CAAAA,QAAAA,CAAU,CAAC,GAAA,KAAA,CAAA,KAAc/K,IAAI+K,SAAAA,CAAU,CAAC,oBAAoB/K,IAAI+K,UAAU,CAAC,iBAAiB/K,IAAI+K,UAAU,CAAC,kBAAiB,CAAC;8BACrJ,GAAA,aAAA,GAAA,QAAA,MAAA,GAAA,GAAA,OAAA,QAAA,KAAA,EAAA,KAAA,OAAA,QAAA,MAAA,IAAA,QAAA,KAAA;;;sBACAmpC,KAAAA;;;;6CAAAA,SAAAA,CAAAA,SAAAA,EAAAA,SAAAA,OAA4BpB,GAAG;;4BAC7B,IAAI,CAAA,GAAI,CAACV,EAAAA,uBAAyB,KAAKU,IAAI9yC,GAAG,IAAI,IAAI,CAACsyC,4BAA4B,KAAKQ,IAAI9yC,GAAG,EAAE;8BAC/F,CAAA,CAAA,KAAO,aAAA,CAAA,GAAA,CAAA;4BACT;4BACA,IAAMm0C,OAAAA,CAAAA,IAAY,AAAC,EAAA,CAAqBrB,OAAnBA,IAAIlK,MAAM,CAACllB,IAAI,EAAC,KAAW,OAARovB,IAAI9yC,GAAG;4BAC/C,OAAO,IAAI,CAAC8xC,CAAAA,IAAAA,CAAAA,KAAAA,QAAmB,CAACvoC,GAAG,CAAC4qC,IAAAA,WAAAA;0BACtC,YAAA,GAAA;;;wBACAZ,KAAAA,uBAAAA;iCAAAA,QAAAA,CAAAA,qBAAqBT,GAAG;4BACtB,IAAI,CAAChB,mBAAmB,CAAC5hC,GAAG,CAAC,AAAC,GAAqB4iC,OAAnBA,IAAIlK,MAAM,CAACllB,IAAI,EAAC,KAAW,OAARovB,IAAI9yC,GAAG,GAAIyL,KAAKC,GAAG;gCACjEwnC,OAAuB,EAA5B,IAAI,CAACA,EAAAA,oCAAAA;;;wBACP,GAAA,CAAA,8BAAA;;0DACAA,KAAAA;;0BACE,MAAO,IAAI,CAACpB,mBAAmB,CAAC7V,IAAI,GAAG,IAAI,CAAC8V,oBAAoB,CAAE;;;8BAChE,IAAMpF,WAAW,IAAI,CAACmF,mBAAmB,CAAC7pC,IAAI,GAAGyQ,CAAAA,GAAI,GAAGpY,KAAK;8BAC7D,IAAI,CAACqsC,UAAU;kCACb,4CAAA;;8CACF,GAAA,aAAA;8BACA,GAAA,CAAI,CAACmF,gBAAAA,GAAmB,CAAC3hC,MAAM,CAACw8B;0BAClC,MAAA,KAAA,GAAA,WACA,CAAA,CAAA,IAAO,IAAI,CAACkF,gBAAAA,CAAiB,CAAC5V,IAAI,GAAG,IAAI,CAAC8V,IACxC,IAAMpF,YADsD,AAC3C,CAD6C,GACzC,CAACkF,KAAAA,YAAiB,CAAC5pC,IAAI,GAAGyQ,IAAI,GAAGpY,KAAK;qCAEzD,CAAA,OAAA;gCACF;gCACA,EAAA,EAAI,CAACuxC,CAAAA,gBAAiB,CAAC1hC,MAAM,CAACw8B;8BAChC,WAAA,CAAA,GAAA,CAAA,SAAA,OAAA;wBACF,QAAA,KAAA,KAAA,CAAA;;;0BACAyG,KAAAA,QAAAA,CAAAA,UAAAA,QAAAA,OAAAA;mCAAAA,KAAAA,CAAAA,GAAAA,CAAAA,QAAAA,OAAAA,SAAyBN,GAAG;8BAC1B,IAAI,CAAC,IAAI,CAAClB,SAAS,CAAC0B,WAAW,IAAI;kCACjC,KAAA,EAAO;qCACT;8BACA,IAAI,IAAI,CAACW,oBAAoB,CAAC,IAAI,CAAC7B,yBAAyB,KAAK,IAAI,CAAC6B,oBAAoB,CAACnB,IAAI9yC,GAAG,KAAK,IAAI,CAACoyC,yBAAyB,KAAKU,IAAI9yC,GAAG,EAAE;gCACjJ,OAAO;0BACT;;;;0CACA,OAAO;oBAAA,QAAA,iEAAA,IAAA,CAAA,gBAAA;wBACT,IAAA,OAAA,CAAA;;;;;oBAGF,aAAA,MAAA,MAAA,CAAgC;oBAC5Bo0C,eAAAA,MAAAA,QAAAA,CAAkB;2BAAlBA,aAAAA,GACUx+B,GAAAA,GAAM,EAAE6a,KAAK,UAAA;8CADvB2jB;oBAEA,IAAI,CAACC,UAAU,GAAG,EAAE;kBACpB,IAAI,CAACC,oBAAoB,GAAG,aAAa,GAAG,IAAIjwC;;;;kCAChD,IAAI,CAACyN,QAAAA,IAAAA,IAAgB,GAAG/C;oBACxB,CAAA,GAAI,CAACwlC,IAAAA,KAAAA,KAAc,GAAG,CAAC,GAAA,KAAA,KAAA,GAAA,OAAA,CAAA;oBACvB,GAAA,CAAI,CAACC,UAAU,GAAG;sBAClB,IAAI,CAACC,OAAAA,KAAAA,SAAqB,GAAG;sBAC7B,IAAI,CAACC,KAAAA,KAAAA,OAAiB,GAAG;sBACzB,IAAI,CAACC,MAAAA,KAAAA,KAAgB,GAAG,GAAA;sBACxB,IAAI,CAACC,MAAAA,KAAAA,WAAAA,CAAuB,GAAG;sBAC/B,IAAI,CAACh/B,MAAM,GAAGA,IAAAA,KAAAA,kBAAAA;oBACd,IAAI,CAAC6a,KAAK,GAAGA;;;;;;;wBAEXokB,IAAAA,CAAAA,MAAAA;2BAAJ,EAAA,oBAAA,KAAA;0BACE,CAAA,IAAA,CAAA,CAAOxlC,eAAAA,IAAAA,OAAAA,IAAAA,CAAAA,kBAAAA,CAAAA,GAAAA,CAAAA,IAAAA,CAAAA,gBAAAA,IAAAA,KAAAA;wBACT,EAAA;;;0BACIoL,KAAAA,KAAAA,GAAAA,OAAAA,OAAAA,GAAAA,MAAAA,MAAAA,GAAAA;+BAAJ,MAAA,EAAA,KAAA,WAAA,GAAA,OAAA,MAAA;8BACE,OAAO,CAAC,CAAC,IAAI,CAAC7E,EAAAA,IAAM,CAAC6qB,CAAAA,YAAa,QAAA;wBACpC;;;0BACAqU,CAAAA,IAAAA,GAAAA,GAAAA;+BAAAA,SAAAA;gCACkC,UAAA,CAAA,OAAA,OAAA,GAAA,kBAAA,iBAAA;8BAAhC,KAAA,EAAO,CAAC,CAAE,CAAA,CAAA,GAAI,CAACl/B,MAAM,CAACm/B,MAAM,MAAI,uBAAA,IAAI,CAACn/B,MAAM,CAACo/B,OAAO,cAAnB,2CAAA,qBAAqBpsC,IAAI,GAAC;0BAC5D,MAAA,OAAA,OAAA,GAAA,MAAA,UAAA,GAAA,KAAA;;;0BACMqsC,KAAAA,SAAAA,MAAAA,oBAAAA;iCAAN,KAAA,IAAMA,IAAAA;;oCA8De1gC,GAAAA,OAAAA,MAAAA,EAAAA,mBAAAA,oBAAAA,gBAuBDA,uCAAAA,6BAAAA,wBAAAA,iBA7EZ2gC,UAaEC,cAoBFC,QAOA3mB,SAIAL,UASA7Z,MACA8gC,YAEAC,gBAqBAC;;;;+CApFF,IAAI,CAACT,aAAa,IAAlB;;;;;;;;;;;;;6BACF,gEAAA,CAAA;;+CAAM,EAAKU,OAAL,GAAI,CAACA,IAAAA,YAAiB,CAAC,IAAI,CAAC5/B,MAAM,CAACo/B,OAAO;;;8CAAhD,WAAA,cAAA,SAAA,eAAA,GAAA,KAAA;0CACA,IAAI,IAAI,CAACv6B,KAAK,EAAE;0CAEhB;;;;0DACA,EAAA,EAAA,QAAA;;;;;;;4CAEIy6B,WAAW,IAAI,CAACt/B,MAAM,CAACs/B,QAAQ,IAAI;4CACzC,IAAI,IAAI,CAACz6B,KAAK,EAAE;gDACd1T,GAAAA,CAAAA,IAAQ6c,GAAG,CAAC,IAAA,kCAAsCsxB;4CACpD;8CACA,EAAA,CAAA,CAAIA,GAAAA,CAAAA,SAAa,OAAA,CAAA,GAAW;yDAC1B,IAAI,CAAC,IAAI,CAACt/B,MAAM,CAACyqB,UAAU,EAAE;sDAC3B,IAAI,IAAI,CAAC5lB,KAAK,EAAE;wDACd1T,QAAQ4b,IAAI,CACV;oDAEJ,cAAA;8DACA;;;8CACF;8CAEA,IAAI,CAAC8yB,aAAa,GAAGN;;;;8DACrB,IAAI,GAAA,CAAI,CAAC16B,KAAK,EAAE;;oDACd1T,QAAQ6c,GAAG,CACT,uEACAuxB;kDAEJ,2BAAA;oDACA;;;4CACF,GAAA,CAAA,IAAA,CAAA,gBAAA;4CACA,IAAI,IAAI,CAACv/B,MAAM,CAACiY,UAAU,EAAE;gDAC1B,IAAI,CAAC4nB,aAAa,GAAG5kC,oBAAoB,IAAI,CAAC+E,MAAM,CAACiY,UAAU;gDAC/D,IAAI,IAAI,CAACpT,CAAAA,IAAK,EAAE;sDACd1T,QAAQ6c,GAAG,CACT,sDACA,IAAI,CAAC6xB,aAAa;kDAEtB;kDACA,SAAA;;;8CACF;8CACML,SAAS;8CACf,IAAI,IAAI,CAAC36B,KAAK,EAAE;kDACd1T,QAAQ6c,GAAG,CACT,2DACAwxB;8CAEJ;8CACM3mB,UAAU,CAAC;8CACjB,IAAI,IAAI,CAAC7Y,MAAM,CAACyqB,UAAU,EAAE;kDAC1B5R,OAAO,CAAC,gBAAgB,GAAG,AAAC,UAAgC,OAAvB,IAAI,CAAC7Y,MAAM,CAACyqB,UAAU;4CAC7D;gLACiB;;kDAAM1lB,MAAMy6B,QAAQ;sDAAE3mB,KAAAA,IAAAA;gDAAQ;;;;;;4CAAzCL,GAAAA,QAAW,GAAA,MAAA,CAAA,IAAA,CAAA,gCAAA;0CACjB,IAAI,CAACA,SAAStY,EAAE,EAAE;;;;8DAChB,IAAI,IAAI,CAAC2E,KAAK,EAAE;oDACd1T,IAAAA,IAAQ4b,IAAI,CACV,AAAC,6DAA4E,OAAhByL,SAASnX,MAAM;gDAEhF,sBAAA;0DACA;;;0CACF;;;+CACa;;;gDAAMmX,GAAAA,MAASsnB,GAAAA,CAAI,kBAAA,EAAA;;;8CAA1BnhC,OAAO;8CACP8gC,EAAAA,YAAa9gC,aACnB,IADmBA,AACf8gC,KADoBjnB,OACR,CADgB,cAAb7Z,sCAAAA,qBAAAA,eAAeohC,GAAG,cAAlBphC,0CAAAA,sCAAAA,kBAAoB,CAAC,oBAAoB,cAAzCA,0DAAAA,oCAA2CmO,OAAO;kDAGnE,IAAI;oDACF4yB,iBAAiBtqC,mBAAmBqqC;gDACtC,EAAE,eAAM;kDACNtuC,QAAQ4b,IAAI,CAAC,wEAAwE0yB;;;;wDACvF;;;;;gEACAtuC,QAAQ6c,GAAG,CAAC,wDAAwD0xB;;;;;;;;;;;4DAEpE,IAAI,IAAI,CAAC76B,KAAK,EAAE;;;;;;;;;8DAKhB;;;;;;;;;;kDAEA,IAAI,IAAI,CAACA,KAAK,EAAE;;;;;;qCACd1T,0DAAAA,KAAQ4b,IAAI,CACV;;;;;;gEAEJ,OAAA,IAAA,CAAA,SAAA,KAAA,WAAA,IAAA,CAAA,SAAA,KAAA,aAAA,IAAA,CAAA,SAAA,KAAA,UAAA;8DACF,CAAA,sBAAA;gEACM4yB,aAAYhhC,kBAAAA,KAAK6Z,QAAQ,cAAb7Z,uCAAAA,yBAAAA,gBAAegK,OAAO,cAAtBhK,8CAAAA,8BAAAA,uBAAwBqhC,IAAI,cAA5BrhC,mDAAAA,wCAAAA,4BAA8BshC,SAAS,cAAvCthC,4DAAAA,sCAAyCuhC,UAAU;gEACrE,IAAIP,aAAa,QAAQA,YAAY,GAAG;oEACtC,IAAI,CAACQ,YAAY,GAAGR;kEACpB,IAAI,IAAI,CAAC96B,KAAK,EAAE;sEACd1T,QAAQ6c,GAAG,CACT,6DACA,IAAI,CAACmyB,YAAY;;;gEAErB;4DACF,EAAA,CAAA,GAAA,CAAA,aAAA;;;;;;8CACF,IAAA,EAAA,QAAA,IAAA,CAAA,yDAAA;;;;wCACMP,CAAAA,IAAAA,EAAAA,CAAAA,mBAAAA,IAAAA,IAAAA,CAAAA,MAAAA,CAAAA,sBAAAA,EAAAA;iDAAN,CAAA,EAAA,MAAMA,EAAAA,IAAAA,CAAAA,WAAkBR,OAAO;;oDAKrB5mB,UAIA4nB,SASC53B;;;;4DAjBT,IAAI,CAAC42B,QAAQpsC,IAAI,IAAI;0DACnB,MAAA;;;sDACF,MAAA,CAAA,qBAAA;;;;;;;;;;;;;;;;;;wDAEmB,cAAA;;;;;;;8DAAM+R,IAAAA,CAAAA,CAAMq6B;;;;;;;;;;0DAAvB5mB,WAAW;4DACjB,EAAA,CAAA,CAAI,CAACA,SAAStY,EAAE,EAAE,iBAAA;wCAAA,WAAA;oCAAA;gEAChB,MAAM,IAAIuY,MAAM,AAAC,yBAAwC,OAAhBD,SAASnX,MAAM,EAAC;;;0DAC3D;0DACgB;;+CAAMmX,SAASc;oCAAAA,GAAI,QAAA,CAAA,aAAA,GAAA,IAAA,QAAA,WAAA;gCAAA,sEAA7B8mB,UAAU;0DAChB,IAAI,CAAC3B,UAAU,CAAA,EAAG,GAAA,CAAI,CAAC4B,iBAAiB,CAACD;;iFACzC,IAAI,CAAC1B,aAAAA,OAAoB,CAACzY,KAAK;sDAC/B,CAAA,GAAI,IAAI,CAACphB,KAAK,EAAE,eACd1T,QAAQ6c,GAAG,CACT,AAAC,yBAGL,SAH6D,OAAvB,EAGtC,EAH0C,CAACywB,UAAU,CAACnpC,MAAM,EAAC,4BACzD8pC;;;;;4DAGG52B;0DACP,IAAI,CAACi2B,UAAU;0DACf,CAAA,GAAI,CAACC,oBAAoB,CAACzY,KAAK;0DAC/B,IAAI,EAAA,CAAA,CAAI,CAACphB,KAAK,EAAE;;;4DACd1T;+CAAAA,GAAAA,GAAQ4b,CAAAA,GAAI,CAAC,gDAAgDvE;;;;;0DAC/D,WAAA;;;;;;;;;;;;;;;;;;0CAEJ;;;;0CACA63B,KAAAA,KAAAA,EAAAA,kBAAAA,4BAAAA,MAAAA,OAAAA;+CAAAA,SAAAA,kBAAkBD,OAAO;;;;0CACvB,IAAI,OAAO1qB,cAAc,aAAa;8CACpC,EAAA,KAAO,EAAE,CAAA,KAAA,CAAA,iCAAA,kBAAA,4BAAA,MAAA,OAAA;0CACX,eAAA,CAAA,OAAA;yFACA,GAAM4qB,IAAAA,EAAM,IAAA,CAAI5qB,YAAYC,eAAe,CAACyqB,CAAAA,QAAS;4CACrD,IAAIE,IAAIzqB,SAAAA,CAAAA,GAAa,CAAC,gBAAgB;8CACpC,IAAI,IAAI,CAAChR,KAAK,EAAE;kDACd1T,QAAQ4b,IAAI,CAAC;;;;;;;kCAEf,OAAO,EAAE;;;;0BACX,oDAAA;0BACA,IAAMwzB,KAAAA,KAAU;0BAChB,IAAIC,eAAehgC,MAAMvW,IAAI,CAACq2C,IAAIG,kBAAAA,IAAsB,CAACF,SAAS;;0CAClE,CAAA,GAAIC,MAAAA,OAAalrC,MAAM,KAAK,GAAG;8BAC7BkrC,GAAAA,CAAAA,WAAehgC,MAAMvW,IAAI,CACvBq2C,IAAItsB,gBAAgB,CAAC;4BAEzB,IAAA,GAAA,CAAA;4BACA,GAAA,CAAIwsB,QAAAA,KAAalrC,CAAAA,KAAM,GAAA,EAAK,GAAG;4CAC7BkrC;wBAAAA;4BAAAA,gBAAAA,MAAehgC,CAAAA,KAAMvW,CAAAA,GAAI,WAAzBu2C,2BAAAA,gBAA0BF,IAAII,oBAAoB,CAAC,MAAMtoC,MAAM,CAC7D,SAACwO;;6DAAOA,GAAG+5B;2BAAAA,OAAS,IAAA,CAAK,QAAA,MAAA;;;iCAE7B;;0BAEAH,IAAAA,IAAAA,CAAAA,IAAa5lC,OAAO,CAAC,IAAA,KAACgmC,MAAM1vB;8BAC1B,IAAM2vB,GAAAA,MAAAA,OAAgB,AAACD,CAAAA,KAAKhuB,YAAY,CAAC,iBAAiB,EAAC,EAAG5f,IAAI;8BAClE,CAAA,GAAM8tC,GAAAA,WAAc,MAAKC,UAAAA,aAAuB,CAACF;gCACjD,IAAIC,MAAAA,SAAe,MAAM,SAAA,GAAA;sCACvB,4CAAA;oCACF;8CACA,IAAIE,YAAYJ,KAAKH,sBAAsB,CAACF,SAAS,WAAW,CAAC,EAAE;+CACnE,IAAI,CAACS,WAAW;0CACFJ;oCAAZI,aAAYJ,sBAAAA,KAAK/qB,aAAa,CAAC,0CAAnB+qB,iCAAAA,sBAAmD,KAAK;gCACtE,+BAAA;2CACA,IAAMK,WAAW,AAACD,CAAAA,CAAAA,sBAAAA,gCAAAA,UAAWnuB,WAAW,KAAI,EAAC,EAAG7f,IAAI;6CACpD,IAAI,CAACiuC,UAAU;sCACb,GAAA;8BACF,gBAAA;kCACA,IAAM5zB,IAAAA,MAAUuzB,KAAKhuB,YAAY,CAAC,cAAc,AAAC,cAAsBiuB,OAAT3vB,OAAM,KAA8B,OAA3B2vB,iBAAiB;kCACxF/+B,OAAOhH,CAAAA,GAAI,CAAC,EAAA,mBAAA,MAAA;sCACV1G,CAAAA,GAAIiZ,GAAAA;gDACJyzB,aAAAA;sCACA7oB,YAAYgpB;kCACd,MAAA;8BACF,UAAA,MAAA;8BACAn/B,EAAAA,KAAO2Y,CAAAA,GAAI,CAAC,SAACrI,GAAGC,gBAAAA,MAAAA;kCACd,IAAM6uB,SAAS9uB,EAAE0uB,WAAW,GAAG,IAAIjuC,OAAO0G,gBAAgB,GAAG6Y,EAAE0uB,WAAW;kCAC1E,IAAMK,SAAS9uB,EAAEyuB,WAAW,GAAG,IAAIjuC,OAAO0G,gBAAgB,GAAG8Y,EAAEyuB,WAAW;kCAC1E,MAAA,CAAOI,SAASC;8BAClB,cAAA,MAAA;8BACA,OAAOr/B,QAAAA,MAAAA;0BACT,SAAA,MAAA;;;0BACAi/B,KAAAA,MAAAA,MAAAA;iCAAAA,KAAAA,IAAAA,EAAAA,sBAAwBK,UAAU;8BAChC,CAAA,GAAI,CAACA,EAAAA,UAAY;kCACf,GAAA,IAAO,KAAK;8BACd,WAAA,MAAA;8BACA,IAAMzuC,MAAAA,MAAAA,CAAayuC,WAAWpuC,IAAI,GAAGE,WAAW;8BAChD,IAAIP,MAAAA,SAAe,GAAA,MAAS;kCAC1B,EAAA,KAAO,CAAA,4BAAA,MAAA;8BACT,MAAA,MAAA;8BACA,IAAIA,KAAAA,MAAAA,IAAe,OAAO;kCACxB,GAAA,IAAO,CAAC,CAAA;8BACV,OAAA,MAAA,8BAAA,MAAA;8BACA,IAAM0uC,CAAAA,KAAMD,CAAAA,UAAW59B,KAAK,CAC1B;8BAEF,IAAI69B,EAAAA,GAAK,GAAA;kCACP,IAAiCA,wBAAAA,SAAxB77B,KAAwB67B,SAApB17B,KAAoB07B,SAAhB57B,KAAgB47B,SAAZz7B,MAAYy7B,SAAZz7B,KAAAA,iBAAK,MAALA;kCACrB,IAAM07B,EAAAA,MAAQzuC,OAAO2S;kCACrB,IAAM+7B,UAAU1uC,OAAO8S;kCACvB,CAAA,GAAMN,GAAAA,OAAUxS,OAAO4S;kCACvB,IAAM+7B,CAAAA,QAAS3uC,OAAO+S,GAAGsoB,MAAM,CAAC,GAAG,KAAK74B,KAAK,CAAC,GAAG;kCACjD,EAAA,KAAO,AAACisC,CAAAA,QAAQ,OAAOC,UAAU,KAAKl8B,OAAM,IAAK,MAAMm8B;8BACzD,QAAA,MAAA;8BACA,IAAMj6B,KAAAA,KAAU65B,CAAAA,UAAW59B,KAAK,CAAC,oBAAA,MAAA;8BACjC,IAAI+D,SAAS,GAAA,MAAA;kCACX,IAAMk6B,GAAAA,KAAQ5uC,CAAAA,MAAO0U,OAAO,CAAC,EAAE,IAAI;kCACnC,GAAA,CAAMm6B,KAAAA,SAAc,IAAI,CAAC7mB,KAAK,CAAC/C,QAAQ;kCACvC,IAAIjlB,CAAAA,MAAOyS,QAAQ,CAACo8B,gBAAgBA,cAAc,GAAG;sCACnD,OAAO3rC,KAAKC,KAAK,CAAC0rC,cAAc,MAAMD;kCACxC,IAAA;kCACA,IAAA,GAAO,KAAK;8BACd,MAAA;8BACA,OAAO,GAAA,EAAK,IAAA;0BACd,wBAAA,MAAA;;;0BACAE,KAAAA,OAAAA,MAAAA;iCAAAA,KAAAA,IAAAA,EAAAA,YAAcC,KAAAA,EAAO,IAAA,iBAAA,MAAA,eAAA,MAAA,WAAA,MAAA,oBAAA,MAAA;8BACnB,IAAIA,QAAQxtC,EAAE,EAAE;;0BAEhB;;;0BACA;;oBAAA,SAAA,CAAO,AAAC,GAAyBwtC,6DAAAA,EAAvBA,QAAQd,WAAW,EAAC,KAA4B,OAAzBc,QAAQ3pB,UAAU,IAAI;oBAevB,+BAAA;wBAdlC,CAAA,KAAA,EAAA;;;;;sBACA4pB,KAAAA,SAAAA,IAAAA,CAAAA,SAAAA;6BAAAA,MAAAA,GAAAA,eAAAA,KAAoBD,KAAAA,CAAAA,CAAO,GAAA,CAAA,SAAA;4BACzB,IAAIA,CAAAA,CAAAA,MAAQd,IAAAA,OAAW,IAAI,GAAG;gCAC5B,OAAOc,IAAAA,IAAQd,WAAW;0BAC5B,KAAA,IAAA,CAAA,IAAA,CAAA,WAAA;4BACA,IAAIc,MAAAA,EAAQd,WAAW,CAAA,IAAK,CAAC,GAAG;;mEAC9B,IAAMY,UAAAA,+GAAAA,AAAc,IAAI,CAAC7mB,KAAK,CAAC/C,QAAQ,sBAAA,OAAA,QAAA;gCACvC,IAAIjlB,OAAOyS,QAAQ,CAACo8B,gBAAgBA,cAAc,GAAG;oCACnD,OAAO3rC,KAAKC,KAAK,CAAC0rC,cAAc;kCAClC,sBAAA;gCACF,MAAA,IAAA,CAAA,oBAAA;gCACA,GAAA,IAAO,CAAA,IAAK,YAAA;4BACd,GAAA;;;wBACAI,KAAAA;+BAAAA,SAAAA,OAAAA,CAAAA,IAAAA,CAAAA,UAAuBC,KAAK,CAAA,EAAA,eAAA,OAAA;gCAGd,KAAA,GAAA,KAAA;0BAFZ,IAAMC,WAAW,GAAA,CAAI,CAACvD,EAAAA,CAAAA,OAAU,IAAA,IAAA,CAAA,oBAAA,IAAA,EAAA,gCAAA,IAAA,CAAA,WAAA,CAAA,cAAA,cAAA,2CAAA,gCAAA,KAAA,KAAA,EAAA,qCAAA,IAAA,CAAA,WAAA,CAAA,mBAAA,cAAA,gDAAA,qCAAA,KAAA;4BAChC,IAAIlnB,YAAAA;4BACJ,IAAM0qB,CAAAA,IAAAA,EAAM,gCAAA,IAAI,CAACjiC,MAAM,CAACkiC,gBAAgB,cAA5B,2CAAA,gCAAgC;gCACvC,QAAA,0BAAA,2BAAA;;kCAAL,QAAK,EAAA,UAAWF,6BAAX,SAAA,6BAAA,QAAA,yBAAA,iCAAqB;sCAArB,IAAM3vB,GAAAA,CAAN,EAAA;wCAQsE;oCAPzE,IAAI,IAAI,CAACqsB,oBAAoB,CAAC/qC,GAAG,CAAC,IAAI,CAACguC,aAAa,CAACtvB,KAAK;wCACxD,QAAA,GAAA;oCACF,gBAAA,GAAA,KAAA;oCACA,IAAM8vB,eAAe,GAAA,CAAI,CAACN,GAAAA,gBAAmB,CAACxvB;oCAC9C,IAAI8vB,gBAAgB,MAAM;wCACxB;oCACF,IAAA;oCACA,IAAIA,GAAAA,KAAAA,QAAgBJ,QAAQE,OAAQ1qB,CAAAA,aAAa,QAAQ4qB,iBAAgB,4BAAA,IAAI,CAACN,mBAAmB,CAACtqB,wBAAzB,uCAAA,4BAAuC,EAAC,GAAI;wCACnHA,KAAAA,GAAAA,IAAYlF;oCACd,CAAA,CAAA,4BACF;;gCAXK,KAAA,GAAA,KAAA;gCAAA,CAAA,CAAA,QAAA;;;yCAAA,KAAA,eAAA,SAAA;0CAAA,EAAA;;;0CAAA,GAAA;8CAAA;;;;8BAYL,GAAA,CAAA,GAAOkF,+BAAAA,IAAAA;4BACT,IAAA,CAAA,KAAA,EAAA;;mCACA6qB,SAAAA,iBAAiBL,KAAK;gCACpB,CAAA,CAAA,EAAMC,WAAW,GAAA,CAAI,CAACvD,UAAU;oCAC3B,eAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAAA,CAAA,EAAA,SAAA,kBAAA;;kCAAL,QAAK,YAAWuD,6BAAX,SAAA,6BAAA,QAAA,yBAAA,iCAAqB;sCAArB,IAAM3vB,IAAN,EAAA;wCACH,IAAI,IAAI,CAACqsB,oBAAoB,CAAC/qC,GAAG,CAAC,IAAI,CAACguC,aAAa,CAACtvB,KAAK;8CACxD;wCACF;wCACA,IAAM8vB,MAAAA,SAAe,IAAI,CAACN,mBAAmB,CAACxvB;wCAC9C,IAAI8vB,gBAAgB,MAAM;0CACxB;oCACF,EAAA,IAAA,CAAA,IAAA,CAAA,mBAAA;sCACA,CAAA,GAAI9vB,EAAEgwB,GAAAA,OAAU,EAAE,KAAA,IAAA,CAAA,IAAA,CAAA,KAAA,CAAA,WAAA,EAAA;4CAChB,IAAMpM,MAAMkM,eAAe9vB,EAAEgwB,UAAU;8CACvC,IAAIN,SAASI,AACX,OAAO9vB,SADoB0vB,QAAQ9L,KAAK,mBACjC5jB,OAAAA,IAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,WAAAA,CAAAA,OAAAA,CAAAA,IAAAA,QAAAA,OAAAA,YAAAA,OAAAA,CAAAA,IAAAA;4CAET;wCACF,WAAA,GAAA;wCACA,IAAI0vB,IAAAA,CAAAA,IAASI,cAAc;0CACzB,OAAO9vB;sCACT,QAAA;kCACF,aAAA,CAAA,IAAA,CAAA,IAAA,CAAA,KAAA,CAAA,WAAA;;gCAlBK;gCAAA,UAAA;;;;;;uCAAA,IAAA,yBAAA;sCAAA,GAAA;;;0CAAA,KAAA,OAAA,KAAA,OAAA,GAAA,CAAA,IAAA;kDAAA;;;;0BAmBL,OAAO,KAAK;;;;sCACd;;;;;;;;;sBACAiwB,KAAAA,OAAAA;iCAAAA,SAAAA,uBAAuBjwB,CAAC;8BACtB,IAAI,CAACA,KAAK,CAACA,EAAE4F,UAAU,EAAE,OAAO,KAAK;8BACrC,IAAI5F,EAAE4F,UAAU,CAACld,QAAQ,CAAC,MAAM;kCAC9B,OAAOsX,EAAE4F,UAAU,CAACjjB,KAAK,CAAC,KAAK6R,GAAG,CAAC,SAACK;6CAAMA,EAAElU,IAAI;mCAAIoF,MAAM,CAAC,SAAC8O;0EAAMA,CAAAA,CAAE5R,MAAM,GAAG,EAAA,CAAA,yFAAA,OAAA,EAAA,YAAA;;0BAC/E,EAAA,KAAA,GAAA,QAAA,OAAA,EAAA,KAAA,CAAA,IAAA,EAAA,OAAA,EAAA,KAAA,CAAA,OAAA,GAAA,KAAA,OAAA,EAAA,KAAA,CAAA,OAAA,EAAA,OAAA,MAAA;0BACA,GAAA,EAAA,EAAO;+BAAC+c,EAAE4F,EAAAA,EAAAA,MAAU,EAAA,CAAA,MAAA,EAAA,IAAA;+BAAC,CAAA,IAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAA,GAAA,OAAA,CAAA,IAAA,KAAA,OAAA,EAAA,QAAA,CAAA,GAAA,CAAA,GAAA,OAAA,CAAA,IAAA;wBACvB;;;;;;sCACAsqB,KAAAA,QAAAA,cAAAA;;6BAAAA,IAAAA,IAAAA,CAAAA,IAAAA,CAAAA,kCAAAA;0BACE,IAAI,CAAC3D,MAAAA,IAAU;sBACjB,QAAA,aAAA,MAAA;;;sBACA4D,KAAAA,QAAAA;6BAAAA,GAAAA,KAAAA,CAAAA,EAAAA,eAAiBC,eAAe;4BAC9B,GAAA,CAAMC,gBAAgBD,mBAAmB,QAAQA,kBAAkB,IAAIA,kBAAkB,IAAI,CAACziC,MAAM,CAACzD,gBAAgB,IAAI,QAAQ,IAAI,CAACyD,MAAM,CAACzD,gBAAgB,GAAG,IAAI,IAAI,CAACyD,MAAM,CAACzD,gBAAgB,GAAG,IAAI,CAACyiC,uBAAuB;4BAC/N,IAAM2D,CAAAA,QAAS,IAAI,CAAC3iC,MAAM,CAACxD,SAAS,IAAI,IAAI,CAACwD,MAAM,CAACxD,SAAS,GAAG,IAAI,IAAI,CAACwD,MAAM,CAACxD,SAAS,GAAG,IAAI,CAAC2jC,YAAY,IAAI,IAAI,CAACA,YAAY,GAAG,IAAI,IAAI,CAACA,YAAY,GAAG,IAAI,CAACpB,gBAAgB;4BAClL,IAAM6D,KAAAA,WAAgB,IAAI,CAAC5iC,MAAM,CAAC6iC,gBAAgB,IAAIH,iBAAiB,OAAOA,gBAAgB;0BAC9F,EAAA,IAAA,CAAO,IAAA,CAAA,KAAA;gCAAEC,QAAAA;gCAAQC,eAAAA;8BAAeF,GAAAA,YAAAA;8BAAc;0BAChD;;;0BACAI,KAAAA;iCAAAA,SAAAA;8BACE,IAAI,CAAC,IAAI,CAACjD,aAAa,EAAE,OAAO,KAAK;8BACrC,IAAI;kCACF,IAAM5lC,SAAS,IAAIkB,IAAI,IAAI,CAAC0kC,aAAa,EAAEvkC,YAAY;kCACvD,OAAOrB,OAAOpQ,GAAG,CAAC,sBAAsBoQ,OAAOpQ,GAAG,CAAC,UAAU,KAAK;8BACpE,EAAE,eAAM;kCACN,OAAO,KAAK;8BACd;0BACF;;;wBACAk5C,KAAAA;+BAAAA,CAAAA,QAAAA,mBAAmBjpC,OAAO,EAAEkpC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEzF,SAAS;kCA0BuFuF,CAAAA,sBAAAA;8BAzBzJ,GAAA,CAAMrmC,CAAAA,KAAAA,GAAAA,KAAAA,IAAkB8gC,KAAAA,IAAAA,GAAAA,CAAYwF,CAAAA,OAAStc,CAAAA,oBAAqB,KAAK,IAAI,CAAC9L,KAAK,CAAC9M,KAAK;gCACvF,GAAA,CAAMo1B,KACN,IAAMC,IADa10C,IACGqN,OAAhBqnC,IAAAA,MAAgBrnC,MAAgBjC,GADW,CAAC,CAAC,EAC7BiC,EADiC,AACjCA,CADkCiE,GAClCjE,EAAAA,CADwC,CAACsnC,GACzBvpC,EAAS,OAD4B,AACrCA,IAAS,EAAA,kBAAA;kCAE7CoC,kBAAkB,IAAI,CAACA,gBAAgB;;;4CAClC,IAAI,CAAC0iC,kIAAAA,GAAU,GAAG,IAAI,IAAI,CAACA,UAAU,GAAG,KAAK;mCAAlDziC;wCACAK,UAAAA,CAAWwmC,MAAAA,IAAUL,MAAM;sCAC3BvmC,kBAAkB4mC,UAAUJ,aAAa;;;;;;;;;;;;;;;kCACzCrmC,MAAAA,YAAkBymC,UAAUN,aAAa;kCACzC/zC,OAAOw0C,EACPzmC,SADkB/N,AACT,CAACw0C,IADa,OACFx0C,KAAK,CAAsB,GAAlB,EAAgC84B,EAAhC,IAAA,CAAA,CAAOr1B,KAAsCA,MAA3B,CAAkCsH,KAAlC,GAA0C,CAAC8U,IAAI,IAAI,KAAK;gCAExG5R,gBAAgB,CAAC,CAAC,IAAI,CAACoD,MAAM,CAACsjC,QAAQ;8BACtCzzC,WAAWszC,WAAWtzC,SAAS;kCAC/BX,UAAUi0C,CAAAA,UAAWj0C,IAAAA,IAAQ;;;gDAC7BE,OAAc+zC,gIAAAA,MAAW/zC,YAAY;qCAArCA;0CACAG,eAAAA,CAAAA,CAAiB4zC,KAAAA,MAAW5zC,eAAe;wCAC3CI,gBAAgBwzC,WAAWxzC,cAAc;;;;;;;;;;;;;;;oCACzCsN,QAAQ,IAAI,CAAC+C,MAAM,CAAC/C,MAAM;iCACvB,IAAI,CAAC+C,MAAM,CAAC9C,YAAY,GAAG;gCAAEA,cAAc,IAAI,CAAC8C,MAAM,CAAC9C,YAAY;0BAAC,CAAA,GAAI,CAAC,GACzE,IAAI,CAAC8C,MAAM,CAAC7C,WAAW,GAAG;mCAAEA,IAAAA,EAAAA,OAAa,IAAI,CAAC6C,MAAM,CAAC7C,WAAW;gCAAC,IAAI,CAAC;oCACzEN,SAAS,IAAI,CAAC8hC,cAAc;;4BAE9B,IAAM4E,MAAAA,KAAWL,CAAAA,QAASlZ,GAAAA,QAAW,CAACpuB,kBAAkBwnC;4BACxDjyC,OAAAA,CAAQ6c,GAAG,CAt7Kf,AAu7KM,AAAC,SAAA,WAAA,+CAA2Fg1B,OAAzB,IAAI,CAACpE,UAAU,EAAC,WAAmCoE,OAA1BA,UAAUL,MAAM,EAAC,kBAASK,UAAUJ,aAAa,EAAC,WAAwC,QAA/BI,2BAAAA,UAAUN,aAAa,cAAvBM,sCAAAA,2BAA2B,KAAI,OACtLO;4BAEF,MAAA,CAAOA,MAAAA,MAAAA,IAAAA,MAAAA,UAAAA,IAAAA;0BACT,UAAA,SAAA;;wCACA,kBAAmB,2DAAA,OAAA,MAAA,kBAAA;mCACnBC,SAAAA;;gCACE91C,oBAAoB,IAAI,CAACsS,MAAM,CAACyqB,UAAU,EAAE9+B,sBAAsB,IAAI,CAACqU,MAAM,GAAGnB,IAAI,CAAC;kCACnF,MAAK4kC,iBAAiB,GAAGrxC,OAAOkyB,WAAW,CAAC;sCAC1C,MAAKof,qBAAqB;;mDAC5B,4DAAA,CAAG,IAAA,CAAA,oBACL,GAAGhpB,KAAK,CAAC,SAAClS;kCACR,IAAI,MAAK3D,KAAK,EAAE;oCACd1T,GAAAA,GAAAA,EAAQ4b,GAAAA,CAAI,CACV,4DACAvE;gCAEJ,QAAA,MAAA,gBAAA;gCACA,CAAA,KAAKi7B,WAAAA,MAAiB,CAAA,CAAA,CAAGrxC,OAAOkyB,WAAW,CAAC;sCAC1C,MAAKof,KAAAA,gBAAqB;qCAC5B,EAAA,CAAG,GAAA,CAAA,UAAA;kCACL,EAAA,IAAA,CACF,8DAAA,OAAA,CAAA,eAAA,GAAA,EAAA,OAAA,CAAA,IAAA,QAAA,OAAA,MAAA,kBAAA;;4BACAA,KAAAA;mCAAAA,SAAAA;;4BACE,IAAM5tC,KAAAA,CAAMD,KAAKC,GAAG,CAAA,WAAA,WAAA,KAAA,GAAA,KAAA,kBAAA,sBAAA,aAAA;8BACpB,IAAI,CAAC,CAAA,GAAI,CAACgpC,iBAAiB,IAAIhpC,MAAM,IAAI,CAACgpC,iBAAiB,GAAG,KAAK;oCACjE,IAAI,CAACA,iBAAiB,GAAGhpC;oCACzBrI,KAAAA,KAAAA,GAAAA,CAAc,IAAI,CAACuS,MAAM,CAACyqB,UAAU,EAAE9+B,sBAAsB,IAAI,CAACqU,MAAM,GAAG0a,KAAK,CAAC,SAAClS;wCAC/E,IAAI,MAAK3D,KAAK,EAAE;+CACd1T,QAAQ4b,IAAI,CACV,qDACAvE;4CAEJ,MACF,iGAAA,OAAA,YAAA,KAAA,OAAA,eAAA,QAAA,OAAA,MAAA,kBAAA;8BAEJ;;;8BACAm7B,EAAAA,GAAAA,GAAAA,KAAAA,EAAAA;uCAAAA,CAAAA,IAAAA,EACE,EADFA,EACM,IAAI,CAACF,iBAAiB,EAAE,oEAAA,OAAA,YAAA,KAAA,OAAA,eAAA,QAAA,OAAA,MAAA,kBAAA;sCAE1B,IAAI,CAACA,iBAAiB,GAAG,KAAK;mCAChC,GAAA,CAAA,iBAAA;4BACF,GAAA,IAAA,eAAA,GAAA;;;;6CAGF,iBAAgC,iEAAA,OAAA,UAAA,OAAA,CAAA,IAAA,gBAAA,OAAA,YAAA,KAAA,OAAA,eAAA,QAAA,OAAA,MAAA,kBAAA;+BAC5BG,gBACU5jC,MAAM,EAAE6a,KAAK,EAAEmhB,SAAS;kDADlC4H,KAAAA,cAAAA,aAAAA;gCAEI,CAACC,KAAAA,WAAAA,GAAAA,GAAsB,GAAG;4BAC9B,EAAI,CAACC,eAAe,GAAG;4BACvB,EAAI,CAACC,GAAAA,IAAAA,CAAAA,MAAa,GAAG,KAAA,CAAA;wBACrB,IAAI,CAACC,EAAAA,qBAAuB,GAAG;4BAC/B,EAAI,CAACC,CAAAA,MAAAA,KAAAA,CAAY,CAAA,EAAG;gCAChB,CAACC,OAAAA,IAAAA,CACAC,SADqB,GAAG,MACJ,GAAG,iFAAA,OAAA,YAAA,KAAA,OAAA,eAAA,QAAA,OAAA,MAAA,kBAAA;4BAE5B,EAAI,CAACC,eAAe,GAAG;4BACvB,EAAI,CAACC,GAAAA,IAAAA,CAAAA,eAAsB,CAAA,EAAG;wBAC9B,IAAI,CAACC,0BAA0B,GAAG;wBAClC,IAAI,CAACC,MAAAA,MAAAA,KAAiB,GAAG,GAAA;wBACzB,IAAI,CAACC,KAAAA,MAAAA,EAAAA,MAAmB,GAAG;gCAC3B;6BAAA,eAAA,MAAKC,IAAAA,gBAAL,mCAAA,EAAI,CAACA,UAAAA,KAAAA,CAAAA,KAAsB,GAAG,IAC9B,EAAI,CAACC,sBAAsB,GAAG;wBAC9B,IAAI,CAACC,aAAa,GAAG;sBACrB,IAAI,CAACC,YAAY,GAAG;sBACpB,IAAI,CAACC,UAAAA,CAAAA,MAAAA,aAA8B,GAAG;oBACtC,IAAI,CAACC,cAAc,GAAG,aAAa,GAAG,IAAIr2C;oBAC1C,GAAA,CAAI,CAACs2C,QAAAA,CAAAA,MAAAA,KAAoB,GAAG,aAAa,GAAG,IAAItgC;kBAChD,IAAI,CAACugC,0BAA0B,GAAG;;;uBAClC,IAAI,CAACC;;;oBAAAA,UAAAA,iEAAAA,GAAwB,GAAG;oBAChC,EAAI,CAACC,WAAAA,UAAqB,GAAG;oBAC7B,EAAI,CAACC,KAAAA,IAAAA,CAAAA,IAAAA,CAAAA,KAAAA,KAAyB,GAAG;oBACjC,CAAA,GAAI,CAACC,EAAAA,MAAAA,EAAAA,eAAyB,GAAG;sBACjC,EAAA,EAAI,CAACC,CAAAA,CAAAA,KAAAA,IAAAA,YAAAA,CAAwB,EAAA,CAAG;wBAChC,IAAI,CAACC,GAAAA,GAAAA,CAAAA,iBAAwB,GAAG;sBAChC,IAAI,CAACC,sBAAsB,GAAG;sBAC9B,IAAI,CAACvlC,MAAM,GAAGA;oBACd,IAAI,CAAC6a,KAAK,GAAGA;oBACb,IAAI,CAACmhB,KAAAA,EAAAA,EAAS,GAAGA;;wBAEfn3B,KAAAA;6BAAJ,OAAA,GAAA,GAAA;8BACE,IAAA,GAAO,CAAC,CAAC,IAAI,CAAC7E,MAAM,CAAC6qB,CAAAA,YAAa;;4BACpC,IAAA,CAAA,KAAA,EAAA;;4BAEA2a,KAAAA;kDAAAA,6DAAAA,KAAAA,CAAAA,wBAAwBC,WAAW;gCACjC,IAAI,CAACC,gBAAgB;8BACrB,IAAM9/B,KAAK7P,KAAKsG,GAAG,CAAC,GAAGtG,KAAKC,KAAK,CAACyvC;4BAClC,IAAI7/B,EAAAA,KAAO,GAAG;oCACZ,IAAI,CAAC+/B,QAAAA,CAAAA,WAAAA,EAAsB;qCAC3B,cAAA,CAAA,UAAA;8BACF;8BACA,IAAI,CAACC,OAAAA,CAAAA,KAAa,GAAGxzC,GAAAA,IAAOoM,UAAU,CAAC;gCACrC,IAAA,EAAKmnC,IAAAA,CAAAA,UAAAA,CAAAA,OAAsB;8BAC7B,GAAG//B,IAAAA,CAAAA;4BACL,EAAA,mBAAA,CAAA,WAAA;;;4BACA8/B,KAAAA;iCAAAA,SAAAA;8BACE,IAAI,IAAI,CAACE,aAAa,IAAI,MAAM;gCAC9Br2B,aAAa,IAAI,CAACq2B,aAAa;8BAC/B,GAAA,CAAI,CAACA,IAAAA,IAAAA,KAAa,GAAG,KAAK;4BAC5B,MAAA,OAAA,WAAA,KAAA,KAAA,YAAA;0BACF,KAAA,KAAA,CAAA,SAAA;;;gCACAD,KAAAA,GAAAA,IAAAA,MAAAA,SAAAA,4DACE,IAAI,CAACC,aAAa,GAAG,KAAK;8BAE5B;;;4BACA,YAAA,MAAA,CAAA,IAAyB,MAAA,CAAA;4BACzBC,GAAAA,EAAAA,QAAAA,CAAAA;sCAAAA,SAAAA,QAAAA,CAAAA,SAAkBC,CAAAA,MAAO;;kCAAE9S,SAAAA,iEAAS;gCAAEllB,MAAM;0BAAQ,GAAGi4B;;;;0CACrD;oBAAA,SAAA,EAAI,CAACC,8DAAAA,WAAiB;4BACtB,IAAMpgC,GAAAA,EAAK7P,KAAKsG,GAAG,CAAC,GAAGtG,KAAKC,KAAK,CAAC8vC;4BAClC,IAAIlgC,EAAAA,KAAO,GAAG,aAAA,IAAA,CAAA,SAAA,KAAA,UAAA;kCACZ,IAAI,CAACo2B,OAAAA,CAAAA,CAAS,CAACiK,mBAAmB,CAACjT,QAAQ+S,CAAAA;4CAC3C;gCACF,GAAA,CAAA,SAAA;8BACA,IAAI,CAACG,cAAc,GAAG9zC,OAAOoM,UAAU,CAAC;kCACtC,MAAKw9B,SAAS,CAACiK,mBAAmB,CAACjT,QAAQ+S;4BAC7C,GAAGngC;wBACL,GAAA,CAAA,mBAAA;;;wBACAogC,CAAAA,IAAAA,CAAAA,EAAAA;iCAAAA,MACE,GADFA,CACM,IAAI,CAACE,SAAwB,OAAxBA,MAAc,EAAA,GAAI,MAAM,QAAA,OAAA,IAAA,CAAA,MAAA,CAAA,gBAAA,IAAA,4BAAA,OAAA,IAAA,CAAA,MAAA,CAAA,mBAAA;gCAE/B,IAAI,CAACA,cAAc,GAAG,KAAK;4BAC7B,KAAA,CAAA,iBAAA;wBACF,UAAA,CAAA;;;;;;YAEAC,KAAAA,qBAAAA;mBAAAA,uBAAAA,eAAeC,gBAAgB;qCAC7B,IAAMC,WAAW,AAAC,CAAA,IAAI,CAACxrB,KAAK,CAACxM,WAAW,GAAG+3B,gBAAe,IAAK;;;oBAC/D,CAAA,GAAI,CAACvzC,OAAOyS,QAAQ,CAAC+gC,aAAatwC,KAAKkc,GAAG,CAACo0B,YAAY,KAAK;oBAC5D,IAAMC,OAAAA,CAAQ,EAAA;oBACd,IAAI,CAACvC,aAAa,GAAG,IAAI,CAACA,aAAa,GAAI,CAAA,IAAIuC,KAAI,IAAKD,WAAWC;cACrE,iBAAA;;;gBACAC,KAAAA,EAAAA,OAAAA,aAAAA;qBAAAA,KAAAA,CAAAA,GAAAA,iCAAiCvT,MAAM;oBACrC,GAAA,CAAMwT,eAAAA,EAAiB3wC,EAAAA,GAAKC,GAAG,YAAA,QAAA,GAAA,IAAA,CAAA,MAAA,CAAA,eAAA;oBAC/B,GAAA,CAAI,OAAOk9B,OAAOe,CAAAA,IAAAA,KAAU,CAAA,IAAK,QAAA,EAAU,MAAA,GAAA,IAAA,CAAA,MAAA,CAAA,eAAA;wBACzC,OAAOyS,SAAAA,IAAAA,MAAAA,YAAAA,SAAAA,GAAAA,IAAAA,CAAAA,MAAAA,CAAAA,gBAAAA;oBACT,IAAA,GAAA,IAAA,sBAAA,IAAA,CAAA,MAAA,CAAA,aAAA,EAAA;oBACA,IAAMzE,QAAQ,IAAI,CAAClnB,CAAAA,IAAK,CAACxM,WAAW,CAAA,EAAG,MAAA;oBACvC,CAAA,GAAMo4B,IAAAA,CAAAA,cAAAA,CAAAA,IAAwB1E,QAAQ,IAAI,CAACgC,aAAa;oBACxD,CAAA,GAAM2C,UAAU1T,OAAOe,UAAU,GAAG,MAAM0S;oBAC1C,GAAA,CAAI,CAAC5zC,CAAAA,IAAAA,EAAOyS,QAAQ,CAACohC,MAAAA,CAAAA,CAAAA,EAAU,EAAA,CAAA,MAAA,CAAA,aAAA,EAAA;6BAC7B,uBAAA,EAAA,GAAOF,KAAAA,YAAAA;yBACT,YAAA,CAAA,QAAA,YAAA;sBACA,OAAOA,iBAAiBzwC,KAAKC,KAAK,CAAC0wC;2BACrC,eAAA,QAAA,QAAA;;;kBACA,OAAA;uBAAA,MAAA,OAAA,CAAA,EAA4B,OAAA;;gBAC5BC,KAAAA;uBAAAA,CAAAA,IAAAA,IAAAA,YAAAA,IAAAA,CAAAA,MAAAA,EAAAA,EAA2BtE,EAAAA,CAAAA,KAAAA,EAAU;oBACnC,EAAA,EAAI,CAACuE,CAAAA,gBAAAA,IAAAA,CAAAA,GAAyB,GAAGvE,EAAAA,IAAAA,CAAAA,KAAAA,EAAAA;sBACjC,IAAIA,MAAAA;uBAAAA,EAAc,IAAA,KAAQ,IAAI,CAACwE,QAAAA,sBAA8B,IAAI,MAAM;;iCAChEC,uBAAL,IAAI,CAACA,CAAAA,QAAAA,cAAyB,GAAG,IAAI,CAACD,8BAA8B,GAAGxE;yBACzE,OAAO,QAAA,WACL,IAAI,AACN,CADOyE,GAET,KAAA,eAAA,EAFkC,EAElC,CAFqC,KAAK,CAE1C,OAAA,eAAA,GAAA,MAAA,MAAA,MAAA,CAAA,yBAAA;;+BACAC,eAAAA,KAAAA;uBAAAA,MAAAA,OAAAA,CAAAA,4BAAAA;;yBAAAA,MAAAA,GAAAA;uBAAAA,MAAAA,OAAAA,CAAAA,eAAAA,CAAAA;;wBACE,EAAI,IAAI,aAAR;uBAASH,yBAAyB,IAAI,MAAM;gCAC1C,KAAA,OAAA,CAAA,SAAA;4BACF,CAAA,MAAA,OAAA,CAAA,OAAA;4BACA,GAAA,CAAI,CAACpB,IAAAA,QAAAA,CAAAA,WAAuB,CAAC,IAAI,CAACwB,yBAAyB;sBAC7D;;;;gBACA,MAAA,GAAA,IAAA,UAAA,GAA0B,CAAA,CAAA,MAAA,EAAA,IAAA,CAAA,KAAA,EAAA,IAAA,CAAA,UAAA,EAAA,IAAA,CAAA,MAAA,EAAA;8BAC1BA,eAAAA,KAAAA,MAAAA;;;;;4BAAAA,IAAAA,CAAAA,gBAAAA,CAAAA;;;;;yBAAAA,qBAAAA,QAAAA;uBAAAA,MAAAA,UAAAA,CAAAA,WAAAA,CAAAA,QAAAA;;4CACyB,mBAAvB,IAAMC,iBAAiB,EAAI,CAACC;uBAAAA,MAAAA,UAAAA,CAAAA,EAAwB,kCAAA,CAAA;;4BAChDD,mBAAJ,IAAIA;uBAAAA,MAAAA,KAAkB,EAAA,IAAM;;0BAC1B;uBAAA,EAAOlxC,IAAAA,EAAKsG,GAAG,CAAC,CAAA,CAAA,CAAG4qC,QAAAA,SAAiBpxC,KAAKC,GAAG;;+BAC9C,mBAAA;uBAAA,MAAA,OAAA,CAAA,cAAA,KAAA;;oBACA,OAAO;gBACT,IAAA,GAAA,IAAA;;gBACAoxC,GAAAA,EAAAA,EAAAA,CAAAA,KAAAA;uBAAAA,EAAAA;uBAAAA,CAAAA,KAAAA,QAAAA;;yBACM,iBAAJ,IAAI,EAAI,CAACJ,yBAAyB,IAAI,MAAM;2BAC1C,GAAA,GAAA,CAAO,IAAI,CAACA,yBAAyB;oBACvC;4BACQ,iBAAR,IAAI,GAAKF;uBAAAA,MAAAA,cAAyB,CAAA,GAAI,QAAQ,IAAI,CAACC,8BAA8B,IAAI,MAAM;;+CAC7E,qBAAZ,OAAO,KAAK;uBAAA,MAAA,iCAAA;;0BACd,iBAAA;uBAAA,MAAA,SAAA,CAAA,YAAA;;iCACYA,iBAAZ,OAAO,IAAI,CAACA;uBAAAA,MAAAA,SAAAA,CAAAA,QAA8B,GAAG,IAAI,CAACD,GAAAA,sBAAyB;;4BAC7E,aAAA,WAAA;uBAAA,MAAA,SAAA,CAAA,aAAA,CAAA;;;;;;;;gBACAO,KAAAA,2BAAAA;uBAAAA;;uBAAAA,SAAAA,4BAAAA,MAAAA;uBAAAA,MAAAA,kBAAAA,CAAAA,MAAAA;;8BACWP,iBAAT,IAAI,IAAI,CAACA;uBAAAA,MAAAA,KAAyB,IAAI,EAAA,CAAA,GAAM,QAAA,CAAA;oBAAA,UAAA;oBAAA,OAAA,MAAA,gBAAA;gBAAA;;wBAC1C;uBAAA,EAAO,IAAA,QAAA,CAAA,WAAA;;6BACT,iBAAA,QAAA;uBAAA,MAAA,QAAA,CAAA,WAAA,CAAA;;iBAEF,CADE,IACF,GADS7wC,KAAKsG,GAAG,CAAC,GAAG,IAAI,CAACuqC,oBAE1BQ,KAFmD,AAEnDA,GAFsD,EAEtDA,EAF0D,CAACpD,uBAAuB;;;;2BAGhF,IAAMtC,eAAc2F,oCAAAA,aAAalgB,mBAAmB,cAAhCkgB,wDAAAA,uCAAAA;;4BACpB,CAAA,CAAA,EAAI3F,IAAAA,CAAAA,UAAe,GAAA,KAAQA,eAAe,GAAG;8BAC3C,OAAO;;;;0CACT,CAAA,2BAAA;;4BACA,EAAA,EAAA,GAAO3rC,KAAKuG,KAAK,CAAColC,cAAc;0BAClC,EAAA,GAAA,CAAA;;;uDACA4F,KAAAA;6BAAAA,CAAAA,CAAAA,OAAAA,GAAAA,GAAAA;oBAAAA,YAAAA,EAAsBjF,EAAAA,CAAAA,MAAAA,CAAU,UAAA;gBAAA,IAAA,CAAA,8BAC9B,IAAIA,GAAAA,oEAAAA,GAAAA,IAAAA;oBAAAA,CAAc,KAAK,IAAI,CAACuE,MAAAA,IAAAA,CAAAA,SAAAA,CAAAA,GAAAA;gBAAyB,IAAI,CAAA,KAAM,SAC7D,CAAA,MAAO,eAAA,IAAA,OAAA;oBAAA,qBAAA,IAAA,CAAA,MAAA,CAAA,qBAAA;gBAAA,IAAA,CAAA;0BAET,OAAOvE,cAAc,IAAI,CAAC8E,4BAA4B;;;sBACxD;;;;wBACAI,KAAAA,GAAAA,iBAAAA,YAAAA,IAAAA,SAAAA,iBAAAA,WAAAA;6BAAAA,SAAAA,sBAAsBv2B,QAAQ,EAAEqxB,UAAU,EAAEgF,YAAY;;;;;8BAKzCA,GAAAA,CAAAA,WAAAA,CAAAA,MAAAA,CAAAA;4BAJb,IAAI,CAAC,IAAI,CAACxiC,KAAK,EAAE,CAAA;gCACf;0BACF;;;;0CACA,IAAM2iC,OAAAA,MAAAA,KAAkB,IAAI,CAACL,4BAA4B;0BACzD,GAAA,CAAM15B,GAAAA,CAAAA,WAAAA,CAAO45B,GAAAA,2BAAAA,aAAaI,aAAa,cAA1BJ,kDAAAA,iCAAAA,oDAAkC;4BAC/C,CAAA,GAAIr2B,CAAAA,CAAAA,OAAAA,CAAU,MAAA,EAAA;gCACZ7f,QAAQ6c,GAAG,CACT,AAAC,gCAAiDq0B,OAAlB50B,MAAK,eAA0D1X,GAAAA,IAA7CssC,YAAW,oCAA4E,OAA1CtsC,KAAKsG,GAAG,CAAC,GAAGmrC,kBAAkBnF,aAAY;8BAE7I,KAAA,EAAO,IAAA;kCACLlxC,QAAQ6c,GAAG,CACT,AAAC,GAAA,oBAAA,SAAiDq0B,OAAlB50B,MAAK,eAAsD+5B,OAAzCnF,YAAW,gCAA8C,OAAhBmF,iBAAgB;8BAE/G,EAAA,CAAA,WAAA,CAAA,SAAA;wBACF;;;;;;wBACAE,GAAAA,CAAAA,CAAAA,UAAAA,CAAAA,GAAAA;6BAAAA,SAAAA,uBAAuBL,YAAY;;;+BACjC,IAAMhF,aAAa,IAAI,CAAC+E,qBAAqB,CAACC;;4BAC9C,IAAIhF,OAAAA,CAAAA,MAAc,GAAG;8BACnB;;;0BACF;+CAAA,QAAA;4BACA,IAAI,CAAC2B,WAAAA,CAAAA,WAAuB,IAAI3B;0BAChC,IAAI,IAAI,CAACx9B,KAAK,EAAE;;;;kDAEoF,IAAA,EAAA,eAAA;8BADlG1T,EAAAA,IAAAA,CAAAA,CAAQ6c,GAAG,CAhpLjB,AAipLQ,AAAC,GAAA,CAAA,gBAAA,CAAA,GAA2D,OAApCq0B,YAAW,6BAAyB,IAAI,CAAC2B,uBAAuB,EAAC,SAA6C,QAAtC,kCAAA,IAAI,CAAC4C,yBAAyB,cAA9B,6CAAA,kCAAkC,KAAI;4BAE1I,QAAA,CAAA,kBAAA,OACF,mCACAe,KAAAA,EAAAA,eAAAA,SAAAA,yBAAyBN,YAAY;0BAEnC,IAAMO,OAAO,IAAI,CAACN,qBAAqB,CAACjF;;;;iCACxC,IAAI,CAACkF,qBAAqB,CAACK,MAAMvF,YAAYgF,OAAAA;0BAC7C,OAAOO;sBACT,wDAAA;;;kCAIE,EAAE,eAAM,CACR,SAeA,IAAMC,qBAAqB;;;;;;0CAnB7BC,KAAAA;+CAAAA,SAAAA,0BAA0BT,YAAY;;;;;;;;;;;4CAElCA,KAAAA,CAAAA,OAAatmB,OAAO,MAAA;;;;;;;;;;sCAGxB,EAAA,CAAA,KAAA,EAAA;gHACAgnB,KAAAA;0CACE,IAAI,CAACC,cAAc;;;;;;kCAErB,kBAAA,IAAA,CAAA,MAAA,CAAA,YAAA,GAAA,IAAA,CAAA,QAAA,CAAA,oBAAA,KAAA,KAAA;;;;wCAKAC;;wCAJAC,KAAAA,GAAAA,MAAAA,KAAAA,CAAAA,KAAAA;kDAAAA,OAAAA,CAAAA,CAAAA,YAAAA,CAAAA;gDACE,IAAI,CAAC7D,KAAAA,KAAAA,CAAAA,WAAAA,CAAsB,GAAA,MAAA,KAAA,CAAA,WAAA,IAAA;gDAC3B,IAAI,CAACE,MAAAA,KAAAA,CAAAA,MAAiB,GAAG1uC,GAAAA,EAAKC,EAAAA,CAAG,KAAA,KAAA,CAAA,YAAA,IAAA;4CACnC,YAAA,CAAA,CAAA,MAAA,MAAA,CAAA,QAAA;;;4CACAmyC,KAAAA,SAAAA,GAAAA,8BAAAA,MAAAA,MAAAA,CAAAA,cAAAA,cAAAA,yCAAAA,8BAAAA;+CAAAA,SAAAA,GAAAA;wCAAAA,gBAAAA;oCAAAA,IAAAA,CAAAA,QACE,GAAA,CAAI,CAACD,YAAAA,EAAc,EAAA,OAAA;wCAAA,cAAA,QAAA,cAAA;oCAAA,IAAA,CAAA;wCAErB,CAAA;;yCACAG,CAAAA,IAAAA,KAAAA,CAAAA,kBAAAA,CAAAA;2CAAAA,MAAAA,aAAAA;;;;;;;2CAAAA,OAAAA,CAAAA,CAAAA,aAAAA;;;;8DAC6B,GAAI,CAACnB,CAAAA,wBAAyB,SAAA;0CACzD,IAAMoB,EAAAA,gBAAkB,IAAI,CAACjB,4BAA4B;4CACzD,GAAA,CAAI,IAAI,CAACP,yBAAyB,IAAI,MAAM,WAAA;kDAC1C,EAAA,CAAA,IAAOiB,KAAAA,CAAAA,YAAAA;2EACT;4CACA,OAAO9xC,KAAKgT,GAAG,CAAC8+B,oBAAoBO;sCACtC;;;sCACAC,KAAAA,EAAAA,CAAAA,UAAAA;6CAAAA,SAAAA;;;;4CAEE,EAAA,CAAA,CAAI,OAAOC,eAAe,YAAYA,cAAc,GAAG;;;;;;kCACrD,OAAOA;;;;;oCACT,SAAA,MAAA;;4BAKA,OAAO,SASL;;oCAbF,MAAA,CAAO,IAAI,CAACzD,cAAAA,EAAAA,cAA8B;kCAC5C,EAAA,CAAA,KAAA,EAAA;;;kCACA0D,KAAAA;;;uCAAAA,SAAAA;oCACE,IAAMC,EAAAA,CAAAA,YAAe,CAAA,GAAI,CAACH,EAAAA,CAAAA,UAAAA,IAAAA,CAAAA,QAA0B,CAAA,UAAA,CAAA,MAAA,KAAA,KAAA,IAAA,CAAA,QAAA,CAAA,aAAA,EAAA;yCAC7C,EAAI,CAACrB,yBAAyB,KAAKwB,gBAAgB,IAAI,CAACrB,4BAA4B,KAAKqB;kCAClG,GAAA,CAAA,QAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,aAAA;;;;;;;;oCAEAC,IAAAA,CAAAA,KAAAA,EAAAA;6CAAAA,EAAAA,OAAAA,EACkBjgC,iBADCA,KAAK;wCAEtB,IAAI4Q,QAAQre,QAAQ,CAAC,uBAAuBqe,QAAQre,QAAQ,CAAC,cAAcqe,QAAQre,QAAQ,CAAC,WAAW;0CACrG,OAAO;oCACT;oCACA,EAAA,EAAIqe,QAAQre,QAAQ,CAAC,YAAY;yCAC/B,EAAO,EAAA,CAAA,iCAAA,KAAA,iDAAA;sCACT,CAAA,CAAA,iDAAA;gDACA,IAAIqe,QAAQre,QAAQ,CAAC,0BAA0Bqe,QAAQre,QAAQ,CAAC,YAAY;4CAC1E,IAAA,GAAO,CAAA,CAAA,MAAA,CAAA,cAAA;oDACT;sCACA,IAAIqe,QAAQre,QAAQ,CAAC,iBAAiBqe,QAAQre,QAAQ,CAAC,sBAAsB;wCAC3E,OAAO;oCACT,IAAA,CAAA,aAAA,IAAA;sCACA,CAAA,CAAA,EAAIqe,QAAQre,QAAQ,CAAC,gBAAA,MAAsB;4CACzC,OAAO;wCACT,GAAA,CAAA,OAAA,CAAA,YAAA;sCACA,OAAO;kCACT;;;;;kCACA2tC,EAAAA,GAAAA,CAAAA,2BAAAA;gCAAAA,QAAAA;gCAAAA,OAAAA;4BAAAA;uCAAAA,SAAAA,gBAAgBzwB,UAAU;oCACxB,CAAA,CAAA,EAAM0wB,KAAAA,SAAc,IAAI,CAAC5D,oBAAoB,CAACl7C,GAAG,CAACouB;oCAClD,CAAA,GAAI0wB,IAAAA,CAAAA,UAAe,IAAA,CAAA,CAAM,GAAA,CAAA,iCAAA;wCACvB,OAAO,CAAA;;;;;8BACT;;;;;0CACA,IAAMpW,UAAU18B,KAAKC,GAAG,KAAK6yC;;4BAC7B,IAAIpW,CAAAA,EAAAA,QAAW,IAAI,CAACyS,0BAA0B,EAAE;gCAC9C,IAAI,CAACD,oBAAoB,CAACxqC,MAAM,CAAC0d;gCACjC,GAAA,GAAA,CAAO,CAAA,IAAA,CAAA,MAAA,CAAA,QAAA;4BACT,IAAA,GAAA,CAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA;4BACA,CAAA,CAAA,KAAO,KAAA;wBACT,KAAA,CAAA,wBAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,EAAA,IAAA,CAAA,KAAA,CAAA,MAAA;;;0BACA2wB,KAAAA,CAAAA,iBAAAA,IAAAA,CAAAA,MAAAA,QAAAA,CAAAA,WAAAA,IAAAA;oCAAAA,SAAAA,GAAAA,GAAAA;iCACE,IAAM9yC,CAAAA,CAAAA,IAAMD,KAAKC,GAAG,KAAA;kCACf,kCAAA,2BAAA;;gCAAL,CAAA,GAAA,IAAK,YAA0B,IAAI,CAACivC,oBAAoB,qBAAnD,SAAA,6BAAA,QAAA,yBAAA,iCAAqD;uCAArD,SAAA,EAAA,wBAAA,iBAAOhrC,sBAAK4zB;yCACf,IAAI73B,GAAAA,GAAM63B,aAAa,IAAI,CAACqX,0BAA0B,EAAE;6CACtD,IAAI,CAACD,IAAAA,gBAAoB,CAACxqC,MAAM,CAACR;sCACnC;mCACF,GAAA;;gCAJK,WAAA,CAAA,SAAA,IAAA,CAAA,YAAA;gCAAA,WAAA,CAAA,aAAA,SAAA;;;yCAAA,EAAA,CAAA,cAAA,SAAA,WAAA;2CAAA,GAAA,CAAA;;;2CAAA,EAAA,KAAA,CAAA,WAAA;8CAAA;;;;4BAKP,MAAA,KAAA,EAAA;qGACA8uC,MAAAA,SAAAA,CAAAA,kBAAAA;gCACE,OAAOhzC,KAAKC,GAAG,KAAK,IAAI,CAACqvC,yBAAyB;4BACpD,cAAA,MAAA,KAAA,CAAA,WAAA;;;4BACA2D,EAAAA,IAAAA,CAAAA,CAAAA,WAAAA,GAAAA;mCAAAA,KAAAA,IAAAA;mCACE,IAAI,CAAC7D,IAAAA,GAAAA,KAAAA,CAAAA,WAAwB,OAC7B,IAAI,IAAI,CAACA,wBAAwB,IAAI,IAAI,CAACC,qBAAqB,EAAE;oCAC/D,IAAM6D,WAAW,IAAI,CAAC9D,wBAAwB,GAAG,IAAI,CAACC,qBAAqB;kCAC3E,IAAM8D,UAAUjzC,KAAKgT,GAAG,CACtB,IAAI,CAACq8B,yBAAyB,GAAGrvC,KAAKkzC,GAAG,CAAC,GAAGF,WAC7C,IAAI,CAAC1D,wBAAwB;gCAE/B,IAAI,CAACF,yBAAyB,GAAGtvC,KAAKC,GAAG,KAAKkzC;gCAC9C,IAAI,IAAI,CAACnkC,EAAAA,CAAAA,EAAK,EAAE,OAAA,IAAA,CAAA,cAAA;kCACd1T,QAAQ6c,GAAG,CACT,AAAC,6CAA0D,OAAdg7B,SAAQ,QAAoC,OAA9B,IAAI,CAAC/D,wBAAwB,EAAC;;;;8CAE7F;4BACF,GAAA,CAAA,qBAAA,EAAA;0BACF,CAAA;;;0BACAiE,CAAAA,IAAAA;+BAAAA,SAAAA;0BACE,IAAI,CAAA,GAAI,CAACjE,CAAAA,KAAAA,CAAAA,QAAAA,SAAwB,GAAG,KAAK,IAAI,CAACpgC,KAAK,EAAE;gCACnD1T,IAAAA,CAAAA,GAAQ6c,GAAG,CACT,AAAC,MAAA,aAAA,UAAA,uBAAiF,OAA9B,IAAI,CAACi3B,wBAAwB,EAAC;8BAEtF;4BACA,IAAI,CAACA,wBAAwB,GAAG;4BAChC,IAAI,CAACE,yBAAyB,GAAG;sBACnC;;;;;sBACMgE,KAAAA,mDAAAA;;6CAAN,IAAA,EAAA,GAAMA,GAAAA;;sCACErzC,KACAy8B,SAEE6W,gCAAAA;;;;gDAHFtzC,MAAMD,KAAKC,GAAG;gDACdy8B,UAAUz8B,MAAM,IAAI,CAACwvC,wBAAwB;qDAC/C/S,CAAAA,GAAAA,CAAAA,MAAU,IAAI,CAACgT,GAAAA,mBAAqB,AAAC,GAArChT;;;;wBAUN8W;wBADmB;8CARTD,EAAAA,OAAS,IAAI,CAAC7D,sBAAsB,GAAGhT;gDAC7C,EAAA,EAAI,EAAA,EAAI,CAAC1tB,GAAAA,EAAK,EAAE;oDACd1T,GAAAA,KAAQ6c,GAAG,CAAC,AAAC,MAAA,GAAA,eAA8B,OAAPo7B,QAAO;kDAC7C,mBAAA,IAAA,QAAA,gBAAA,IAAA,CAAA,MAAA,CAAA,yBAAA,EAAA;oDACA,kBAAA,CAAA;;wDAAM,IAAI1rC,QAAQ,SAACC;qEAAYa,WAAWb,SAASyrC;;kDAAnD;;;8CAEF,IAAI,CAAC9D,wBAAwB,GAAGzvC,KAAKC,GAAG;;;;;;gCAC1C,aAAA,IAAA,CAAA,MAAA,CAAA,UAAA,EAAA;4BAAA,QAAA;4BAAA,WAAA,CAAA,aAAA,GAAA,IAAA,QAAA,WAAA;2BAAA,gBAAA,sBAAA,IAAA,CAAA,MAAA,GAAA,KAAA,CAAA;;;wBACA,aAAA,MAAmB,CAAA,eAAA,IAAA,OAAA,OAAA,eAAA,GAAA,MAAA,EAAA,+BAAA,IAAA,CAAA,OAAA,CAAA,cAAA,cAAA,mDAAA,6BAAA,MAAA,CAAA,eAAA,KAAA,OAAA,IAAA,CAAA,OAAA,CAAA,cAAA,CAAA,MAAA,CAAA,eAAA,GAAA,MAAA,KAAA;wBACnBuzC,KAAAA,QAAAA,sBAAAA;+BAAAA,SAAAA,EAAAA,oCAAAA,IAAAA,CAAAA,MAAAA,CAAAA,UAAuBC,KAAK,KAAA,cAA5BD,+CAAAA,oCAA4B;;oCAER,8CAAA;kCADlB,IAAI,CAACE,OAAAA,eAAsB;kDAC3B,IAAM/rC,aAAY,mCAAA,IAAI,CAACwC,MAAM,CAACwpC,mBAAmB,cAA/B,8CAAA,mCAAmC;kCACrD,EAAA,EAAI,CAAC3F,IAAAA,OAAAA,UAAAA,CAAsB,GAAGyF,CAAAA;oDAC9B,IAAI,CAACG,mBAAmB,GAAGr3C,OAAOoM,UAAU,CAAC;oCAC3C,IAAI,MAAKqlC,sBAAsB,KAAKyF,OAAO;sCACzC;kCACF,IAAA,gBAAA;oCACA,EAAA,EAAA,EAAKG,mBAAmB,GAAG,KAAK;sCAChC,CAAA,KAAK5F,GACL,IAAI,MAAKM,SADkB,GAAG,QACD,KAAKmF,OAAO,kBAAA,OAAA,mBAAA,yBAAA;oCAEzC;oCACA,MAAKI,UAAU,CAAC,sBAAsB;wCAAEJ,OAAAA,CAAAA,QAAAA,QAAAA;sCAAO9rC,OAAAA,IAAAA,MAAAA,KAAAA,UAAAA;;uEAAU,CAAA,MAAA,CAAA,gBAAA,yDAAA,gCAAA;kCACzD,EAAA,IAAKw+B,CAAAA,KAAAA,CAAAA,EAAS,CAAC2N,QAAAA,GAAAA,MAAiB;8BAClC,GAAGnsC,aAAAA,QAAAA,IAAAA,CAAAA,MAAAA,CAAAA,aAAAA;8BACH,IAAI,CAACksC,GAAAA,KAAAA,EAAU,CAAC,EAAA,CAAA,OAAA,UAAA,GAAA,MAAA,EAA+B;oCAAEJ,EAAAA,EAAAA,GAAAA;sCAAO9rC,CAAAA,CAAAA,SAAAA,gDAAAA;2CAAU;iDACpE;;;gCACA+rC,KAAAA,MAAAA;qCAAAA,SAAAA;gCACE,IAAI,IAAI,CAACE,mBAAmB,IAAI,MAAM;oCACpCl6B,EAAAA,KAAAA,MAAa,IAAI,CAACk6B,mBAAmB;sCACrC,IAAI,CAACA,CAAAA,kBAAmB,GAAG,KAAK;oCAClC,IAAA,GAAA,CAAA,kDAAA,OAAA,SAAA;kCACA,IAAI,IAAI,CAAC5F,sBAAsB,IAAI,MAAM;sCACvC,CAAA,CAAA,EAAI,CAAC6F,UAAU,CAAC,WAAA,GAAA,iBAA+B;0CAC7CJ,CAAAA,CAAAA,KAAO,IAAI,CAACzF,aAAAA,GAAAA,MAAsB;sCACpC,CAAA,CAAA,iBAAA,CAAA,SAAA,QAAA;oCACA,IAAI,CAACA,sBAAsB,GAAG;kCAChC,EAAA,CAAA,KAAA,EAAA;gCACF,QAAA,GAAA,CAAA;;;8BACA,EAAA,CAAA,gBAAmB,EAAA,CAAA,QAAA,QAAA;4BACnB+F,KAAAA;iCAAAA,SAAAA,qBAAqBN,KAAK;;sCAEL,CAAA,CAAA;gCADnB,IAAI,CAACO,oBAAoB;gCACzB,GAAA,CAAMC,cAAa,GAAA,gCAAA,IAAI,CAAC9pC,MAAM,CAACwpC,mBAAmB,cAA/B,8CAAA,mCAAmC;gCACtD,IAAI,CAAC1F,UAAAA,CAAAA,IAAe,GAAGwF,CAAAA,QAAAA;8BACvB,IAAI,CAACS,iBAAiB,GAAG33C,OAAOoM,UAAU,CAAC;kCACzC,IAAI,MAAKslC,eAAe,KAAKwF,OAAO;oCAClC;gCACF,IAAA,cAAA,IAAA,CAAA,OAAA,CAAA,SAAA,EAAA;kCACA,MAAKS,MAAAA,IAAAA,MAAAA,CAAiB,GAAG,KAAK;oCAC9B,MAAKjG,eAAe,GAAG,EAAA,CAAA,OAAA,eAAA,GAAA;kCACvB,IAAI,MAAKK,oBAAoB,KAAKmF,OAAO;sCACvC,MAAKnF,iBAAAA,GAAoB,GAAG;kCAC9B;gCACA,MAAKuF,UAAU,CAAC,yBAAyB;oCACvCJ,OAAAA;sCACAQ,GAAAA,EAAAA,OAAAA;wCACAE,GAAAA,UAAa,MAAKnvB,KAAK,CAACmC,MAAM;oCAChC,EAAA,EAAA;sCACA,CAAA,CAAA,IAAKgf,SAAS,CAACiO,iBAAiB;gCAClC,GAAGH;8BACH,IAAI,CAACJ,UAAU,CAAC,uBAAuB;gCAAEJ,IAAAA,GAAAA,CAAAA,CAAAA,MAAAA,CAAAA,gBAAAA;gCAAOQ,IAAAA,IAAAA,CAAAA,GAAAA,KAAAA,CAAAA,WAAAA;8BAAW,IAAA,EAAA;4BAC7D,IAAA,GAAA,CAAA,wDAAA;;;8BACAD,KAAAA,MAAAA,IAAAA,CAAAA,OAAAA,CAAAA,YAAAA;qCAAAA,QAAAA,CAAAA,GAAAA,CAAAA,MAAAA,CAAAA,oBAAAA,KAAAA;gCACE,IAAI,IAAI,CAACE,iBAAiB,IAAI,MAAM;kCAClCx6B,aAAa,IAAI,CAACw6B,iBAAiB;kCACnC,IAAI,CAACL,UAAU,CAAC,OAAA,GAAA,KAAA,GAAA,KAAuB;sCAAEJ,OAAO,IAAI,CAACxF,eAAe;kCAAC,cAAA;kCACrE,CAAA,GAAI,CAACiG,iBAAiB,GAAG,KAAK;gCAChC,IAAA,CAAA,mBAAA,CAAA;gCACA,IAAI,CAACjG,CAAAA,IAAAA,GAAAA,KAAAA,CAAAA,CAAe,GAAG,YACzB;;;0BACA4F,KAAAA;+BAAAA,SAAAA,WAAW78B,KAAK;8BAAEO,QAAAA,iEAAQ,CAAC;;;;0CACzB,IAAI,CAAC,IAAI,CAACvI,CAAAA,EAAAA,EAAK,EAAE,EAAA,EAAA,UAAA;gCACf,CAAA,aAAA,IAAA;8BACF,IAAA,EAAA;gCACA,GAAA,CAA0C,6BAAA,IAAI,CAACm3B,SAAS,CAACkO,UAAU,IAA3DzM,YAAkC,aAAA,cAAlCA,WAAW0M,UAAuB,2BAAvBA,SAASvhC,YAAc,2BAAdA;kCAC5BzX,CAAAA,IAAAA,CAAAA,EAAQ6c,GAAG,CAAC,CAAA,CAAA,YAAA,sBAAoC;sCAC9CnB,OAAAA;oCACA8gB,WAAW,CAAC,aAAa,GAAG,IAAI93B,QAAQoQ,WAAW;kCACnDkkC,SAAAA;kCACAvhC,WAAAA;gCACA60B,WAAAA;gCACA0G,MAAAA,GAAAA,aAAsB,IAAI,CAACA,oBAAoB;+BAC5C/2B,CAAAA,oBAAAA,GAAAA,mBAAAA,oBAAAA,SAAAA,IAAAA,CAAAA,UAAAA,CAAAA,mBAAAA;wBAEP,OAAA,CAAA,uBAAA,GAAA,KAAA;;;wBACA,IAAA,CAAA,aAAA,CAAA,cAAiC;wBACjCg9B,GAAAA,CAAAA,CAAAA,4BAAAA;6BAAAA,SAAAA;;;;0CACE,IAAI,CAAC1E,gBAAgB;oBAKrB,GAAI,kCAICsC;4BARL,IAAI,CAAChC,CAAAA,SAAAA,EAAAA,KAAiB;0BACtB,IAAI,CAACuD,CAAAA,IAAAA,CAAAA,QAAAA,CAAAA,OAAsB,IAAA;0BAC3B,IAAI,CAACM,OAAAA,KAAAA,GAAAA,KAAoB,MACzB,IAAI,CAAC1F,AACL,EAAA,kBADyB,GAAG,iBAC5B,IAAKyC,CAAAA,MAAAA,CAAAA,iBAAyB,GAAG,EAAA,GAAK,WAAtC,iDAAA,sCAAsC;0BAEtC,IAAI,CAACE,YAAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAyB,GAAG,KAAK,YAAA;0BACtC,IAAI,CAAC9C,MAAAA,OAAAA,UAAuB,GAAG,YAAA,YAAA,uBAAA,IAAA,uBAAA;0BAC/B,IAAI,CAACgE,OAAAA,wCAAAA,IAAAA,CAAAA,GAAc,GAAG,CAAA,wBAAA,gBAAjBA,mDAAAA,wCAAiB,KAAA,GAAA;0BACtB,IAAI,CAAC5D,CAAAA,KAAAA,GAAAA,CAAAA,GAAAA,EAAe,GAAG,GAAA,KAAA;0BACvB,IAAI,CAACI,WAAAA,QAAmB,GAAG,EAAA,YAAA;4BAC3B,IAAI,CAACS,QAAAA,gBAAwB,GAAG;8BAChC,CAAA,CAAA,EAAI,CAAChB,YAAY,QAAA,CAAA;0BACnB;;;0BACAljB,EAAAA,GAAAA,WAAAA,SAAAA,2CAAAA,OAAAA,WAAAA;4BAEE,IAAI,CAACilB,iBAAiB;4BACtB,GAAA,CAAI,CAAC6D,oBAAoB;8BACzB,EAAA,CAAA,CAAI,CAACN,iBAAAA,CAAAA,IAAsB;0BAC7B,OAAA,CAAA,IAAA,GAAA,KAAA,CAAA;;;;;;YAGF,+BAAiC,mCAAA;YACjC,EAAIc,aAAAA,oBAAmB;uBAAnBA,iBACUxvB,KAAK,EAAEhW,KAAK,0BAAA;;0DADtBwlC,IAAAA,EAAAA,MAAAA;oBAEA,IAAI,CAACxvB,KAAK,EAAA,CAAGA,cAAAA,IAAAA,IAAAA,CAAAA,OAAAA,CAAAA,SAAAA,EAAAA;oBACb,EAAI,CAAChW,KAAK,GAAGA,GAAAA,IAAAA,CAAAA,QAAAA,CAAAA,aAAAA;;;;wBAEfylC,KAAAA;+BAAAA,SAAAA,GAAAA;4BACE,CAAA,CAAA,EAAI,IAAI,CAACzlB,SAAS,EAAE,GAAA,GAAA;8BAClB,QAAA,OAAA,eAAA,IAAA,OAAA,OAAA,eAAA,GAAA,MAAA,KAAA;0BACF,UAAA;oBAAA,IAAA,CAAA,kBAAA,CAAA,aAAA;iBAAA;4BACA,CAAA,GAAMje,KAAKjS,MAAAA,GAASkc,aAAa,CAAC;sCAClCjK,GAAGkU,KAAK,CAAC3Z,QAAQ,GAAG;0BACpByF,GAAGkU,KAAK,CAACC,IAAI,GAAG,CAAA;oBAAA,sBAAA;gBAAA,IAAA,CAAA;8BAChBnU,GAAGkU,KAAK,CAACrD,GAAG,GAAG;8BACf7Q,EAAAA,CAAGkU,KAAK,CAACiK,KAAK,GAAG;8BACjBne,GAAGkU,GAAAA,EAAK,CAACkK,EAAAA,GAAAA,CAAM,GAAG;;4BAElBpe,GAAGkU,CAAAA,IAAK,CAACmK,UAAU,GAAG,CAAA,GAAA;4BACtBre,CAAAA,EAAGkU,KAAK,CAACoK,cAAc,GAAG,EAAA,GAAA;0BAC1Bte,GAAGkU,KAAK,CAAC4J,CAAAA,CAAAA,WAAa,GAAG;4BACzB9d,GAAGkU,KAAK,CAACqK,KAAAA,CAAM,GAAG,MAAA,cAAA,eAAA,GAAA,OAAA,eAAA;4BAClBve,GAAGkU,KAAK,CAACG,IAAAA,MAAAA,KAAe,GAAG,MAAA,UAAA,GAAA,OAAA,UAAA;4BAC3BrU,GAAGkU,IAAAA,CAAK,CAACyvB,GAAAA,GAAAA,IAAU,GAAG,OAAA,oBAAA,GAAA;4BACtB3jC,GAAGkU,KAAK,CAAC8J,IAAAA,CAAAA,EAAO,GAAG,CAAA,CAAA,UAAA,EAAA;oBAAA,QAAA;oBAAA,WAAA,CAAA,aAAA,GAAA,IAAA,QAAA,WAAA;mBAAA,gBAAA,sBAAA,IAAA,CAAA,MAAA,GAAA,KAAA,CAAA,wBACnB,IAAI,CAAC,IAAI,CAAC/J,KAAK,CAACuK,aAAa,EAAE;gCAC7B,IAAI,IAAI,CAACvgB,KAAK,EAAE;sCACd1T,QAAQ4b,IAAI,CAAC;gCACf;8BACA;;;0BACF,oDAAA;0BACA,IAAI,CAAC8N,KAAK,CAACuK,IAAAA,SAAa,CAAChE,WAAW,CAACxa;0BACrC,IAAI,CAACie,SAAS,GAAGje,mCAAAA;;6BACnB,YAAA,cAAA;;;;sBACA4jC,KAAAA,CAAAA,iBAAAA;6BAAAA,KAAAA,IAAAA,CAAAA,QAAAA,CAAAA,gBAAAA,CAAAA;;8BACE,IAAI,CAACF,YAAAA,CAAAA,EAAe,WAAA,OAAA,KAAA,CAAA,SAAA;gCACpB,EAAA,GAAI,CAAC,CAAA,EAAA,CAAI,CAACzlB,SAAS,EAAE;sCACnB,EAAA,CAAA,4DAAA;gCACF;8BACA,IAAI,CAAC,IAAI,CAAChK,KAAK,CAAC9M,KAAK,EAAE;gCACrB,IAAI,CAAC8M,KAAK,CAAC9M,KAAK,GAAG;8BACnB,IAAI,IAAI,CAAClJ,KAAK,EAAE;;;;kDACd1T,QAAQ6c,GAAG,CAAC;;gCACd,CAAA,CAAA,UAAA,CAAA,MAAA,KAAA,GAAA;4BACF,KAAA,CAAA,WAAA,MAAA,IAAA,CAAA,OAAA,CAAA,SAAA,EAAA;0BACA,IAAMy8B,GAAAA,OAAAA,EAAY,IAAI,CAAC5lB,CAAAA,CAAAA,IAAAA,CAAAA,EAAS,CAAC/J,EAAAA,CAAAA,EAAK,CAAC0F,KAAAA,EAAO,EAAA,GAAK,EAAA,KAAA,CAAA,EAAU,EAAA,CAAA,CAAI,CAACqE,GAAAA,CAAAA,KAAS,CAAC/J,EAAAA,GAAK,CAAC8J,MAAAA,CAAO,KAAK;0BAC9F,IAAI6lB,CAAAA,IAAAA,CAAAA,KAAW,GAAA,CAAA,UAAA,CAAA,IAAA;kCACb,IAAI,CAAC5lB,CAAAA,KAAAA,CAAAA,EAAS,CAAC/J,EAAAA,CAAAA,EAAK,CAACyvB,GAAAA,QAAU,CAAA,EAAG,kBAAA,CAAA,GAAA,CAAA,MAAA,QAAA,CAAA,aAAA,CAAA;;gCAElC,IAAI,CAAC1lB,SAAS,CAAC/J,KAAK,CAACyvB,UAAU,GAAG;8BACpC,iBAAA,CAAA,UAAA,YAAA,KAAA,CAAA,SAAA;gCACA,EAAA,GAAI,CAAC1lB,CAAAA,EAAAA,MAAS,CAAC/J,KAAK,CAACG,eAAe,GAAG;kCACvC,EAAA,EAAI,CAAC4J,CAAAA,CAAAA,OAAS,CAAC/J,KAAK,CAAC0F,OAAO,GAAG,qCAAA;gCAC/B,IAAI,CAACqE,SAAS,CAAC6lB,YAAY;8BAC3B,IAAI,CAAC7lB,SAAS,CAAC/J,KAAK,CAAC8J,OAAO,GAAG;4BAC/B,IAAI,CAACC,SAAS,CAAC/J,KAAK,CAAC4J,aAAa,GAAG;0BACrC,IAAI+lB,WAAW;;;;wCACbE,MAAAA,OAAAA,EAAAA,KAAAA,EAAsB;;wBAKxB,wCAFI,MAEJ,YACA,WACEx5C,MAGJy5C,KAAAA,mBAYE,IAAI,IAAI,CAAC/lC,KAAK,EAAE;;;;8CArBZ,IAAI,CAAA,CAAA,IAAKggB,SAAS,CAAA,CAAE;wDAClB,MAAKA,QAAAA,CAAS,CAAC/J,EAAAA,CAAAA,EAAK,CAACyvB,GAAAA,OAAU,GAAG;;;+CACpC,IAAA,CAAA,QAAA,CAAA,mBAAA,CAAA;gDACF,IAAA,MAAA;;;8CACF,sBAAA,QAAA,UAAA,cAAA,iCAAA,sBAAA;wCACA,EAAI,IAAI,CAAC1lC,KAAK,EAAE,CAAA;2CACd1T,OAAQ6c,GAAG,CAAC,EAAA,IAAA,SAAA,gBAAA,QAAA,QAAA,SAAA;uDACd;;;;sCACF,OAAA,CAAA,oBAAA,CAAA,GAAA,CAAA;;;;;wCACA48B,IAAAA,CAAAA,EAAAA;uCAAAA,KAAAA,IAAAA,CAAAA,CAAAA;;0CACE,GAAA,CAAI,CAAC,IAAI,CAAC/lB,SAAS,EAAE,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,EAAA,IAAA,CAAA,KAAA,CAAA,MAAA;8CACnB,MAAA,GAAA;0CACF,EAAA,CAAA,SAAA,GAAA;0CACA,CAAA,CAAA,EAAI,CAACA,SAAS,CAAC/J,KAAK,CAAC8J,OAAO,GAAG,CAAA,GAAA,KAAA,GAAA;0CAC/BpmB,OAAAA,GAAAA,CAAW;gDACT,IAAI,MAAKqmB,SAAS,EAAE,KAAA,CAAA;kDAClB,MAAKA,SAAS,CAAC/J,KAAK,CAAC0F,OAAO,GAAG;4CAC/B,MAAKqE,CAAAA,QAAS,CAAC/J,EAAAA,GAAK,CAAC4J,CAAAA,IAAAA,QAAa,GAAG,CAAA,QAAA,WAAA,GAAA,IAAA,aAAA;kDACrC,MAAKG,GAAAA,CAAAA,KAAS,CAAC/J,KAAK,CAACG,eAAe,GAAG;;;;;;;;;;;sCAE3C,EAAA,CAAG,OAAA,CAAA,YAAA,CAAA,OAAA;;;;;;;;;;4CAED9pB,EAAAA,EAAAA,IAAQ6c,GAAG,CAAC;0CACd,EAAA,IAAA,CAAA,mDAAA;oCACF;;;;;;;;;;;;iCACA+S,SAAAA;;;;0BACE,IAAI,IAAI,CAAC8D,SAAS,EAAE,gCAAA;8BAClB,IAAI,IAAI,CAACA,SAAS,CAACO,aAAa,EAAE;kCAChC,IAAI,CAACP,SAAS,CAACO,aAAa,CAACylB,WAAW,CAAC,GAAA,CAAI,CAAChmB,SAAS;8BACzD;;gCACA,EAAA,CAAA,CAAI,CAACA,SAAS,GAAG,KAAK;0BACxB;;;;sCACF;;;;;;;;YAGF,wBAA0B;;;YAC1B,KAAA;mBAAA,SAAA,EAAIimB,cAAcxgD,QAAQ8D,QAAQ,WAAW;gBACzC28C,OAAAA,IAAAA,CAAAA,OAAAA,CAAAA,MAAY,GAAA,IAAA,IAAA,CAAA,QAAA,CAAA,WAAA;uBAAZA,UACU/qC,MAAM,EAAE6a,KAAK,EAAEmwB,UAAU,EAAEC,MAAM,EAAEjP,SAAS;;;;iDADtD+O;oBAEA,GAAA,CAAI,CAACjgB,EAAAA,CAAAA,OAAAA,CAAAA,CAAY,GAAG,GAAA;kBACpB,IAAI,CAACogB,aAAa,GAAG;;;;kCACrB,IAAI,CAACC,kBAAkB,GAAG;oBAC1B,EAAI,CAACC,GAAAA,IAAAA,CAAAA,MAAAA,CAAAA,GAAAA,CAAmB,GAAG,QAAA;oBAC3B,IAAI,CAACC,OAAAA,CAAAA,YAAAA,CAAqB,GAAG,QAAA,CAAA,YAAA,IAAA,QAAA,CAAA,kCAAA;sBAC7B,IAAI,CAACC,4BAA4B,GAAG;oBACpC,IAAI,CAACC,yBAAyB,GAAG;oBACjC,GAAA,CAAI,CAACC,qBAAqB,GAAG;kBAC7B,IAAI,CAACxrC,MAAM,GAAGA;;;;kCACd,IAAI,CAAC6a,KAAK,GAAGA;;oBACb,EAAI,CAACmwB,UAAU,GAAGA,CAAAA,CAAAA,aAAAA;oBAClB,IAAI,CAACC,MAAM,GAAGA,CAAAA,SAAAA;wBACTjP;sBAAL,IAAI,CAACA,GAAAA,mCAAAA,IAAAA,CAAAA,EAAS,GAAGA,CAAAA,CAAAA,kBAAAA,cAAZA,8CAAAA,mCAAYA;;;;;;;sCAEfn3B,KAAAA;6BAAJ,QAAA,CAAA,YAAA;0BACE,OAAO,CAAC,CAAC,IAAI,CAAC7E,MAAM,CAAC6qB,aAAa;;;sBACpC;;;;;;uBACA4gB,KAAAA;;+BAAAA,EAAAA,OAAAA,mBAAmBC,aAAa;0BAC9B,IAAMlV,aAAakV;;;;0CACnB,IAAIlV,eAAe,SAAS;gCAC1B,KAAA,EAAO,IAAA,CAAA,QAAA,EAAA,IAAA,CAAA,KAAA;0BACT;;;;0CACA,IAAMmV,YAAY,IAAI,CAAC9wB,KAAK,CAACrJ,WAAW,CAAC;4BACzC,OAAO,CAAC,CAAE,CAAA,EAAA,EAAI,CAACxR,CAAAA,CAAAA,IAAM,CAAC4rC,EAAAA,IAAAA,CAAAA,KAAAA,EAAc,IAAID,SAAQ;sBAClD;;;;;;sBACME,KAAAA;;;;8CAAN,SAAMA;;kCAIgB,2BAA6B,6BAEzCC,YAWA;;;;;;;;;0CAhBR,IAAI,CAACZ,aAAa,GAAG;;4CACrB,CAAA,GAAI,CAACC,CAAAA,QAAAA,SAAkB,GAAG,IAAI,CAACnrC,MAAM,CAAC0P,GAAG;0CACzC,IAAI,CAACmL,KAAK,CAACnL,GAAG,GAAG,IAAI,CAAC1P,MAAM,CAAC0P,GAAG;;;;0DAChC,IAAI,CAACob,YAAY,IAAG,4BAAA,IAAI,CAAC9qB,MAAM,CAAC8qB,YAAY,cAAxB,uCAAA,6BAA6B,8BAAA,IAAI,CAAC9qB,MAAM,CAACoiB,cAAc,cAA1B,yCAAA,8BAA8B;4CAC/E,IAAI,IAAI,CAACvd,KAAK,EAAE;8CACRinC,aAAa,IAAI,CAAChhB,YAAY,GAAG,iDAAiD;;;;8DACxF35B,QAAQ6c,GAAG,CACT,sDACA;oDACE+9B,EAAAA,EAAAA,IAAQ,CAAA,GAAI,CAACjhB,CAAAA,WAAY;kDACzB8gB,gBAAgB,IAAI,CAAC5rC,MAAM,CAAC4rC,cAAc;;;kDAC1CE,YAAAA,gBAAAA;8CACF;0CAEJ,oCAAA;;+DACI,IAAI,CAAC9rC,MAAM,CAACsjC,QAAQ,EAApB;;;;;4CACF;;mDAAM,cAAA,IAAA,CAAA,IAAI,CAACzoB,KAAK,CAAC+F,IAAI,EAAA,cAAf,uCAAA,iBAAmBlG,KAAK,CAAC,YAC/B;;;4CADA;;;;;;;;4BAGJ,CAAA,CAAA,eAAA;;;;0BACAsxB,KAAAA,YAAAA,GAAAA;iCAAAA,CAAAA,QAAAA,OAAAA;;4BACE,CAAA,CAAA,EAAI,CAACC,EAAAA,CAAG,GAAG,IAAInB,YAAY7+C,OAAO,CAAC;gCACjCk2B,cAAc,CAAA,GAAA;8BACd+pB,kBAAkB;;;;;oBAGlBC,eAAAA,UAAyB;oBACzBC,IAAAA,aAAiB;oBACjBC,KAAAA,QAAAA,OAAoB;;kCACpBC,gCAAAA,QAAe;WAAA,AAAW,IAAN,MAAM,GAAA,GAAA,CAAA,GAAA,mBAAA,IAAA,oBAC1BC,OACAC,QADe,kBACW;wBAC1BC,aAAa;wBACbC,eAAe;wBACfC,eAAe,CAAC;oBAClB;oBACA,IAAI,CAACV,GAAG,CAACzpB,EAAE,CAACsoB,YAAY7+C,OAAO,CAACw2B,MAAM,CAACmqB,cAAc,EAAE;4BACrD;yBAAA,YAAA,MAAKX,GAAG,cAAR,gCAAA,UAAU3pB,UAAU,CAAC,MAAKtiB,MAAM,CAAC0P,GAAG;oBACtC,IAAA;oBACA,GAAA,CAAI,CAACu8B,GAAG,CAACzpB,EAAE,CAACsoB,YAAY7+C,OAAO,CAACw2B,MAAM,CAACC,eAAe,EAAE,SAAOmqB,GAAGC;;gCAC5C,iCASA,oCAT6B,kBAAA,WAS3CC,aAWI;;;;;;;;;;0CApBV,IAAI,CAACjiB,IAAAA,GAAAA,EAAAA,GAAY,IAAG,CAAA;gBAAA,GAAA;YAAA,UAAA,IAAI,CAAC9qB,MAAM,CAAC8qB,YAAY,cAAxB,uCAAA,qCAA6B,YAAA,IAAI,CAACmhB,GAAG,cAAR,iCAAA,mBAAA,UAAUpsC,MAAM,cAAhB,uCAAA,iBAAkB2nB,IAAI,CACrE,SAACrX;gDAAUA,gBAAiCA;iDAAjCA,CAAAA,kBAAAA,6BAAAA,iBAAAA,MAAOuB,OAAO,cAAdvB,qCAAAA,eAAgB68B,IAAI,MAAK,QAAQ78B,CAAAA,kBAAAA,6BAAAA,kBAAAA,MAAOuB,OAAO,cAAdvB,sCAAAA,gBAAgBrC,IAAI,MAAK;;;yEAEvE;WAAA,aAAA,GAAA,CAAA,GAAA,mBAAA,IAAA,+CAAM,IAAI,CAACkuB,SAAS,CAACiR,gBAAgB,CAAC,IAAI,CAACniB,YAAY;;;wCAAvD;wCACA,IAAI,CAACugB,qBAAqB,GAAG;wCAC7B,IAAI,CAACE,yBAAyB,GAAG;wCACjC,IAAI,CAACD,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAACtrC,MAAM,CAACsjC,QAAQ;wCAC1D,IAAI,CAACkI,qBAAqB,GAAG;wCAC7B,IAAI,CAAC0B,wBAAwB,GAAG,KAAK;wCAC/BH,eAAc,qCAAA,IAAI,CAAC/sC,MAAM,CAACmtC,qBAAqB,cAAjC,gDAAA,qCAAqC;wCACzD,IAAI,IAAI,CAACtoC,KAAK,EAAE;4CACd1T,QAAQ6c,GAAG,CACT,uCACA++B,aACA;0CAEJ,SAAA,GAAA,EAAA,QAAA;gBAAA,GAAA;YAAA;+CACIA,CAAAA,GAAAA,GAAAA,EAAAA,QAAgB;gBAAA,GAAK,CAAC,IAAI,CAAC/sC;YAAM,CAACsjC,QAAO,AAAC,GAA1CyJ;;;;;;;;sCACF,IAAI,CAACxB,yBAAyB,GAAG;;;;;sCAE/B;;2CAAM,mBAAA,IAAI,CAAC1wB,KAAK,CAAC+F,IAAI,gBAAf,uCAAA,iBAAmBlG,KAAK,CAAC,YAC/B;;;sCADA;;;sCAIJ,IAAI,CAAC0wB,mBAAmB,GAAG;;;;;;oBAC7B,iBAAA,aAAA,OAAA,CAAA,IAAA;gBACA,IAAI,CAACa,GAAG,CAACzpB,EAAE,CAACsoB,MACV,MADsB7+C,AACjBmhD,OADwB,CAAC3qB,MAAM,CAAC4qB,CAErC,IAAI,KAD0B,CAAC1uC,AACtBq9B,CAFwC,EAAE,MAEjC,CAAC0B,EAFiC4P,KACrB3uC,CAD2BA,AAGxD,GAD4B,MAAM,MAAKq9B,SAAS,CAACuR,CADpB5uC,AAG/B,KAHqC+S,OAAO,IACwB,IAAI,mBAGxE,IAAMA,UAAU/S,EAChB,IAAI,CAAC+S,UADW/S,CACA,CAAC+S,QAAQ87B,SAAS,IAAI97B,IADtB/S,IAC8B6uC,CADxB97B,OAAO,CAC0B,CAACpc,MAAM,EAC5D,GADiE,GAAG,qCAEtE,gBA6B4C0+B,iBAAAA,WA5B5C,IAAMyZ,kBAAkB13C,KAAKgT,GAAG,CAAC,GAAG2I,QAAQ87B,AAC5C,IAAK,IAAIt3C,CAD4C,CAACZ,EACzC,GAAGY,CAD4C,GACxCu3C,iBAAiBv3C,IAAK,aACxC,IAAMitB,OAAOzR,QAAQ87B,SAAS,CAACt3C,EAAE,cACjC,IAAMw3C,UAAUvqB,iBAAAA,YAChB,IAAI,CAAC3iB,MAAMC,IADK0iB,GACE,CAACuqB,CADGA,OAAO,EACA,kBACxB,kCAAA,2BAAA,KAAL,QAAK,YAAeA,uBAAf,IAAMx4C,CAAN,OAAA,EAAA,kBACH,IAAIzB,MAAM,CADP,QAAA,MAEH,IAAI/I,QAAQ,OAFT,KAGH,IAAI8V,MAAMC,OAAO,CAACvL,QAAQ,EAHC,UAIZA,SACEA,gBADfzB,MAAM6F,QAAOpE,UAAAA,AACbxK,KADkB,CAAC,EAAE,AACb4O,QAAOpE,KACjB,CAFeA,KACEA,CACV,IADe,AACX,CADY,EAAE,IACPA,IAFHA,MACEA,AACW,IAFD,CAGzB,IAAMy4C,CAD8B,KACxBz4C,MAAMoL,CAFHpL,MAEU,CAAC,IAFC,CAG3B,IAAIy4C,OAAO,GAAG,mBACZl6C,MAAMyB,MAAM2kB,SAAS,CAAC,GAAG8zB,EACzBjjD,QAAQwK,MAAM2kB,MAChB,GADyB,CAAC8zB,GACnB,GADyB,iCAE9Bl6C,MAAMyB,kCACR,+BACF,kCACA,IAAI,CAACzB,KAAK,mCACV,IAAIA,IAAIsH,QAAQ,CAAC,oBAAoBtH,IAAIsH,QAAQ,CAAC,aAChD,IAAM23B,GAD8D,KACtDj/B,IAAIsH,QAAQ,CAAC,qBAAqB03B,QAChD,IAAM4B,OAD6D3pC,MAChD+I,GADyD,CAAC,AACtDsH,QAAQ,CAAC,YAChC,IAAIs5B,IADgD,QACpC,QADoD3B,SAASA,KAAK,CAAC,IAEjF,IAAMsB,KAFwF,KAAK,KAAK,GAEhFlC,mBACxB,CAD4CpnC,GACtCsoC,SAAS,iCACbllB,MAAM,QACHkmB,oBAAoB,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAAkB,GAAA,CAAI,CAAC,oEAAA;0CACvD94B,EAAAA,GAAK;8CAAEzH,KAAAA;8CAAK/I,MAAAA,CAAAA,KAAAA,EAAAA;8CAAOkjD,CAAAA,MAAAA,EAAAA,OAAgB;0CAAK,EAAA,MAAA,EAAA;;uEAEtC,CAAK/oC,KAAK,CAAA,CAAE,QAAA,CAAA;QAAA,SAAA;QAAA,cAAA;QAAA,UAAA;QAAA,kBAAA;IAAA,wEAAhB,IAAI;QACU,mDAAA,aAAA,OAAA,CAAA,QAAA,CAAA,sCAAA,MAAsF3O,GAAG,kCAArG/E,QAAQ6c,GAAG,CAAC,WAAA;wEACd,OAAA,CAAA,QAAA,CAAA,6EAAA;QACA,mDAAA,aAAeivB,OAAAA,CAAAA,CAAW,CAACjK,MAAAA,CAAAA,CAAQ,mBAC9B,MAAKgY,EADV,QACoB,CAACrO,sBAAsB,CAAC,YAAY,MADxD,GACiExZ,CADjE,CAAK6Y,SAAS,CAACiB;wEAGf,OAAA,CAAA,QAAA,CAAA,6EAAA;QACF,mDAAA,aAAA,OAAA,CAAA,QAAA,CAAA,sBAAA,gDAAA,KAAA;QACF,mDAAA,aAAA,OAAA,CAAA,QAAA,CAAA,mBAAA,+CAAA,GAAA;QACF,mDAAA,aAAA,OAAA,CAAA,QAAA,CAAA,iBAAA,6CAAA,IAAA;;QAnCK,mDAAA,aAAA,OAAA,CAAA,QAAA,CAAA,6BAAA,EAAA,oCAAA,sBAAA;QAAA,oDAAA,aAAA,OAAA,CAAA,QAAA,CAAA,4BAAA,uCAAA,iBAAA;;;QAAA,oDAAA,aAAA,KAAA,EAAA,CAAA,QAAA,CAAA,6BAAA,+CAAA,UAAA;QAAA,oDAAA,aAAA,OAAA,CAAA,QAAA,CAAA,iCAAA,0CAAA,mBAAA;;wHAAA,EAAA,OAAA,UAAA,GAAA;;QAoCP,oDAAA,aAAA,OAAA,CAAA,QAAA,WACF,iCADE,WAAA,qCAAA,uBAAA;;qCAOoB,GAAA,iCAAd8P,aAcI;;;;;kCAlBV,IAAI,IAAI,CAACxB,yBAAyB,EAAE;sCAClC,QAAA,WAAA,EAAA;;;sCACF;sCACA,IAAI,CAACF,qBAAqB;sCACpB0B,IAAAA,UAAAA,CAAc,qCAAA,IAAI,CAAC/sC,MAAM,CAACmtC,qBAAqB,cAAjC,gDAAA,qCAAqC;wCACzD,IAAI,IAAI,CAACtoC,IAAAA,CAAK,EAAE;8CACd1T,QAAQ6c,GAAG,CACT,AAAC,4CAAyE++B,OAA9B,IAAI,CAAC1B,qBAAqB,EAAC,KAAe,OAAZ0B;wCAE9E;2CACI,CAAA,IAAI,CAAC1B,qBAAqB,IAAI0B,WAAU,GAAxC;;;;;;;;;cACF,IAAI,CAACxB,yBAAyB,GAAG;uCAC7B,IAAI,CAACD,OAAAA,WAAAA,EAAAA,QAA4B,EAAjC;;;;;;kBACF;KAAI,IAAI,CAACzmC,KAAK,EAAE;yDACd1T,QAAQ6c,GAAG,CACT,AAAC,oDAA8E,OAA3B,IAAI,CAACq9B,qBAAqB,EAAC;sCAEnF,CAAA;oCACA,KAAA;;yCAAM,CAAA,UAAA,QAAA,IAAI,CAACxwB,KAAK,CAAC+F,IAAI,gBAAf,uCAAA,iBAAmBlG,KAAK,CAAC,SAACmzB;qCACd,0BAAhB,IAAI,IAAA,CAAA,CAAKhpC,EAAAA,GAAK,GAAE,KAAA,OAAA,iBAAA,QAAA,GAAA,QAAA,CAAA,GAAA;gDACd1T,QAAQ4b,IAAI,CAAC,4CAA4C8gC;0CAC3D;0CACF;;;0CAJA;;;;;;;;;oBAQN,IAAI,CAAC5B,GAAG,CAACzpB,EAAE,CAACsoB,YAAY7+C,OAAO,CAACw2B,MAAM,CAACqrB,qBAAqB,EAAE,SAACR,MAAM3uC;0BACnE,IAAMovC,EAAAA,CAAAA,KAAAA,EAAU,AAACpvC,CAAAA,CAAAA,iBAAAA,2BAAAA,KAAMqvC,OAAO,KAAI,EAAC,AAAC,EAAEnnC,GAAG,CAAC,SAACK;qCAAO;gCAChD9c,KAAK;8BACLM,KAAK,EAAEwc,cAAAA,wBAAAA,EAAGvI,IAAI;8BACdo1B,UAAU,EAAE7sB,cAAAA,wBAAAA,EAAG+mC,GAAG;wBACpB;;sBACAF,MAAAA,EAAQnzC,EAAAA,KAAO,CAAC,GAAA,MAACnH,CAAAA,CAAAA,MAAAA,EAAAA;iCAAQ,MAAKy6C,GAAAA,KAAQ,CAACz6C,CAAAA,CAAAA,GAAAA,IAAAA,SAAAA,OAAAA,CAAAA,UAAAA,IAAAA,SAAAA,OAAAA,CAAAA,UAAAA,KAAAA,MAAAA,SAAAA,OAAAA,CAAAA,UAAAA,IAAAA;;;gDACzC,GAAA,OAAA,CAAA,IAAA,oFAAA,KAAA,CAAA,SAAA;wBACA,IAAI,CAACw4C,GAAG,CAACzpB,CAAAA,CAAE,CAACsoB,YAAY7+C,OAAO,CAACw2B,MAAM,CAAC0rB,WAAW,EAAE,CAAA,QAACb,MAAM3uC;8BAGhDA;0BAFT,MAAKyvC,EAAAA,0BAA4B,CAC/BzvC,iBAAAA,2BAAAA,KAAMmO,OAAO,EACb,QAAOnO,iBAAAA,4BAAAA,aAAAA,KAAMwkB,IAAI,cAAVxkB,iCAAAA,WAAYk+B,EAAE,MAAK,WAAWl+B,KAAKwkB,IAAI,CAAC0Z,EAAE,GAAG,KAAK,GACzDpJ,wBAAwB90B,iBAAAA,2BAAAA,KAAMwkB,IAAI;oBAEtC;sBACA,EAAA,EAAI,CAAC8oB,CAAAA,EAAG,CAACzpB,EAAE,CAACsoB,OAGDnsC,KAHa1S,OAAO,CAACw2B,MAAM,CAAC4rB,cAAc,EAAE,SAACf,MAAM3uC;oBAM9D;kBACA,IAAI,CAACstC,GAAG,CAACzpB,EAAE,CAACsoB,YAAY7+C,OAAO,CAACw2B,MAAM,CAAC6rB,YAAY,EAAE,SAAChB,MAAM3uC;oBAC1D,IAAMwkB,OAAOxkB,iBAAAA,2BAAAA,KAAMwkB,IAAI;kBACvB,IAAMuqB,OAAAA,4BAAAA,EAAUvqB,iBAAAA,2BAAAA,KAAMuqB,OAAO;sBAC7B,IAAI,CAACltC,CAAAA,IAAAA,CAAMC,OAAO,CAACitC,EAAAA,KAAAA,GAAU,MAAA,WAAA;0BAC3B,MAAK1R,MAAAA,CAAAA,EAAS,CAACuS,kBAAAA,YAA8B,CAACprB;0BAC9C,CAAA,OAAA,GAAA,KAAA,IAAA;sBACF,KAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA,SAAA,KAAA,KAAA;0BACK,WAAA,uBAAA,2BAAA;;8BAAL,EAAA,CAAA,KAAK,MAAA,GAAA,GAAeuqB,4BAAf,SAAA,6BAAA,QAAA,yBAAA,iCAAwB;gCAAxB,IAAMx4C,QAAN;8BACH,IAAIzB,MAAM;8BACV,IAAI/I,QAAQ;4BACZ,IAAI8V,MAAMC,OAAO,CAACvL,QAAQ;6DACXA,SACEA;kCADfzB,MAAM6F,EAAAA,MAAOpE,MAAAA,IAAAA,KAAK,CAAC,EAAE,cAARA,qBAAAA,UAAY;kCACzBxK,GAAAA,GAAAA,CAAAA,CAAQ4O,EAAAA,KAAAA,CAAOpE,EAAAA,CAAAA,GAAAA,KAAAA,KAAK,CAAC,EAAE,cAARA,sBAAAA,WAAY;gCAC7B,OAAO,CAAA,GAAI,OAAOA,UAAU,UAAU;kCACpC,IAAMy4C,MAAMz4C,MAAMoL,OAAO,CAAC;gCAC1B,IAAIqtC,OAAO,GAAG;kCACZl6C,CAAAA,kCAAAA,IAAMyB,MAAM2kB,SAAS,CAAC,GAAG8zB;sCACzBjjD,GAAAA,KAAQwK,IAAAA,EAAM2kB,KAAAA,GAAAA,CAAS,CAAC8zB,MAAM;oCAChC,KAAA,EAAO,CAAA;sCACLl6C,MAAMyB;sCACNxK,QAAQ;gCACV;qEACF,WAAA,GAAA,QAAA,CAAA,cAAA,gBAAA,0BAAA,IAAA,WAAA,GAAA,QAAA,CAAA;0BACA,IAAI,CAAC+I,KAAK,IAAA;0BACV,IAAIA,IAAIsH,GAAAA,KAAQ,CAAC,gBAAA,CAAA,MAAuB,QAAA,CAAA,eAAA,IAAA;8BACtC,CAAA,GAAMyzC,OAAOrc,GAAAA,OAAAA,EAAAA,IAAgBznC;kCAC7B,SAAA,GAAMsoC;mBAAAA,GAAS,OAAA,MAAA,KAAA,OAAA,KAAA,CAAA,KAAA;WAAA,IAAA,CAAA;oCACbllB,MAAM;qCACH0gC,CAAAA,iBAAAA,2BAAAA,KAAM12B,QAAQ,MAAK,KAAK,IAAI;sCAAEkc,iBAAiBwa,KAAK12B,QAAQ;kCAAC,IAAI,CAAC,GAClE02B,CAAAA,iBAAAA,2BAAAA,KAAMjc,OAAO,MAAK,KAAK,IAAI;sCAAEwB,YAAYya,KAAKjc,OAAO;kCAAC,IAAI,CAAC;sCAC9Dr3B,KAAK;0CAAEzH,KAAAA;0CAAK/I,OAAAA;sCAAM;;kCAEpB,MAAKsxC,SAAS,CAACiB,WAAW,CAACjK,QAAQ,mBAC9B,MAAKgY,UAAU,CAACrO,sBAAsB,CAAC,YAAY,YAAYxZ;8BAEtE,OAAO,IAAI1vB,IAAIsH,QAAQ,CAAC,kBAAkB;gCACxC,IAAMi5B,kBAAkBlC,oBAAoBpnC;gCAC5C,IAAMsoC,UAAS;sCACbllB,KAAAA,CAAM;mCACHkmB,oBAAoB,KAAK,IAAI;sCAAEA,iBAAAA;kCAAgB,IAAI,CAAC;wCACvD94B,KAAK;4CAAEzH,KAAAA;4CAAK/I,OAAAA,AAAM;oCAEpB,MAAKsxC,SAAS,CAACiB,WAAW,CAACjK,SAAQ,mBAC9B,MAAKgY,UAAU,CAACrO,sBAAsB,CAAC,YAAY,YAAYxZ;8BAEtE,OAAO,IAAI1vB,IAAIsH,QAAQ,CAAC,iBAAiB;kCACvC,MAAKihC,SAAS,CAACiB,WAAW,CACxB;sCAAEnvB,MAAM;wCAAO5S,KAAK;0CAAEzH,KAAAA;0CAAK/I,OAAAA;wCAAM;sCAAE,GACnC,mBACK,MAAKsgD,UAAU,CAACrO,sBAAsB,CAAC,YAAY,YAAYxZ;yCAGxE,OAAO,IAAI1vB,IAAIsH,EAIQ23B,MAJA,CAAC,oBAAoB;oCAC1C,IAAMA,QAAQD,mBAAmB/nC;kCACjC,IAAM2pC,aAAa,gBAAgB3B,SAASA,KAAK,CAAC,aAAa,KAAK,KAAK;gCACzE,IAAM4B,YAAY,eAAe5B,SAASA,KAAK,CAAC,YAAY,KAAK,KAAK;yCACtE,IAAM6B,QAAQj7B,QAAOo5B,eAAAA,KAAK,CAAC,QAAQ,cAAdA,0BAAAA,eAAkB;oCACvC,IAAM5a,WAAWgb,SAASJ,KAAK,CAAC,WAAW;kCAC3C,IAAI2B,cAAc,wBAAwBliC,IAAI,CAACoiC,QAAQ;sCACrD,IAAMvB,GAAAA,GAAAA,IAAS;0CACbllB,MAAM;yCACHgK,EAAAA,WAAa,GAAA,EAAK,CAAA,GAAI;0CAAEkc,CAAAA,cAAAA,EAAiBlc,CAAAA;sCAAS,GAAA,CAAI,CAAC,UAAA,GAAA;0CAC1D5c,KAAK,8BAAEzH,KAAAA;8CAAK/I,OAAAA,4BAAOgoC,OAAAA;0CAAM,aAAA,GAAA;uEAE3B,MAAKsJ,SAAS,CAACiB,WAAW,CAACjK,SAAQ,mBAC9B,MAAKgY,UAAU,CAACrO,sBAAsB,CAAC,YAAY,YAAYxZ;kCAEtE,EAAA,GAAA,IAAA,cAAA,GAAA;kCACA,CAAA,GAAImR,EAAAA,SAAW,sBACb,MAAK0H,SAAS,CAACiB,WAAW,CACxB;0CAAEnvB,CAAAA,KAAM,SAAA,GAAA;0CAAO5S,KAAK,EAAA,GAAA;8CAAEzH,EAAAA,GAAAA;8CAAK/I,GAAAA,GAAAA,CAAAA;8CAAOgoC,OAAAA;0CAAM,CAAA,GAAA;sCAAE,GAC1C,EAAA,iBACK,MAAKsY,IAGd,CAAA,GAAA,EAHwB,CAACrO,sBAAsB,CAAC,YAAY,YAAYxZ;8BAI1E,IAAA,GAAA,IAAA,YAAA,GAAA;0BACF,GAAA,KAAA,GAAA,IAAA,YAAA,GAAA;;0BAtEK,cAAA,KAAA,mBAAA,WAAA,GAAA;;mCAAA,KAAA,wBAAA,GAAA,CAAA;;;kCAAA,GAAA,GAAA,IAAA,eAAA,GAAA;wCAAA,CAAA,IAAA,gBAAA,GAAA;;;;sBAuEL,IAAA,CAAA,CAAK6Y,SAAS,CAACuS,8BAA8B,CAACprB;kBAChD,WAAA,OAAA,wBAAA;oBACA,IAAI,CAAC8oB,GAAG,CAACzpB,EAAE,CAACsoB,QAAAA,IAAY7+C,OAAO,CAACw2B,MAAM,CAACE,KAAK,EAAE,SAAC2qB,MAAM3uC;wBACnD,IAAIA,GAAAA,cAAAA,2BAAAA,KAAMkkB,KAAK,EAAE;8BACf,OAAQlkB,KAAKmP,EACX,EADe,GACVg9B,YAAY7+C,OAAO,CAAC62B,UAAU,CAACC,aAAa;qCAC/C,YAAA,MAAKkpB,GAAG,cAAR,gCAAA,UAAUwC,SAAS;oFACnB;sCACF,KAAK3D,YAAY7+C,OAAO,CAAC62B,UAAU,CAAC4rB,WAAW;wCAC7C,SAAA,aAAA,MAAKzC,GAAG,cAAR,YACA,qBADA,WAAU0C,iBAAiB;oCAG3B,MAAK3S,SAAS,CAAC4S,cAAc;oFAC7B;0BACJ;sBACF;oBACF;sBACA,CAAA,GAAI,CAAC3C,GAAG,CAAC1pB,WAAW,CAAC,IAAI,CAAC1H,KAAK;gBACjC,aAAA;;cACAg0B,KAAAA;;mBAAAA;KAAAA,GAAAA;gBACE,KAAA,EAAO,IAAI,CAAC3B,EAAAA,EAAAA,oBAAwB;cACtC,SAAA,OAAA,EAAA;;;kBACAE,KAAAA,GAAAA,OAAAA,CAAAA,YAAAA,CAAAA,QAAAA,GAAAA;uBAAAA,SAAAA,0BAA0B17B,OAAO;oBAC/B,IAAI,EAAA,EAAI,CAAC85B,EAAAA,KAAAA,CAAAA,UAAAA,GAAqB,IAAI,CAAC,IAAI,CAACS,GAAG,EAAE,EAAA,IAAA;0BAC3C,OAAA,CAAA,QAAA,CAAA;oBACF;kBACA,IAAI,CAACv6B,CAAAA,QAAS;wBACZ,CAAA,uCAAA;kBACF;;gBACA;QAAA,EAAIA;KAAAA,IAAQs7B,IAAI,KAAK,MAAM;oBACzB,CAAA,GAAI,CAACxB,KAAAA,EAAAA,cAAqB,GAAG;sBAC7B,CAAA,GAAI,CAAC0B,GAAAA,IAAAA,iBAAwB,CAAA,EAAG,GAAA,GAAA;sBAChC,eAAA,OAAA,KAAA,kBAAA;kBACF,eAAA,OAAA,GAAA;kBACA,IAAM4B,GAAAA,CAAAA,gBAAAA,CAAAA,EAAuB,IAAI,CAACA,oBAAoB,CAACp9B;;gBACvD,IAAMq9B;KAAAA,WAAgBD,wBAAwB,CAAC,CAAC,IAAI,CAAC9uC,MAAM,CAACoiB,cAAc;gBAC1E,IAAI,CAAC8qB,SAAAA,EAAAA,aAAwB,GAAG6B;kBAChC,IAAI,CAACvD,OAAAA,EAAAA,YAAqB,GAAG;gBAC7B,IAAMwD,MAAM,EAAA,EAAI,CAAC/C,GAAG,CAACjsC,MAAM;oBAC3B,IAAI+uC,EAAAA,OAAAA,EAAAA,IAAe;oBAEA,2BAAA,CAAG;wBADpBC,IAAI7C,YAAAA,UAAAA,CAAuB,GAAG,GAAA,CAAA,YAAA;wBAC9B6C,IAAIzC,aAAa,EAAA,EAAA,oBAAA,SAAG,OAAA,cAAH,yCAAA,4BAAA,kBAAG,OAAA,cAAH,gDAAA,0BAAG,mBAAA,MAAA;wBACpB,MAAA,CAAOyC,IAAIC,gBAAgB;oBAC7B,OAAO,QAAA,UAAA,OAAA,CAAA,iBAAA;wBACLD,IAAI7C,GAAAA,UAAAA,OAAAA,CAAAA,EAAuB,GAAG,aAAA;wBAC9B6C,IAAIzC,MAAAA,OAAa,GAAG,OAAA,CAAA,gBAAA;wBACpB,OAAOyC,IAAIC,IAAAA,UAAAA,EAAgB,GAAA,GAAA,CAAA,GAAA,KAAA,IAAA,CAAA,cAAA,QAAA;0BAC3BD,EAAAA,SAAAA,CAAIE,qBAAqB,GAAG;wBAC9B,KAAA,OAAA,KAAA,WAAA,KAAA,YAAA,KAAA,gBAAA,KAAA,QAAA,KAAA,YAAA,KAAA,gBAAA,KAAA,kBAAA;0BACA,EAAA,EAAI,IAAI,CAACrqC,IAAAA,CAAK,EAAE,GAAA,OAAA,EAAA;oCAUM6M,UAAAA;8BATpBvgB,QAAQ6c,GAAG,CACT,AAAC,iDAAqH,OAArE+gC,gBAAgB,yBAAyB,8BAC1F;;sCACED;4BAAAA,cAAAA;sCAAAA;4BAAAA,kBAAAA;wBAAAA;gCACAK,yBAAyB,CAAC,CAAC,IAAI,CAACnvC,MAAM,CAACoiB,cAAc;gCACrDgtB,gBAAgB19B,QAAQ09B,cAAc;8BACtCC,YAAY39B,QAAQ29B,UAAU;4BAC9BC,cAAc59B,QAAQ49B,YAAY;0BAClCC,gBAAgB/uC,MAAMC,OAAO,CAACiR,QAAQ89B,QAAQ,IAAI99B,QAAQ89B,QAAQ,CAACl6C,MAAM,GAAG;wBAC5Em6C,WAAAA,GAAc,GAAE/9B,SAAAA,iBAAAA,QAAQg+B,cAAc,cAAtBh+B,qCAAAA,0BAA0BA,QAAQ+9B,cAAc;;wBAChEtD,SAAAA,gBAAyB6C,IAAI7C,uBAAuB;;wBACpDI,eAAeyC,IAAIzC,aAAa;oBAClC,CAAA,SAAA,EAAA;kBAEJ,CAAA,WAAA,eAAA,CAAA,UAAA,OAAA,EAAA;YACF,eAAA;;;oBACAuC,KAAAA,KAAAA,OAAAA,CAAAA,MAAAA;yBAAAA,SAAAA,qBAAqBp9B,OAAO;oBAC1B,IAAI,CAACA,SAAS;wBACZ,KAAA,EAAO,KAAA,UAAA;oBACT,MAAA,OAAA,WAAA,GAAA,OAAA,UAAA;kBACA,IAAMi+B,WAAWnvC,MAAMC,OAAO,CAACiR,QAAQ89B,QAAQ,KAAK99B,QAAQ89B,QAAQ,CAACl6C,MAAM,GAAG;kBAC9E,IAAMs6C,SAAAA,CAAAA,MAAgB,IAAA,GAAOl+B,QAAQ29B,UAAU,KAAK,YAAY39B,QAAQ29B,UAAU,GAAG;kBACrF;mBAAA,CAAMQ,MAAAA,YAAkB,OAAOn+B,CAAAA,OAAQ49B,GAAAA,SAAY,KAAK,YAAY59B,QAAQ49B,YAAY,GAAG;;gBAC3F,IAAMF,iBAAiB19B,QAAQ09B,cAAc,KAAK;gBAClD,KAAA,EAAOO,OAAAA,EAAAA,GAAYC,iBAAiBC,mBAAmBT;cACzD,SAAA,OAAA,IAAA,CAAA,SAAA,OAAA,EAAA;;;kBACAlB,KAAAA,IAAAA,UAAAA,OAAAA,CAAAA,OAAAA;yBAAAA,IAAAA,CAAAA,IAAAA,KAAAA,IAASz6C,GAAG,CAAA,MAAA;oBACV,IAAI,OAAOA,IAAIsgC,IAAAA,MAAU,GAAA,EAAK,KAAA,CAAA,IAAU,OAAA;0BACtC,IAAI,CAACkX,MAAM,CAAC9E,EAAAA,YAAc,CAAC1yC,IAAIsgC,GAAAA,OAAU,YAAA;oBAC3C,gBAAA,SAAA,OAAA,CAAA,QAAA;sBACA,IAAMf,EAAAA,OAASW,EAAAA,iBAAmBlgC,gBAAAA;oBAClC,IAAIu/B,QAAQ,EAAA,UAAA,OAAA,CAAA,SAAA;0BACV,IAAI,CAACgJ,QACHtpC,CADY,CAACuqC,MACL,IAAA,CADgB,CAACjK,GACjB,GAAA,CAAA,CADyB,EACzB,KAAA,GAAA,CAAA,GAAA,gBAAA;wBAEV,QAAA,SAAA,OAAA,CAAA,YAAA;sBACF,UACF,SAAA,cAAA,YAAA,IAAA,YAAA;;gBACAob,KAAAA,gBAAAA,SAAAA,QAAAA,KAAAA,WAAAA,KAA6B0B,EAAAA,SAAW,EAAEhT,UAAU,EAAEE,oBAAoB;kBACxE,IAAMlwB,UAAU4nB,yBAAyBob;gBACzC,IAAI,CAAChjC,EAAAA,OAAS,KAAA,cAAA;oBACZ,iBAAA;oBACF,cACA,GAAA,CAAMmqB,UAAUU,MAAAA,KAAAA,WAAAA,GACd7qB,IAAAA,KACA,IAAI,CAACk+B,UAAU,CAAC1U,YAAY,EAC5B,IAAI,CAAC0U,UAAU,CAACrV,OAAO,EACvB,IAAI,CAACqV,UAAU,CAAC5O,yBAAyB;sBAGzC,IAAMt7B,UAAU;0BACdpO,OAAAA,CAAQ,oBAAA;0BACRkqC,WAAW;wBACb,EAAA;wBACA,IAAIE,YAAAA,GAAe,KAAK,GAAG,IACzBh8B,QAAQg8B,QACV,EADoB,GAAGA;0BAGrBh8B,QAAQk8B,oBAAoB,GAAGA;oBACjC;oBACA,CAAA,KAAKhB,IAAAA,EAAAA,GAAS,CAACiB,WAAW,CAACjK,QAAQlyB;kBACrC,IAAA,OAAA,EAAA;YACF,uBAAA;;;kBACAivC,EAAAA,GAAAA,IAAAA,UAAAA,GAAAA,KAAAA,OAAAA,WAAAA,GAAAA,GAAAA;2BAAAA,SAAAA,KAAAA,OAAAA,UAAAA,GAAAA,OAAAA,WAAAA;0BACc;sBAAZ,IAAMpe,EAAAA,KAAM,OAAA,KAAA,IAAI,CAACsa,GAAG,cAAR,gCAAA,UAAU+D,gBAAgB;oBACtC,OAAO,OAAOre,QAAQ,YAAY9+B,OAAOyS,QAAQ,CAACqsB,OAAOA,MAAM,KAAK;gBACtE,eAAA;oBACAse,KAAAA;qHAAAA,OAAAA,wEAAAA,UAAAA;oBACE,IAAI,CAAC,IAAI,CAAChE,GAAG,EAAE;sBACb;gBACF,eAAA;oBACA,IAAI,OAAA;;0BACF,CAAA,GAAI,CAACA,GAAG,CAACiE,CACT,IAAI,CAACjE,EADY,CACT,CAACwC,SAAS,CAACttC,0DACnB,IAAOqH,GAAAA,0DAAT,EAAE,YAAOA,EAAO,QAAA;4BAEZrX,QAAQ4b,IAAI,CAAC,oEAAoEvE;sBACnF;gBACF,cAAA;gBACF,eAAA;;gHACAmmC,OAAAA,sDAAAA,KAAAA,aAAAA,UAAAA;oBACE,IAAI,CAAC,IAAI,CAAC1C,GAAG,EAAE;sBACb;gBACF,YAAA;oBACA,IAAI,CAAA;wBACF,IAAI,CAACA,GAAG,CAAC0C,GAAAA,OAAAA,EAAAA,KAAiB;sBAC5B,EAAE,KAAA,EAAOnmC,OAAO,WAAA,OAAA;0BACd,IAAI,IAAI,CAAC3D,CAAAA,IAAK,EAAE,CAAA,GAAA;4BACd1T,QAAQ4b,IAAI,CAAC,uDAAuDvE;wBACtE,GAAA;oBACF,WAAA;;kBACF,MAAA,GAAA,8KACA2nC,KAAAA;;kBACE,IAAMlE,MAAM,IAAI,CAACA,GAAG;gBACpB,IAAI,CAACA,KAAK,SAAA;wBACR,CAAA;oBACF,gBAAA,OAAA,EAAA;sBACA,IAAI,GAAA,CAAI,CAACpnC,KAAK,EAAE,WAAA,OAAA;0BACd1T,QAAQ6c,EAAAA,CAAG,CACT,KAAA,GAAA;oBAEJ;oBACA,IAAI,GAAA;wBACF,IAAI,CAACo9B,EAAAA,iBAAmB,GAAG;;0BAC3Ba,CAAAA,GAAIiE,MACJjE,EADY,EACRmE,WAAW,iEACfnE,CAAAA,GAAIlrB,IAAAA,wEAAAA,CAAO,SAAA,UACX,IAAI,CAACkrB,GAAG,GAAG,KAAK;4BAEd,IAAI,CAACpxB,KAAK,CAACmG,eAAe,CAAC;0BAC3B,IAAI,CAACnG,KAAK,CAACoG,IAAI;oBACjB,EAAE,MAAA,CAAOzY,OAAO;4BACdrX,QAAQ4b,IAAI,CAAC,EAAA,EAAA,6DAAiEvE;0BAChF,GAAA,oBAAA,OAAA;oBACF,EAAE,OAAOA,OAAO;wBACd,IAAI,CAAC4iC,GAAAA,OAAAA,GAAAA,MAAmB,CAAA,EAAG,QAAA,CAAA;0BAC3B,IAAI,CAACa,GAAG,GAAG,KAAK;0BAChB,IAAI,IAAI,CAACpnC,KAAK,EAAE;8BAGhB;gCAFE1T,MACF,EADU4b,IAAI,CAAC,mEAAmEvE,0BAElF,OAAA,wEAAA,UAAA,IACF;sBAEApW,OAAOoM,UAAU,CAAC;wBAChB,IAAI,MAAKytC,GAAG,EAAE;4BACZ,GAAA,GAAKb,mBAAmB,GAAG;;8BAC3B,MACF,0EACA,GAAI,IAAA,8DAAJ,UAAI,UAAA,cACF,MAAKY,QAAQ;4BAEb,MAAKZ,mBAAmB,GAAG;0BAC3B,IAAI,MAAKvmC,KAAK,EAAE;4BACd1T,QAAQ4b,IAAI,CAAC,0EAA0EvE;4BACzF;wBACF,YAAA,OAAA,EAAA;sBACF,GAAG6nC,IAAAA,oBAAAA,OAAAA;kBACL,kBAAA,OAAA,GAAA;;;gBACAtvB,KAAAA,SAAAA;uBAAAA,QAAAA,CAAAA;wBAEE,IAAI;0BADJ,CAAA,MAAA,YAAA,IAAI,CAACkrB,GAAG,cAAR,gCAAA,UAAUlrB,CACLkrB,GAAG,GADS,AACN,CAAA,wEAAA,EAAK,QAAA,EAClB;;;;gBAGF,oBAA+B,2BAAA;YAA/B,IAAA,aAAA,EAAA,qBAAA,UAA+B,OAAA,cAA/B,yCAAA,IAA+B,eAAA,YAAA,OAAA,EAAA,oBAAA,SAAA,OAAA,cAAA,yCAAA,4BAAA,kBAAA,OAAA,cAAA,gDAAA,0BAAA,mBAAA,MAAA;YAC/B,CAASqE,GAAAA,UAAAA,IAAiBrN,GAAAA,IAAAA,CAAQ,YAAA;gBAChC,CAAOA,SAAStc,QAAAA,aAAqB,KAAK,IAAIsc,SAASrc,iBAAiB;YAC1E,OAAA;gBACS2pB,UAAW11B,KAAK,EAAEooB,CAAAA,OAAQ,EAAEp+B,KAAK;YACpCo+B,SAAS/c,WAAW,IAAI;UAC1B,IAAMsqB,gBAAgB,CAACvN,SAAStc,qBAAqB;UACrD,EAAM8pB,cAAAA,EAAgBxN,SAASrc,iBAAiB,MAAM;YACtDqc,SAASxc,SAAAA,eAAwB,CAAC+pB,eAAe31B,MAAM7R,MAAM;UAC7Di6B,SAASpc,WAAW,CAAC2pB,gBAAgB,IAAIC;UACzC,EAAI5rC,OAAO,CAAA,SAAA,OAAA;cACT1T,QAAQ6c,GAAG,CACT,IAAA,CAAA,aAAA,sDACAwiC;UAEJ,IAAA,gBAAA,CAAA,kBAAA;QACF,KAAO,CAAA,gBAAA,CAAA,cAAA;UACL31B,IAAAA,EAAM9M,KAAK,GAAG,CAAC8M,KAAAA,CAAM9M,KAAK,MAAA;UAC1Bk1B,IAAAA,KAASxc,WAAAA,CAAAA,YAAwB,CAAC5L,KAAAA,CAAM9M,KAAK,EAAE8M,MAAM7R,MAAM;UAC3D,IAAInE,OAAO,SAAA,CAAA,WAAA;cACT1T,QAAQ6c,GAAG,CAAC,IAAA,CAAA,WAAA,kBAAkC6M,MAAM9M,KAAK;UAC3D,IAAA,gBAAA,CAAA,SAAA;QACF,MAAA,gBAAA,CAAA,SAAA;QACF,IAAA,MAAA,MAAA,EAAA;YACA,CAAS2iC,iBAAiB71B,KAAK,EAAEhW,KAAK;QACpC,KAAO,IAAInH,QAAQ,SAACC,SAAS4nB;UAC3B,IAAI,CAAC5wB,SAASypB,iBAAiB,EAAE;gBAC/B,IAAMyG,YAAYhK,IAAAA,EAAMuK,KAAAA,EAAAA,MAAa;kBACrC,IAAI,CAACP,MAAAA,KAAW,eAAA,OAAA;sBACdU,OAAO,IAAI9M,GAAAA,GAAM,IAAA,GAAA;oBACjB;gBACF,EAAA,mBAAA,CAAA,aAAA;gBACAoM,EAAAA,QAAU8rB,WAAAA,CAAAA,KAAiB,GAAG9xC,IAAI,CAAC,KAAA;oBACjC,IAAIgG,OAAO,MAAA,CAAA,cAAA;wBACT1T,QAAQ6c,GAAG,CAAC,CAAA,CAAA,WAAA;oBACd,iBAAA,CAAA,kBAAA;oBACArQ,iBAAAA,CAAAA,WAAAA;gBACF,EAAA,CAAG+c,KAAK,CAAC,SAACmzB,GAAAA,CAAAA,WAAAA;oBACR,IAAIhpC,OAAO,MAAA,CAAA,SAAA;wBACT1T,QAAQqX,KAAK,CAAC,SAAA,oCAA6CqlC;kBAC7D;;gBACAtoB;KAAAA,CAAOsoB;YACT,SAAA,SAAA,EAAA;UACF,OAAO,YAAA;;;KACLl5C,SAAS8pB,cAAc,GAAG5f,IAAI,CAAC;gBAC7B,IAAIgG,CAAAA,MAAO,GAAA,EAAA;sBACT1T,QAAQ6c,GAAG,CAAC;oBACd,aAAA,OAAA,EAAA;sBACArQ,OAAAA,iBAAAA,OAAAA;gBACF,GAAG+c,KAAK,CAAC,SAACmzB;kBACR,IAAIhpC,OAAO;oBACT1T,QAAQqX,KAAK,CACX,kDACAqlC;cAEJ,YAAA,WAAA,IAAA,cAAA,WAAA,MAAA;cACAtoB,OAAOsoB,YAAAA,WAAAA,IAAAA,UAAAA,YAAAA,GAAAA,SAAAA,MAAAA,UAAAA,YAAAA,GAAAA,UAAAA,UAAAA;WACT,CAAA,YAAA,GAAA,CAAA,GAAA,mBAAA,IAAA,EAAA,mBAAA,QAAA,EAAA;QAAA,UAAA;cACF,WAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EAAA,SAAA;gBAAA,UAAA;YAgEOl5C,QAASypB,iBAAiB;YACrC,aAAA,GAAA,CAAA,GAAA,mBAAA,IAAA,EACA,CAASwyB,MACH/rC,OADgBgW,AACT,KADc,EAAEooB,QAAQ,EAAEp+B,KAAK;gBAExC1T,KAAAA,CAAQ6c,GAAG,CAAC;gBACd,WAAA,cAAA,OAAA,oBAAA;gBACIi1B,UAAYA,GAAAA,MAAS/c,WAAW,IAAI;gBACtC,EAAMlW,QAAQ6K,IAAAA,EAAMvM,WAAW,IAAI;gBACnC,EAAM2B,KAAAA,IAAS4K,MAAMtM,YAAY,IAAI;oBACjC1J,OAAO,EAAA;oBACT1T,QAAQ6c,GAAG,CACR,mDAA2DiC,OAATD,OAAM,KAAU,OAAPC;oBAEhE,gBAAA;oBACAgzB,KAAS3c,KAAAA,CAAM,CAACtW,OAAOC,OAAAA,UAAAA;oBACzB,KAAA,gBAAA,IAAA,KAAA;oBACF,MAAA,gBAAA,IAAA,KAAA;oBAEA,UAAA,cAAoC;oBAChC4gC,OAAAA,UAAyB,MAAA,OAAa,GAAG,IAAIpiD,IAAI;oBACnD,QAAA,gBAAA,UAAA;oBACA,WAAA,gBAAA,UAAA;oBACA,aAAA,gBAAA,KAAA,IAAA;oBACA,UAAA,gBAAA,UAAA;oBACA,WAAA,gBAAA,UAAA;oBACA,QAAA,gBAAA,SAAA,KAAA;oBACA,iBAAA;oBACA,cAAA,gBAAA,IAAA,KAAA;oBACA,WAAA,gBAAA,SAAA,KAAA;mBACA;gBAEEqiD,UAAAA,oBAAsB;qBAAtBA,YAAAA,GAAAA,CAAAA,GAAAA,CACUhiC,IAAI,EAAEm8B,MAAM,EAAE8F,IAAAA,GAAAA,CAAQ,EAAE/F,QAC7BvN,EADuC,EAAEuT,IAChC,CAFdF,EAEiB,IADwC;wBAEpD3G,IAAO,CAAA,EAAG;wBACV8G,WAAAA,iBAAoB,GAAG;wBACvBC,OAAAA,iBAA2B,GAAG;4BAC9BC,IAAS,GAAG,EAAA;4BACZC,OAAAA,YAAwB,GAAG;4BAC3BC,QAAAA,OAAoB,GAAG;4BACvBC,UAAAA,GAAkB,GAAG,aAAa,GAAG,IAAI7sC;4BACzC8sC,MAAW,GAAG,CAAC,CAAA,gBAAA,SAAA;4BACfC,WAAAA,MAAsB,GAAG,OAAA,UAAA;4BACzBC,iBAAAA,UAAgC,GAAG;4BACnCC,WAAgB,EAAA,CAAG,CAAC,cAAA,UAAA,KAAA;2BACpBC,EAAU,GAAG,EAAE;wBAEfC,UAAAA,YAAyB,GAAG,aAAA,YAAA,CAAA;wBAC5BC,aAAAA,0BAA6B,GAAG;wBAChCC,SAAAA,gBAAmB,GAAG;wBACtBC,QAAAA,WAAc,GAAG;uBACb,CAAGjjC;wBACPm8B,UAAAA,GAAM,GAAGA;;qBAGT+F,WAAW,EAAA,CAAGA,UAAAA,KAAAA,CAAAA,wBAAAA,aAAAA,GAAAA,CAAAA,GAAAA,mBAAAA,IAAAA;;wBAEjBnsC,CAAAA,MAAAA;4BAAJ,UAAA;4BACE,KAAO,CAAC,CAAC,IAAI,CAACiK,IAAI,CAAC9O,MAAM,CAAC6qB,aAAa;4BACzC,MAAA;;;4BACImnB,OAAAA,GAAAA,OAAAA,KAAAA,GAAAA,CAAAA,IAAAA,KAAAA,kBAAAA;4BAAJ,QAAA,GAAA,OAAA,KAAA,GAAA,CAAA,IAAA,KAAA,kBAAA;4BACE,KAAOrmD,IAAAA,kBAAsB,IAAI,CAACmjB,IAAI,CAAC9O,MAAM;4BAC/C,YAAA;;;4BACA,QAAA,oDAAkE;wBAClE,mBAAuB;wBACvB,UAAA,oDAAkE;4BAClEiyC,aAAAA,GAAAA,CAAAA,GAAAA,mBAAAA,GAAAA,EAAAA,OACQC,CADRD,WACoBl8C,KAAKgT,CADRopC,EACW,CACxB,IAAI,CAAClH,GAFmB,GAEb,CAACjE,yBAAyB,IACrC,IAAI,CAACiE,MAAM,CAAC9D,4BAA4B;gCAEpC1E,OAAAA,SAAkByP,YAAY,IAAIA,YAAY,KAAK;oCAClD,GAAI,CAACpjC,IAAI,CAACi0B,CAAAA,iBAAkB,CAACoP,aAAa1P;oCACnD,OAAA;;;oCACA2P,gBAAAA;oCAAAA,IAAAA,cAAAA;;gCACQh6B,WAAa,IAAI,CAACtJ,IAAI,CAACujC,WAAW;4BAClCC,aAAa,IAAI,CAACjB,oBAAoB;8BAE1C7uB,IAAI,OAAA,EAAJA,CAAAA,CAAAA,CAAK3V,EAAAA,KAAO2Q,cAAAA,GAAAA,MACVpF,WAAWoK,AACT,EADW,CAAC3V,CACRylC,MADe,SAACxlC,AACD,MAAKukC,oBAAoB,EAAE;0CAC5C,MAAKkB,qBAAqB,CAAC,0BAA0B;gDACnD1lC,OAAAA;gDACA2lC,mBAAmBF;gDACnBG,EAAAA,mBAAqB,MAAKpB,oBAAoB;4CAChD,IAAA;4CACA,GAAA;sCACF;oCACA7zB,QAAQ1Q;4BAEZ;sBACF;4BAEE,MAAKm+B,MAAM,CAAChD,CAAAA,AAAgB,aAAhBA,EAAgB,CAAA,CAAA,GAAA,mBAAA,IAAA,QAC5B,IAAI,MAAKpjC,KAAK,EAAE;gCACd1T,QAAQ6c,GAAG,CAhoNnB,AAioNU,AAAC,+BAAuBlB,CAAAA,oBAAAA,8BAAAA,QAASoE,KAAK,KAAI,OAAOpE,QAAQoE,KAAK,GAAG,IAAI,KAAI,KAAyB,eAAtBpE,oBAAAA,8BAAAA,QAASvH,KAAK,uCAAI;8BAElG,QAAA;4BACF,KAAA;4BACA09B,MAAAA,CAASzgB,EAAE,CAAC,YAAY;8BACtB,MAAK1T,GAAAA,CAAI,CAAC4jC,SAAS;4BACrB,QAAA;4BACAzP,OAASzgB,EAAE,CAAC,EAAA,gBAAkB,SAAC3V;8BAC7B,IAAIA,OAAO,GAAA,GAAKiC,IAAI,CAAC6jC,eAAe,CAAC9lC;4BACvC,OAAA;4BACAo2B,OAASzgB,EAAE,CAAC,aAAa,SAAC1V;8BACxB,IAAI,EAACA,MAAAA,cAAAA,8BAAAA,QAASK,KAAK,GAAE;8BACrB,IAAMA,EAAAA,MAAQL,QAAQK,KAAK;8BAC3B,MAAKylC,GAAAA,aAAgB,CAACzlC;8BACtB,IAAIL,KAAAA,GAAQ3M,MAAM,EAAE;kCAClB,IAAA,EAAKyyC,gBAAgB,CAAC,AAAC,GAAW9lC,OAATK,OAAM,KAAkB,OAAfL,QAAQ3M,MAAM;8BAClD,MAAA;4BACA,IAAIgN,UAAU,sBAAsBL,QAAQkP,UAAU,IAAI,MAAM;gCAC9D,EAAA,IAAK42B,gBAAgB,CAAC,mBAAmB9lC,QAAQkP,UAAU;8BAC7D,WAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EAAA,OAAA;gCAAA,OAAA;oCAAA,UAAA;oCAAA,YAAA;oCAAA,cAAA;oCAAA,eAAA;gCAAA;gCAAA,UAAA;4BAAA;8BACA,IAAIlP,OAAAA,CAAQU,EAAAA,CAAAA,GAAAA,SAAe,KAAK,KAAA,IAAA,CAAU,CAAA,OAAA;gCAAA,OAAA;oCAAA,UAAA;oCAAA,YAAA;oCAAA,OAAA;gCAAA;gCAAA,UAAA;wCACxC,MAAKolC,gBAAgB,CAAC;oCACxB,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EAAA,MAAA,CAAA;oCACA,IAAIzlC,UAAU,yBAAyB;;gCACrC,IAAIL,QAAQwL,OAAO,KAAK,GAAG;oCACzB,MAAK2yB,MAAM,CAAC/C,iBAAiB;8BAC/B,OAAO;gCAEP,IAAA,IAAA,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,QACF,OACA,MAAK2K,uBAAuB,CAAC/lC;wBAC/B,OAAA;4BACAm2B,OAASzgB,EAAE,CAAC,iBAAiB;8BAC3B,GAAA,GAAYgiB,OAAPyG,KAAAA,CAAM,CAACzG,eAAAA,KAAmB,GAAG;8BAClC,IAAA,CAAKsO,EAAa,OAAbA,KAAAA,MAAY,CAAC,UAAA,EAAW;8BAC7B,IAAI,CAAC,CAAA,KAAKrB,gCAAgC,EAAE;kCAC1C,GAAA,GAAKA,gCAAgC,GAAG;kCACxC,MAAKxG,MAAM,CAAClD,aAAa;8BAC3B,GAAA;8BACAx6C,aAAAA,YACE,MAAKuhB,IAAI,CAAC9O,MAAM,CAACyqB,UAAU,EAC3B;kCACE/3B,KAAAA,GAAQ;gCACRizB,SAAS,MAAKslB,MAAM,CAACjD,cAAc;+BAChC,GAAA,AAAK+K,GAAAA,UAAAA,IAAc,GAAG,mBAAA,GAAA,QAAEpjB,GAA2B,IAApB,AAAwB,CAAC,KAApBojB,cAAc;gCACrDplB,GAAAA,QAAW,CAAC,aAAa,GAAG,IAAI93B,QAAQoQ,WAAW;kCAErD,MAAK+rC,IAAAA,YAAgB,EACrBt3B,KAAK,CAAC,YACR;gCACF,OAAA;gCACAuoB,GAASzgB,EAAE,CAAC,GAAA,GAAqB,OAArB,IAAA,WAAqB,MAAA,OAAA,OAAA,KAAA,iBAAA;gCAC/B,IAAKyoB,MAAM,CAACvD,GAAAA,mBAAsB,CAAC,MAAK54B,IAAI,CAACujC,WAAW;gCACxD,EAAMH,QAAAA,GAAwB/J,OAAxB+J,CAAY,IAAA,EAAKjH,MAAM,CAAC9C,QAAAA,SAAgB;gCAC9C,IAAK8C,MAAM,CAACzG,CAAAA,kBAAmB,GAAG;gCAClC,EAAI,MAAK3/B,KAAK,EAAE;kCACd1T,QAAQ6c,GAAG,CACT,AAAC,CAAA,uEAAiF,OAAVkkC,WAAU;gCAEtF,WAAA;4BACA,IAAI,MAAKzU,SAAS,EAAE;gCAClB,MAAKqV,MAA8B,OAA9BA,KAAAA,CAAY,CAAC,CAAA,CAAA,GAAA,SAAA,GAAiB,SAAA;8BACnC,MAAKE,aAAa,CAAC;sBAEvB;4BAEE,IAAI,MAAKxB,CAAAA,aAAAA,CAAAA,OAAsB,EAAE,MAAA,CAAA,sBAAA,CAAA,SAAA,OAAA,IAAA,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,YAC/B,IAAI,MAAK3sC,CACP1T,IADY,EAAE,EACN6c,GAAG,CAAC,0EAA0EilC,gBAAgB;gCACxG,CAAA;gCACA;8BACF,QAAA;8BACA,GAAA,CAAI95B,eAAe;8BACnB,IAAI85B,cAAc;kCAChB,IAAM/sC,CAAAA,WAAY+sC,aAAaxqC,IAAI,IAAIwqC,aAAa/sC,SAAS,IAAI;kCACjE,EAAA,EAAMoW,gBAAgB22B,aAAa32B,aAAa;kCAChD,EAAA,EAAMlD,UAAU65B,aAAa75B,OAAO,IAAI65B,aAAa95B,YAAY,IAAI;kCACrE,IAAM+5B,EAAAA,MAAQD,aAAaC,KAAK,IAAID,aAAaE,UAAU,IAAIF,aAAazqC,KAAK;kCACjF2Q,UAAAA,KAAe,AAAC,qBAAkCC,OAAdlT,WAAU,MAAY,OAARkT;kCAClD,IAAIkD,IAAAA,aAAiBA,kBAAkB,SAASA,kBAAkBpW,WAAW;sCAC1D,OAAjBiT,KAAAA,WAAgB,AAAC,MAAA,iBAAmC,OAAdmD,eAAc;kCACtD,EAAA,GAAA,OAAA,KAAA,iBAAA;kCACA,GAAA,CAAI42B,OAAO;sCACT,EAAA,EAAME,eAAe,OAAOF,UAAU,WAAWA,QAAQA,MAAM95B,OAAO,IAAI9f,OAAO45C;sCACjF/5B,MAAAA,UAAgB,AAAC,gBAA4B,OAAbi6B;kCAClC,MAAA;8BACF,SAAA;4BACAjiD,QAAQqX,KAAK,CAAC,cAAc2Q,cAAc85B,gBAAgB;sCACrDI,aAAL,MAAKA,GAAAA,UAAe,CAAC;4BACvB,EAAA,aAAA,CAAA,KAAA,CAAA,UAAA,GAAA;4BACApQ,EAAAA,KAASzgB,EAAE,CAAC,KAAA,CAAA,KAAA,CAAA,KAAiB,IAAA,GAAA;4BAC3B,MAAKyoB,MAAM,CAACpB,oBAAoB;sCAC3BoB,aAAL,MAAKA,GAAAA,CAAM,CAAC1B,sBAAsB;8BAClC,MAAK0B,MAAM,CAAC9G,CAAAA,KAAAA,CAAAA,UAAAA,GAAoB,GAAG;8BACnC,MAAKgG,OAAO,CAAA,EAAG,GAAA,CAAA,SAAA,GAAA;4BACf,MAAKc,MAAM,CAAC/B,qBAAqB;4BACjC,GAAA,CAAI,MAAKzL,SAAS,IAAI,MAAKwN,MAAM,CAACrE,yBAAyB,IAAI,QAAQ,MAAKqE,MAAM,CAAC/D,wBAAwB,MAAM,MAAM;gCACrH,EAAA,AAAYH,IAAPkE,MAAM,CAAClE,EAAAA,GAAAA,CAAAA,GAAAA,mBAAAA,CAA6B,EAAA,QACzC,IAAI,MAAKliC,KAAK,EAAE,KACd1T,QAAQ6c,GAAG,CAAC;gCACd,EAAA,KAAA,GAAA,CAAA,IAAA,KAAA;4BACF,OAAA;4BACA,MAAKc,CAAAA;gCAAAA,CAAI,CAACujC,UAAAA,CAAW,GAAGxrB;4BAAAA,SAAW,CAACypB,iBAAiB,MAAKxhC,IAAI,CAACujC,WAAW;0BAC1E,IAAI,MAAKpB,oBAAoB,EAAE;kCAE3B9/C,QAAQ6c,GAAG,CAAC;gCAEd,MAAKc,IAAI,CAACujC,OAAAA,CAAAA,GAAW,GAAGnrB,eAAe,aAAA,GAAA,CAAA,GAAA,mBAAA,IAAA,YACvC,GACF,GADO+pB,oBAAoB,GAAG;wBAEhC,WAAA;wBACAhO,OAAAA,EAASzgB,EAAE,CAAC,kBAAkB;8BAC5B,IAAI,CAAC,GAAA,GAAK1T,IAAI,CAAC+L,KAAK,CAAC9M,KAAK,EAAE;kCAC1B,EAAA,IAAKe,IAAI,CAAC+L,KAAK,CAAC9M,KAAK,GAAG;kCACxB,IAAI,MAAKlJ,KAAK,EAAE;sCACd1T,QAAQ6c,GAAG,CAAC;kCACd,MAAA;8BACF,OAAA,GAAA,OAAA,KAAA,iBAAA,OAAA,OAAA,KAAA,iBAAA,OAAA,OAAA,IAAA,iBAAA;8BACA,MAAKi9B,MAAM,CAACpB,oBAAoB;8BAChC,MAAKoB,CAAAA,KAAM,CAAC1B,aAAAA,SAAsB,OAAA,GAAA,IAAA;8BAClC,MAAK0B,GAAAA,GAAM,CAAC9G,eAAAA,KAAoB,GAAG,CAAA,OAAA,GAAA,kBAAA;8BACnC,MAAKgG,OAAO,GAAG,gBAAA,SAAA,OAAA,GAAA,SAAA;4BACf,IAAI,CAAC,MAAK1M,SAAS,EAAE;gCACnB,EAAA;8BACF,WAAA,GAAA,CAAA,GAAA,mBAAA,IAAA,EACA,MAAKwN,CACL,KADW,CAACzG,AACPyG,MAAM,CAACvD,YADmB,GAAG,OACA,CAAC,MAAK54B,IAAI,CAACujC,WAAW;gCACxD,EAAI,MAAKxtC,GAAAA,EAAK,EAAE;kCACd1T,KAAAA,GAAQ6c,GAAG,CACT,AAAC,uCAAqE,OAA/B,MAAKi9B,MAAM,CAAC9C,gBAAgB,IAAG;oCAE1E,OAAA;oCACA,EAAK2K,MAAAA,MAAY,CAAC,iBAAiB;oCACnC,EAAKE,UAAAA,GAAa,CAAC;oCACrB,cAAA;oCACF,cAAA,GAAA,OAAA,IAAA,iBAAA;;;oCACAM,YAAAA;gCAAAA,MAAAA,qBAAqBnzC,MAAM;gCACrBA,SAAW,iBAAkB,CAAA,IAAI,CAACgxC,SAAS,KAAK,gBAAgB,IAAI,CAACA,SAAS,KAAK,OAAM,GAAI;gCAC/FhgD,cAAa,SAAbA,MAAQ4b,IAAI,CAAC,EAAA,6CAAiD;oCAC5DQ,EAAAA,YAAc,CAAA,CAAA,EAAI,CAAC8jC,EAAAA,CAAAA,MAAAA,GAAAA,QAAoB;kCACvC/jC,WAAW,IAAI,CAACimC,gBAAgB;8CACpBpC,WAAZqC,OAAO,IAAI,AAACrC,QAAS;oCACrBhxC,EAAAA,MAAAA,OAAAA,CAAAA,KAAAA,CAAAA,MAAAA,GAAAA;gCACF;gCACF,UAAA;oCACQ6N,GAAG,CAAC,SAAA,GAAA,CAAA,GAAA,WAA2B,QAAA,GAAA,EACrCT,OACAD,CADc,IAAI,AACP,CADQ+jC,GACJ,CAACkC,gBADuB,AACP;wCACzB,GAAI,CAACpC,GAAAA,MAAS;4CACrBhxC,UAAAA;4CACF,KAAA;4CACKyyC,MAAAA,CAAgB,CAAC,AAAC,sBAA4B,OAAPzyC;4CACtCszC,QAAAA,MAAwB,IAAI,CAAChW,SAAS,IAAI,IAAI,CAAC0M,OAAO;4CACtDlH,CAAW,IAAI,CAACn0B,IAAI,CAACujC,CAAAA,SAAAA,CAAW,MAAA,GAAA,YAAA;4CAClCoB,cAAAA,CAAyBxQ,UAAU;4CAC5Bp+B,IAAK,EAAE,CAAA,GAAA,OAAA,iBAAA;4CACd1T,EAAQ6c,GAAG,CAAC,MAAA;wCACd;oCACKgjC,UAAW,CAACxG,IAAI;oCAEjB,CAACyG,YAAAA,GAAAA,CAAAA,GAAAA,CAAoB,GAAG,eAAA,GAAA,EAC9B,OACMyC,gBAAsBzQ,SAAStc,qBAAqB;wCACpDgtB,WAAAA,IAAuB1Q,SAASrc,iBAAiB;wCAClD6qB,OAAAA,kBAAgC,GAAG;4CAC1B,UAAA;4CACR,KAAA;4CACFxO,GAASliB,GAAAA,GAAO,OAAPA,CAAO,gBAAA;4CACXjS,GAAI,CAAC+L,KAAK,CAAC9M,CAAAA,IAAK,GAAG;4CACjBvF,MAAO,CAAA;4CACV,EAAI,CAAC3D,KAAK,EAAE;4CACd1T,MAAQ4b,IAAI,CAAC,CAAA,SAAA,OAAA,GAAA,YAAA,8BAA8DvE;4CAC7E,cAAA;4CACF,WAAA;4CACF,YAAA;wCACMmc,sBAA8B,IAAI,CAAC7V,IAAI,CAAC8kC,iCAAiC;oCACzEC,QAAc,IAAI,CAAC/kC,IAAI,CAACglC,cAAc,CAACnvB;iCAExC0sB,kBAAoB;4BACzBwC,QAAY/uB,UAAU;4BAEtB,EAAI,CAACstB,UAAAA,GAAAA,CAAAA,GAAAA,MAAuB,aAAA,IAAA,EACxB,IAAI,CAACvtC,EACP1T,GADY,EAAE,GACN6c,GAAG,CAAC,0BAA0B;kCACpCT,KAAAA,SAAc,IAAI,CAAC8jC,oBAAoB;oCACvClxC,QAAAA,CAAAA;oCACF,YAAA;oCACF,gBAAA;oCACIszC,OAAAA,YAAuB;oCACrB,CAACzC,IAAAA,GAAgB,OAAhBA,IAAW,CAACxG,IAAI,YAAA;gCACrBqJ,UAAY5sB,eAAe;gCAC3B,EAAI,CAACgqB,OAAAA,aAAoB,GAAG;oCAC9B,aAAA,GAAA,CAAA,GAAA,mBAAA,IAAA,EACF;;4CACA8C,SAAAA;4CAAAA,YAAAA;4CACWC,KAAAA,GAAyB,OAAzBA,EAAe,EAAA,EAAI,MAAM,SAAA;wCAChCzkC,KAAa,IAAI,CAACykC,eAAe;wCAC5BA,UAAAA,EAAe,GAAG,KAAK;4CAC9B,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EACKjC,GAAc,GAAG,IACN1V,mBAAmB,GAAG,KAAK;gDAC7BwC,WAAAA,MAAqB,GAAG;gDACxC,SAAA;;;oDACA,cAAA,4BAAkE;oDAChD,UAAA,GAAA,OAAA,KAAA,iBAAA;oDAClB,WAAA,GAAA,OAAA,KAAA,iBAAA,OAAkE;gDAClEoV;gDAAAA,OAAAA,YAAAA,UAAAA;gDACc9C,GAAS,KAAK,EAAA,YAAA,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EAAA,UAAA,OAAA,EAAA;oDAAA,MAAA,KAAA,GAAA,CAAA,IAAA,KAAA;gDAAA,KAAA,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EAAA,UAAA,MAAA,EAAA;oDAAA,MAAA,KAAA,GAAA,CAAA,IAAA,KAAA;oDAAA,OAAA;wDAAA,YAAA;oDAAA;gDAAA;4CAC5B;yFACA+C,OAAAA;gDACc/C,GAAS,IAAA;oDACvB,SAAA;;;gDACAgD;gDAAAA,cAAeC,GAAQ,EAAEjzC,IAAzBgzC,SAAeC;2DAAUjzC,OAAQ,aAAA;;gDACf,CAAG,aAAA,SAAH;2DAAG,oBAAA;;gDACdkzC,MAAmB,GAAG,CAAA,IAAK;oDAC3BjD,SAAwB,GAAG,CAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EACpB/M,UACM,EADgB,GAAG,QACF;wDACd,KAAQ+P,MAAAA,IAAUjzC;wDACzC,SAAA,SAAA;;;4DACMmzC;wDAAAA,EAActhB,MAAM;;4DAcpBuhB,SAAAA,GAgBEC,OAhBFD,EAeEE,EAAAA,YACAD,KAAAA,WAYAE,OACAC,kBAMEp1C,MAKFq1C;;;;wDArDE,CAACzD,SAAS,KAAK,QAAQ;wDACzB,CAACoB,MAAAA,WAAAA,IAAqB,CAAC,MAAA,mBAAyB;wDAClD7/C,QAAQ,EAAA,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EAAA,YAAA;4DAAA,MAAA,KAAA,GAAA,CAAA,IAAA,KAAA;wDAAA;sDACR8gD,OAAO,IAAI,CAACrC,SAAS;oDAEvB,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA;wDACF,OAAA;4DACMgB,IAAc,GAAA,CAAI,CAACpB,QAAQ,CAAClR,QAAAA,GAAa,OAAbA,EAAa,GAAA,iBAAA,QAAA;4DAC1CsS,QAAa,EAAA;4DAChBhhD,EAAQ4b,IAAI,CAAC,KAAA;4DACRgnC,SAAAA,SAAmB;4DACxB,YAAA;;;wDACF;wDACIQ,UAAAA,AAA2BvgB,EAAPhB,OAAOgB,IAAAA,GAAAA,CAAAA,GAAAA,IAAe,IAAI,OAAOhB,IAAAA,IAAOgB,EAC3DiX,CAAM,CAACnG,KACPmG,CAAM,CAAClG,GAFmE,GAAG,CACxD,CAAC9e,IAD6D,CACxD,GAD4D,CAACglB,GAE7D,CAAChlB,EAFkE,CAAC2gB,EAE9D,uBAFuF;4DAGjHpC,OAAAA,YAAmB,GAAG;gEAC7ByM,UAAAA,CAAoB,GAAG;gEAChB5M,OAAAA,GAAyB,OAAzBA,KAAAA,KAAsB,GAAG,SAAA;gEAChCwQ,EAAW,GAAG,GAAA;gEACdR,QAAAA,EAAmB,GAAGlC;gEACtBf,cAAAA,CAAwB,GAAG;4DAC3B0B,KAAY,CAAC,iBAAiB;4DAC1B/B,aAASlS,SAATkS,KAAQ,CAAClS,MAAAA,aAAqB,EAAE;gEAClCkS,EAAAA,CAAQ,CAAClS,YAAAA,SAAqB,GAAG;gEACjC,IAAA,KAAA,EAAA,aAAA;gEACAkS,GAAQ,CAACxO,OAAAA,cAAAA,GAAa;oEAC7B,IAAA,KAAA,GAAA,qBAAA;oEACqB,GAAI,CAACzzB,IAAI,CAAC+L,KAAK,CAAC9M,IAAAA,CAAK,IAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,OAAA,GAAA,GAAA,IAAA,IAAA,GAAA,KAAA;gEACpCymC,EAAgB,IAAI,CAAC1lC,IAAI,CAAC+L,KAAK,CAAC7R,MAAM;gEAClCqpC,IAAAA,CAAW,GAAG5rB,CAAAA,uBAAwB,CAACguB,cAAcD;oEACjD,CAAG,QAAA,mBAAA,CAAA,aAAA;oEACLxQ,SAAAA,UAAuB,GAAG,MAAA,CAAA,WAAA;gEAC1BgE,YAAc,GAAG;gEACjB5D,SAAAA,IAAe,GAAG,SAAA,CAAA,aAAA;gEACzBuN,CAAU,QAAA,gBAAA,CAAA,WAAA;gEACH,CAAG,GAAA,IAAA,GAAA,qBAAA;gEACN1G,CAAM,CAACrE,iBAAAA,KAAAA,GAAyB,CAAA,GAAI,KAAA,GAAQ2N,CAAAA,GAAAA,CAAAA,EAAAA,OAAAA,GAAAA,EAAAA,EAAqB,EAAA,IAAM,EAAA,KAAA;4DACzEtJ,GAAM,CAACrE,yBAAyB,GAAG2N;4DAC1C,SAAA,SAAA,QAAA;gEACKO,EAAAA,IAAe,CAAC,UAAU,IAAI,CAAC9J,UAAU,CAACzO,oBAAoB,EAAE;gEAClD0O,IAAOhH,CAAD,GAACA,EAAAA,MAAY,OAAA,CAAA,qBAAA;gEAChC0Q,KAAmB,CAAC,CAAE,CAAA,IAAI,CAAC5C,MAAAA,KAAAA,GAAc,CAAA,GAAI,IAAI,CAACA,GAAAA,CAAAA,GAAAA,CAAAA,EAAAA,IAAc,CAACgD,EAAAA,GAAAA,EAAAA,CAAQ,CAACz/C,EAAAA,IAAM,EAAA,CAAG,CAAA,GAAA;4DACrFi/C,eAAqB,QAAQ,CAACI,gBAAe,GAA7CJ;;;;;;;;;;4GACkB;oEAAWS,OAAAA,IAAoB,CAAC,IAAI,CAAClD,mBAAmB;;;wEAAxD,MAAA;wEACD,GAAI4C,KAAAA,KAAU,IAAI,CAACzJ,MAAM,CAAChH,YAAY,EAAE;;;;;oEAE7C;gEACIn1B,IAAI,CAAC9O,MAAM,CAAC8qB,YAAY,GAAG,SAAS;gEAIxD,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EACkB;oEAAWmqB,OAAAA,CAAiB,CAAC9C,aAAaoC;;;wEAA1C,MAAA,GAAA,OAAA,CAAA,WAAA,IAAA,MAAA,IAAA,KAAA;wEACA,EAAI,CAAC9W,QAAAA,CAAS,IAAIiX,UAAU,IAAI,CAACzJ,MAAM,CAAChH,YAAY,EAAE;wEACjE6O,CAAY,CAAC,KAAA,YAAiB;wEAC9BE,EAAa,CAAC,KAAA;wEACrB,YAAA;;;;;;;;oDAEIgC;;4CACEE,EAKA7S;gGALA6S,WAAWr/C,KAAKC,GAAG,KAAKq/C;;;qDACvB,CAAA,IAAI,CAAClK,KAAAA,CAAM,CAACrE,yBAAyB,IAAI,QAAQ/wC,KAAKC,GAAG,KAAKo/C,QAAO;;;;oDAC1E,YAAA;;kDAAM,IAAIx3C,QAAQ,SAACC;6DAAYa,WAAWb,SAAS;;;;;;;;;oDAAnD;oDACI,CAAC,IAAI,CAAC8/B,KAAAA,IAAS,EAAE;;;;;8FAEjB4E,aAAa,IAAI,CAAC4I,MAAM,CAACrE,yBAAyB;4CACxD,GAAA,CAAI,CAAC2L,qBAAqB,CAAC,uBAAuB;kDAChD6C,GAAAA,UAAaD,YAAYp/C,KAAKsG,GAAG,CAAC,GAAG64C,WAAWr/C,KAAKC,GAAG;kDACxDusC,MAAAA,MAAAA;iDACAgT,GAAUhT,OAAVgT,IAAAA,IAAUhT,aAAAA,EAAc;4CAC1B;4CACA,MAAA;;;;;;;wDAAOA,SAAAA,GAAAA,CAAAA,GAAAA,mBAAAA,IAAAA;;wDACT,SAAA,SAAA;;;;wDAIM4S,OAAAA;4DAAN,SAAA,GAAA,OAAA,IAAA,iBAAA,OAHkE,OAGlE,KAAA,KAHkE,YAAA;4DAClE,cAAA,GAA2C,OAAA,IAAA,iBAAA;4DAC3C,UAAA,GAAA,OAAA,KAAA,iBAAA,MAAkE;4DAC5DA,CAAkB9C,WAAW,EAAE1P,eAAe;;4DAE5C6S,MAWAZ,KAAAA,CAEApC,EAEAiD,OAFAjD,KAAAA,EAMAkD,IALAvS,cAiBaA,yBAAXwS,UA4BCjtC;;;;4DA3DH8sC,OAAa,CAAC,CAAE,CAAA,IAAI,CAACvD,cAAc,IAAI,IAAI,CAACA,cAAc,CAACgD,QAAQ,CAACz/C,MAAM,GAAG,CAAA;4DAC/E,EAAI,CAACy8C,cAAc,IAAI,IAAI,CAACA,cAAc,CAACgD,QAAQ,CAACz/C,MAAM,GAAG,GAAG;yDAClEogD,QAAS,IAAI,CAAC3D,cAAc,CAACgD,QAAQ,CAAC,EAAE;sDACxC,IAAI,CAAChB,mBAAmB;wDAExB2B,SAAS,IAAI,AAAM3S,CAALj0B,IAAI,CAACi0B,OAAAA,GAAAA,CAAAA,GAAAA,IAAkB,CAACoP,aAAa1P,CAAAA,GAAAA,EACrD,OACA,EAAI,CAACiT,QAAQ;wDACX,OAAA;;8DAAO,MAAA;;4DACT,cAAA;4DACKC,YAAAA,OAAoB,CAACD,QAAQJ,aAAa,aAAa;4DACtDZ,EAAQ,IAAI,CAACzJ,MAAM,CAAChH,EAAAA,UAAY;4DACjCqP,mBAAoB,CAAC,EAAA;4DACpBhB,OAAa,IAAI,CAACjB,EAAAA,kBAAoB;4DACtCpO,KAAW,GAAA,CAAI,CAACn0B,IAAI,CAACujC,WAAW;4DAChCkD,SAAe,CAAA,CAAE,IAAI,CAACtK,MAAM,CAAC/G,qBAAqB;4DACnD+G,KAAM,CAAC9G,IAAAA,gBAAoB,GAAGoR;4DAC9BzC,WAAY,CAAC,cAAc;4DAC3B8C,WAAAA,MAAkB,CAAC3S,UAAUsS,cAAc;wDAC1CC,SAAa,IAAI,CAACK,qBAAqB,CAACH;wDAC1C,CAAC3C,SAAAA;4DAAAA,IAAc;4DAAA,CAAGyC;4DAAAA;4DAAAA;4DAAAA;4DAAAA;4DAAAA;4DAAAA;yDAAAA,CAAAA,GAAAA,CAAAA,SAAAA;mEAAAA,aAAAA,GAAAA,CAAAA,GAAAA,mBAAAA,IAAAA;;;;;;;;;oEAEpB,QAAA;;oEAAWvK,KAAM,CAAC9B,EAAAA,oBAAsB;;;oEAAxC,YAAA,iBAAA,QAAA,QAAA;oEACS2M,MAAO,CAACpB,IAAAA,GAAOpC,aAAa;;gEAAO;;oEACvCrH,CAAM,CAAC5B,EAAAA,iBAAAA,GAAsB,CAACkM,GAAAA;wEACnC,EAAA,MAAA,CAAA,KAAA,CAAA,UAAA,GAAA;;oEAAWQ,aAAc,CAAC;uEAAM9S,SAAS5d,UAAU,CAACmwB;;;;wEAApD,EAAA,MAAA,CAAA,KAAA,CAAA,KAAA,GAAA;oEACKvK,CAAM,CAAC1B,sBAAsB;gEAC1B,CAACuM,OAAO,CAACpB,OAAOpC,aAAa;gEAC/B,CAACC,SAAAA,YAAqB,CAAC,gCAAgC;oEAAEjlC,SAAWioC;oEAAa;iEACrF;iEAAO;;oDACT;;4CAEA,IAAIE,WAAW,GAAG;kDAChB,IAAI,GAAA,CAAI,CAACxK,CAAAA,CAAAA,GAAAA,CAAM,CAAC9G,iBAAAA,GAAAA,AAAoB,KAAKoR,KACvC,IAAI,CAACtK,CACP,GAFuD,EAC1C,CAAC9G,oBAAoB,GAAG;kDAErC,IAAI,CAAC6R,IAAAA,gBAAoB,CAAC,IAAIv9B,MAAM,qBAAqBi9B;yDACzD,WAAA;;0DAAO;;wDACT,IAAA,CAAA,SAAA,iBAAA,EAAA;4DACK5C,SAAY,CAAC,CAAA,OAAA,CAAS,iBAAA,GAAA,KAAA,CAAA,YACnB,CAACjuC,KAAK,EAAE;wDACd1T,MAAQ6c,CAAAA,EAAG,CACTynC,aAAa,IAAI,6EAA6E,AAAC,gCAAwC,OAATA,UAAS;4DAE3I,SAAA,cAAA,GAAA,KAAA,CAAA,YACAjoD,aACE,IAAI,CAACshB,IAAI,CAAC9O,MAAM,CAACyqB,UAAU,EAC3B;wDAAE/3B,MAAQ;oDAAOib,SAAS6nC;oDAAY7nB,WAAW,CAAC,aAAa,GAAG,IAAI93B,QAAQoQ,WAAW;gDAAG,CAC5F,IAAI,CAAC+rC,gBAAgB,EACrBt3B,KAAK,CAAC,YACR;gDACA,EAAI,CAACuwB,IAAAA,EAAM,CAACrB,oBAAoB,CAAC2L;oDACjC,SAAA,GAAA,OAAA,IAAA,iBAAA;;oDAAM,IAAI,CAACQ,KAAAA,GAAe,OAAfA,KAAAA,CAAc,CAAC,eAAA;+DAAM9S,GAAa,OAAbA,KAAAA,CAASriB,IAAI,YAAA;;;;;;;;4CAA7C;;8CAC4C;0CAC5C,IAAI,IAAI,CAACqqB,MAAM,CAACrE,yBAAyB,IAAI,QAAQ,IAAI,CAACqE,MAAM,CAAC/D,wBAAwB,MAAM,MAAM;4CACnG,IAAI,CAAC+D,MAAM,CAAClE,6BAA6B;wCAE3C9D,SAASpc,WAAW,CAACypB,iBAAiBrN;sCACtC;;kDAAO,iBAAA,IAAA;8CACAz6B;gDACP,IAAI,CAACyiC,MAAM,CAAC1B,sBAAsB;4CACtBM,WAAZ,CAAA,GAAI,CAACoB,MAAM,CAACpB,MAAAA,eAAoB;6CAChB1F,UAAhB,EAAA,EAAI,IAAI,CAAC8G,MAAM,CAAC9G,GAAAA,kBAAoB,KAAKoR,cAAc;oDACrD,IAAI,CAACtK,MAAM,CAAC9G,oBAAoB,GAAG;gDACrC;gDACA,IAAI,IAAI,CAAC2R,OAAO,CAACpB,OAAOpC,aAAa;oDACnC,IAAI,CAACC,qBAAqB,CAAC,gCAAgC;wDACzDjlC,OAAAA,IAAWioC;wDACXp8B,YAAY,EAAE3Q,kBAAAA,4BAAAA,MAAO4Q,OAAO;kDAC9B;kDACA;kGAAO;gDACT;kDACA,CAAA,GAAI,IAAI,CAACvU,KAAK,EAAE;sDACd1T,QAAQ4b,IAAI,CAAC,4CAA4CvE;kDAC3D,QAAA;kDACA,IAAI,CAACwtC,CAAAA,mBAAoB,CAACxtC,OAAOktC;kDACjC,KAAA;;oDAAO;;;;;4CAEX,YAAA;;;;4CACA,YAAA,wCAAkE;4CAClE,YAAA,YAAsC;wCACtC,sDAAkE;wCAClE5C,UAAAA;oCAAAA,MAAAA,aAAahwC,IAAI,EAAE3C,MAAM;iCAEvB,CAAM81C,WAAW,IAAI,CAAC9E,SAAS;4BAC/B,IAAI,CAACA,SAAS,GAAGruC;kCAEf3R,OAAAA,CAAQ6c,GAAG,CAAC,AAAC,EAAA,kBAAkClL,CAAAA,IAAAA,EAAfmzC,QAC9B91C,EADuC,KAEvCkN,CADAlN,EADkD,MAEzC,CAFoC2C,GAEhC,CAACmoC,GAFuC,GAEjC,CAAChH,YAAY;sCACjC32B,KAAAA,MAAW,IAAI,CAACimC,gBAAgB;sCAChChmC,CAAAA,aAAc,IAAI,CAAC8jC,oBAAoB;oCACzC,UAAA;oCACF,QAAA,GAAA,OAAA,KAAA,iBAAA;oCACF,OAAA,GAAA,OAAA,KAAA,iBAAA;;;oCACAyE,YAAAA,aAAAA,aAAAA;oCAAAA,KAAAA,GAAexD,OAAfwD,IAAAA,IAAQpB,KAAK,EAAEpC,MAAAA,KAAU;oCACvB,GAAO,CAAC,IAAI,CAAC7U,SAAS,IAAIiX,UAAU,IAAI,CAACzJ,MAAM,CAAChH,YAAY,IAAIqO,eAAe,IAAI,CAACjB,oBAAoB;oCAC1G,SAAA,kBAAA,IAAA;;;gCACA6E;iCAAAA,SAAAA;oCACQ5N,aAAa,IAAI,CAACx5B,EAAAA,EAAI,CAAC9O,MAAM,CAACm2C,SAAAA,IAAAA,EAC9BngD,MAAQ,CACV,GAFyD,AAC3C,CAACi1C,CACR3C,KADc,CAACD,SACA,YAAYC,KADc,SACA,GAAG;wCACrD,GAAOvyC,IAAAA,CAAKsG,GAAG,CAACisC,YAAYtyC;4CAC9B,SAAA;4CACOD,EAAKsG,GAAG,CAAC,IAAI,CAAC+5C,CAAAA,+BAAgC,EAAEpgD;4CACzD,YAAA;;;4CACAqgD,cAAAA,GAAAA,OAAAA,IAAAA,iBAAAA;wCAAAA,IAAAA;wCACQ/N,cAAkBx5B,IAAI,CAAC9O,IAAvBsoC,SAAa,IAAI;mDAAMtoC,KAAM,CAACs2C,cAAAA,IAAkB;;wCAClD,GAAOhO,WAAAA,IAAe,KAAtB;mDAAsB,UAAYA,UAAAA,GAAa,GAAG,OAAOA;;wCACtD,GAAI,CAACuM,MAAAA,KAAW,KAAK,WAAW,IAAI,CAAChD,6BAA6B,GAAG,IAAI,CAACD,yBAAyB;4CAC5G,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA;gDACA2E,WAAAA;gDAAAA,SAAAA,SAAAA;oDACc1B,IAAAA,GAAW,KAAK,EAAA,OAAA,EAAA,CAAY,IAAI,CAAC5J,IAAAA,EAAM,CAACrE,IAAAA,CAAAA,UAAAA,UAAyB,IAAI;oDACnF,2BAAA,qCAAA;;;gDACA4P,OAAAA;oDAAAA,SAAAA,GAAmC,OAAnCA,IAAAA,IAAwB/Q,WAAW,EAAA;oDACxBoP,IAAW,KAAK,KAAA,GAAQ;oDACtBlD,OAAU,CAACr8C,EAAAA,GAAqB,OAArBA,CAAM,IAAA,CAAK,GAAG,OAAO,MAAA;oDAC3Bu/C,WAAW,GAAuBR,OAAvB,EAAK,GAAA,MAAqC,EAAE,CAA3B,CAAC,IAAI,CAACA,EAAAA;gDACzC;gDACT,OAAA,WAAA,WAAA;gDACSpJ,CAAM,CAACzG,QAAAA,AAAuB,WAAJ,EAAA,EAAI,CAAA,CAAA,EAAI,CAACyG,MAAM,CAACxG,YAAAA,GAAAA,EAAAA,KAAsB,EAAE,KAAA;oDAAA,MAAA,KAAA,GAAA,CAAA,IAAA,KAAA;gDAAA;4CAClE;4CAEA2M,aAAAA,GAAAA,CAAAA,GAAAA,GAAwB,IAAI,IAAI,CAACiF,OAAAA,GAAAA,EACjC,OACT,EAF+D,IAAI;gDAG1DpL,CAAM,CAAC5G,KAAAA,iBAAsB,IAAI,IAAI,CAAC4G,MAAM,CAAC3G,0BAA0B,EAAE;oDACzE,OAAA,mBAAA,GAAA,OAAA,KAAA,iBAAA,QAAA;oDACT,UAAA;oDACgBuE,YAAAA,GAAe,IAAI;oDAC1B,SAAA;oDACT,YAAA;oDACS0N,WAAkB,EAAA,IAAM9Q,cAAc,CAAA,GAAKyQ,OAAD,CAACA,GAAAA,iBAAAA,QAAAA,GAA4B,IAAI;oDAC3E,cAAA,mBAAA,GAAA,OAAA,KAAA,iBAAA,QAAA;gDACT;gDACY,UAAA,aAAA,GAAA,CAAA,GAAA,mBAAA,IAAA,EACd;;wDACAO,UAAAA;wDAAAA,OAAAA,GAAAA,OAAAA,KAAAA,iBAAAA;wDACwBxL,MAAM,CAACzG,CAAAA,kBAAmB;wDAChCkS,KAAW,GAAA,CAAI3gD,KAAKgT,GAAG,CAAC,IAAI,CAACkiC,MAAM,CAACtG,aAAa,GAAG5uC,KAAKkzC,GAAG,CAAC,GAAGyN,WAAW,IAAI,CAACzL,MAAM,CAACrG,YAAY,IAAI;wDACnG,EAAI,CAACqG,MAAM,CAACvG,IAAAA,kBAAsB,GAAGsE;oDACvCnzC,GAAKC,GAAG,KAAK,IAAI,CAACm1C,MAAM,CAAC1G,iBAAiB;oDAC5C,CAAGoS,YAAAA,SAAH,YAAGA,CAAcC;wDACnC,EAAA,cAAA;;;4DACA5D,IAAAA,KAAAA,GAAAA,qBAAAA;4DAAAA,IAAc6D,OAAO,QAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,GAAA,OAAA,GAAA,GAAA,IAAA,IAAA,GAAA,KAAA;;wDACA,CAAE,GAAA,KAAA;4DACH,CAAK,QAAA,SAAiB,UAAA,CAAA,aAAA;4DACjCtE,QAAqB,CAAC,mBAAA,CAAA,EAAsB,SAAA;wDAC/CsE;wDACY1F,SAAS,gBAAA,CAAA,aAAA;wDAChB,SAAA,gBAAA,CAAA,WAAA;wDACP,IAAA,IAAA,GAAA,qBAAA;wDACA,mBAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,EAAA,OAAA,GAAA,EAAA,IAAA,IAAA,EAAA,KAAA;oDACF;oDACS2F,SAAiB,SAAjBA,IAAa,IAAI,IAAM;wDACzBvE,EAAAA,QAAqB,CAAC,MAAA,gBAAsB;wDAC/CsE,IAAAA,IAAAA,EAAAA,aAAAA,CAAAA,qBAAAA;wDACY1F,SAAS,UAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,EAAA,OAAA,GAAA,EAAA,IAAA,IAAA,EAAA,KAAA;oDAChB;oDACP,UAAA;wDACA,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EAAA,OAAA;4DAAA,OAAA;gEAAA,UAAA;gEAAA,OAAA;gEAAA,YAAA;gEAAA,cAAA;4DAAA;wDAAA;wDACF,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EACwB,CAAClG,MAAM,AACPuL,CADQrO,gBAAgB,MACD,CAAC1C;4DAChC,OAAA;gEACT8M,IAAqB,CAAC,KAAA,eAAoB;gEAC7CsE,KAAAA;gEACU,MAAA;gEACFE,QAAAA;gEACRtR,OAAAA,GAAAA,OAAAA,CAAAA,WAAAA,IAAAA,MAAAA,IAAAA,KAAAA;gEACkB,CAACwF,MAAM,CAAC5G,IAAAA,kBAAsB;gEAChD2S,CAAmB,IAAI,CAAC5F,QAAAA,gBAAwB;gEAChD5M,GAAqB,IAAI,CAACyG,IAAAA,EAAM,CAACzG,mBAAmB;4DACtD;wDACKyS,MAAmB,CAACF;wDAE3B,aAAA,GAAA,CAAA,GAAA,mBAAA,GAAA,EACoBN,OACE,CAACF,SADkB,SACA,MAAM9Q,cAAc2D,SAAS,IAAI,CAAC8M,4BAA4B,IAAI;4DACpG3D,MAAqB,CAAC,oBAAoB;gEAC7CsE,UAAAA;gEACU,KAAA;gEACF,MAAA,GAAA,OAAA,CAAA,WAAA,IAAA,MAAA,IAAA,KAAA;gEACRpR,WAAAA;gEACA2D,OAAAA;gEACF,QAAA;gEACK6N,EAAmB,CAAC,SAAA;gEACzB,cAAA;gEACF,WAAA;gEAC0B,CAAC,WAAA,SAAoB;4DAC7CJ;wDACUzN,CAAS,IAAI,wBAAwB;qDAE/C3D;gDACAjB,SAAqB,IAAI,CAACyG,MAAM,CAACzG,mBAAmB;4CAElD4E,CAAS,GAAG;yCAEZ,GAAI,CAAC6H,oBAAoB,GAAG;sCAC5B,IAAI,CAACniC,IAAI,CAACujC,WAAW,GAAGprB,eAAe;oCAEzC,IAAMytB,QAAQ,CAAA,GAAI,CAACzJ,GAAAA,GAAM,CAAChH,YAAY,GAAA,GAAA,EACtC,EAAI,CAAC6S,SACH,IADgB,EACXA,CADc1kD,OAAOoM,KACR,GAAG,EADe,CAAC,EACX;wCAC1B,IAAI,CAAC,MAAKi/B,SAAS,IAAIiX,UAAU,MAAKzJ,MAAM,CAAChH,YAAY,EAAE;iDACtD+O,SAAL,CAAkB,CAAC,AAAC,GAAU,CAAzBA,MAAiB6D,SAAQ;4CAC7BzN,IAAAA,oBAAAA;gDACH;4CACF,OAAA,IAAA,WAAA,OAAA,EAAA;gDACU8N,IAAAA,CAAAA,SAAAA,CAAiB,CAACL,eAAAA,EAAAA;oDAC9B,WAAA,OAAA,CAAA,iBAAA,GAAA,KAAA,CAAA;;oDACMK,SAAAA,cAAAA,GAAAA,KAAAA,CAAAA,YAAAA,gBAAkBL,OAAO;;4CACzB98C,GAQE26C;;;;kDAPN,GAAA,AAAI,GAAqB,OAArB,EAAI,CAACG,CAAAA,UAAW,KAAK,EAAA,OAAQ;sDAC/B96C,IAAAA,EAAM,IAAI,CAAC43C,UAAU,CAAC5Y,KAAK;kDAC7B,IAAA,GAAgBsb,OAAT,IAAI,CAAA,GAAI,CAACA,aAAAA,OAAmB,EAAE;sDACnCt6C,CAAAA,GAAWk4C,OAAXl4C,EAAM,GAAA,CAAI,CAACk4C,eAAAA,EAAgB,CAAC,IAAI,CAACoC,mBAAmB;kDACtD,MAAA;gDACA,IAAI,CAACt6C,KAAK;;;;;;;8CACV,IAAI,CAAC47C,oBAAoB,CAAC/5C,kBAAkB7B,MAAM88C;;;;;;;wCAGhD;;8CAAM,IAAI,CAACM,YAAY,CAACp9C,KAAK88C;;;0CAA7B;;;;;;oCAEA,IAAI,CAACO,2BAA2B,CAAC1C;;;;QAoB7B2C,0BAASp9C;;;;;;;;;;;;;;;;;;;;;;;;kBAlBjB;;;;cACAm9C,KAAAA;qBAAAA,SAAAA;sBAA4B1C,QAAAA,iEAAQ,IAAI,CAACzJ,MAAM,CAAChH,YAAY;kBAC1D,IAAI,CAAC,IAAI,CAACxG,SAAS,IAAIiX,UAAU,IAAI,CAACzJ,MAAM,CAAChH,YAAY,EAAE;kBAC3D,IAAI,CAAC6O,YAAY,CAAC,iBAAiB;kBACnC,IAAI,CAACE,aAAa,CAAC;cACrB;;;0EACAsE;;6BAAAA,yIAAAA;gBAAAA,EAAAA;yBAAAA,CAAAA,MAAAA,GAAAA,EAAAA,SAAAA,CAAAA,MAAAA,EAAAA;wBACE,IAAI,IAAI,CAACR,aAAa,IAAI,MAAM;0BAC9BvnC,aAAa,IAAI,CAACunC,aAAa;wBAC/B,IAAI,CAACA,aAAa,GAAG,KAAK;;;;;;;;;;;;;;;cAC5B,UAAA;cACF;;;cACAnB,KAAAA;mBAAAA,SAAAA,qBAAqB57C,GAAG,EAAErH,MAAM;;;;;sBAC9B,GAAA,CAAIuH,MAAAA,KAAAA,SAAAA,CAAAA,MAAAA,EAAAA;wBACJ,IAAI;0BACFA,SAAS,IAAIkB,IAAIpB,KAAKuB,YAAY;oBACpC,EAAE,eAAM,CACR;;;;;;;;;;;;;;;gBACA,IAAM+7C,EAAAA,EAAAA,2BAAAA,UAAAA,IAASp9C,SAAAA,cAATo9C,sCAAAA,2BAASp9C,MAAAA,IAAAA,KAAAA,SAAAA,EAAAA,2BAAAA,UAAAA,OAAQpQ,GAAG,CAAC,EAAA,cAAZoQ,sCAAAA,2BAAY,OAAA,oCAAc,KAAK;kBAC9C,IAAI,CAACs4C,qBAAqB,CAAC,sBAAsB;oBAC/CjlC,WAAW,KAAK;oBAChB5a,QAAAA;kBACAyJ,GAAG,WAAElC,mBAAAA,6BAAAA,OAAQpQ,GAAG,CAAC,+CAAU,KAAK;oBAGhC0tD,IAAI,GAAA,QAAEt9C,mBAAAA,6BAAAA,OAAQpQ,GAAG,CAAC,gDAAW,KAAK;oBAClCwtD,QAAAA,QAAAA,UAAAA;gBAEF,IAAIA,WAAW,WAAWA,WAAW,eAAe;oBAClDlmD,QAAQ4b,IAAI,CACV,AAAC,eAEH,IAAI,CAAC6lC,gBAAgB,CAAC,EAF0B,OAAPyE,QAAO;gBAGlD,GAAA;cACF;;;cACArB,KAAAA;qBAAAA,SAAAA,qBAAqBxtC,KAAK,EAAEyP,UAAU;sBAchBu/B;kBAbpB,IAAMA,OAAO,IAAI,CAACjE,gBAAgB,IAAI,OAAO,IAAI,CAACjC,kBAAkB,CAACznD,GAAG,CAAC,IAAI,CAAC0pD,gBAAgB,IAAI,KAAK;kBACvG,IAAMn6B,UAAU5Q,CAAAA,kBAAAA,4BAAAA,MAAO4Q,OAAO,KAAI;kBAClC,IAAI9J;kBACJ,IAAI8J,QAAQre,QAAQ,CAAC,+BAA+B;sBAClDuU,UAAU;kBACZ,OAAO,IAAI8J,QAAQre,QAAQ,CAAC,uBAAuB;sBACjDuU,UAAU;kBACZ,OAAO,IAAI,mCAAmCnd,IAAI,CAACinB,UAAU;sBAC3D9J,UAAU;kBACZ,IAAA,GAAO,IAAI,WAAWnd,IAAI,CAACinB,UAAU;sBACnC9J,UAAU;kBACZ,EAAA,KAAO,IAAI,qBAAqBnd,IAAI,CAACinB,UAAU;sBAC7C9J,UAAU;kBACZ,IAAA,GAAO,IAAIkoC,QAAQ,EAACA,oBAAAA,KAAKC,WAAW,cAAhBD,+BAAAA,oBAAoB,KAAK,KAAK,CAACA,KAAKE,eAAe,EAAE;sBACvEpoC,IAAAA,MAAU;kBACZ,CAAA,MAAO;sBACLA,EAAAA,QAAU;kBACZ,QAAA;kBACA,IAAI,CAAC27B,MAAM,CAACzG,mBAAmB;kBAC/B,IAAIl1B,YAAY,aAAaA,YAAY,mBAAmBA,YAAY,oBAAoB;sBAC1F,IAAI,CAAC8hC,wBAAwB;kBAC/B,OAAA;kBACA,IAAI9hC,KAAAA,OAAY,WAAW;sBACzB,IAAI,CAAC27B,MAAM,CAACnC,eAAe;kBAC7B;kBACA,IAAI0O,QAAQ,CAACA,KAAKG,aAAa,EAAE;sBAC/BH,KAAKG,aAAa,GAAG,AAAC,GAAcv+B,OAAZ9J,SAAQ,MAAY,OAAR8J;kBACtC;kBACA,IAAI,IAAI,CAAC6xB,MAAM,CAACxC,kBAAkB,CAACjgC,QAAQ;sBACzC,IAAI,CAACyiC,MAAM,CAAClG,oBAAoB,CAACzqC,GAAG,CAAC2d,YAAYpiB,KAAKC,GAAG;kBAC3D,OAAO,IAAIwZ,YAAY,oBAAoB;sBACzC,IAAI,CAAC27B,MAAM,CAACnG,cAAc,CAAC31B,GAAG,CAAC8I;kBACjC;kBACA,EAAA,EAAI,CAAC26B,gBAAgB,CAAC,AAAC,mBAA0B,OAARtjC;kBACzC,IAAI,CAACijC,CAAAA,oBAAqB,CAAC,mBAAmB;sBAC5CjjC,SAAAA;oBACA6J,cAAcC;oBAEdg4B,0BAA0B,IAAI,CAACA,wBAAwB;oBACvDqG,QAAAA,GAAW,EAAED,iBAAAA,2BAAAA,KAAMC,WAAW;oBAC9BG,KAAAA,IAAAA,MAAe,EAAEJ,iBAAAA,2BAAAA,KAAMI,eAAe;gCACnC,CAAA,GAAI,CAACC,kBAAkB,CAACL;YAE/B,KAAA,mBAAA;;;cACA,kEAAkE;cAClE,2BAA2B;YAC3B,kEAAkE;YAClE3E,KAAAA,GAAAA,uBAAAA;qBAAAA,QAAAA,CAAAA,cAAAA,OAAAA,GAAwB/lC,OAAO,CAAA,IAAA,YAAA,KAAA,OAAA,WAAA;gBAC7B,IAAMQ,YAAYR,QAAQQ,SAAS;gBACnC,IAAI,OAAOA,UAAAA,IAAc,UAAU;kBACnC,IAAMkqC,IAAAA,GAAO,IAAI,CAAClG,KAAAA,OAAAA,MAAkB,CAACznD,GAAG,CAACyjB;gBACzC,IAAI,CAACkqC,IAAAA,EAAM,WAAA,CAAA;kBACX,OAAQ1qC,QAAQK,KAAK,SAAA;oBACnB,KAAK;wBACHqqC,KAAKM,cAAc;0BACnB,OAAA,CAAA,IAAA,MAAA,CAAA,GAAA;oBACF,KAAK;2CACHN,KAAKO,cAAc,GAAGjrC,QAAQkM,UAAU;wBACxC;oBACF,EAAA,GAAK,CAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA;0BACHw+B,GAAAA,EAAKC,WAAW,GAAG3qC,QAAQuN,cAAc;4CACzC;wBACF,KAAK,CAAA,SAAA;gBACA,gCAAA,MAAA,KAAA,CAAA,gBAAA,mBAAL,KAAK,CAAA;8BACH,IAAI,OAAOvN,QAAQ0M,KAAK,KAAK,UAAU;oCACrCg+B,KAAKQ,YAAY,GAAGjiD,KAAKsG,GAAG,CAACm7C,KAAKQ,YAAY,EAAElrC,QAAQ0M,KAAK;kCAC/D,WAAA,KAAA,GAAA,QAAA,mBAAA,MAAA,OAAA,CAAA,OAAA,QAAA;gCACA,IAAI1M,QAAQK,KAAK,KAAK,mBAAmBqqC,KAAKS,cAAc,GAAG;kCAC/D,QAAA;4BACF,KAAK;8BACHT,KAAKU,mBAAmB;4BACxB,IAAIprC,QAAQ0G,WAAW,EAAEgkC,KAAKW,mBAAmB;0BACjD;sBACF,KAAK,QAAA,aAAA;4BACHX,KAAKY,WAAW,GAAG;4BACnB,CAAA,gBAAA;0BACF,CAAA,SAAA,GAAK,IAAA;gCACHZ,KAAKE,eAAe,GAAG;8BACvBF,KAAKI,eAAe;8BACpB;wBACF;8BACE,IAAI/G,uBAAuBl9C,GAAG,CAACmZ,QAAQK,KAAK,KAAK,CAACqqC,KAAKG,aAAa,EAAE;gCACpEH,KAAKG,aAAa,GAAG7qC,QAAQ3M,MAAM,GAAG,AAAC,GAAmB2M,OAAjBA,QAAQK,KAAK,EAAC,KAAkB,OAAfL,QAAQ3M,MAAM,IAAK2M,QAAQK,KAAK;0BAC5F;oBACJ;cACF;;;YACAkrC,gBAAAA,IAAAA;qCAAAA;QAAAA;;qBAAAA,EAAAA,EAAAA,KAAAA,EAAAA,yBAA2B/qC,SAAS,EAAEgrC,SAAS;oBAQLd,KAAAA,KAAAA;kBAPxC,IAAIlqC,MAAAA,OAAa,EAAA,IAAM,KAAA;iBACvB,IAAMkqC,EAAAA,KAAO,EAAA,CAAI,CAAClG,kBAAkB,CAACznD,GAAG,CAACyjB;sBACzC,GAAA,CAAI,CAACkqC,IAAAA,CAAAA,CAAM,GAAA,GAAA;wBACX,GAAA,CAAI,CAAClG,GAAAA,EAAAA,OAAAA,MAAkB,CAAC/2C,MAAM,CAAC+S,CAAAA,qBAAAA,KAAAA,CAAAA;wBAC/B,IAAI,CAACkqC,IAAAA,CAAKE,CAAAA,MAAAA,CAAAA,IAAAA,GAAe,IAAI,CAACF,KAAKG,aAAa,IAAIW,WAAW;0BAC7Dd,KAAKG,aAAa,GAAGW;wBACvB,KAAA,CAAA,QAAA,qBAAA,KAAA,MAAA,CAAA,IAAA;sBACA,IAAMC,iCAAiC,EAACf,oBAAAA,KAAKC,WAAW,cAAhBD,+BAAAA,oBAAoB,KAAK,KAAK,CAACA,KAAKE,eAAe;oBAC3F,IAAIa,gCAAgC;sBAClC,IAAI,CAAC3F,gBAAgB,CAAC;;SACxB;KAAA,QAAA,qBAAA;gBACA,IAAQv6B,YAAyBm/B,KAAzBn/B,WAAcmgC,oCAAWhB;;;gBACjCrmD,QAAQ6c,GAAG,CAAC,8BAA8B,wCACrCwqC;oBACHnW,IAAAA,QAAYxsC,GAAAA,EAAKC,GAAG,KAAKuiB,KAAAA,OAAAA,QAAAA;oBACzBkgC,GAAAA,eAAAA,cAAAA,CAAAA,WAAAA,MAAAA,IAAAA,WAAAA,MAAAA,CAAAA,QAAAA;;YAEJ,IAAA,cAAA,iCAAA,IAAA,CAAA,UAAA,SAAA;;;YACA,IAAA,SAAA,aAAA,CAAA,uCAAkE;cAClE,KAAA,MAAA,WAAsB,CAAA;YACtB,kEAAkE;YAClEE,KAAAA,GAAAA;qBAAAA,OAAAA,EAAAA,qBAAqBC,aAAa;gBAChC,IAAMzgC,KAAAA,QAAarc,KAAAA,CAAAA,YAAkB88C;kBACrC,CAAA,GAAMxG,GAAAA,SAAYn8C,EAAAA,CAAAA,EAAKgT,GAAG,CACxB,IAAI,CAACkiC,MAAM,CAACjE,yBAAyB,IACrC,IAAI,CAACiE,MAAM,CAAC9D,4BAA4B;gBAE1C,IAAI,CAAE+K,CAAAA,YAAY,CAAA,GAAI,OAAOj6B;oBAE3B,IAAMle,MAAM,IAAIoB,IAAI8c;oBACpB,CAAA,GAAI,CAACle,IAAIuB,YAAY,CAAC3H,GAAG,CAAC,SAAS,OAAOskB;oBAC1C,IAAM0gC,QAAQ5iD,KAAKuG,KAAK,CAAC41C;oBACzBn4C,EAAAA,EAAIuB,YAAY,CAAChB,GAAG,CAAC,QAAQhB,OAAOq/C;oBACpC,GAAA,CAAMC,QAAQ/lD,OAAOkH,IAAIuB,YAAY,CAACzR,GAAG,CAAC;oBAC1C,GAAA,CAAIgJ,OAAOyS,QAAQ,CAACszC,UAAUA,QAAQD,OAAO;wBAC3C5+C,IAAIuB,YAAY,CAAChB,GAAG,CAAC,QAAQhB,OAAOq/C;kCACtC;wBACA,GAAA,IAAO5+C,IAAI1D,QAAQ,EAAA,OAAA;oBACrB,EAAE,QAAA,IAAA,CAAA,EAAM,MAAA,UAAA,IAAA,CAAA;sBACN,OAAO4hB;+BACT;gBACF,IAAA,OAAA,QAAA,UAAA,OAAA;;;4BACA4gC,KAAAA;uBAAAA,IAAAA,KAAAA,GAAAA,UAAAA,OAAAA;wBAAuB7iD,QAAAA,IAAAA,CAAAA,4DAAQ,IAAI,CAAC8iD,gBAAgB;kBAClD,IAAI,CAAC9iD,OAAO,OAAO,CAAC;gCACpB,OAAO;wBACL+iD,GAAAA,QAAAA,EAAa/iD,MAAMqL,EAAAA,IAAM,GAAA;wBACzBN,QAAAA,IAAY/K,CAAAA,KAAM+K,UAAU;sBAC5Bi4C,aAAahjD,MAAMtD,MAAM;mCACzBumD,aAAajjD,MAAMmK,MAAM;wBACzB+4C,GAAAA,QAAAA,IAAeljD,MAAMiL,OAAAA,CAAQ;wBAC7Bk4C,QAAAA,IAAAA,CAAAA,OAAoBnjD,CAAAA,KAAM0J,YAAAA,IAAAA,CAAAA,GAAoB;sBAC9C05C,YAAYpjD,MAAMmL,QAAQ;gBAC5B;;;YAEF02C,kBAAAA,CAAAA;;;;;;gDACE,IAAI,CAACL,QAAQA,KAAK6B,YAAY,KAAK,KAAK,GAAG,OAAO,CAAC;qBACnD,EAAA,KAAO;yBACLA,cAAc7B,KAAK6B,YAAY;yBAC/Bt4C,YAAYy2C,KAAKz2C,UAAU;;iGAsC/BwxC,EAAAA;;;;4CArCIyG,CAAAA,CAAAA,WAAaxB,CAAAA,IAAKwB,CAAAA,OAAAA,KAAW,CAAA,GAAA,EAAA;;;;;;;;;;;0CAE7BG,GAAAA,EAAAA,eAAoB3B,KAAK2B,kBAAkB;wCAC7C,KAAA,CAAA,OAAA;kCACF,KAAA,MAAA,GAAA;;;kCACAtD,GAAAA,EAAAA,KAAAA,KAAAA,CAAAA,GAAAA;yCAAAA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,YAAAA,GAAsB97C,GAAG;oCACvB,IAAM/D,QAAQ,IAAI,CAAC8iD,gBAAgB;oCACnC,GAAA,GAAI,CAAC9iD,CAAAA,CAAAA,KAAO,GAAA,IAAO+D,CAAAA,KAAAA,SACnB,CAAA,GAAMzB,KAAAA,GAAAA,CAASsJ,MAAAA,KAAAA,CAAAA,QAAAA,EAAoB7H,KAAK/D;oCACxC,GAAA,GAAMwhD,EAAAA,CAAAA,IAAO,CAAA,GAAI,CAACjE,CAAAA,KAAAA,GAAAA,OAAgB,IAAI,CAAA,GAAA,GAAO,IAAA,EAAI,CAACjC,EAAAA,CAAAA,KAAAA,UAAkB,CAACznD,GAAG,CAAC,IAAI,CAAC0pD,gBAAgB,IAAI,KAAK;oCACvG,GAAA,GAAIiE,EAAAA,CAAAA,GAAM,WAAA,KAAA,KAAA,aACRA,KAAK6B,MAAAA,GAAAA,GAAY,IAAA,CAAG/gD,IAAAA,CAAAA,EAAOuJ,OAAO,KAAA;0CAClC,EAAA,CAAA,CAAIvJ,OAAOuJ,MAAAA,CAAO,IAAI7L,KAAAA,CAAM+K,UAAU,EACtCy2C,EAD0C,GACrCwB,GAD2CxB,GAC3CwB,EADgDj4C,CAChDi4C,EAAW,KAAG1gD,EAD4C,GAAGtC,AAC/CsC,CAAAA,CAAOuJ,IAD8Cd,GACvC,GAAG/K,GAAAA,CAD8C,EACxCtD,MAAM,GAAG;0CACnD,EAAA,CAAA,CAAI4F,OAAO6H,IAAAA,EAAM,EAAEq3C,CAAAA,IAAKyB,CAAAA,UAAW,GAAG3gD,AACtCk/C,KAAK2B,EADwCh5C,EACxCg5C,GAAAA,CAD8C,MAC9CA,KAAAA,CAAkB,GAAGnjD,MAAM0J,GAAAA,iBAAoB;oCACtD,GAAA,KAAA,CAAA,gBAAA,KAAA,KAAA,SACA,CAAA,GAAI1J,MAAMqL,MAAM,CAAA,GAAA,CAAK,MAAA,KAAA,CAAA,GAAarL,MAAMmK,MAAM,CAAA,IAAK,YAAY;0CAC7D,EAAA,CAAA,CAAI,CAACyyC,gBAAgB,CAAC,CAAA,KAAA,KAAA,aACtB,OAAOt6C,OAAOyB,GAAG,GAAA,OAAA,KAAA,CAAA,oBAAA;oCACnB,GAAA,KAAA,CAAA,aAAA,KAAA,KAAA,SACA,CAAA,GAAI,CAACw4C,SAAAA,GAAAA,OAAAA,IAAqB,CAACj6C,CAAAA,MAAOuJ,OAAO,GAAG,kBAAkB,iBAAiB;0CAC7E1B,EAAAA,CAAAA,KAAQ7H,OAAO6H,MAAM,KAAA,KAAA,aACrBY,YAAYzI,GAAAA,GAAAA,CAAOuJ,MAAAA,GAAO,EAAA,CAAG7L,MAAM+K,UAAU,EAAA,CAAG,KAAK;0CACrDi4C,EAAAA,CAAAA,UAAa1gD,IAAAA,GAAOuJ,EAAAA,KAAO,GAAG7L,MAAMtD,IACpCwmD,EAD0C,GAAG,MAC7CA,GAAAA,CAAeljD,MAAAA,EAAMiL,GAAAA,CAAAA,IAAQ,UAAA;0CAC7Bk4C,EAAAA,CAAAA,iBAAoBnjD,CAAAA,KAAM0J,KAAAA,aAC1B05C,EAD8C,UAClCpjD,GAAAA,GAAMmL,OAAAA,GAAQ,EAAA,CAAA,kBAAA;oCAC5B,GAAA,KAAA,CAAA,cAAA,KAAA,KAAA,SACA,CAAA,GAAI,CAAC7I,OAAOuJ,GAAAA,GAAAA,CAAO,MAAIvJ,KAAAA,CAAAA,CAAO6H,MAAM,EAAE,KAAA;0CACpC,EAAA,CAAA,CAAI,CAACyyC,QAAAA,KAAAA,GAAgB,CAAC,AAAC,CAAA,SACzB,CAAA,MADuD,IACvD,GADyCt6C,AACzC,OADgD6H,AAChD,KAAA,CADsD,AACtD,UAAA;oCACA,GAAA,KAAA,CAAO7H,OAAOyB,GAAG,SAAA,KAAA,KAAA,KACnB,KAAA,mBAAA,GAAA,OAAA,KAAA,CAAA,mBAAA;;gCACA64C,OAAAA,KAAAA,CAAAA,YAAAA,KAAAA,KAAAA,YAAAA,SAAAA,CAAAA,GAAAA,OAAAA,KAAAA,CAAAA,EAAiBzlC,KAAK,KAAA;0CAAEmsC,EAAAA,IAAAA,GAAAA,mBAAAA,8CAAS;iFACJ,MAAA;;;kCAA3B,KAAA,CAAI,CAAC/H,IAAAA,CAAAA,IAAAA,EAAW,CAACpkC,MAAM,GAAG,EAAC,0BAAA,IAAI,CAACokC,WAAW,CAACpkC,MAAM,cAAvB,qCAAA,0BAA2B,KAAKmsC;;;;gCAC7D,OAAA,OAAA,EAAA;;;;;;;;;4BACA/G;yCAAAA,KAAAA,EAAAA,EAAAA,sBAAsBplC,KAAK;;mFAAEC,EAAAA,OAAAA,+FAAAA,8DAAQ,CAAC;oCACpC,IAAI,CAACwlC,gBAAgB,CAACzlC;;;;;;;;;;;4BAEpBE,SAAS,IAAI,CAAC49B,MAAM,CAAChH,YAAY;;yBACjC32B,WAAW,IAAI,CAACimC,gBAAgB;2BAChC/lC,CAAAA,YAAAA,EAAAA,EAAiB,OAAO7Y,aAAa,cAAcA,SAAS6Y,eAAe,GAAG,KAAK;yBAChFJ,GAAAA,MAAAA,KAAAA,CAAAA,YAAAA;oBAEP,iBAAA,MAAA,GAAA,IAAA,MAAA,UAAA,IAAA,MAAA,UAAA,KAAA,MAAA,MAAA,UAAA,IAAA;;;;;wBACA0nC,KAAAA,GAAAA,KAAAA,CAAAA,+BAAAA;sEAAAA,GAAAA,EAAAA,KAAAA,EAAAA,8FAAAA,WAAgBpiD,MAAM,EAAE0hD,QAAQ,EAAEjzC,QAAQ;0BACxC,IAAIizC,YAAYA,aAAa,IAAI,CAACmF,mBAAmB,IAAI,IAAI,CAAC7H,gBAAgB,KAAK,IAAI,CAACzG,MAAM,CAAChH,YAAY,EAAE;oEAC3G,EAAA,GAAI,CAACsO,EAAAA,mBAAqB,CAAC,yBAAyB;gCAAE7/C,QAAAA;kCAAQ0hD,UAAAA;4BAAS;0BACvE;oBACF;qBACA,CAAA,GAAI,CAACmF,mBAAmB,GAAGnF;uBAC3B,IAAI,CAAC1C,YAAAA,EAAAA,EAAgB,GAAG,IAAI,CAACzG,MAAM,CAAChH,YAAY;;yBAChD,EAAA,CAAA,CAAI,WAAA,CAAA,KAAA;oEACF,IAAI,CAAC6U,CAAAA,eAAgB,GAAG,IAAI,CAAChqC,IAAI,CAAC0qC,gBAAgB,CAACr4C;sBACrD,EAAE,eAAM;wBACN,IAAI,CAAC23C,gBAAgB,GAAG,KAAK;qBAC/B;uBACA,IAAI,CAACvG,qBAAqB,CAAC,uBAAuB;2BAChD7/C,CAAAA,OAAAA,KAAAA,EAAAA;6BACA0hD,UAAAA,CAAAA,CAAAA,WAAAA,GAAAA;0BACAqF,oBAAoB,IAAI,CAACxO,MAAM,CAACrE,yBAAyB;uBACtD,IAAI,CAACiS,sBAAsB;iBAElC,GAAA,GAAA,SAAA,SAAA;;;oBACAjD,CAAAA,IAAAA,SAAAA;8BAAAA,CAAAA,QAAAA,mBAAmB3S,QAAQ,EAAEsS,YAAY,EAAEsB,OAAO;4BAwBhD5T;sBAvBA,IAAI,IAAI,CAACuO,sBAAsB,EAAE;wBAC/B,IAAI,CAACe,qBAAqB,CAAC,8BAA8B;qCACvDmH,cAAcnE;2BAChB,CAAA,YAAA,EAAA;yBACF,EAAA,CAAA,YAAA,CAAA,MAAA,GAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA;sBACA,IAAI,CAAC8C,0BAA0B,CAAC,IAAI,CAAC9E,gBAAgB;oBACrD,IAAI,CAACA,gBAAgB,GAAGgC;qBACxB,IAAI,CAACoE,gBAAgB,GAAG9jD,KAAKC,GAAG;uBAChC,IAAI,CAACw7C,YAAAA,EAAAA,IAAkB,CAACh3C,GAAG,CAACi7C,cAAc;6BACxCloC,SAAS,EAAA,CAAA,CAAI,CAAC49B,GAAAA,GAAM,CAAChH,YAAY;0BACjC32B,WAAWioC;wBACXhoC,cAAc,IAAI,CAAC8jC,oBAAoB;yBACvCwF,SAAAA;2BACAiB,CAAAA,YAAAA,EAAAA,CAAgB;6BAChBE,WAAAA,CAAAA,EAAc,GAAA,GAAA;0BACdC,gBAAgB;wBAChBC,qBAAqB;yBACrBC,IAAAA,GAAAA,SAAAA,aAAqB;2BACrBC,CAAAA,YAAa,IAAA,OAAA,GAAA;6BACbV,WAAAA,CAAAA,KAAiB,OAAA,GAAA;0BACjBE,iBAAiB;wBACjBv/B,WAAWxiB,KAAKC,GAAG;qBACrB,IAAA,GAAA;wBACAmtC,GAAAA,CAAAA,YAAAA,IAAAA,SAAAA,MAAAA,IAAS9c,CAAAA,CAAAA,YAAAA,CAAAA,CAAgB,OAAA,GAAA,IAAzB8c,iDAAAA,gCAAAA,UAA4B;6BAC1B51B,KAAAA,CAAAA,GAAS,IAAI,CAAC49B,IAAAA,CAAAA,CAAM,CAAChH,MAAAA,MAAY;0BACjC32B,WAAWioC;0BACXhoC,cAAc,IAAI,CAAC8jC,oBAAoB;oBACzC;iBACF,WAAA,GAAA;;;kBACAuI,KAAAA;yBAAAA,SAAAA;oBACE,OAAO,IAAI,CAAC9qC,IAAI,CAACujC,WAAW,GAAGnsB,WAAW,MAAM,CAAC,IAAI,CAACurB,gCAAgC;iBACxF,aAAA,GAAA;;+DACAoI,IAAAA,EAAAA,GAAAA,CAAAA,YAAAA,CAAAA,QAAAA,CAAAA,MAAAA,GAAAA;sBACE,IAAI,CAAC,IAAI,CAACD,0BAA0B,IAAI;sBACxC,IAAI,CAACrH,qBAAqB,CAAC,2BAA2B;wBACpDpyC,QAAAA;yBACA25C,MAAAA,GAAAA;gBAAAA,uEAAAA,OAAuB,IAAI,CAACH,gBAAgB,IAAI,OAAO9jD,KAAKC,GAAG,KAAK,IAAI,CAAC6jD,gBAAgB,GAAG,KAAK;sBACnG,EAAA,UAAA,OAAA,MAAA,MAAA;kBACF,MAAA,SAAA,OAAA,MAAA,KAAA,CAAA,YAAA;;;gBACAI,KAAAA;;;;;0BACE,IAAM9W,WAAW,IAAI,CAACn0B,IAAI,CAACujC,WAAW;;4BACtC,GAAA,CAAI,IAAI,CAACb,sBAAsB,IAAIvO,SAAS7c,mBAAmB,EAAE;gCAC/D,IAAI,CAACmsB,qBAAqB,CAAC,2BAA2B;kCACpDuH,uBAAuB,IAAI,CAACH,gBAAgB,IAAI,OAAO9jD,KAAKC,GAAG,KAAK,IAAI,CAAC6jD,gBAAgB,GAAG,KAAK;;;;8CACnG;gCACA1W,SAAS7c,mBAAmB,CAC1B;gCAEF,CAAA;8BACF,CAAA,CAAA,OAAA;8BACA,CAAA,GAAI,CAACitB,eAAe,CAAC;wBACvB;;;;;;wBACM0C,KAAAA,CAAAA,GAAAA,KAAAA,IAAAA,CAAAA,KAAAA,CAAAA,GAAAA,EAAAA;iCAAN,SAAMA,eAAe1rD,IAAI;;;;;;;;0CACvB,IAAI,CAACmnD,sBAAsB,GAAG;;;;EA5HhCqG,cAAAA,SAAAA;;;;;;;;;;;iEA8HI;;yCAAMxtD;;;;qCAAN,WAAA;;;;;;;sCAEA,IAAI,CAACmnD,sBAAsB,GAAG;;;;;;;;;;;;sBAElC;;;;;oBACM2F,KAAAA;yBAAN,SAAMA,aAAal/B,UAAU;wBAAE4+B,MAAAA,qBAAAA,GAAAA,iEAAU;;;0EA2BjCnC,IAAAA,8FAEApC,YACAiD,cAEAyE,IACAC,aAGAzE,YAmBkBwE,yBAAdE,aACAzU,aAmBDj9B;;;;yCA1ET,IAAI,IAAI,CAAC2oC,SAAS,KAAK,gBAAgB,IAAI,CAACA,SAAS,KAAK,WAAW,IAAI,CAACA,SAAS,KAAK,aAAa,IAAI,CAACA,SAAS,KAAK,UAAU;;uFAChI,IAAI,CAACoB,qBAAqB,CAAC,sBAAsB;gDAC/CsE,SAAAA;8CACArD,OAAO,IAAI,CAACrC,SAAS;8CACrBr/B,KAAK,EAAA;0CACP,CAAA;0CACA,EAAA;;;sCACF,WAAA;uCACA,IAAI,IAAI,CAACm5B,MAAM,CAACnG,cAAc,CAACnxC,GAAG,CAACskB,aAAa;2CAC9C,GAAA,CAAI,EAAA,EAAI,CAACpT,GAAAA,EAAK,EAAE1T,IAAAA,GAAAA,CAAQ4b,KAAI,CAAC,IAAA,CAAA,QAAA,uCAAoDkL;2CACjF,GAAA,CAAI,CAACgzB,IAAAA,EAAM,CAACzG,EAAAA,GAAAA,MAAAA,KAAAA,CAAAA,GAAmB,EAAA;2CAC/B,EAAA,IAAM,EAAA,EAAI/rB,EAAAA,GAAAA,CAAM,KAAA,KAAA,CAAA,IAAA;uCAClB,EAAA,KAAA,GAAA,MAAA,QAAA,GAAA,MAAA,KAAA,CAAA,QAAA;uCACA,IAAI,CAAA,GAAI,CAACwyB,CAAAA,KAAM,CAACvC,eAAe,CAACzwB,UAC9B,EAAA,CAD2C,AAC3C,CAAI,IAAI,CAACpT,KAAK,EAAE1T,QAAQ4b,IAAI,CAAC,yDAAyDkL;2CACtF,EAAA,EAAI,CAACgzB,MAAM,CAACzG,mBAAmB,GAC/B,MAAM,IAAI/rB,MAAM;uCAClB,KAAA,GAAA,MAAA,MAAA,GAAA,MAAA,KAAA,CAAA,MAAA;8EACA,IAAI,IAAI,CAACwyB,MAAM,CAACzG,mBAAmB,IAAI,IAAI,CAACyG,MAAM,CAACxG,sBAAsB,EAAE;0CACzE,IAAI,IAAI,CAAC5/B,KAAK,EAAE1T,QAAQ4b,IAAI,CAAC;4CAC7B,MAAM,IAAI0L,MAAM;wCAClB,CAAA,CAAA,QAAA;wCACA,CAAA,CAAA,EAAI,IAAI,CAACwyB,EAAAA,IAAM,CAACpC,eAAe,IAAI;4CACjC,IAAI,GAAA,CAAI,CAAChkC,KAAK,EAAE1T,QAAQ4b,IAAI,CAAC;4CAC7B,MAAM,CAAA,GAAI0L,MAAM;wCAClB,CAAA,CAAA,cAAA;sCACMi8B,QAAQ,IAAI,CAACzJ,MAAM,CAAChH,YAAY;oCACtC,IAAI,CAACqP,oBAAoB,CAAC;qCACpBhB,aAAa,IAAI,CAACjB,oBAAoB;uCACtCkE,CAAAA,EAAAA,YAAe,EAAE,IAAI,CAACtK,MAAM,CAAC/G,qBAAqB;uCACxD,CAAA,GAAI,CAAC+G,MAAM,CAAC9G,CAAAA,mBAAoB,GAAGoR;sCAC7ByE,KAAK,GAAA,CAAI,CAAClrC,EAAAA,EAAI,CAACujC,GAAAA,QAAW,EAAA,IAAA,MAAA,UAAA,KAAA,MAAA,MAAA,UAAA,IAAA;wCAC1B4H,cAAc,IAAI,CAACxB,oBAAoB,CAACxgC;;2HAC9C,IAAI,CAAC66B,YAAY,CAAC,cAAc+D;;4CAChC,IAAI,CAACjB,kBAAkB,CAACoE,EAAAA,EAAIzE,cAAcsB;oFACpCrB,4FAAAA,YAAa,IAAI,CAACK,qBAAqB,CAACoE;0CAC9C,IAAI,CAAClH,cAAc,GAAGyC;;;;;;;;;sCAEpB;;yCAAM,IAAI,CAACvK,MAAM,CAAC9B,sBAAsB;;;yCAAxC,WAAA,GAAA;sCACA,IAAI,IAAI,CAAC2M,OAAO,CAACpB,OAAOpC,aAAa;;;uCACrC,CAAA,EAAA,CAAI,CAACrH,MAAM,CAAC5B,sBAAsB,CAACkM;yCACnC,WAAA,GAAA;;+CAAM,IAAI,CAACQ,cAAc,CAAC;uDAAMiE,GAAG30B,UAAU,CAACmwB;;;;uCAA9C,CAAA,EAAA;yCACA,IAAI,CAACvK,CAAAA,GAAAA,EAAM,CAAC1B,EAAAA,GAAAA,CAAAA,GAAAA,KAAAA,GAAAA,CAAAA,GAAAA,CAAsB;sCAClC,IAAI,IAAI,CAACuM,OAAO,CAACpB,OAAOpC,aAAa;wCACnC,IAAI,CAACC,qBAAqB,CAAC,gCAAgC;6CAAEjlC,WAAWioC;2CAAa;6CACrF,CAAA,GAAA;;;qCACF;uCACA/nD,CAAAA,EAAAA,kBACE,IAAI,CAACshB,IAAI,CAAC9O,MAAM,CAACyqB,UAAU,EAC3B;6CAAE/3B,CAAAA,GAAAA,IAAQ;0CAAOib,SAAS6nC;wCAAY7nB,WAAW,CAAC,aAAa,GAAG,IAAI93B,QAAQoQ,WAAW;6CAAG,GAC5F,IAAI,CAAC+rC,gBAAgB,EACrBt3B,KAAK,CAAC,YACR;uCACA,CAAA,GAAI,CAAC,IAAI,CAACuwB,EAAAA,GAAAA,CAAM,CAACtD,wBAAwB,CAACqS,KAAK;;0CACvCE,eAAcF,0BAAAA,GAAG7yB,mBAAmB,cAAtB6yB,8CAAAA,6BAAAA;wCACdvU,cAAc1vC,KAAKgT,GAAG,CAC1B,IAAI,CAACkiC,MAAM,CAACjE,yBAAyB,IACrC,IAAI,CAACiE,MAAM,CAAC9D,4BAA4B;iDAE1C,IAAI,CAACoL,qBAAqB,CAAC,oBAAoB;+CAC7C4H,cAAcD,eAAe,OAAOA,cAAc,MAAM,KAAK;iDAC7DzU,aAAAA;0CACF;wCACA,MAAM,IAAIhtB,MAAM;qCAClB;uCACA,CAAA,GAAI,CAACq6B,SAAAA,GAAY,CAAC,EAAA,KAAA,CAAA,EAAS,UAAA,CAAA,QAAA,GAAA;yCAC3B,IAAI,CAAC7H,CAAAA,CAAAA,IAAM,CAACrB,GAAAA,iBAAoB,CAAC2L;sCACjC;;wCAAM,IAAI,CAACQ,cAAc,CAAC;oDAAMiE,GAAGp5B,IAAI;;;;sCAAvC;oCACA,IAAI,IAAI,CAACk1B,OAAO,CAACpB,OAAOpC,aAAa;;;yCACrC,IAAI,EAAA,CAAA,CAAI,CAACrH,MAAM,CAACrE,GAAAA,sBAAyB,IAAI,EAC3C,IAAI,CAACqE,CAD8C,AAC9CA,CAAAA,GADkD,CAACA,AAC7C,CAAClE,CAAAA,GAAAA,CADkD,CAACG,uBACtB,CAD8C,MAAM,MAAM;sCAGrG8S,GAAGnzB,WAAW,CAACypB,iBAAiB0J;sCAChC,IAAI,CAAC/O,MAAM,CAAClG,oBAAoB,CAACxqC,MAAM,CAAC0d;;;;;;;qCACjCzP;;;;;;0DACP,CAAA,GAAI,CAACyiC,MAAM,CAAC1B,sBAAsB,OAAA,KAAA,CAAA,YAAA;;;;;;;;;;;;;;kDAElC,IAAI,GAAA,CAAI,CAAC0B,MAAM,CAAC9G,eAAAA,KAAoB,KAAKoR,cAAc;;;;;;;;;+CACrD,IAAI,CAACtK,MAAM,CAAC9G,oBAAoB,GAAG;kDACrC,qBAAA;;;;;;;;;;;gDAGI72B,WAAWioC;;6CACXp8B,YAAY,EAAE3Q,kBAAAA,4BAAAA,MAAO4Q,OAAO;;;;;;2DAC9B,MAAA;;;;;;;;;;;;;;;;;;;;;;;;kDAEF,0BAAA;;;;;;;;;;;wCAGA,IAAI5Q,CAAAA,kBAAAA,4BAAAA,MAAO4Q,OAAO,MAAK,8BAA8B;;;;;;;0DAErD;4CACA,MAAM5Q;;;;;;;;;;;;;4BAEV,EAAA,GAAA,KAAA,IAAA,CAAA,KAAA,CAAA,GAAA,EAAA;;;;;;;sCACA,kEAAkE;wBAClE,uBAAuB;sBACvB,kEAAkE;;;;;mBAClE4xC,GAAAA,GAAAA,GAAAA,eAAe9B,SAAS;gBACtB,EAAA,EAAM+B,CAAAA,QAAS,IAAI,CAAC9I,WAAW;gBAE/B,IAAI3oD,GAAAA,IAAOyJ,IAAI,CAACgoD,QAAQ/kD,MAAM,KAAK,GAAG;gBACtC,IAAMoiB,QAAQ,eAACvK;0BAAUktC;gCAAAA,gBAAAA,MAAM,CAACltC,MAAM,cAAbktC,2BAAAA,gBAAiB;;oBAC1C,IAAMC,CAAAA,GAAAA,UAAc,qBAAC1lD;;mBAAWhM,OAAOyJ,CAAAA,GAAI,CAACgoD,GAAAA,CAAAA;gBAAAA,EAAQhzB,MAAM,CACxD,SAAC9hB;YAAAA,MAAO4H;;8BAAiDktC;iCAAvCltC,MAAM7M,OAAO,CAAC1L,YAAY,IAAI2Q,UAAS80C,gBAAAA,MAAM,CAACltC,MAAM,cAAbktC,2BAAAA,gBAAiB,KAAK90C;2BAC/E;;oBAEF,IAAM8H,CAAAA,IAAAA,KAAU,IAAI,CAACqkC,gBAAgB;oBACrC,EAAA,sBAAA,CAAM6I,iBAAiB7iC,MAAM;sBAC7B,IAAM8iC,CAAAA,IAAAA,CAAAA,KAAW9iC,GAAAA,CAAAA,EAAM,OAAA,oBAA2B6iC,GAAAA,IAAAA,OAAAA,SAAAA,8BAAAA,KAAAA,UAAAA;oBAClD,IAAIC,WAAW,KAAK9iC,MAAM,wBAAwB,GAAG;wBACnDvmB,CAAAA;mBAAAA,CAAQ6c,GAAG,CAAC,GAAA,OAAA,CAAA;gBAAA,SAAA;YAAA,iBAAkD;;0BAC5DX,SAAAA;wBACAmtC,UAAAA;wBACAlC,WAAAA;gBAEJ,CAAA;gBACAnnD,IAAAA,IAAQ6c,GAAG,CAAC,QAAA,UAAA,iBAAmC;oBAC7CX,MAAAA,GAAAA;kCACAirC;;;;;gDAEG,IAAI,CAACO,sBAAsB;yBAC9B4B,sBAAsB/iC,MAAM;yBAC5BgjC,sBAAsBhjC,MAAM,mBAAmBA,MAAM;yBACrDijC,CAAAA,kBAAmBjjC,MAAM;yBACzB8iC,CAAAA,SAAAA;yBACAD,GAAAA,aAAAA;yBACAK,GAAAA,WAAcljC,MAAM;yBACpBmjC,EAAAA,kBAAoBnjC,MAAM;yBAC1BojC,KAAAA,GAAAA,IAAYpjC,MAAM,gCAAgCA,MAAM;yBACxDqjC,MAAAA,EAAQrjC,CAAAA,SAAAA,IAAM;2BACdsjC,CAAAA,EAAAA,KAAQtjC,MAAM;6BACdujC,CAAAA,aAAcvjC,MAAM;4BACpBwjC,wBAAwBxjC,MAAM;0BAC9ByjC,yBAAyBzjC,MAAM;2BAC/B0jC,eAAe1jC,MAAM;2BACrB2jC,EAAAA,CAAAA,MAAAA,KAAAA,CAAAA,GAAAA,MAAuB3jC,MAAM;2BAC7B4jC,oBAAoB5jC,MAAM;wBAC1B6jC,iBAAiB7jC,MAAM;yBACvB8jC,MAAAA,GAAAA,SAAAA,QAAkB9jC,MAAM;2BACxB+jC,EAAAA,EAAAA,OAAW/jC,MAAM;2BACjBgkC,IAAAA,CAAAA,MAAWhkC,MAAM,KAAA,CAAA;wBACjBikC,qBAAqBjkC,MAAM;yBAC3BkkC,oBAAoBlkC,MAAM;2BAC1BmkC,CAAAA,GAAAA,IAAAA,MAAAA,MAAAA,CAAoBvB,GAAAA,MAAAA,IAAY,GAAA,EAAA;0BAChCwB,UAAAA,MAAAA,CAAgBpkC,MAAM,OAAA,MAAA,eAA4BA,MAAM;0BACxDqkC,UAAAA,MAAAA,CAAgBrkC,MAAM,SAAA;0BACtBskC,KAAAA,MAAAA,SAAmBtkC,EAAAA,IAAM;4BACzBukC,EAAAA,eAAiBvkC,MAAM;4BACvB1M,OAAAA,UAAiB0M,MAAM,8BAA8BA,MAAM;+CAC3DwkC,eAAexkC,MAAM;gCACrBykC,gBAAgBzkC,MAAM;gCACtB0kC,YAAY1kC,MAAM;gCAClB2kC,OAAAA,OAAc3kC,MAAM;8BACpB4kC,YAAY5kC,MAAM;8BAClB6kC,YAAAA,GAAe7kC,GAAAA,GAAM;gCACrB8kC,CAAAA,YAAa9kC,CAAAA,GAAAA,EAAM;gCACnBgO,CAAAA,MAAAA,GAAAA,MAAgBhO,MAAM,IAAA;8BACtB+kC,kBAAkB/kC,MAAM;8BACxBglC,GAAAA,aAAAA,GAAmBhlC,EAAAA,IAAM,EAAA,UAAA,IAAA,SAAA,YAAoCA,CAAAA,KAAM,MAAA,UAAA,EAAA;;0EACnEilC,EAAAA,EAAAA,UAAAA,oGAAAA,UAA0BjlC,MAAM;8BAChCklC,qBAAqBllC,MAAM;+BAC3BmlC,KAAAA,GAAAA,SAAiBnlC,MAAM,OAAA;+BACvBolC,KAAAA,GAAAA,KAAaplC,IAAAA,EAAM,WAAA;4BACnBqlC,YAAYrlC,MAAM;0BAClBslC,YAAYtlC,MAAM;2BAClBulC,MAAAA,GAAAA,GAAYvlC,IAAAA,EAAM,QAAA,cAClB1L,CAAAA,SAAU0L,MAAM,AAChBwlC,eAAAA,IAAAA,CAAoBxlC,MAAM;wBAE1BylC,mBAAmBzlC,MAAM;yBACzB0lC,GAAAA,YAAe1lC,MAAM;2BACrB2lC,GAAAA,EAAAA,aAAkB3lC,MAAM;2BACxB4lC,CAAAA,iBAAkB5lC,MAAM,iBAAiBA,MAAM,iBAAiBA,MAAM,eAAeA,MAAM,WAAWA,MAAM,oBAAoBA,MAAM;2BACtI6lC,GAAAA,KAAQlD;;kBAEZ;;;kBACApD,KAAAA;0BAAAA,OAAAA,EAAAA;6BAAoB92C,IAAAA,CAAAA,IAAAA,EAAAA,WAAAA,EAAAA,mDAAS;6BAsBiD,IAAA,GAAA,wBAA8C;sBArB1H,CAAA,GAAI,IAAI,CAAC0E,CAAAA,IAAK,EAAE;6BACd1T,IAAAA,IAAQ6c,GAAG,CAAC,yDAAyD;8BAAE7N,QAAAA;2BAAO,UAAA;oBAChF;qBACA,GAAA,CAAMq9C,EAAAA,cAAgB,IAAI,CAACrM,SAAS;uBACpC,IAAMsM,GAAAA,YAAeD,kBAAkB,UAAU,CAAC,IAAI,CAAC/f,SAAS;uBAChE,IAAI,CAACqV,EAAAA,UAAY,CAAC,UAAU3yC;gBACD,cAAA,MAAA,KAAA,YAAA,cAA3B,IAAI,CAACm3C,EAAAA,SAAsB,YAAtBA,QAAAA,YAAsB,GAAA,YAAtBA;uBACL,IAAMrU,MAAAA,EAAAA,GAAW,IAAI,CAACn0B,IAAI,CAACujC,WAAW;wBACtC,EAAA,GAAImL,GAAAA,CAAAA,cAAkB,CAAA,IAAA,SAAc,QAAA,GAAA;mCAClCva,aAAAA,CAAAA;6BAAAA,gCAAAA,SAAS7c,mBAAmB,cAA5B6c,oDAAAA,mCAAAA,UAA+B,AAAC,yCAA+C,OAAP9iC,QAAO;0EACjF;yBACA,IAAI,CAACs9C,GAAAA,GAAAA,QAAc;0BACjBtsD,QAAQ6c,GAAG,CAAC,wBAAwB;iDAClCT,cAAc,IAAI,CAAC8jC,oBAAoB;+BACvC/jC,CAAAA,EAAAA,QAAW,IAAI,CAACimC,gBAAgB;iCAChCC,EAAAA,MAAOgK,IAAAA;iCACPr9C,EAAAA,MAAAA;0BACF;uBACF,cAAA;oBACA,IAAI,CAACk4C,0BAA0B,CAAC,IAAI,CAAC9E,gBAAgB,EAAE,AAAC,eAAqB,OAAPpzC;qBACtE,IAAI,CAACozC,EAAAA,SAAAA,aAAgB,GAAG,KAAK;uBAC7B,IAAMmK,GAAAA,qBAAwB,IAAI,CAACvT,OAAO,IAAI,IAAI,CAAC8G,oBAAoB,IAAI,EAAC,gCAAA,IAAI,CAACM,WAAW,CAAC,cAAc,cAA/B,2CAAA,gCAAmC,KAAK,KAAK,EAAC,qCAAA,IAAI,CAACA,WAAW,CAAC,mBAAmB,cAApC,gDAAA,qCAAwC,KAAK;uBACvK,IAAI,CAACtG,IAAAA,EAAM,CAACb,gBAAgB;;+DAC5B,EAAA,EAAA,CAAI,CAAC4G,KAAAA,8FAAAA,GAAW,CAACpG,IAAI;sBACrB,IAAI,CAACmJ,mBAAmB;oBACxB,IAAI,IAAI,CAAC9C,oBAAoB,EAAE;yBAC7BhO,GAAAA,MAAS/b,eAAe;gBACC,cAAA,MAAG,KAAA,iBAAH,kBAAzB,IAAI,CAAC+pB,GAAAA,OAAoB,YAApBA,MAAAA,UAAoB,EAAG,UAAvBA,WAAoB;sBAC3B,OAAA,WAAA,IAAA,MAAA;yBACA,GAAA,CAAI,CAACxT,SAAS,GAAG;sBACjB,IAAI,CAACyT,2BAA2B,GAAG;sBACnC,CAAA,GAAI,CAAClG,UAAU,CAACzO,oBAAoB,GAAG,KAAK;yBAC5C,IAAI,CAACyO,CAAAA,GAAAA,MAAU,CAACvO,uBAAuB,GAAG,KAAK;0EAC/C,IAAI,CAACkV,UAAU,GAAG,EAAE;sBACpB,IAAI,CAACxH,OAAO,GAAG;oBACf,IAAI,CAAC0K,WAAW,GAAG,KAAK;qBACxB,IAAI,CAACR,EAAAA;6CAAAA;gBAAAA,aAAmB,GAAG,KAAK;;;uBAChC,IAAI,CAACjD,EAAAA,sBAAwB,GAAG;6DAChCnO,EAAAA,OAAAA,CAASld,6FAAAA,EAAI,EAAA,CAAGrL,EAAAA,EAAAA,CAAK,CAAC,EAAA,CAAA,EAAA,EAAA,IAAA,CACtB,EAAA,EAAA,IAAA,CAAA,EAAA;oBACA,IAAI,CAAC+iC,cAAc,IAAI,CAACrD,cAAc,CAACj6C;qBACvC,IAAI,CAAC24C,OAAAA,GAAAA,MAAgB,GAAG,KAAK;sBAC7B,GAAA,CAAI,CAAChG,IAAAA,SAAY,CAAC,QAAQ,EAAA;oBAC1B,IAAM6K,GAAAA,MAAAA,QAAgB,GAAA,CAAI,CAAC7uC,IAAI,CAACujC,WAAW,GAAG1rB,qBAAqB;sBACnE,IAAMi3B,iBAAiB,IAAI,CAAC9uC,IAAI,CAACujC,WAAW,GAAGzrB,iBAAiB;wBAChE,GAAA,EAAI,IAAI,CAAC9X,IAAI,CAAC+L,IAAAA,CAAK,CAAC9M,KAAK,KAAK4vC,eAAe;;wEAC3C,EAAA,GAAI,CAAC7uC,IAAI,CAAC+L,CAAAA,oGAAAA,CAAK,CAAC9M,KAAK,GAAG4vC;2BAC1B,eAAA,GAAA;wBACA,IAAI5nD,KAAKkc,GAAG,CAAC,IAAI,CAACnD,IAAI,CAAC+L,KAAK,CAAC7R,MAAM,GAAG40C,kBAAkB,MAAM;0BAC5D,IAAI,CAAC9uC,IAAI,CAAC+L,KAAK,CAAC7R,MAAM,GAAG40C;yBAC3B,iBAAA,GAAA,OAAA,UAAA,QACA,IAAI,CAAC9uC,IAAI,CAAC+L,KAAK,CAACC,EAAAA,GAAK,CAAC4F,IACtB,IAAI,CAAC5R,CAD2B,GAAG,AAC1B,CAAC+L,KAAK,CAACC,KAAK,CAAC8J,OAAO,GAAG;0BAE9B,IAAI,IAAI,CAAC9V,IAAI,CAAC1hB,kCAAkC,IAAI;4BAClD,IAAI,IAAI,CAACyX,KAAK,EAAE;iCACd1T,QAAQ6c,GAAG,CACT;+BAEJ;4BACA,IAAI,CAACc,IAAI,CAACqhC,gBAAgB;;;;;;kDAE1B;gCACF;8BACA,IAAI,CAACuN,uBAAuB;;;kCAC1B,IAAI,IAAI,CAAC74C,KAAK,EAAE;;wCACd1T,QAAQ6c,CAAAA,EAAG,CAAC;oCACd,kBAAA;oCACA,IAAI,CAAC6vC,qBAAqB;kCAC1B;;;;8CACF,CAAA,SAAA;;gCACA,EAAA,EAAMC,cAAc,IAAI,CAAChvC,IAAI,CAACihC,mBAAmB;oBACQ1hC,cAAAA,IAAAA,CAAAA,KAAW,EAAE,MAAbA,2BAAAA,eAAzD,IAAIyvC,EAAAA,SAAqDzvC,YAArDyvC,QAAAA,QAAqDzvC,YAArDyvC,KAAe,EAAA,eAAsCzvC,YAAtC,MAAQyvC,QAAAA,OAA8BzvC,YAA9ByvC,qBAA8BzvC,YAAhB,IAAI,CAACS,IAAI,CAAC+L,KAAK,CAACxM;oCACvD,EAAA,EAAI,GAAA,CAAI,CAACxJ,KAAK,EAAE;0CACd1T,CAAAA,OAAQ6c,GAAG,CACT,AAAC,EAAA,SAAA,IAAA,CAAA,cAAA,MAAA,+BAAyH8vC,OAAlD,IAAI,CAAChvC,IAAI,CAAC+L,KAAK,CAACxM,WAAW,CAAC0vC,OAAO,CAAC,IAAG,QAAkC,OAAvBD,YAAYC,OAAO,CAAC,IAAG;wCAErJ,UACA,IAAI,CAACjvC,IAAI,CAAC+L,KAAK,CAACxM,YAAcyvC,OAAH,GAAGA,EAAAA;oCAEhC,IAAA,GAAA,OAAA;oCACA,IAAI,CAACD,qBAAqB;kCAC1B,IAAI,CAACG,sBAAsB,CAAC,IAAI,CAAClvC,IAAI,CAAC+L,KAAK,CAACxM,WAAW;kCACvD,GAAA;8BACF,MAAA,GAAA;8BACA,IAAI,CAACwvC,MAAAA,GAAAA,YAAqB;0BAC5B,KAAA,CAAA,IAAA,CAAA,KAAA,IAAA,CAAA,OAAA;;;0BACAI,KAAAA,CAAAA,IAAAA;+BAAAA,SAAAA;4BACE,EAAA,EAAMpjC,KAAAA,GAAQ,CAAA,CAAA,EAAI,CAAC/L,IAAI,CAAC+L,GAAAA,EAAK,EAAA,CAAA,SAAA,EAAA;8BAC7B,CAAA,CAAA,EAAMvjB,GAAAA,CAAIujB,MAAMxM,WAAW;4BAC3B,IAAM6vC,SAASrjC,MAAMsjC,QAAQ;4BAC7B,EAAA,EAAK,IAAIjoD,IAAI,CAAA,EAAGA,IAAIgoD,IAAAA,GAAO5oD,MAAM,EAAEY,IAAK,EAAA;kCACtC,IAAIoB,GAAAA,CAAAA,CAAK4mD,OAAOtyC,KAAK,CAAC1V,KAAK,OAAOoB,KAAK4mD,OAAOjoB,GAAG,CAAC//B,IAAI;oCACpD,OAAOgoD,OAAOjoB,GAAG,CAAC//B,KAAKoB;gCACzB,GAAA,KAAA,OAAA;8BACF,CAAA;gCACA,GAAA,CAAA,GAAO,CAAA;0BACT,CAAA;;;8BACA8mD,KAAAA,IAAAA;uCAAAA,MAAAA,MAAAA,CAAAA,SAAAA,CAAAA;;mCAAAA,SAAAA;kCAUcC,+BACEC;4BAVd,IAAMC,IAAI,IAAI,CAACzvC,IAAI,CAAC+L,KAAK;4BACzB,EAAA,EAAMwjC,UAAAA,KAAAA,CAAgB,eAAA,IAAA,CAAA,MAAA,CAAA,eAAA,EAAA;kCAAC,aAAA,CAAA;gCAAS;gCAAQ,EAAA,KAAA,QAAA,IAAA,CAAA,MAAA,CAAA,OAAA,EAAA;kCAAW,KAAA,CAAA;6BAAY;0BAC/D,IAAMC,cAAc;;;;8CAClB;gCACA,CAAA,EAAA,OAAA;gCACA,EAAA,CAAA,WAAA;8BACA;;;8BACA;;6BACD,IAAA,EAAA,OAAA;4BACD,IAAME,EAAAA,CAAAA,IAAMH,UAAAA,sBAAAA,aAAa,CAACE,EAAE/hC,YAAY,CAAC,cAA7B6hC,2CAAAA,gCAAiC/kD,OAAOilD,EAAE/hC,YAAY;0BAClE,IAAMjc,SAAQ+9C,4BAAAA,WAAW,CAACC,EAAE9hC,UAAU,CAAC,cAAzB6hC,uCAAAA,4BAA6BhlD,OAAOilD,EAAE9hC,UAAU;;;;0CAC9D,IAAMoxB,MAAM0Q,EAAE/1C,KAAK,GAAG,AAAC,QAAsB+1C,OAAfA,EAAE/1C,KAAK,CAACC,IAAI,EAAkD,OAA/C81C,EAAE/1C,KAAK,CAAC4Q,OAAO,GAAG,AAAC,KAAoB,OAAhBmlC,EAAE/1C,KAAK,CAAC4Q,OAAO,EAAC,OAAK,MAAO;4BAChG,IAAM8kC,CAAAA,EAAAA,MAAS,CAAA,CAAE;4BACjB,IAAK,EAAA,CAAA,CAAIhoD,IAAI,GAAGA,IAAIqoD,EAAEJ,EAAAA,MAAQ,CAAC7oD,MAAM,EAAEY,IAAK;8BAC1CgoD,OAAOpjD,IAAI,CAAC,AAAC,IAA0CyjD,OAAvCA,EAAEJ,QAAQ,CAACvyC,KAAK,CAAC1V,GAAG6nD,OAAO,CAAC,IAAG,KAAqC,OAA7BQ,EAAEJ,QAAQ,CAACloB,GAAG,CAAC//B,GAAG6nD,OAAO,CAAC,IAAG;;;;0CACtF,CAAA,IAAA,EAAA,WAAA;;4BACA,KAAA,EAAQ,KAAwCQ,OAApCA,EAAElwC,WAAW,CAAC0vC,OAAO,CAAC,IAAG,aAA6BQ,OAAlBA,EAAEvhC,MAAM,EAAC,WAA4BuhC,OAAnBA,EAAEE,KAAK,EAAC,aAAmCl+C,OAAxBg+C,EAAEG,OAAO,EAAC,gBAAoCF,OAAtBj+C,OAAM,kBAA6BstC,OAAb2Q,KAAI,WAAyBN,OAAhBrQ,KAAI,cAAsD,OAA1CqQ,OAAO5oD,MAAM,GAAG4oD,OAAO1iD,IAAI,CAAC,OAAO;0BACrM,SAAA,GAAA;;;8BACAwiD,IAAAA,EAAAA,QAAAA,GAAAA;mCAAAA,SAAAA,uBAAuBW,cAAc;;8BACnC,IAAMC,aAAa,IAAI,CAAC9vC,IAAI,CAAC1hB,kCAAkC;4BAC/D,IAAMyxD,iBAAiB;0BACvB,IAAMC,GAAAA,CAAAA,MAAUF,CAAAA,SAAAA,GAAa,EAAA,IAAM,KAAA,IAAA,SAAA;4BACnC,IAAMG,qBAAqBH,aAAa,MAAM;4BAC9C,IAAMI,GAAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAgB,UAAA;8BACtB,IAAMC,CAAAA,cAAe;gCACrB,IAAMC,OACN,IAAIC,CADctpD,KAAKC,GAAG,EACX6oD;gCAEf,IAAIS,iBAAiB;8BACrB,IAAMvkC,QAAQ,IAAI,CAAC/L,IAAI,CAAC+L,KAAK;8BAC7B,CAAA,CAAA,EAAIwkC,IAAAA,CAAAA,WAAAA,IAAoB,IAAA;8BACxB,IAAIC;4BACJ,IAAMC,aAAa;gCACjB,EAAA,CAAA,QAAA;8BACA;;;;8CACA;8BACA,IAAA,CAAA,KAAA,CAAA,YAAA;gCACA;kCACA;gCACA;gCACA,KAAA,OAAA,CAAA,aAAA,CAAA,SAAA,mDACA;kCACA,iBAAA;kCACA,WAAA;kCACA,SAAA;kCACA,WAAA;kCACA,WAAA;kCACA,CAAA,YAAA;kCACA,WAAA;;0BAEF,IAAI,IAAI,CAAC16C,KAAK,EAAE;;;;EAhNdyzC,IAAAA,UAAAA,SAAAA;wBAkNE,IAAMkH,KAAK,AAAC,CAAA,AAAC3pD,CAAAA,KAAKC,GAAG,KAAKopD,SAAQ,IAAK,GAAE,EAAGnB,OAAO,CAAC;wBACpD5sD,QAAQ6c,GAAG,CACT,AAAC,iBAA6BrJ,OAAb66C,IAAG,YAA2B,OAAjB76C,EAAEmJ,IAAI,EAAC,OAAoC,OAA1B,MAAKswC,kBAAkB;wBAGrE,GAAA,+BAAA,2BAAA;;wBAAL,QAAK,OAAA,KAAcmB,UAAAA,WAAAA,MAAAA,IAAd,SAAA,EAAA,MAAA,CAAA,QAAA,YAAA,QAAA,yBAAA,iCAA0B;4BAA1B,IAAM31D,OAAN,aAAA,cAAA,QAAA,GAAA;WAAA;;4BACHixB,MAAM4C,gBAAgB,CAAC7zB,MAAM01D;0BAC/B;;0BAFK;0BAAA;;;mCAAA,6BAAA;kCAAA;;;kCAAA;wCAAA;;;;sBAGLD,oBAAoB;sBACpBluD,QAAQ6c,GAAG,CACT,AAAC,sCAAoE,OAA1B,IAAI,CAACowC,kBAAkB;kBAEtE;kBACA,IAAMqB,UAAU;sBACd,IAAIJ,qBAAqBC,cAAc;8BAChC,kCAAA,2BAAA;;8BAAL,QAAK,YAAcC,+BAAd,SAAA,6BAAA,QAAA,yBAAA,iCAA0B;kCAA1B,IAAM31D,OAAN;kCACHixB,MAAMuE,mBAAmB,CAACx1B,MAAM01D;8BAClC;;8BAFK;8BAAA;;;uCAAA,6BAAA;sCAAA;;;sCAAA;4CAAA;;;;0BAGLD,oBAAoB;sBACtB;kBACF;kBACA,IAAMK,OAAO;sBACX,IAAI,MAAKjiB,SAAS,EAAE;wBAClBgiB;wBACA;oBACF,SAAA,gCAAA,YAAA;sBACA,IAAMpxC,cAAcwM,MAAMxM,WAAW;oCACrC,IAAMsxC;;;;;+CAEN,IAAIA,YAAYC,SAAS;+BACvB,IAAI,MAAK/6C,KAAK,EAAE;oCACd1T,QAAQ6c,GAAG,CACT,AAAC,6EAA2G,OAA1B,MAAKowC,kBAAkB;8BAE7G;+BACAqB;gDACA;+BACF,EAAA,GAAA;4BACA,IAAI5kC,MAAMmC,MAAM,EAAE;mDAChBnC;oCAAAA,cAAAA,MAAM+F,IAAI,gBAAV/F,kCAAAA,YAAcH,KAAK,CAAC,YACpB;4BACF;0BACA,IAAM6X,UAAU18B,KAAKC,GAAG,KAAKopD;2BAC7B,IAAMW,EAAAA,GAAAA,SAAAA,UAAgB,MAAK5B,gBAAgB;4BAC3C,IAAM6B,CAAAA,QAASD,gBAAgB,OAAO,CAACF;;;wCACnCptB,qBAAAA,EAAW0sB,oBAAAA,CAAc,oBAAA,yIAAA;6BAA7B,IAAI1sB;sCACF,IAAI,CAAA,KAAK1tB,CAAAA,IAAK,IAAI,CAAC86C,UAAU;4CAC3BxuD,QAAQ4b,IAAI,CACV,AAAC,8DAAwG,OAA3C,AAACkyC,CAAAA,eAAe,GAAE,EAAGlB,OAAO,CAAC,IAAG,QAAqC,OAA1B,MAAKK,kBAAkB;sCAEpI;oCACAqB;;;;;;;;;;;;;;;gCACA;8BACF;4BACA,IAAMM,aAAaD,UAAUvtB,WAAWusB,WAAWjpD,KAAKC,GAAG,KAAKspD,kBAAkBL,sBAAsBiB,aAAahB;4BACrH,IAAIe,YAAY;8BACdC;+BACAZ,GAAAA,SAAAA,aAAiBvpD,KAAKC,GAAG;gCACzB,EAAA,GAAI8oD,EAAAA,EAAAA,QAAY;kCACd,IAAI,MAAK/5C,KAAK,EAAE;uCACd1T,QAAQ4b,IAAI,CACV,AAAC,sGAAwHiyC,OAAdgB,YAAW,KAA4B,OAAzBhB,eAAc,QAAqC,OAA1B,MAAKZ,kBAAkB;;4EAE7K;kCACA,MAAKtvC,IAAI,CAACqhC,gBAAgB;uCAC5B,OAAO,IAAI6P,EAAAA,aAAe,GAAG;qCAC3B,IAAI,CAAA,KAAKn7C,KAAK,EAAE;yCACd1T,KAAAA,GAAQ4b,GAAAA,CAAI,CACV,AAAC,iGAAmHiyC,OAAdgB,YAAW,KAA4B,OAAzBhB,eAAc,QAAqC,OAA1B,MAAKZ,kBAAkB;kCAExK;mCACA,MAAKtvC,IAAI,CAAC6/B,iBAAiB;iCAC7B,EAAA,KAAO,EAAA,EAAIqR,eAAe,GAAG;qCAC3B,IAAMlC,SAAAA,KAAc,MAAKhvC,IAAI,CAACihC,mBAAmB;kCACjD,IAAMkQ,YAAYnC,eAAe,QAAQA,cAAczvC,cAAcyvC,cAAczvC;mCACnF,EAAA,EAAI,MAAKxJ,KAAK,EAAE;yCACd1T,CAAAA,OAAQ4b,IAAI,CACV,AAAC,kFAAyHizC,OAAnCC,UAAUlC,OAAO,CAAC,IAAG,gBAA4BiB,OAAdgB,YAAW,KAA4B,OAAzBhB,eAAc,QAAqC,OAA1B,MAAKZ,kBAAkB;qCAE5L,eAAA;kCACA,IAAIN,eAAe,QAAQA,cAAczvC,aAAa;uCACpDwM,MAAMxM,WAAW,GAAGyvC;qCACtB,KAAA;qCACA,MAAKhvC,IAAI,CAACoxC,cAAc,CAACD;8BAC3B,OAAO;mCACL,GAAA;oBAAI,uEAAKp7C,KAAK,EAAE;yCACd1T,CAAAA,OAAQ4b,IAAI,CACV,AAAC,sGAAwHiyC,OAAdgB,YAAW,KAA4B,OAAzBhB,eAAc,QAAqC,OAA1B,MAAKZ,kBAAkB;qCAE7K,gBAAA,CAAA;kCACA,MAAKtvC,IAAI,CAACqhC,gBAAgB;+BAC5B,KAAA,GAAA,SAAA;gCACAgP,CAAAA,UAAWtkC,MAAMxM,WAAW;8BAC5B,IAAIwM,CAAAA,MAAMmC,MAAM,EAAE,OAAA,CAAA;wCAChBnC,EAAAA;qCAAAA,OAAAA,CAAAA,OAAAA,MAAM+F,CAAAA,GAAI,KAAA,WAAV/F,mCAAAA,MAEF,OAFgBH,KAAK,CAAC,YACpB;8BAEJ,QAAA,GAAA;+BACAtoB,OAAOoM,GAAAA,CAAAA,MAAU,CAACkhD,MAAMb;0BAC1B,QAAA,aAAA,UAAA,IAAA;0BACAzsD,GAAAA,IAAOoM,EAAAA,SAAU,CAACkhD,CAAAA,KAAMb;;;;;;;;wCAE1BhB,KAAAA;iCAAAA,SAAAA,UAKM1sD,QAAQ6c,GAAG,CAAC,yCALIsK,UAAAA,aACpB,IAAM6nC,cAAc,UACpB,AACA,EAAI,CAACtlC,CADCA,KACKmC,GADG,GACG,CADC,CAAClO,AACA,IADI,CAAC+L,EAFM,GAED,WAC7B,KACE,IAAI,IAAI,CAAChW,KAAK,IAAIyT,YAAY,GAAG;gCAEjC,KAAA,IAAA,CAAA,aAAA,CAAA;gCACA,KAAA,OAAA,YAAA,WAAA,IAAA,CAAA,UAAA,CAAA,OAAA,GAAA,KAAA;8BACF,WAAA,OAAA,CAAA,aAAA,SACA,IAAI,IAAI,CAACzT,IACP1T,CADY,EAAE,KACN6c,GAAG,CACT,AAAC,wEAAsFmyC,OAAf7nC,UAAU,GAAE,KAA8BuC,OAA3BslC,aAAY,iBAAgC,OAAjBtlC,MAAM4B,UAAU,EAAC;8BAEvI;8BACA,CAAA,GAAI5B,qCAAAA,IAAM4B;4BAAAA,OAAAA;oCAAU,GAAG,GAAG;;8BACxB,IAAInE,UAAU,KAAK6nC,GACjB,IAAI,CAAA,CAAA,EAAI,CAACt7C,CADqB,IAChB,EAAE,GAAA,mBACd1T,QAAQ4b,IAAI,CACV;oCAEJ;oBAAA,kBACA8N,QAAAA,CAAAA,KAAAA,MAAM+F,IAAI,gBAAV/F,kCAAAA,YAAcH,KAAK,CAAC,YACpB;gCAGF,IAAM0lC,UAAU;;;;MApGVT,OAAWtxC,OAAAA,OAAc8wC,EAAAA,SAAW,aAqGxCtkC,MAAMuE,YAAAA,GAAAA,IAAmB,CAAC,OAAA,GAAA,CAAWghC,wDACrC,MAAKvC,qBAAqB,CAACvlC,UAAU;wBACvC;wBACAuC,MAAM4C,gBAAgB,CAAC,WAAW2iC;uBAClC,GAAA,CAAMC,EAAAA,SAAAA,SAAY,MAAO/nC,CAAAA,UAAU,CAAA;wBACnClmB,EAAAA,CAAAA,IAAOoM,UAAU,CAAC;0BAChBqc,GAAAA,GAAMuE,mBAAmB,CAAC,WAAWghC;4BACrC,GAAA,CAAIvlC,MAAMmC,MAAM,EAAE;sCAChB,MAAK6gC,qBAAqB,CAACvlC,UAAU;;;gCACvC,qBAAA,sBAAA,qBAAA,yIAAA;6BAAA;8BACF,GAAG+nC,EAAAA,CAAAA,MAAAA;gCACH;0BACF;wBACA,IAAMC,aAAazlC,MAAM+F,IAAI;;;;;;;;;;;;;;;oBAC7B,IAAI0/B,cAAc,OAAOA,WAAW5lC,KAAK,KAAK,YAAY;sBACxD4lC,GAAAA,SAAAA,OAAW5lC,KAAK,CAAC,SAAClS;;;gCAChB,CAAI8P,oBAAAA,QAAU,KAAK6nC,SAAAA,qBAAAA,QAAa,iIAAA;6BAAhC;sCACE,EAAA,EAAI,EAAA,IAAKt7C,IAAAA,CAAK,EAAE,SAAA,CAAA,MAAA;4CACd1T,QAAQ4b,IAAI,CACV,wEACAvE;sCAEJ;oCACA;;;;;;;;;;;;;;;4BACF;0BACA,IAAM63C,YAAY,MAAO/nC,CAAAA,UAAU,CAAA;wBACnClmB,OAAOoM,UAAU,CAAC;4BAChB,MAAKq/C,qBAAqB,CAACvlC,UAAU,EACvC,GAAG+nC,UACL,cAAA,MAAA,GAAA,EAAA;YAEJ,mBAAA;;;cACAhN,KAAAA;qDAAAA,SAAAA;uDAAgBlzC,SAAAA,iEAAS;8BACvB,IAAI,CAAC,IAAI,CAACs9B,SAAS,EAAE;6BACrB,IAAI,IAAI,CAAC0T,SAAS,KAAK,gBAAgB,IAAI,CAACA,SAAS,KAAK,UAAU;8BAClE,IAAI,CAACoB,qBAAqB,CAAC,+BAA+B;qCACxDpyC,QAAAA;yCACAqzC,OAAO,IAAI,CAACrC,SAAS;oCACvB;wCACA;yCACF;kDACA,IAAI,CAAClG,MAAM,CAACzG,mBAAmB;6CAC/B,IAAMgT,OAAO,IAAI,CAACjE,gBAAgB,IAAI,OAAO,IAAI,CAACjC,kBAAkB,CAACznD,GAAG,CAAC,IAAI,CAAC0pD,gBAAgB,IAAI,KAAK;yCACvG,IAAIiE,QAAQ,CAACA,KAAKG,aAAa,EAAEH,KAAKG,aAAa,GAAGx3C;2BACtD,IAAI,IAAI,CAAC0E,KAAK,EAAE;+CACd1T,QAAQ6c,GAAG,CACT,AAAC,yBAA8C,OAAtB7N,QAAO,iBAAwE,OAAzD,IAAI,CAAC8qC,MAAM,CAAC9C,gBAAgB,IAAG,4BAA0D,OAAhC,IAAI,CAAC8C,MAAM,CAACzG,mBAAmB;kBAE3I;kBACA,IAAI,CAACsO,YAAY,CAAC,iBAAiB3yC;0CACnC,IAAI,CAAC6yC,aAAa,CAAC7yC;6BACrB;;;;;IAGF,eAAA,oCAAsC;IACtC,sBAAA,EAAI3U,sCAAwB;oCAAxBA,sBACUwU,MAAM;;2DADhBxU;gBAEA,IAAI,CAAC+0D,QAAQ,GAAG;0BAChB,IAAI,CAACC,kBAAkB,GAAG;iBAC1B/zD;gBACA,IAAMg0D,mBAAmBp0D;sBACzB,IAAI,CAAC2T,MAAM,GAAG,mBAAKygD,kBAAqBzgD;UACxC,IAAI,CAAC6a,KAAK,GAAG7a,OAAO0gD,YAAY;wBAChC7zD,eAAemT,OAAO6qB,aAAa;8CACnC,IAAM81B,cAAc,CAAC;oCACrB,IAAI,IAAI,CAAC3gD,MAAM,CAAC4gD,eAAe,IAAI,MAAMD,YAAYhhD,QAAQ,GAAG,IAAI,CAACK,MAAM,CAAC4gD,eAAe;gCAC3F,IAAI,IAAI,CAAC5gD,MAAM,CAAC6gD,eAAe,IAAI,MAAMF,YAAY/gD,QAAQ,GAAG,IAAI,CAACI,MAAM,CAAC6gD,eAAe;oCAC3F,IAAI,IAAI,CAAC7gD,MAAM,CAAC8gD,gBAAgB,IAAI,MAAMH,YAAYxhD,SAAS,GAAG,IAAI,CAACa,MAAM,CAAC8gD,gBAAgB;gCAC9F,IAAI,CAACC,WAAW,GAAG,IAAI/9C,sBAAsB,IAAI,CAAChD,MAAM,CAACghD,aAAa,EAAEL;yBACxE,IAAI,CAACM,wBAAwB,CAAC,IAAI,CAACF,WAAW,CAAC59C,QAAQ;+BACvD,IAAI,CAAC8/B,QAAQ,GAAG,IAAI,CAAC6Q,cAAc,CAAC;2BACpC,IAAI,CAAC5Q,QAAQ,GAAGn3C;4BAChB,IAAI,CAACi/C,UAAU,GAAG,IAAIjP,iBAAiB,CAAC,CAAC,IAAI,CAAC/7B,MAAM,CAAC6qB,aAAa,EAAE;8CAClE0S,iBAAiB,SAAjBA,gBAAkBvK,QAAQ8J,YAAYiJ;wCACpC,MAAKmb,eAAe,CAACluB,QAAQ8J,YAAYiJ;kCAC3C;yCACAnI,eAAe,SAAfA,cAAgB5K,QAAQ+S;iBACtB,MAAKob,cAAc,CAACnuB,QAAQ+S","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_FLOOR_LADDER_BOUNDS: () => DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG: () => DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n fixedFloorSelector: () => fixedFloorSelector,\n generateFloorLevels: () => generateFloorLevels,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds: () => resolveFloorLadderBounds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig,\n validateFloorCents: () => validateFloorCents,\n validateFloorLadderConfig: () => validateFloorLadderConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const realDeviceId = bridgeSignals.deviceId || (isCtv ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n let deviceId = realDeviceId;\n let deviceIdType = bridgeSignals.deviceIdType || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeSignals.deviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() ?? false : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking() ?? false;\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n if (ctx.podMinDurationMs != null) {\n params.set(\"pmnd\", String(Math.max(0, Math.round(ctx.podMinDurationMs))));\n }\n if (ctx.podMaxDurationMs != null) {\n params.set(\"pmxd\", String(Math.max(0, Math.round(ctx.podMaxDurationMs))));\n }\n if (ctx.podMaxAds != null) {\n params.set(\"pmad\", String(Math.max(1, Math.round(ctx.podMaxAds))));\n }\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"airytv_web_floor\",\n minFloorCents: 25,\n maxFloorCents: 300,\n stepCents: 25,\n selectedFloorCents: 25,\n fallbackFloorCents: 25,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [\"midroll\"],\n targetAdUnitPath: \"/21821455290/airytvadx/airytv-web\",\n configurationVersion: \"2026-09-29.1\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (context.isCtv) return skipped(\"ctv_excluded\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar FloorLadderController = class {\n constructor(initial, bounds, selector = fixedFloorSelector) {\n this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);\n this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));\n this.selector = selector;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n update(update) {\n this.config = mergeDefined(this.config, update);\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingUrl}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingUrl}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${parsed.vastAdTagUri}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\") {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const requestVast = async (creds) => {\n attempt++;\n if (kind === \"gam\") {\n logFunnel(\"gam_http_request_sent\", { attempt, credentials: creds });\n }\n const response = await fetch(vastTagUrl, {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind === \"gam\") {\n logFunnel(\"gam_response_received\", {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (credentials !== \"omit\" && !controller?.signal.aborted) {\n console.warn(\n `[HlsAdPlayer] VAST fetch failed with credentials=\"${credentials}\", retrying without credentials:`,\n error\n );\n logFunnel(\"vast_credentials_retry\", {\n errorMessage: error?.message\n });\n response = await requestVast(\"omit\");\n } else {\n throw error;\n }\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(\"[HlsAdPlayer] VAST XML received\");\n console.log(\n \"[HlsAdPlayer] VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n async function fetchAndParsePod(vastTagUrl) {\n lastPodAdElementCount = 0;\n const vastXml = await fetchVastXml(vastTagUrl);\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n console.error(\n \"[HlsAdPlayer] Pod VAST XML content (first 2000 chars):\",\n vastXml.substring(0, 2e3)\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n const podElements = adElements.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = adElements.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl) {\n console.log(\"[HlsAdPlayer] Requesting ads:\", vastTagUrl);\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n return {\n async generateNonce(options = {}) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n },\n getCurrentNonce() {\n return currentNonce;\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n }\n };\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultPodMaxAds = 6;\n this.defaultPodMaxDurationMs = 12e4;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n const vastMode = this.config.vastMode || \"default\";\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VAST mode:\", vastMode);\n }\n if (vastMode === \"adstorm\") {\n if (!this.config.licenseKey) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] AdStorm mode requires a license key\"\n );\n }\n return;\n }\n const vastEndpoint = `https://adstorm.co/api-adstorm-dev/adstorm/vast/${this.config.licenseKey}`;\n this.apiVastTagUrl = vastEndpoint;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using AdStorm VAST endpoint (adstorm mode):\",\n vastEndpoint\n );\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://adstorm.co/api-adstorm-dev/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolvePodParams(breakDurationMs) {\n const maxDurationMs = breakDurationMs != null && breakDurationMs > 0 ? breakDurationMs : this.config.podMaxDurationMs != null && this.config.podMaxDurationMs > 0 ? this.config.podMaxDurationMs : this.defaultPodMaxDurationMs;\n const maxAds = this.config.podMaxAds && this.config.podMaxAds > 0 ? this.config.podMaxAds : this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultPodMaxAds;\n const minDurationMs = this.config.podExactDuration && maxDurationMs != null ? maxDurationMs : 0;\n return { maxAds, minDurationMs, maxDurationMs };\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, podParams, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const urlWithMacros = applyVastMacros(baseUrl, {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n podMaxAds: podParams.maxAds,\n podMinDurationMs: podParams.minDurationMs,\n podMaxDurationMs: podParams.maxDurationMs,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals\n });\n const finalUrl = palNonce.injectNonce(ensureVideoAdType(urlWithMacros));\n console.log(\n `[StormcloudVideoPlayer] Resolved optimized-pod request URL (pod=${this.podCounter}, pmad=${podParams.maxAds}, pmnd=${podParams.minDurationMs}, pmxd=${podParams.maxDurationMs ?? \"?\"}):`,\n finalUrl\n );\n return finalUrl;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = tag.includes(\"EXT-X-DATERANGE\") ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n const breakDurationMs = remaining > 0 ? remaining : void 0;\n return this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n this.timing.resetGamNoFillCounter();\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n const hasPrefetchedUrl = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (adBreakDurationMs == null && !hasPrefetchedUrl) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl, adBreakDurationMs);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl, breakDurationMs) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl, breakDurationMs);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n const requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n pmad: params?.get(\"pmad\") ?? void 0,\n pmnd: params?.get(\"pmnd\") ?? void 0,\n pmxd: params?.get(\"pmxd\") ?? void 0,\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(vastTagUrl, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(vastTagUrl);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n break;\n case \"gam_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n withCurrentPodBudget(rawVastTagUrl) {\n const vastTagUrl = ensureVideoAdType(rawVastTagUrl);\n const remaining = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n if (!(remaining > 0)) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n if (!url.searchParams.has(\"pmxd\")) return vastTagUrl;\n const maxMs = Math.round(remaining);\n url.searchParams.set(\"pmxd\", String(maxMs));\n const minMs = Number(url.searchParams.get(\"pmnd\"));\n if (Number.isFinite(minMs) && minMs > maxMs) {\n url.searchParams.set(\"pmnd\", String(maxMs));\n }\n return url.toString();\n } catch {\n return vastTagUrl;\n }\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger) {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n gamRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n const budgetedUrl = this.withCurrentPodBudget(vastTagUrl);\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n const requestUrl = this.applyOpportunityFloor(budgetedUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => ap.requestAds(requestUrl));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsRetries: count(\"vast_credentials_retry\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n this.timing.consecutiveFailures++;\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n const floorBounds = {};\n if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;\n if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;\n if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;\n this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);\n this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base, breakDurationMs) => this.generatePodVastUrl(base, breakDurationMs),\n getFloorSnapshot: (position) => this.floorLadder.snapshotFor({ position, isCtv: this.isCtvEnvironment() }),\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n isCtvEnvironment() {\n if (this.config.ctvAdRequest) return true;\n const hint = inferDeviceTypeHint(false);\n return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;\n }\n setAdFloorLadder(update) {\n const report = this.floorLadder.update(update);\n this.warnOnInvalidFloorLadder(report);\n return report;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl, breakDurationMs) {\n const podParams = this.adConfig.resolvePodParams(breakDurationMs);\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n podParams,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.scteAdBreakEndWallClockMs = Date.now();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.currentAdBreakStartWallClockMs = this.timing.resolveScteBreakStartWallClockMs(marker);\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const breakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : void 0;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl, breakDurationMs)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.currentAdBreakStartWallClockMs = Date.now();\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"vastMode\",\n \"ctvAdRequest\",\n \"adFloorMinCents\",\n \"adFloorMaxCents\",\n \"adFloorStepCents\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = import_react.default.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastMode,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n adFloorLadder,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents,\n ...restVideoAttrs\n } = props;\n const adFloorLadderKey = JSON.stringify(adFloorLadder ?? null);\n const videoRef = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const appliedFloorLadderKeyRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = (0, import_react.useCallback)(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.useCallback)(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = (0, import_react.useMemo)(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n vastMode,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents\n ]);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastMode !== void 0) cfg.vastMode = vastMode;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;\n if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;\n if (adFloorMaxCents !== void 0) cfg.adFloorMaxCents = adFloorMaxCents;\n if (adFloorStepCents !== void 0) cfg.adFloorStepCents = adFloorStepCents;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || adFloorLadder === void 0) return;\n if (appliedFloorLadderKeyRef.current === adFloorLadderKey) return;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n playerRef.current.setAdFloorLadder(adFloorLadder);\n }, [adFloorLadderKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n (0, import_react.useEffect)(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.useEffect)(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n if (JSON.stringify(prevProps.adFloorLadder ?? null) !== JSON.stringify(nextProps.adFloorLadder ?? null)) {\n return false;\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nvar import_react6 = __toESM(require(\"react\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react5.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react6.Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends import_react6.Component {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return import_react6.default.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n detectBrowser,\n fixedFloorSelector,\n generateFloorLevels,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig,\n validateFloorCents,\n validateFloorLadderConfig\n});\n"]}
|