stormcloud-video-player 0.8.76 → 0.8.78
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 +2 -0
- package/lib/Player.cjs.map +1 -1
- package/lib/Player.d.cts +9 -1
- package/lib/StormcloudPlayer.cjs +235 -6
- package/lib/StormcloudPlayer.cjs.map +1 -1
- package/lib/index.cjs +235 -6
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +6 -0
- package/lib/index.js +236 -6
- package/lib/index.js.map +1 -1
- package/lib/player/ContentHealthWatchdog.cjs +255 -0
- package/lib/player/ContentHealthWatchdog.cjs.map +1 -0
- package/lib/player/ContentHealthWatchdog.d.cts +40 -0
- package/lib/player/StormcloudVideoPlayer.cjs +225 -6
- package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/player/StormcloudVideoPlayer.d.cts +1 -0
- package/lib/players/HlsPlayer.cjs +231 -6
- package/lib/players/HlsPlayer.cjs.map +1 -1
- package/lib/players/index.cjs +231 -6
- package/lib/players/index.cjs.map +1 -1
- package/lib/props.cjs +2 -0
- package/lib/props.cjs.map +1 -1
- package/lib/props.d.cts +5 -1
- package/lib/sdk/hlsAdPlayer.cjs +16 -6
- package/lib/sdk/hlsAdPlayer.cjs.map +1 -1
- package/lib/types.d.cts +1 -0
- package/lib/ui/StormcloudVideoPlayer.cjs +225 -6
- package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
- package/lib/utils/browserCompat.cjs +7 -0
- package/lib/utils/browserCompat.cjs.map +1 -1
- package/lib/utils/browserCompat.d.cts +2 -1
- package/package.json +2 -2
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.js"],"names":["React","useEffect","useRef","useMemo","useCallback","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","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","key","value","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","call","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","name","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","get","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","from","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","stripScvpMacros","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","all","then","DISABLED_FLOOR_LADDER_CONFIG","Object","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","generateFloorLevels","levels","cents","resolveFloorLadderBounds","overrides","validateFloorCents","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","isArray","validateFloorLadderConfig","errors","check","selected","fixedFloorSelector","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","target","update","next","AD_POSITIONS","finiteNumber","isFinite","parseApiFloorLadder","src","min","max","step","FloorLadderController","isEnabled","applyApiConfig","reset","getBounds","validate","setSelector","snapshotFor","Hls","getChromeVersion","getWebKitVersion","getPlatform","userAgentData","platform","detectBrowser","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","supportsModernJS","requiresMediaPipelineResetAfterAds","browser","getBrowserConfigOverrides","allowNativeHls","pauseContentDuringAds","assign","prototype","e","logBrowserInfo","debug","log","supportsFeature","feature","TextEncoder","fetch","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","total","hh","mm","ss","ms","resolveMacroValues","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","round","clientUa","podSequence","adServingId","substituteVastTrackingMacros","DEFAULT_REQUEST_SAFETY_MS","GAM_AD_OPPORTUNITY_DURATION_MS","POD_PARAM_KEYS","POSITIVE_INT","NON_NEGATIVE_INT","nonNegativeInt","positiveInt","resolveAdPodConfig","adPodConfig","requestSafetyMs","minPodDurationMs","maxAdsPerBreak","podMaxAds","maxPodDurationMs","podMaxDurationMs","exactDuration","podExactDuration","measureBreakCapacity","timing","nowMonoMs","scheduled","scheduledBreakDurationMs","breakStartMonoMs","endMonoMs","breakEndMonoMs","untilEnd","unplayed","playedDurationMs","elapsedBeforeGamRequestMs","remainingAtGamDispatchMs","resolvePodParams","input","capacity","pmxd","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","pmnd","pmad","podRequestAborted","message","diagnostics","error","Error","isPodRequestAbortedError","firstPositiveIntParam","getAll","isOptimizedPodUrl","some","finalizeGamRequestUrl","nowEpochMs","optimizedPod","breakId","scteBreakDurationMs","safetyReserveMs","decision","substituted","finalUrl","problems","validateGamRequestUrl","remainingMs","givn","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","gamRequestDispatchTimestamp","strippedMacros","expect","leftover","concat","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","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","code","gamCredentialsMode","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","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","pendingPlayPromise","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","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","timeoutId","release","outcome","clearTimeout","onload","onerror","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","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","sort","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","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","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","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","finalizeRequestUrl","controller","startedAt","attempt","resolveDispatchUrl","requestVast","response","AbortController","abort","creds","pending","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","to","errorMessage","statusText","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","sentinelCount","catch","shift","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","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","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","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","pendingNonce","generateNonce","run","generate","settle","getCurrentNonce","waitForNonce","maxWaitMs","timer","nonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getNonce","DEFAULT_TRACKING_INGEST_CONFIG","trackingIngestConfig","applyTrackingIngestConfig","configureTrackingIngest","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","cachedBrowserId","buildAnalyticsContext","contentNetwork","contentChannel","contentTitle","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","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","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","digest","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getCachedBrowserId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","hasOwnProperty","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","getDateRangeDurationSeconds","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","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","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","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","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","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","withDeferredPodParams","deferNonce","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultEdgePodMaxAds","palNonceDispatchWaitMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","apiUrl","apiEnableEdge","apiEdgeUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","enableEdgePodRequest","edgePodUrl","apiEnableEdgePodRequest","apiEdgePodUrl","apiFloorLadder","floorLadder","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","selectVastTagsForBreak","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","envSignals","ctvAdRequest","autoplay","nonceReady","completeDeferredRequestSignals","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","monotonicNow","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","beginBreakTiming","startWallClockMs","currentAdBreakStartWallClockMs","markBreakEndedNow","scteAdBreakEndWallClockMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","getBreakTimingSnapshot","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","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","Hls2","HlsEngine","cueManager","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","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","tagList","idx","isDateRange","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","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","LICENSE_KEY_PLACEHOLDER","resolveEdgePodBaseUrl","encodedKey","hasPlaceholder","resolveEdgePodRequestContext","setOptionalParam","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","remaining","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","currentPodSource","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","podPlayed","getEdgePodBaseUrl","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","deadline","waitedForMs","podUrl","prefetched","requestToken","requestUrl","podCount","vastUrls","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","isStale","completeGamRequestSignals","createGamDispatchFinalizer","callController","recordPodResponseDiagnostics","recordRequestFailure","handlePodRequestNotSent","edgeRequests","remainingAds","adsInBreak","getMinRemainingMsToRequestAd","offsetWidth","trigger","overrunAllowanceMs","classification","diag","endpoint","maxAdBreakExtensionMs","podDurationMs","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","podParamsDeferredToDispatch","impressionFired","failureKey","dispatchedUrl","impressionCount","requestFloorFields","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","_dispatchedUrl","podDispatchLogged","_logged","fields","podResponse","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsModeChanges","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","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","net","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","StormcloudVideoPlayer","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","edgePodBaseUrl","adMediaStartTimeoutMs","applyFloorLadderFromApi","report","warnOnInvalidFloorLadder","validation","isAdFloorLadderEnabled","applyEdgePodFromApi","getEdgePodUrl","getAdFloorLadder","getAdFloorBounds","setAdFloorSelector","palDescriptionUrl","attach","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","adSlotState","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","find","endMs","inWindow","tags","first","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls","FaPlay","FaPause","FaVolumeUp","FaVolumeMute","FaVolumeDown","Fragment","jsx","jsxs","ExpandIcon","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","focusable","children","CompressIcon","CRITICAL_PROPS","CONTROLS_HIDE_DELAY","DEFAULT_PLAYER_ASPECT_RATIO","StormcloudVideoPlayerComponent","memo","props","hideLoadingIndicator","onVolumeToggle","onFullscreenToggle","onControlClick","wrapperClassName","wrapperStyle","className","controls","preload","poster","restVideoAttrs","videoRef","playerRef","bufferingTimeoutRef","controlsTimerRef","wrapperRef","useState","currentIndex","totalAds","remainingSeconds","adStatus","setAdStatus","setShouldShowNativeControls","isMuted2","setIsMuted","isFullscreen2","setIsFullscreen","setIsPlaying","setCurrentTime","setDuration","setVolume2","playbackRate","setPlaybackRate","showVolumeSlider","setShowVolumeSlider","showSpeedMenu","setShowSpeedMenu","isLoading","setIsLoading","isBuffering","setIsBuffering","showCenterPlay","setShowCenterPlay","showLicenseWarning","setShowLicenseWarning","controlsVisible","setControlsVisible","innerWidth","viewportWidth","setViewportWidth","innerHeight","isPortrait","setIsPortrait","playerAspectRatio","setPlayerAspectRatio","getResponsiveScale","responsiveScale","resetControlsTimer","current","handleWrapperMouseMove","handleWrapperMouseLeave","formatTime","handlePlayPause","hasValidSource","handleCenterPlayClick","handleTimelineSeek","rect","currentTarget","getBoundingClientRect","clickX","clientX","newTime","handleVolumeChange","newVolume","handlePlaybackRateChange","rate","isHlsStream","isLiveUiMode","shouldShowEnhancedControls","criticalPropsKey","prop","player","showNative","checkAdStatus","showAdsFromMethod","showAdsFromAttribute","ceil","prev","interval","handleResize","updateStates","currentTimeValue","durationValue","volumeValue","rateValue","handleLoadedMetadata","video2","handleLoadedData","handleLoadStart","handleCanPlay","handleCanPlayThrough","handleWaiting","handlePlaying","handlePause","isAdActive","handleEnded","progressPercent","VolumeIcon","ref","onMouseMove","onMouseLeave","overflow","minHeight","aspectRatio","maxWidth","maxHeight","borderRadius","boxShadow","transform","animation","inset","border","borderTopColor","borderRightColor","background","backdropFilter","color","padding","textAlign","margin","fontSize","fontWeight","marginBottom","letterSpacing","lineHeight","gap","textTransform","cursor","onMouseEnter","marginLeft","minWidth","paddingRight","paddingLeft","onMouseDown","preventDefault","move","ev","r2","up","stopPropagation","fontFamily","fontVariantNumeric","userSelect","WebkitBackdropFilter","speed","flexShrink","textShadow","flexDirection","prevProps","nextProps","uiProps","callbackProps","React3","Component","Component4","Suspense","noop","defaultProps","loop","progressInterval","onStart","onBuffer","onBufferEnd","onDuration","onSeek","onProgress","lazy","reactLazy","omit","object","isMediaStream","MediaStream","supportsWebKitPresentationMode","randomString","substr","parseQuery","queryString","manualParse","qs","merge","isObject","item","IS_BROWSER","IS_GLOBAL","globalThis","IS_IOS","IS_SAFARI","SUPPORTS_HLS","SUPPORTS_DASH","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","dash","audio","HlsPlayer","arguments","mounted","onMount","seekTo","keepPlaying","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","componentDidMount","componentWillUnmount","componentDidUpdate","render","displayName","Component2","FilePlayer","handlePlay","handleError","onLoaded","setLoop","enablePIP","requestPictureInPicture","disablePIP","pictureInPictureElement","exitPictureInPicture","players","lazyPlayer","default","canEnablePIP","pictureInPictureEnabled","webkitSupportsPresentationMode","players_default","React2","Component3","SEEK_ON_PLAY_EXPIRY","Player","isReady","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","handlePlayerMount","playedSeconds","loadedSeconds","played","prevPlayed","prevLoaded","progressTimeout","handleReady","handleDurationCheck","activePlayer","loopOnEnded","args","durationCheckTimeout","handleLoaded","forceLoad","isFraction","Player2","IS_BROWSER2","IS_GLOBAL2","UniversalSuspense","SUPPORTED_PROPS","customPlayers","createStormcloudPlayer","playerList","_a","showPreview","references","getActivePlayer","getAttributes","fraction","renderActivePlayer","fallbackElement","Wrapper","attributes","addCustomPlayer","removeCustomPlayers","StormcloudPlayer","StormcloudPlayer_default"],"mappings":"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","sourcesContent":["// src/ui/StormcloudVideoPlayer.tsx\nimport React, { useEffect, useRef, useMemo, useCallback } from \"react\";\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 bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : 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();\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 validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\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}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\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 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 DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\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 (!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 AD_POSITIONS = [\"preroll\", \"midroll\", \"postroll\"];\nfunction finiteNumber(value) {\n return typeof value === \"number\" && isFinite(value) ? value : void 0;\n}\nfunction parseApiFloorLadder(raw) {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return void 0;\n const src = raw;\n const out = {};\n if (typeof src.enabled === \"boolean\") out.enabled = src.enabled;\n if (typeof src.targetingKey === \"string\") out.targetingKey = src.targetingKey;\n if (typeof src.targetAdUnitPath === \"string\") out.targetAdUnitPath = src.targetAdUnitPath;\n if (typeof src.configurationVersion === \"string\") out.configurationVersion = src.configurationVersion;\n if (typeof src.mode === \"string\") out.mode = src.mode;\n const min = finiteNumber(src.minFloorCents);\n const max = finiteNumber(src.maxFloorCents);\n const step = finiteNumber(src.stepCents);\n const selected = finiteNumber(src.selectedFloorCents);\n const fallback = finiteNumber(src.fallbackFloorCents);\n if (min !== void 0) out.minFloorCents = min;\n if (max !== void 0) out.maxFloorCents = max;\n if (step !== void 0) out.stepCents = step;\n if (selected !== void 0) out.selectedFloorCents = selected;\n if (fallback !== void 0) out.fallbackFloorCents = fallback;\n if (Array.isArray(src.readyFloorCents)) {\n out.readyFloorCents = src.readyFloorCents.filter(\n (cents) => finiteNumber(cents) !== void 0\n );\n }\n if (Array.isArray(src.allowedPositions)) {\n out.allowedPositions = src.allowedPositions.filter(\n (position) => AD_POSITIONS.indexOf(position) !== -1\n );\n }\n return out;\n}\nvar FloorLadderController = class {\n constructor(selector = fixedFloorSelector) {\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.selector = selector;\n }\n isEnabled() {\n return this.config.enabled === true;\n }\n applyApiConfig(raw) {\n const parsed = parseApiFloorLadder(raw);\n this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);\n this.bounds = Object.freeze({\n minCents: this.config.minFloorCents,\n maxCents: this.config.maxFloorCents,\n stepCents: this.config.stepCents\n });\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n reset() {\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...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\nimport Hls from \"hls.js\";\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/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\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}\nvar gamCredentialsMode = \"include\";\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}): ${trackingHost}`\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: ${trackingHost}`);\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 ? Hls.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 ? Hls.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 (Hls.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: ${redactUrl(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\", finalizeRequestUrl) {\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 resolveDispatchUrl = () => {\n if (kind === \"wrapper\") return vastTagUrl;\n if (finalizeRequestUrl) return finalizeRequestUrl(vastTagUrl, attempt);\n const { url, unresolved } = stripScvpMacros(vastTagUrl);\n if (unresolved.length > 0) {\n console.warn(\"[HlsAdPlayer] Removed unresolved SCVP macros before dispatch:\", unresolved.join(\", \"));\n }\n return url;\n };\n const requestVast = async (creds) => {\n attempt++;\n const pending = fetch(resolveDispatchUrl(), {\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 !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await pending;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_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 (kind === \"gam\" && !controller?.signal.aborted && !isPodRequestAbortedError(error)) {\n gamCredentialsMode = credentials === \"include\" ? \"omit\" : \"include\";\n console.warn(\n `[HlsAdPlayer] GAM fetch failed with credentials=\"${credentials}\"; next GAM request will use credentials=\"${gamCredentialsMode}\":`,\n error\n );\n logFunnel(\"gam_credentials_mode_changed\", {\n from: credentials,\n to: gamCredentialsMode,\n errorMessage: error?.message\n });\n }\n throw error;\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 (length=${vastXml.length})`);\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 function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\", finalizeRequestUrl) {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(\n vastTagUrl,\n isEdge ? \"omit\" : gamCredentialsMode,\n source,\n finalizeRequestUrl\n );\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 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 let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.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 isEdge ? ads.filter((ad) => ad.duration > 0) : 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 && Hls.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new Hls({\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(Hls.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(Hls.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === Hls.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, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(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, source, requestOptions?.finalizeRequestUrl);\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 limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\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 let pendingNonce;\n return {\n generateNonce(options = {}) {\n const run = generate(options);\n pendingNonce = run;\n const settle = () => {\n if (pendingNonce === run) pendingNonce = void 0;\n };\n run.then(settle, settle);\n return run;\n },\n getCurrentNonce() {\n return currentNonce;\n },\n waitForNonce(maxWaitMs) {\n if (currentNonce) return Promise.resolve(currentNonce);\n const pending = pendingNonce;\n if (!pending || !(maxWaitMs > 0)) return Promise.resolve(\"\");\n return new Promise((resolve) => {\n const timer = setTimeout(() => resolve(currentNonce), maxWaitMs);\n pending.then(\n (nonce) => {\n clearTimeout(timer);\n resolve(nonce);\n },\n () => {\n clearTimeout(timer);\n resolve(\"\");\n }\n );\n });\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 pendingNonce = void 0;\n }\n };\n async function generate(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}\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 const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\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}\nfunction getCachedBrowserId() {\n return cachedBrowserId ?? void 0;\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 source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\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 getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\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\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\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.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\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 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://edge.stormcloudhub.com/api/v1/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 apiEnableEdge = data.response?.enableEdgePodRequest;\n const apiEdgeUrl = data.response?.edgePodUrl;\n this.apiEnableEdgePodRequest = typeof apiEnableEdge === \"boolean\" ? apiEnableEdge : void 0;\n this.apiEdgePodUrl = typeof apiEdgeUrl === \"string\" ? apiEdgeUrl : void 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Edge pod settings from API:\", {\n enableEdgePodRequest: this.apiEnableEdgePodRequest,\n edgePodUrl: this.apiEdgePodUrl\n });\n }\n this.apiFloorLadder = data.response?.floorLadder;\n if (this.debug) {\n console.log(\n this.apiFloorLadder ? \"[StormcloudVideoPlayer] Floor ladder from API:\" : \"[StormcloudVideoPlayer] No floorLadder block in /ads/web response\",\n this.apiFloorLadder\n );\n }\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 resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\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, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\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 palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\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\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\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 beginBreakTiming(startWallClockMs) {\n this.currentAdBreakStartWallClockMs = startWallClockMs;\n this.breakStartMonoMs = monotonicNow() + (startWallClockMs - Date.now());\n this.breakEndMonoMs = void 0;\n }\n markBreakEndedNow() {\n this.scteAdBreakEndWallClockMs = Date.now();\n this.breakEndMonoMs = monotonicNow();\n }\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 this.breakEndMonoMs = durationMs != null && this.breakStartMonoMs != null ? this.breakStartMonoMs + durationMs : void 0;\n }\n getBreakTimingSnapshot() {\n return {\n scheduledBreakDurationMs: this.expectedAdBreakDurationMs,\n breakStartMonoMs: this.breakStartMonoMs,\n breakEndMonoMs: this.breakEndMonoMs,\n playedDurationMs: this.adBreakPlayedDurationMs\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.breakStartMonoMs = void 0;\n this.breakEndMonoMs = 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\nimport Hls2 from \"hls.js\";\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 Hls2({\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(Hls2.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(Hls2.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(Hls2.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-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? 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 = isDateRange ? getDateRangeDurationSeconds(attrs) : 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(Hls2.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(Hls2.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(Hls2.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(Hls2.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(Hls2.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 = getDateRangeDurationSeconds(attrs);\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(Hls2.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case Hls2.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case Hls2.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/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction resolveEdgePodRequestContext(config, extra = {}) {\n return {\n width: extra.width,\n height: extra.height,\n playerId: extra.playerId,\n contentNetwork: config.contentNetwork,\n contentChannel: config.channelName,\n contentTitle: config.programTitle\n };\n}\nfunction setOptionalParam(url, key, value) {\n const trimmed = value?.trim();\n if (trimmed) url.searchParams.set(key, trimmed);\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit, context = {}) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n if (context.width != null && Number.isFinite(context.width) && context.width > 0) {\n url.searchParams.set(\"width\", String(Math.round(context.width)));\n }\n if (context.height != null && Number.isFinite(context.height) && context.height > 0) {\n url.searchParams.set(\"height\", String(Math.round(context.height)));\n }\n setOptionalParam(url, \"pid\", context.playerId);\n setOptionalParam(url, \"cn\", context.contentNetwork);\n setOptionalParam(url, \"cc\", context.contentChannel);\n setOptionalParam(url, \"ct\", context.contentTitle);\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[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.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\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 return this.host.generatePodVastUrl(baseVastUrl);\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 if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\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.resetEdgeStateForBreak();\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 const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\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.resetEdgeStateForBreak();\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 if (adBreakDurationMs == null) {\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 if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\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) {\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);\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.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\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: this.currentVastUrl ?? 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 if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n const playerId = getCachedBrowserId();\n return buildEdgePodUrl(\n baseUrl,\n remainingMs,\n remainingAds,\n resolveEdgePodRequestContext(this.host.config, {\n width: this.host.video.offsetWidth || this.host.video.clientWidth,\n height: this.host.video.offsetHeight || this.host.video.clientHeight,\n playerId\n })\n );\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\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.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\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 \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\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 && !this.canRequestEdge()) {\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.canRequestEdge() && 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 if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\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 podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\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 const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\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 this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_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, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...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 createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\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, source = \"gam\") {\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 source,\n gamRequestSent: 0,\n edgeRequestSent: 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 this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\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: this.currentVastUrl ?? 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 if (this.handlePodRequestNotSent(error)) throw error;\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 edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\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 credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\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 this.resetEdgeStateForBreak();\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 if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\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.floorLadder = new FloorLadderController();\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) => this.generatePodVastUrl(base),\n completeGamRequestSignals: (url) => this.adConfig.completeDeferredRequestSignals(url, this.palNonce),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadder.isEnabled() ? this.floorLadder.snapshotFor({ position }) : void 0,\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 applyFloorLadderFromApi() {\n const raw = this.adConfig.apiFloorLadder;\n if (raw == null) {\n this.floorLadder.reset();\n return;\n }\n const report = this.floorLadder.applyApiConfig(raw);\n this.warnOnInvalidFloorLadder(report);\n if (this.debug) {\n console.log(\"[AdBreak][FLOOR] configuration applied from API\", {\n config: this.floorLadder.get(),\n bounds: this.floorLadder.getBounds(),\n validation: report\n });\n }\n }\n isAdFloorLadderEnabled() {\n return this.floorLadder.isEnabled();\n }\n applyEdgePodFromApi() {\n this.edgePodBaseUrl = resolveEdgePodBaseUrl({\n enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,\n edgePodUrl: this.adConfig.apiEdgePodUrl,\n licenseKey: this.config.licenseKey\n });\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] edge pod base URL from API:\", this.edgePodBaseUrl ?? \"(disabled; GAM only)\");\n }\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\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) {\n return this.adConfig.generatePodVastUrl(\n baseUrl,\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 this.applyFloorLadderFromApi();\n this.applyEdgePodFromApi();\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.markBreakEndedNow();\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.beginBreakTiming(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 generatedUrls = [this.generatePodVastUrl(baseVastUrl)];\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.beginBreakTiming(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 0;\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\nimport {\n FaPlay,\n FaPause,\n FaVolumeUp,\n FaVolumeMute,\n FaVolumeDown\n} from \"react-icons/fa\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ 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__ */ jsx(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ 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__ */ jsx(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ 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 \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = React.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 vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n contentNetwork,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n maxAdBreakExtensionMs,\n ...restVideoAttrs\n } = props;\n const videoRef = useRef(null);\n const playerRef = useRef(null);\n const bufferingTimeoutRef = useRef(null);\n const controlsTimerRef = useRef(null);\n const wrapperRef = useRef(null);\n const [adStatus, setAdStatus] = React.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = React.useState(true);\n const [isMuted2, setIsMuted] = React.useState(false);\n const [isFullscreen2, setIsFullscreen] = React.useState(false);\n const [isPlaying, setIsPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const [volume, setVolume2] = React.useState(1);\n const [playbackRate, setPlaybackRate] = React.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = React.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isBuffering, setIsBuffering] = React.useState(false);\n const [showCenterPlay, setShowCenterPlay] = React.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = React.useState(false);\n const [controlsVisible, setControlsVisible] = React.useState(true);\n const [viewportWidth, setViewportWidth] = React.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = React.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = React.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 = 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 = useCallback(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = 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 = 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 ]);\n 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 (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 (contentNetwork !== void 0) cfg.contentNetwork = contentNetwork;\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 (maxAdBreakExtensionMs !== void 0)\n cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;\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 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 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 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 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 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 useEffect(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n 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 ? FaVolumeMute : volume < 0.5 ? FaVolumeDown : FaVolumeUp;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ jsx(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ 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__ */ jsx(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ 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__ */ 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__ */ 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__ */ jsx(\n FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ 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__ */ jsx(FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ 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__ */ 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__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ 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__ */ 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__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ jsx(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ 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__ */ 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__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ 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\nimport React3, { Component as Component4, Suspense } from \"react\";\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\nimport { lazy as reactLazy } from \"react\";\nvar lazy = reactLazy;\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\nimport { Component } from \"react\";\nvar HlsPlayer = class extends 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\nimport { Component as Component2 } from \"react\";\nvar FilePlayer = class extends Component2 {\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\nimport React2, { Component as Component3 } from \"react\";\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends Component3 {\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 React2.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 ? 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 Component4 {\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 React3.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 React3.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n React3.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;\nexport {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DISABLED_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer_default as StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n StormcloudVideoPlayerComponent as default,\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 parseApiFloorLadder,\n parseQuery,\n players_default as 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"]}
|
|
1
|
+
{"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.js"],"names":["React","useEffect","useRef","useMemo","useCallback","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","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","key","value","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","call","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","name","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","get","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","from","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","stripScvpMacros","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","all","then","DISABLED_FLOOR_LADDER_CONFIG","Object","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","DEFAULT_FLOOR_LADDER_BOUNDS","minCents","maxCents","generateFloorLevels","levels","cents","resolveFloorLadderBounds","overrides","validateFloorCents","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","isArray","validateFloorLadderConfig","errors","check","selected","fixedFloorSelector","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","target","update","next","AD_POSITIONS","finiteNumber","isFinite","parseApiFloorLadder","src","min","max","step","FloorLadderController","isEnabled","applyApiConfig","reset","getBounds","validate","setSelector","snapshotFor","Hls","getChromeVersion","getWebKitVersion","getPlatform","userAgentData","platform","detectBrowser","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","supportsModernJS","requiresMediaPipelineResetAfterAds","browser","prefersProgressiveAdMedia","getBrowserConfigOverrides","allowNativeHls","pauseContentDuringAds","assign","prototype","e","logBrowserInfo","debug","log","supportsFeature","feature","TextEncoder","fetch","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","total","hh","mm","ss","ms","resolveMacroValues","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerWidth","playerHeight","round","clientUa","podSequence","adServingId","substituteVastTrackingMacros","DEFAULT_REQUEST_SAFETY_MS","GAM_AD_OPPORTUNITY_DURATION_MS","POD_PARAM_KEYS","POSITIVE_INT","NON_NEGATIVE_INT","nonNegativeInt","positiveInt","resolveAdPodConfig","adPodConfig","requestSafetyMs","minPodDurationMs","maxAdsPerBreak","podMaxAds","maxPodDurationMs","podMaxDurationMs","exactDuration","podExactDuration","measureBreakCapacity","timing","nowMonoMs","scheduled","scheduledBreakDurationMs","breakStartMonoMs","endMonoMs","breakEndMonoMs","untilEnd","unplayed","playedDurationMs","elapsedBeforeGamRequestMs","remainingAtGamDispatchMs","resolvePodParams","input","capacity","pmxd","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","pmnd","pmad","podRequestAborted","message","diagnostics","error","Error","isPodRequestAbortedError","firstPositiveIntParam","getAll","isOptimizedPodUrl","some","finalizeGamRequestUrl","nowEpochMs","optimizedPod","breakId","scteBreakDurationMs","safetyReserveMs","decision","substituted","finalUrl","problems","validateGamRequestUrl","remainingMs","givn","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","gamRequestDispatchTimestamp","strippedMacros","expect","leftover","concat","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","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","code","gamCredentialsMode","createHlsAdPlayer","contentVideo","options","adPlaying","originalMutedState","originalVolume","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","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","pendingPlayPromise","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","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","timeoutId","release","outcome","clearTimeout","onload","onerror","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","deprioritizeHls","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","deprioritizedHls","sort","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","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","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","parserError","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","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","finalizeRequestUrl","controller","startedAt","attempt","resolveDispatchUrl","requestVast","response","AbortController","abort","creds","pending","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","to","errorMessage","statusText","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","wrapperCount","sentinelCount","catch","shift","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","onPlaying","startStallWatchdog","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","vastErrorCode","mediaErrorCode","networkState","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","onVolumeChange","userActivation","isActive","paused","mute","unmute","isTrackablePlayback","ended","onPause","pause","onPlay","resume","handler","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","fireNotUsedForUnplayedAds","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","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","previousSourceUsedHlsJs","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","handleAdError","loadCurrentAdMedia","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","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","isAdPlaying","setFunnelContext","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","createPalNonceManager","currentNonce","currentNonceManager","pendingNonce","generateNonce","run","generate","settle","getCurrentNonce","waitForNonce","maxWaitMs","timer","nonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","JSON","stringify","loadNonceManager","getNonce","DEFAULT_TRACKING_INGEST_CONFIG","trackingIngestConfig","applyTrackingIngestConfig","configureTrackingIngest","isTrackingIngestEnabled","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","ingestPlayerTracking","licenseKey","body","method","Authorization","cachedBrowserId","buildAnalyticsContext","contentNetwork","contentChannel","contentTitle","debugAdTiming","isLiveStream","inputStreamType","getClientInfo","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","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","digest","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getCachedBrowserId","getBrowserID","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","sendInitialTracking","metricEvent","events","sendAdDetectTracking","adDetectInfo","sendHeartbeat","sendAdLoadedTracking","adLoadedInfo","sendAdImpressionTracking","adImpressionInfo","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","hasOwnProperty","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","initializePolyfills","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","getDateRangeDurationSeconds","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","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","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","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","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","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","withDeferredPodParams","deferNonce","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultEdgePodMaxAds","palNonceDispatchWaitMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","apiUrl","apiEnableEdge","apiEdgeUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","enableEdgePodRequest","edgePodUrl","apiEnableEdgePodRequest","apiEdgePodUrl","apiFloorLadder","floorLadder","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","selectVastTagsForBreak","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","envSignals","ctvAdRequest","autoplay","nonceReady","completeDeferredRequestSignals","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","monotonicNow","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","beginBreakTiming","startWallClockMs","currentAdBreakStartWallClockMs","markBreakEndedNow","scteAdBreakEndWallClockMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","getBreakTimingSnapshot","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","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","Hls2","HlsEngine","cueManager","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","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","tagList","idx","isDateRange","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","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","LICENSE_KEY_PLACEHOLDER","resolveEdgePodBaseUrl","encodedKey","hasPlaceholder","resolveEdgePodRequestContext","setOptionalParam","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","REQUEST_FAILURE_STAGES","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMinRemainingMsToRequestAd","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","currentVastUrl","remaining","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","currentPodSource","recreateAdController","currentRequestId","state","shouldShowPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","breakSource","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","podPlayed","getEdgePodBaseUrl","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","deadline","waitedForMs","podUrl","prefetched","requestToken","requestUrl","podCount","vastUrls","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","isStale","completeGamRequestSignals","createGamDispatchFinalizer","callController","recordPodResponseDiagnostics","recordRequestFailure","handlePodRequestNotSent","edgeRequests","remainingAds","adsInBreak","getMinRemainingMsToRequestAd","offsetWidth","trigger","overrunAllowanceMs","classification","diag","endpoint","maxAdBreakExtensionMs","podDurationMs","failureReason","previous","minRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","podParamsDeferredToDispatch","impressionFired","failureKey","dispatchedUrl","impressionCount","requestFloorFields","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","_dispatchedUrl","podDispatchLogged","_logged","fields","podResponse","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeFills","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsModeChanges","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","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","restoredMuted","restoredVolume","monitorLiveResumeStall","resumeContentPlayback","liveSyncPos","toFixed","restartHlsLoad","getBufferedAhead","ranges","buffered","describeVideoState","networkStates","readyStates","net","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","POLL_INTERVAL_MS","STALL_THRESHOLD_MS","POST_BREAK_GRACE_MS","MAX_BREAK_SUPPRESSION_MS","SELF_INFLICTED_PAUSE_WINDOW_MS","HEALTHY_PLAYBACK_SECONDS","MAX_NORMAL_ADVANCE_PER_TICK_S","LIGHT_STEP_COOLDOWN_MS","RELOAD_BASE_COOLDOWN_MS","RELOAD_MAX_COOLDOWN_MS","ContentHealthWatchdog","armed","userPaused","wasInBreak","breakStartedAt","stuckBreakLogged","graceUntil","lastPosition","lastProgressAt","lastRealPlaybackAt","healthySeconds","nextActionAt","lastActionAt","intervalId","resetProgress","tick","hidden","hasHlsInstance","breakActive","delta","recover","stalledForS","fullReloadOnly","action","reloadIndex","cooldown","StormcloudVideoPlayer","attached","palPlaybackStarted","browserOverrides","videoElement","startAdPrefetch","onScte35Marker","startScte35AdBreak","hlsEngine","c","edgePodBaseUrl","contentWatchdog","adMediaStartTimeoutMs","applyFloorLadderFromApi","report","warnOnInvalidFloorLadder","validation","isAdFloorLadderEnabled","applyEdgePodFromApi","getEdgePodUrl","getAdFloorLadder","getAdFloorBounds","setAdFloorSelector","palDescriptionUrl","attach","prerollKey","endedHandler","onVideoEnded","timeUpdateHandler","emptiedHandler","wasPaused","contentStallWatchdog","Infinity","newDurationMs","detectPayload","hasPrefetchedAds","isManifest","forceImmediate","immediateManifestAds","isManifestMarker","hasPts","estCurrentPtsMs","markerPtsMs","tolerance","adSlotState","activeAdRequest","checkIntervalMs","adBreakCheckIntervalMs","maxExtensionMsConfig","maxExtensionMs","overrunMs","shouldExtendAdBreak","generatedUrls","detectedAtFragmentSn","isFetching","fetchStartTime","currentTimeSec","breakToPlay","handleVmapAdBreak","postroll","find","endMs","inWindow","tags","first","getCurrentAdIndex","getTotalAdsInBreak","getAdRemainingMs","isShowingAds","shouldShowNativeControls","showCustomControls","FaPlay","FaPause","FaVolumeUp","FaVolumeMute","FaVolumeDown","Fragment","jsx","jsxs","ExpandIcon","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","focusable","children","CompressIcon","CRITICAL_PROPS","CONTROLS_HIDE_DELAY","DEFAULT_PLAYER_ASPECT_RATIO","StormcloudVideoPlayerComponent","memo","props","hideLoadingIndicator","onVolumeToggle","onFullscreenToggle","onControlClick","wrapperClassName","wrapperStyle","className","controls","preload","poster","restVideoAttrs","videoRef","playerRef","bufferingTimeoutRef","controlsTimerRef","wrapperRef","useState","currentIndex","totalAds","remainingSeconds","adStatus","setAdStatus","setShouldShowNativeControls","isMuted2","setIsMuted","isFullscreen2","setIsFullscreen","setIsPlaying","setCurrentTime","setDuration","setVolume2","playbackRate","setPlaybackRate","showVolumeSlider","setShowVolumeSlider","showSpeedMenu","setShowSpeedMenu","isLoading","setIsLoading","isBuffering","setIsBuffering","showCenterPlay","setShowCenterPlay","showLicenseWarning","setShowLicenseWarning","controlsVisible","setControlsVisible","innerWidth","viewportWidth","setViewportWidth","innerHeight","isPortrait","setIsPortrait","playerAspectRatio","setPlayerAspectRatio","getResponsiveScale","responsiveScale","resetControlsTimer","current","handleWrapperMouseMove","handleWrapperMouseLeave","formatTime","handlePlayPause","hasValidSource","handleCenterPlayClick","handleTimelineSeek","rect","currentTarget","getBoundingClientRect","clickX","clientX","newTime","handleVolumeChange","newVolume","handlePlaybackRateChange","rate","isHlsStream","isLiveUiMode","shouldShowEnhancedControls","criticalPropsKey","prop","player","showNative","checkAdStatus","showAdsFromMethod","showAdsFromAttribute","ceil","prev","interval","handleResize","updateStates","currentTimeValue","durationValue","volumeValue","rateValue","handleLoadedMetadata","video2","handleLoadedData","handleLoadStart","handleCanPlay","handleCanPlayThrough","handleWaiting","handlePlaying","handlePause","isAdActive","handleEnded","progressPercent","VolumeIcon","ref","onMouseMove","onMouseLeave","overflow","minHeight","aspectRatio","maxWidth","maxHeight","borderRadius","boxShadow","transform","animation","inset","border","borderTopColor","borderRightColor","background","backdropFilter","color","padding","textAlign","margin","fontSize","fontWeight","marginBottom","letterSpacing","lineHeight","gap","textTransform","cursor","onMouseEnter","marginLeft","minWidth","paddingRight","paddingLeft","onMouseDown","preventDefault","move","ev","r2","up","stopPropagation","fontFamily","fontVariantNumeric","userSelect","WebkitBackdropFilter","speed","flexShrink","textShadow","flexDirection","prevProps","nextProps","uiProps","callbackProps","React3","Component","Component4","Suspense","noop","defaultProps","loop","progressInterval","onStart","onBuffer","onBufferEnd","onDuration","onSeek","onProgress","lazy","reactLazy","omit","object","isMediaStream","MediaStream","supportsWebKitPresentationMode","randomString","substr","parseQuery","queryString","manualParse","qs","merge","isObject","item","IS_BROWSER","IS_GLOBAL","globalThis","IS_IOS","IS_SAFARI","SUPPORTS_HLS","SUPPORTS_DASH","HLS_EXTENSIONS","HLS_PATHS","DASH_EXTENSIONS","VIDEO_EXTENSIONS","AUDIO_EXTENSIONS","canPlay","dash","audio","HlsPlayer","arguments","mounted","onMount","seekTo","keepPlaying","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","componentDidMount","componentWillUnmount","componentDidUpdate","render","displayName","Component2","FilePlayer","handlePlay","handleError","onLoaded","setLoop","enablePIP","requestPictureInPicture","disablePIP","pictureInPictureElement","exitPictureInPicture","players","lazyPlayer","default","canEnablePIP","pictureInPictureEnabled","webkitSupportsPresentationMode","players_default","React2","Component3","SEEK_ON_PLAY_EXPIRY","Player","isReady","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","handlePlayerMount","playedSeconds","loadedSeconds","played","prevPlayed","prevLoaded","progressTimeout","handleReady","handleDurationCheck","activePlayer","loopOnEnded","args","durationCheckTimeout","handleLoaded","forceLoad","isFraction","Player2","IS_BROWSER2","IS_GLOBAL2","UniversalSuspense","SUPPORTED_PROPS","customPlayers","createStormcloudPlayer","playerList","_a","showPreview","references","getActivePlayer","getAttributes","fraction","renderActivePlayer","fallbackElement","Wrapper","attributes","addCustomPlayer","removeCustomPlayers","StormcloudPlayer","StormcloudPlayer_default"],"mappings":"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","sourcesContent":["// src/ui/StormcloudVideoPlayer.tsx\nimport React, { useEffect, useRef, useMemo, useCallback } from \"react\";\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 bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : 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();\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 validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\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}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\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 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 DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\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 (!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 AD_POSITIONS = [\"preroll\", \"midroll\", \"postroll\"];\nfunction finiteNumber(value) {\n return typeof value === \"number\" && isFinite(value) ? value : void 0;\n}\nfunction parseApiFloorLadder(raw) {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return void 0;\n const src = raw;\n const out = {};\n if (typeof src.enabled === \"boolean\") out.enabled = src.enabled;\n if (typeof src.targetingKey === \"string\") out.targetingKey = src.targetingKey;\n if (typeof src.targetAdUnitPath === \"string\") out.targetAdUnitPath = src.targetAdUnitPath;\n if (typeof src.configurationVersion === \"string\") out.configurationVersion = src.configurationVersion;\n if (typeof src.mode === \"string\") out.mode = src.mode;\n const min = finiteNumber(src.minFloorCents);\n const max = finiteNumber(src.maxFloorCents);\n const step = finiteNumber(src.stepCents);\n const selected = finiteNumber(src.selectedFloorCents);\n const fallback = finiteNumber(src.fallbackFloorCents);\n if (min !== void 0) out.minFloorCents = min;\n if (max !== void 0) out.maxFloorCents = max;\n if (step !== void 0) out.stepCents = step;\n if (selected !== void 0) out.selectedFloorCents = selected;\n if (fallback !== void 0) out.fallbackFloorCents = fallback;\n if (Array.isArray(src.readyFloorCents)) {\n out.readyFloorCents = src.readyFloorCents.filter(\n (cents) => finiteNumber(cents) !== void 0\n );\n }\n if (Array.isArray(src.allowedPositions)) {\n out.allowedPositions = src.allowedPositions.filter(\n (position) => AD_POSITIONS.indexOf(position) !== -1\n );\n }\n return out;\n}\nvar FloorLadderController = class {\n constructor(selector = fixedFloorSelector) {\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.selector = selector;\n }\n isEnabled() {\n return this.config.enabled === true;\n }\n applyApiConfig(raw) {\n const parsed = parseApiFloorLadder(raw);\n this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);\n this.bounds = Object.freeze({\n minCents: this.config.minFloorCents,\n maxCents: this.config.maxFloorCents,\n stepCents: this.config.stepCents\n });\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n reset() {\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...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\nimport Hls from \"hls.js\";\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 prefersProgressiveAdMedia() {\n return detectBrowser().isSmartTV;\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/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\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}\nvar gamCredentialsMode = \"include\";\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}): ${trackingHost}`\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: ${trackingHost}`);\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 deprioritizeHls = prefersProgressiveAdMedia();\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 ? Hls.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 ? Hls.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 const deprioritizedHls = deprioritizeHls && isHls;\n accepted.push({ file, score, insecure, deprioritizedHls });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : deprioritizedHls ? \"hls_deprioritized_on_tv\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n if (a.deprioritizedHls !== b.deprioritizedHls) {\n return a.deprioritizedHls ? 1 : -1;\n }\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 (Hls.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: ${redactUrl(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\", finalizeRequestUrl) {\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 resolveDispatchUrl = () => {\n if (kind === \"wrapper\") return vastTagUrl;\n if (finalizeRequestUrl) return finalizeRequestUrl(vastTagUrl, attempt);\n const { url, unresolved } = stripScvpMacros(vastTagUrl);\n if (unresolved.length > 0) {\n console.warn(\"[HlsAdPlayer] Removed unresolved SCVP macros before dispatch:\", unresolved.join(\", \"));\n }\n return url;\n };\n const requestVast = async (creds) => {\n attempt++;\n const pending = fetch(resolveDispatchUrl(), {\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 !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await pending;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_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 (kind === \"gam\" && !controller?.signal.aborted && !isPodRequestAbortedError(error)) {\n gamCredentialsMode = credentials === \"include\" ? \"omit\" : \"include\";\n console.warn(\n `[HlsAdPlayer] GAM fetch failed with credentials=\"${credentials}\"; next GAM request will use credentials=\"${gamCredentialsMode}\":`,\n error\n );\n logFunnel(\"gam_credentials_mode_changed\", {\n from: credentials,\n to: gamCredentialsMode,\n errorMessage: error?.message\n });\n }\n throw error;\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 (length=${vastXml.length})`);\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 function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\", finalizeRequestUrl) {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(\n vastTagUrl,\n isEdge ? \"omit\" : gamCredentialsMode,\n source,\n finalizeRequestUrl\n );\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 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 let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.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 isEdge ? ads.filter((ad) => ad.duration > 0) : 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(reason) {\n console.log(`[HlsAdPlayer] Recreating ad video element (${reason})`);\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 const previousSourceUsedHlsJs = adHls !== void 0;\n if (requiresMediaPipelineResetAfterAds() || previousSourceUsedHlsJs) {\n recreateAdVideoElement(\n previousSourceUsedHlsJs ? \"after hls.js source\" : \"single-decoder platform\"\n );\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 && Hls.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new Hls({\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(Hls.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(Hls.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === Hls.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, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(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, source, requestOptions?.finalizeRequestUrl);\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 limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\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 let pendingNonce;\n return {\n generateNonce(options = {}) {\n const run = generate(options);\n pendingNonce = run;\n const settle = () => {\n if (pendingNonce === run) pendingNonce = void 0;\n };\n run.then(settle, settle);\n return run;\n },\n getCurrentNonce() {\n return currentNonce;\n },\n waitForNonce(maxWaitMs) {\n if (currentNonce) return Promise.resolve(currentNonce);\n const pending = pendingNonce;\n if (!pending || !(maxWaitMs > 0)) return Promise.resolve(\"\");\n return new Promise((resolve) => {\n const timer = setTimeout(() => resolve(currentNonce), maxWaitMs);\n pending.then(\n (nonce) => {\n clearTimeout(timer);\n resolve(nonce);\n },\n () => {\n clearTimeout(timer);\n resolve(\"\");\n }\n );\n });\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 pendingNonce = void 0;\n }\n };\n async function generate(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}\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 const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\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}\nfunction getCachedBrowserId() {\n return cachedBrowserId ?? void 0;\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 source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\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 getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\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\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\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.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\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 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://edge.stormcloudhub.com/api/v1/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 apiEnableEdge = data.response?.enableEdgePodRequest;\n const apiEdgeUrl = data.response?.edgePodUrl;\n this.apiEnableEdgePodRequest = typeof apiEnableEdge === \"boolean\" ? apiEnableEdge : void 0;\n this.apiEdgePodUrl = typeof apiEdgeUrl === \"string\" ? apiEdgeUrl : void 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Edge pod settings from API:\", {\n enableEdgePodRequest: this.apiEnableEdgePodRequest,\n edgePodUrl: this.apiEdgePodUrl\n });\n }\n this.apiFloorLadder = data.response?.floorLadder;\n if (this.debug) {\n console.log(\n this.apiFloorLadder ? \"[StormcloudVideoPlayer] Floor ladder from API:\" : \"[StormcloudVideoPlayer] No floorLadder block in /ads/web response\",\n this.apiFloorLadder\n );\n }\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 resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\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, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\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 palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\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\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\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 beginBreakTiming(startWallClockMs) {\n this.currentAdBreakStartWallClockMs = startWallClockMs;\n this.breakStartMonoMs = monotonicNow() + (startWallClockMs - Date.now());\n this.breakEndMonoMs = void 0;\n }\n markBreakEndedNow() {\n this.scteAdBreakEndWallClockMs = Date.now();\n this.breakEndMonoMs = monotonicNow();\n }\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 this.breakEndMonoMs = durationMs != null && this.breakStartMonoMs != null ? this.breakStartMonoMs + durationMs : void 0;\n }\n getBreakTimingSnapshot() {\n return {\n scheduledBreakDurationMs: this.expectedAdBreakDurationMs,\n breakStartMonoMs: this.breakStartMonoMs,\n breakEndMonoMs: this.breakEndMonoMs,\n playedDurationMs: this.adBreakPlayedDurationMs\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.breakStartMonoMs = void 0;\n this.breakEndMonoMs = 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\nimport Hls2 from \"hls.js\";\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 Hls2({\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(Hls2.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(Hls2.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(Hls2.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-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? 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 = isDateRange ? getDateRangeDurationSeconds(attrs) : 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(Hls2.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(Hls2.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(Hls2.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(Hls2.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(Hls2.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 = getDateRangeDurationSeconds(attrs);\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(Hls2.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case Hls2.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case Hls2.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/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction resolveEdgePodRequestContext(config, extra = {}) {\n return {\n width: extra.width,\n height: extra.height,\n playerId: extra.playerId,\n contentNetwork: config.contentNetwork,\n contentChannel: config.channelName,\n contentTitle: config.programTitle\n };\n}\nfunction setOptionalParam(url, key, value) {\n const trimmed = value?.trim();\n if (trimmed) url.searchParams.set(key, trimmed);\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit, context = {}) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n if (context.width != null && Number.isFinite(context.width) && context.width > 0) {\n url.searchParams.set(\"width\", String(Math.round(context.width)));\n }\n if (context.height != null && Number.isFinite(context.height) && context.height > 0) {\n url.searchParams.set(\"height\", String(Math.round(context.height)));\n }\n setOptionalParam(url, \"pid\", context.playerId);\n setOptionalParam(url, \"cn\", context.contentNetwork);\n setOptionalParam(url, \"cc\", context.contentChannel);\n setOptionalParam(url, \"ct\", context.contentTitle);\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[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.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\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 return this.host.generatePodVastUrl(baseVastUrl);\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 if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\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.resetEdgeStateForBreak();\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 const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\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.resetEdgeStateForBreak();\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 if (adBreakDurationMs == null) {\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 if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\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) {\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);\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.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\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: this.currentVastUrl ?? 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 if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n const playerId = getCachedBrowserId();\n return buildEdgePodUrl(\n baseUrl,\n remainingMs,\n remainingAds,\n resolveEdgePodRequestContext(this.host.config, {\n width: this.host.video.offsetWidth || this.host.video.clientWidth,\n height: this.host.video.offsetHeight || this.host.video.clientHeight,\n playerId\n })\n );\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\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.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\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 \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\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 && !this.canRequestEdge()) {\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.canRequestEdge() && 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 if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\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 podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\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 const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\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 this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_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, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...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 createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\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, source = \"gam\") {\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 source,\n gamRequestSent: 0,\n edgeRequestSent: 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 this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\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: this.currentVastUrl ?? 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 if (this.handlePodRequestNotSent(error)) throw error;\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 edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\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 credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\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 this.resetEdgeStateForBreak();\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 if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\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/ContentHealthWatchdog.ts\nvar POLL_INTERVAL_MS = 2e3;\nvar STALL_THRESHOLD_MS = 12e3;\nvar POST_BREAK_GRACE_MS = 5e4;\nvar MAX_BREAK_SUPPRESSION_MS = 10 * 60 * 1e3;\nvar SELF_INFLICTED_PAUSE_WINDOW_MS = 5e3;\nvar HEALTHY_PLAYBACK_SECONDS = 5;\nvar MAX_NORMAL_ADVANCE_PER_TICK_S = 4;\nvar LIGHT_STEP_COOLDOWN_MS = 1e4;\nvar RELOAD_BASE_COOLDOWN_MS = 15e3;\nvar RELOAD_MAX_COOLDOWN_MS = 12e4;\nvar ContentHealthWatchdog = class {\n constructor(host) {\n this.host = host;\n this.armed = false;\n this.userPaused = false;\n this.wasInBreak = false;\n this.breakStartedAt = 0;\n this.stuckBreakLogged = false;\n this.graceUntil = 0;\n this.lastPosition = 0;\n this.lastProgressAt = 0;\n this.lastRealPlaybackAt = 0;\n this.healthySeconds = 0;\n this.step = 0;\n this.nextActionAt = 0;\n this.lastActionAt = 0;\n this.onPlaying = () => {\n if (this.host.isAdPlaying()) return;\n this.armed = true;\n this.userPaused = false;\n };\n this.onPause = () => {\n if (this.host.isBreakActive() || this.host.isAdPlaying() || Date.now() - this.lastActionAt < SELF_INFLICTED_PAUSE_WINDOW_MS) {\n return;\n }\n this.userPaused = true;\n };\n this.onPlay = () => {\n this.userPaused = false;\n };\n }\n start() {\n if (this.intervalId !== void 0) return;\n const video = this.host.video;\n video.addEventListener(\"playing\", this.onPlaying);\n video.addEventListener(\"pause\", this.onPause);\n video.addEventListener(\"play\", this.onPlay);\n this.resetProgress(Date.now());\n this.intervalId = window.setInterval(() => this.tick(), POLL_INTERVAL_MS);\n }\n stop() {\n if (this.intervalId !== void 0) {\n clearInterval(this.intervalId);\n this.intervalId = void 0;\n }\n const video = this.host.video;\n video.removeEventListener(\"playing\", this.onPlaying);\n video.removeEventListener(\"pause\", this.onPause);\n video.removeEventListener(\"play\", this.onPlay);\n this.armed = false;\n this.step = 0;\n }\n resetProgress(now) {\n this.lastPosition = this.host.video.currentTime;\n this.lastProgressAt = now;\n }\n tick() {\n const now = Date.now();\n const video = this.host.video;\n const hidden = typeof document !== \"undefined\" && document.visibilityState === \"hidden\";\n if (!this.armed || this.userPaused || hidden || video.ended || !this.host.isLiveStream() || !this.host.hasHlsInstance()) {\n this.resetProgress(now);\n return;\n }\n const breakActive = this.host.isBreakActive() || this.host.isAdPlaying();\n if (breakActive && !this.wasInBreak) {\n this.wasInBreak = true;\n this.breakStartedAt = now;\n this.stuckBreakLogged = false;\n }\n if (breakActive && now - this.breakStartedAt < MAX_BREAK_SUPPRESSION_MS) {\n this.resetProgress(now);\n return;\n }\n if (breakActive && !this.stuckBreakLogged) {\n this.stuckBreakLogged = true;\n console.warn(\n `[ContentWatchdog] Ad break state active for over ${MAX_BREAK_SUPPRESSION_MS / 6e4} min \\u2014 monitoring content anyway`\n );\n }\n if (!breakActive && this.wasInBreak) {\n this.wasInBreak = false;\n this.graceUntil = now + POST_BREAK_GRACE_MS;\n this.resetProgress(now);\n return;\n }\n const currentTime = video.currentTime;\n const delta = currentTime - this.lastPosition;\n this.lastPosition = currentTime;\n if (delta > 0.25 && delta <= MAX_NORMAL_ADVANCE_PER_TICK_S && !video.paused) {\n this.lastProgressAt = now;\n this.lastRealPlaybackAt = now;\n this.healthySeconds += delta;\n if (this.step > 0 && this.healthySeconds >= HEALTHY_PLAYBACK_SECONDS) {\n console.log(\n `[ContentWatchdog] Content playback recovered after ${this.step} recovery step(s)`\n );\n this.step = 0;\n this.nextActionAt = 0;\n }\n return;\n }\n if (now < this.graceUntil) {\n this.lastProgressAt = now;\n return;\n }\n if (now - this.lastProgressAt < STALL_THRESHOLD_MS || now < this.nextActionAt) {\n return;\n }\n this.recover(now);\n }\n recover(now) {\n const video = this.host.video;\n const state = `t=${video.currentTime.toFixed(2)} paused=${video.paused} readyState=${video.readyState} networkState=${video.networkState} error=${video.error ? video.error.code : \"none\"}`;\n const stalledForS = ((now - (this.lastRealPlaybackAt || this.lastProgressAt)) / 1e3).toFixed(0);\n const fullReloadOnly = this.host.requiresMediaPipelineResetAfterAds();\n const action = fullReloadOnly || this.step >= 2 ? \"reload\" : this.step === 0 ? \"recover_media_error\" : \"restart_load\";\n console.warn(\n `[ContentWatchdog] Content stalled for ${stalledForS}s \\u2014 ${action} (step ${this.step + 1}) \\u2014 ${state}`\n );\n this.lastActionAt = now;\n this.healthySeconds = 0;\n if (action === \"recover_media_error\") {\n this.host.recoverMediaError();\n this.nextActionAt = now + LIGHT_STEP_COOLDOWN_MS;\n } else if (action === \"restart_load\") {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const position = liveSyncPos != null && liveSyncPos > video.currentTime ? liveSyncPos : video.currentTime;\n if (position !== video.currentTime) {\n video.currentTime = position;\n }\n this.host.restartHlsLoad(position);\n this.nextActionAt = now + LIGHT_STEP_COOLDOWN_MS;\n } else {\n const reloadIndex = fullReloadOnly ? this.step : this.step - 2;\n const cooldown = Math.min(\n RELOAD_BASE_COOLDOWN_MS * Math.pow(2, reloadIndex),\n RELOAD_MAX_COOLDOWN_MS\n );\n this.host.reloadLiveStream();\n this.nextActionAt = now + cooldown;\n }\n this.step++;\n this.resetProgress(now);\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\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.floorLadder = new FloorLadderController();\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) => this.generatePodVastUrl(base),\n completeGamRequestSignals: (url) => this.adConfig.completeDeferredRequestSignals(url, this.palNonce),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadder.isEnabled() ? this.floorLadder.snapshotFor({ position }) : void 0,\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 this.contentWatchdog = new ContentHealthWatchdog({\n video: this.video,\n isLiveStream: () => this.hlsEngine.isLiveStream,\n hasHlsInstance: () => !!this.hlsEngine.hls,\n isBreakActive: () => this.adBreak.inAdBreak || this.adBreak.isBreakActive(),\n isAdPlaying: () => this.adPlayer.isAdPlaying(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream()\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 applyFloorLadderFromApi() {\n const raw = this.adConfig.apiFloorLadder;\n if (raw == null) {\n this.floorLadder.reset();\n return;\n }\n const report = this.floorLadder.applyApiConfig(raw);\n this.warnOnInvalidFloorLadder(report);\n if (this.debug) {\n console.log(\"[AdBreak][FLOOR] configuration applied from API\", {\n config: this.floorLadder.get(),\n bounds: this.floorLadder.getBounds(),\n validation: report\n });\n }\n }\n isAdFloorLadderEnabled() {\n return this.floorLadder.isEnabled();\n }\n applyEdgePodFromApi() {\n this.edgePodBaseUrl = resolveEdgePodBaseUrl({\n enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,\n edgePodUrl: this.adConfig.apiEdgePodUrl,\n licenseKey: this.config.licenseKey\n });\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] edge pod base URL from API:\", this.edgePodBaseUrl ?? \"(disabled; GAM only)\");\n }\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\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) {\n return this.adConfig.generatePodVastUrl(\n baseUrl,\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 this.applyFloorLadderFromApi();\n this.applyEdgePodFromApi();\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 if (this.config.contentStallWatchdog !== false) {\n this.contentWatchdog.start();\n }\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.markBreakEndedNow();\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.beginBreakTiming(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 generatedUrls = [this.generatePodVastUrl(baseVastUrl)];\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.beginBreakTiming(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.contentWatchdog.stop();\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\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\nimport {\n FaPlay,\n FaPause,\n FaVolumeUp,\n FaVolumeMute,\n FaVolumeDown\n} from \"react-icons/fa\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ 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__ */ jsx(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ 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__ */ jsx(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ jsx(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ 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 \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = React.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 vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n contentNetwork,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n maxAdBreakExtensionMs,\n ...restVideoAttrs\n } = props;\n const videoRef = useRef(null);\n const playerRef = useRef(null);\n const bufferingTimeoutRef = useRef(null);\n const controlsTimerRef = useRef(null);\n const wrapperRef = useRef(null);\n const [adStatus, setAdStatus] = React.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = React.useState(true);\n const [isMuted2, setIsMuted] = React.useState(false);\n const [isFullscreen2, setIsFullscreen] = React.useState(false);\n const [isPlaying, setIsPlaying] = React.useState(false);\n const [currentTime, setCurrentTime] = React.useState(0);\n const [duration, setDuration] = React.useState(0);\n const [volume, setVolume2] = React.useState(1);\n const [playbackRate, setPlaybackRate] = React.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = React.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(true);\n const [isBuffering, setIsBuffering] = React.useState(false);\n const [showCenterPlay, setShowCenterPlay] = React.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = React.useState(false);\n const [controlsVisible, setControlsVisible] = React.useState(true);\n const [viewportWidth, setViewportWidth] = React.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = React.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = React.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 = 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 = useCallback(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = 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 = 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 ]);\n 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 (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 (contentNetwork !== void 0) cfg.contentNetwork = contentNetwork;\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 (maxAdBreakExtensionMs !== void 0)\n cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;\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 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 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 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 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 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 useEffect(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n 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 ? FaVolumeMute : volume < 0.5 ? FaVolumeDown : FaVolumeUp;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ jsx(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ 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__ */ jsx(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ 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__ */ 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__ */ 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__ */ jsx(\n FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ 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__ */ jsx(FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ 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__ */ 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__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ 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__ */ 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__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ jsx(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ jsxs(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ jsxs(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ 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__ */ jsx(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ 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__ */ 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__ */ jsx(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ 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__ */ 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__ */ 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__ */ jsx(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ jsx(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ 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\nimport React3, { Component as Component4, Suspense } from \"react\";\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\nimport { lazy as reactLazy } from \"react\";\nvar lazy = reactLazy;\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\nimport { Component } from \"react\";\nvar HlsPlayer = class extends 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 if (this.props.vastTagUrl !== void 0)\n config.vastTagUrl = this.props.vastTagUrl;\n if (this.props.isVmap !== void 0) config.isVmap = this.props.isVmap;\n if (this.props.vmapUrl !== void 0) config.vmapUrl = this.props.vmapUrl;\n if (this.props.minRemainingMsToRequestAd !== void 0)\n config.minRemainingMsToRequestAd = this.props.minRemainingMsToRequestAd;\n if (this.props.maxNoFillsPerBreak !== void 0)\n config.maxNoFillsPerBreak = this.props.maxNoFillsPerBreak;\n if (this.props.maxAdBreakExtensionMs !== void 0)\n config.maxAdBreakExtensionMs = this.props.maxAdBreakExtensionMs;\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\nimport { Component as Component2 } from \"react\";\nvar FilePlayer = class extends Component2 {\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\nimport React2, { Component as Component3 } from \"react\";\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends Component3 {\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 React2.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 ? 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 \"vastTagUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"minRemainingMsToRequestAd\",\n \"maxNoFillsPerBreak\",\n \"maxAdBreakExtensionMs\",\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 Component4 {\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 React3.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 React3.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n React3.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;\nexport {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DISABLED_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer_default as StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n StormcloudVideoPlayerComponent as default,\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 parseApiFloorLadder,\n parseQuery,\n players_default as 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"]}
|