@newrelic/video-videojs 4.1.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack://VideojsTracker/./node_modules/@newrelic/video-core/dist/esm/index.js","webpack://VideojsTracker/./src/ads/brightcove-ima.js","webpack://VideojsTracker/./src/ads/dai.js","webpack://VideojsTracker/./src/ads/freewheel.js","webpack://VideojsTracker/./src/ads/ima.js","webpack://VideojsTracker/./src/ads/videojs-ads.js","webpack://VideojsTracker/./src/techs/contrib-hls.js","webpack://VideojsTracker/./src/techs/hls-js.js","webpack://VideojsTracker/./src/techs/shaka.js","webpack://VideojsTracker/./src/tracker.js","webpack://VideojsTracker/webpack/bootstrap","webpack://VideojsTracker/webpack/runtime/define property getters","webpack://VideojsTracker/webpack/runtime/hasOwnProperty shorthand","webpack://VideojsTracker/webpack/runtime/make namespace object","webpack://VideojsTracker/./src/index.js"],"sourcesContent":["/*! For license information please see index.js.LICENSE.txt */\nvar t={487(t,e,i){i.r(e),i.d(e,{videoAnalyticsHarvester:()=>h});var s=i(374),r=i(431),a=i(51),n=i(144),o=i(302);const h=new class{constructor(){this.isInitialized=!1,this.harvestScheduler=null,this.eventBuffer=null}initialize(){if(this.isInitialized)n.A.warn(\"Video analytics agent already initialized\");else try{this.eventBuffer=new r.t,this.harvestScheduler=new s.n(this.eventBuffer),this.harvestScheduler.startScheduler(),this.isInitialized=!0,n.A.notice(\"Video analytics agent initialized successfully\")}catch(t){n.A.error(\"Failed to initialize video analytics agent:\",t.message)}}addEvent(t){this.isInitialized||(n.A.warn(\"Video analytics agent not initialized, initializing now\"),this.initialize());try{return t.actionName&&t.actionName===o.A.Events.QOE_AGGREGATE?t.viewId?this.eventBuffer.addOrReplaceByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,t.viewId,t):this.eventBuffer.addOrReplaceByActionName(o.A.Events.QOE_AGGREGATE,t):this.eventBuffer.add(t)}catch(t){return n.A.error(\"Failed to add event to harvesting system:\",t.message),!1}}setHarvestInterval(t){this.isInitialized||this.initialize(),this.harvestScheduler.updateHarvestInterval(t)}forceNextQoeCycle(){this.harvestScheduler&&(this.harvestScheduler.forceNextQoeCycle=!0)}setBeforeDrainCallback(t){this.harvestScheduler&&(this.harvestScheduler.beforeDrainCallback=t)}refreshQoeKpis(t,e){if(!this.eventBuffer||!t)return;const i=e?this.eventBuffer.findByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,e):this.eventBuffer.findByActionName(o.A.Events.QOE_AGGREGATE);if(i){const s={...i};for(const e of a.A.QOE_KPI_KEYS)e in t&&(s[e]=t[e]);e?this.eventBuffer.addOrReplaceByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,e,s):this.eventBuffer.addOrReplaceByActionName(o.A.Events.QOE_AGGREGATE,s)}}}},455(t,e,i){i.d(e,{A:()=>r});class s{constructor(){this.reset()}reset(){this.startTime=0,this.stopTime=0,this.accumulator=0,this.offset=0}getDeltaTime(){return this.startTime?this.offset+((new Date).getTime()-this.startTime):null}start(){this.startTime=(new Date).getTime(),this.stopTime=0}stop(){return this.stopTime=(new Date).getTime(),this.startTime<this.stopTime&&(this.accumulator+=this.stopTime-this.startTime),this.getDeltaTime()}getDuration(){return this.stopTime?this.accumulator+this.offset:this.accumulator+(this.getDeltaTime()??0)}clone(){var t=new s;return t.startTime=this.startTime,t.stopTime=this.stopTime,t.offset=this.offset,t.accumulator=this.accumulator,t}}const r=s},51(t,e,i){i.d(e,{A:()=>r});class s{}s.AdPositions={PRE:\"pre\",MID:\"mid\",POST:\"post\"},s.COLLECTOR={US:[\"bam.nr-data.net\",\"bam-cell.nr-data.net\"],EU:\"bam.eu01.nr-data.net\",Staging:\"staging-bam-cell.nr-data.net\",GOV:\"gov-bam.nr-data.net\"},s.VALID_EVENT_TYPES=[\"VideoAction\",\"VideoAdAction\",\"VideoErrorAction\",\"VideoCustomAction\"],s.MAX_PAYLOAD_SIZE=1048576,s.MAX_BEACON_SIZE=61440,s.MAX_EVENTS_PER_BATCH=1e3,s.INTERVAL=1e4,s.QOE_KPI_KEYS=[\"startupTime\",\"peakBitrate\",\"averageBitrate\",\"totalPlaytime\",\"totalRebufferingTime\",\"rebufferingRatio\",\"hadStartupError\",\"hadPlaybackError\",\"numberOfErrors\"],s.QOE_AGGREGATE_KEYS=[\"coreVersion\",\"instrumentation.name\",\"instrumentation.provider\",\"instrumentation.version\",\"isBackgroundEvent\",\"playerName\",\"playerVersion\",\"src\",\"viewId\",\"viewSession\",\"contentIsAutoplayed\",\"contentIsMuted\",\"contentRenditionHeight\",\"contentRenditionWidth\",\"contentSrc\",\"numberOfVideos\",\"pageUrl\",\"trackerName\",\"trackerVersion\",\"contentDuration\",\"contentPlayrate\",\"contentPlayhead\",\"contentPreload\",\"elapsedTime\",\"contentTitle\",\"contentId\",\"contentIsLive\",\"deviceType\",\"deviceGroup\",\"deviceManufacturer\",\"deviceModel\",\"deviceName\",\"deviceSize\",\"deviceUuid\",\"contentRenditionName\",\"contentIsFullscreen\",\"contentCdn\",\"contentFps\",\"asnOrganization\",\"asnLongitude\",\"asnLatitude\",\"asn\",\"timeSinceRequested\",\"timeSinceStarted\"];const r=s},568(t,e,i){i.d(e,{A:()=>s});const s=class{on(t,e){if(this._listeners=this._listeners||{},\"function\"==typeof e)return this._listeners[t]=this._listeners[t]||[],this._listeners[t].push(e),this}off(t,e){if(this._listeners=this._listeners||{},this._listeners[t]){var i=this._listeners[t].indexOf(e);-1!==i&&this._listeners[t].splice(i,1)}return this}emit(t,e,i){return this._listeners=this._listeners||{},i=i||{},Array.isArray(this._listeners[e])&&this._listeners[e].forEach(s=>{s.call(this,{eventType:t,type:e,data:i,target:this})}),Array.isArray(this._listeners[\"*\"])&&this._listeners[\"*\"].forEach(s=>{s.call(this,{eventType:t,type:e,data:i,target:this})}),this}}},431(t,e,i){i.d(e,{t:()=>h});var s=i(144),r=i(51),a=i(347);const{MAX_PAYLOAD_SIZE:n,MAX_EVENTS_PER_BATCH:o}=r.A;class h{constructor(){this.buffer=[],this.maxPayloadSize=n,this.maxEventsPerBatch=o,this.currentPayloadSize=0,this.totalEvents=0,this.smartHarvestPayloadThreshold=Math.floor(.6*this.maxPayloadSize),this.overflowPayloadThreshold=Math.floor(.9*this.maxPayloadSize),this.smartHarvestEventThreshold=Math.floor(.6*this.maxEventsPerBatch),this.overflowEventThreshold=Math.floor(.9*this.maxEventsPerBatch),this.onSmartHarvestTrigger=null}addOrReplaceByActionName(t,e){const i=this.buffer.findIndex(e=>e.actionName===t);try{return-1===i?this.add(e):this.add(e,i),!0}catch(t){return s.A.error(\"Failed to set or replace the event to buffer:\",t.message),!1}}addOrReplaceByActionNameAndViewId(t,e,i){const r=this.buffer.findIndex(i=>i.actionName===t&&i.viewId===e);try{return-1===r?this.add(i):this.add(i,r),!0}catch(t){return s.A.error(\"Failed to set or replace the event to buffer:\",t.message),!1}}findByActionNameAndViewId(t,e){return this.buffer.find(i=>i.actionName===t&&i.viewId===e)||null}findByActionName(t){return this.buffer.find(e=>e.actionName===t)||null}add(t,e){try{const i=(0,a.Q3)(t),s=this.currentPayloadSize+i>=this.maxPayloadSize,r=this.totalEvents+1>=this.maxEventsPerBatch;if((s||r)&&this.makeRoom(i),null!=e&&e>-1){const s=(0,a.Q3)(this.buffer[e]);this.buffer[e]=t,this.currentPayloadSize+=i-s}else this.buffer.push(t),this.totalEvents++,this.currentPayloadSize+=i;return this.checkSmartHarvestTrigger(),!0}catch(t){return s.A.error(\"Failed to add event to buffer:\",t.message),!1}}checkSmartHarvestTrigger(){const t=this.currentPayloadSize/this.maxPayloadSize,e=this.totalEvents/this.maxEventsPerBatch,i=this.currentPayloadSize>=this.overflowPayloadThreshold,r=this.totalEvents>=this.overflowEventThreshold;if(i||r){const r=i?`payload ${this.currentPayloadSize}/${this.maxPayloadSize} bytes (${Math.round(100*t)}%)`:`events ${this.totalEvents}/${this.maxEventsPerBatch} (${Math.round(100*e)}%)`;s.A.warn(`OVERFLOW PREVENTION: ${r} - Emergency harvest triggered`),this.onSmartHarvestTrigger&&\"function\"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger(\"overflow\",90)}else{const t=this.currentPayloadSize>=this.smartHarvestPayloadThreshold,e=this.totalEvents>=this.smartHarvestEventThreshold;(t||e)&&this.onSmartHarvestTrigger&&\"function\"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger(\"smart\",60)}}setSmartHarvestCallback(t){this.onSmartHarvestTrigger=t}drain(){try{const t=this.buffer.splice(0);return this.totalEvents=0,this.currentPayloadSize=0,t}catch(t){return s.A.error(\"Failed to drain events from buffer:\",t.message),[]}}isEmpty(){return 0===this.totalEvents}size(){return this.totalEvents}clear(){this.buffer=[],this.totalEvents=0}makeRoom(t){if(t>this.maxPayloadSize)s.A.error(\"Event dropped: Event size exceeds maximum payload size.\");else for(;(this.totalEvents>=this.maxEventsPerBatch||this.currentPayloadSize+t>=this.maxPayloadSize)&&this.buffer.length>0;){const t=this.buffer.shift(),e=(0,a.Q3)(t);this.totalEvents--,this.currentPayloadSize-=e,s.A.warn(\"Event buffer full, oldest event removed.\")}}}},374(t,e,i){i.d(e,{n:()=>l});var s=i(431),r=i(413),a=i(481),n=i(347),o=i(51),h=i(302),d=i(144);class l{constructor(t){this.eventBuffer=t,this.retryQueueHandler=new r.u,this.httpClient=new a.X,this.fallBackUrl=\"\",this.retryCount=0,this.eventBuffer instanceof s.t&&this.eventBuffer.setSmartHarvestCallback((t,e)=>this.triggerSmartHarvest(t,e)),this.isStarted=!1,this.currentTimerId=null,this.harvestCycle=o.A.INTERVAL,this.isHarvesting=!1,this.qoeCycleCount=1,this.forceNextQoeCycle=!1,this.beforeDrainCallback=null,this._lastSentQoeKpis={},this.setupPageLifecycleHandlers()}startScheduler(){this.isStarted?d.A.warn(\"Harvest scheduler is already started\"):(this.isStarted=!0,d.A.notice(\"Starting harvest scheduler\",{harvestCycle:this.harvestCycle,eventBufferSize:this.eventBuffer?this.eventBuffer.size():0}),this.scheduleNextHarvest())}stopScheduler(){this.isStarted&&(this.isStarted=!1,this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),d.A.notice(\"Harvest scheduler stopped\"))}async triggerSmartHarvest(t,e){if(d.A.notice(`${t} harvest triggered at ${e}% threshold`,{type:t,threshold:e}),this.eventBuffer&&!this.eventBuffer.isEmpty()){this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null);try{await this.triggerHarvest({})}catch(e){d.A.error(`${t} harvest failed:`,e.message)}finally{this.isStarted&&this.scheduleNextHarvest()}}}scheduleNextHarvest(){if(!this.isStarted)return;const t=this.harvestCycle;this.currentTimerId=setTimeout(()=>this.onHarvestInterval(),t)}async onHarvestInterval(){try{const t=this.eventBuffer&&!this.eventBuffer.isEmpty(),e=this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0;if(!t&&!e)return;await this.triggerHarvest({})}catch(t){d.A.error(\"Error during scheduled harvest:\",t.message)}finally{this.scheduleNextHarvest()}}async triggerHarvest(t={}){if(this.isHarvesting)return{success:!1,reason:\"harvest_in_progress\"};this.isHarvesting=!0;try{let e=this.drainEvents(t);if(t.isFinalHarvest){const t=o.A.MAX_BEACON_SIZE;(0,n.Q3)(e)>t&&(e=this.trimEventsToFit(e,t))}const i=await this.sendChunk(e,t,!0);return{success:i.success,totalChunks:1,results:[i]}}catch(t){return d.A.error(\"Harvest cycle failed:\",t.message),this.handleHarvestFailure(t),{success:!1,error:t.message,consecutiveFailures:this.consecutiveFailures}}finally{this.isHarvesting=!1}}trimEventsToFit(t,e){if(0===t.length)return t;const i=[];let s=0;for(let r=t.length-1;r>=0;r--){const a=t[r],o=(0,n.Q3)({ins:[a,...i]});o>e||(i.unshift(a),s=o)}const r=t.length-i.length;if(r>0){const a=t.slice(0,r);d.A.warn(`Discarded ${r} events to fit beacon size limit`,{originalCount:t.length,trimmedCount:i.length,finalSize:s,maxSize:e}),this.retryQueueHandler&&this.retryQueueHandler.addFailedEvents(a)}return i}drainEvents(t={}){const e=window.NRVIDEO?.config?.qoeIntervalFactor??1,i=!!t.isFinalHarvest||this.forceNextQoeCycle,s=(this.qoeCycleCount-1)%e==0||i;if(this.forceNextQoeCycle&&(this.forceNextQoeCycle=!1),this.beforeDrainCallback&&\"function\"==typeof this.beforeDrainCallback)try{this.beforeDrainCallback()}catch(t){d.A.error(\"Before drain callback failed:\",t.message)}const r=this.eventBuffer.drain();let a;if(s)a=r;else{a=[];for(const t of r)t.actionName===h.A.Events.QOE_AGGREGATE?this.eventBuffer.add(t):a.push(t)}this.qoeCycleCount++;for(let t=a.length-1;t>=0;t--){const e=a[t];e.actionName===h.A.Events.QOE_AGGREGATE&&(!i&&this._qoeKpisUnchanged(e)?a.splice(t,1):this._saveQoeKpis(e))}let l=[...a],c=(0,n.Q3)(a);if(this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0){const t=o.A.MAX_PAYLOAD_SIZE-c,e=o.A.MAX_EVENTS_PER_BATCH-l.length;if(t>0&&e>0){const i=this.retryQueueHandler.getRetryEventsToFit(t,e);i.length>0&&(l=[...i,...l])}}return l}async sendChunk(t,e,i){const s={url:(0,n.c$)(this.fallBackUrl),payload:{body:{ins:t}},options:{...e,isLastChunk:i}};return new Promise(e=>{this.httpClient.send(s,i=>{i.retry?this.handleRequestFailure(t):(this.retryCount=0,this.fallBackUrl=\"\"),e({success:!i.retry,status:i.status,error:i.error,chunk:t,eventCount:t.length})})})}handleRequestFailure(t){this.retryQueueHandler.addFailedEvents(t),\"US\"===window.NRVIDEO?.info?.region&&(this.retryCount++,this.retryCount>5?(this.retryCount=0,this.fallBackUrl=\"\"):this.retryCount>=2&&(this.fallBackUrl=o.A.COLLECTOR.US[1]))}handleHarvestFailure(t){this.consecutiveFailures++,d.A.warn(\"Harvest failure handled\",{error:t.message,consecutiveFailures:this.consecutiveFailures})}updateHarvestInterval(t){\"number\"!=typeof t&&isNaN(t)?d.A.warn(\"Invalid newInterval provided to updateHarvestInterval\"):t<1e3||t>3e5?d.A.warn(\"newInterval out of bounds (1000-300000), ignoring\"):this.harvestCycle!==t&&(this.harvestCycle=t,d.A.notice(\"Updated harvestCycle:\",this.harvestCycle),this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),this.isStarted&&this.scheduleNextHarvest())}setupPageLifecycleHandlers(){let t=!1;const e=()=>{t||(t=!0,this.triggerHarvest({isFinalHarvest:!0,force:!0}))};document.addEventListener(\"visibilitychange\",()=>{document.hidden&&e()}),window.addEventListener(\"pagehide\",()=>{e()}),window.addEventListener(\"beforeunload\",()=>{e()})}_qoeKpisUnchanged(t){const e=this._lastSentQoeKpis[t.viewId];if(!e)return!1;for(const i of o.A.QOE_KPI_KEYS)if(t[i]!==e[i])return!1;return!0}_saveQoeKpis(t){const e={};for(const i of o.A.QOE_KPI_KEYS)e[i]=t[i];this._lastSentQoeKpis[t.viewId]=e}}},144(t,e,i){i.d(e,{A:()=>o});class s{static error(...t){r(t,s.Levels.ERROR,\"darkred\")}static warn(...t){r(t,s.Levels.WARNING,\"darkorange\")}static notice(...t){r([].slice.call(arguments),s.Levels.NOTICE,\"darkcyan\")}static debug(...t){r(t,s.Levels.DEBUG,\"indigo\")}static debugCommonVideoEvents(t,e,i){try{if(s.level<=s.Levels.DEBUG){i=i||function(t){s.debug(\"Event: \"+t.type)};var r=[\"canplay\",\"buffering\",\"waiting\",\"ended\",\"play\",\"playing\",\"pause\",\"resume\",\"error\",\"abort\",\"seek\",\"seeking\",\"seeked\",\"stalled\",\"dispose\",\"loadeddata\",\"loadstart\",\"loadedmetadata\"];e&&(null===e[0]?(e.shift(),r=e):r=r.concat(e));for(var a=0;a<r.length;a++)\"function\"==typeof t?t.call(window,r[a],i):t.on?t.on(r[a],i):t.addEventListener?t.addEventListener(r[a],i):t.addEventHandler?t.addEventHandler(r[a],i):s.warn(\"debugCommonVideoEvents: No common listener function found for \",t)}}catch(t){s.warn(t)}}}function r(t,e,i){e=e||s.Levels.NOTICE,i=i||\"darkcyan\";var r,o,h=s.prefix;s.includeTime&&(h+=\"[\"+(\"0\"+(r=new Date).getDate()).slice(-2)+\":\"+(\"0\"+r.getMinutes()).slice(-2)+\":\"+(\"0\"+r.getSeconds()).slice(-2)+\".\"+(\"00\"+r.getMilliseconds()).slice(-3)+\"] \"),h+=function(t){return n[t]}(e)+\":\",s.level<=e&&e!==s.Levels.SILENT&&(!s.colorful||\"undefined\"!=typeof document&&document.documentMode?a(t,h):(o=e===s.Levels.ERROR&&console.error?console.error:e===s.Levels.WARNING&&console.warn?console.warn:e===s.Levels.DEBUG&&console.debug&&null==window.cast?console.debug:console.log,h=\"%c\"+h,t.splice(0,0,h,\"color: \"+i),o.apply(console,t)))}function a(t,e){if(t instanceof Array)for(var i in t)a(t[i],e);else\"string\"==typeof t?console.log(e+\" \"+t):(console.log(e+\"↵\"),console.log(t))}s.Levels={SILENT:5,ERROR:4,WARNING:3,NOTICE:2,DEBUG:1,ALL:0},s.level=s.Levels.ERROR,s.colorful=!0,s.includeTime=!0,s.prefix=\"[nrvideo]\";const n={4:\"e\",3:\"w\",2:\"n\",1:\"d\"};!function(){if(\"undefined\"!=typeof window&&window.location&&window.location.search){var t=/\\?.*&*nrvideo-debug=(.+)/i.exec(window.location.search);null!==t&&(\"true\"===t[1]?s.level=s.Levels.ALL:s.level=t[1]),null!==/\\?.*&*nrvideo-colors=false/i.exec(window.location.search)&&(s.colorful=!1)}}();const o=s},481(t,e,i){i.d(e,{X:()=>a});var s=i(347),r=i(144);class a{async send(t,e){const{url:i,payload:s,options:a={}}=t;try{if(!i||!s)throw new Error(\"URL and payload are required\");const t={url:i,payload:s,options:a,callback:e};await this.executeRequest(t)}catch(t){r.A.error(\"Failed to send request:\",t.message),e({retry:!1,status:0,error:t.message})}}async executeRequest(t){const{url:e,payload:i,options:s,callback:a}=t,n=Date.now();try{const a=(o=JSON.stringify(i.body),h=window.NRVIDEO?.config?.obfuscate,h&&0!==h.length?h.reduce((t,e)=>{let i;try{if(e.regex instanceof RegExp){const t=e.regex.flags.includes(\"g\")?e.regex.flags:e.regex.flags+\"g\";i=new RegExp(e.regex.source,t)}else i=new RegExp(e.regex,\"g\")}catch(i){return r.A.warn(\"applyObfuscationRules: invalid regex, skipping rule:\",e.regex,i.message),t}return t.replace(i,e.replacement)},o):o);if(s.isFinalHarvest&&navigator.sendBeacon){const i=await this.sendWithBeacon(e,a),s={success:i,status:i?204:0};return void this.handleRequestComplete(t,s,n)}const d=await this.fetchWithTimeout(e,{method:\"POST\",body:a,headers:{\"Content-Type\":\"application/json\"},keepalive:s.isFinalHarvest},1e4),l={success:d.ok,status:d.status,statusText:d.statusText};this.handleRequestComplete(t,l,n)}catch(e){const i={success:!1,status:0,error:e.message};this.handleRequestComplete(t,i,n)}var o,h}handleRequestComplete(t,e){const{callback:i}=t;i({retry:!e.success&&(0===e.status||(0,s.Sc)(e.status)),status:e.status,error:e.error})}async sendWithBeacon(t,e){try{return navigator.sendBeacon(t,e)}catch(t){return r.A.warn(\"sendBeacon failed, falling back to fetch:\",t.message),!1}}async fetchWithTimeout(t,e,i){const s=new AbortController,r=setTimeout(()=>s.abort(),i);try{const i=await fetch(t,{...e,signal:s.signal});return clearTimeout(r),i}catch(t){if(clearTimeout(r),\"AbortError\"===t.name)throw new Error(`Request timeout after ${i}ms`);throw t}}}},413(t,e,i){i.d(e,{u:()=>h});var s=i(144),r=i(347),a=i(51);const{MAX_PAYLOAD_SIZE:n,MAX_EVENTS_PER_BATCH:o}=a.A;class h{constructor(){this.retryQueue=[],this.maxQueueSize=o,this.maxQueueSizeBytes=n}addFailedEvents(t){try{const e=Array.isArray(t)?t:[t];s.A.notice(`Adding ${e.length} failed events to retry queue`,{queueSizeBefore:this.retryQueue.length});for(const t of e){this.retryQueue.length>=this.maxQueueSize&&this.evictOldestEvent();const e=(0,r.Q3)(t);for(;(0,r.Q3)(this.retryQueue)+e>this.maxQueueSizeBytes;)this.evictOldestEvent();this.retryQueue.push({...t})}}catch(t){s.A.error(\"Failed to add events to retry queue:\",t.message)}}discardEvent(t,e){s.A.warn(\"Discarded event\",{reason:e,eventType:t.eventType})}evictOldestEvent(){if(this.retryQueue.length>0){const t=this.retryQueue.shift();this.discardEvent(t,\"Queue full - evicted oldest\")}}getRetryEventsToFit(t,e){const i=[];let s=0,a=0;for(let n=this.retryQueue.length-1;n>=0;n--){const o=this.retryQueue[n];if(a>=e)break;const h=(0,r.Q3)(o);if(s+h>t)break;i.unshift(o),s+=h,a++,this.retryQueue.splice(n,1)}return i}getQueueSize(){return this.retryQueue.length}clear(){this.retryQueue=[]}}},302(t,e,i){i.d(e,{A:()=>l});var s=i(330),r=i(568),a=i(455),n=i(51),o=i(487),h=i(144);class d extends r.A{constructor(t){super(),this.customData={},this.heartbeat=null,this.parentTracker=null,this._trackerReadyChrono=new a.A,this._trackerReadyChrono.start(),this._actionTable=n.A.ACTION_TABLE,this._actionAdTable=n.A.ACTION_AD_TABLE,t=t||{},this.setOptions(t)}setOptions(t){t&&(t.parentTracker&&(this.parentTracker=t.parentTracker),t.customData&&(this.customData=t.customData),t.heartbeat&&(this.heartbeat=t.heartbeat))}dispose(){this.unregisterListeners()}registerListeners(){}unregisterListeners(){}getHeartbeat(){return this.state._isAd?2e3:this.heartbeat?this.heartbeat:this.parentTracker&&this.parentTracker.heartbeat?this.parentTracker.heartbeat:3e4}startHeartbeat(){this._heartbeatInterval=setInterval(this.sendHeartbeat.bind(this),Math.max(this.getHeartbeat(),2e3))}stopHeartbeat(){this._heartbeatInterval&&clearInterval(this._heartbeatInterval)}sendHeartbeat(t){this.sendVideoAction(d.Events.HEARTBEAT,t)}getAttributes(t,e){(t=t||{}).trackerName=this.getTrackerName(),t.trackerVersion=this.getTrackerVersion(),t.coreVersion=s.rE,t.timeSinceTrackerReady=this._trackerReadyChrono.getDeltaTime();for(let e in this.customData)t[e]=this.customData[e];return null!=document.hidden&&(t.isBackgroundEvent=document.hidden),t}getTrackerVersion(){return s.rE}getTrackerName(){return\"base-tracker\"}sendVideoAction(t,e){this.emit(\"VideoAction\",t,this.getAttributes(e))}sendVideoAdAction(t,e){this.emit(\"VideoAdAction\",t,this.getAttributes(e))}sendVideoErrorAction(t,e){let i=this.isAd()?\"adError\":\"videoError\";this.emit(\"VideoErrorAction\",t,this.getAttributes(e,i))}sendVideoCustomAction(t,e){this.emit(\"VideoCustomAction\",t,this.getAttributes(e,\"customAction\"))}setHarvestInterval(t){if(o.videoAnalyticsHarvester)try{o.videoAnalyticsHarvester.setHarvestInterval(t)}catch(t){return void h.A.error(\"Failed to set harvest interval:\",t.message)}else h.A.error(\"VideoAnalyticsHarvester is not available\")}}d.Events={HEARTBEAT:\"HEARTBEAT\",QOE_AGGREGATE:\"QOE_AGGREGATE\"};const l=d},347(t,e,i){i.d(e,{Q3:()=>n,Sc:()=>o,c$:()=>a,z8:()=>h});var s=i(330),r=i(144);function a(t){try{if(!window.NRVIDEO||!window.NRVIDEO.info)throw new Error(\"NRVIDEO info is not available.\");let{beacon:e,licenseKey:i,applicationID:r}=window.NRVIDEO.info;if(!e||!i)throw new Error(\"Options object provided by New Relic is not correctly initialized\");return r?`https://${t||e}/ins/1/${i}?a=${r}&v=${s.rE}&ref=${window.location.href}&ca=VA`:`https://${t||e}/ins/1/${i}?&v=${s.rE}&ref=${window.location.href}&ca=VA`}catch(t){return console.error(t.message),null}}function n(t){if(\"string\"==typeof t&&t.length)return t.length;if(\"object\"==typeof t){if(\"undefined\"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if(\"undefined\"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!(\"undefined\"!=typeof FormData&&t instanceof FormData))try{return function(t){try{return JSON.stringify(t,(()=>{const t=new WeakSet;return(e,i)=>{if(\"object\"==typeof i&&null!==i){if(t.has(i))return;t.add(i)}return i}})())??\"\"}catch(t){return r.A.error(\"Error stringifying value:\",t.message),\"\"}}(t).length}catch(t){return}}}function o(t){switch(t){case 408:case 429:case 500:return!0;case 401:case 403:case 404:return!1}return t>=502&&t<=504||t>=512&&t<=530}function h(t,e){return t&&Array.isArray(t)&&0!==t.length?e&&\"object\"==typeof e?t.reduce((t,i)=>(i in e&&(t[i]=e[i]),t),{}):{}:e}},330(t){t.exports={rE:\"4.1.5\"}}},e={};function i(s){var r=e[s];if(void 0!==r)return r.exports;var a=e[s]={exports:{}};return t[s](a,a.exports,i),a.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var s=i(144),r=i(487),a=i(51),n=i(302),o=i(347);function h(t,e={}){try{if(!a.A.VALID_EVENT_TYPES.includes(t))return s.A.warn(\"Invalid event type provided to recordEvent\",{eventType:t}),!1;if(!window?.NRVIDEO?.info)return;const{appName:i,applicationID:h}=window.NRVIDEO.info,{qoe:d,...l}=e,c=d?{...d}:{},u={...h?{}:{appName:i},timestamp:Date.now(),timeSinceLoad:window.performance?window.performance.now()/1e3:null},A={...l,eventType:t,...u},g=(0,o.z8)(a.A.QOE_AGGREGATE_KEYS,e);let m=null;\"VideoAction\"===t&&(m={eventType:\"VideoAction\",actionName:n.A.Events.QOE_AGGREGATE,qoeAggregateVersion:\"1.0.0\",...c,...g,...u});const f=r.videoAnalyticsHarvester.addEvent(A);if(m&&window?.NRVIDEO?.config?.qoeAggregate){const t=r.videoAnalyticsHarvester.addEvent(m);return f&&t}return f}catch(t){return s.A.error(\"Failed to record event:\",t.message),!1}}const{COLLECTOR:d}=a.A;const l=new class{setConfiguration(t,e){return!!this.validateRequiredFields(t)&&!!this.validateConfigFields(e)&&(this.initializeGlobalConfig(t,e),s.A.notice(\"Video analytics configuration initialized successfully\"),!0)}validateRequiredFields(t){if(!t||\"object\"!=typeof t)return s.A.error(\"Configuration must be an object\"),!1;const{licenseKey:e,appName:i,region:r,applicationID:a,beacon:n}=t;if(!e)return s.A.error(\"licenseKey is required\"),!1;if(a){if(!n)return s.A.error(\"beacon is required when applicationID is provided\"),!1;if(!Object.values(d).flatMap(t=>t).includes(n))return s.A.error(`Invalid beacon: ${n}`),!1}else{if(!i||!r)return s.A.error(\"appName and region are required when applicationID is not provided\"),!1;if(!d[r])return s.A.error(`Invalid region: ${r}. Valid regions are: ${Object.keys(d).join(\", \")}`),!1}return!0}validateConfigFields(t){if(null==t)return!0;if(\"object\"!=typeof t||Array.isArray(t))return s.A.error(\"config must be an object\"),!1;const{qoeAggregate:e,obfuscate:i}=t;return void 0!==e&&\"boolean\"!=typeof e?(s.A.error(\"qoeAggregate must be a boolean\"),!1):!(void 0!==i&&!Array.isArray(i)&&(s.A.error(\"obfuscate must be an array\"),1))}filterObfuscateRules(t){return t?t.filter(t=>{const e=void 0!==t.regex&&(\"string\"==typeof t.regex||t.regex instanceof RegExp),i=void 0!==t.replacement&&\"string\"==typeof t.replacement;return!(!e||!i)||(s.A.warn(\"obfuscate rule missing required 'regex' (string|RegExp) and/or 'replacement' (string), skipping:\",t),!1)}):[]}sanitizeQoeIntervalFactor(t){return null==t?1:\"number\"==typeof t&&Number.isInteger(t)&&t>=1?t:(console.warn(`[nrvideo] Invalid qoeIntervalFactor \"${t}\" — must be a positive integer. Defaulting to 1.`),1)}initializeGlobalConfig(t,e){let{licenseKey:i,appName:s,region:r,beacon:n,applicationID:o}=t;n=\"US\"===r?a.A.COLLECTOR.US[0]:n||d[r],window.NRVIDEO={info:{...r?{region:r}:{},beacon:n,licenseKey:i,applicationID:o,...o?{}:{appName:s}},config:{qoeAggregate:e?.qoeAggregate??!1,qoeIntervalFactor:this.sanitizeQoeIntervalFactor(e?.qoeIntervalFactor),obfuscate:this.filterObfuscateRules(e?.obfuscate)}}}};class c{static addTracker(t,e){var i,r;e?.info&&(i=e.info,r=e?.config,l.setConfiguration(i,r)),t.on&&t.emit?(u.push(t),t.on(\"*\",A),\"function\"==typeof t.trackerInit&&t.trackerInit()):s.A.error(\"Tried to load a non-tracker.\",t)}static removeTracker(t){t.off(\"*\",A),t.dispose();let e=u.indexOf(t);-1!==e&&u.splice(e,1)}static getTrackers(){return u}static send(t,e,i){return h(t,{actionName:e,...i})}static sendError(t){return h(\"VideoErrorAction\",{actionName:\"ERROR\",...t})}static async forceHarvest(){try{const{videoAnalyticsHarvester:t}=i(487);return await t.forceHarvest()}catch(t){return s.A.error(\"Failed to force harvest:\",t.message),{success:!1,error:t.message}}}}let u=[];function A(t){try{let e=function(t){let e={};for(let i in t)null!==t[i]&&void 0!==t[i]&&(e[i]=t[i]);return e}(t.data);s.A.level<=s.A.Levels.DEBUG?s.A.notice(\"Sent\",t.type,e):s.A.notice(\"Sent\",t.type),c.send(t.eventType,t.type,e)}catch(t){s.A.error(\"Error in event handler:\",t.message)}}const g=c;var m=i(455),f=i(568);const E=class{constructor(){this.reset(),this._createdAt=Date.now(),this._hb=!0,this._acc=0,this._bufferAcc=0}reset(){this._viewSession=null,this._viewCount=0,this._isAd=!1,this.numberOfErrors=0,this.numberOfAds=0,this.numberOfVideos=0,this.totalPlaytime=0,this.weightedAverageBitrate=0,this.totalAdPlaytime=0,this.isAdBreak=!1,this.initialBufferingHappened=!1,this.startupTime=null,this.peakBitrate=0,this._lastBitrate=null,this._lastBitrateChangeTimestamp=null,this.partialAverageBitrate=0,this._totalBitrateDuration=0,this.hadStartupError=!1,this.hadPlaybackError=!1,this.totalRebufferingTime=0,this.resetFlags(),this.resetChronos()}resetFlags(){this.isPlayerReady=!1,this.isRequested=!1,this.isStarted=!1,this.isPaused=!1,this.isSeeking=!1,this.isBuffering=!1,this.isPlaying=!1}resetChronos(){this.timeSinceRequested=new m.A,this.timeSinceStarted=new m.A,this.timeSincePaused=new m.A,this.timeSinceSeekBegin=new m.A,this.timeSinceBufferBegin=new m.A,this.timeSinceAdBreakStart=new m.A,this.timeSinceLastDownload=new m.A,this.timeSinceLastHeartbeat=new m.A,this.timeSinceLastRenditionChange=new m.A,this.timeSinceLastAdQuartile=new m.A,this.timeSinceLastAd=new m.A,this.timeSinceLastError=new m.A,this.timeSinceLastAdError=new m.A,this.timeSinceResumed=new m.A,this.timeSinceSeekEnd=new m.A,this.playtimeSinceLastEvent=new m.A,this.customTimeSinceAttributes={},this.elapsedTime=new m.A,this.bufferElapsedTime=new m.A,this._totalAdPlaytime=new m.A}isAd(){return this._isAd}setIsAd(t){this._isAd=t}setTimeSinceAttribute(t){this.customTimeSinceAttributes[t]=new m.A,this.customTimeSinceAttributes[t].start()}removeTimeSinceAttribute(t){delete this.customTimeSinceAttributes[t]}getViewSession(){if(!this._viewSession){let t=(new Date).getTime(),e=Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2);this._viewSession=t+\"-\"+e}return this._viewSession}getViewId(){return this.getViewSession()+\"-\"+this._viewCount}getStateAttributes(t){t=t||{},this.isAd()?(this.isRequested&&(t.timeSinceAdRequested=this.timeSinceRequested.getDeltaTime(),t.timeSinceLastAdHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(t.timeSinceAdStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(t.timeSinceAdPaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(t.timeSinceAdBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(t.timeSinceAdSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),this.isAdBreak&&(t.timeSinceAdBreakBegin=this.timeSinceAdBreakStart.getDeltaTime()),this.numberOfErrors>0&&this.timeSinceLastAdError.startTime>0&&(t.timeSinceLastAdError=this.timeSinceLastAdError.getDeltaTime()),t.numberOfAds=this.numberOfAds):(this.isRequested&&(t.timeSinceRequested=this.timeSinceRequested.getDeltaTime(),t.timeSinceLastHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(t.timeSinceStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(t.timeSincePaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(t.timeSinceBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(t.timeSinceSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),t.timeSinceLastAd=this.timeSinceLastAd.getDeltaTime(),this.numberOfErrors>0&&this.timeSinceLastError.startTime>0&&(t.timeSinceLastError=this.timeSinceLastError.getDeltaTime()),t.numberOfVideos=this.numberOfVideos),t.numberOfErrors=this.numberOfErrors,this.isAd()||(this.playtimeSinceLastEvent.startTime>0?t.playtimeSinceLastEvent=this.playtimeSinceLastEvent.getDeltaTime():t.playtimeSinceLastEvent=0,this.isPlaying?this.playtimeSinceLastEvent.start():this.playtimeSinceLastEvent.reset(),this.totalPlaytime+=t.playtimeSinceLastEvent,t.totalPlaytime=this.totalPlaytime);for(const[e,i]of Object.entries(this.customTimeSinceAttributes))t[e]=i.getDeltaTime();return t}getQoeAttributes(t){t=t||{};const e={};try{null!==this.startupTime&&(e.startupTime=this.startupTime),this.peakBitrate>0&&(e.peakBitrate=this.peakBitrate),e.hadStartupError=this.hadStartupError,e.hadPlaybackError=this.hadPlaybackError,e.totalRebufferingTime=this.totalRebufferingTime,e.rebufferingRatio=this.totalPlaytime>0?this.totalRebufferingTime/this.totalPlaytime*100:0,e.totalPlaytime=this.totalPlaytime,e.averageBitrate=this.weightedBitrate,e.numberOfErrors=this.numberOfErrors}catch(t){s.A.error(\"Failed to add attributes for QOE KPIs\",t.message)}return t.qoe=e,t}calculateBufferType(t){let e=\"\";return e=t?\"initial\":this.isSeeking?\"seek\":this.isPaused?\"pause\":\"connection\",s.A.debug(\"Buffer Type = \"+e),e}goViewCountUp(){this._viewCount++}goPlayerReady(){return!this.isPlayerReady&&(this.isPlayerReady=!0,!0)}goRequest(){return!this.isRequested&&(this.isRequested=!0,this.timeSinceLastAd.reset(),this.timeSinceRequested.start(),!0)}goStart(){return!(!this.isRequested||this.isStarted||(this.isAd()?this.numberOfAds++:this.numberOfVideos++,this.isStarted=!0,this.isPlaying=!0,this.timeSinceStarted.start(),this.playtimeSinceLastEvent.start(),0))}goEnd(){return!!this.isRequested&&(this.numberOfErrors=0,this.resetFlags(),this.timeSinceRequested.stop(),this.timeSinceStarted.stop(),this.playtimeSinceLastEvent.stop(),this.isPlaying=!1,!0)}goPause(){return!(!this.isStarted||this.isPaused||(this.isPaused=!0,this.isPlaying=!1,this.timeSincePaused.start(),this.playtimeSinceLastEvent.stop(),this.timeSinceResumed.reset(),this.isBuffering&&(this._bufferAcc+=this.bufferElapsedTime.getDeltaTime()),this.elapsedTime.start(),0))}goResume(){return!(!this.isStarted||!this.isPaused||(this.isPaused=!1,this.isPlaying=!0,this.timeSincePaused.stop(),this.timeSinceResumed.start(),this._hb?(this._acc=this.elapsedTime.getDeltaTime(),this._hb=!1):(this.isBuffering&&this.bufferElapsedTime.start(),this._acc+=this.elapsedTime.getDeltaTime()),0))}goBufferStart(){return!(!this.isRequested||this.isBuffering||(this.isBuffering=!0,this.isPlaying=!1,this.timeSinceBufferBegin.start(),this.bufferElapsedTime.start(),0))}goBufferEnd(){return!(!this.isRequested||!this.isBuffering||(this.isBuffering=!1,this.isPlaying=!0,this.timeSinceBufferBegin.stop(),this._hb?(this._bufferAcc=this.bufferElapsedTime.getDeltaTime(),this._hb=!1):this._bufferAcc+=this.bufferElapsedTime.getDeltaTime(),!this.isAd()&&this.initialBufferingHappened&&(this.totalRebufferingTime+=this.timeSinceBufferBegin.stopTime-this.timeSinceBufferBegin.startTime),0))}goSeekStart(){return!(!this.isStarted||this.isSeeking||(this.isSeeking=!0,this.isPlaying=!1,this.timeSinceSeekBegin.start(),this.timeSinceSeekEnd.reset(),0))}goSeekEnd(){return!(!this.isStarted||!this.isSeeking||(this.isSeeking=!1,this.isPlaying=!0,this.timeSinceSeekBegin.stop(),this.timeSinceSeekEnd.start(),0))}goAdBreakStart(){return!this.isAdBreak&&(this.isAdBreak=!0,this.timeSinceAdBreakStart.start(),!0)}goAdBreakEnd(){return!!this.isAdBreak&&(this.isRequested=!1,this.isAdBreak=!1,this.totalAdPlaytime=this.timeSinceAdBreakStart.getDeltaTime(),this.timeSinceAdBreakStart.stop(),!0)}goDownload(){this.timeSinceLastDownload.start()}goHeartbeat(){this.timeSinceLastHeartbeat.start()}goRenditionChange(){this.timeSinceLastRenditionChange.start()}goAdQuartile(){this.timeSinceLastAdQuartile.start()}goError(){this.isError=!0,this.numberOfErrors++,this.isAd()?this.timeSinceLastAdError.start():(this.timeSinceLastError.start(),this.isStarted?this.hadPlaybackError=!0:this.hadStartupError=!0)}goLastAd(){this.timeSinceLastAd.start()}trackContentBitrateState(t){if(t&&\"number\"==typeof t){this.peakBitrate=Math.max(this.peakBitrate,t);const e=Date.now();if(!this.isPlaying){if(null!==this._lastBitrate&&null!==this._lastBitrateChangeTimestamp){const t=e-this._lastBitrateChangeTimestamp;t>0&&(this.partialAverageBitrate+=this._lastBitrate*t,this._totalBitrateDuration+=t),this._lastBitrateChangeTimestamp=null}return void(this._lastBitrate=t)}if(null===this._lastBitrateChangeTimestamp&&null!==this._lastBitrate&&(this._lastBitrateChangeTimestamp=e),null!==this._lastBitrate&&this._lastBitrate!==t&&null!==this._lastBitrateChangeTimestamp){const t=e-this._lastBitrateChangeTimestamp;t>0&&(this.partialAverageBitrate+=this._lastBitrate*t,this._totalBitrateDuration+=t),this._lastBitrateChangeTimestamp=e}null===this._lastBitrateChangeTimestamp&&(this._lastBitrateChangeTimestamp=e),this._lastBitrate=t;let i=this.partialAverageBitrate,s=this._totalBitrateDuration;const r=e-this._lastBitrateChangeTimestamp;r>0&&(i+=t*r,s+=r),this.weightedBitrate=s>0?Math.round(i/s):t}}resetViewIdTrackedState(){this.peakBitrate=0,this.partialAverageBitrate=0,this._totalBitrateDuration=0,this.startupTime=null,this._lastBitrate=null,this._lastBitrateChangeTimestamp=null}clearTotalAdsTime(){s.A.debug(\"clear total ads time\",this.totalAdTime),this._totalAdPlaytime.reset()}totalAdTime(){return this._totalAdPlaytime.getDuration()}startAdsTime(){return s.A.debug(\"startAdsTime\"),this._totalAdPlaytime.start()}stopAdsTime(){return s.A.debug(\"stopAdsTime\"),this._totalAdPlaytime.stop()}setStartupTime(t){null===this.startupTime&&(this.startupTime=Math.max(this.timeSinceRequested.getDeltaTime()-t,0))}};var T=i(330);class v extends n.A{constructor(t,e){super(),this.state=new E,this.adsTracker=null,this._lastBufferType=null,this._userId=null,e=e||{},this.setOptions(e),t&&this.setPlayer(t,e.tag),s.A.notice(\"Tracker \"+this.getTrackerName()+\" v\"+this.getTrackerVersion()+\" is ready.\")}setUserId(t){this._userId=t}setOptions(t){t&&(t.adsTracker&&this.setAdsTracker(t.adsTracker),\"boolean\"==typeof t.isAd&&this.setIsAd(t.isAd),n.A.prototype.setOptions.apply(this,arguments))}setPlayer(t,e){(this.player||this.tag)&&this.dispose(),\"undefined\"!=typeof document&&document.getElementById&&(\"string\"==typeof t&&(t=document.getElementById(t)),\"string\"==typeof e&&(e=document.getElementById(e))),e=e||t,this.player=t,this.tag=e,this.registerListeners()}isAd(){return this.state.isAd()}setIsAd(t){this.state.setIsAd(t)}setAdsTracker(t){this.disposeAdsTracker(),t&&(this.adsTracker=t,this.adsTracker.setIsAd(!0),this.adsTracker.parentTracker=this,this.adsTracker.on(\"*\",S.bind(this)))}disposeAdsTracker(){this.adsTracker&&(this.adsTracker.off(\"*\",S),this.adsTracker.dispose())}dispose(){this.stopHeartbeat(),this.disposeAdsTracker(),this.unregisterListeners(),this.player=null,this.tag=null}registerListeners(){}unregisterListeners(){}getViewId(){return this.parentTracker?this.parentTracker.getViewId():this.state.getViewId()}getViewSession(){return this.parentTracker?this.parentTracker.getViewSession():this.state.getViewSession()}getVideoId(){return null}getTitle(){return null}isLive(){return null}getBitrate(){return null}getManifestBitrate(){return null}getSegmentDownloadBitrate(){return null}getNetworkDownloadBitrate(){return null}getWebkitBitrate(){if(this.tag&&this.tag.webkitVideoDecodedByteCount){let t;if(this._lastWebkitBitrate){t=this.tag.webkitVideoDecodedByteCount;let e=t-this._lastWebkitBitrate,i=this.getHeartbeat()/1e3;t=Math.round(e/i*8)}return this._lastWebkitBitrate=this.tag.webkitVideoDecodedByteCount,t||null}}getRenditionName(){return null}getRenditionBitrate(){return null}getRenditionShift(t){let e,i=this.getRenditionBitrate();return this.isAd()?(e=this._lastAdRendition,t&&(this._lastAdRendition=i)):(e=this._lastRendition,t&&(this._lastRendition=i)),i&&e?i>e?\"up\":i<e?\"down\":null:null}getRenditionHeight(){return this.tag?this.tag.videoHeight:null}getRenditionWidth(){return this.tag?this.tag.videoWidth:null}getDuration(){return this.tag?this.tag.duration:null}getPlayhead(){return this.tag?this.tag.currentTime:null}getLanguage(){return null}getSrc(){return this.tag?this.tag.currentSrc:null}getPlayrate(){return this.tag?this.tag.playbackRate:null}isMuted(){return this.tag?this.tag.muted:null}isFullscreen(){return null}getCdn(){return null}getPlayerName(){return this.getTrackerName()}getPlayerVersion(){return T.rE}getFps(){return null}isAutoplayed(){return this.tag?this.tag.autoplay:null}getPreload(){return this.tag?this.tag.preload:null}getAdQuartile(){return null}getAdPosition(){return this.parentTracker?this.parentTracker.state.isStarted?\"mid\":\"pre\":null}getAdPartner(){return null}getAdCreativeId(){return null}getInstrumentationProvider(){return null}getInstrumentationName(){return null}getInstrumentationVersion(){return null}getAttributes(t,e){if(void 0===(t=n.A.prototype.getAttributes.apply(this,arguments)).isAd&&(t.isAd=this.isAd()),t.viewSession=this.getViewSession(),t.viewId=this.getViewId(),t.playerName=this.getPlayerName(),t.playerVersion=this.getPlayerVersion(),t[\"instrumentation.provider\"]=this.getInstrumentationProvider(),t[\"instrumentation.name\"]=this.getInstrumentationName(),t[\"instrumentation.version\"]=this.getInstrumentationVersion(),t[\"enduser.id\"]=this._userId,t.src=\"Browser\",\"customAction\"===e)return t;try{t.pageUrl=window.location.href}catch(t){}this.isAd()?(t.adId=this.getVideoId(),t.adTitle=this.getTitle(),t.adSrc=this.getSrc(),t.adCdn=this.getCdn(),this.state.isStarted&&(t.adBitrate=this.getBitrate()||0),t.adRenditionName=this.getRenditionName(),t.adRenditionHeight=this.getRenditionHeight(),t.adRenditionWidth=this.getRenditionWidth(),t.adDuration=this.getDuration(),t.adPlayhead=this.getPlayhead(),t.adLanguage=this.getLanguage(),t.adIsMuted=this.isMuted(),t.adFps=this.getFps(),t.adPosition=this.getAdPosition(),t.adCreativeId=this.getAdCreativeId(),t.adPartner=this.getAdPartner()):(t.contentId=this.getVideoId(),t.contentTitle=this.getTitle(),t.contentSrc=this.getSrc(),t.contentCdn=this.getCdn(),t.contentPlayhead=this.getPlayhead(),t.contentIsLive=this.isLive(),this.state.isStarted&&(t.contentBitrate=this.getBitrate()||0,t.contentManifestBitrate=this.getManifestBitrate()||0,t.contentSegmentDownloadBitrate=this.getSegmentDownloadBitrate()||0,t.contentNetworkDownloadBitrate=this.getNetworkDownloadBitrate()||0),t.contentRenditionName=this.getRenditionName(),t.contentRenditionHeight=this.getRenditionHeight(),t.contentRenditionWidth=this.getRenditionWidth(),t.contentDuration=this.getDuration(),t.contentLanguage=this.getLanguage(),t.contentPlayrate=this.getPlayrate(),t.contentIsFullscreen=this.isFullscreen(),t.contentIsMuted=this.isMuted(),t.contentIsAutoplayed=this.isAutoplayed(),t.contentPreload=this.getPreload(),t.contentFps=this.getFps(),null!=this.adsTracker&&this.adsTracker.state.totalAdPlaytime>0&&(t.totalAdPlaytime=this.adsTracker.state.totalAdPlaytime)),this.state.getStateAttributes(t),this.state.isStarted&&!this.isAd()&&this.state.trackContentBitrateState(t.contentBitrate);for(let e in this.customData)t[e]=this.customData[e];return this.addQoeAttributes(t),t}addQoeAttributes(t){const e=(t=this.state.getQoeAttributes(t)).qoe;for(let t in this.customData)e[t]=this.customData[t]}sendCustom(t,e,i){i=i||{},this.sendVideoCustomAction(t,i),this.state.setTimeSinceAttribute(e)}sendPlayerReady(t){this.state.goPlayerReady()&&(t=t||{},this.sendVideoAction(v.Events.PLAYER_READY,t))}sendRequest(t){if(this.state.goRequest()){let e;this.isAd()?(e=v.Events.AD_REQUEST,this.sendVideoAdAction(e,t)):(e=v.Events.CONTENT_REQUEST,this.sendVideoAction(e,t))}}sendStart(t){if(this.state.goStart()){let e;if(this.isAd())e=v.Events.AD_START,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(e,t),this.state.startAdsTime();else{e=v.Events.CONTENT_START;let i=0;this.adsTracker&&((this.adsTracker.state.isPlaying||this.adsTracker.state.isBuffering)&&(this.adsTracker.state.stopAdsTime(),this.adsTracker.state.isPlaying=!1,this.adsTracker.state.isBuffering=!1),i=this.adsTracker.state.totalAdTime()??0),this.state.setStartupTime(i),this.sendVideoAction(e,t),r.videoAnalyticsHarvester.setBeforeDrainCallback(()=>{if(this.state){const t=this.state.getQoeAttributes({}).qoe;r.videoAnalyticsHarvester.refreshQoeKpis(t,this.getViewId())}})}this.startHeartbeat(),this.state.goHeartbeat()}}sendEnd(t){if(this.state.goEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_END,t.timeSinceAdRequested=this.state.timeSinceRequested.getDeltaTime(),t.timeSinceAdStarted=this.state.timeSinceStarted.getDeltaTime(),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.state.stopAdsTime()):(e=v.Events.CONTENT_END,t.timeSinceRequested=this.state.timeSinceRequested.getDeltaTime(),t.timeSinceStarted=this.state.timeSinceStarted.getDeltaTime()),this.stopHeartbeat(),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd(),this.state.goViewCountUp(),this.state.totalPlaytime=0,this.isAd()||(r.videoAnalyticsHarvester.forceNextQoeCycle(),r.videoAnalyticsHarvester.setBeforeDrainCallback(null),this.adsTracker&&this.adsTracker.state.clearTotalAdsTime(),this.state.resetViewIdTrackedState())}}sendPause(t){if(this.state.goPause()){let e=this.isAd()?v.Events.AD_PAUSE:v.Events.CONTENT_PAUSE;this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendResume(t){if(this.state.goResume()){let e;t=t||{},this.isAd()?(e=v.Events.AD_RESUME,t.timeSinceAdPaused=this.state.timeSincePaused.getDeltaTime()):(e=v.Events.CONTENT_RESUME,t.timeSincePaused=this.state.timeSincePaused.getDeltaTime()),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendBufferStart(t){if(this.state.goBufferStart()){let e;t=t||{},e=this.isAd()?v.Events.AD_BUFFER_START:v.Events.CONTENT_BUFFER_START,t=this.buildBufferAttributes(t),this._lastBufferType=t.bufferType,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendBufferEnd(t){if(this.state.goBufferEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_BUFFER_END,t.timeSinceAdBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()):(e=v.Events.CONTENT_BUFFER_END,t.timeSinceBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()),t=this.buildBufferAttributes(t),null!=this._lastBufferType&&(t.bufferType=this._lastBufferType),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.state.initialBufferingHappened=!0}}buildBufferAttributes(t){return null==t.timeSinceStarted||t.timeSinceStarted<100?t.isInitialBuffering=!this.state.initialBufferingHappened:t.isInitialBuffering=!1,t.bufferType=this.state.calculateBufferType(t.isInitialBuffering),t.timeSinceResumed=this.state.timeSinceResumed.getDeltaTime(),t.timeSinceSeekEnd=this.state.timeSinceSeekEnd.getDeltaTime(),t}sendSeekStart(t){if(this.state.goSeekStart()){let e;e=this.isAd()?v.Events.AD_SEEK_START:v.Events.CONTENT_SEEK_START,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendSeekEnd(t){if(this.state.goSeekEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_SEEK_END,t.timeSinceAdSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()):(e=v.Events.CONTENT_SEEK_END,t.timeSinceSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendDownload(t){(t=t||{}).state||s.A.warn(\"Called sendDownload without { state: xxxxx }.\"),this.sendVideoAction(v.Events.DOWNLOAD,t),this.state.goDownload()}sendError(t){(t=t||{}).isAd=this.isAd(),this.state.goError();let e=this.isAd()?v.Events.AD_ERROR:v.Events.CONTENT_ERROR;this.sendVideoErrorAction(e,t)}sendRenditionChanged(t){let e;(t=t||{}).timeSinceLastRenditionChange=this.state.timeSinceLastRenditionChange.getDeltaTime(),t.shift=this.getRenditionShift(!0),e=this.isAd()?v.Events.AD_RENDITION_CHANGE:v.Events.CONTENT_RENDITION_CHANGE,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.state.goRenditionChange()}sendHeartbeat(t){if(this.state.isRequested){let e,i=this.getHeartbeat();this.state._hb=!0,i=this.adjustElapsedTimeForPause(i),this.isAd()?(e=v.Events.AD_HEARTBEAT,\"bitmovin-ads\"===this.getPlayerName()?this.sendVideoAdAction(e,t):this.sendVideoAdAction(e,{elapsedTime:i,...t})):(e=v.Events.CONTENT_HEARTBEAT,this.sendVideoAction(e,{elapsedTime:i,...t})),this.state.goHeartbeat()}}adjustElapsedTimeForPause(t){return this.state._acc&&(t-=this.state._acc,this.state._acc=0),this.state.isPaused&&((t-=this.state.elapsedTime.getDeltaTime())<10&&(t=0),this.state.elapsedTime.start()),this.state._bufferAcc?(t-=this.state._bufferAcc,this.state._bufferAcc=0):this.state.isBuffering&&((t-=this.state.bufferElapsedTime.getDeltaTime())<5&&(t=0),this.state.bufferElapsedTime.start()),Math.max(0,t)}sendAdBreakStart(t){this.isAd()&&this.state.goAdBreakStart()&&(this.state.totalAdPlaytime=0,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(v.Events.AD_BREAK_START,t))}sendAdBreakEnd(t){this.isAd()&&this.state.goAdBreakEnd()&&((t=t||{}).timeSinceAdBreakBegin=this.state.timeSinceAdBreakStart.getDeltaTime(),this.sendVideoAdAction(v.Events.AD_BREAK_END,t),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.stopHeartbeat(),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd())}sendAdQuartile(t){this.isAd()&&((t=t||{}).quartile||s.A.warn(\"Called sendAdQuartile without { quartile: xxxxx }.\"),t.timeSinceLastAdQuartile=this.state.timeSinceLastAdQuartile.getDeltaTime(),this.sendVideoAdAction(v.Events.AD_QUARTILE,t),this.state.goAdQuartile())}sendAdClick(t){this.isAd()&&((t=t||{}).url||s.A.warn(\"Called sendAdClick without { url: xxxxx }.\"),this.sendVideoAdAction(v.Events.AD_CLICK,t))}}function S(t){t.type!==v.Events.AD_ERROR?this.sendVideoAdAction(t.type,t.data):this.sendVideoErrorAction(t.type,t.data)}v.Events={PLAYER_READY:\"PLAYER_READY\",DOWNLOAD:\"DOWNLOAD\",ERROR:\"ERROR\",CONTENT_REQUEST:\"CONTENT_REQUEST\",CONTENT_START:\"CONTENT_START\",CONTENT_END:\"CONTENT_END\",CONTENT_PAUSE:\"CONTENT_PAUSE\",CONTENT_RESUME:\"CONTENT_RESUME\",CONTENT_SEEK_START:\"CONTENT_SEEK_START\",CONTENT_SEEK_END:\"CONTENT_SEEK_END\",CONTENT_BUFFER_START:\"CONTENT_BUFFER_START\",CONTENT_BUFFER_END:\"CONTENT_BUFFER_END\",CONTENT_HEARTBEAT:\"CONTENT_HEARTBEAT\",CONTENT_RENDITION_CHANGE:\"CONTENT_RENDITION_CHANGE\",CONTENT_ERROR:\"CONTENT_ERROR\",AD_REQUEST:\"AD_REQUEST\",AD_START:\"AD_START\",AD_END:\"AD_END\",AD_PAUSE:\"AD_PAUSE\",AD_RESUME:\"AD_RESUME\",AD_SEEK_START:\"AD_SEEK_START\",AD_SEEK_END:\"AD_SEEK_END\",AD_BUFFER_START:\"AD_BUFFER_START\",AD_BUFFER_END:\"AD_BUFFER_END\",AD_HEARTBEAT:\"AD_HEARTBEAT\",AD_RENDITION_CHANGE:\"AD_RENDITION_CHANGE\",AD_ERROR:\"AD_ERROR\",AD_BREAK_START:\"AD_BREAK_START\",AD_BREAK_END:\"AD_BREAK_END\",AD_QUARTILE:\"AD_QUARTILE\",AD_CLICK:\"AD_CLICK\"};const p=v;var y=i(431),_=i(413),R=i(481),B=i(374);const b={Constants:a.A,Chrono:m.A,Log:s.A,Emitter:f.A,Tracker:n.A,VideoTracker:p,VideoTrackerState:E,Core:g,version:T.rE,NrVideoEventAggregator:y.t,RetryQueueHandler:_.u,OptimizedHttpClient:R.X,HarvestScheduler:B.n,recordEvent:h};export{b as default};\n//# sourceMappingURL=index.js.map","import nrvideo from '@newrelic/video-core'\nimport VideojsAdsTracker from './videojs-ads'\n\nexport default class BrightcoveImaAdsTracker extends VideojsAdsTracker {\n static isUsing (player) {\n return !!player.ima3\n }\n\n getTrackerName () {\n return 'brightcove-ima-ads'\n }\n\n getPlayerName () {\n return 'brightcove-ima-ads'\n }\n\n getPlayhead () {\n return this.player?.ima3?.adPlayer?.currentTime()\n }\n\n registerListeners () {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n 'ima3-ready',\n 'ima3error',\n 'ima3-ad-error',\n 'ima3-started',\n 'ima3-complete',\n 'ima3-paused',\n 'ima3-resumed',\n 'ads-request',\n 'ads-load',\n 'ads-ad-started',\n 'ads-ad-ended',\n 'ads-pause',\n 'ads-play',\n 'ads-click',\n 'ads-pod-started',\n 'ads-pod-ended',\n 'ads-allpods-completed'\n ])\n\n this.player.on('ima3-started', this.onStarted.bind(this))\n this.player.on('ima3-paused', this.onPaused.bind(this))\n this.player.on('ima3-resumed', this.onResume.bind(this))\n this.player.on('ima3-complete', this.onComplete.bind(this))\n this.player.on('ima3-skipped', this.onSkipped.bind(this))\n this.player.on('adserror', this.onError.bind(this))\n this.player.on('ads-click', this.onClick.bind(this))\n }\n\n unregisterListeners () {\n this.player.off('ima3-started', this.onStarted)\n this.player.off('ima3-paused', this.onPaused)\n this.player.off('ima3-resumed', this.onResume)\n this.player.off('ima3-complete', this.onComplete)\n this.player.off('ima3-skipped', this.onSkipped)\n this.player.off('adserror', this.onError)\n this.player.off('ads-click', this.onClick)\n }\n\n onStarted (e) {\n this.sendRequest()\n this.sendStart()\n }\n\n onPaused (e) {\n this.sendPause()\n }\n\n onResume (e) {\n this.sendResume()\n }\n\n onComplete (e) {\n this.sendEnd()\n }\n\n onSkipped (e) {\n this.sendEnd({ skipped: true })\n }\n\n onError (e) {\n this.sendError()\n }\n\n onClick (e) {\n this.sendClick()\n }\n}\n","/* global google */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\n\nconst daiEvents = {\n // Stream Events\n DAI_STREAM_INITIALIZED: 'dai-stream-initialized',\n DAI_STREAM_LOADED: 'dai-stream-loaded',\n DAI_STREAM_ERROR: 'dai-stream-error',\n\n // Ad Events\n DAI_AD_BREAK_STARTED: 'dai-ad-break-started',\n DAI_AD_BREAK_ENDED: 'dai-ad-break-ended',\n DAI_AD_PERIOD_STARTED: 'dai-ad-period-started',\n DAI_AD_PERIOD_ENDED: 'dai-ad-period-ended',\n DAI_AD_STARTED: 'dai-ad-started',\n DAI_AD_FIRST_QUARTILE: 'dai-ad-first-quartile',\n DAI_AD_MIDPOINT: 'dai-ad-midpoint',\n DAI_AD_THIRD_QUARTILE: 'dai-ad-third-quartile',\n DAI_AD_COMPLETE: 'dai-ad-complete',\n DAI_AD_SKIPPED: 'dai-ad-skipped',\n DAI_AD_PAUSED: 'dai-ad-paused',\n DAI_AD_RESUMED: 'dai-ad-resumed',\n DAI_AD_CLICKED: 'dai-ad-clicked',\n DAI_AD_ERROR: 'dai-ad-error',\n\n // Cue Point Events\n DAI_CUEPOINTS_CHANGED: 'dai-cuepoints-changed',\n\n // Timed Metadata Events\n DAI_TIMED_METADATA: 'dai-timed-metadata',\n};\n\nexport default class DaiAdsTracker extends VideojsAdsTracker {\n static isUsing(player) {\n // Check for DAI plugin or imaDai method\n return (\n (player.imaDai && typeof player.imaDai === 'function') ||\n (player.dai && typeof player.dai.VERSION !== 'undefined') ||\n (player.ima && player.ima.dai) ||\n player.streamManager\n );\n }\n\n constructor(player) {\n super(player);\n this.streamManager = null;\n this.currentAdData = null;\n this.adBreakData = null;\n this.streamData = null;\n this.cuePoints = [];\n this.initialized = false;\n this.eventHandlers = null;\n }\n\n setStreamManager(streamManager) {\n this.streamManager = streamManager;\n this.setupStreamManagerListeners();\n this.initialized = true;\n nrvideo.Log.debug(\n 'DaiAdsTracker: StreamManager set and listeners registered'\n );\n }\n\n setupStreamManagerListeners() {\n if (!this.streamManager || !google?.ima?.dai?.api?.StreamEvent) {\n nrvideo.Log.warn('DaiAdsTracker: StreamManager or DAI API not available');\n return;\n }\n\n const StreamEvent = google.ima.dai.api.StreamEvent.Type;\n\n // Create the event handler mapping\n this.eventHandlers = {\n // Stream Events\n [StreamEvent.LOADED]: this.onStreamLoaded.bind(this),\n [StreamEvent.STREAM_INITIALIZED]: this.onStreamInitialized.bind(this),\n [StreamEvent.ERROR]: this.onStreamError.bind(this),\n\n // Ad Break Events\n [StreamEvent.AD_BREAK_STARTED]: this.onAdBreakStarted.bind(this),\n [StreamEvent.AD_BREAK_ENDED]: this.onAdBreakEnded.bind(this),\n\n // Ad Period Events\n [StreamEvent.AD_PERIOD_STARTED]: this.onAdPeriodStarted.bind(this),\n [StreamEvent.AD_PERIOD_ENDED]: this.onAdPeriodEnded.bind(this),\n\n // Individual Ad Events\n [StreamEvent.STARTED]: this.onAdStarted.bind(this),\n [StreamEvent.FIRST_QUARTILE]: this.onAdFirstQuartile.bind(this),\n [StreamEvent.MIDPOINT]: this.onAdMidpoint.bind(this),\n [StreamEvent.THIRD_QUARTILE]: this.onAdThirdQuartile.bind(this),\n [StreamEvent.COMPLETE]: this.onAdComplete.bind(this),\n [StreamEvent.SKIPPED]: this.onAdSkipped.bind(this),\n [StreamEvent.PAUSED]: this.onAdPaused.bind(this),\n [StreamEvent.RESUMED]: this.onAdResumed.bind(this),\n [StreamEvent.CLICK]: this.onAdClicked.bind(this),\n [StreamEvent.VIDEO_CLICKED]: this.onAdClicked.bind(this),\n\n // Cue Points and Metadata Events\n [StreamEvent.CUEPOINTS_CHANGED]: this.onCuePointsChanged.bind(this),\n [StreamEvent.TIMED_METADATA]: this.onTimedMetadata.bind(this),\n };\n\n // Register all event listeners using the mapping\n Object.entries(this.eventHandlers).forEach(([eventType, handler]) => {\n this.streamManager.addEventListener(eventType, handler);\n });\n\n nrvideo.Log.debug('DaiAdsTracker: StreamManager listeners registered');\n }\n\n registerListeners() {\n // Call parent to register basic videojs-ads events\n super.registerListeners();\n\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n Object.values(daiEvents),\n ]);\n }\n\n unregisterListeners() {\n // Call parent cleanup\n super.unregisterListeners();\n\n // Clean up StreamManager listeners using the same mapping\n if (this.streamManager && this.eventHandlers) {\n Object.entries(this.eventHandlers).forEach(([eventType, handler]) => {\n this.streamManager.removeEventListener(eventType, handler);\n });\n }\n\n // Reset state\n this.streamManager = null;\n this.currentAdData = null;\n this.adBreakData = null;\n this.streamData = null;\n this.cuePoints = [];\n this.initialized = false;\n this.eventHandlers = null;\n }\n\n // Stream Event Handlers\n onStreamLoaded(event) {\n this.streamData = this.extractStreamData(event);\n nrvideo.Log.debug('DaiAdsTracker: Stream loaded', this.streamData);\n this.sendRequest();\n }\n\n onStreamInitialized(event) {\n nrvideo.Log.debug('DaiAdsTracker: Stream initialized');\n this.sendDownload({ state: 'stream-initialized' });\n }\n\n onStreamError(event) {\n const errorData = this.extractErrorData(event);\n nrvideo.Log.error('DaiAdsTracker: Stream error', errorData);\n this.sendError(errorData);\n }\n\n // Ad Break Event Handlers\n onAdBreakStarted(event) {\n this.adBreakData = this.extractAdBreakData(event);\n nrvideo.Log.debug('DaiAdsTracker: Ad break started', this.adBreakData);\n this.sendAdBreakStart(this.adBreakData);\n }\n\n onAdBreakEnded(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad break ended');\n this.sendAdBreakEnd();\n this.adBreakData = null;\n }\n\n // Ad Period Event Handlers (for bumpers, etc.)\n onAdPeriodStarted(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad period started');\n // Track as ad break start if no current break\n if (!this.adBreakData) {\n this.onAdBreakStarted(event);\n }\n }\n\n onAdPeriodEnded(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad period ended');\n // Don't end the break here as there might be more ads\n }\n\n // Individual Ad Event Handlers\n onAdStarted(event) {\n this.currentAdData = this.extractAdData(event);\n nrvideo.Log.debug('DaiAdsTracker: Ad started', this.currentAdData);\n this.sendStart();\n }\n\n onAdFirstQuartile(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad first quartile');\n this.sendAdQuartile({ quartile: 1 });\n }\n\n onAdMidpoint(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad midpoint');\n this.sendAdQuartile({ quartile: 2 });\n }\n\n onAdThirdQuartile(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad third quartile');\n this.sendAdQuartile({ quartile: 3 });\n }\n\n onAdComplete(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad complete');\n this.sendEnd();\n this.currentAdData = null;\n }\n\n onAdSkipped(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad skipped');\n this.sendEnd({ skipped: true });\n this.currentAdData = null;\n }\n\n onAdPaused(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad paused');\n this.sendPause();\n }\n\n onAdResumed(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad resumed');\n this.sendResume();\n }\n\n onAdClicked(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad clicked');\n this.sendAdClick({ url: this.getClickThroughUrl() });\n }\n\n // Cue Points Handler\n onCuePointsChanged(event) {\n this.cuePoints = this.extractCuePoints(event);\n nrvideo.Log.debug('DaiAdsTracker: Cue points changed', this.cuePoints);\n }\n\n // Timed Metadata Handler\n onTimedMetadata(event) {\n const metadata = this.extractTimedMetadata(event);\n nrvideo.Log.debug('DaiAdsTracker: Timed metadata', metadata);\n }\n\n // Data Extraction Methods\n extractStreamData(event) {\n try {\n const streamData = event.getStreamData();\n return {\n streamId: streamData?.streamId,\n url: streamData?.url,\n adTagParameters: streamData?.adTagParameters,\n streamType: this.getStreamType(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract stream data', error);\n return {};\n }\n }\n\n extractAdBreakData(event) {\n try {\n const adBreakData = event.getAdBreak();\n return {\n adBreakId: adBreakData?.id,\n adBreakTitle: adBreakData?.title,\n adCount: adBreakData?.ads?.length || 0,\n position: this.getAdPosition(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract ad break data', error);\n return {};\n }\n }\n\n extractAdData(event) {\n try {\n const ad = event.getAd();\n return {\n adId: ad?.getAdId(),\n creativeId: ad?.getCreativeId(),\n duration: ad?.getDuration(),\n title: ad?.getTitle(),\n description: ad?.getDescription(),\n advertiserName: ad?.getAdvertiserName(),\n clickThroughUrl: ad?.getClickThroughUrl(),\n dealId: ad?.getDealId(),\n wrapperAdIds: ad?.getWrapperAdIds(),\n position: this.getAdPosition(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract ad data', error);\n return {};\n }\n }\n\n extractErrorData(event) {\n try {\n const error = event.getError();\n return {\n errorCode: error?.getErrorCode(),\n errorMessage: error?.getMessage(),\n innerError: error?.getInnerError(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract error data', error);\n return { errorMessage: 'Unknown DAI error' };\n }\n }\n\n extractCuePoints(event) {\n try {\n return event.getCuepoints() || [];\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract cue points', error);\n return [];\n }\n }\n\n extractTimedMetadata(event) {\n try {\n return {\n type: event.getType(),\n data: event.getData(),\n };\n } catch (error) {\n nrvideo.Log.warn(\n 'DaiAdsTracker: Failed to extract timed metadata',\n error\n );\n return {};\n }\n }\n\n // Override parent methods for DAI-specific implementations\n getTrackerName() {\n return 'dai-ads';\n }\n\n getPlayerName() {\n return 'videojs-dai';\n }\n\n getPlayerVersion() {\n if (this.player.dai?.VERSION) {\n return this.player.dai.VERSION;\n }\n if (this.player.ima?.VERSION) {\n return `ima-dai: ${this.player.ima.VERSION}`;\n }\n return 'unknown';\n }\n\n getAdCuePoints() {\n return this.cuePoints;\n }\n\n getAdPosition() {\n if (!this.currentAdData && !this.adBreakData) return null;\n\n // Try to determine position from current playback time\n const currentTime = this.player.currentTime();\n const duration = this.player.duration();\n\n if (currentTime < 5) {\n return 'pre';\n } else if (duration && currentTime > duration - 10) {\n return 'post';\n } else {\n return 'mid';\n }\n }\n\n getDuration() {\n if (this.currentAdData?.duration !== undefined) {\n return this.currentAdData.duration * 1000; // Convert to milliseconds\n }\n return null;\n }\n\n getVideoId() {\n return this.currentAdData?.adId || null;\n }\n\n getAdCreativeId() {\n return this.currentAdData?.creativeId || null;\n }\n\n getTitle() {\n return this.currentAdData?.title || null;\n }\n\n getSrc() {\n return this.streamData?.url || null;\n }\n\n getPlayhead() {\n if (this.streamManager) {\n try {\n const streamTime = this.streamManager.getStreamTime();\n return streamTime * 1000; // Convert to milliseconds\n } catch (error) {\n // Fallback to player current time\n return this.player.currentTime() * 1000;\n }\n }\n return this.player.currentTime() * 1000;\n }\n\n getAdPartner() {\n return 'google-dai';\n }\n\n getClickThroughUrl() {\n return this.currentAdData?.clickThroughUrl || null;\n }\n\n getStreamType() {\n // Determine if this is VOD or Live\n if (this.streamData?.streamType) {\n return this.streamData.streamType;\n }\n // Try to infer from player\n const duration = this.player.duration();\n return duration === Infinity ? 'live' : 'vod';\n }\n\n // Additional helper methods\n isLiveStream() {\n return this.getStreamType() === 'live';\n }\n\n getCurrentAdBreak() {\n return this.adBreakData;\n }\n\n getCurrentAd() {\n return this.currentAdData;\n }\n\n getStreamData() {\n return this.streamData;\n }\n\n getBitrate() {\n const tech = this.getTech()\n if (tech && tech.tech && tech.tech.stats) {\n return tech.tech.stats.bandwidth;\n }\n }\n\n getRenditionBitrate() {\n const tech = this.getTech();\n if (tech && tech.getRenditionBitrate) {\n return tech.getRenditionBitrate();\n }\n }\n}\n","import VideojsAdsTracker from './videojs-ads'\n\nexport default class FreewheelAdsTracker extends VideojsAdsTracker {\n static isUsing (player) {\n return !!player.FreeWheelPlugin && typeof tv !== 'undefined' && tv.freewheel\n }\n\n getTrackerName () {\n return 'freewheel-ads'\n }\n\n getPlayerName () {\n return 'freewheel-ads'\n }\n\n getPlayerVersion () {\n return this.player.FreeWheelPlugin.VERSION\n }\n\n getPlayhead () {\n if (this.player.ads.ad.currentTime) {\n return this.player.ads.ad.currentTime() * 1000\n }\n }\n\n getDuration () {\n if (this.player.ads.ad.duration) {\n return this.player.ads.ad.duration * 1000\n }\n }\n\n getVideoId () {\n return this.player.ads.ad.id\n }\n\n getAdPartner () {\n return 'freewheel'\n }\n\n getAdCreativeId () {\n try {\n return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getId()\n } catch (err) { /* do nothing */ }\n }\n\n getSrc () {\n try {\n let acr = this.player.ads.provider.event.adInstance.getActiveCreativeRendition()\n return acr.getPrimaryCreativeRenditionAsset().getUrl()\n } catch (err) { /* do nothing */ }\n }\n\n getTitle () {\n try {\n let acr = this.player.ads.provider.event.adInstance.getActiveCreativeRendition()\n return acr.getPrimaryCreativeRenditionAsset().getName()\n } catch (err) { /* do nothing */ }\n }\n\n getAdPosition () {\n switch (this.player.ads.ad.type) {\n case 'PREROLL':\n return nrvideo.Constants.AdPositions.PRE\n case 'MIDROLL':\n return nrvideo.Constants.AdPositions.MID\n case 'POSTROLL':\n return nrvideo.Constants.AdPositions.POST\n }\n }\n}\n","/* global google */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\n\nexport default class ImaAdsTracker extends VideojsAdsTracker {\n static isUsing(player) {\n return player.ima && typeof google !== 'undefined';\n }\n\n getTrackerName() {\n return 'ima-ads';\n }\n\n getPlayerName() {\n return 'ima';\n }\n\n getPlayerVersion() {\n return (\n 'ima: ' + google.ima.VERSION + '; contrib-ads: ' + this.player.ads.VERSION\n );\n }\n\n getCuePoints() {\n return this.player.ima.getAdsManager().getCuePoints();\n }\n\n getAdPosition() {\n if (\n this.lastAdData &&\n this.lastAdData.podInfo &&\n this.lastAdData.podInfo.podIndex !== undefined\n ) {\n const podIndex = this.lastAdData.podInfo.podIndex;\n\n if (podIndex === 0) {\n return 'pre';\n } else if (podIndex === -1) {\n return 'post';\n } else {\n return 'mid';\n }\n }\n return null;\n }\n\n getDuration() {\n if (this.lastAdData && this.lastAdData.duration !== undefined) {\n return this.lastAdData.duration * 1000;\n }\n return null;\n }\n\n getVideoId() {\n if (this.lastAdData && this.lastAdData.adId) {\n return this.lastAdData.adId;\n }\n return null;\n }\n\n getAdCreativeId() {\n if (this.lastAdData && this.lastAdData.creativeId) {\n return this.lastAdData.creativeId;\n }\n return null;\n }\n\n getSrc() {\n if (this.lastAdData && this.lastAdData.mediaUrl) {\n return this.lastAdData.mediaUrl;\n }\n return null;\n }\n\n getTitle() {\n if (this.lastAdData && this.lastAdData.title) {\n return this.lastAdData.title;\n }\n return null;\n }\n\n getPlayhead() {\n let manager = this.player.ima.getAdsManager();\n if (manager) {\n return (this.getDuration() - manager.getRemainingTime()) * 1000;\n }\n }\n\n getPlayrate() {\n return this.player.playbackRate();\n }\n\n getAdPartner() {\n return 'ima';\n }\n\n getWebkitBitrate() {\n const adVideoElement = this.getAdVideoElement();\n if (adVideoElement && adVideoElement.webkitVideoDecodedByteCount) {\n let bitrate;\n if (this._lastAdWebkitBitrate > 0) {\n const current = adVideoElement.webkitVideoDecodedByteCount;\n const delta = current - this._lastAdWebkitBitrate;\n const seconds = this.getHeartbeat() / 1000;\n bitrate = Math.round((delta / seconds) * 8);\n }\n \n this._lastAdWebkitBitrate = adVideoElement.webkitVideoDecodedByteCount;\n return bitrate ?? null;\n }\n return null;\n }\n\n getRenditionBitrate() {\n if (this.lastAdData) {\n return this.lastAdData.renditionBitrate;\n }\n }\n\n registerListeners() {\n // Shortcut events\n let e = google.ima.AdEvent.Type;\n let AD_ERROR = google.ima.AdErrorEvent.Type.AD_ERROR;\n\n //store ad data\n this.lastAdData = null;\n // debug\n nrvideo.Log.debugCommonVideoEvents(this.player.ima.addEventListener, [\n null,\n e.ALL_ADS_COMPLETED,\n e.LINEAR_CHANGED,\n e.COMPLETE,\n e.USER_CLOSE,\n e.IMPRESSION,\n e.CONTENT_PAUSE_REQUESTED,\n e.CONTENT_RESUME_REQUESTED,\n e.SKIPPED,\n e.SKIPPABLE_STATE_CHANGED,\n e.LOADED,\n e.PAUSED,\n e.RESUMED,\n e.STARTED,\n e.AD_CAN_PLAY,\n e.AD_METADATA,\n e.EXPANDED_CHANGED,\n e.AD_BREAK_READY,\n e.LOG,\n e.CLICK,\n e.FIRST_QUARTILE,\n e.MIDPOINT,\n e.THIRD_QUARTILE,\n AD_ERROR,\n ]);\n\n // Register listeners\n this.player.ima.addEventListener(e.LOADED, this.onLoaded.bind(this));\n this.player.ima.addEventListener(e.STARTED, this.onStart.bind(this));\n this.player.ima.addEventListener(e.PAUSED, this.onPaused.bind(this));\n this.player.ima.addEventListener(e.RESUMED, this.onResumed.bind(this));\n this.player.ima.addEventListener(e.COMPLETE, this.onComplete.bind(this));\n this.player.ima.addEventListener(e.SKIPPED, this.onSkipped.bind(this));\n this.player.ima.addEventListener(e.CLICK, this.onClick.bind(this));\n this.player.ima.addEventListener(\n e.FIRST_QUARTILE,\n this.onFirstQuartile.bind(this)\n );\n this.player.ima.addEventListener(e.MIDPOINT, this.onMidpoint.bind(this));\n this.player.ima.addEventListener(\n e.THIRD_QUARTILE,\n this.onThirdQuartile.bind(this)\n );\n this.player.ima.addEventListener(AD_ERROR, this.onError.bind(this));\n }\n\n unregisterListeners() {\n // Shortcut events\n let e = google.ima.AdEvent.Type;\n let AD_ERROR = google.ima.AdErrorEvent.Type.AD_ERROR;\n\n // unregister listeners\n this.player.ima.removeEventListener(e.LOADED, this.onLoaded);\n this.player.ima.removeEventListener(e.STARTED, this.onLoaded.bind(this));\n this.player.ima.removeEventListener(e.IMPRESSION, this.onImpression);\n this.player.ima.removeEventListener(e.PAUSED, this.onPaused);\n this.player.ima.removeEventListener(e.RESUMED, this.onResumed);\n this.player.ima.removeEventListener(e.COMPLETE, this.onComplete);\n this.player.ima.removeEventListener(e.SKIPPED, this.onSkipped);\n this.player.ima.removeEventListener(e.CLICK, this.onClick);\n this.player.ima.removeEventListener(e.FIRST_QUARTILE, this.onFirstQuartile);\n this.player.ima.removeEventListener(e.MIDPOINT, this.onMidpoint);\n this.player.ima.removeEventListener(e.THIRD_QUARTILE, this.onThirdQuartile);\n this.player.ima.removeEventListener(AD_ERROR, this.onError);\n //clear ad data\n this.lastAdData = null;\n }\n\n onLoaded(e) {\n this.lastAdData = this.getAdData();\n this.sendRequest();\n }\n\n onStart(e) {\n this.lastAdData = this.getAdData();\n this._lastAdWebkitBitrate = 0;\n this.sendStart();\n }\n\n onComplete(e) {\n this.sendEnd();\n this.lastAdData = null; // Clear the data\n }\n\n onSkipped(e) {\n this.sendEnd({ skipped: true });\n this.lastAdData = null; // Clear the data\n }\n\n onError(e) {\n const adError = e.getError();\n\n const errorCode = adError.getErrorCode();\n const errorMessage = adError.getMessage();\n this.sendError({ adError, errorCode, errorMessage });\n }\n\n onClick(e) {\n this.sendAdClick();\n }\n\n onFirstQuartile() {\n this.sendAdQuartile({ adQuartile: 1 });\n }\n\n onMidpoint() {\n this.sendAdQuartile({ adQuartile: 2 });\n }\n\n onThirdQuartile() {\n this.sendAdQuartile({ adQuartile: 3 });\n }\n\n onPaused() {\n this.sendPause();\n }\n\n onResumed() {\n this.sendResume();\n }\n\n getAdData() {\n try {\n const adsManager = this.player.ima.getAdsManager();\n if (adsManager) {\n const currentAd = adsManager.getCurrentAd();\n if (currentAd) {\n return {\n adId: currentAd.getAdId(),\n creativeId: currentAd.getCreativeId(),\n duration: currentAd.getDuration(),\n mediaUrl: currentAd.getMediaUrl(),\n title: currentAd.getTitle(),\n podInfo: currentAd.getAdPodInfo()?.data,\n renditionBitrate: currentAd.getVastMediaBitrate(),\n // Add other properties as needed\n };\n }\n }\n return null;\n } catch (err) {\n return null;\n }\n }\n\n getAdVideoElement() {\n if (this.player.ima && this.player.ima.controller && this.player.ima.controller.adUi) {\n const adContainerDiv = this.player.ima.controller.adUi.adContainerDiv;\n if (adContainerDiv) {\n const adVideoElement = adContainerDiv.querySelector('video');\n if (adVideoElement) {\n return adVideoElement;\n }\n }\n }\n }\n}\n","import nrvideo from '@newrelic/video-core'\nimport pkg from '../../package.json'\nimport ContribHlsTech from '../techs/contrib-hls';\nimport HlsJsTech from '../techs/hls-js';\nimport ShakaTech from '../techs/shaka';\n\nexport default class VideojsAdsTracker extends nrvideo.VideoTracker {\n\n getTech() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n \n if (tech) {\n if (ContribHlsTech.isUsing(tech)) {\n return new ContribHlsTech(tech);\n } else if (HlsJsTech.isUsing(tech)) {\n return new HlsJsTech(tech);\n } else if (ShakaTech.isUsing(tech)) {\n return new ShakaTech(tech);\n }\n }\n }\n \n getTrackerName () {\n return 'videojs-ads'\n }\n\n getTrackerVersion () {\n return pkg.version\n }\n\n isMuted () {\n return this.player.muted()\n }\n\n getRenditionHeight () {\n return null\n }\n\n getRenditionWidth () {\n return null\n }\n\n getPlayerName () {\n return 'videojs-ads'\n }\n\n getPlayerVersion () {\n return this.player.ads.VERSION\n }\n\n registerListeners () {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n 'ads-request',\n 'ads-load',\n 'adstart',\n 'adend',\n 'adskip',\n 'adserror',\n 'ads-click',\n 'ads-pod-started',\n 'ads-pod-ended',\n 'ads-first-quartile',\n 'ads-midpoint',\n 'ads-third-quartile',\n 'ads-pause',\n 'ads-play',\n 'adtimeout'\n ])\n\n // Register listeners\n this.player.on('ads-request', this.onAdrequest.bind(this))\n this.player.on('ads-load', this.onAdload.bind(this))\n this.player.on('adstart', this.onAdstart.bind(this))\n this.player.on('adend', this.onAdend.bind(this))\n this.player.on('adskip', this.onAdskip.bind(this))\n this.player.on('adserror', this.onAdserror.bind(this))\n this.player.on('ads-click', this.onAdsClick.bind(this))\n this.player.on('ads-pod-started', this.onPodStart.bind(this))\n this.player.on('ads-pod-ended', this.onPodEnd.bind(this))\n this.player.on('ads-first-quartile', this.onFirstQuartile.bind(this))\n this.player.on('ads-midpoint', this.onMidpoint.bind(this))\n this.player.on('ads-third-quartile', this.onThirdQuartile.bind(this))\n this.player.on('ads-pause', this.onAdspause.bind(this))\n this.player.on('ads-play', this.onAdsplay.bind(this))\n }\n\n unregisterListeners () {\n // unregister listeners\n this.player.off('ads-request', this.onAdrequest)\n this.player.off('ads-load', this.onAdload)\n this.player.off('adstart', this.onAdstart)\n this.player.off('adend', this.onAdend)\n this.player.off('adskip', this.onAdskip)\n this.player.off('adserror', this.onAdserror)\n this.player.off('ads-click', this.onAdsClick)\n this.player.off('ads-pod-started', this.onPodStart)\n this.player.off('ads-pod-ended', this.onPodEnd)\n this.player.off('ads-first-quartile', this.onFirstQuartile)\n this.player.off('ads-midpoint', this.onMidpoint)\n this.player.off('ads-third-quartile', this.onThirdQuartile)\n this.player.off('ads-pause', this.onAdspause)\n this.player.off('ads-play', this.onAdsplay)\n }\n\n onAdrequest (e) {\n this.sendRequest()\n this.sendDownload({ state: 'ads-request' })\n }\n\n onAdload (e) {\n this.sendDownload({ state: 'ads-load' })\n }\n\n onAdstart (e) {\n this.sendRequest()\n this.sendStart()\n }\n\n onAdend (e) {\n this.sendEnd()\n }\n\n onAdskip (e) {\n this.sendEnd({ skipped: true })\n }\n\n onAdserror (e) {\n this.sendError()\n }\n\n onAdsClick (e) {\n this.sendAdClick({ url: 'unknown' })\n }\n\n onPodStart (e) {\n this.sendAdBreakStart()\n }\n\n onPodEnd (e) {\n this.sendAdBreakEnd()\n }\n\n onFirstQuartile () {\n this.sendAdQuartile({ quartile: 1 })\n }\n\n onMidpoint () {\n this.sendAdQuartile({ quartile: 2 })\n }\n\n onThirdQuartile () {\n this.sendAdQuartile({ quartile: 3 })\n }\n\n onAdspause () {\n this.sendPause()\n }\n\n onAdsplay () {\n this.sendResume()\n }\n}\n","export default class ContribHlsTech {\n constructor(tech) {\n this.tech = tech.vhs;\n this.player = tech.el().player; // Store player reference for playback bitrate calculation\n }\n\n getRenditionName() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes) return media.attributes.NAME;\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes) return media.attributes.BANDWIDTH;\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes && media.attributes.RESOLUTION) {\n return media.attributes.RESOLUTION.width;\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes && media.attributes.RESOLUTION) {\n return media.attributes.RESOLUTION.height;\n }\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Calculate playback bitrate (actual content consumption rate)\n return this.getContentBitratePlayback();\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all renditions\n const playlists = this.tech.playlists.master.playlists;\n if (playlists && playlists.length > 0) {\n return Math.max(...playlists.map((p) => p.attributes.BANDWIDTH));\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n if (\n this.tech.stats?.bandwidth !== undefined &&\n this.tech.stats.bandwidth > 0\n ) {\n return this.tech.stats.bandwidth;\n }\n return null;\n }\n\n getNetworkDownloadBitrate() {\n if (this.tech.throughput !== undefined && this.tech.throughput > 0) {\n return this.tech.throughput;\n }\n return null;\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current active rendition's bitrate from manifest\n const media = this.tech.playlists.media();\n if (media && media.attributes) {\n // Use AVERAGE-BANDWIDTH if available, fallback to BANDWIDTH\n return (\n media.attributes['AVERAGE-BANDWIDTH'] ||\n media.attributes.BANDWIDTH ||\n null\n );\n }\n } catch (err) {}\n return null;\n }\n}\n\nContribHlsTech.isUsing = function (tech) {\n return !!tech.vhs;\n};\n","export default class HlsJs {\n constructor(tech) {\n this.tech = tech.vhs_;\n this.player = tech.el().player; // Store player reference for currentTime\n }\n\n getResource(tech) {\n return this.tech.url;\n }\n\n getRenditionName(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.name) return level.name;\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.bitrate) return level.bitrate;\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.width) return level.width;\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.height) return level.height;\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Default uses playback bitrate (Method 4)\n return this.getContentBitratePlayback();\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current active level's bitrate from manifest\n const level = this.tech.levels[this.tech.currentLevel];\n if (level && level.bitrate) {\n return level.bitrate;\n }\n } catch (err) {}\n return null;\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all renditions\n if (this.tech.levels && this.tech.levels.length > 0) {\n return Math.max(...this.tech.levels.map(l => l.bitrate));\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n // VHS stats.bandwidth\n if (this.tech.stats && this.tech.stats.bandwidth > 0)\n return this.tech.stats.bandwidth;\n } catch (err) {}\n return null;\n }\n\n getNetworkDownloadBitrate() {\n if (this.tech.throughput && this.tech.throughput > 0) {\n return this.tech.throughput;\n }\n return null;\n }\n}\n\nHlsJs.isUsing = function (tech) {\n return !!tech.vhs_;\n};\n","export default class ShakaTech {\n constructor(tech) {\n this.tech = tech.shakaPlayer;\n this.player = tech.el().player; // Store player reference for playback bitrate calculation\n }\n\n getSrc(tech) {\n try {\n return this.tech.getManifestUri();\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate(tech) {\n try {\n return this.tech.getStats().streamBandwidth;\n } catch (err) {}\n return null;\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all variants\n const tracks = this.tech.getVariantTracks();\n if (tracks && tracks.length > 0) {\n return Math.max(\n ...tracks.map((t) => t.videoBandwidth + (t.audioBandwidth || 0)),\n );\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth(tech) {\n try {\n var tracks = this.tech.getVariantTracks();\n for (var i in tracks) {\n var track = tracks[i];\n if (track.active && track.type === 'video') {\n return track.width;\n }\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight(tech) {\n try {\n var tracks = this.tech.getVariantTracks();\n for (var i in tracks) {\n var track = tracks[i];\n if (track.active && track.type === 'video') {\n return track.height;\n }\n }\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Calculate playback bitrate (actual content consumption rate)\n return this.getContentBitratePlayback();\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current variant's bitrate from manifest (streamBandwidth)\n var stats = this.tech.getStats();\n if (stats && stats.streamBandwidth && stats.streamBandwidth > 0) {\n return stats.streamBandwidth;\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n // Use estimatedBandwidth for measured bitrate\n var stats = this.tech.getStats();\n if (stats && stats.estimatedBandwidth > 0) {\n return stats.estimatedBandwidth;\n }\n } catch (err) {}\n return null;\n }\n\n getNetworkDownloadBitrate() {\n try {\n // Shaka: use estimatedBandwidth for download bitrate (no separate property)\n var stats = this.tech.getStats();\n if (stats && stats.estimatedBandwidth > 0) {\n return stats.estimatedBandwidth;\n }\n } catch (err) {}\n return null;\n }\n}\n\nShakaTech.isUsing = function (tech) {\n return !!tech.shakaPlayer;\n};\n","import nrvideo from '@newrelic/video-core';\nimport pkg from '../package.json';\nimport ContribHlsTech from './techs/contrib-hls';\nimport HlsJsTech from './techs/hls-js';\nimport ShakaTech from './techs/shaka';\nimport VideojsAdsTracker from './ads/videojs-ads';\nimport ImaAdsTracker from './ads/ima';\nimport BrightcoveImaAdsTracker from './ads/brightcove-ima';\nimport FreewheelAdsTracker from './ads/freewheel';\nimport DaiAdsTracker from './ads/dai';\n\nexport default class VideojsTracker extends nrvideo.VideoTracker {\n constructor(player, options) {\n super(player, options);\n\n this.isContentEnd = false;\n this.imaAdCuePoints = '';\n this.daiInitialized = false;\n nrvideo.Core.addTracker(this, options);\n }\n\n getTech() {\n let tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n if (tech) {\n if (ContribHlsTech.isUsing(tech)) {\n return new ContribHlsTech(tech);\n } else if (HlsJsTech.isUsing(tech)) {\n return new HlsJsTech(tech);\n } else if (ShakaTech.isUsing(tech)) {\n return new ShakaTech(tech);\n }\n }\n }\n\n getTrackerName() {\n return 'videojs';\n }\n\n getInstrumentationProvider() {\n return 'New Relic';\n }\n\n getInstrumentationName() {\n return this.getPlayerName();\n }\n\n getInstrumentationVersion() {\n return this.getPlayerVersion();\n }\n\n getTrackerVersion() {\n return pkg.version;\n }\n\n getPlayhead() {\n if (\n this.player.ads &&\n this.player.ads.state === 'ads-playback' &&\n this.player.ads.snapshot &&\n this.player.ads.snapshot.currentTime\n ) {\n return this.player.ads.snapshot.currentTime * 1000;\n } else if (this.player.absoluteTime) {\n return this.player.absoluteTime() * 1000;\n } else {\n return this.player.currentTime() * 1000;\n }\n }\n\n getDuration() {\n if (\n this.player.mediainfo &&\n typeof this.player.mediainfo.duration !== 'undefined'\n ) {\n return this.player.mediainfo.duration * 1000; // Brightcove\n } else {\n return this.player.duration() * 1000;\n }\n }\n\n getTitle() {\n return this.player?.mediainfo?.name; // Brightcove\n }\n\n getId() {\n return this.player?.mediainfo?.id; // Brightcove\n }\n\n getLanguage() {\n return this.player?.language();\n }\n\n getSrc() {\n let tech = this.getTech();\n if (tech && tech.getSrc) {\n return tech.getSrc();\n } else {\n return this.player.currentSrc();\n }\n }\n\n getPlayerName() {\n return this.player?.name() || 'videojs';\n }\n\n getPlayerVersion() {\n return this.player?.version || videojs.VERSION;\n }\n\n isMuted() {\n return this.player.muted();\n }\n\n getBitrate() {\n return this.getContentBitratePlayback();\n }\n\n // Measures: Actual content consumption rate during playback\n getContentBitratePlayback() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n // 1. Get the current active rendition (The most accurate \"Playback Bitrate\")\n if (tech?.vhs?.playlists?.media()) {\n const activePlaylist = tech.vhs.playlists.media();\n // Use AVERAGE-BANDWIDTH if available, fallback to BANDWIDTH\n return (\n activePlaylist.attributes['AVERAGE-BANDWIDTH'] ||\n activePlaylist.attributes.BANDWIDTH ||\n null\n );\n }\n\n // 2. Fallback to tech wrappers (Shaka/Hls.js) if they have a getBitrate method\n const techWrapper = this.getTech();\n if (techWrapper?.getBitrate) {\n return techWrapper.getBitrate();\n }\n } catch (err) {\n /* ignore */\n }\n return null;\n }\n\n getRenditionName() {\n let tech = this.getTech();\n if (tech && tech.getRenditionName) {\n return tech.getRenditionName();\n }\n }\n\n getManifestBitrate() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n // tech.vhs.playlists.master.playlists contains the array of all renditions\n const allRenditions = tech?.vhs?.playlists?.master?.playlists;\n\n if (allRenditions && allRenditions.length > 0) {\n // Find the highest BANDWIDTH value in the list\n const maxBitrate = Math.max(\n ...allRenditions.map((p) => p.attributes.BANDWIDTH || 0),\n );\n return maxBitrate > 0 ? maxBitrate : null;\n }\n\n // Fallback to tech wrappers (Shaka/Hls.js)\n const techWrapper = this.getTech();\n if (techWrapper?.getManifestBitrate) {\n return techWrapper.getManifestBitrate();\n }\n } catch (e) {\n /* ignore */\n }\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n // VHS stats.bandwidth\n if (tech?.vhs?.stats?.bandwidth && tech.vhs.stats.bandwidth > 0) {\n return tech.vhs.stats.bandwidth;\n }\n\n // Fallback to tech wrappers (Shaka/Hls.js)\n const techWrapper = this.getTech();\n if (techWrapper?.getSegmentDownloadBitrate) {\n return techWrapper.getSegmentDownloadBitrate();\n }\n } catch (err) {\n /* ignore */\n }\n return null;\n }\n\n getNetworkDownloadBitrate() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n if (tech?.vhs?.throughput && tech.vhs.throughput > 0) {\n return tech.vhs.throughput;\n }\n\n // Fallback to tech wrapper implementation\n const techWrapper = this.getTech();\n if (techWrapper?.getNetworkDownloadBitrate) {\n return techWrapper.getNetworkDownloadBitrate();\n }\n\n return null;\n }\n\n getRenditionHeight() {\n let tech = this.getTech();\n\n if (tech && tech.getRenditionHeight) {\n return tech.getRenditionHeight();\n }\n return this.player.videoHeight();\n }\n\n getRenditionWidth() {\n let tech = this.getTech();\n if (tech && tech.getRenditionWidth) {\n return tech.getRenditionWidth();\n }\n return this.player.videoWidth();\n }\n\n getPlayrate() {\n return this.player.playbackRate();\n }\n\n isAutoplayed() {\n return this.player.autoplay();\n }\n\n isFullscreen() {\n return this.player.isFullscreen();\n }\n\n getPreload() {\n return this.player.preload();\n }\n\n registerListeners() {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n 'adstart',\n 'adend',\n 'adskip',\n 'adsready',\n 'adserror',\n 'dispose',\n ]);\n\n // BIND LISTENER METHODS\n this.onDownload = this.onDownload.bind(this);\n this.onAdsready = this.onAdsready.bind(this);\n this.onAdStart = this.onAdStart.bind(this);\n this.onAdEnd = this.onAdEnd.bind(this);\n this.onPlay = this.onPlay.bind(this);\n this.onPause = this.onPause.bind(this);\n this.onPlaying = this.onPlaying.bind(this);\n this.onAbort = this.onAbort.bind(this);\n this.onEnded = this.onEnded.bind(this);\n this.onDispose = this.onDispose.bind(this);\n this.onSeeking = this.onSeeking.bind(this);\n this.onSeeked = this.onSeeked.bind(this);\n this.onError = this.onError.bind(this);\n this.onWaiting = this.onWaiting.bind(this);\n this.onTimeupdate = this.onTimeupdate.bind(this);\n this.OnAdsAllpodsCompleted = this.OnAdsAllpodsCompleted.bind(this);\n this.onStreamManager = this.onStreamManager.bind(this);\n\n this.player.on('loadstart', this.onDownload);\n this.player.on('loadeddata', this.onDownload);\n this.player.on('loadedmetadata', this.onDownload);\n this.player.on('adsready', this.onAdsready);\n this.player.on('adstart', this.onAdStart);\n this.player.on('adend', this.onAdEnd);\n this.player.on('play', this.onPlay);\n this.player.on('pause', this.onPause);\n this.player.on('playing', this.onPlaying);\n this.player.on('abort', this.onAbort);\n this.player.on('ended', this.onEnded);\n this.player.on('dispose', this.onDispose);\n this.player.on('seeking', this.onSeeking);\n this.player.on('seeked', this.onSeeked);\n this.player.on('error', this.onError);\n this.player.on('waiting', this.onWaiting);\n this.player.on('timeupdate', this.onTimeupdate);\n this.player.on('ads-allpods-completed', this.OnAdsAllpodsCompleted);\n this.player.on('stream-manager', this.onStreamManager);\n }\n\n unregisterListeners() {\n this.player.off('loadstart', this.onDownload);\n this.player.off('loadeddata', this.onDownload);\n this.player.off('loadedmetadata', this.onDownload);\n this.player.off('adsready', this.onAdsready);\n this.player.off('adstart', this.onAdStart);\n this.player.off('adend', this.onAdEnd);\n this.player.off('play', this.onPlay);\n this.player.off('pause', this.onPause);\n this.player.off('playing', this.onPlaying);\n this.player.off('abort', this.onAbort);\n this.player.off('ended', this.onEnded);\n this.player.off('dispose', this.onDispose);\n this.player.off('seeking', this.onSeeking);\n this.player.off('seeked', this.onSeeked);\n this.player.off('error', this.onError);\n this.player.off('waiting', this.onWaiting);\n this.player.off('timeupdate', this.onTimeupdate);\n this.player.off('ads-allpods-completed', this.OnAdsAllpodsCompleted);\n this.player.off('stream-manager', this.onStreamManager);\n }\n\n onDownload(e) {\n this.sendDownload({ state: e.type });\n }\n\n // DAI methods\n onStreamManager(event) {\n if (!this.adsTracker && event.StreamManager) {\n const daiTracker = new DaiAdsTracker(this.player);\n daiTracker.setStreamManager(event.StreamManager);\n this.setAdsTracker(daiTracker);\n }\n }\n // DAI methods end\n\n onAdsready() {\n if (!this.adsTracker) {\n if (BrightcoveImaAdsTracker.isUsing(this.player)) {\n // BC IMA\n this.setAdsTracker(new BrightcoveImaAdsTracker(this.player));\n } else if (ImaAdsTracker.isUsing(this.player)) {\n // IMA\n this.setAdsTracker(new ImaAdsTracker(this.player));\n } else if (FreewheelAdsTracker.isUsing(this.player)) {\n // FW\n\n this.setAdsTracker(new FreewheelAdsTracker(this.player));\n // } else if (OnceAdsTracker.isUsing(this)) { // Once\n } else {\n // Generic\n this.setAdsTracker(new VideojsAdsTracker(this.player));\n }\n }\n }\n\n onAdStart() {\n this.currentAdPlaying = true;\n\n /* get the array with all the cue points which will be played */\n if (!this.imaAdCuePoints) {\n this.imaAdCuePoints = this.player?.ima?.getAdsManager().getCuePoints();\n }\n }\n onAdEnd() {\n if (this.isContentEnd) {\n this.sendEnd();\n }\n }\n\n OnAdsAllpodsCompleted() {\n this.onEnded.bind(this);\n this.FreewheelAdsCompleted = true;\n }\n\n onPlay() {\n this.sendRequest();\n }\n\n onPause() {\n this.sendPause();\n }\n\n onPlaying() {\n this.sendResume();\n this.sendBufferEnd();\n }\n\n onAbort() {\n this.sendEnd();\n }\n\n onEnded() {\n if (this.adsTracker) {\n this.isContentEnd = true;\n if (this.imaAdCuePoints && !this.imaAdCuePoints.includes(-1)) {\n this.sendEnd();\n }\n } else {\n this.sendEnd();\n }\n }\n\n onDispose() {\n this.sendEnd();\n }\n\n onSeeking() {\n this.sendSeekStart();\n }\n\n onSeeked() {\n this.sendSeekEnd();\n }\n\n onError() {\n const error = this.player.error();\n\n const errorCode = error.code;\n const errorMessage = error.message;\n if (this.player.error && this.player.error()) {\n this.sendError({ errorCode, errorMessage });\n }\n }\n\n onWaiting(e) {\n this.sendBufferStart();\n }\n\n onTimeupdate(e) {\n if (this.getPlayhead() > 0.1) {\n this.sendStart();\n }\n }\n}\n\n// Static members\nexport {\n HlsJsTech,\n ContribHlsTech,\n ShakaTech,\n VideojsAdsTracker,\n ImaAdsTracker,\n BrightcoveImaAdsTracker,\n FreewheelAdsTracker,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import VideojsTracker from './tracker';\nexport default VideojsTracker;"],"names":["t","e","i","r","d","videoAnalyticsHarvester","h","s","a","n","o","constructor","this","isInitialized","harvestScheduler","eventBuffer","initialize","A","warn","startScheduler","notice","error","message","addEvent","actionName","Events","QOE_AGGREGATE","viewId","addOrReplaceByActionNameAndViewId","addOrReplaceByActionName","add","setHarvestInterval","updateHarvestInterval","forceNextQoeCycle","setBeforeDrainCallback","beforeDrainCallback","refreshQoeKpis","findByActionNameAndViewId","findByActionName","QOE_KPI_KEYS","reset","startTime","stopTime","accumulator","offset","getDeltaTime","Date","getTime","start","stop","getDuration","clone","AdPositions","PRE","MID","POST","COLLECTOR","US","EU","Staging","GOV","VALID_EVENT_TYPES","MAX_PAYLOAD_SIZE","MAX_BEACON_SIZE","MAX_EVENTS_PER_BATCH","INTERVAL","QOE_AGGREGATE_KEYS","on","_listeners","push","off","indexOf","splice","emit","Array","isArray","forEach","call","eventType","type","data","target","buffer","maxPayloadSize","maxEventsPerBatch","currentPayloadSize","totalEvents","smartHarvestPayloadThreshold","Math","floor","overflowPayloadThreshold","smartHarvestEventThreshold","overflowEventThreshold","onSmartHarvestTrigger","findIndex","find","Q3","makeRoom","checkSmartHarvestTrigger","round","setSmartHarvestCallback","drain","isEmpty","size","clear","length","shift","l","retryQueueHandler","u","httpClient","X","fallBackUrl","retryCount","triggerSmartHarvest","isStarted","currentTimerId","harvestCycle","isHarvesting","qoeCycleCount","_lastSentQoeKpis","setupPageLifecycleHandlers","eventBufferSize","scheduleNextHarvest","stopScheduler","clearTimeout","threshold","triggerHarvest","setTimeout","onHarvestInterval","getQueueSize","success","reason","drainEvents","isFinalHarvest","trimEventsToFit","sendChunk","totalChunks","results","handleHarvestFailure","consecutiveFailures","ins","unshift","slice","originalCount","trimmedCount","finalSize","maxSize","addFailedEvents","window","NRVIDEO","config","qoeIntervalFactor","_qoeKpisUnchanged","_saveQoeKpis","c","getRetryEventsToFit","url","c$","payload","body","options","isLastChunk","Promise","send","retry","handleRequestFailure","status","chunk","eventCount","info","region","isNaN","force","document","addEventListener","hidden","Levels","ERROR","WARNING","arguments","NOTICE","debug","DEBUG","debugCommonVideoEvents","level","concat","addEventHandler","prefix","includeTime","getDate","getMinutes","getSeconds","getMilliseconds","SILENT","colorful","documentMode","console","cast","log","apply","ALL","location","search","exec","Error","callback","executeRequest","now","JSON","stringify","obfuscate","reduce","regex","RegExp","flags","includes","source","replace","replacement","navigator","sendBeacon","sendWithBeacon","handleRequestComplete","fetchWithTimeout","method","headers","keepalive","ok","statusText","Sc","AbortController","abort","fetch","signal","name","retryQueue","maxQueueSize","maxQueueSizeBytes","queueSizeBefore","evictOldestEvent","discardEvent","super","customData","heartbeat","parentTracker","_trackerReadyChrono","_actionTable","ACTION_TABLE","_actionAdTable","ACTION_AD_TABLE","setOptions","dispose","unregisterListeners","registerListeners","getHeartbeat","state","_isAd","startHeartbeat","_heartbeatInterval","setInterval","sendHeartbeat","bind","max","stopHeartbeat","clearInterval","sendVideoAction","HEARTBEAT","getAttributes","trackerName","getTrackerName","trackerVersion","getTrackerVersion","coreVersion","rE","timeSinceTrackerReady","isBackgroundEvent","sendVideoAdAction","sendVideoErrorAction","isAd","sendVideoCustomAction","z8","beacon","licenseKey","applicationID","href","ArrayBuffer","byteLength","Blob","FormData","WeakSet","has","exports","Object","defineProperty","enumerable","get","prototype","hasOwnProperty","Symbol","toStringTag","value","appName","qoe","timestamp","timeSinceLoad","performance","g","m","qoeAggregateVersion","f","qoeAggregate","setConfiguration","validateRequiredFields","validateConfigFields","initializeGlobalConfig","values","flatMap","keys","join","filterObfuscateRules","filter","sanitizeQoeIntervalFactor","Number","isInteger","addTracker","trackerInit","removeTracker","getTrackers","sendError","forceHarvest","E","_createdAt","_hb","_acc","_bufferAcc","_viewSession","_viewCount","numberOfErrors","numberOfAds","numberOfVideos","totalPlaytime","weightedAverageBitrate","totalAdPlaytime","isAdBreak","initialBufferingHappened","startupTime","peakBitrate","_lastBitrate","_lastBitrateChangeTimestamp","partialAverageBitrate","_totalBitrateDuration","hadStartupError","hadPlaybackError","totalRebufferingTime","resetFlags","resetChronos","isPlayerReady","isRequested","isPaused","isSeeking","isBuffering","isPlaying","timeSinceRequested","timeSinceStarted","timeSincePaused","timeSinceSeekBegin","timeSinceBufferBegin","timeSinceAdBreakStart","timeSinceLastDownload","timeSinceLastHeartbeat","timeSinceLastRenditionChange","timeSinceLastAdQuartile","timeSinceLastAd","timeSinceLastError","timeSinceLastAdError","timeSinceResumed","timeSinceSeekEnd","playtimeSinceLastEvent","customTimeSinceAttributes","elapsedTime","bufferElapsedTime","_totalAdPlaytime","setIsAd","setTimeSinceAttribute","removeTimeSinceAttribute","getViewSession","random","toString","substring","getViewId","getStateAttributes","timeSinceAdRequested","timeSinceLastAdHeartbeat","timeSinceAdStarted","timeSinceAdPaused","timeSinceAdBufferBegin","timeSinceAdSeekBegin","timeSinceAdBreakBegin","entries","getQoeAttributes","rebufferingRatio","averageBitrate","weightedBitrate","calculateBufferType","goViewCountUp","goPlayerReady","goRequest","goStart","goEnd","goPause","goResume","goBufferStart","goBufferEnd","goSeekStart","goSeekEnd","goAdBreakStart","goAdBreakEnd","goDownload","goHeartbeat","goRenditionChange","goAdQuartile","goError","isError","goLastAd","trackContentBitrateState","resetViewIdTrackedState","clearTotalAdsTime","totalAdTime","startAdsTime","stopAdsTime","setStartupTime","T","v","adsTracker","_lastBufferType","_userId","setPlayer","tag","setUserId","setAdsTracker","player","getElementById","disposeAdsTracker","S","getVideoId","getTitle","isLive","getBitrate","getManifestBitrate","getSegmentDownloadBitrate","getNetworkDownloadBitrate","getWebkitBitrate","webkitVideoDecodedByteCount","_lastWebkitBitrate","getRenditionName","getRenditionBitrate","getRenditionShift","_lastAdRendition","_lastRendition","getRenditionHeight","videoHeight","getRenditionWidth","videoWidth","duration","getPlayhead","currentTime","getLanguage","getSrc","currentSrc","getPlayrate","playbackRate","isMuted","muted","isFullscreen","getCdn","getPlayerName","getPlayerVersion","getFps","isAutoplayed","autoplay","getPreload","preload","getAdQuartile","getAdPosition","getAdPartner","getAdCreativeId","getInstrumentationProvider","getInstrumentationName","getInstrumentationVersion","viewSession","playerName","playerVersion","src","pageUrl","adId","adTitle","adSrc","adCdn","adBitrate","adRenditionName","adRenditionHeight","adRenditionWidth","adDuration","adPlayhead","adLanguage","adIsMuted","adFps","adPosition","adCreativeId","adPartner","contentId","contentTitle","contentSrc","contentCdn","contentPlayhead","contentIsLive","contentBitrate","contentManifestBitrate","contentSegmentDownloadBitrate","contentNetworkDownloadBitrate","contentRenditionName","contentRenditionHeight","contentRenditionWidth","contentDuration","contentLanguage","contentPlayrate","contentIsFullscreen","contentIsMuted","contentIsAutoplayed","contentPreload","contentFps","addQoeAttributes","sendCustom","sendPlayerReady","PLAYER_READY","sendRequest","AD_REQUEST","CONTENT_REQUEST","sendStart","AD_START","CONTENT_START","sendEnd","AD_END","CONTENT_END","sendPause","AD_PAUSE","CONTENT_PAUSE","sendResume","AD_RESUME","CONTENT_RESUME","sendBufferStart","AD_BUFFER_START","CONTENT_BUFFER_START","buildBufferAttributes","bufferType","sendBufferEnd","AD_BUFFER_END","CONTENT_BUFFER_END","isInitialBuffering","sendSeekStart","AD_SEEK_START","CONTENT_SEEK_START","sendSeekEnd","AD_SEEK_END","CONTENT_SEEK_END","sendDownload","DOWNLOAD","AD_ERROR","CONTENT_ERROR","sendRenditionChanged","AD_RENDITION_CHANGE","CONTENT_RENDITION_CHANGE","adjustElapsedTimeForPause","AD_HEARTBEAT","CONTENT_HEARTBEAT","sendAdBreakStart","AD_BREAK_START","sendAdBreakEnd","AD_BREAK_END","sendAdQuartile","quartile","AD_QUARTILE","sendAdClick","AD_CLICK","p","y","_","R","B","b","Constants","Chrono","Log","Emitter","Tracker","VideoTracker","VideoTrackerState","Core","version","NrVideoEventAggregator","RetryQueueHandler","OptimizedHttpClient","HarvestScheduler","recordEvent","_videoCore","_interopRequireDefault","require","_videojsAds","__esModule","default","BrightcoveImaAdsTracker","VideojsAdsTracker","isUsing","ima3","adPlayer","nrvideo","onStarted","onPaused","onResume","onComplete","onSkipped","onError","onClick","skipped","sendClick","daiEvents","DAI_STREAM_INITIALIZED","DAI_STREAM_LOADED","DAI_STREAM_ERROR","DAI_AD_BREAK_STARTED","DAI_AD_BREAK_ENDED","DAI_AD_PERIOD_STARTED","DAI_AD_PERIOD_ENDED","DAI_AD_STARTED","DAI_AD_FIRST_QUARTILE","DAI_AD_MIDPOINT","DAI_AD_THIRD_QUARTILE","DAI_AD_COMPLETE","DAI_AD_SKIPPED","DAI_AD_PAUSED","DAI_AD_RESUMED","DAI_AD_CLICKED","DAI_AD_ERROR","DAI_CUEPOINTS_CHANGED","DAI_TIMED_METADATA","DaiAdsTracker","imaDai","dai","VERSION","ima","streamManager","currentAdData","adBreakData","streamData","cuePoints","initialized","eventHandlers","setStreamManager","setupStreamManagerListeners","google","api","StreamEvent","Type","LOADED","onStreamLoaded","STREAM_INITIALIZED","onStreamInitialized","onStreamError","AD_BREAK_STARTED","onAdBreakStarted","AD_BREAK_ENDED","onAdBreakEnded","AD_PERIOD_STARTED","onAdPeriodStarted","AD_PERIOD_ENDED","onAdPeriodEnded","STARTED","onAdStarted","FIRST_QUARTILE","onAdFirstQuartile","MIDPOINT","onAdMidpoint","THIRD_QUARTILE","onAdThirdQuartile","COMPLETE","onAdComplete","SKIPPED","onAdSkipped","PAUSED","onAdPaused","RESUMED","onAdResumed","CLICK","onAdClicked","VIDEO_CLICKED","CUEPOINTS_CHANGED","onCuePointsChanged","TIMED_METADATA","onTimedMetadata","handler","removeEventListener","event","extractStreamData","errorData","extractErrorData","extractAdBreakData","extractAdData","getClickThroughUrl","extractCuePoints","metadata","extractTimedMetadata","getStreamData","streamId","adTagParameters","streamType","getStreamType","getAdBreak","adBreakId","id","adBreakTitle","title","adCount","ads","position","ad","getAd","getAdId","creativeId","getCreativeId","description","getDescription","advertiserName","getAdvertiserName","clickThroughUrl","dealId","getDealId","wrapperAdIds","getWrapperAdIds","getError","errorCode","getErrorCode","errorMessage","getMessage","innerError","getInnerError","getCuepoints","getType","getData","getAdCuePoints","undefined","getStreamTime","Infinity","isLiveStream","getCurrentAdBreak","getCurrentAd","tech","getTech","stats","bandwidth","FreewheelAdsTracker","FreeWheelPlugin","tv","freewheel","provider","adInstance","getActiveCreativeRendition","getId","err","getPrimaryCreativeRenditionAsset","getUrl","getName","ImaAdsTracker","getCuePoints","getAdsManager","lastAdData","podInfo","podIndex","mediaUrl","manager","getRemainingTime","adVideoElement","getAdVideoElement","bitrate","_lastAdWebkitBitrate","delta","seconds","renditionBitrate","AdEvent","AdErrorEvent","ALL_ADS_COMPLETED","LINEAR_CHANGED","USER_CLOSE","IMPRESSION","CONTENT_PAUSE_REQUESTED","CONTENT_RESUME_REQUESTED","SKIPPABLE_STATE_CHANGED","AD_CAN_PLAY","AD_METADATA","EXPANDED_CHANGED","AD_BREAK_READY","LOG","onLoaded","onStart","onResumed","onFirstQuartile","onMidpoint","onThirdQuartile","onImpression","getAdData","adError","adQuartile","adsManager","currentAd","getMediaUrl","getAdPodInfo","getVastMediaBitrate","controller","adUi","adContainerDiv","querySelector","_package","_contribHls","_hlsJs","_shaka","IWillNotUseThisInPlugins","ContribHlsTech","HlsJsTech","ShakaTech","pkg","onAdrequest","onAdload","onAdstart","onAdend","onAdskip","onAdserror","onAdsClick","onPodStart","onPodEnd","onAdspause","onAdsplay","vhs","el","media","playlists","attributes","NAME","BANDWIDTH","RESOLUTION","width","height","getContentBitratePlayback","master","map","throughput","HlsJs","vhs_","getResource","levels","currentLevel","shakaPlayer","getManifestUri","getStats","streamBandwidth","tracks","getVariantTracks","videoBandwidth","audioBandwidth","track","active","estimatedBandwidth","_ima","_brightcoveIma","_freewheel","_dai","VideojsTracker","isContentEnd","imaAdCuePoints","daiInitialized","snapshot","absoluteTime","mediainfo","language","videojs","activePlaylist","techWrapper","allRenditions","maxBitrate","onDownload","onAdsready","onAdStart","onAdEnd","onPlay","onPause","onPlaying","onAbort","onEnded","onDispose","onSeeking","onSeeked","onWaiting","onTimeupdate","OnAdsAllpodsCompleted","onStreamManager","StreamManager","daiTracker","currentAdPlaying","FreewheelAdsCompleted","code","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","definition","key","obj","prop","_tracker"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack://VideojsTracker/./src/ads/freewheel.js","webpack://VideojsTracker/./src/ads/brightcove-ima.js","webpack://VideojsTracker/./src/techs/hls-js.js","webpack://VideojsTracker/./src/ads/ima.js","webpack://VideojsTracker/./src/tracker.js","webpack://VideojsTracker/./src/ads/utils/mt-constants.js","webpack://VideojsTracker/./src/techs/shaka.js","webpack://VideojsTracker/./src/techs/contrib-hls.js","webpack://VideojsTracker/./src/ads/videojs-ads.js","webpack://VideojsTracker/./node_modules/@newrelic/video-core/dist/esm/index.js","webpack://VideojsTracker/./src/ads/utils/mt.js","webpack://VideojsTracker/./src/ads/media-tailor.js","webpack://VideojsTracker/./src/ads/dai.js","webpack://VideojsTracker/webpack/bootstrap","webpack://VideojsTracker/webpack/runtime/define property getters","webpack://VideojsTracker/webpack/runtime/hasOwnProperty shorthand","webpack://VideojsTracker/webpack/runtime/make namespace object","webpack://VideojsTracker/./src/index.js"],"sourcesContent":["import VideojsAdsTracker from './videojs-ads'\n\nexport default class FreewheelAdsTracker extends VideojsAdsTracker {\n static isUsing (player) {\n return !!player.FreeWheelPlugin && typeof tv !== 'undefined' && tv.freewheel\n }\n\n getTrackerName () {\n return 'freewheel-ads'\n }\n\n getPlayerName () {\n return 'freewheel-ads'\n }\n\n getPlayerVersion () {\n return this.player.FreeWheelPlugin.VERSION\n }\n\n getPlayhead () {\n if (this.player.ads.ad.currentTime) {\n return this.player.ads.ad.currentTime() * 1000\n }\n }\n\n getDuration () {\n if (this.player.ads.ad.duration) {\n return this.player.ads.ad.duration * 1000\n }\n }\n\n getVideoId () {\n return this.player.ads.ad.id\n }\n\n getAdPartner () {\n return 'freewheel'\n }\n\n getAdCreativeId () {\n try {\n return this.player.ads.provider.event.adInstance.getActiveCreativeRendition().getId()\n } catch (err) { /* do nothing */ }\n }\n\n getSrc () {\n try {\n let acr = this.player.ads.provider.event.adInstance.getActiveCreativeRendition()\n return acr.getPrimaryCreativeRenditionAsset().getUrl()\n } catch (err) { /* do nothing */ }\n }\n\n getTitle () {\n try {\n let acr = this.player.ads.provider.event.adInstance.getActiveCreativeRendition()\n return acr.getPrimaryCreativeRenditionAsset().getName()\n } catch (err) { /* do nothing */ }\n }\n\n getAdPosition () {\n switch (this.player.ads.ad.type) {\n case 'PREROLL':\n return nrvideo.Constants.AdPositions.PRE\n case 'MIDROLL':\n return nrvideo.Constants.AdPositions.MID\n case 'POSTROLL':\n return nrvideo.Constants.AdPositions.POST\n }\n }\n}\n","import nrvideo from '@newrelic/video-core'\nimport VideojsAdsTracker from './videojs-ads'\n\nexport default class BrightcoveImaAdsTracker extends VideojsAdsTracker {\n static isUsing (player) {\n return !!player.ima3\n }\n\n getTrackerName () {\n return 'brightcove-ima-ads'\n }\n\n getPlayerName () {\n return 'brightcove-ima-ads'\n }\n\n getPlayhead () {\n return this.player?.ima3?.adPlayer?.currentTime()\n }\n\n registerListeners () {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n 'ima3-ready',\n 'ima3error',\n 'ima3-ad-error',\n 'ima3-started',\n 'ima3-complete',\n 'ima3-paused',\n 'ima3-resumed',\n 'ads-request',\n 'ads-load',\n 'ads-ad-started',\n 'ads-ad-ended',\n 'ads-pause',\n 'ads-play',\n 'ads-click',\n 'ads-pod-started',\n 'ads-pod-ended',\n 'ads-allpods-completed'\n ])\n\n this.player.on('ima3-started', this.onStarted.bind(this))\n this.player.on('ima3-paused', this.onPaused.bind(this))\n this.player.on('ima3-resumed', this.onResume.bind(this))\n this.player.on('ima3-complete', this.onComplete.bind(this))\n this.player.on('ima3-skipped', this.onSkipped.bind(this))\n this.player.on('adserror', this.onError.bind(this))\n this.player.on('ads-click', this.onClick.bind(this))\n }\n\n unregisterListeners () {\n this.player.off('ima3-started', this.onStarted)\n this.player.off('ima3-paused', this.onPaused)\n this.player.off('ima3-resumed', this.onResume)\n this.player.off('ima3-complete', this.onComplete)\n this.player.off('ima3-skipped', this.onSkipped)\n this.player.off('adserror', this.onError)\n this.player.off('ads-click', this.onClick)\n }\n\n onStarted (e) {\n this.sendRequest()\n this.sendStart()\n }\n\n onPaused (e) {\n this.sendPause()\n }\n\n onResume (e) {\n this.sendResume()\n }\n\n onComplete (e) {\n this.sendEnd()\n }\n\n onSkipped (e) {\n this.sendEnd({ skipped: true })\n }\n\n onError (e) {\n this.sendError()\n }\n\n onClick (e) {\n this.sendClick()\n }\n}\n","export default class HlsJs {\n constructor(tech) {\n this.tech = tech.vhs_;\n this.player = tech.el().player; // Store player reference for currentTime\n }\n\n getResource(tech) {\n return this.tech.url;\n }\n\n getRenditionName(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.name) return level.name;\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.bitrate) return Math.round(level.bitrate);\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.width) return level.width;\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight(tech) {\n try {\n var level = this.tech.levels[this.tech.currentLevel];\n if (level && level.height) return level.height;\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Default uses playback bitrate (Method 4)\n return this.getContentBitratePlayback();\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current active level's bitrate from manifest\n const level = this.tech.levels[this.tech.currentLevel];\n if (level && level.bitrate) {\n return Math.round(level.bitrate);\n }\n } catch (err) {}\n return null;\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all renditions\n if (this.tech.levels && this.tech.levels.length > 0) {\n return Math.round(Math.max(...this.tech.levels.map(l => l.bitrate)));\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n // VHS stats.bandwidth\n if (this.tech.stats && this.tech.stats.bandwidth > 0)\n return Math.round(this.tech.stats.bandwidth);\n } catch (err) {}\n return null;\n }\n\n getNetworkDownloadBitrate() {\n if (this.tech.throughput && this.tech.throughput > 0) {\n return Math.round(this.tech.throughput);\n }\n return null;\n }\n}\n\nHlsJs.isUsing = function (tech) {\n return !!tech.vhs_;\n};\n","/* global google */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\n\nexport default class ImaAdsTracker extends VideojsAdsTracker {\n static isUsing(player) {\n return player.ima && typeof google !== 'undefined';\n }\n\n getTrackerName() {\n return 'ima-ads';\n }\n\n getPlayerName() {\n return 'ima';\n }\n\n getPlayerVersion() {\n return (\n 'ima: ' + google.ima.VERSION + '; contrib-ads: ' + this.player.ads.VERSION\n );\n }\n\n getCuePoints() {\n return this.player.ima.getAdsManager().getCuePoints();\n }\n\n getAdPosition() {\n if (\n this.lastAdData &&\n this.lastAdData.podInfo &&\n this.lastAdData.podInfo.podIndex !== undefined\n ) {\n const podIndex = this.lastAdData.podInfo.podIndex;\n\n if (podIndex === 0) {\n return 'pre';\n } else if (podIndex === -1) {\n return 'post';\n } else {\n return 'mid';\n }\n }\n return null;\n }\n\n getDuration() {\n if (this.lastAdData && this.lastAdData.duration !== undefined) {\n return this.lastAdData.duration * 1000;\n }\n return null;\n }\n\n getVideoId() {\n if (this.lastAdData && this.lastAdData.adId) {\n return this.lastAdData.adId;\n }\n return null;\n }\n\n getAdCreativeId() {\n if (this.lastAdData && this.lastAdData.creativeId) {\n return this.lastAdData.creativeId;\n }\n return null;\n }\n\n getSrc() {\n if (this.lastAdData && this.lastAdData.mediaUrl) {\n return this.lastAdData.mediaUrl;\n }\n return null;\n }\n\n getTitle() {\n if (this.lastAdData && this.lastAdData.title) {\n return this.lastAdData.title;\n }\n return null;\n }\n\n getPlayhead() {\n let manager = this.player.ima.getAdsManager();\n if (manager) {\n return (this.getDuration() - manager.getRemainingTime()) * 1000;\n }\n }\n\n getPlayrate() {\n return this.player.playbackRate();\n }\n\n getAdPartner() {\n return 'ima';\n }\n\n getWebkitBitrate() {\n const adVideoElement = this.getAdVideoElement();\n if (adVideoElement && adVideoElement.webkitVideoDecodedByteCount) {\n let bitrate;\n if (this._lastAdWebkitBitrate > 0) {\n const current = adVideoElement.webkitVideoDecodedByteCount;\n const delta = current - this._lastAdWebkitBitrate;\n const seconds = this.getHeartbeat() / 1000;\n bitrate = Math.round((delta / seconds) * 8);\n }\n \n this._lastAdWebkitBitrate = adVideoElement.webkitVideoDecodedByteCount;\n return bitrate ?? null;\n }\n return null;\n }\n\n getRenditionBitrate() {\n if (this.lastAdData && this.lastAdData.renditionBitrate) {\n return Math.round(this.lastAdData.renditionBitrate);\n }\n return null;\n }\n\n registerListeners() {\n // Shortcut events\n let e = google.ima.AdEvent.Type;\n let AD_ERROR = google.ima.AdErrorEvent.Type.AD_ERROR;\n\n //store ad data\n this.lastAdData = null;\n // debug\n nrvideo.Log.debugCommonVideoEvents(this.player.ima.addEventListener, [\n null,\n e.ALL_ADS_COMPLETED,\n e.LINEAR_CHANGED,\n e.COMPLETE,\n e.USER_CLOSE,\n e.IMPRESSION,\n e.CONTENT_PAUSE_REQUESTED,\n e.CONTENT_RESUME_REQUESTED,\n e.SKIPPED,\n e.SKIPPABLE_STATE_CHANGED,\n e.LOADED,\n e.PAUSED,\n e.RESUMED,\n e.STARTED,\n e.AD_CAN_PLAY,\n e.AD_METADATA,\n e.EXPANDED_CHANGED,\n e.AD_BREAK_READY,\n e.LOG,\n e.CLICK,\n e.FIRST_QUARTILE,\n e.MIDPOINT,\n e.THIRD_QUARTILE,\n AD_ERROR,\n ]);\n\n // Register listeners\n this.player.ima.addEventListener(e.LOADED, this.onLoaded.bind(this));\n this.player.ima.addEventListener(e.STARTED, this.onStart.bind(this));\n this.player.ima.addEventListener(e.PAUSED, this.onPaused.bind(this));\n this.player.ima.addEventListener(e.RESUMED, this.onResumed.bind(this));\n this.player.ima.addEventListener(e.COMPLETE, this.onComplete.bind(this));\n this.player.ima.addEventListener(e.SKIPPED, this.onSkipped.bind(this));\n this.player.ima.addEventListener(e.CLICK, this.onClick.bind(this));\n this.player.ima.addEventListener(\n e.FIRST_QUARTILE,\n this.onFirstQuartile.bind(this)\n );\n this.player.ima.addEventListener(e.MIDPOINT, this.onMidpoint.bind(this));\n this.player.ima.addEventListener(\n e.THIRD_QUARTILE,\n this.onThirdQuartile.bind(this)\n );\n this.player.ima.addEventListener(AD_ERROR, this.onError.bind(this));\n }\n\n unregisterListeners() {\n // Shortcut events\n let e = google.ima.AdEvent.Type;\n let AD_ERROR = google.ima.AdErrorEvent.Type.AD_ERROR;\n\n // unregister listeners\n this.player.ima.removeEventListener(e.LOADED, this.onLoaded);\n this.player.ima.removeEventListener(e.STARTED, this.onLoaded.bind(this));\n this.player.ima.removeEventListener(e.IMPRESSION, this.onImpression);\n this.player.ima.removeEventListener(e.PAUSED, this.onPaused);\n this.player.ima.removeEventListener(e.RESUMED, this.onResumed);\n this.player.ima.removeEventListener(e.COMPLETE, this.onComplete);\n this.player.ima.removeEventListener(e.SKIPPED, this.onSkipped);\n this.player.ima.removeEventListener(e.CLICK, this.onClick);\n this.player.ima.removeEventListener(e.FIRST_QUARTILE, this.onFirstQuartile);\n this.player.ima.removeEventListener(e.MIDPOINT, this.onMidpoint);\n this.player.ima.removeEventListener(e.THIRD_QUARTILE, this.onThirdQuartile);\n this.player.ima.removeEventListener(AD_ERROR, this.onError);\n //clear ad data\n this.lastAdData = null;\n }\n\n onLoaded(e) {\n this.lastAdData = this.getAdData();\n this.sendRequest();\n }\n\n onStart(e) {\n this.lastAdData = this.getAdData();\n this._lastAdWebkitBitrate = 0;\n this.sendStart();\n }\n\n onComplete(e) {\n this.sendEnd();\n this.lastAdData = null; // Clear the data\n }\n\n onSkipped(e) {\n this.sendEnd({ skipped: true });\n this.lastAdData = null; // Clear the data\n }\n\n onError(e) {\n const adError = e.getError();\n\n const errorCode = adError.getErrorCode();\n const errorMessage = adError.getMessage();\n this.sendError({ adError, errorCode, errorMessage });\n }\n\n onClick(e) {\n this.sendAdClick();\n }\n\n onFirstQuartile() {\n this.sendAdQuartile({ adQuartile: 1 });\n }\n\n onMidpoint() {\n this.sendAdQuartile({ adQuartile: 2 });\n }\n\n onThirdQuartile() {\n this.sendAdQuartile({ adQuartile: 3 });\n }\n\n onPaused() {\n this.sendPause();\n }\n\n onResumed() {\n this.sendResume();\n }\n\n getAdData() {\n try {\n const adsManager = this.player.ima.getAdsManager();\n if (adsManager) {\n const currentAd = adsManager.getCurrentAd();\n if (currentAd) {\n return {\n adId: currentAd.getAdId(),\n creativeId: currentAd.getCreativeId(),\n duration: currentAd.getDuration(),\n mediaUrl: currentAd.getMediaUrl(),\n title: currentAd.getTitle(),\n podInfo: currentAd.getAdPodInfo()?.data,\n renditionBitrate: currentAd.getVastMediaBitrate(),\n // Add other properties as needed\n };\n }\n }\n return null;\n } catch (err) {\n return null;\n }\n }\n\n getAdVideoElement() {\n if (this.player.ima && this.player.ima.controller && this.player.ima.controller.adUi) {\n const adContainerDiv = this.player.ima.controller.adUi.adContainerDiv;\n if (adContainerDiv) {\n const adVideoElement = adContainerDiv.querySelector('video');\n if (adVideoElement) {\n return adVideoElement;\n }\n }\n }\n }\n}\n","import nrvideo from '@newrelic/video-core';\nimport pkg from '../package.json';\nimport ContribHlsTech from './techs/contrib-hls';\nimport HlsJsTech from './techs/hls-js';\nimport ShakaTech from './techs/shaka';\nimport VideojsAdsTracker from './ads/videojs-ads';\nimport ImaAdsTracker from './ads/ima';\nimport BrightcoveImaAdsTracker from './ads/brightcove-ima';\nimport FreewheelAdsTracker from './ads/freewheel';\nimport DaiAdsTracker from './ads/dai';\nimport MediaTailorAdsTracker from './ads/media-tailor';\n\n/**\n * Explicit ad tracking modes. Pass via config.ad.type.\n *\n * CSAI (Client-Side Ad Insertion)\n * All CSAI frameworks share the adsready event path. The tracker auto-detects\n * the right framework (Brightcove IMA → IMA → Freewheel → generic) — no sub-type needed.\n *\n * SSAI (Server-Side Ad Insertion) — sub-type is always required.\n * Each SSAI platform has its own SDK and a different activation path.\n * Cannot be auto-detected — declare which one you are using.\n * SSAI.DAI — Google DAI (google.ima.dai.api)\n * SSAI.MT — AWS MediaTailor\n *\n * If config.ad is not set, no ad tracking runs (safe default).\n * To add a new SSAI platform: add a key to SSAI — validation derives from this object.\n */\nexport const AD_TRACKING = {\n CSAI: 'csai',\n SSAI: Object.freeze({\n DAI: 'ssai:dai',\n MT: 'ssai:mt',\n }),\n};\n\nexport default class VideojsTracker extends nrvideo.VideoTracker {\n constructor(player, options) {\n super(player, options);\n this.options = options;\n this.isContentEnd = false;\n this.imaAdCuePoints = '';\n this.daiInitialized = false;\n this.adTracking = options?.config?.ad?.type || null;\n\n // When options are provided but config.ad is not declared, no ad tracking\n // will run. Warn so the caller knows to set it explicitly.\n if (options && !this.adTracking) {\n nrvideo.Log.warn(\n 'VideojsTracker: config.ad not set — no ad tracking will run. ' +\n 'Set config.ad.type to enable it (e.g. AD_TRACKING.CSAI, AD_TRACKING.SSAI.MT).'\n );\n }\n\n // Merge config.ad options (segmentPrefix, trackingUrl) into the internal\n // mediatailor object that MediaTailorAdsTracker reads.\n if (this.adTracking === AD_TRACKING.SSAI.MT) {\n const adConfig = options?.config?.ad || {};\n this.options = Object.assign({}, this.options, {\n mediatailor: {\n segmentPrefix: adConfig.segmentPrefix,\n trackingUrl: adConfig.trackingUrl,\n ...this.options?.mediatailor,\n },\n });\n }\n\n nrvideo.Core.addTracker(this, options);\n }\n\n /**\n * Sets the ad tracking mode at runtime.\n * Must be called before the first loadstart / adsready event to take effect.\n * @param {'csai'|'ssai:dai'|'ssai:mt'} type\n */\n setAdTracking(type) {\n const valid = [\n AD_TRACKING.CSAI,\n ...Object.values(AD_TRACKING.SSAI),\n ];\n if (!valid.includes(type)) {\n nrvideo.Log.warn(\n `VideojsTracker.setAdTracking: unknown value \"${type}\". Valid values: ${valid.join(', ')}`\n );\n return;\n }\n this.adTracking = type;\n nrvideo.Log.debug(`VideojsTracker: adTracking set to \"${type}\"`);\n }\n\n getTech() {\n let tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n if (tech) {\n if (ContribHlsTech.isUsing(tech)) {\n return new ContribHlsTech(tech);\n } else if (HlsJsTech.isUsing(tech)) {\n return new HlsJsTech(tech);\n } else if (ShakaTech.isUsing(tech)) {\n return new ShakaTech(tech);\n }\n }\n }\n\n getTrackerName() {\n return 'videojs';\n }\n\n getInstrumentationProvider() {\n return 'New Relic';\n }\n\n getInstrumentationName() {\n return this.getPlayerName();\n }\n\n getInstrumentationVersion() {\n return this.getPlayerVersion();\n }\n\n getTrackerVersion() {\n return pkg.version;\n }\n\n getPlayhead() {\n if (\n this.player.ads &&\n this.player.ads.state === 'ads-playback' &&\n this.player.ads.snapshot &&\n this.player.ads.snapshot.currentTime\n ) {\n return this.player.ads.snapshot.currentTime * 1000;\n } else if (this.player.absoluteTime) {\n return this.player.absoluteTime() * 1000;\n } else {\n return this.player.currentTime() * 1000;\n }\n }\n\n getDuration() {\n if (\n this.player.mediainfo &&\n typeof this.player.mediainfo.duration !== 'undefined'\n ) {\n return this.player.mediainfo.duration * 1000; // Brightcove\n } else {\n return this.player.duration() * 1000;\n }\n }\n\n getTitle() {\n return this.player?.mediainfo?.name; // Brightcove\n }\n\n getId() {\n return this.player?.mediainfo?.id; // Brightcove\n }\n\n getLanguage() {\n return this.player?.language();\n }\n\n getSrc() {\n let tech = this.getTech();\n if (tech && tech.getSrc) {\n return tech.getSrc();\n } else {\n return this.player.currentSrc();\n }\n }\n\n getPlayerName() {\n return this.player?.name() || 'videojs';\n }\n\n getPlayerVersion() {\n return this.player?.version || videojs.VERSION;\n }\n\n isMuted() {\n return this.player.muted();\n }\n\n getBitrate() {\n return this.getContentBitratePlayback();\n }\n\n // Measures: Actual content consumption rate during playback\n getContentBitratePlayback() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n // 1. Get the current active rendition (The most accurate \"Playback Bitrate\")\n if (tech?.vhs?.playlists?.media()) {\n const activePlaylist = tech.vhs.playlists.media();\n // Use AVERAGE-BANDWIDTH if available, fallback to BANDWIDTH\n const bitrate =\n activePlaylist.attributes['AVERAGE-BANDWIDTH'] ||\n activePlaylist.attributes.BANDWIDTH ||\n null;\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n\n // 2. Fallback to tech wrappers (Shaka/Hls.js) if they have a getBitrate method\n const techWrapper = this.getTech();\n if (techWrapper?.getBitrate) {\n const bitrate = techWrapper.getBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {\n /* ignore */\n }\n return null;\n }\n\n getRenditionName() {\n let tech = this.getTech();\n if (tech && tech.getRenditionName) {\n return tech.getRenditionName();\n }\n }\n\n getManifestBitrate() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n // tech.vhs.playlists.master.playlists contains the array of all renditions\n const allRenditions = tech?.vhs?.playlists?.master?.playlists;\n\n if (allRenditions && allRenditions.length > 0) {\n // Find the highest BANDWIDTH value in the list\n const maxBitrate = Math.max(\n ...allRenditions.map((p) => p.attributes.BANDWIDTH || 0),\n );\n return maxBitrate > 0 ? Math.round(maxBitrate) : null;\n }\n\n // Fallback to tech wrappers (Shaka/Hls.js)\n const techWrapper = this.getTech();\n if (techWrapper?.getManifestBitrate) {\n const bitrate = techWrapper.getManifestBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (e) {\n /* ignore */\n }\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n // VHS stats.bandwidth\n if (tech?.vhs?.stats?.bandwidth && tech.vhs.stats.bandwidth > 0) {\n return Math.round(tech.vhs.stats.bandwidth);\n }\n\n // Fallback to tech wrappers (Shaka/Hls.js)\n const techWrapper = this.getTech();\n if (techWrapper?.getSegmentDownloadBitrate) {\n const bitrate = techWrapper.getSegmentDownloadBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {\n /* ignore */\n }\n return null;\n }\n\n getNetworkDownloadBitrate() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n\n if (tech?.vhs?.throughput && tech.vhs.throughput > 0) {\n return Math.round(tech.vhs.throughput);\n }\n\n // Fallback to tech wrapper implementation\n const techWrapper = this.getTech();\n if (techWrapper?.getNetworkDownloadBitrate) {\n const bitrate = techWrapper.getNetworkDownloadBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n\n return null;\n }\n\n getRenditionHeight() {\n let tech = this.getTech();\n\n if (tech && tech.getRenditionHeight) {\n return tech.getRenditionHeight();\n }\n return this.player.videoHeight();\n }\n\n getRenditionWidth() {\n let tech = this.getTech();\n if (tech && tech.getRenditionWidth) {\n return tech.getRenditionWidth();\n }\n return this.player.videoWidth();\n }\n\n getPlayrate() {\n return this.player.playbackRate();\n }\n\n isAutoplayed() {\n return this.player.autoplay();\n }\n\n isFullscreen() {\n return this.player.isFullscreen();\n }\n\n getPreload() {\n return this.player.preload();\n }\n\n registerListeners() {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n 'adstart',\n 'adend',\n 'adskip',\n 'adsready',\n 'adserror',\n 'dispose',\n ]);\n\n // BIND LISTENER METHODS\n this.onDownload = this.onDownload.bind(this);\n this.onAdsready = this.onAdsready.bind(this);\n this.onAdStart = this.onAdStart.bind(this);\n this.onAdEnd = this.onAdEnd.bind(this);\n this.onPlay = this.onPlay.bind(this);\n this.onPause = this.onPause.bind(this);\n this.onPlaying = this.onPlaying.bind(this);\n this.onAbort = this.onAbort.bind(this);\n this.onEnded = this.onEnded.bind(this);\n this.onDispose = this.onDispose.bind(this);\n this.onSeeking = this.onSeeking.bind(this);\n this.onSeeked = this.onSeeked.bind(this);\n this.onError = this.onError.bind(this);\n this.onWaiting = this.onWaiting.bind(this);\n this.onTimeupdate = this.onTimeupdate.bind(this);\n this.OnAdsAllpodsCompleted = this.OnAdsAllpodsCompleted.bind(this);\n this.onStreamManager = this.onStreamManager.bind(this);\n this.onCanPlayThrough = this.onCanPlayThrough.bind(this);\n\n this.player.on('loadstart', this.onDownload);\n this.player.on('loadeddata', this.onDownload);\n this.player.on('loadedmetadata', this.onDownload);\n this.player.on('adsready', this.onAdsready);\n this.player.on('adstart', this.onAdStart);\n this.player.on('adend', this.onAdEnd);\n this.player.on('play', this.onPlay);\n this.player.on('pause', this.onPause);\n this.player.on('playing', this.onPlaying);\n this.player.on('abort', this.onAbort);\n this.player.on('ended', this.onEnded);\n this.player.on('dispose', this.onDispose);\n this.player.on('seeking', this.onSeeking);\n this.player.on('seeked', this.onSeeked);\n this.player.on('error', this.onError);\n this.player.on('waiting', this.onWaiting);\n this.player.on('timeupdate', this.onTimeupdate);\n this.player.on('ads-allpods-completed', this.OnAdsAllpodsCompleted);\n this.player.on('stream-manager', this.onStreamManager);\n this.player.on('canplaythrough', this.onCanPlayThrough);\n }\n\n unregisterListeners() {\n this.player.off('loadstart', this.onDownload);\n this.player.off('loadeddata', this.onDownload);\n this.player.off('loadedmetadata', this.onDownload);\n this.player.off('adsready', this.onAdsready);\n this.player.off('adstart', this.onAdStart);\n this.player.off('adend', this.onAdEnd);\n this.player.off('play', this.onPlay);\n this.player.off('pause', this.onPause);\n this.player.off('playing', this.onPlaying);\n this.player.off('abort', this.onAbort);\n this.player.off('ended', this.onEnded);\n this.player.off('dispose', this.onDispose);\n this.player.off('seeking', this.onSeeking);\n this.player.off('seeked', this.onSeeked);\n this.player.off('error', this.onError);\n this.player.off('waiting', this.onWaiting);\n this.player.off('timeupdate', this.onTimeupdate);\n this.player.off('ads-allpods-completed', this.OnAdsAllpodsCompleted);\n this.player.off('stream-manager', this.onStreamManager);\n this.player.off('canplaythrough', this.onCanPlayThrough);\n }\n\n onDownload(e) {\n this.sendDownload({ state: e.type });\n\n if (\n this.adTracking === AD_TRACKING.SSAI.MT &&\n !this.adsTracker &&\n e.type === 'loadstart'\n ) {\n nrvideo.Log.debug('VideojsTracker: Creating MediaTailorAdsTracker');\n this.setAdsTracker(new MediaTailorAdsTracker(this.player, this.options));\n // MediaTailor SSAI starts with content, not ads (unlike client-side frameworks)\n this.adsTracker.setIsAd(false);\n }\n }\n\n // DAI methods\n onStreamManager(event) {\n if (\n this.adTracking === AD_TRACKING.SSAI.DAI &&\n !this.adsTracker &&\n event.StreamManager\n ) {\n const daiTracker = new DaiAdsTracker(this.player);\n daiTracker.setStreamManager(event.StreamManager);\n this.setAdsTracker(daiTracker);\n }\n }\n // DAI methods end\n\n onAdsready() {\n // SSAI platforms never fire adsready — skip when an SSAI type is explicitly set.\n if (Object.values(AD_TRACKING.SSAI).includes(this.adTracking)) return;\n\n // config.ad.type is not set — warn and fall back to auto-detection.\n if (!this.adTracking) {\n nrvideo.Log.warn(\n 'VideojsTracker: adsready fired but config.ad.type is not set — ' +\n 'attempting CSAI auto-detection for backward compatibility.'\n );\n }\n\n if (!this.adsTracker) {\n if (BrightcoveImaAdsTracker.isUsing(this.player)) {\n nrvideo.Log.debug('VideojsTracker: auto-detected BrightcoveImaAdsTracker');\n this.setAdsTracker(new BrightcoveImaAdsTracker(this.player));\n } else if (ImaAdsTracker.isUsing(this.player)) {\n nrvideo.Log.debug('VideojsTracker: auto-detected ImaAdsTracker');\n this.setAdsTracker(new ImaAdsTracker(this.player));\n } else if (FreewheelAdsTracker.isUsing(this.player)) {\n nrvideo.Log.debug('VideojsTracker: auto-detected FreewheelAdsTracker');\n this.setAdsTracker(new FreewheelAdsTracker(this.player));\n } else {\n nrvideo.Log.debug('VideojsTracker: no specific CSAI framework detected, using generic VideojsAdsTracker');\n this.setAdsTracker(new VideojsAdsTracker(this.player));\n }\n }\n }\n\n onAdStart() {\n this.currentAdPlaying = true;\n\n /* get the array with all the cue points which will be played */\n if (!this.imaAdCuePoints) {\n this.imaAdCuePoints = this.player?.ima?.getAdsManager().getCuePoints();\n }\n }\n onAdEnd() {\n if (this.isContentEnd) {\n this.sendEnd();\n }\n }\n\n OnAdsAllpodsCompleted() {\n this.onEnded.bind(this);\n this.FreewheelAdsCompleted = true;\n }\n\n /**\n * Check if ads tracker is currently in ad mode\n * @returns {boolean} True if ads are playing\n */\n isAdsTrackerActive() {\n // For CSAI: videojs-contrib-ads manages ad state exclusively\n if (this.player.ads) {\n return this.player.ads.state === 'ads-playback';\n }\n // For SSAI (no player.ads): check tracker's isAd flag (manually toggled)\n return this.adsTracker && this.adsTracker.isAd && this.adsTracker.isAd();\n }\n\n onPlay() {\n this.sendRequest();\n }\n\n onPause() {\n // Don't send CONTENT_PAUSE if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n // Don't send CONTENT_PAUSE if video has ended (CONTENT_END will be sent instead)\n if (this.player.ended()) {\n return;\n }\n this.sendPause();\n }\n\n onCanPlayThrough() {\n // Don't send CONTENT_BUFFER_END if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n // Send BUFFER_END when buffer fills, even if paused\n // This ensures accurate buffer duration metrics when user pauses during buffering\n this.sendBufferEnd();\n }\n\n onPlaying() {\n // Don't send CONTENT_RESUME if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendResume();\n this.sendBufferEnd();\n }\n\n onAbort() {\n this.sendEnd();\n }\n\n onEnded() {\n if (this.adsTracker) {\n this.isContentEnd = true;\n if (this.imaAdCuePoints && !this.imaAdCuePoints.includes(-1)) {\n this.sendEnd();\n }\n } else {\n this.sendEnd();\n }\n }\n\n onDispose() {\n this.sendEnd();\n }\n\n onSeeking() {\n // Don't send CONTENT_SEEK_START if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendSeekStart();\n }\n\n onSeeked() {\n // Don't send CONTENT_SEEK_END if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendSeekEnd();\n }\n\n onError() {\n const error = this.player.error();\n\n const errorCode = error.code;\n const errorMessage = error.message;\n if (this.player.error && this.player.error()) {\n this.sendError({ errorCode, errorMessage });\n }\n }\n\n onWaiting(e) {\n // Don't send CONTENT_BUFFER_START if ads are playing (ads tracker handles it)\n if (this.isAdsTrackerActive()) {\n return;\n }\n this.sendBufferStart();\n }\n\n onTimeupdate(e) {\n if (this.getPlayhead() > 0.1) {\n this.sendStart();\n }\n }\n}\n\n// Attach AD_TRACKING and Log as static properties so UMD callers can use\n// VideojsTracker.AD_TRACKING and VideojsTracker.Log without importing named exports.\nVideojsTracker.AD_TRACKING = AD_TRACKING;\nVideojsTracker.Log = nrvideo.Log;\n\n// Static members\nexport {\n HlsJsTech,\n ContribHlsTech,\n ShakaTech,\n VideojsAdsTracker,\n ImaAdsTracker,\n BrightcoveImaAdsTracker,\n FreewheelAdsTracker,\n DaiAdsTracker,\n MediaTailorAdsTracker,\n};\n","/**\n * MediaTailor Constants\n * Contains all regex patterns, config defaults, and constant values for AWS MediaTailor ad tracking\n */\n\n// HLS manifest regex patterns used while scanning raw MediaTailor playlists.\n// Example inputs:\n// - #EXT-X-CUE-OUT:DURATION=29.988\n// - #EXT-X-DISCONTINUITY\n// - #EXT-X-MAP:URI=\"https://segments.mediatailor.../init.mp4\"\nexport const REGEX_CUE_OUT = /#EXT-X-CUE-OUT:DURATION=([\\d.]+)/; // Captures the numeric ad break duration from a MediaTailor CUE-OUT tag so the tracker can seed an ad break before CUE-IN arrives\nexport const REGEX_DISCONTINUITY = /#EXT-X-DISCONTINUITY/; // Detects HLS discontinuity boundaries, which MediaTailor playlists can use around ad/content transitions and pod boundaries\nexport const REGEX_MAP = /#EXT-X-MAP:URI=\"([^\"]+)\"/; // Captures the MAP URI from fMP4 playlists so MAP changes can be used to split one avail into multiple ad pods\n\n// MediaTailor URL and manifest regex patterns.\n// These are used to derive the tracking endpoint and to read manifest refresh metadata\n// directly from HLS and DASH payloads.\nexport const REGEX_SESSION_ID = /sessionId=([^&]+)/; // Captures the session id from a sessionized playback URL query string such as ?aws.sessionId=abc123 so we can construct the MediaTailor tracking endpoint\nexport const REGEX_TRACKING_PATH_SEGMENT = /\\/v1\\/(master|session|dash)\\//; // Matches the playback path prefix in URLs like /v1/master/... or /v1/dash/... so it can be rewritten to /v1/tracking/...\nexport const REGEX_MANIFEST_FILE_SUFFIX = /\\/[^/]*\\.(m3u8|mpd).*$/; // Matches the trailing manifest filename and any query string, such as /master.m3u8?... or /index.mpd?..., so it can be replaced with /{sessionId}\nexport const REGEX_HLS_TARGET_DURATION = /#EXT-X-TARGETDURATION:(\\d+)/; // Captures the HLS target duration value from a line like #EXT-X-TARGETDURATION:6, which we use as the live polling cadence when available\nexport const REGEX_DASH_MINIMUM_UPDATE_PERIOD = /minimumUpdatePeriod=\"([^\"]+)\"/; // Captures the DASH MPD minimumUpdatePeriod attribute, for example minimumUpdatePeriod=\"PT5S\", so live polling follows the manifest's declared refresh rate\nexport const REGEX_ISO_8601_DURATION = /PT(?:(\\d+)H)?(?:(\\d+)M)?(?:([\\d.]+)S)?/; // Parses ISO 8601 duration values like PT5S, PT1M14S, or PT1H2M3.5S into hour, minute, and second groups for DASH timing calculations\n\n// MediaTailor string markers used across tracker selection and manifest parsing\nexport const HLS_MANIFEST_EXTENSION = '.m3u8'; // Identifies HLS manifest URLs and child playlist references\nexport const DASH_MANIFEST_EXTENSION = '.mpd'; // Identifies DASH manifest URLs\nexport const MEDIATAILOR_HOST_MARKER = '.mediatailor.'; // Identifies MediaTailor playback URLs when selecting this ads tracker\nexport const MT_HLS_CUE_OUT_TAG = '#EXT-X-CUE-OUT'; // Marks the start of an HLS ad break in MediaTailor manifests\nexport const MT_HLS_CUE_IN_TAG = '#EXT-X-CUE-IN'; // Marks the end of an HLS ad break in MediaTailor manifests\nexport const HLS_SEGMENT_DURATION_TAG = '#EXTINF:'; // Carries HLS segment duration values used to advance manifest time\nexport const HLS_TAG_PREFIX = '#'; // Distinguishes HLS tags from playlist URI lines in manifest scans\nexport const SCTE35_SCHEME_MARKER = 'scte35'; // Identifies SCTE-35 DASH signaling in schemeIdUri values\nexport const DASH_SCTE35_EVENT_STREAM_SELECTOR =\n 'EventStream[schemeIdUri*=\"scte35\"], EventStream[schemeIdUri*=\"SCTE35\"]'; // Selects DASH EventStream nodes that carry SCTE-35 ad markers\nexport const HLS_MIME_TYPE = 'application/vnd.apple.mpegurl'; // MIME type used to detect Safari/native HLS playback support\n\n// MediaTailor URL Patterns\nexport const MT_SEGMENT_PATTERN = 'segments.mediatailor'; // Identifies MediaTailor ad segments (AWS default hostname)\nexport const MT_DEFAULT_AD_SEGMENT_PATH = '/tm/'; // Default ad-segment path per AWS CDN integration guide (custom-CDN setups)\n\nexport const TRACKING_API_TIMEOUT_MS = 5000; // Keep tracking metadata requests within the guide's 5s end-to-end budget\nexport const DEFAULT_LIVE_POLL_INTERVAL_MS = 5000; // Temporary fallback until manifest metadata provides cadence\n// Timing Thresholds\nexport const MIN_AD_DURATION = 0.5; // Minimum ad duration in seconds (filter false positives)\nexport const AD_TIMING_TOLERANCE = 0.5; // Tolerance for matching ad times in seconds\nexport const POST_AD_PAUSE_THRESHOLD = 500; // Ignore pause events within 500ms after ad break (avoids false CONTENT_PAUSE)\n\n// Stream Types\nexport const STREAM_TYPE = {\n VOD: 'vod', // Video on Demand\n LIVE: 'live', // Live streaming\n};\n\n// Manifest Types\nexport const MANIFEST_TYPE = {\n HLS: 'hls', // HTTP Live Streaming (.m3u8)\n DASH: 'dash', // Dynamic Adaptive Streaming over HTTP (.mpd)\n};\n\n// Ad Position Types (for VOD only)\nexport const AD_POSITION = {\n PRE_ROLL: 'pre', // First ad break\n MID_ROLL: 'mid', // Middle ad break\n POST_ROLL: 'post', // Last ad break\n};\n\n// Ad Detection Sources\nexport const AD_SOURCE = {\n MANIFEST_CUE: 'manifest-cue', // Detected from CUE-OUT/CUE-IN tags (HLS) or EventStream (DASH)\n VHS_DISCONTINUITY: 'vhs-discontinuity', // Detected from VHS discontinuityStarts\n TRACKING_API: 'tracking-api', // Added from tracking API response\n MANIFEST_AND_TRACKING: 'manifest+tracking', // Enriched by both sources\n DASH_EMSG: 'dash-emsg', // Detected from DASH emsg events (Shaka Player)\n DASH_EVENT_STREAM: 'dash-event-stream', // Detected from DASH EventStream (dash.js)\n};\n\n// Quartile Percentages\nexport const QUARTILES = {\n Q1: 0.25, // 25% progress\n Q2: 0.5, // 50% progress\n Q3: 0.75, // 75% progress\n};\n","export default class ShakaTech {\n constructor(tech) {\n this.tech = tech.shakaPlayer;\n this.player = tech.el().player; // Store player reference for playback bitrate calculation\n }\n\n getSrc(tech) {\n try {\n return this.tech.getManifestUri();\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate(tech) {\n try {\n const bitrate = this.tech.getStats().streamBandwidth;\n return bitrate ? Math.round(bitrate) : null;\n } catch (err) {}\n return null;\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all variants\n const tracks = this.tech.getVariantTracks();\n if (tracks && tracks.length > 0) {\n return Math.round(Math.max(\n ...tracks.map((t) => t.videoBandwidth + (t.audioBandwidth || 0)),\n ));\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth(tech) {\n try {\n var tracks = this.tech.getVariantTracks();\n for (var i in tracks) {\n var track = tracks[i];\n if (track.active && track.type === 'video') {\n return track.width;\n }\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight(tech) {\n try {\n var tracks = this.tech.getVariantTracks();\n for (var i in tracks) {\n var track = tracks[i];\n if (track.active && track.type === 'video') {\n return track.height;\n }\n }\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Calculate playback bitrate (actual content consumption rate)\n return this.getContentBitratePlayback();\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current variant's bitrate from manifest (streamBandwidth)\n var stats = this.tech.getStats();\n if (stats && stats.streamBandwidth && stats.streamBandwidth > 0) {\n return Math.round(stats.streamBandwidth);\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n try {\n // Use estimatedBandwidth for measured bitrate\n var stats = this.tech.getStats();\n if (stats && stats.estimatedBandwidth > 0) {\n return Math.round(stats.estimatedBandwidth);\n }\n } catch (err) {}\n return null;\n }\n\n getNetworkDownloadBitrate() {\n try {\n // Shaka: use estimatedBandwidth for download bitrate (no separate property)\n var stats = this.tech.getStats();\n if (stats && stats.estimatedBandwidth > 0) {\n return Math.round(stats.estimatedBandwidth);\n }\n } catch (err) {}\n return null;\n }\n}\n\nShakaTech.isUsing = function (tech) {\n return !!tech.shakaPlayer;\n};\n","export default class ContribHlsTech {\n constructor(tech) {\n this.tech = tech.vhs;\n this.player = tech.el().player; // Store player reference for playback bitrate calculation\n }\n\n getRenditionName() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes) return media.attributes.NAME;\n } catch (err) {}\n return null;\n }\n\n getRenditionBitrate() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes) return Math.round(media.attributes.BANDWIDTH);\n } catch (err) {}\n return null;\n }\n\n getRenditionWidth() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes && media.attributes.RESOLUTION) {\n return media.attributes.RESOLUTION.width;\n }\n } catch (err) {}\n return null;\n }\n\n getRenditionHeight() {\n try {\n var media = this.tech.playlists.media();\n if (media && media.attributes && media.attributes.RESOLUTION) {\n return media.attributes.RESOLUTION.height;\n }\n } catch (err) {}\n return null;\n }\n\n getBitrate() {\n // Calculate playback bitrate (actual content consumption rate)\n return this.getContentBitratePlayback();\n }\n\n getManifestBitrate() {\n try {\n // Return highest available bitrate from all renditions\n const playlists = this.tech.playlists.master.playlists;\n if (playlists && playlists.length > 0) {\n return Math.round(Math.max(...playlists.map((p) => p.attributes.BANDWIDTH)));\n }\n } catch (err) {}\n return null;\n }\n\n getSegmentDownloadBitrate() {\n if (\n this.tech.stats?.bandwidth !== undefined &&\n this.tech.stats.bandwidth > 0\n ) {\n return Math.round(this.tech.stats.bandwidth);\n }\n return null;\n }\n\n getNetworkDownloadBitrate() {\n if (this.tech.throughput !== undefined && this.tech.throughput > 0) {\n return Math.round(this.tech.throughput);\n }\n return null;\n }\n\n getContentBitratePlayback() {\n try {\n // Get the current active rendition's bitrate from manifest\n const media = this.tech.playlists.media();\n if (media && media.attributes) {\n // Use AVERAGE-BANDWIDTH if available, fallback to BANDWIDTH\n const bitrate = media.attributes['AVERAGE-BANDWIDTH'] ||\n media.attributes.BANDWIDTH ||\n null;\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n } catch (err) {}\n return null;\n }\n}\n\nContribHlsTech.isUsing = function (tech) {\n return !!tech.vhs;\n};\n","import nrvideo from '@newrelic/video-core'\nimport pkg from '../../package.json'\nimport ContribHlsTech from '../techs/contrib-hls';\nimport HlsJsTech from '../techs/hls-js';\nimport ShakaTech from '../techs/shaka';\n\nexport default class VideojsAdsTracker extends nrvideo.VideoTracker {\n\n getTech() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n \n if (tech) {\n if (ContribHlsTech.isUsing(tech)) {\n return new ContribHlsTech(tech);\n } else if (HlsJsTech.isUsing(tech)) {\n return new HlsJsTech(tech);\n } else if (ShakaTech.isUsing(tech)) {\n return new ShakaTech(tech);\n }\n }\n }\n \n getTrackerName () {\n return 'videojs-ads'\n }\n\n getTrackerVersion () {\n return pkg.version\n }\n\n isMuted () {\n return this.player.muted()\n }\n\n getRenditionHeight () {\n return null\n }\n\n getRenditionWidth () {\n return null\n }\n\n getPlayerName () {\n return 'videojs-ads'\n }\n\n getPlayerVersion () {\n return this.player.ads.VERSION\n }\n\n registerListeners () {\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n 'ads-request',\n 'ads-load',\n 'adstart',\n 'adend',\n 'adskip',\n 'adserror',\n 'ads-click',\n 'ads-pod-started',\n 'ads-pod-ended',\n 'ads-first-quartile',\n 'ads-midpoint',\n 'ads-third-quartile',\n 'ads-pause',\n 'ads-play',\n 'adtimeout'\n ])\n\n // Register listeners\n this.player.on('ads-request', this.onAdrequest.bind(this))\n this.player.on('ads-load', this.onAdload.bind(this))\n this.player.on('adstart', this.onAdstart.bind(this))\n this.player.on('adend', this.onAdend.bind(this))\n this.player.on('adskip', this.onAdskip.bind(this))\n this.player.on('adserror', this.onAdserror.bind(this))\n this.player.on('ads-click', this.onAdsClick.bind(this))\n this.player.on('ads-pod-started', this.onPodStart.bind(this))\n this.player.on('ads-pod-ended', this.onPodEnd.bind(this))\n this.player.on('ads-first-quartile', this.onFirstQuartile.bind(this))\n this.player.on('ads-midpoint', this.onMidpoint.bind(this))\n this.player.on('ads-third-quartile', this.onThirdQuartile.bind(this))\n this.player.on('ads-pause', this.onAdspause.bind(this))\n this.player.on('ads-play', this.onAdsplay.bind(this))\n }\n\n unregisterListeners () {\n // unregister listeners\n this.player.off('ads-request', this.onAdrequest)\n this.player.off('ads-load', this.onAdload)\n this.player.off('adstart', this.onAdstart)\n this.player.off('adend', this.onAdend)\n this.player.off('adskip', this.onAdskip)\n this.player.off('adserror', this.onAdserror)\n this.player.off('ads-click', this.onAdsClick)\n this.player.off('ads-pod-started', this.onPodStart)\n this.player.off('ads-pod-ended', this.onPodEnd)\n this.player.off('ads-first-quartile', this.onFirstQuartile)\n this.player.off('ads-midpoint', this.onMidpoint)\n this.player.off('ads-third-quartile', this.onThirdQuartile)\n this.player.off('ads-pause', this.onAdspause)\n this.player.off('ads-play', this.onAdsplay)\n }\n\n onAdrequest (e) {\n this.sendRequest()\n this.sendDownload({ state: 'ads-request' })\n }\n\n onAdload (e) {\n this.sendDownload({ state: 'ads-load' })\n }\n\n onAdstart (e) {\n this.sendRequest()\n this.sendStart()\n }\n\n onAdend (e) {\n this.sendEnd()\n }\n\n onAdskip (e) {\n this.sendEnd({ skipped: true })\n }\n\n onAdserror (e) {\n this.sendError()\n }\n\n onAdsClick (e) {\n this.sendAdClick({ url: 'unknown' })\n }\n\n onPodStart (e) {\n this.sendAdBreakStart()\n }\n\n onPodEnd (e) {\n this.sendAdBreakEnd()\n }\n\n onFirstQuartile () {\n this.sendAdQuartile({ quartile: 1 })\n }\n\n onMidpoint () {\n this.sendAdQuartile({ quartile: 2 })\n }\n\n onThirdQuartile () {\n this.sendAdQuartile({ quartile: 3 })\n }\n\n onAdspause () {\n this.sendPause()\n }\n\n onAdsplay () {\n this.sendResume()\n }\n}\n","/*! For license information please see index.js.LICENSE.txt */\nvar t={487(t,e,i){i.r(e),i.d(e,{videoAnalyticsHarvester:()=>h});var s=i(374),r=i(431),a=i(51),n=i(144),o=i(302);const h=new class{constructor(){this.isInitialized=!1,this.harvestScheduler=null,this.eventBuffer=null}initialize(){if(this.isInitialized)n.A.warn(\"Video analytics agent already initialized\");else try{this.eventBuffer=new r.t,this.harvestScheduler=new s.n(this.eventBuffer),this.harvestScheduler.startScheduler(),this.isInitialized=!0,n.A.notice(\"Video analytics agent initialized successfully\")}catch(t){n.A.error(\"Failed to initialize video analytics agent:\",t.message)}}addEvent(t){this.isInitialized||(n.A.warn(\"Video analytics agent not initialized, initializing now\"),this.initialize());try{return t.actionName&&t.actionName===o.A.Events.QOE_AGGREGATE?t.viewId?this.eventBuffer.addOrReplaceByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,t.viewId,t):this.eventBuffer.addOrReplaceByActionName(o.A.Events.QOE_AGGREGATE,t):this.eventBuffer.add(t)}catch(t){return n.A.error(\"Failed to add event to harvesting system:\",t.message),!1}}setHarvestInterval(t){this.isInitialized||this.initialize(),this.harvestScheduler.updateHarvestInterval(t)}forceNextQoeCycle(){this.harvestScheduler&&(this.harvestScheduler.forceNextQoeCycle=!0)}setBeforeDrainCallback(t){this.harvestScheduler&&(this.harvestScheduler.beforeDrainCallback=t)}refreshQoeKpis(t,e){if(!this.eventBuffer||!t)return;const i=e?this.eventBuffer.findByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,e):this.eventBuffer.findByActionName(o.A.Events.QOE_AGGREGATE);if(i){const s={...i};for(const e of a.A.QOE_KPI_KEYS)e in t&&(s[e]=t[e]);e?this.eventBuffer.addOrReplaceByActionNameAndViewId(o.A.Events.QOE_AGGREGATE,e,s):this.eventBuffer.addOrReplaceByActionName(o.A.Events.QOE_AGGREGATE,s)}}}},455(t,e,i){i.d(e,{A:()=>r});class s{constructor(){this.reset()}reset(){this.startTime=0,this.stopTime=0,this.accumulator=0,this.offset=0}getDeltaTime(){return this.startTime?this.offset+((new Date).getTime()-this.startTime):null}start(){this.startTime=(new Date).getTime(),this.stopTime=0}stop(){return this.stopTime=(new Date).getTime(),this.startTime<this.stopTime&&(this.accumulator+=this.stopTime-this.startTime),this.getDeltaTime()}getDuration(){return this.stopTime?this.accumulator+this.offset:this.accumulator+(this.getDeltaTime()??0)}clone(){var t=new s;return t.startTime=this.startTime,t.stopTime=this.stopTime,t.offset=this.offset,t.accumulator=this.accumulator,t}}const r=s},51(t,e,i){i.d(e,{A:()=>r});class s{}s.AdPositions={PRE:\"pre\",MID:\"mid\",POST:\"post\"},s.COLLECTOR={US:[\"bam.nr-data.net\",\"bam-cell.nr-data.net\"],EU:\"bam.eu01.nr-data.net\",Staging:\"staging-bam-cell.nr-data.net\",GOV:\"gov-bam.nr-data.net\"},s.VALID_EVENT_TYPES=[\"VideoAction\",\"VideoAdAction\",\"VideoErrorAction\",\"VideoCustomAction\"],s.MAX_PAYLOAD_SIZE=1048576,s.MAX_BEACON_SIZE=61440,s.MAX_EVENTS_PER_BATCH=1e3,s.INTERVAL=1e4,s.QOE_KPI_KEYS=[\"startupTime\",\"peakBitrate\",\"averageBitrate\",\"totalPlaytime\",\"totalRebufferingTime\",\"rebufferingRatio\",\"hadStartupError\",\"hadPlaybackError\",\"numberOfErrors\"],s.QOE_AGGREGATE_KEYS=[\"coreVersion\",\"instrumentation.name\",\"instrumentation.provider\",\"instrumentation.version\",\"isBackgroundEvent\",\"playerName\",\"playerVersion\",\"src\",\"viewId\",\"viewSession\",\"contentIsAutoplayed\",\"contentIsMuted\",\"contentRenditionHeight\",\"contentRenditionWidth\",\"contentSrc\",\"numberOfVideos\",\"pageUrl\",\"trackerName\",\"trackerVersion\",\"contentDuration\",\"contentPlayrate\",\"contentPlayhead\",\"contentPreload\",\"elapsedTime\",\"contentTitle\",\"contentId\",\"contentIsLive\",\"deviceType\",\"deviceGroup\",\"deviceManufacturer\",\"deviceModel\",\"deviceName\",\"deviceSize\",\"deviceUuid\",\"contentRenditionName\",\"contentIsFullscreen\",\"contentCdn\",\"contentFps\",\"asnOrganization\",\"asnLongitude\",\"asnLatitude\",\"asn\",\"timeSinceRequested\",\"timeSinceStarted\"];const r=s},568(t,e,i){i.d(e,{A:()=>s});const s=class{on(t,e){if(this._listeners=this._listeners||{},\"function\"==typeof e)return this._listeners[t]=this._listeners[t]||[],this._listeners[t].push(e),this}off(t,e){if(this._listeners=this._listeners||{},this._listeners[t]){var i=this._listeners[t].indexOf(e);-1!==i&&this._listeners[t].splice(i,1)}return this}emit(t,e,i){return this._listeners=this._listeners||{},i=i||{},Array.isArray(this._listeners[e])&&this._listeners[e].forEach(s=>{s.call(this,{eventType:t,type:e,data:i,target:this})}),Array.isArray(this._listeners[\"*\"])&&this._listeners[\"*\"].forEach(s=>{s.call(this,{eventType:t,type:e,data:i,target:this})}),this}}},431(t,e,i){i.d(e,{t:()=>h});var s=i(144),r=i(51),a=i(347);const{MAX_PAYLOAD_SIZE:n,MAX_EVENTS_PER_BATCH:o}=r.A;class h{constructor(){this.buffer=[],this.maxPayloadSize=n,this.maxEventsPerBatch=o,this.currentPayloadSize=0,this.totalEvents=0,this.smartHarvestPayloadThreshold=Math.floor(.6*this.maxPayloadSize),this.overflowPayloadThreshold=Math.floor(.9*this.maxPayloadSize),this.smartHarvestEventThreshold=Math.floor(.6*this.maxEventsPerBatch),this.overflowEventThreshold=Math.floor(.9*this.maxEventsPerBatch),this.onSmartHarvestTrigger=null}addOrReplaceByActionName(t,e){const i=this.buffer.findIndex(e=>e.actionName===t);try{return-1===i?this.add(e):this.add(e,i),!0}catch(t){return s.A.error(\"Failed to set or replace the event to buffer:\",t.message),!1}}addOrReplaceByActionNameAndViewId(t,e,i){const r=this.buffer.findIndex(i=>i.actionName===t&&i.viewId===e);try{return-1===r?this.add(i):this.add(i,r),!0}catch(t){return s.A.error(\"Failed to set or replace the event to buffer:\",t.message),!1}}findByActionNameAndViewId(t,e){return this.buffer.find(i=>i.actionName===t&&i.viewId===e)||null}findByActionName(t){return this.buffer.find(e=>e.actionName===t)||null}add(t,e){try{const i=(0,a.Q3)(t),s=this.currentPayloadSize+i>=this.maxPayloadSize,r=this.totalEvents+1>=this.maxEventsPerBatch;if((s||r)&&this.makeRoom(i),null!=e&&e>-1){const s=(0,a.Q3)(this.buffer[e]);this.buffer[e]=t,this.currentPayloadSize+=i-s}else this.buffer.push(t),this.totalEvents++,this.currentPayloadSize+=i;return this.checkSmartHarvestTrigger(),!0}catch(t){return s.A.error(\"Failed to add event to buffer:\",t.message),!1}}checkSmartHarvestTrigger(){const t=this.currentPayloadSize/this.maxPayloadSize,e=this.totalEvents/this.maxEventsPerBatch,i=this.currentPayloadSize>=this.overflowPayloadThreshold,r=this.totalEvents>=this.overflowEventThreshold;if(i||r){const r=i?`payload ${this.currentPayloadSize}/${this.maxPayloadSize} bytes (${Math.round(100*t)}%)`:`events ${this.totalEvents}/${this.maxEventsPerBatch} (${Math.round(100*e)}%)`;s.A.warn(`OVERFLOW PREVENTION: ${r} - Emergency harvest triggered`),this.onSmartHarvestTrigger&&\"function\"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger(\"overflow\",90)}else{const t=this.currentPayloadSize>=this.smartHarvestPayloadThreshold,e=this.totalEvents>=this.smartHarvestEventThreshold;(t||e)&&this.onSmartHarvestTrigger&&\"function\"==typeof this.onSmartHarvestTrigger&&this.onSmartHarvestTrigger(\"smart\",60)}}setSmartHarvestCallback(t){this.onSmartHarvestTrigger=t}drain(){try{const t=this.buffer.splice(0);return this.totalEvents=0,this.currentPayloadSize=0,t}catch(t){return s.A.error(\"Failed to drain events from buffer:\",t.message),[]}}isEmpty(){return 0===this.totalEvents}size(){return this.totalEvents}clear(){this.buffer=[],this.totalEvents=0}makeRoom(t){if(t>this.maxPayloadSize)s.A.error(\"Event dropped: Event size exceeds maximum payload size.\");else for(;(this.totalEvents>=this.maxEventsPerBatch||this.currentPayloadSize+t>=this.maxPayloadSize)&&this.buffer.length>0;){const t=this.buffer.shift(),e=(0,a.Q3)(t);this.totalEvents--,this.currentPayloadSize-=e,s.A.warn(\"Event buffer full, oldest event removed.\")}}}},374(t,e,i){i.d(e,{n:()=>l});var s=i(431),r=i(413),a=i(481),n=i(347),o=i(51),h=i(302),d=i(144);class l{constructor(t){this.eventBuffer=t,this.retryQueueHandler=new r.u,this.httpClient=new a.X,this.fallBackUrl=\"\",this.retryCount=0,this.eventBuffer instanceof s.t&&this.eventBuffer.setSmartHarvestCallback((t,e)=>this.triggerSmartHarvest(t,e)),this.isStarted=!1,this.currentTimerId=null,this.harvestCycle=o.A.INTERVAL,this.isHarvesting=!1,this.qoeCycleCount=1,this.forceNextQoeCycle=!1,this.beforeDrainCallback=null,this._lastSentQoeKpis={},this.setupPageLifecycleHandlers()}startScheduler(){this.isStarted?d.A.warn(\"Harvest scheduler is already started\"):(this.isStarted=!0,d.A.notice(\"Starting harvest scheduler\",{harvestCycle:this.harvestCycle,eventBufferSize:this.eventBuffer?this.eventBuffer.size():0}),this.scheduleNextHarvest())}stopScheduler(){this.isStarted&&(this.isStarted=!1,this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),d.A.notice(\"Harvest scheduler stopped\"))}async triggerSmartHarvest(t,e){if(d.A.notice(`${t} harvest triggered at ${e}% threshold`,{type:t,threshold:e}),this.eventBuffer&&!this.eventBuffer.isEmpty()){this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null);try{await this.triggerHarvest({})}catch(e){d.A.error(`${t} harvest failed:`,e.message)}finally{this.isStarted&&this.scheduleNextHarvest()}}}scheduleNextHarvest(){if(!this.isStarted)return;const t=this.harvestCycle;this.currentTimerId=setTimeout(()=>this.onHarvestInterval(),t)}async onHarvestInterval(){try{const t=this.eventBuffer&&!this.eventBuffer.isEmpty(),e=this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0;if(!t&&!e)return;await this.triggerHarvest({})}catch(t){d.A.error(\"Error during scheduled harvest:\",t.message)}finally{this.scheduleNextHarvest()}}async triggerHarvest(t={}){if(this.isHarvesting)return{success:!1,reason:\"harvest_in_progress\"};this.isHarvesting=!0;try{let e=this.drainEvents(t);if(t.isFinalHarvest){const t=o.A.MAX_BEACON_SIZE;(0,n.Q3)(e)>t&&(e=this.trimEventsToFit(e,t))}const i=await this.sendChunk(e,t,!0);return{success:i.success,totalChunks:1,results:[i]}}catch(t){return d.A.error(\"Harvest cycle failed:\",t.message),this.handleHarvestFailure(t),{success:!1,error:t.message,consecutiveFailures:this.consecutiveFailures}}finally{this.isHarvesting=!1}}trimEventsToFit(t,e){if(0===t.length)return t;const i=[];let s=0;for(let r=t.length-1;r>=0;r--){const a=t[r],o=(0,n.Q3)({ins:[a,...i]});o>e||(i.unshift(a),s=o)}const r=t.length-i.length;if(r>0){const a=t.slice(0,r);d.A.warn(`Discarded ${r} events to fit beacon size limit`,{originalCount:t.length,trimmedCount:i.length,finalSize:s,maxSize:e}),this.retryQueueHandler&&this.retryQueueHandler.addFailedEvents(a)}return i}drainEvents(t={}){const e=window.NRVIDEO?.config?.qoeIntervalFactor??1,i=!!t.isFinalHarvest||this.forceNextQoeCycle,s=(this.qoeCycleCount-1)%e==0||i;if(this.forceNextQoeCycle&&(this.forceNextQoeCycle=!1),this.beforeDrainCallback&&\"function\"==typeof this.beforeDrainCallback)try{this.beforeDrainCallback()}catch(t){d.A.error(\"Before drain callback failed:\",t.message)}const r=this.eventBuffer.drain();let a;if(s)a=r;else{a=[];for(const t of r)t.actionName===h.A.Events.QOE_AGGREGATE?this.eventBuffer.add(t):a.push(t)}this.qoeCycleCount++;for(let t=a.length-1;t>=0;t--){const e=a[t];e.actionName===h.A.Events.QOE_AGGREGATE&&(!i&&this._qoeKpisUnchanged(e)?a.splice(t,1):this._saveQoeKpis(e))}let l=[...a],c=(0,n.Q3)(a);if(this.retryQueueHandler&&this.retryQueueHandler.getQueueSize()>0){const t=o.A.MAX_PAYLOAD_SIZE-c,e=o.A.MAX_EVENTS_PER_BATCH-l.length;if(t>0&&e>0){const i=this.retryQueueHandler.getRetryEventsToFit(t,e);i.length>0&&(l=[...i,...l])}}return l}async sendChunk(t,e,i){const s={url:(0,n.c$)(this.fallBackUrl),payload:{body:{ins:t}},options:{...e,isLastChunk:i}};return new Promise(e=>{this.httpClient.send(s,i=>{i.retry?this.handleRequestFailure(t):(this.retryCount=0,this.fallBackUrl=\"\"),e({success:!i.retry,status:i.status,error:i.error,chunk:t,eventCount:t.length})})})}handleRequestFailure(t){this.retryQueueHandler.addFailedEvents(t),\"US\"===window.NRVIDEO?.info?.region&&(this.retryCount++,this.retryCount>5?(this.retryCount=0,this.fallBackUrl=\"\"):this.retryCount>=2&&(this.fallBackUrl=o.A.COLLECTOR.US[1]))}handleHarvestFailure(t){this.consecutiveFailures++,d.A.warn(\"Harvest failure handled\",{error:t.message,consecutiveFailures:this.consecutiveFailures})}updateHarvestInterval(t){\"number\"!=typeof t&&isNaN(t)?d.A.warn(\"Invalid newInterval provided to updateHarvestInterval\"):t<1e3||t>3e5?d.A.warn(\"newInterval out of bounds (1000-300000), ignoring\"):this.harvestCycle!==t&&(this.harvestCycle=t,d.A.notice(\"Updated harvestCycle:\",this.harvestCycle),this.currentTimerId&&(clearTimeout(this.currentTimerId),this.currentTimerId=null),this.isStarted&&this.scheduleNextHarvest())}setupPageLifecycleHandlers(){let t=!1;const e=()=>{t||(t=!0,this.triggerHarvest({isFinalHarvest:!0,force:!0}))};document.addEventListener(\"visibilitychange\",()=>{document.hidden&&e()}),window.addEventListener(\"pagehide\",()=>{e()}),window.addEventListener(\"beforeunload\",()=>{e()})}_qoeKpisUnchanged(t){const e=this._lastSentQoeKpis[t.viewId];if(!e)return!1;for(const i of o.A.QOE_KPI_KEYS)if(t[i]!==e[i])return!1;return!0}_saveQoeKpis(t){const e={};for(const i of o.A.QOE_KPI_KEYS)e[i]=t[i];this._lastSentQoeKpis[t.viewId]=e}}},144(t,e,i){i.d(e,{A:()=>o});class s{static error(...t){r(t,s.Levels.ERROR,\"darkred\")}static warn(...t){r(t,s.Levels.WARNING,\"darkorange\")}static notice(...t){r([].slice.call(arguments),s.Levels.NOTICE,\"darkcyan\")}static debug(...t){r(t,s.Levels.DEBUG,\"indigo\")}static debugCommonVideoEvents(t,e,i){try{if(s.level<=s.Levels.DEBUG){i=i||function(t){s.debug(\"Event: \"+t.type)};var r=[\"canplay\",\"buffering\",\"waiting\",\"ended\",\"play\",\"playing\",\"pause\",\"resume\",\"error\",\"abort\",\"seek\",\"seeking\",\"seeked\",\"stalled\",\"dispose\",\"loadeddata\",\"loadstart\",\"loadedmetadata\"];e&&(null===e[0]?(e.shift(),r=e):r=r.concat(e));for(var a=0;a<r.length;a++)\"function\"==typeof t?t.call(window,r[a],i):t.on?t.on(r[a],i):t.addEventListener?t.addEventListener(r[a],i):t.addEventHandler?t.addEventHandler(r[a],i):s.warn(\"debugCommonVideoEvents: No common listener function found for \",t)}}catch(t){s.warn(t)}}}function r(t,e,i){e=e||s.Levels.NOTICE,i=i||\"darkcyan\";var r,o,h=s.prefix;s.includeTime&&(h+=\"[\"+(\"0\"+(r=new Date).getDate()).slice(-2)+\":\"+(\"0\"+r.getMinutes()).slice(-2)+\":\"+(\"0\"+r.getSeconds()).slice(-2)+\".\"+(\"00\"+r.getMilliseconds()).slice(-3)+\"] \"),h+=function(t){return n[t]}(e)+\":\",s.level<=e&&e!==s.Levels.SILENT&&(!s.colorful||\"undefined\"!=typeof document&&document.documentMode?a(t,h):(o=e===s.Levels.ERROR&&console.error?console.error:e===s.Levels.WARNING&&console.warn?console.warn:e===s.Levels.DEBUG&&console.debug&&null==window.cast?console.debug:console.log,h=\"%c\"+h,t.splice(0,0,h,\"color: \"+i),o.apply(console,t)))}function a(t,e){if(t instanceof Array)for(var i in t)a(t[i],e);else\"string\"==typeof t?console.log(e+\" \"+t):(console.log(e+\"↵\"),console.log(t))}s.Levels={SILENT:5,ERROR:4,WARNING:3,NOTICE:2,DEBUG:1,ALL:0},s.level=s.Levels.ERROR,s.colorful=!0,s.includeTime=!0,s.prefix=\"[nrvideo]\";const n={4:\"e\",3:\"w\",2:\"n\",1:\"d\"};!function(){if(\"undefined\"!=typeof window&&window.location&&window.location.search){var t=/\\?.*&*nrvideo-debug=(.+)/i.exec(window.location.search);null!==t&&(\"true\"===t[1]?s.level=s.Levels.ALL:s.level=t[1]),null!==/\\?.*&*nrvideo-colors=false/i.exec(window.location.search)&&(s.colorful=!1)}}();const o=s},481(t,e,i){i.d(e,{X:()=>a});var s=i(347),r=i(144);class a{async send(t,e){const{url:i,payload:s,options:a={}}=t;try{if(!i||!s)throw new Error(\"URL and payload are required\");const t={url:i,payload:s,options:a,callback:e};await this.executeRequest(t)}catch(t){r.A.error(\"Failed to send request:\",t.message),e({retry:!1,status:0,error:t.message})}}async executeRequest(t){const{url:e,payload:i,options:s,callback:a}=t,n=Date.now();try{const a=(o=JSON.stringify(i.body),h=window.NRVIDEO?.config?.obfuscate,h&&0!==h.length?h.reduce((t,e)=>{let i;try{if(e.regex instanceof RegExp){const t=e.regex.flags.includes(\"g\")?e.regex.flags:e.regex.flags+\"g\";i=new RegExp(e.regex.source,t)}else i=new RegExp(e.regex,\"g\")}catch(i){return r.A.warn(\"applyObfuscationRules: invalid regex, skipping rule:\",e.regex,i.message),t}return t.replace(i,e.replacement)},o):o);if(s.isFinalHarvest&&navigator.sendBeacon){const i=await this.sendWithBeacon(e,a),s={success:i,status:i?204:0};return void this.handleRequestComplete(t,s,n)}const d=await this.fetchWithTimeout(e,{method:\"POST\",body:a,headers:{\"Content-Type\":\"application/json\"},keepalive:s.isFinalHarvest},1e4),l={success:d.ok,status:d.status,statusText:d.statusText};this.handleRequestComplete(t,l,n)}catch(e){const i={success:!1,status:0,error:e.message};this.handleRequestComplete(t,i,n)}var o,h}handleRequestComplete(t,e){const{callback:i}=t;i({retry:!e.success&&(0===e.status||(0,s.Sc)(e.status)),status:e.status,error:e.error})}async sendWithBeacon(t,e){try{return navigator.sendBeacon(t,e)}catch(t){return r.A.warn(\"sendBeacon failed, falling back to fetch:\",t.message),!1}}async fetchWithTimeout(t,e,i){const s=new AbortController,r=setTimeout(()=>s.abort(),i);try{const i=await fetch(t,{...e,signal:s.signal});return clearTimeout(r),i}catch(t){if(clearTimeout(r),\"AbortError\"===t.name)throw new Error(`Request timeout after ${i}ms`);throw t}}}},413(t,e,i){i.d(e,{u:()=>h});var s=i(144),r=i(347),a=i(51);const{MAX_PAYLOAD_SIZE:n,MAX_EVENTS_PER_BATCH:o}=a.A;class h{constructor(){this.retryQueue=[],this.maxQueueSize=o,this.maxQueueSizeBytes=n}addFailedEvents(t){try{const e=Array.isArray(t)?t:[t];s.A.notice(`Adding ${e.length} failed events to retry queue`,{queueSizeBefore:this.retryQueue.length});for(const t of e){this.retryQueue.length>=this.maxQueueSize&&this.evictOldestEvent();const e=(0,r.Q3)(t);for(;(0,r.Q3)(this.retryQueue)+e>this.maxQueueSizeBytes;)this.evictOldestEvent();this.retryQueue.push({...t})}}catch(t){s.A.error(\"Failed to add events to retry queue:\",t.message)}}discardEvent(t,e){s.A.warn(\"Discarded event\",{reason:e,eventType:t.eventType})}evictOldestEvent(){if(this.retryQueue.length>0){const t=this.retryQueue.shift();this.discardEvent(t,\"Queue full - evicted oldest\")}}getRetryEventsToFit(t,e){const i=[];let s=0,a=0;for(let n=this.retryQueue.length-1;n>=0;n--){const o=this.retryQueue[n];if(a>=e)break;const h=(0,r.Q3)(o);if(s+h>t)break;i.unshift(o),s+=h,a++,this.retryQueue.splice(n,1)}return i}getQueueSize(){return this.retryQueue.length}clear(){this.retryQueue=[]}}},302(t,e,i){i.d(e,{A:()=>l});var s=i(330),r=i(568),a=i(455),n=i(51),o=i(487),h=i(144);class d extends r.A{constructor(t){super(),this.customData={},this.heartbeat=null,this.parentTracker=null,this._trackerReadyChrono=new a.A,this._trackerReadyChrono.start(),this._actionTable=n.A.ACTION_TABLE,this._actionAdTable=n.A.ACTION_AD_TABLE,t=t||{},this.setOptions(t)}setOptions(t){t&&(t.parentTracker&&(this.parentTracker=t.parentTracker),t.customData&&(this.customData=t.customData),t.heartbeat&&(this.heartbeat=t.heartbeat))}dispose(){this.unregisterListeners()}registerListeners(){}unregisterListeners(){}getHeartbeat(){return this.state._isAd?2e3:this.heartbeat?this.heartbeat:this.parentTracker&&this.parentTracker.heartbeat?this.parentTracker.heartbeat:3e4}startHeartbeat(){this._heartbeatInterval=setInterval(this.sendHeartbeat.bind(this),Math.max(this.getHeartbeat(),2e3))}stopHeartbeat(){this._heartbeatInterval&&clearInterval(this._heartbeatInterval)}sendHeartbeat(t){this.sendVideoAction(d.Events.HEARTBEAT,t)}getAttributes(t,e){(t=t||{}).trackerName=this.getTrackerName(),t.trackerVersion=this.getTrackerVersion(),t.coreVersion=s.rE,t.timeSinceTrackerReady=this._trackerReadyChrono.getDeltaTime();for(let e in this.customData)t[e]=this.customData[e];return null!=document.hidden&&(t.isBackgroundEvent=document.hidden),t}getTrackerVersion(){return s.rE}getTrackerName(){return\"base-tracker\"}sendVideoAction(t,e){this.emit(\"VideoAction\",t,this.getAttributes(e))}sendVideoAdAction(t,e){this.emit(\"VideoAdAction\",t,this.getAttributes(e))}sendVideoErrorAction(t,e){let i=this.isAd()?\"adError\":\"videoError\";this.emit(\"VideoErrorAction\",t,this.getAttributes(e,i))}sendVideoCustomAction(t,e){this.emit(\"VideoCustomAction\",t,this.getAttributes(e,\"customAction\"))}setHarvestInterval(t){if(o.videoAnalyticsHarvester)try{o.videoAnalyticsHarvester.setHarvestInterval(t)}catch(t){return void h.A.error(\"Failed to set harvest interval:\",t.message)}else h.A.error(\"VideoAnalyticsHarvester is not available\")}}d.Events={HEARTBEAT:\"HEARTBEAT\",QOE_AGGREGATE:\"QOE_AGGREGATE\"};const l=d},347(t,e,i){i.d(e,{Q3:()=>n,Sc:()=>o,c$:()=>a,z8:()=>h});var s=i(330),r=i(144);function a(t){try{if(!window.NRVIDEO||!window.NRVIDEO.info)throw new Error(\"NRVIDEO info is not available.\");let{beacon:e,licenseKey:i,applicationID:r}=window.NRVIDEO.info;if(!e||!i)throw new Error(\"Options object provided by New Relic is not correctly initialized\");return r?`https://${t||e}/ins/1/${i}?a=${r}&v=${s.rE}&ref=${window.location.href}&ca=VA`:`https://${t||e}/ins/1/${i}?&v=${s.rE}&ref=${window.location.href}&ca=VA`}catch(t){return console.error(t.message),null}}function n(t){if(\"string\"==typeof t&&t.length)return t.length;if(\"object\"==typeof t){if(\"undefined\"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if(\"undefined\"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!(\"undefined\"!=typeof FormData&&t instanceof FormData))try{return function(t){try{return JSON.stringify(t,(()=>{const t=new WeakSet;return(e,i)=>{if(\"object\"==typeof i&&null!==i){if(t.has(i))return;t.add(i)}return i}})())??\"\"}catch(t){return r.A.error(\"Error stringifying value:\",t.message),\"\"}}(t).length}catch(t){return}}}function o(t){switch(t){case 408:case 429:case 500:return!0;case 401:case 403:case 404:return!1}return t>=502&&t<=504||t>=512&&t<=530}function h(t,e){return t&&Array.isArray(t)&&0!==t.length?e&&\"object\"==typeof e?t.reduce((t,i)=>(i in e&&(t[i]=e[i]),t),{}):{}:e}},330(t){t.exports={rE:\"4.1.5\"}}},e={};function i(s){var r=e[s];if(void 0!==r)return r.exports;var a=e[s]={exports:{}};return t[s](a,a.exports,i),a.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var s=i(144),r=i(487),a=i(51),n=i(302),o=i(347);function h(t,e={}){try{if(!a.A.VALID_EVENT_TYPES.includes(t))return s.A.warn(\"Invalid event type provided to recordEvent\",{eventType:t}),!1;if(!window?.NRVIDEO?.info)return;const{appName:i,applicationID:h}=window.NRVIDEO.info,{qoe:d,...l}=e,c=d?{...d}:{},u={...h?{}:{appName:i},timestamp:Date.now(),timeSinceLoad:window.performance?window.performance.now()/1e3:null},A={...l,eventType:t,...u},g=(0,o.z8)(a.A.QOE_AGGREGATE_KEYS,e);let m=null;\"VideoAction\"===t&&(m={eventType:\"VideoAction\",actionName:n.A.Events.QOE_AGGREGATE,qoeAggregateVersion:\"1.0.0\",...c,...g,...u});const f=r.videoAnalyticsHarvester.addEvent(A);if(m&&window?.NRVIDEO?.config?.qoeAggregate){const t=r.videoAnalyticsHarvester.addEvent(m);return f&&t}return f}catch(t){return s.A.error(\"Failed to record event:\",t.message),!1}}const{COLLECTOR:d}=a.A;const l=new class{setConfiguration(t,e){return!!this.validateRequiredFields(t)&&!!this.validateConfigFields(e)&&(this.initializeGlobalConfig(t,e),s.A.notice(\"Video analytics configuration initialized successfully\"),!0)}validateRequiredFields(t){if(!t||\"object\"!=typeof t)return s.A.error(\"Configuration must be an object\"),!1;const{licenseKey:e,appName:i,region:r,applicationID:a,beacon:n}=t;if(!e)return s.A.error(\"licenseKey is required\"),!1;if(a){if(!n)return s.A.error(\"beacon is required when applicationID is provided\"),!1;if(!Object.values(d).flatMap(t=>t).includes(n))return s.A.error(`Invalid beacon: ${n}`),!1}else{if(!i||!r)return s.A.error(\"appName and region are required when applicationID is not provided\"),!1;if(!d[r])return s.A.error(`Invalid region: ${r}. Valid regions are: ${Object.keys(d).join(\", \")}`),!1}return!0}validateConfigFields(t){if(null==t)return!0;if(\"object\"!=typeof t||Array.isArray(t))return s.A.error(\"config must be an object\"),!1;const{qoeAggregate:e,obfuscate:i}=t;return void 0!==e&&\"boolean\"!=typeof e?(s.A.error(\"qoeAggregate must be a boolean\"),!1):!(void 0!==i&&!Array.isArray(i)&&(s.A.error(\"obfuscate must be an array\"),1))}filterObfuscateRules(t){return t?t.filter(t=>{const e=void 0!==t.regex&&(\"string\"==typeof t.regex||t.regex instanceof RegExp),i=void 0!==t.replacement&&\"string\"==typeof t.replacement;return!(!e||!i)||(s.A.warn(\"obfuscate rule missing required 'regex' (string|RegExp) and/or 'replacement' (string), skipping:\",t),!1)}):[]}sanitizeQoeIntervalFactor(t){return null==t?1:\"number\"==typeof t&&Number.isInteger(t)&&t>=1?t:(console.warn(`[nrvideo] Invalid qoeIntervalFactor \"${t}\" — must be a positive integer. Defaulting to 1.`),1)}initializeGlobalConfig(t,e){let{licenseKey:i,appName:s,region:r,beacon:n,applicationID:o}=t;n=\"US\"===r?a.A.COLLECTOR.US[0]:n||d[r],window.NRVIDEO={info:{...r?{region:r}:{},beacon:n,licenseKey:i,applicationID:o,...o?{}:{appName:s}},config:{qoeAggregate:e?.qoeAggregate??!1,qoeIntervalFactor:this.sanitizeQoeIntervalFactor(e?.qoeIntervalFactor),obfuscate:this.filterObfuscateRules(e?.obfuscate)}}}};class c{static addTracker(t,e){var i,r;e?.info&&(i=e.info,r=e?.config,l.setConfiguration(i,r)),t.on&&t.emit?(u.push(t),t.on(\"*\",A),\"function\"==typeof t.trackerInit&&t.trackerInit()):s.A.error(\"Tried to load a non-tracker.\",t)}static removeTracker(t){t.off(\"*\",A),t.dispose();let e=u.indexOf(t);-1!==e&&u.splice(e,1)}static getTrackers(){return u}static send(t,e,i){return h(t,{actionName:e,...i})}static sendError(t){return h(\"VideoErrorAction\",{actionName:\"ERROR\",...t})}static async forceHarvest(){try{const{videoAnalyticsHarvester:t}=i(487);return await t.forceHarvest()}catch(t){return s.A.error(\"Failed to force harvest:\",t.message),{success:!1,error:t.message}}}}let u=[];function A(t){try{let e=function(t){let e={};for(let i in t)null!==t[i]&&void 0!==t[i]&&(e[i]=t[i]);return e}(t.data);s.A.level<=s.A.Levels.DEBUG?s.A.notice(\"Sent\",t.type,e):s.A.notice(\"Sent\",t.type),c.send(t.eventType,t.type,e)}catch(t){s.A.error(\"Error in event handler:\",t.message)}}const g=c;var m=i(455),f=i(568);const E=class{constructor(){this.reset(),this._createdAt=Date.now(),this._hb=!0,this._acc=0,this._bufferAcc=0}reset(){this._viewSession=null,this._viewCount=0,this._isAd=!1,this.numberOfErrors=0,this.numberOfAds=0,this.numberOfVideos=0,this.totalPlaytime=0,this.weightedAverageBitrate=0,this.totalAdPlaytime=0,this.isAdBreak=!1,this.initialBufferingHappened=!1,this.startupTime=null,this.peakBitrate=0,this._lastBitrate=null,this._lastBitrateChangeTimestamp=null,this.partialAverageBitrate=0,this._totalBitrateDuration=0,this.hadStartupError=!1,this.hadPlaybackError=!1,this.totalRebufferingTime=0,this.resetFlags(),this.resetChronos()}resetFlags(){this.isPlayerReady=!1,this.isRequested=!1,this.isStarted=!1,this.isPaused=!1,this.isSeeking=!1,this.isBuffering=!1,this.isPlaying=!1}resetChronos(){this.timeSinceRequested=new m.A,this.timeSinceStarted=new m.A,this.timeSincePaused=new m.A,this.timeSinceSeekBegin=new m.A,this.timeSinceBufferBegin=new m.A,this.timeSinceAdBreakStart=new m.A,this.timeSinceLastDownload=new m.A,this.timeSinceLastHeartbeat=new m.A,this.timeSinceLastRenditionChange=new m.A,this.timeSinceLastAdQuartile=new m.A,this.timeSinceLastAd=new m.A,this.timeSinceLastError=new m.A,this.timeSinceLastAdError=new m.A,this.timeSinceResumed=new m.A,this.timeSinceSeekEnd=new m.A,this.playtimeSinceLastEvent=new m.A,this.customTimeSinceAttributes={},this.elapsedTime=new m.A,this.bufferElapsedTime=new m.A,this._totalAdPlaytime=new m.A}isAd(){return this._isAd}setIsAd(t){this._isAd=t}setTimeSinceAttribute(t){this.customTimeSinceAttributes[t]=new m.A,this.customTimeSinceAttributes[t].start()}removeTimeSinceAttribute(t){delete this.customTimeSinceAttributes[t]}getViewSession(){if(!this._viewSession){let t=(new Date).getTime(),e=Math.random().toString(36).substring(2)+Math.random().toString(36).substring(2);this._viewSession=t+\"-\"+e}return this._viewSession}getViewId(){return this.getViewSession()+\"-\"+this._viewCount}getStateAttributes(t){t=t||{},this.isAd()?(this.isRequested&&(t.timeSinceAdRequested=this.timeSinceRequested.getDeltaTime(),t.timeSinceLastAdHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(t.timeSinceAdStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(t.timeSinceAdPaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(t.timeSinceAdBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(t.timeSinceAdSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),this.isAdBreak&&(t.timeSinceAdBreakBegin=this.timeSinceAdBreakStart.getDeltaTime()),this.numberOfErrors>0&&this.timeSinceLastAdError.startTime>0&&(t.timeSinceLastAdError=this.timeSinceLastAdError.getDeltaTime()),t.numberOfAds=this.numberOfAds):(this.isRequested&&(t.timeSinceRequested=this.timeSinceRequested.getDeltaTime(),t.timeSinceLastHeartbeat=this.timeSinceLastHeartbeat.getDeltaTime()),this.isStarted&&(t.timeSinceStarted=this.timeSinceStarted.getDeltaTime()),this.isPaused&&(t.timeSincePaused=this.timeSincePaused.getDeltaTime()),this.isBuffering&&(t.timeSinceBufferBegin=this.timeSinceBufferBegin.getDeltaTime()),this.isSeeking&&(t.timeSinceSeekBegin=this.timeSinceSeekBegin.getDeltaTime()),t.timeSinceLastAd=this.timeSinceLastAd.getDeltaTime(),this.numberOfErrors>0&&this.timeSinceLastError.startTime>0&&(t.timeSinceLastError=this.timeSinceLastError.getDeltaTime()),t.numberOfVideos=this.numberOfVideos),t.numberOfErrors=this.numberOfErrors,this.isAd()||(this.playtimeSinceLastEvent.startTime>0?t.playtimeSinceLastEvent=this.playtimeSinceLastEvent.getDeltaTime():t.playtimeSinceLastEvent=0,this.isPlaying?this.playtimeSinceLastEvent.start():this.playtimeSinceLastEvent.reset(),this.totalPlaytime+=t.playtimeSinceLastEvent,t.totalPlaytime=this.totalPlaytime);for(const[e,i]of Object.entries(this.customTimeSinceAttributes))t[e]=i.getDeltaTime();return t}getQoeAttributes(t){t=t||{};const e={};try{null!==this.startupTime&&(e.startupTime=this.startupTime),this.peakBitrate>0&&(e.peakBitrate=this.peakBitrate),e.hadStartupError=this.hadStartupError,e.hadPlaybackError=this.hadPlaybackError,e.totalRebufferingTime=this.totalRebufferingTime,e.rebufferingRatio=this.totalPlaytime>0?this.totalRebufferingTime/this.totalPlaytime*100:0,e.totalPlaytime=this.totalPlaytime,e.averageBitrate=this.weightedBitrate,e.numberOfErrors=this.numberOfErrors}catch(t){s.A.error(\"Failed to add attributes for QOE KPIs\",t.message)}return t.qoe=e,t}calculateBufferType(t){let e=\"\";return e=t?\"initial\":this.isSeeking?\"seek\":this.isPaused?\"pause\":\"connection\",s.A.debug(\"Buffer Type = \"+e),e}goViewCountUp(){this._viewCount++}goPlayerReady(){return!this.isPlayerReady&&(this.isPlayerReady=!0,!0)}goRequest(){return!this.isRequested&&(this.isRequested=!0,this.timeSinceLastAd.reset(),this.timeSinceRequested.start(),!0)}goStart(){return!(!this.isRequested||this.isStarted||(this.isAd()?this.numberOfAds++:this.numberOfVideos++,this.isStarted=!0,this.isPlaying=!0,this.timeSinceStarted.start(),this.playtimeSinceLastEvent.start(),0))}goEnd(){return!!this.isRequested&&(this.numberOfErrors=0,this.resetFlags(),this.timeSinceRequested.stop(),this.timeSinceStarted.stop(),this.playtimeSinceLastEvent.stop(),this.isPlaying=!1,!0)}goPause(){return!(!this.isStarted||this.isPaused||(this.isPaused=!0,this.isPlaying=!1,this.timeSincePaused.start(),this.playtimeSinceLastEvent.stop(),this.timeSinceResumed.reset(),this.isBuffering&&(this._bufferAcc+=this.bufferElapsedTime.getDeltaTime()),this.elapsedTime.start(),0))}goResume(){return!(!this.isStarted||!this.isPaused||(this.isPaused=!1,this.isPlaying=!0,this.timeSincePaused.stop(),this.timeSinceResumed.start(),this._hb?(this._acc=this.elapsedTime.getDeltaTime(),this._hb=!1):(this.isBuffering&&this.bufferElapsedTime.start(),this._acc+=this.elapsedTime.getDeltaTime()),0))}goBufferStart(){return!(!this.isRequested||this.isBuffering||(this.isBuffering=!0,this.isPlaying=!1,this.timeSinceBufferBegin.start(),this.bufferElapsedTime.start(),0))}goBufferEnd(){return!(!this.isRequested||!this.isBuffering||(this.isBuffering=!1,this.isPlaying=!0,this.timeSinceBufferBegin.stop(),this._hb?(this._bufferAcc=this.bufferElapsedTime.getDeltaTime(),this._hb=!1):this._bufferAcc+=this.bufferElapsedTime.getDeltaTime(),!this.isAd()&&this.initialBufferingHappened&&(this.totalRebufferingTime+=this.timeSinceBufferBegin.stopTime-this.timeSinceBufferBegin.startTime),0))}goSeekStart(){return!(!this.isStarted||this.isSeeking||(this.isSeeking=!0,this.isPlaying=!1,this.timeSinceSeekBegin.start(),this.timeSinceSeekEnd.reset(),0))}goSeekEnd(){return!(!this.isStarted||!this.isSeeking||(this.isSeeking=!1,this.isPlaying=!0,this.timeSinceSeekBegin.stop(),this.timeSinceSeekEnd.start(),0))}goAdBreakStart(){return!this.isAdBreak&&(this.isAdBreak=!0,this.timeSinceAdBreakStart.start(),!0)}goAdBreakEnd(){return!!this.isAdBreak&&(this.isRequested=!1,this.isAdBreak=!1,this.totalAdPlaytime=this.timeSinceAdBreakStart.getDeltaTime(),this.timeSinceAdBreakStart.stop(),!0)}goDownload(){this.timeSinceLastDownload.start()}goHeartbeat(){this.timeSinceLastHeartbeat.start()}goRenditionChange(){this.timeSinceLastRenditionChange.start()}goAdQuartile(){this.timeSinceLastAdQuartile.start()}goError(){this.isError=!0,this.numberOfErrors++,this.isAd()?this.timeSinceLastAdError.start():(this.timeSinceLastError.start(),this.isStarted?this.hadPlaybackError=!0:this.hadStartupError=!0)}goLastAd(){this.timeSinceLastAd.start()}trackContentBitrateState(t){if(t&&\"number\"==typeof t){this.peakBitrate=Math.max(this.peakBitrate,t);const e=Date.now();if(!this.isPlaying){if(null!==this._lastBitrate&&null!==this._lastBitrateChangeTimestamp){const t=e-this._lastBitrateChangeTimestamp;t>0&&(this.partialAverageBitrate+=this._lastBitrate*t,this._totalBitrateDuration+=t),this._lastBitrateChangeTimestamp=null}return void(this._lastBitrate=t)}if(null===this._lastBitrateChangeTimestamp&&null!==this._lastBitrate&&(this._lastBitrateChangeTimestamp=e),null!==this._lastBitrate&&this._lastBitrate!==t&&null!==this._lastBitrateChangeTimestamp){const t=e-this._lastBitrateChangeTimestamp;t>0&&(this.partialAverageBitrate+=this._lastBitrate*t,this._totalBitrateDuration+=t),this._lastBitrateChangeTimestamp=e}null===this._lastBitrateChangeTimestamp&&(this._lastBitrateChangeTimestamp=e),this._lastBitrate=t;let i=this.partialAverageBitrate,s=this._totalBitrateDuration;const r=e-this._lastBitrateChangeTimestamp;r>0&&(i+=t*r,s+=r),this.weightedBitrate=s>0?Math.round(i/s):t}}resetViewIdTrackedState(){this.peakBitrate=0,this.partialAverageBitrate=0,this._totalBitrateDuration=0,this.startupTime=null,this._lastBitrate=null,this._lastBitrateChangeTimestamp=null}clearTotalAdsTime(){s.A.debug(\"clear total ads time\",this.totalAdTime),this._totalAdPlaytime.reset()}totalAdTime(){return this._totalAdPlaytime.getDuration()}startAdsTime(){return s.A.debug(\"startAdsTime\"),this._totalAdPlaytime.start()}stopAdsTime(){return s.A.debug(\"stopAdsTime\"),this._totalAdPlaytime.stop()}setStartupTime(t){null===this.startupTime&&(this.startupTime=Math.max(this.timeSinceRequested.getDeltaTime()-t,0))}};var T=i(330);class v extends n.A{constructor(t,e){super(),this.state=new E,this.adsTracker=null,this._lastBufferType=null,this._userId=null,e=e||{},this.setOptions(e),t&&this.setPlayer(t,e.tag),s.A.notice(\"Tracker \"+this.getTrackerName()+\" v\"+this.getTrackerVersion()+\" is ready.\")}setUserId(t){this._userId=t}setOptions(t){t&&(t.adsTracker&&this.setAdsTracker(t.adsTracker),\"boolean\"==typeof t.isAd&&this.setIsAd(t.isAd),n.A.prototype.setOptions.apply(this,arguments))}setPlayer(t,e){(this.player||this.tag)&&this.dispose(),\"undefined\"!=typeof document&&document.getElementById&&(\"string\"==typeof t&&(t=document.getElementById(t)),\"string\"==typeof e&&(e=document.getElementById(e))),e=e||t,this.player=t,this.tag=e,this.registerListeners()}isAd(){return this.state.isAd()}setIsAd(t){this.state.setIsAd(t)}setAdsTracker(t){this.disposeAdsTracker(),t&&(this.adsTracker=t,this.adsTracker.setIsAd(!0),this.adsTracker.parentTracker=this,this.adsTracker.on(\"*\",S.bind(this)))}disposeAdsTracker(){this.adsTracker&&(this.adsTracker.off(\"*\",S),this.adsTracker.dispose())}dispose(){this.stopHeartbeat(),this.disposeAdsTracker(),this.unregisterListeners(),this.player=null,this.tag=null}registerListeners(){}unregisterListeners(){}getViewId(){return this.parentTracker?this.parentTracker.getViewId():this.state.getViewId()}getViewSession(){return this.parentTracker?this.parentTracker.getViewSession():this.state.getViewSession()}getVideoId(){return null}getTitle(){return null}isLive(){return null}getBitrate(){return null}getManifestBitrate(){return null}getSegmentDownloadBitrate(){return null}getNetworkDownloadBitrate(){return null}getWebkitBitrate(){if(this.tag&&this.tag.webkitVideoDecodedByteCount){let t;if(this._lastWebkitBitrate){t=this.tag.webkitVideoDecodedByteCount;let e=t-this._lastWebkitBitrate,i=this.getHeartbeat()/1e3;t=Math.round(e/i*8)}return this._lastWebkitBitrate=this.tag.webkitVideoDecodedByteCount,t||null}}getRenditionName(){return null}getRenditionBitrate(){return null}getRenditionShift(t){let e,i=this.getRenditionBitrate();return this.isAd()?(e=this._lastAdRendition,t&&(this._lastAdRendition=i)):(e=this._lastRendition,t&&(this._lastRendition=i)),i&&e?i>e?\"up\":i<e?\"down\":null:null}getRenditionHeight(){return this.tag?this.tag.videoHeight:null}getRenditionWidth(){return this.tag?this.tag.videoWidth:null}getDuration(){return this.tag?this.tag.duration:null}getPlayhead(){return this.tag?this.tag.currentTime:null}getLanguage(){return null}getSrc(){return this.tag?this.tag.currentSrc:null}getPlayrate(){return this.tag?this.tag.playbackRate:null}isMuted(){return this.tag?this.tag.muted:null}isFullscreen(){return null}getCdn(){return null}getPlayerName(){return this.getTrackerName()}getPlayerVersion(){return T.rE}getFps(){return null}isAutoplayed(){return this.tag?this.tag.autoplay:null}getPreload(){return this.tag?this.tag.preload:null}getAdQuartile(){return null}getAdPosition(){return this.parentTracker?this.parentTracker.state.isStarted?\"mid\":\"pre\":null}getAdPartner(){return null}getAdCreativeId(){return null}getInstrumentationProvider(){return null}getInstrumentationName(){return null}getInstrumentationVersion(){return null}getAttributes(t,e){if(void 0===(t=n.A.prototype.getAttributes.apply(this,arguments)).isAd&&(t.isAd=this.isAd()),t.viewSession=this.getViewSession(),t.viewId=this.getViewId(),t.playerName=this.getPlayerName(),t.playerVersion=this.getPlayerVersion(),t[\"instrumentation.provider\"]=this.getInstrumentationProvider(),t[\"instrumentation.name\"]=this.getInstrumentationName(),t[\"instrumentation.version\"]=this.getInstrumentationVersion(),t[\"enduser.id\"]=this._userId,t.src=\"Browser\",\"customAction\"===e)return t;try{t.pageUrl=window.location.href}catch(t){}this.isAd()?(t.adId=this.getVideoId(),t.adTitle=this.getTitle(),t.adSrc=this.getSrc(),t.adCdn=this.getCdn(),this.state.isStarted&&(t.adBitrate=this.getBitrate()||0),t.adRenditionName=this.getRenditionName(),t.adRenditionHeight=this.getRenditionHeight(),t.adRenditionWidth=this.getRenditionWidth(),t.adDuration=this.getDuration(),t.adPlayhead=this.getPlayhead(),t.adLanguage=this.getLanguage(),t.adIsMuted=this.isMuted(),t.adFps=this.getFps(),t.adPosition=this.getAdPosition(),t.adCreativeId=this.getAdCreativeId(),t.adPartner=this.getAdPartner()):(t.contentId=this.getVideoId(),t.contentTitle=this.getTitle(),t.contentSrc=this.getSrc(),t.contentCdn=this.getCdn(),t.contentPlayhead=this.getPlayhead(),t.contentIsLive=this.isLive(),this.state.isStarted&&(t.contentBitrate=this.getBitrate()||0,t.contentManifestBitrate=this.getManifestBitrate()||0,t.contentSegmentDownloadBitrate=this.getSegmentDownloadBitrate()||0,t.contentNetworkDownloadBitrate=this.getNetworkDownloadBitrate()||0),t.contentRenditionName=this.getRenditionName(),t.contentRenditionHeight=this.getRenditionHeight(),t.contentRenditionWidth=this.getRenditionWidth(),t.contentDuration=this.getDuration(),t.contentLanguage=this.getLanguage(),t.contentPlayrate=this.getPlayrate(),t.contentIsFullscreen=this.isFullscreen(),t.contentIsMuted=this.isMuted(),t.contentIsAutoplayed=this.isAutoplayed(),t.contentPreload=this.getPreload(),t.contentFps=this.getFps(),null!=this.adsTracker&&this.adsTracker.state.totalAdPlaytime>0&&(t.totalAdPlaytime=this.adsTracker.state.totalAdPlaytime)),this.state.getStateAttributes(t),this.state.isStarted&&!this.isAd()&&this.state.trackContentBitrateState(t.contentBitrate);for(let e in this.customData)t[e]=this.customData[e];return this.addQoeAttributes(t),t}addQoeAttributes(t){const e=(t=this.state.getQoeAttributes(t)).qoe;for(let t in this.customData)e[t]=this.customData[t]}sendCustom(t,e,i){i=i||{},this.sendVideoCustomAction(t,i),this.state.setTimeSinceAttribute(e)}sendPlayerReady(t){this.state.goPlayerReady()&&(t=t||{},this.sendVideoAction(v.Events.PLAYER_READY,t))}sendRequest(t){if(this.state.goRequest()){let e;this.isAd()?(e=v.Events.AD_REQUEST,this.sendVideoAdAction(e,t)):(e=v.Events.CONTENT_REQUEST,this.sendVideoAction(e,t))}}sendStart(t){if(this.state.goStart()){let e;if(this.isAd())e=v.Events.AD_START,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(e,t),this.state.startAdsTime();else{e=v.Events.CONTENT_START;let i=0;this.adsTracker&&((this.adsTracker.state.isPlaying||this.adsTracker.state.isBuffering)&&(this.adsTracker.state.stopAdsTime(),this.adsTracker.state.isPlaying=!1,this.adsTracker.state.isBuffering=!1),i=this.adsTracker.state.totalAdTime()??0),this.state.setStartupTime(i),this.sendVideoAction(e,t),r.videoAnalyticsHarvester.setBeforeDrainCallback(()=>{if(this.state){const t=this.state.getQoeAttributes({}).qoe;r.videoAnalyticsHarvester.refreshQoeKpis(t,this.getViewId())}})}this.startHeartbeat(),this.state.goHeartbeat()}}sendEnd(t){if(this.state.goEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_END,t.timeSinceAdRequested=this.state.timeSinceRequested.getDeltaTime(),t.timeSinceAdStarted=this.state.timeSinceStarted.getDeltaTime(),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.state.stopAdsTime()):(e=v.Events.CONTENT_END,t.timeSinceRequested=this.state.timeSinceRequested.getDeltaTime(),t.timeSinceStarted=this.state.timeSinceStarted.getDeltaTime()),this.stopHeartbeat(),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd(),this.state.goViewCountUp(),this.state.totalPlaytime=0,this.isAd()||(r.videoAnalyticsHarvester.forceNextQoeCycle(),r.videoAnalyticsHarvester.setBeforeDrainCallback(null),this.adsTracker&&this.adsTracker.state.clearTotalAdsTime(),this.state.resetViewIdTrackedState())}}sendPause(t){if(this.state.goPause()){let e=this.isAd()?v.Events.AD_PAUSE:v.Events.CONTENT_PAUSE;this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendResume(t){if(this.state.goResume()){let e;t=t||{},this.isAd()?(e=v.Events.AD_RESUME,t.timeSinceAdPaused=this.state.timeSincePaused.getDeltaTime()):(e=v.Events.CONTENT_RESUME,t.timeSincePaused=this.state.timeSincePaused.getDeltaTime()),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendBufferStart(t){if(this.state.goBufferStart()){let e;t=t||{},e=this.isAd()?v.Events.AD_BUFFER_START:v.Events.CONTENT_BUFFER_START,t=this.buildBufferAttributes(t),this._lastBufferType=t.bufferType,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendBufferEnd(t){if(this.state.goBufferEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_BUFFER_END,t.timeSinceAdBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()):(e=v.Events.CONTENT_BUFFER_END,t.timeSinceBufferBegin=this.state.timeSinceBufferBegin.getDeltaTime()),t=this.buildBufferAttributes(t),null!=this._lastBufferType&&(t.bufferType=this._lastBufferType),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.state.initialBufferingHappened=!0}}buildBufferAttributes(t){return null==t.timeSinceStarted||t.timeSinceStarted<100?t.isInitialBuffering=!this.state.initialBufferingHappened:t.isInitialBuffering=!1,t.bufferType=this.state.calculateBufferType(t.isInitialBuffering),t.timeSinceResumed=this.state.timeSinceResumed.getDeltaTime(),t.timeSinceSeekEnd=this.state.timeSinceSeekEnd.getDeltaTime(),t}sendSeekStart(t){if(this.state.goSeekStart()){let e;e=this.isAd()?v.Events.AD_SEEK_START:v.Events.CONTENT_SEEK_START,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendSeekEnd(t){if(this.state.goSeekEnd()){let e;t=t||{},this.isAd()?(e=v.Events.AD_SEEK_END,t.timeSinceAdSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()):(e=v.Events.CONTENT_SEEK_END,t.timeSinceSeekBegin=this.state.timeSinceSeekBegin.getDeltaTime()),this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t)}}sendDownload(t){(t=t||{}).state||s.A.warn(\"Called sendDownload without { state: xxxxx }.\"),this.sendVideoAction(v.Events.DOWNLOAD,t),this.state.goDownload()}sendError(t){(t=t||{}).isAd=this.isAd(),this.state.goError();let e=this.isAd()?v.Events.AD_ERROR:v.Events.CONTENT_ERROR;this.sendVideoErrorAction(e,t)}sendRenditionChanged(t){let e;(t=t||{}).timeSinceLastRenditionChange=this.state.timeSinceLastRenditionChange.getDeltaTime(),t.shift=this.getRenditionShift(!0),e=this.isAd()?v.Events.AD_RENDITION_CHANGE:v.Events.CONTENT_RENDITION_CHANGE,this.isAd()?this.sendVideoAdAction(e,t):this.sendVideoAction(e,t),this.state.goRenditionChange()}sendHeartbeat(t){if(this.state.isRequested){let e,i=this.getHeartbeat();this.state._hb=!0,i=this.adjustElapsedTimeForPause(i),this.isAd()?(e=v.Events.AD_HEARTBEAT,\"bitmovin-ads\"===this.getPlayerName()?this.sendVideoAdAction(e,t):this.sendVideoAdAction(e,{elapsedTime:i,...t})):(e=v.Events.CONTENT_HEARTBEAT,this.sendVideoAction(e,{elapsedTime:i,...t})),this.state.goHeartbeat()}}adjustElapsedTimeForPause(t){return this.state._acc&&(t-=this.state._acc,this.state._acc=0),this.state.isPaused&&((t-=this.state.elapsedTime.getDeltaTime())<10&&(t=0),this.state.elapsedTime.start()),this.state._bufferAcc?(t-=this.state._bufferAcc,this.state._bufferAcc=0):this.state.isBuffering&&((t-=this.state.bufferElapsedTime.getDeltaTime())<5&&(t=0),this.state.bufferElapsedTime.start()),Math.max(0,t)}sendAdBreakStart(t){this.isAd()&&this.state.goAdBreakStart()&&(this.state.totalAdPlaytime=0,this.parentTracker&&(this.parentTracker.state.isPlaying=!1),this.sendVideoAdAction(v.Events.AD_BREAK_START,t))}sendAdBreakEnd(t){this.isAd()&&this.state.goAdBreakEnd()&&((t=t||{}).timeSinceAdBreakBegin=this.state.timeSinceAdBreakStart.getDeltaTime(),this.sendVideoAdAction(v.Events.AD_BREAK_END,t),this.parentTracker&&(this.parentTracker.state.isPlaying=!0),this.stopHeartbeat(),this.parentTracker&&this.isAd()&&this.parentTracker.state.goLastAd())}sendAdQuartile(t){this.isAd()&&((t=t||{}).quartile||s.A.warn(\"Called sendAdQuartile without { quartile: xxxxx }.\"),t.timeSinceLastAdQuartile=this.state.timeSinceLastAdQuartile.getDeltaTime(),this.sendVideoAdAction(v.Events.AD_QUARTILE,t),this.state.goAdQuartile())}sendAdClick(t){this.isAd()&&((t=t||{}).url||s.A.warn(\"Called sendAdClick without { url: xxxxx }.\"),this.sendVideoAdAction(v.Events.AD_CLICK,t))}}function S(t){t.type!==v.Events.AD_ERROR?this.sendVideoAdAction(t.type,t.data):this.sendVideoErrorAction(t.type,t.data)}v.Events={PLAYER_READY:\"PLAYER_READY\",DOWNLOAD:\"DOWNLOAD\",ERROR:\"ERROR\",CONTENT_REQUEST:\"CONTENT_REQUEST\",CONTENT_START:\"CONTENT_START\",CONTENT_END:\"CONTENT_END\",CONTENT_PAUSE:\"CONTENT_PAUSE\",CONTENT_RESUME:\"CONTENT_RESUME\",CONTENT_SEEK_START:\"CONTENT_SEEK_START\",CONTENT_SEEK_END:\"CONTENT_SEEK_END\",CONTENT_BUFFER_START:\"CONTENT_BUFFER_START\",CONTENT_BUFFER_END:\"CONTENT_BUFFER_END\",CONTENT_HEARTBEAT:\"CONTENT_HEARTBEAT\",CONTENT_RENDITION_CHANGE:\"CONTENT_RENDITION_CHANGE\",CONTENT_ERROR:\"CONTENT_ERROR\",AD_REQUEST:\"AD_REQUEST\",AD_START:\"AD_START\",AD_END:\"AD_END\",AD_PAUSE:\"AD_PAUSE\",AD_RESUME:\"AD_RESUME\",AD_SEEK_START:\"AD_SEEK_START\",AD_SEEK_END:\"AD_SEEK_END\",AD_BUFFER_START:\"AD_BUFFER_START\",AD_BUFFER_END:\"AD_BUFFER_END\",AD_HEARTBEAT:\"AD_HEARTBEAT\",AD_RENDITION_CHANGE:\"AD_RENDITION_CHANGE\",AD_ERROR:\"AD_ERROR\",AD_BREAK_START:\"AD_BREAK_START\",AD_BREAK_END:\"AD_BREAK_END\",AD_QUARTILE:\"AD_QUARTILE\",AD_CLICK:\"AD_CLICK\"};const p=v;var y=i(431),_=i(413),R=i(481),B=i(374);const b={Constants:a.A,Chrono:m.A,Log:s.A,Emitter:f.A,Tracker:n.A,VideoTracker:p,VideoTrackerState:E,Core:g,version:T.rE,NrVideoEventAggregator:y.t,RetryQueueHandler:_.u,OptimizedHttpClient:R.X,HarvestScheduler:B.n,recordEvent:h};export{b as default};\n//# sourceMappingURL=index.js.map","/**\n * MediaTailor Utility Functions\n * Helper functions for AWS MediaTailor ad tracking\n */\n\nimport nrvideo from '@newrelic/video-core';\n\nconst nrvideoCore = nrvideo.default || nrvideo;\nconst Log = nrvideoCore.Log;\n\nimport {\n DASH_MANIFEST_EXTENSION,\n DASH_SCTE35_EVENT_STREAM_SELECTOR,\n HLS_MANIFEST_EXTENSION,\n HLS_SEGMENT_DURATION_TAG,\n HLS_TAG_PREFIX,\n REGEX_CUE_OUT,\n REGEX_DASH_MINIMUM_UPDATE_PERIOD,\n REGEX_DISCONTINUITY,\n REGEX_HLS_TARGET_DURATION,\n REGEX_ISO_8601_DURATION,\n REGEX_MAP,\n REGEX_MANIFEST_FILE_SUFFIX,\n REGEX_SESSION_ID,\n REGEX_TRACKING_PATH_SEGMENT,\n MT_HLS_CUE_IN_TAG,\n MT_HLS_CUE_OUT_TAG,\n MT_SEGMENT_PATTERN,\n MT_DEFAULT_AD_SEGMENT_PATH,\n MIN_AD_DURATION,\n AD_TIMING_TOLERANCE,\n SCTE35_SCHEME_MARKER,\n STREAM_TYPE,\n MANIFEST_TYPE,\n AD_POSITION,\n AD_SOURCE,\n QUARTILES,\n} from './mt-constants.js';\n\n/**\n * Generates timestamp string for logging (HH:MM:SS.mmm format)\n */\nexport function getTimestamp() {\n const now = new Date();\n return now.toISOString().substring(11, 23);\n}\n\n/**\n * Detects manifest format from URL (.m3u8 = HLS, .mpd = DASH)\n */\nexport function detectManifestFormatFromUrl(url) {\n if (url.includes(HLS_MANIFEST_EXTENSION)) {\n return MANIFEST_TYPE.HLS;\n } else if (url.includes(DASH_MANIFEST_EXTENSION)) {\n return MANIFEST_TYPE.DASH;\n }\n return MANIFEST_TYPE.HLS; // Default fallback\n}\n\n/**\n * Detects stream type from player duration (Infinity = Live, else = VOD)\n */\nexport function detectPlaybackStreamType(duration) {\n return duration === Infinity ? STREAM_TYPE.LIVE : STREAM_TYPE.VOD;\n}\n\n/**\n * Builds a tracking endpoint URL from a sessionized manifest URL\n * Format: /v1/tracking/{customerId}/{configName}/{sessionId}\n */\nexport function buildTrackingEndpointUrl(manifestUrl) {\n const match = manifestUrl.match(REGEX_SESSION_ID);\n\n if (!match) {\n return null;\n }\n\n const sessionId = match[1];\n\n // Convert manifest URL to tracking URL:\n // /v1/master/{id}/{name}/master.m3u8?aws.sessionId=xxx → /v1/tracking/{id}/{name}/{sessionId}\n // /v1/dash/{id}/{name}/index.mpd?aws.sessionId=xxx → /v1/tracking/{id}/{name}/{sessionId}\n const trackingEndpointUrl = manifestUrl\n .replace(REGEX_TRACKING_PATH_SEGMENT, '/v1/tracking/')\n .replace(REGEX_MANIFEST_FILE_SUFFIX, `/${sessionId}`);\n\n return trackingEndpointUrl;\n}\n\n/**\n * Checks if segment is a MediaTailor ad segment\n */\nexport function isMediaTailorSegment(segment, { adSegmentPrefix } = {}) {\n const candidates = [MT_SEGMENT_PATTERN, MT_DEFAULT_AD_SEGMENT_PATH];\n if (adSegmentPrefix) candidates.push(adSegmentPrefix);\n\n const mapUri = (segment.map && segment.map.uri) || '';\n const segUri = segment.uri || '';\n\n return candidates.some(\n (marker) => mapUri.includes(marker) || segUri.includes(marker),\n );\n}\n\nexport function whichAdSegmentMarker(segment, { adSegmentPrefix } = {}) {\n const labeled = [\n { marker: MT_SEGMENT_PATTERN, label: 'aws-hostname (segments.mediatailor)' },\n { marker: MT_DEFAULT_AD_SEGMENT_PATH, label: 'default-cdn-path (/tm/)' },\n ];\n if (adSegmentPrefix) labeled.push({ marker: adSegmentPrefix, label: `custom-prefix (${adSegmentPrefix})` });\n\n const mapUri = (segment.map && segment.map.uri) || '';\n const segUri = segment.uri || '';\n\n const hit = labeled.find(({ marker }) => mapUri.includes(marker) || segUri.includes(marker));\n return hit ? hit.label : null;\n}\n\n/**\n * Determines ad position based on schedule index (VOD only, Live returns null)\n */\nexport function determineAdPosition(adBreakIndex, totalAdBreaks, streamType) {\n if (streamType === STREAM_TYPE.LIVE) {\n return null; // Live streams have no position concept\n }\n\n // VOD: Determine position by schedule index\n if (adBreakIndex === 0) {\n return AD_POSITION.PRE_ROLL; // First ad\n } else if (adBreakIndex === totalAdBreaks - 1) {\n return AD_POSITION.POST_ROLL; // Last ad\n } else {\n return AD_POSITION.MID_ROLL; // Middle ad\n }\n}\n\n/**\n * Finds ad break index in schedule by start time\n */\nexport function findAdBreakIndex(adSchedule, startTime) {\n return adSchedule.findIndex(\n (ad) => Math.abs(ad.startTime - startTime) < AD_TIMING_TOLERANCE\n );\n}\n\n/**\n * Calculates quartile thresholds for an ad duration\n */\nexport function calculateQuartiles(duration) {\n return {\n q1: duration * QUARTILES.Q1,\n q2: duration * QUARTILES.Q2,\n q3: duration * QUARTILES.Q3,\n };\n}\n\n/**\n * Checks which quartile events should fire based on progress\n */\nexport function getQuartilesToFire(progress, duration, firedQuartiles) {\n const quartiles = calculateQuartiles(duration);\n const toFire = [];\n\n if (progress >= quartiles.q1 && !firedQuartiles.q1) {\n toFire.push({ quartile: 1, key: 'q1' });\n }\n if (progress >= quartiles.q2 && !firedQuartiles.q2) {\n toFire.push({ quartile: 2, key: 'q2' });\n }\n if (progress >= quartiles.q3 && !firedQuartiles.q3) {\n toFire.push({ quartile: 3, key: 'q3' });\n }\n\n return toFire;\n}\n\n/**\n * Finds active ad break at current playhead time\n */\nexport function findActiveAdBreak(adSchedule, currentTime) {\n return adSchedule.find(\n (ad) => currentTime >= ad.startTime && currentTime < ad.endTime\n );\n}\n\n/**\n * Finds active pod within ad break at current playhead time\n */\nexport function findActivePod(adBreak, currentTime) {\n if (!adBreak || !adBreak.pods || adBreak.pods.length === 0) {\n return null;\n }\n\n return adBreak.pods.find(\n (pod) => currentTime >= pod.startTime && currentTime < pod.endTime\n );\n}\n\n/**\n * Validates if ad break duration meets minimum threshold\n */\nexport function isValidAdBreak(adBreak) {\n return adBreak.duration > MIN_AD_DURATION;\n}\n\n/**\n * Merges new ads into existing schedule (deduplicates by start time)\n */\nexport function mergeAdSchedules(existingSchedule, newAds) {\n const scheduleMap = new Map();\n\n // Add existing ads to map (keyed by rounded start time)\n existingSchedule.forEach((ad) => {\n const key = Math.round(ad.startTime);\n scheduleMap.set(key, ad);\n });\n\n // Merge new ads\n const merged = [];\n newAds.forEach((newAd) => {\n const key = Math.round(newAd.startTime);\n const existingAd = scheduleMap.get(key);\n\n if (!existingAd) {\n merged.push(newAd);\n scheduleMap.set(key, newAd);\n } else if (!existingAd.confirmedByTracking && newAd.confirmedByTracking) {\n Object.assign(existingAd, newAd);\n }\n });\n\n // Combine and sort by start time\n const finalSchedule = [...existingSchedule, ...merged];\n finalSchedule.sort((a, b) => a.startTime - b.startTime);\n\n return finalSchedule;\n}\n\n/**\n * Parses HLS manifest text for CUE-OUT/CUE-IN markers\n */\nexport function parseHlsManifestForAdBreaks(manifestText) {\n const lines = manifestText.split('\\n');\n const adBreaks = [];\n\n let currentTime = 0;\n let currentAdBreak = null;\n let currentPodStartTime = null;\n let lastMapUrl = null;\n let adPods = [];\n let isInAdBreak = false;\n\n for (const line of lines) {\n // Detect DISCONTINUITY marker\n if (REGEX_DISCONTINUITY.test(line)) {\n if (isInAdBreak && lastMapUrl) {\n const mapMatch = line.match(REGEX_MAP);\n const mapUrl = mapMatch ? mapMatch[1] : null;\n\n if (mapUrl && mapUrl !== lastMapUrl) {\n // New MAP = new pod boundary\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n currentPodStartTime = currentTime;\n lastMapUrl = mapUrl;\n }\n }\n }\n\n // Detect MAP URL changes\n const mapMatch = line.match(REGEX_MAP);\n if (mapMatch && isInAdBreak) {\n const mapUrl = mapMatch[1];\n if (mapUrl && mapUrl !== lastMapUrl) {\n // New MAP = new pod\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n currentPodStartTime = currentTime;\n lastMapUrl = mapUrl;\n }\n }\n\n // Detect CUE-OUT (ad break start)\n if (line.startsWith(MT_HLS_CUE_OUT_TAG)) {\n const durationMatch = line.match(REGEX_CUE_OUT);\n const duration = durationMatch ? parseFloat(durationMatch[1]) : null;\n\n isInAdBreak = true;\n adPods = [];\n currentAdBreak = {\n id: `avail-${currentTime}`,\n startTime: currentTime,\n duration: duration,\n endTime: null,\n pods: [],\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n confirmedByTracking: false,\n };\n }\n\n // Detect CUE-IN (ad break end)\n if (line.startsWith(MT_HLS_CUE_IN_TAG)) {\n if (currentAdBreak) {\n // Close final pod\n if (currentPodStartTime !== null) {\n const podDuration = currentTime - currentPodStartTime;\n adPods.push({\n startTime: currentPodStartTime,\n duration: podDuration,\n endTime: currentTime,\n mapUrl: lastMapUrl,\n });\n }\n\n // Calculate actual duration\n const actualDuration = currentTime - currentAdBreak.startTime;\n\n // Filter zero-duration false positives\n if (actualDuration >= MIN_AD_DURATION) {\n currentAdBreak.duration = actualDuration;\n currentAdBreak.endTime = currentTime;\n currentAdBreak.pods = adPods;\n adBreaks.push(currentAdBreak);\n }\n\n // Reset state\n currentAdBreak = null;\n isInAdBreak = false;\n currentPodStartTime = null;\n lastMapUrl = null;\n adPods = [];\n }\n }\n\n // Track time via EXTINF\n if (line.startsWith(HLS_SEGMENT_DURATION_TAG)) {\n const duration = parseFloat(line.split(':')[1]);\n if (!isNaN(duration)) {\n currentTime += duration;\n }\n }\n }\n\n // Handle unclosed ad break\n if (currentAdBreak && currentAdBreak.duration) {\n currentAdBreak.endTime = currentAdBreak.startTime + currentAdBreak.duration;\n currentAdBreak.pods = adPods;\n adBreaks.push(currentAdBreak);\n }\n\n return adBreaks;\n}\n\n/**\n * Detects ads from VHS playlist using discontinuityStarts and MediaTailor segments\n */\nexport function detectAdBreaksFromVhsPlaylist(playlist, { adSegmentPrefix } = {}) {\n const segments = playlist.segments;\n const discontinuityStarts = playlist.discontinuityStarts || [];\n const adBreaks = [];\n\n let currentAdBreak = null;\n let currentPod = null;\n let currentTime = 0;\n\n segments.forEach((segment, index) => {\n const isMTSegment = isMediaTailorSegment(segment, { adSegmentPrefix });\n const hasDiscontinuity = discontinuityStarts.includes(index);\n\n if (isMTSegment) {\n // Discontinuity marks new pod boundary\n if (hasDiscontinuity && currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n currentPod = null;\n }\n\n // Start new ad break if not in one\n if (!currentAdBreak) {\n currentAdBreak = {\n id: `avail-${currentTime}`,\n startTime: currentTime,\n duration: 0,\n endTime: null,\n source: 'vhs-discontinuity',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n };\n }\n\n // Start new pod if not in one\n if (!currentPod) {\n currentPod = {\n startTime: currentTime,\n duration: 0,\n endTime: null,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n };\n }\n\n // Accumulate durations\n const segmentDuration = segment.duration || 0;\n currentAdBreak.duration += segmentDuration;\n currentPod.duration += segmentDuration;\n } else {\n // Not MediaTailor segment - end ad break\n if (currentAdBreak) {\n // Close current pod\n if (currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n currentPod = null;\n }\n\n // Close ad break\n currentAdBreak.endTime = currentTime;\n if (currentAdBreak.duration > MIN_AD_DURATION) {\n adBreaks.push(currentAdBreak);\n }\n currentAdBreak = null;\n }\n }\n\n currentTime += segment.duration || 0;\n });\n\n // Handle unclosed pod/ad break at end\n if (currentAdBreak) {\n if (currentPod) {\n currentPod.endTime = currentTime;\n if (currentPod.duration > MIN_AD_DURATION) {\n currentAdBreak.pods.push(currentPod);\n }\n }\n currentAdBreak.endTime = currentTime;\n if (currentAdBreak.duration > MIN_AD_DURATION) {\n adBreaks.push(currentAdBreak);\n }\n }\n\n return adBreaks;\n}\n\n/**\n * Enriches ad schedule with tracking API metadata\n */\nexport function enrichAdScheduleWithTrackingMetadata(adSchedule, trackingAvails) {\n const scheduleMap = new Map();\n\n // Build map of existing ads\n adSchedule.forEach((ad) => {\n const key = Math.round(ad.startTime);\n scheduleMap.set(key, ad);\n });\n\n // Process each avail from tracking API\n const newAds = [];\n trackingAvails.forEach((avail) => {\n const firstAd = avail.ads && avail.ads.length > 0 ? avail.ads[0] : null;\n if (!firstAd) return;\n\n const key = Math.round(firstAd.startTimeInSeconds);\n const existingAd = scheduleMap.get(key);\n\n if (existingAd) {\n // Enrich existing ad with tracking metadata\n existingAd.id = avail.availId;\n existingAd.creativeId = firstAd.adId;\n existingAd.title = firstAd.adTitle;\n existingAd.confirmedByTracking = true;\n\n // Enrich pods with tracking ad metadata\n if (avail.ads && avail.ads.length > 0 && existingAd.pods) {\n avail.ads.forEach((trackingAd, adIndex) => {\n if (existingAd.pods[adIndex]) {\n // Update existing pod\n existingAd.pods[adIndex].title = trackingAd.adTitle;\n existingAd.pods[adIndex].creativeId = trackingAd.adId;\n existingAd.pods[adIndex].trackingStartTime = trackingAd.startTimeInSeconds;\n existingAd.pods[adIndex].trackingDuration = trackingAd.durationInSeconds;\n } else {\n // Add new pod from tracking\n existingAd.pods.push({\n startTime: trackingAd.startTimeInSeconds,\n duration: trackingAd.durationInSeconds,\n endTime: trackingAd.startTimeInSeconds + trackingAd.durationInSeconds,\n title: trackingAd.adTitle,\n creativeId: trackingAd.adId,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n });\n }\n });\n }\n } else {\n // Add new ad from tracking\n newAds.push({\n id: avail.availId,\n startTime: firstAd.startTimeInSeconds,\n duration: avail.durationInSeconds,\n endTime: firstAd.startTimeInSeconds + avail.durationInSeconds,\n title: firstAd.adTitle,\n creativeId: firstAd.adId,\n source: 'tracking-api',\n confirmedByTracking: true,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: avail.ads.map((ad) => ({\n startTime: ad.startTimeInSeconds,\n duration: ad.durationInSeconds,\n endTime: ad.startTimeInSeconds + ad.durationInSeconds,\n title: ad.adTitle,\n creativeId: ad.adId,\n hasFiredStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n })),\n });\n }\n });\n\n return newAds;\n}\n\n/**\n * Extracts the HLS live target duration from manifest text.\n * In HLS, EXT-X-TARGETDURATION is the closest manifest-level hint for refresh cadence.\n */\nexport function extractHlsTargetDurationSeconds(manifestText) {\n const match = manifestText.match(REGEX_HLS_TARGET_DURATION);\n return match ? parseInt(match[1], 10) : null;\n}\n\n/**\n * Extracts the DASH live minimumUpdatePeriod from MPD manifest text.\n * In DASH, minimumUpdatePeriod is the MPD's refresh hint for clients polling a live manifest.\n */\nexport function extractDashMinimumUpdatePeriodSeconds(manifestText) {\n const match = manifestText.match(REGEX_DASH_MINIMUM_UPDATE_PERIOD);\n return match ? parseIsoDuration(match[1]) : null;\n}\n\nasync function fetchTextOrThrow(url) {\n const response = await fetch(url, { credentials: 'include' });\n\n if (response.ok === false) {\n throw new Error(\n `Manifest request failed: ${response.status || 'unknown'} ${\n response.statusText || 'Request failed'\n }`\n );\n }\n\n return await response.text();\n}\n\n/**\n * Fetches HLS master manifest and returns master text + first media playlist URL\n */\nexport async function fetchHlsMasterManifest(manifestUrl) {\n const masterText = await fetchTextOrThrow(manifestUrl);\n\n // Find first media playlist URL\n const lines = masterText.split('\\n');\n let mediaPlaylistUrl = null;\n\n for (const line of lines) {\n if (!line.startsWith(HLS_TAG_PREFIX) && line.includes(HLS_MANIFEST_EXTENSION)) {\n mediaPlaylistUrl = new URL(line.trim(), manifestUrl).href;\n break;\n }\n }\n\n return { masterText, mediaPlaylistUrl };\n}\n\n/**\n * Fetches HLS media playlist and returns text\n */\nexport async function fetchHlsMediaPlaylist(playlistUrl) {\n return await fetchTextOrThrow(playlistUrl);\n}\n\n/**\n * Fetches DASH MPD manifest and returns XML text\n */\nexport async function fetchDashManifest(manifestUrl) {\n return await fetchTextOrThrow(manifestUrl);\n}\n\n/**\n * Parses ISO 8601 duration string to seconds\n * e.g. \"PT1M14S\" → 74, \"PT10S\" → 10, \"PT12M54S\" → 774\n */\nexport function parseIsoDuration(durationStr) {\n if (!durationStr) return 0;\n const match = durationStr.match(REGEX_ISO_8601_DURATION);\n if (!match) return 0;\n const hours = parseFloat(match[1] || 0);\n const minutes = parseFloat(match[2] || 0);\n const seconds = parseFloat(match[3] || 0);\n return hours * 3600 + minutes * 60 + seconds;\n}\n\n/**\n * Parses DASH MPD for ad breaks — supports both MULTI_PERIOD and SINGLE_PERIOD formats.\n *\n * MULTI_PERIOD (MediaTailor default): ad breaks are separate <Period> elements\n * whose <BaseURL> points to segments.mediatailor.amazonaws.com.\n *\n * SINGLE_PERIOD: the entire stream is one period; ads are signalled via\n * SCTE-35 <EventStream> elements inside that period.\n */\nexport function parseDashManifestForAdBreaks(xmlText, { adSegmentPrefix } = {}) {\n const parser = new DOMParser();\n const xml = parser.parseFromString(xmlText, 'text/xml');\n const ads = [];\n\n const parserError = xml.querySelector('parsererror');\n if (parserError) {\n Log.error('[MT] DASH XML parse error:', parserError.textContent);\n return ads;\n }\n\n const periods = xml.querySelectorAll('Period');\n Log.debug(`[MT] Found ${periods.length} Period(s) in DASH manifest`);\n\n if (periods.length > 1) {\n // ── MULTI_PERIOD ──────────────────────────────────────────────────────────\n // Ad periods are identified by a BaseURL pointing to the MediaTailor CDN.\n periods.forEach((period) => {\n const baseUrlEl = period.querySelector('BaseURL');\n const baseUrl = baseUrlEl ? baseUrlEl.textContent.trim() : '';\n\n const adCandidates = [MT_SEGMENT_PATTERN, MT_DEFAULT_AD_SEGMENT_PATH];\n if (adSegmentPrefix) adCandidates.push(adSegmentPrefix);\n if (!adCandidates.some((m) => baseUrl.includes(m))) {\n return; // content period\n }\n\n const periodId = period.getAttribute('id') || '';\n const startTime = parseIsoDuration(period.getAttribute('start') || 'PT0S');\n const duration = parseIsoDuration(period.getAttribute('duration') || '');\n\n if (duration < MIN_AD_DURATION) {\n Log.debug(`[MT] Skipping period ${periodId} - duration too short (${duration}s)`);\n return;\n }\n\n Log.debug(`[MT] Ad period detected: ${periodId}`, { startTime, duration });\n\n ads.push({\n id: periodId,\n startTime,\n duration,\n endTime: startTime + duration,\n source: AD_SOURCE.MANIFEST_CUE,\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n });\n });\n } else {\n // ── SINGLE_PERIOD ─────────────────────────────────────────────────────────\n // Ads are signalled via SCTE-35 EventStream elements within the single period.\n const eventStreams = xml.querySelectorAll(\n DASH_SCTE35_EVENT_STREAM_SELECTOR,\n );\n\n Log.debug(`[MT] Found ${eventStreams.length} SCTE-35 EventStream(s) in single-period manifest`);\n\n eventStreams.forEach((stream) => {\n const timescale = parseFloat(stream.getAttribute('timescale') || '1');\n\n stream.querySelectorAll('Event').forEach((event) => {\n const presentationTime = parseFloat(event.getAttribute('presentationTime') || 0);\n const duration = parseFloat(event.getAttribute('duration') || 0);\n const eventId =\n event.getAttribute('id') ||\n `${SCTE35_SCHEME_MARKER}-${presentationTime}`;\n\n const startTime = timescale !== 1 ? presentationTime / timescale : presentationTime;\n const durationSeconds = timescale !== 1 ? duration / timescale : duration;\n\n if (durationSeconds < MIN_AD_DURATION) {\n Log.debug(`[MT] Skipping event ${eventId} - duration too short (${durationSeconds}s)`);\n return;\n }\n\n Log.debug(`[MT] SCTE-35 event detected: ${eventId}`, { startTime, durationSeconds });\n\n ads.push({\n id: eventId,\n startTime,\n duration: durationSeconds,\n endTime: startTime + durationSeconds,\n source: AD_SOURCE.MANIFEST_CUE,\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n hasFiredQ1: false,\n hasFiredQ2: false,\n hasFiredQ3: false,\n pods: [],\n });\n });\n });\n }\n\n Log.debug(`[MT] Parsed ${ads.length} valid ad break(s) from DASH manifest`);\n return ads;\n}\n\n/**\n * Fetches tracking metadata from AWS MediaTailor Tracking API\n * @param {string} trackingEndpointUrl - The tracking API URL\n * @param {number} timeout - Timeout in milliseconds\n * @param {AbortSignal} externalSignal - Optional external abort signal for cancellation\n */\nexport async function getTrackingMetadata(trackingEndpointUrl, timeout = 8000, externalSignal = null) {\n // Create AbortController for timeout support\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeout);\n\n // If external signal provided, listen for its abort event\n const abortHandler = () => controller.abort();\n if (externalSignal) {\n externalSignal.addEventListener('abort', abortHandler);\n }\n\n try {\n const response = await fetch(`${trackingEndpointUrl}?t=${Date.now()}`, {\n signal: controller.signal,\n credentials: 'include',\n });\n\n clearTimeout(timeoutId);\n if (externalSignal) {\n externalSignal.removeEventListener('abort', abortHandler);\n }\n\n if (!response.ok) {\n throw new Error(`Tracking API error: ${response.status}`);\n }\n\n return await response.json();\n } catch (error) {\n clearTimeout(timeoutId);\n if (externalSignal) {\n externalSignal.removeEventListener('abort', abortHandler);\n }\n throw error;\n }\n}\n\n/**\n * Extracts first media playlist URL from HLS master manifest text\n */\nexport function extractMediaPlaylistUrl(masterText, baseUrl) {\n const lines = masterText.split('\\n');\n\n for (const line of lines) {\n if (\n !line.startsWith(HLS_TAG_PREFIX) &&\n line.includes(HLS_MANIFEST_EXTENSION)\n ) {\n return new URL(line.trim(), baseUrl).href;\n }\n }\n\n return null;\n}\n","/* eslint-disable no-undef */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\nimport {\n DEFAULT_LIVE_POLL_INTERVAL_MS,\n HLS_MIME_TYPE,\n MEDIATAILOR_HOST_MARKER,\n SCTE35_SCHEME_MARKER,\n TRACKING_API_TIMEOUT_MS,\n STREAM_TYPE,\n MANIFEST_TYPE,\n} from './utils/mt-constants.js';\nimport {\n getTimestamp,\n detectManifestFormatFromUrl,\n detectPlaybackStreamType,\n buildTrackingEndpointUrl,\n determineAdPosition,\n getQuartilesToFire,\n findActiveAdBreak,\n findActivePod,\n mergeAdSchedules,\n parseHlsManifestForAdBreaks,\n parseDashManifestForAdBreaks,\n detectAdBreaksFromVhsPlaylist,\n whichAdSegmentMarker,\n enrichAdScheduleWithTrackingMetadata,\n extractHlsTargetDurationSeconds,\n extractDashMinimumUpdatePeriodSeconds,\n fetchHlsMasterManifest,\n fetchHlsMediaPlaylist,\n fetchDashManifest,\n getTrackingMetadata,\n} from './utils/mt.js';\n\n// Handle both direct and default export from video-core\nconst nrvideoCore = nrvideo.default || nrvideo;\nconst Log = nrvideoCore.Log;\n\n/**\n * AWS MediaTailor Ad Tracker\n * Tracks ads from AWS MediaTailor SSAI streams (HLS/DASH)\n *\n * Features:\n * - Client-side ad detection from manifest markers (CUE-OUT/CUE-IN)\n * - Pod-level tracking (multiple ads within one break)\n * - VOD and Live stream support\n * - Zero race conditions via VHS player hooks\n * - Tracking API metadata enrichment\n */\nexport default class MediaTailorAdsTracker extends VideojsAdsTracker {\n /**\n * Checks if tracker should be used for this player source\n */\n static isUsing(player, options = {}) {\n // Opt-in flag is the single source of truth.\n // Accepts { mediatailor: true } or { mediatailor: { trackingUrl, adSegmentPrefix } }.\n return Boolean(options && options.mediatailor);\n }\n\n /**\n * Returns tracker name for New Relic instrumentation\n */\n getTrackerName() {\n return 'aws-media-tailor';\n }\n\n /**\n * Returns player version (MediaTailor doesn't have version)\n */\n getPlayerVersion() {\n return 'MediaTailor';\n }\n\n /**\n * Override to return the correct ad position from our ad schedule\n * This overrides video-core's default logic which only checks if content started\n */\n getAdPosition() {\n if (this.currentAdBreak && this.currentAdBreak.adPosition) {\n return this.currentAdBreak.adPosition;\n }\n return super.getAdPosition();\n }\n\n constructor(player, options = {}) {\n super(player);\n\n // Normalize mediatailor option: true | { trackingUrl, adSegmentPrefix } | undefined\n const mtOptions =\n options.mediatailor === true ? {} : options.mediatailor || {};\n\n // Initialize state\n this.streamType = null; // 'vod' or 'live'\n this.manifestFormat = null; // 'hls' or 'dash'\n this.playbackManifestUrl = player.currentSrc();\n\n // trackingUrl: optional override for the MediaTailor tracking endpoint.\n // When not provided, the tracker derives it automatically from the playback URL.\n this.explicitTrackingUrl = mtOptions.trackingUrl || null;\n\n // adSegmentPrefix: only needed when the customer configured a CDN ad-segment\n // prefix in AWS MediaTailor that does NOT follow the AWS-recommended /tm/ path.\n // Most setups (default AWS hostname or CDN following AWS conventions) are\n // detected automatically via MT_DEFAULT_AD_SEGMENT_PATH ('/tm/') and do not\n // need this override.\n this.adSegmentPrefix = mtOptions.adSegmentPrefix || null;\n\n if (this.adSegmentPrefix) {\n Log.debug(`[MT] ad segment detection: custom prefix \"${this.adSegmentPrefix}\"`);\n } else {\n Log.debug('[MT] ad segment detection: default (segments.mediatailor hostname or /tm/ path)');\n }\n\n // Ad tracking state\n this.adSchedule = [];\n this.currentAdBreak = null;\n this.currentAdPod = null;\n this.hasEndedContent = false;\n\n // Disposal and abort state\n this.isDisposed = false;\n this.trackingAbortController = null;\n this.manifestAbortController = null;\n this.isFetchingTracking = false;\n this.isFetchingManifest = false;\n\n // Tracking API state\n this.trackingEndpointUrl = null;\n this.hasAttemptedTrackingFetch = false;\n this.trackingFetchRetries = 0;\n this.maxTrackingRetries = 1;\n\n // Live polling timers\n this.manifestPollTimer = null;\n this.trackingPollTimer = null;\n this.liveRefreshIntervalSeconds = null;\n\n // Manifest parsing cache\n this.mediaPlaylistUrl = null;\n this.lastMediaPlaylistText = null;\n\n Log.debug(`[MT - ${getTimestamp()}] MediaTailorAdsTracker initialized`, {\n endpoint: this.playbackManifestUrl,\n trackingAPITimeout: TRACKING_API_TIMEOUT_MS,\n });\n\n this.manifestFormat = detectManifestFormatFromUrl(this.playbackManifestUrl);\n Log.debug(\n `[MT - ${getTimestamp()}] Manifest type: ${this.manifestFormat.toUpperCase()}`,\n );\n\n this.player.one('loadedmetadata', () => {\n this.streamType = detectPlaybackStreamType(this.player.duration());\n Log.debug(\n `[MT - ${getTimestamp()}] Stream type: ${this.streamType.toUpperCase()}`,\n );\n this.initializeTracking();\n });\n }\n\n /**\n * Initializes tracking based on detected stream type\n */\n initializeTracking() {\n Log.debug(\n `[MT - ${getTimestamp()}] Initializing ${this.manifestFormat.toUpperCase()} ${this.streamType.toUpperCase()} tracking`,\n );\n\n // Prefer explicit tracking URL (explicit POST session) over derived one\n this.trackingEndpointUrl =\n this.explicitTrackingUrl ||\n buildTrackingEndpointUrl(this.playbackManifestUrl);\n if (this.trackingEndpointUrl) {\n Log.debug(\n `[MT - ${getTimestamp()}] Tracking URL extracted:`,\n this.trackingEndpointUrl,\n );\n } else {\n Log.warn(\n `[MT - ${getTimestamp()}] Could not derive tracking URL from playback URL — pass trackingUrl in mediatailor options if needed`,\n );\n }\n\n // Set up format-specific tracking\n if (this.streamType === STREAM_TYPE.VOD) {\n this.setupVODTracking();\n } else {\n this.setupLiveTracking();\n }\n }\n\n /**\n * Register listeners (overrides parent class method)\n */\n registerListeners() {\n super.registerListeners();\n\n // Bind before registering — super(player) calls registerListeners() before\n // the constructor body runs, so bindings must happen here, not in the constructor.\n this.onPause = this.onPause.bind(this);\n this.onPlaying = this.onPlaying.bind(this);\n this.onSeeking = this.onSeeking.bind(this);\n this.onSeeked = this.onSeeked.bind(this);\n this.onWaiting = this.onWaiting.bind(this);\n this.onEnded = this.onEnded.bind(this);\n this.onTimeUpdate = this.onTimeUpdate.bind(this);\n\n this.player.on('pause', this.onPause);\n this.player.on('playing', this.onPlaying);\n this.player.on('seeking', this.onSeeking);\n this.player.on('seeked', this.onSeeked);\n this.player.on('waiting', this.onWaiting);\n this.player.on('ended', this.onEnded);\n this.player.on('timeupdate', this.onTimeUpdate);\n Log.debug(`[MT - ${getTimestamp()}] Event listeners registered`);\n }\n\n /**\n * Unregister listeners (overrides parent class method)\n */\n unregisterListeners() {\n super.unregisterListeners();\n this.player.off('pause', this.onPause);\n this.player.off('playing', this.onPlaying);\n this.player.off('seeking', this.onSeeking);\n this.player.off('seeked', this.onSeeked);\n this.player.off('waiting', this.onWaiting);\n this.player.off('ended', this.onEnded);\n this.player.off('timeupdate', this.onTimeUpdate);\n this.stopLivePolling();\n }\n\n /**\n * Stops live polling timers\n */\n stopLivePolling() {\n if (this.manifestPollTimer) {\n clearTimeout(this.manifestPollTimer);\n this.manifestPollTimer = null;\n }\n\n if (this.trackingPollTimer) {\n clearInterval(this.trackingPollTimer);\n this.trackingPollTimer = null;\n }\n }\n\n /**\n * Sets up VOD tracking (single parse, no polling)\n */\n setupVODTracking() {\n Log.debug(`[MT - ${getTimestamp()}] VOD mode: Single manifest parse`);\n this.hookPlayerManifest();\n }\n\n /**\n * Sets up Live tracking (continuous polling)\n */\n setupLiveTracking() {\n Log.debug(`[MT - ${getTimestamp()}] Live mode: Continuous polling`);\n this.hookPlayerManifest();\n\n const pollingInterval = this.getLiveRefreshIntervalMs();\n\n // Start polling timers\n this.manifestPollTimer = setInterval(() => {\n this.pollManifestForNewAds();\n }, pollingInterval);\n\n this.trackingPollTimer = setInterval(() => {\n this.getAndProcessTrackingMetadata();\n }, pollingInterval);\n\n Log.debug(`[MT - ${getTimestamp()}] Live polling started`, {\n pollingInterval,\n });\n }\n\n /**\n * Returns the live polling interval in milliseconds\n */\n getLiveRefreshIntervalMs() {\n return this.liveRefreshIntervalSeconds\n ? this.liveRefreshIntervalSeconds * 1000\n : DEFAULT_LIVE_POLL_INTERVAL_MS;\n }\n\n /**\n * Updates live polling intervals after manifest metadata is detected\n */\n restartLivePollingTimers() {\n if (!this.liveRefreshIntervalSeconds) return;\n\n const newInterval = this.getLiveRefreshIntervalMs();\n Log.debug(\n `[MT - ${getTimestamp()}] Updating live polling interval: ${this.liveRefreshIntervalSeconds}s`,\n );\n\n // Restart timers with new interval\n if (this.manifestPollTimer) clearInterval(this.manifestPollTimer);\n if (this.trackingPollTimer) clearInterval(this.trackingPollTimer);\n\n this.manifestPollTimer = setInterval(() => {\n this.pollManifestForNewAds();\n }, newInterval);\n\n this.trackingPollTimer = setInterval(() => {\n this.getAndProcessTrackingMetadata();\n }, newInterval);\n }\n\n /**\n * Hooks into player's manifest loading (zero race condition)\n * Supports: VHS, Native HLS, contrib-hls, Shaka, dash.js\n */\n hookPlayerManifest() {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n if (!tech) {\n Log.debug(`[MT - ${getTimestamp()}] No tech - using fallback fetch`);\n this.getManifestDirectly();\n return;\n }\n\n // Try hooks in order of preference\n if (this.manifestFormat === MANIFEST_TYPE.HLS) {\n if (\n this.hookHLSViaVHS(tech) ||\n this.hookHLSViaNative(tech) ||\n this.hookHLSViaContribHls(tech)\n ) {\n return; // Successfully hooked\n }\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n if (this.hookDASHViaShaka(tech) || this.hookDASHViaDashJs(tech)) {\n return; // Successfully hooked\n }\n }\n\n // Fallback: Direct manifest fetch\n Log.debug(\n `[MT - ${getTimestamp()}] Using fallback: direct manifest fetch`,\n );\n this.getManifestDirectly();\n }\n\n /**\n * Hook: VHS (videojs-http-streaming) - Video.js 7.0+\n */\n hookHLSViaVHS(tech) {\n if (!tech.vhs || !tech.vhs.playlists) return false;\n\n Log.debug(`[MT - ${getTimestamp()}] Hooked: VHS`);\n\n // Parse already-loaded playlist\n const currentPlaylist = tech.vhs.playlists.media();\n if (\n currentPlaylist &&\n currentPlaylist.segments &&\n currentPlaylist.segments.length > 0\n ) {\n Log.debug(`[MT - ${getTimestamp()}] Parsing existing playlist`);\n this.parseVhsPlaylistForAdBreaks(currentPlaylist);\n }\n\n // Hook future playlist loads\n tech.vhs.on('loadedplaylist', () => {\n const playlist = tech.vhs.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n });\n\n return true;\n }\n\n /**\n * Hook: Native HLS (Safari)\n */\n hookHLSViaNative(tech) {\n // Safari uses native HLS - can't hook directly\n if (\n tech.el_ &&\n tech.el_.canPlayType &&\n tech.el_.canPlayType(HLS_MIME_TYPE)\n ) {\n Log.debug(\n `[MT - ${getTimestamp()}] Native HLS detected - using fallback`,\n );\n this.getManifestDirectly();\n return true;\n }\n return false;\n }\n\n /**\n * Hook: videojs-contrib-hls (legacy Video.js 5.x/6.x)\n */\n hookHLSViaContribHls(tech) {\n if (!tech.hls || !tech.hls.playlists) return false;\n\n Log.debug(`[MT - ${getTimestamp()}] Hooked: contrib-hls (legacy)`);\n\n // Parse already-loaded playlist\n const currentPlaylist = tech.hls.playlists.media();\n if (\n currentPlaylist &&\n currentPlaylist.segments &&\n currentPlaylist.segments.length > 0\n ) {\n this.parseVhsPlaylistForAdBreaks(currentPlaylist);\n }\n\n // Hook future playlist loads\n tech.hls.on('loadedplaylist', () => {\n const playlist = tech.hls.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n });\n\n return true;\n }\n\n /**\n * Hook: Shaka Player (DASH)\n */\n hookDASHViaShaka(tech) {\n if (!tech.shakaPlayer) return false;\n\n Log.debug(`[MT - ${getTimestamp()}] Hooked: Shaka Player`);\n tech.shakaPlayer.addEventListener('emsg', (event) => {\n this.handleDASHEmsgEvent(event);\n });\n\n return true;\n }\n\n /**\n * Hook: dash.js (DASH)\n */\n hookDASHViaDashJs(tech) {\n if (!tech.dash || !tech.dash.on) return false;\n\n Log.debug(`[MT - ${getTimestamp()}] Hooked: dash.js`);\n tech.dash.on('EVENT_MODE_ON_RECEIVE', (event) => {\n this.handleDASHEventStream(event);\n });\n\n return true;\n }\n\n /**\n * Fetches manifest directly (fallback when hooks unavailable)\n */\n async getManifestDirectly() {\n Log.debug(\n `[MT - ${getTimestamp()}] Fallback: fetching manifest directly`,\n );\n\n try {\n const manifestUrl = this.playbackManifestUrl;\n\n if (this.manifestFormat === MANIFEST_TYPE.HLS) {\n await this.fetchAndParseHlsManifest(manifestUrl);\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n await this.fetchAndParseDashManifest(manifestUrl);\n }\n } catch (error) {\n Log.debug(`[MT - ${getTimestamp()}] Fallback fetch error:`, error);\n }\n }\n\n /**\n * Fetches and parses HLS master + media manifest\n */\n async fetchAndParseHlsManifest(manifestUrl) {\n try {\n Log.debug(`[MT - ${getTimestamp()}] Fetching HLS master manifest`);\n\n // Fetch master manifest\n const { mediaPlaylistUrl } = await fetchHlsMasterManifest(manifestUrl);\n\n if (!mediaPlaylistUrl) {\n Log.debug(`[MT - ${getTimestamp()}] No media playlist found`);\n return;\n }\n\n Log.debug(`[MT - ${getTimestamp()}] Fetching media playlist`);\n\n // Fetch media playlist\n const mediaText = await fetchHlsMediaPlaylist(mediaPlaylistUrl);\n\n const hlsTargetDurationSeconds = extractHlsTargetDurationSeconds(mediaText);\n this.updateLiveRefreshIntervalFromManifest(\n hlsTargetDurationSeconds,\n 'hls target duration',\n );\n\n // Parse for ads\n const ads = parseHlsManifestForAdBreaks(mediaText);\n if (ads.length > 0) {\n Log.debug(\n `[MT - ${getTimestamp()}] Detected ${ads.length} ad break(s)`,\n );\n this.mergeNewAds(ads);\n }\n } catch (error) {\n Log.debug(`[MT - ${getTimestamp()}] HLS fetch error:`, error);\n }\n }\n\n /**\n * Fetches and parses DASH MPD manifest\n */\n async fetchAndParseDashManifest(manifestUrl) {\n try {\n Log.debug(`[MT - ${getTimestamp()}] Fetching DASH manifest`);\n\n // Fetch DASH manifest\n const xmlText = await fetchDashManifest(manifestUrl);\n\n const dashMinimumUpdatePeriodSeconds =\n extractDashMinimumUpdatePeriodSeconds(xmlText);\n this.updateLiveRefreshIntervalFromManifest(\n dashMinimumUpdatePeriodSeconds,\n 'dash minimumUpdatePeriod',\n );\n\n // Parse for ads\n const ads = parseDashManifestForAdBreaks(xmlText);\n\n Log.debug(\n `[MT - ${getTimestamp()}] DASH: ${ads.length} ad break(s) found`,\n );\n\n if (ads.length > 0) {\n this.mergeNewAds(ads); // also triggers tracking fetch\n } else if (\n this.streamType === STREAM_TYPE.VOD &&\n this.trackingEndpointUrl &&\n !this.hasAttemptedTrackingFetch\n ) {\n // No SCTE-35 markers in manifest - fall back to tracking API directly\n Log.debug(\n `[MT - ${getTimestamp()}] DASH: no manifest cues, fetching tracking API`,\n );\n this.hasAttemptedTrackingFetch = true;\n this.getAndProcessTrackingMetadata();\n }\n } catch (error) {\n Log.debug(`[MT - ${getTimestamp()}] DASH fetch error:`, error);\n }\n }\n\n /**\n * Handles DASH emsg events from Shaka Player\n */\n handleDASHEmsgEvent(event) {\n Log.debug(`[MT - ${getTimestamp()}] DASH emsg event:`, event);\n\n try {\n // Shaka Player emits emsg events with event.detail containing the emsg box data\n const emsgData = event.detail;\n\n if (!emsgData) {\n Log.debug(`[MT - ${getTimestamp()}] No emsg data in event`);\n return;\n }\n\n // Check if this is a SCTE-35 event\n // schemeIdUri for SCTE-35: urn:scte:scte35:2013:bin or urn:scte:scte35:2014:xml\n const schemeIdUri = emsgData.schemeIdUri || '';\n\n if (!schemeIdUri.includes(SCTE35_SCHEME_MARKER)) {\n Log.debug(\n `[MT - ${getTimestamp()}] Non-SCTE-35 emsg, skipping:`,\n schemeIdUri,\n );\n return;\n }\n\n Log.debug(`[MT - ${getTimestamp()}] SCTE-35 emsg detected:`, {\n schemeIdUri: emsgData.schemeIdUri,\n value: emsgData.value,\n timescale: emsgData.timescale,\n presentationTime: emsgData.presentationTime,\n presentationTimeDelta: emsgData.presentationTimeDelta,\n eventDuration: emsgData.eventDuration,\n });\n\n // Calculate start time in seconds\n const timescale = emsgData.timescale || 1;\n const presentationTime = emsgData.presentationTime || 0;\n const eventDuration = emsgData.eventDuration || 0;\n\n const startTime = presentationTime / timescale;\n const duration = eventDuration / timescale;\n\n // Parse SCTE-35 message data\n const messageData = emsgData.messageData;\n\n if (messageData && duration > 0) {\n const adBreak = {\n id: `dash-emsg-${startTime}`,\n startTime: startTime,\n duration: duration,\n endTime: startTime + duration,\n source: 'dash-emsg',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n pods: [],\n };\n\n Log.debug(\n `[MT - ${getTimestamp()}] Adding ad break from DASH emsg:`,\n adBreak,\n );\n this.mergeNewAds([adBreak]);\n }\n } catch (error) {\n Log.debug(\n `[MT - ${getTimestamp()}] Error parsing DASH emsg event:`,\n error,\n );\n }\n }\n\n /**\n * Handles DASH event stream from dash.js\n */\n handleDASHEventStream(event) {\n Log.debug(`[MT - ${getTimestamp()}] DASH event stream:`, event);\n\n try {\n // dash.js emits events with different structure\n const eventData = event.event || event;\n\n if (!eventData) {\n Log.debug(`[MT - ${getTimestamp()}] No event data`);\n return;\n }\n\n // Check if this is a SCTE-35 event\n const schemeIdUri = eventData.schemeIdUri || '';\n\n if (!schemeIdUri.includes(SCTE35_SCHEME_MARKER)) {\n Log.debug(\n `[MT - ${getTimestamp()}] Non-SCTE-35 event, skipping:`,\n schemeIdUri,\n );\n return;\n }\n\n Log.debug(`[MT - ${getTimestamp()}] SCTE-35 event stream detected:`, {\n id: eventData.id,\n schemeIdUri: eventData.schemeIdUri,\n presentationTime: eventData.presentationTime,\n duration: eventData.duration,\n messageData: eventData.messageData,\n });\n\n // Calculate timing\n const startTime = parseFloat(eventData.presentationTime || 0);\n const duration = parseFloat(eventData.duration || 0);\n\n if (duration > 0) {\n const adBreak = {\n id: eventData.id || `dash-event-${startTime}`,\n startTime: startTime,\n duration: duration,\n endTime: startTime + duration,\n source: 'dash-event-stream',\n confirmedByTracking: false,\n hasFiredStart: false,\n hasFiredEnd: false,\n hasFiredAdStart: false,\n pods: [],\n };\n\n Log.debug(\n `[MT - ${getTimestamp()}] Adding ad break from DASH event stream:`,\n adBreak,\n );\n this.mergeNewAds([adBreak]);\n }\n } catch (error) {\n Log.debug(\n `[MT - ${getTimestamp()}] Error parsing DASH event stream:`,\n error,\n );\n }\n }\n\n /**\n * Parses VHS playlist object for ads\n */\n parseVhsPlaylistForAdBreaks(playlist) {\n Log.debug(\n `[MT - ${getTimestamp()}] Parsing VHS playlist (${\n playlist.segments?.length || 0\n } segments)`,\n );\n\n if (!playlist.segments || playlist.segments.length === 0) {\n Log.debug(`[MT - ${getTimestamp()}] No segments in playlist`);\n return;\n }\n\n this.updateLiveRefreshIntervalFromManifest(\n playlist.targetDuration,\n 'vhs target duration',\n );\n\n // VHS strips CUE tags - detect via discontinuityStarts + MediaTailor segments\n const ads = detectAdBreaksFromVhsPlaylist(playlist, {\n adSegmentPrefix: this.adSegmentPrefix,\n });\n\n if (ads.length > 0) {\n // Log which detection path matched — only on first detection to avoid noise\n if (!this._detectionPathLogged) {\n const firstSeg = playlist.segments && playlist.segments.find(s =>\n whichAdSegmentMarker(s, { adSegmentPrefix: this.adSegmentPrefix })\n );\n if (firstSeg) {\n const path = whichAdSegmentMarker(firstSeg, { adSegmentPrefix: this.adSegmentPrefix });\n Log.debug(`[MT] ad segment detection matched via: ${path}`);\n this._detectionPathLogged = true;\n }\n }\n Log.debug(\n `[MT - ${getTimestamp()}] VHS detected ${ads.length} ad break(s), ${ads.reduce(\n (sum, ab) => sum + ab.pods.length,\n 0,\n )} pod(s)`,\n );\n this.mergeNewAds(ads);\n } else {\n Log.debug(`[MT - ${getTimestamp()}] No ads detected in VHS playlist`);\n }\n }\n\n /**\n * Polls manifest for new ads (Live streams only)\n */\n async pollManifestForNewAds() {\n if (this.isDisposed) return;\n if (this.streamType !== STREAM_TYPE.LIVE) return;\n\n if (this.isFetchingManifest) {\n Log.debug(\n `[MT - ${getTimestamp()}] Manifest fetch already in progress, skipping`,\n );\n return;\n }\n\n this.isFetchingManifest = true;\n\n try {\n const tech = this.player.tech({ IWillNotUseThisInPlugins: true });\n if (tech && tech.vhs) {\n const playlist = tech.vhs.playlists.media();\n if (playlist) {\n this.parseVhsPlaylistForAdBreaks(playlist);\n }\n } else if (this.manifestFormat === MANIFEST_TYPE.DASH) {\n await this.fetchAndParseDashManifest(this.playbackManifestUrl);\n }\n } catch (error) {\n Log.debug(`[MT - ${getTimestamp()}] Manifest poll error:`, error);\n } finally {\n this.isFetchingManifest = false;\n }\n }\n\n /**\n * Merges new ads into schedule (deduplicates)\n */\n mergeNewAds(newAds) {\n this.adSchedule = mergeAdSchedules(this.adSchedule, newAds);\n\n Log.debug(\n `[MT - ${getTimestamp()}] Ad schedule: ${this.adSchedule.length} ad break(s)`,\n );\n\n // VOD: Fetch tracking metadata after first manifest parse (AWS best practice)\n if (\n this.streamType === STREAM_TYPE.VOD &&\n this.trackingEndpointUrl &&\n !this.hasAttemptedTrackingFetch\n ) {\n this.hasAttemptedTrackingFetch = true;\n Log.debug(\n `[MT - ${getTimestamp()}] Fetching tracking metadata (first manifest parse)`,\n );\n this.getAndProcessTrackingMetadata();\n }\n }\n\n /**\n * Updates live polling cadence from manifest-derived metadata\n */\n updateLiveRefreshIntervalFromManifest(intervalSeconds, source) {\n if (\n this.streamType !== STREAM_TYPE.LIVE ||\n !intervalSeconds ||\n intervalSeconds <= 0\n ) {\n return;\n }\n\n if (this.liveRefreshIntervalSeconds === intervalSeconds) {\n return;\n }\n\n this.liveRefreshIntervalSeconds = intervalSeconds;\n Log.debug(\n `[MT - ${getTimestamp()}] Derived live polling interval from ${source}: ${intervalSeconds}s`,\n );\n\n if (this.manifestPollTimer || this.trackingPollTimer) {\n this.restartLivePollingTimers();\n }\n }\n\n /**\n * Fetches and processes tracking metadata from AWS MediaTailor Tracking API\n */\n async getAndProcessTrackingMetadata() {\n if (this.isDisposed || !this.trackingEndpointUrl) return;\n\n if (this.isFetchingTracking) {\n Log.debug(\n `[MT - ${getTimestamp()}] Tracking fetch already in progress, skipping`,\n );\n return;\n }\n\n this.isFetchingTracking = true;\n\n try {\n Log.debug(`[MT - ${getTimestamp()}] Fetching tracking metadata`);\n\n this.trackingAbortController = new AbortController();\n\n const data = await getTrackingMetadata(\n this.trackingEndpointUrl,\n TRACKING_API_TIMEOUT_MS,\n this.trackingAbortController.signal,\n );\n\n if (this.isDisposed) {\n Log.debug(\n `[MT - ${getTimestamp()}] Disposed during tracking fetch, ignoring result`,\n );\n return;\n }\n\n if (data.avails && data.avails.length > 0) {\n Log.debug(\n `[MT - ${getTimestamp()}] Enriching with ${data.avails.length} avail(s)`,\n );\n this.enrichWithTrackingMetadata(data.avails);\n this.trackingFetchRetries = 0;\n } else {\n Log.debug(`[MT - ${getTimestamp()}] Tracking API returned 0 avails`);\n }\n } catch (error) {\n if (error.name === 'AbortError' || this.isDisposed) {\n Log.debug(`[MT - ${getTimestamp()}] Tracking fetch aborted`);\n return;\n }\n\n Log.debug(\n `[MT - ${getTimestamp()}] Tracking API error: ${error.message}`,\n error,\n );\n\n if (this.trackingFetchRetries < this.maxTrackingRetries) {\n this.trackingFetchRetries++;\n Log.debug(\n `[MT - ${getTimestamp()}] Retrying tracking fetch (${this.trackingFetchRetries}/${this.maxTrackingRetries})`,\n );\n this.isFetchingTracking = false;\n await this.getAndProcessTrackingMetadata();\n return;\n }\n\n Log.debug(\n `[MT - ${getTimestamp()}] Max retries reached, continuing with manifest data only`,\n );\n } finally {\n this.isFetchingTracking = false;\n this.trackingAbortController = null;\n }\n }\n\n /**\n * Enriches ad schedule with tracking API metadata\n */\n enrichWithTrackingMetadata(avails) {\n const newAds = enrichAdScheduleWithTrackingMetadata(this.adSchedule, avails);\n\n // Add any new ads from tracking\n if (newAds.length > 0) {\n this.adSchedule.push(...newAds);\n this.adSchedule.sort((a, b) => a.startTime - b.startTime);\n }\n\n Log.debug(\n `[MT - ${getTimestamp()}] Enrichment complete: ${\n this.adSchedule.length\n } ad break(s)`,\n );\n\n // Log enriched schedule with full details\n Log.debug(\n `[MT - ${getTimestamp()}] Enriched schedule:`,\n this.adSchedule.map((ab) => ({\n id: ab.id,\n startTime: ab.startTime,\n endTime: ab.endTime,\n duration: ab.duration,\n title: ab.title,\n podCount: ab.pods.length,\n pods: ab.pods.map((p) => ({\n title: p.title,\n startTime: p.startTime,\n endTime: p.endTime,\n duration: p.duration,\n })),\n })),\n );\n\n // Log current player time for debugging\n Log.debug(\n `[MT - ${getTimestamp()}] Current player time: ${this.player.currentTime()}s`,\n );\n }\n\n /**\n * Tracks quartile events for active pod/ad\n */\n trackQuartiles(adObject, progress) {\n if (!adObject.duration || adObject.duration <= 0) return;\n\n const quartilesToFire = getQuartilesToFire(progress, adObject.duration, {\n q1: adObject.hasFiredQ1,\n q2: adObject.hasFiredQ2,\n q3: adObject.hasFiredQ3,\n });\n\n quartilesToFire.forEach(({ quartile, key }) => {\n Log.debug(`[MT - ${getTimestamp()}] → AD_QUARTILE ${quartile * 25}%`);\n this.sendAdQuartile({ quartile });\n adObject[`hasFired${key.toUpperCase()}`] = true;\n });\n }\n\n /**\n * Called on timeupdate - main event tracking logic\n */\n onTimeUpdate() {\n const currentTime = this.player.currentTime();\n const activeAdBreak = findActiveAdBreak(this.adSchedule, currentTime);\n\n // Debug logging (only log when schedule exists and every 5 seconds)\n if (\n this.adSchedule.length > 0 &&\n Math.floor(currentTime) % 5 === 0 &&\n Math.floor(currentTime * 10) % 10 === 0\n ) {\n Log.debug(\n `[MT - ${getTimestamp()}] TimeUpdate: ${currentTime.toFixed(2)}s, Active break: ${\n activeAdBreak ? activeAdBreak.id : 'none'\n }, Schedule count: ${this.adSchedule.length}`,\n );\n }\n\n if (activeAdBreak) {\n // === INSIDE AD BREAK ===\n\n // Fire AD_BREAK_START once\n if (!activeAdBreak.hasFiredStart) {\n this.currentAdBreak = activeAdBreak;\n this.setIsAd(true); // Switch to ad mode\n Log.debug(\n `[MT - ${getTimestamp()}] setIsAd(true) - Entering ad break`,\n );\n\n // Calculate ad position by finding index based on startTime\n const adBreakIndex = this.adSchedule.findIndex(\n (ad) => Math.abs(ad.startTime - activeAdBreak.startTime) < 0.5,\n );\n const adPosition = determineAdPosition(\n adBreakIndex,\n this.adSchedule.length,\n this.streamType,\n );\n\n // Store position on the ad break for reuse\n activeAdBreak.adPosition = adPosition;\n\n Log.debug(`[MT - ${getTimestamp()}] → AD_BREAK_START`, {\n startTime: activeAdBreak.startTime,\n duration: activeAdBreak.duration,\n podCount: activeAdBreak.pods?.length || 0,\n position: adPosition,\n breakIndex: adBreakIndex,\n totalBreaks: this.adSchedule.length,\n });\n this.sendAdBreakStart();\n activeAdBreak.hasFiredStart = true;\n }\n\n // Check for pod-level tracking\n if (activeAdBreak.pods && activeAdBreak.pods.length > 0) {\n const activePod = findActivePod(activeAdBreak, currentTime);\n\n if (activePod) {\n // Entering new pod\n if (!this.currentAdPod || this.currentAdPod !== activePod) {\n // End previous pod\n if (this.currentAdPod) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_END (pod transition)`);\n this.sendEnd();\n }\n\n // Start new pod\n this.currentAdPod = activePod;\n\n Log.debug(`[MT - ${getTimestamp()}] → AD_START (new pod)`, {\n startTime: activePod.startTime,\n duration: activePod.duration,\n position: activeAdBreak.adPosition,\n });\n\n // NOTE: If the tracking API was slow to respond, the no-pods path\n // (below) will have already called sendStart() on this break.\n // Calling sendStart() again here is intentional — video-core's state\n // machine suppresses duplicate AD_START transitions (AD_START →\n // AD_START is a no-op), so nothing double-fires in New Relic. Once\n // pods are populated by the tracking API, this path takes over and\n // provides pod-level metadata (title, duration, creativeId) for all\n // subsequent events in the break.\n this.sendRequest({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n\n this.sendStart({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n activePod.hasFiredStart = true;\n }\n\n // Track quartiles for pod\n const podProgress = currentTime - activePod.startTime;\n this.trackQuartiles(activePod, podProgress);\n }\n } else {\n // No pods - treat entire break as single ad\n if (!activeAdBreak.hasFiredAdStart) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_START (no pods)`, {\n startTime: activeAdBreak.startTime,\n duration: activeAdBreak.duration,\n position: activeAdBreak.adPosition,\n });\n\n // Send AD_REQUEST before AD_START (required sequence)\n this.sendRequest({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n\n // Send AD_START\n this.sendStart({\n adPartner: 'aws-mediatailor',\n adPosition: activeAdBreak.adPosition,\n });\n activeAdBreak.hasFiredAdStart = true;\n }\n\n // Track quartiles for entire break\n const adProgress = currentTime - activeAdBreak.startTime;\n this.trackQuartiles(activeAdBreak, adProgress);\n }\n } else if (this.currentAdBreak) {\n // === EXITING AD BREAK ===\n\n // End last pod\n if (this.currentAdPod) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_END (final pod)`);\n this.sendEnd();\n this.currentAdPod = null;\n }\n\n // End ad break\n if (!this.currentAdBreak.hasFiredEnd) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_BREAK_END`);\n this.sendAdBreakEnd();\n this.currentAdBreak.hasFiredEnd = true;\n }\n\n this.currentAdBreak = null;\n this.setIsAd(false); // Switch back to content mode\n Log.debug(`[MT - ${getTimestamp()}] setIsAd(false) - Exiting ad break`);\n\n // Check if video has ended after exiting last ad break\n if (this.player.ended() && !this.hasEndedContent) {\n Log.debug(\n `[MT - ${getTimestamp()}] Video ended after last ad → CONTENT_END`,\n );\n this.sendContentEnd();\n this.hasEndedContent = true;\n }\n }\n }\n\n /**\n * Sends CONTENT_END event via parent content tracker\n */\n sendContentEnd() {\n if (this.parentTracker) {\n this.parentTracker.sendEnd();\n } else {\n super.sendEnd();\n }\n }\n\n /**\n * Generic handler for ad events - only fires if currently in an ad break\n * @param {string} eventName - The event name for logging (e.g., 'AD_PAUSE')\n * @param {Function} sendMethod - The method to call (e.g., this.sendPause)\n */\n handleAdEvent(eventName, sendMethod) {\n if (this.isAd()) {\n Log.debug(`[MT - ${getTimestamp()}] → ${eventName}`);\n sendMethod.call(this);\n }\n }\n\n /**\n * Handle pause events - sends AD_PAUSE only when ads are playing\n */\n onPause() {\n this.handleAdEvent('AD_PAUSE', this.sendPause);\n }\n\n /**\n * Handle playing events - sends AD_RESUME only when ads are playing\n */\n onPlaying() {\n if (this.isAd()) {\n Log.debug(`[MT - ${getTimestamp()}] → AD_RESUME`);\n this.sendResume();\n this.sendBufferEnd(); // Playing event also ends any buffering\n }\n }\n\n /**\n * Handle seeking events - sends AD_SEEK_START only when ads are playing\n */\n onSeeking() {\n this.handleAdEvent('AD_SEEK_START', this.sendSeekStart);\n }\n\n /**\n * Handle seeked events - sends AD_SEEK_END only when ads are playing\n */\n onSeeked() {\n this.handleAdEvent('AD_SEEK_END', this.sendSeekEnd);\n }\n\n /**\n * Handle waiting (buffering) events - sends AD_BUFFER_START only when ads are playing\n */\n onWaiting() {\n this.handleAdEvent('AD_BUFFER_START', this.sendBufferStart);\n }\n\n /**\n * Override: Fire CONTENT_END when video ends\n */\n onEnded() {\n if (!this.hasEndedContent) {\n Log.debug(`[MT - ${getTimestamp()}] Video ended → CONTENT_END`);\n this.sendContentEnd();\n this.hasEndedContent = true;\n }\n }\n\n /**\n * Returns ad title for New Relic\n */\n getTitle() {\n if (this.currentAdPod) {\n return this.currentAdPod.title || this.currentAdBreak?.id || null;\n }\n return this.currentAdBreak?.title || this.currentAdBreak?.id || null;\n }\n\n /**\n * Returns ad ID for New Relic (adId attribute)\n */\n getVideoId() {\n if (this.currentAdPod) {\n return (\n this.currentAdPod.creativeId ||\n this.currentAdPod.title ||\n this.currentAdBreak?.id ||\n null\n );\n }\n return this.currentAdBreak?.creativeId || this.currentAdBreak?.id || null;\n }\n\n /**\n * Returns ad source URL for New Relic (adSrc attribute)\n */\n getSrc() {\n // MediaTailor doesn't provide individual creative URLs\n return this.trackingEndpointUrl || this.playbackManifestUrl || null;\n }\n\n /**\n * Returns ad duration in milliseconds for New Relic\n */\n getDuration() {\n if (this.currentAdPod) {\n return this.currentAdPod.duration * 1000;\n }\n return this.currentAdBreak ? this.currentAdBreak.duration * 1000 : null;\n }\n\n /**\n * Stops polling timers\n */\n stopPolling() {\n if (this.manifestPollTimer) {\n clearInterval(this.manifestPollTimer);\n this.manifestPollTimer = null;\n }\n\n if (this.trackingPollTimer) {\n clearInterval(this.trackingPollTimer);\n this.trackingPollTimer = null;\n }\n\n Log.debug(`[MT - ${getTimestamp()}] Polling stopped`);\n }\n\n /**\n * Cleanup when tracker is destroyed\n */\n dispose() {\n Log.debug(`[MT - ${getTimestamp()}] Disposing MediaTailorAdsTracker`);\n\n this.isDisposed = true;\n\n if (this.trackingAbortController) {\n Log.debug(`[MT - ${getTimestamp()}] Aborting in-flight tracking fetch`);\n this.trackingAbortController.abort();\n this.trackingAbortController = null;\n }\n\n if (this.manifestAbortController) {\n Log.debug(`[MT - ${getTimestamp()}] Aborting in-flight manifest fetch`);\n this.manifestAbortController.abort();\n this.manifestAbortController = null;\n }\n\n this.stopLivePolling();\n this.unregisterListeners();\n super.dispose && super.dispose();\n }\n}\n","/* global google */\nimport nrvideo from '@newrelic/video-core';\nimport VideojsAdsTracker from './videojs-ads';\n\nconst daiEvents = {\n // Stream Events\n DAI_STREAM_INITIALIZED: 'dai-stream-initialized',\n DAI_STREAM_LOADED: 'dai-stream-loaded',\n DAI_STREAM_ERROR: 'dai-stream-error',\n\n // Ad Events\n DAI_AD_BREAK_STARTED: 'dai-ad-break-started',\n DAI_AD_BREAK_ENDED: 'dai-ad-break-ended',\n DAI_AD_PERIOD_STARTED: 'dai-ad-period-started',\n DAI_AD_PERIOD_ENDED: 'dai-ad-period-ended',\n DAI_AD_STARTED: 'dai-ad-started',\n DAI_AD_FIRST_QUARTILE: 'dai-ad-first-quartile',\n DAI_AD_MIDPOINT: 'dai-ad-midpoint',\n DAI_AD_THIRD_QUARTILE: 'dai-ad-third-quartile',\n DAI_AD_COMPLETE: 'dai-ad-complete',\n DAI_AD_SKIPPED: 'dai-ad-skipped',\n DAI_AD_PAUSED: 'dai-ad-paused',\n DAI_AD_RESUMED: 'dai-ad-resumed',\n DAI_AD_CLICKED: 'dai-ad-clicked',\n DAI_AD_ERROR: 'dai-ad-error',\n\n // Cue Point Events\n DAI_CUEPOINTS_CHANGED: 'dai-cuepoints-changed',\n\n // Timed Metadata Events\n DAI_TIMED_METADATA: 'dai-timed-metadata',\n};\n\nexport default class DaiAdsTracker extends VideojsAdsTracker {\n static isUsing(player) {\n // Check for DAI plugin or imaDai method\n return (\n (player.imaDai && typeof player.imaDai === 'function') ||\n (player.dai && typeof player.dai.VERSION !== 'undefined') ||\n (player.ima && player.ima.dai) ||\n player.streamManager\n );\n }\n\n constructor(player) {\n super(player);\n this.streamManager = null;\n this.currentAdData = null;\n this.adBreakData = null;\n this.streamData = null;\n this.cuePoints = [];\n this.initialized = false;\n this.eventHandlers = null;\n }\n\n setStreamManager(streamManager) {\n this.streamManager = streamManager;\n this.setupStreamManagerListeners();\n this.initialized = true;\n nrvideo.Log.debug(\n 'DaiAdsTracker: StreamManager set and listeners registered'\n );\n }\n\n setupStreamManagerListeners() {\n if (!this.streamManager || !google?.ima?.dai?.api?.StreamEvent) {\n nrvideo.Log.warn('DaiAdsTracker: StreamManager or DAI API not available');\n return;\n }\n\n const StreamEvent = google.ima.dai.api.StreamEvent.Type;\n\n // Create the event handler mapping\n this.eventHandlers = {\n // Stream Events\n [StreamEvent.LOADED]: this.onStreamLoaded.bind(this),\n [StreamEvent.STREAM_INITIALIZED]: this.onStreamInitialized.bind(this),\n [StreamEvent.ERROR]: this.onStreamError.bind(this),\n\n // Ad Break Events\n [StreamEvent.AD_BREAK_STARTED]: this.onAdBreakStarted.bind(this),\n [StreamEvent.AD_BREAK_ENDED]: this.onAdBreakEnded.bind(this),\n\n // Ad Period Events\n [StreamEvent.AD_PERIOD_STARTED]: this.onAdPeriodStarted.bind(this),\n [StreamEvent.AD_PERIOD_ENDED]: this.onAdPeriodEnded.bind(this),\n\n // Individual Ad Events\n [StreamEvent.STARTED]: this.onAdStarted.bind(this),\n [StreamEvent.FIRST_QUARTILE]: this.onAdFirstQuartile.bind(this),\n [StreamEvent.MIDPOINT]: this.onAdMidpoint.bind(this),\n [StreamEvent.THIRD_QUARTILE]: this.onAdThirdQuartile.bind(this),\n [StreamEvent.COMPLETE]: this.onAdComplete.bind(this),\n [StreamEvent.SKIPPED]: this.onAdSkipped.bind(this),\n [StreamEvent.PAUSED]: this.onAdPaused.bind(this),\n [StreamEvent.RESUMED]: this.onAdResumed.bind(this),\n [StreamEvent.CLICK]: this.onAdClicked.bind(this),\n [StreamEvent.VIDEO_CLICKED]: this.onAdClicked.bind(this),\n\n // Cue Points and Metadata Events\n [StreamEvent.CUEPOINTS_CHANGED]: this.onCuePointsChanged.bind(this),\n [StreamEvent.TIMED_METADATA]: this.onTimedMetadata.bind(this),\n };\n\n // Register all event listeners using the mapping\n Object.entries(this.eventHandlers).forEach(([eventType, handler]) => {\n this.streamManager.addEventListener(eventType, handler);\n });\n\n nrvideo.Log.debug('DaiAdsTracker: StreamManager listeners registered');\n }\n\n registerListeners() {\n // Call parent to register basic videojs-ads events\n super.registerListeners();\n\n nrvideo.Log.debugCommonVideoEvents(this.player, [\n null,\n Object.values(daiEvents),\n ]);\n }\n\n unregisterListeners() {\n // Call parent cleanup\n super.unregisterListeners();\n\n // Clean up StreamManager listeners using the same mapping\n if (this.streamManager && this.eventHandlers) {\n Object.entries(this.eventHandlers).forEach(([eventType, handler]) => {\n this.streamManager.removeEventListener(eventType, handler);\n });\n }\n\n // Reset state\n this.streamManager = null;\n this.currentAdData = null;\n this.adBreakData = null;\n this.streamData = null;\n this.cuePoints = [];\n this.initialized = false;\n this.eventHandlers = null;\n }\n\n // Stream Event Handlers\n onStreamLoaded(event) {\n this.streamData = this.extractStreamData(event);\n nrvideo.Log.debug('DaiAdsTracker: Stream loaded', this.streamData);\n this.sendRequest();\n }\n\n onStreamInitialized(event) {\n nrvideo.Log.debug('DaiAdsTracker: Stream initialized');\n this.sendDownload({ state: 'stream-initialized' });\n }\n\n onStreamError(event) {\n const errorData = this.extractErrorData(event);\n nrvideo.Log.error('DaiAdsTracker: Stream error', errorData);\n this.sendError(errorData);\n }\n\n // Ad Break Event Handlers\n onAdBreakStarted(event) {\n this.adBreakData = this.extractAdBreakData(event);\n nrvideo.Log.debug('DaiAdsTracker: Ad break started', this.adBreakData);\n this.sendAdBreakStart(this.adBreakData);\n }\n\n onAdBreakEnded(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad break ended');\n this.sendAdBreakEnd();\n this.adBreakData = null;\n }\n\n // Ad Period Event Handlers (for bumpers, etc.)\n onAdPeriodStarted(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad period started');\n // Track as ad break start if no current break\n if (!this.adBreakData) {\n this.onAdBreakStarted(event);\n }\n }\n\n onAdPeriodEnded(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad period ended');\n // Don't end the break here as there might be more ads\n }\n\n // Individual Ad Event Handlers\n onAdStarted(event) {\n this.currentAdData = this.extractAdData(event);\n nrvideo.Log.debug('DaiAdsTracker: Ad started', this.currentAdData);\n this.sendStart();\n }\n\n onAdFirstQuartile(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad first quartile');\n this.sendAdQuartile({ quartile: 1 });\n }\n\n onAdMidpoint(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad midpoint');\n this.sendAdQuartile({ quartile: 2 });\n }\n\n onAdThirdQuartile(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad third quartile');\n this.sendAdQuartile({ quartile: 3 });\n }\n\n onAdComplete(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad complete');\n this.sendEnd();\n this.currentAdData = null;\n }\n\n onAdSkipped(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad skipped');\n this.sendEnd({ skipped: true });\n this.currentAdData = null;\n }\n\n onAdPaused(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad paused');\n this.sendPause();\n }\n\n onAdResumed(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad resumed');\n this.sendResume();\n }\n\n onAdClicked(event) {\n nrvideo.Log.debug('DaiAdsTracker: Ad clicked');\n this.sendAdClick({ url: this.getClickThroughUrl() });\n }\n\n // Cue Points Handler\n onCuePointsChanged(event) {\n this.cuePoints = this.extractCuePoints(event);\n nrvideo.Log.debug('DaiAdsTracker: Cue points changed', this.cuePoints);\n }\n\n // Timed Metadata Handler\n onTimedMetadata(event) {\n const metadata = this.extractTimedMetadata(event);\n nrvideo.Log.debug('DaiAdsTracker: Timed metadata', metadata);\n }\n\n // Data Extraction Methods\n extractStreamData(event) {\n try {\n const streamData = event.getStreamData();\n return {\n streamId: streamData?.streamId,\n url: streamData?.url,\n adTagParameters: streamData?.adTagParameters,\n streamType: this.getStreamType(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract stream data', error);\n return {};\n }\n }\n\n extractAdBreakData(event) {\n try {\n const adBreakData = event.getAdBreak();\n return {\n adBreakId: adBreakData?.id,\n adBreakTitle: adBreakData?.title,\n adCount: adBreakData?.ads?.length || 0,\n position: this.getAdPosition(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract ad break data', error);\n return {};\n }\n }\n\n extractAdData(event) {\n try {\n const ad = event.getAd();\n return {\n adId: ad?.getAdId(),\n creativeId: ad?.getCreativeId(),\n duration: ad?.getDuration(),\n title: ad?.getTitle(),\n description: ad?.getDescription(),\n advertiserName: ad?.getAdvertiserName(),\n clickThroughUrl: ad?.getClickThroughUrl(),\n dealId: ad?.getDealId(),\n wrapperAdIds: ad?.getWrapperAdIds(),\n position: this.getAdPosition(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract ad data', error);\n return {};\n }\n }\n\n extractErrorData(event) {\n try {\n const error = event.getError();\n return {\n errorCode: error?.getErrorCode(),\n errorMessage: error?.getMessage(),\n innerError: error?.getInnerError(),\n };\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract error data', error);\n return { errorMessage: 'Unknown DAI error' };\n }\n }\n\n extractCuePoints(event) {\n try {\n return event.getCuepoints() || [];\n } catch (error) {\n nrvideo.Log.warn('DaiAdsTracker: Failed to extract cue points', error);\n return [];\n }\n }\n\n extractTimedMetadata(event) {\n try {\n return {\n type: event.getType(),\n data: event.getData(),\n };\n } catch (error) {\n nrvideo.Log.warn(\n 'DaiAdsTracker: Failed to extract timed metadata',\n error\n );\n return {};\n }\n }\n\n // Override parent methods for DAI-specific implementations\n getTrackerName() {\n return 'dai-ads';\n }\n\n getPlayerName() {\n return 'videojs-dai';\n }\n\n getPlayerVersion() {\n if (this.player.dai?.VERSION) {\n return this.player.dai.VERSION;\n }\n if (this.player.ima?.VERSION) {\n return `ima-dai: ${this.player.ima.VERSION}`;\n }\n return 'unknown';\n }\n\n getAdCuePoints() {\n return this.cuePoints;\n }\n\n getAdPosition() {\n if (!this.currentAdData && !this.adBreakData) return null;\n\n // Try to determine position from current playback time\n const currentTime = this.player.currentTime();\n const duration = this.player.duration();\n\n if (currentTime < 5) {\n return 'pre';\n } else if (duration && currentTime > duration - 10) {\n return 'post';\n } else {\n return 'mid';\n }\n }\n\n getDuration() {\n if (this.currentAdData?.duration !== undefined) {\n return this.currentAdData.duration * 1000; // Convert to milliseconds\n }\n return null;\n }\n\n getVideoId() {\n return this.currentAdData?.adId || null;\n }\n\n getAdCreativeId() {\n return this.currentAdData?.creativeId || null;\n }\n\n getTitle() {\n return this.currentAdData?.title || null;\n }\n\n getSrc() {\n return this.streamData?.url || null;\n }\n\n getPlayhead() {\n if (this.streamManager) {\n try {\n const streamTime = this.streamManager.getStreamTime();\n return streamTime * 1000; // Convert to milliseconds\n } catch (error) {\n // Fallback to player current time\n return this.player.currentTime() * 1000;\n }\n }\n return this.player.currentTime() * 1000;\n }\n\n getAdPartner() {\n return 'google-dai';\n }\n\n getClickThroughUrl() {\n return this.currentAdData?.clickThroughUrl || null;\n }\n\n getStreamType() {\n // Determine if this is VOD or Live\n if (this.streamData?.streamType) {\n return this.streamData.streamType;\n }\n // Try to infer from player\n const duration = this.player.duration();\n return duration === Infinity ? 'live' : 'vod';\n }\n\n // Additional helper methods\n isLiveStream() {\n return this.getStreamType() === 'live';\n }\n\n getCurrentAdBreak() {\n return this.adBreakData;\n }\n\n getCurrentAd() {\n return this.currentAdData;\n }\n\n getStreamData() {\n return this.streamData;\n }\n\n getBitrate() {\n const tech = this.getTech()\n if (tech && tech.tech && tech.tech.stats && tech.tech.stats.bandwidth) {\n return Math.round(tech.tech.stats.bandwidth);\n }\n return null;\n }\n\n getRenditionBitrate() {\n const tech = this.getTech();\n if (tech && tech.getRenditionBitrate) {\n const bitrate = tech.getRenditionBitrate();\n return bitrate !== null ? Math.round(bitrate) : null;\n }\n return null;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import VideojsTracker from './tracker';\nexport default VideojsTracker;"],"names":["e","_videojsAds","require","__esModule","default","FreewheelAdsTracker","VideojsAdsTracker","isUsing","player","FreeWheelPlugin","tv","freewheel","getTrackerName","getPlayerName","getPlayerVersion","this","VERSION","getPlayhead","ads","ad","currentTime","getDuration","duration","getVideoId","id","getAdPartner","getAdCreativeId","provider","event","adInstance","getActiveCreativeRendition","getId","err","getSrc","getPrimaryCreativeRenditionAsset","getUrl","getTitle","getName","getAdPosition","type","nrvideo","Constants","AdPositions","PRE","MID","POST","exports","_videoCore","_interopRequireDefault","BrightcoveImaAdsTracker","ima3","adPlayer","registerListeners","Log","debugCommonVideoEvents","on","onStarted","bind","onPaused","onResume","onComplete","onSkipped","onError","onClick","unregisterListeners","off","sendRequest","sendStart","sendPause","sendResume","sendEnd","skipped","sendError","sendClick","HlsJs","constructor","tech","vhs_","el","getResource","url","getRenditionName","level","levels","currentLevel","name","getRenditionBitrate","bitrate","Math","round","getRenditionWidth","width","getRenditionHeight","height","getBitrate","getContentBitratePlayback","getManifestBitrate","length","max","map","l","getSegmentDownloadBitrate","stats","bandwidth","getNetworkDownloadBitrate","throughput","ImaAdsTracker","ima","google","getCuePoints","getAdsManager","lastAdData","podInfo","undefined","podIndex","adId","creativeId","mediaUrl","title","manager","getRemainingTime","getPlayrate","playbackRate","getWebkitBitrate","adVideoElement","getAdVideoElement","webkitVideoDecodedByteCount","_lastAdWebkitBitrate","delta","seconds","getHeartbeat","renditionBitrate","AdEvent","Type","AD_ERROR","AdErrorEvent","addEventListener","ALL_ADS_COMPLETED","LINEAR_CHANGED","COMPLETE","USER_CLOSE","IMPRESSION","CONTENT_PAUSE_REQUESTED","CONTENT_RESUME_REQUESTED","SKIPPED","SKIPPABLE_STATE_CHANGED","LOADED","PAUSED","RESUMED","STARTED","AD_CAN_PLAY","AD_METADATA","EXPANDED_CHANGED","AD_BREAK_READY","LOG","CLICK","FIRST_QUARTILE","MIDPOINT","THIRD_QUARTILE","onLoaded","onStart","onResumed","onFirstQuartile","onMidpoint","onThirdQuartile","removeEventListener","onImpression","getAdData","adError","getError","errorCode","getErrorCode","errorMessage","getMessage","sendAdClick","sendAdQuartile","adQuartile","adsManager","currentAd","getCurrentAd","getAdId","getCreativeId","getMediaUrl","getAdPodInfo","data","getVastMediaBitrate","controller","adUi","adContainerDiv","querySelector","_package","_contribHls","_hlsJs","_shaka","_ima","_brightcoveIma","_freewheel","_dai","_mediaTailor","AD_TRACKING","CSAI","SSAI","Object","freeze","DAI","MT","VideojsTracker","VideoTracker","options","super","isContentEnd","imaAdCuePoints","daiInitialized","adTracking","config","warn","adConfig","assign","mediatailor","segmentPrefix","trackingUrl","Core","addTracker","setAdTracking","valid","values","includes","debug","join","getTech","IWillNotUseThisInPlugins","ContribHlsTech","HlsJsTech","ShakaTech","getInstrumentationProvider","getInstrumentationName","getInstrumentationVersion","getTrackerVersion","pkg","version","state","snapshot","absoluteTime","mediainfo","getLanguage","language","currentSrc","videojs","isMuted","muted","vhs","playlists","media","activePlaylist","attributes","BANDWIDTH","techWrapper","allRenditions","master","maxBitrate","p","videoHeight","videoWidth","isAutoplayed","autoplay","isFullscreen","getPreload","preload","onDownload","onAdsready","onAdStart","onAdEnd","onPlay","onPause","onPlaying","onAbort","onEnded","onDispose","onSeeking","onSeeked","onWaiting","onTimeupdate","OnAdsAllpodsCompleted","onStreamManager","onCanPlayThrough","sendDownload","adsTracker","setAdsTracker","MediaTailorAdsTracker","setIsAd","StreamManager","daiTracker","DaiAdsTracker","setStreamManager","currentAdPlaying","FreewheelAdsCompleted","isAdsTrackerActive","isAd","ended","sendBufferEnd","sendSeekStart","sendSeekEnd","error","code","message","sendBufferStart","VOD","LIVE","HLS","DASH","PRE_ROLL","MID_ROLL","POST_ROLL","MANIFEST_CUE","VHS_DISCONTINUITY","TRACKING_API","MANIFEST_AND_TRACKING","DASH_EMSG","DASH_EVENT_STREAM","Q1","Q2","Q3","shakaPlayer","getManifestUri","getStats","streamBandwidth","tracks","getVariantTracks","t","videoBandwidth","audioBandwidth","i","track","active","estimatedBandwidth","NAME","RESOLUTION","onAdrequest","onAdload","onAdstart","onAdend","onAdskip","onAdserror","onAdsClick","onPodStart","onPodEnd","onAdspause","onAdsplay","sendAdBreakStart","sendAdBreakEnd","quartile","r","d","videoAnalyticsHarvester","h","s","a","n","o","isInitialized","harvestScheduler","eventBuffer","initialize","A","startScheduler","notice","addEvent","actionName","Events","QOE_AGGREGATE","viewId","addOrReplaceByActionNameAndViewId","addOrReplaceByActionName","add","setHarvestInterval","updateHarvestInterval","forceNextQoeCycle","setBeforeDrainCallback","beforeDrainCallback","refreshQoeKpis","findByActionNameAndViewId","findByActionName","QOE_KPI_KEYS","reset","startTime","stopTime","accumulator","offset","getDeltaTime","Date","getTime","start","stop","clone","COLLECTOR","US","EU","Staging","GOV","VALID_EVENT_TYPES","MAX_PAYLOAD_SIZE","MAX_BEACON_SIZE","MAX_EVENTS_PER_BATCH","INTERVAL","QOE_AGGREGATE_KEYS","_listeners","push","indexOf","splice","emit","Array","isArray","forEach","call","eventType","target","buffer","maxPayloadSize","maxEventsPerBatch","currentPayloadSize","totalEvents","smartHarvestPayloadThreshold","floor","overflowPayloadThreshold","smartHarvestEventThreshold","overflowEventThreshold","onSmartHarvestTrigger","findIndex","find","makeRoom","checkSmartHarvestTrigger","setSmartHarvestCallback","drain","isEmpty","size","clear","shift","retryQueueHandler","u","httpClient","X","fallBackUrl","retryCount","triggerSmartHarvest","isStarted","currentTimerId","harvestCycle","isHarvesting","qoeCycleCount","_lastSentQoeKpis","setupPageLifecycleHandlers","eventBufferSize","scheduleNextHarvest","stopScheduler","clearTimeout","threshold","triggerHarvest","setTimeout","onHarvestInterval","getQueueSize","success","reason","drainEvents","isFinalHarvest","trimEventsToFit","sendChunk","totalChunks","results","handleHarvestFailure","consecutiveFailures","ins","unshift","slice","originalCount","trimmedCount","finalSize","maxSize","addFailedEvents","window","NRVIDEO","qoeIntervalFactor","_qoeKpisUnchanged","_saveQoeKpis","c","getRetryEventsToFit","c$","payload","body","isLastChunk","Promise","send","retry","handleRequestFailure","status","chunk","eventCount","info","region","isNaN","force","document","hidden","Levels","ERROR","WARNING","arguments","NOTICE","DEBUG","concat","addEventHandler","prefix","includeTime","getDate","getMinutes","getSeconds","getMilliseconds","SILENT","colorful","documentMode","console","cast","log","apply","ALL","location","search","exec","Error","callback","executeRequest","now","JSON","stringify","obfuscate","reduce","regex","RegExp","flags","source","replace","replacement","navigator","sendBeacon","sendWithBeacon","handleRequestComplete","fetchWithTimeout","method","headers","keepalive","ok","statusText","Sc","AbortController","abort","fetch","signal","retryQueue","maxQueueSize","maxQueueSizeBytes","queueSizeBefore","evictOldestEvent","discardEvent","customData","heartbeat","parentTracker","_trackerReadyChrono","_actionTable","ACTION_TABLE","_actionAdTable","ACTION_AD_TABLE","setOptions","dispose","_isAd","startHeartbeat","_heartbeatInterval","setInterval","sendHeartbeat","stopHeartbeat","clearInterval","sendVideoAction","HEARTBEAT","getAttributes","trackerName","trackerVersion","coreVersion","rE","timeSinceTrackerReady","isBackgroundEvent","sendVideoAdAction","sendVideoErrorAction","sendVideoCustomAction","z8","beacon","licenseKey","applicationID","href","ArrayBuffer","byteLength","Blob","FormData","WeakSet","has","defineProperty","enumerable","get","prototype","hasOwnProperty","Symbol","toStringTag","value","appName","qoe","timestamp","timeSinceLoad","performance","g","m","qoeAggregateVersion","f","qoeAggregate","setConfiguration","validateRequiredFields","validateConfigFields","initializeGlobalConfig","flatMap","keys","filterObfuscateRules","filter","sanitizeQoeIntervalFactor","Number","isInteger","trackerInit","removeTracker","getTrackers","forceHarvest","E","_createdAt","_hb","_acc","_bufferAcc","_viewSession","_viewCount","numberOfErrors","numberOfAds","numberOfVideos","totalPlaytime","weightedAverageBitrate","totalAdPlaytime","isAdBreak","initialBufferingHappened","startupTime","peakBitrate","_lastBitrate","_lastBitrateChangeTimestamp","partialAverageBitrate","_totalBitrateDuration","hadStartupError","hadPlaybackError","totalRebufferingTime","resetFlags","resetChronos","isPlayerReady","isRequested","isPaused","isSeeking","isBuffering","isPlaying","timeSinceRequested","timeSinceStarted","timeSincePaused","timeSinceSeekBegin","timeSinceBufferBegin","timeSinceAdBreakStart","timeSinceLastDownload","timeSinceLastHeartbeat","timeSinceLastRenditionChange","timeSinceLastAdQuartile","timeSinceLastAd","timeSinceLastError","timeSinceLastAdError","timeSinceResumed","timeSinceSeekEnd","playtimeSinceLastEvent","customTimeSinceAttributes","elapsedTime","bufferElapsedTime","_totalAdPlaytime","setTimeSinceAttribute","removeTimeSinceAttribute","getViewSession","random","toString","substring","getViewId","getStateAttributes","timeSinceAdRequested","timeSinceLastAdHeartbeat","timeSinceAdStarted","timeSinceAdPaused","timeSinceAdBufferBegin","timeSinceAdSeekBegin","timeSinceAdBreakBegin","entries","getQoeAttributes","rebufferingRatio","averageBitrate","weightedBitrate","calculateBufferType","goViewCountUp","goPlayerReady","goRequest","goStart","goEnd","goPause","goResume","goBufferStart","goBufferEnd","goSeekStart","goSeekEnd","goAdBreakStart","goAdBreakEnd","goDownload","goHeartbeat","goRenditionChange","goAdQuartile","goError","isError","goLastAd","trackContentBitrateState","resetViewIdTrackedState","clearTotalAdsTime","totalAdTime","startAdsTime","stopAdsTime","setStartupTime","T","v","_lastBufferType","_userId","setPlayer","tag","setUserId","getElementById","disposeAdsTracker","S","isLive","_lastWebkitBitrate","getRenditionShift","_lastAdRendition","_lastRendition","getCdn","getFps","getAdQuartile","viewSession","playerName","playerVersion","src","pageUrl","adTitle","adSrc","adCdn","adBitrate","adRenditionName","adRenditionHeight","adRenditionWidth","adDuration","adPlayhead","adLanguage","adIsMuted","adFps","adPosition","adCreativeId","adPartner","contentId","contentTitle","contentSrc","contentCdn","contentPlayhead","contentIsLive","contentBitrate","contentManifestBitrate","contentSegmentDownloadBitrate","contentNetworkDownloadBitrate","contentRenditionName","contentRenditionHeight","contentRenditionWidth","contentDuration","contentLanguage","contentPlayrate","contentIsFullscreen","contentIsMuted","contentIsAutoplayed","contentPreload","contentFps","addQoeAttributes","sendCustom","sendPlayerReady","PLAYER_READY","AD_REQUEST","CONTENT_REQUEST","AD_START","CONTENT_START","AD_END","CONTENT_END","AD_PAUSE","CONTENT_PAUSE","AD_RESUME","CONTENT_RESUME","AD_BUFFER_START","CONTENT_BUFFER_START","buildBufferAttributes","bufferType","AD_BUFFER_END","CONTENT_BUFFER_END","isInitialBuffering","AD_SEEK_START","CONTENT_SEEK_START","AD_SEEK_END","CONTENT_SEEK_END","DOWNLOAD","CONTENT_ERROR","sendRenditionChanged","AD_RENDITION_CHANGE","CONTENT_RENDITION_CHANGE","adjustElapsedTimeForPause","AD_HEARTBEAT","CONTENT_HEARTBEAT","AD_BREAK_START","AD_BREAK_END","AD_QUARTILE","AD_CLICK","y","_","R","B","b","Chrono","Emitter","Tracker","VideoTrackerState","NrVideoEventAggregator","RetryQueueHandler","OptimizedHttpClient","HarvestScheduler","recordEvent","manifestUrl","match","REGEX_SESSION_ID","sessionId","REGEX_TRACKING_PATH_SEGMENT","REGEX_MANIFEST_FILE_SUFFIX","playlist","adSegmentPrefix","segments","discontinuityStarts","adBreaks","currentAdBreak","currentPod","segment","index","isMTSegment","isMediaTailorSegment","hasDiscontinuity","endTime","MIN_AD_DURATION","pods","confirmedByTracking","hasFiredStart","hasFiredEnd","hasFiredAdStart","hasFiredQ1","hasFiredQ2","hasFiredQ3","segmentDuration","HLS_MANIFEST_EXTENSION","MANIFEST_TYPE","DASH_MANIFEST_EXTENSION","Infinity","STREAM_TYPE","adBreakIndex","totalAdBreaks","streamType","AD_POSITION","adSchedule","trackingAvails","scheduleMap","Map","key","set","newAds","avail","firstAd","startTimeInSeconds","existingAd","availId","trackingAd","adIndex","trackingStartTime","trackingDuration","durationInSeconds","manifestText","REGEX_DASH_MINIMUM_UPDATE_PERIOD","parseIsoDuration","REGEX_HLS_TARGET_DURATION","parseInt","masterText","baseUrl","lines","split","line","startsWith","HLS_TAG_PREFIX","URL","trim","async","fetchTextOrThrow","mediaPlaylistUrl","playlistUrl","adBreak","pod","abs","AD_TIMING_TOLERANCE","progress","firedQuartiles","quartiles","calculateQuartiles","toFire","q1","q2","q3","toISOString","trackingEndpointUrl","timeout","externalSignal","timeoutId","abortHandler","response","credentials","json","existingSchedule","merged","newAd","finalSchedule","sort","xmlText","xml","DOMParser","parseFromString","parserError","textContent","periods","querySelectorAll","period","baseUrlEl","adCandidates","MT_SEGMENT_PATTERN","MT_DEFAULT_AD_SEGMENT_PATH","some","periodId","getAttribute","AD_SOURCE","eventStreams","DASH_SCTE35_EVENT_STREAM_SELECTOR","stream","timescale","parseFloat","presentationTime","eventId","SCTE35_SCHEME_MARKER","durationSeconds","currentPodStartTime","lastMapUrl","adPods","isInAdBreak","REGEX_DISCONTINUITY","test","mapMatch","REGEX_MAP","mapUrl","podDuration","MT_HLS_CUE_OUT_TAG","durationMatch","REGEX_CUE_OUT","MT_HLS_CUE_IN_TAG","actualDuration","HLS_SEGMENT_DURATION_TAG","labeled","marker","label","mapUri","uri","segUri","hit","_mtConstants","candidates","QUARTILES","text","durationStr","REGEX_ISO_8601_DURATION","_mt","Boolean","mtOptions","manifestFormat","playbackManifestUrl","explicitTrackingUrl","currentAdPod","hasEndedContent","isDisposed","trackingAbortController","manifestAbortController","isFetchingTracking","isFetchingManifest","hasAttemptedTrackingFetch","trackingFetchRetries","maxTrackingRetries","manifestPollTimer","trackingPollTimer","liveRefreshIntervalSeconds","lastMediaPlaylistText","getTimestamp","endpoint","trackingAPITimeout","TRACKING_API_TIMEOUT_MS","detectManifestFormatFromUrl","toUpperCase","one","detectPlaybackStreamType","initializeTracking","buildTrackingEndpointUrl","setupVODTracking","setupLiveTracking","onTimeUpdate","stopLivePolling","hookPlayerManifest","pollingInterval","getLiveRefreshIntervalMs","pollManifestForNewAds","getAndProcessTrackingMetadata","DEFAULT_LIVE_POLL_INTERVAL_MS","restartLivePollingTimers","newInterval","getManifestDirectly","hookHLSViaVHS","hookHLSViaNative","hookHLSViaContribHls","hookDASHViaShaka","hookDASHViaDashJs","currentPlaylist","parseVhsPlaylistForAdBreaks","el_","canPlayType","HLS_MIME_TYPE","hls","handleDASHEmsgEvent","dash","handleDASHEventStream","fetchAndParseHlsManifest","fetchAndParseDashManifest","fetchHlsMasterManifest","mediaText","fetchHlsMediaPlaylist","hlsTargetDurationSeconds","extractHlsTargetDurationSeconds","updateLiveRefreshIntervalFromManifest","parseHlsManifestForAdBreaks","mergeNewAds","fetchDashManifest","dashMinimumUpdatePeriodSeconds","extractDashMinimumUpdatePeriodSeconds","parseDashManifestForAdBreaks","emsgData","detail","schemeIdUri","presentationTimeDelta","eventDuration","messageData","eventData","targetDuration","detectAdBreaksFromVhsPlaylist","_detectionPathLogged","firstSeg","whichAdSegmentMarker","path","sum","ab","mergeAdSchedules","intervalSeconds","getTrackingMetadata","avails","enrichWithTrackingMetadata","enrichAdScheduleWithTrackingMetadata","podCount","trackQuartiles","adObject","getQuartilesToFire","activeAdBreak","findActiveAdBreak","toFixed","determineAdPosition","position","breakIndex","totalBreaks","activePod","findActivePod","podProgress","adProgress","sendContentEnd","handleAdEvent","eventName","sendMethod","stopPolling","daiEvents","DAI_STREAM_INITIALIZED","DAI_STREAM_LOADED","DAI_STREAM_ERROR","DAI_AD_BREAK_STARTED","DAI_AD_BREAK_ENDED","DAI_AD_PERIOD_STARTED","DAI_AD_PERIOD_ENDED","DAI_AD_STARTED","DAI_AD_FIRST_QUARTILE","DAI_AD_MIDPOINT","DAI_AD_THIRD_QUARTILE","DAI_AD_COMPLETE","DAI_AD_SKIPPED","DAI_AD_PAUSED","DAI_AD_RESUMED","DAI_AD_CLICKED","DAI_AD_ERROR","DAI_CUEPOINTS_CHANGED","DAI_TIMED_METADATA","imaDai","dai","streamManager","currentAdData","adBreakData","streamData","cuePoints","initialized","eventHandlers","setupStreamManagerListeners","api","StreamEvent","onStreamLoaded","STREAM_INITIALIZED","onStreamInitialized","onStreamError","AD_BREAK_STARTED","onAdBreakStarted","AD_BREAK_ENDED","onAdBreakEnded","AD_PERIOD_STARTED","onAdPeriodStarted","AD_PERIOD_ENDED","onAdPeriodEnded","onAdStarted","onAdFirstQuartile","onAdMidpoint","onAdThirdQuartile","onAdComplete","onAdSkipped","onAdPaused","onAdResumed","onAdClicked","VIDEO_CLICKED","CUEPOINTS_CHANGED","onCuePointsChanged","TIMED_METADATA","onTimedMetadata","handler","extractStreamData","errorData","extractErrorData","extractAdBreakData","extractAdData","getClickThroughUrl","extractCuePoints","metadata","extractTimedMetadata","getStreamData","streamId","adTagParameters","getStreamType","getAdBreak","adBreakId","adBreakTitle","adCount","getAd","description","getDescription","advertiserName","getAdvertiserName","clickThroughUrl","dealId","getDealId","wrapperAdIds","getWrapperAdIds","innerError","getInnerError","getCuepoints","getType","getData","getAdCuePoints","getStreamTime","isLiveStream","getCurrentAdBreak","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","module","__webpack_modules__","definition","obj","prop","_tracker"],"sourceRoot":""}