@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.
- package/CHANGELOG.md +28 -0
- package/README.md +121 -14
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.LICENSE.txt +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.LICENSE.txt +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/umd/newrelic-video-videojs.min.js +1 -1
- package/dist/umd/newrelic-video-videojs.min.js.LICENSE.txt +3 -1
- package/dist/umd/newrelic-video-videojs.min.js.map +1 -1
- package/package.json +9 -2
- package/src/ads/dai.js +6 -3
- package/src/ads/ima.js +3 -2
- package/src/ads/media-tailor.js +1281 -0
- package/src/ads/utils/mt-constants.js +83 -0
- package/src/ads/utils/mt.js +814 -0
- package/src/register-plugin.js +2 -2
- package/src/techs/contrib-hls.js +7 -8
- package/src/techs/hls-js.js +5 -5
- package/src/techs/shaka.js +7 -6
- package/src/tracker.js +172 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"newrelic-video-videojs.min.js","mappings":"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","sources":["webpack://VideojsTracker/webpack/universalModuleDefinition","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":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VideojsTracker\"] = factory();\n\telse\n\t\troot[\"VideojsTracker\"] = factory();\n})(self, () => {\nreturn ","/*! 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":["root","factory","exports","module","define","amd","self","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","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","_defineProperties","configurable","writable","_toPropertyKey","key","_typeof","toPrimitive","TypeError","String","_toPrimitive","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_VideojsAdsTracker","BrightcoveImaAdsTracker","_classCallCheck","create","_inherits","ima3","_this$player","adPlayer","nrvideo","onStarted","onPaused","onResume","onComplete","onSkipped","onError","onClick","skipped","sendClick","VideojsAdsTracker","_slicedToArray","_arrayWithHoles","iterator","next","done","_iterableToArrayLimit","_arrayLikeToArray","from","test","_unsupportedIterableToArray","_nonIterableRest","_defineProperty","_superPropGet","_get","_superPropBase","getOwnPropertyDescriptor","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","_this","streamManager","currentAdData","adBreakData","streamData","cuePoints","initialized","eventHandlers","imaDai","dai","VERSION","ima","setupStreamManagerListeners","_google","_this$eventHandlers","_this2","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","_ref","_ref2","handler","_this3","_ref3","_ref4","removeEventListener","event","extractStreamData","errorData","extractErrorData","extractAdBreakData","extractAdData","getClickThroughUrl","extractCuePoints","metadata","extractTimedMetadata","getStreamData","streamId","adTagParameters","streamType","getStreamType","_adBreakData$ads","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","_this$player$dai","_this$player$ima","_this$currentAdData","undefined","_this$currentAdData2","_this$currentAdData3","_this$currentAdData4","_this$streamData","getStreamTime","_this$currentAdData5","_this$streamData2","Infinity","tech","getTech","stats","bandwidth","FreewheelAdsTracker","_createClass","FreeWheelPlugin","provider","adInstance","getActiveCreativeRendition","getId","err","getPrimaryCreativeRenditionAsset","getUrl","getName","tv","freewheel","ImaAdsTracker","getAdsManager","getCuePoints","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$getAdPodIn","currentAd","getCurrentAd","getMediaUrl","getAdPodInfo","getVastMediaBitrate","controller","adUi","adContainerDiv","querySelector","_package","_contribHls","_hlsJs","_shaka","_nrvideo$VideoTracker","IWillNotUseThisInPlugins","ContribHlsTech","isUsing","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","_toConsumableArray","map","_this$tech$stats","throughput","HlsJs","vhs_","levels","currentLevel","shakaPlayer","getManifestUri","getStats","streamBandwidth","tracks","getVariantTracks","videoBandwidth","audioBandwidth","track","active","estimatedBandwidth","_ima","_brightcoveIma","_freewheel","_dai","VideojsTracker","isContentEnd","imaAdCuePoints","daiInitialized","snapshot","absoluteTime","mediainfo","_this$player2","_this$player3","language","_this$player4","_this$player5","videojs","_tech$vhs","activePlaylist","techWrapper","_tech$vhs2","allRenditions","maxBitrate","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_tech$vhs3","_tech$vhs4","onDownload","onAdsready","onAdStart","onAdEnd","onPlay","onPause","onPlaying","onAbort","onEnded","onDispose","onSeeking","onSeeked","onWaiting","onTimeupdate","OnAdsAllpodsCompleted","onStreamManager","StreamManager","daiTracker","setStreamManager","_this$player6","currentAdPlaying","FreewheelAdsCompleted","code","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","obj","prop","_tracker"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"newrelic-video-videojs.min.js","mappings":"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","sources":["webpack://VideojsTracker/webpack/universalModuleDefinition","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":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VideojsTracker\"] = factory();\n\telse\n\t\troot[\"VideojsTracker\"] = factory();\n})(self, () => {\nreturn ","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":["root","factory","exports","module","define","amd","self","e","_videojsAds","require","__esModule","_defineProperties","r","t","length","o","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","i","_typeof","Symbol","toPrimitive","call","TypeError","String","_toPrimitive","_isNativeReflectConstruct","Boolean","prototype","valueOf","Reflect","construct","_getPrototypeOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_setPrototypeOf","_VideojsAdsTracker","FreewheelAdsTracker","a","n","_classCallCheck","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","constructor","apply","_callSuper","arguments","create","value","_inherits","_createClass","this","player","FreeWheelPlugin","VERSION","ads","ad","currentTime","duration","id","provider","event","adInstance","getActiveCreativeRendition","getId","err","getPrimaryCreativeRenditionAsset","getUrl","getName","type","nrvideo","Constants","AdPositions","PRE","MID","POST","tv","freewheel","VideojsAdsTracker","_videoCore","_interopRequireDefault","BrightcoveImaAdsTracker","ima3","_this$player","adPlayer","Log","debugCommonVideoEvents","on","onStarted","onPaused","onResume","onComplete","onSkipped","onError","onClick","off","sendRequest","sendStart","sendPause","sendResume","sendEnd","skipped","sendError","sendClick","HlsJs","tech","vhs_","el","url","level","levels","currentLevel","name","bitrate","Math","round","width","height","getContentBitratePlayback","max","_toConsumableArray","map","l","stats","bandwidth","throughput","isUsing","ImaAdsTracker","google","ima","getAdsManager","getCuePoints","lastAdData","podInfo","undefined","podIndex","adId","creativeId","mediaUrl","title","manager","getDuration","getRemainingTime","playbackRate","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$getAdPodIn","currentAd","getCurrentAd","getAdId","getCreativeId","getMediaUrl","getTitle","getAdPodInfo","data","getVastMediaBitrate","controller","adUi","adContainerDiv","querySelector","_package","_contribHls","_hlsJs","_shaka","_ima","_brightcoveIma","_freewheel","_dai","_mediaTailor","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iterator","from","_iterableToArray","toString","slice","test","_unsupportedIterableToArray","_nonIterableSpread","ownKeys","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","push","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","AD_TRACKING","CSAI","SSAI","freeze","DAI","MT","VideojsTracker","_nrvideo$VideoTracker","options","_options$config","_this","isContentEnd","imaAdCuePoints","daiInitialized","adTracking","config","warn","_options$config2","_this$options","adConfig","assign","mediatailor","segmentPrefix","trackingUrl","Core","addTracker","valid","concat","values","includes","debug","join","IWillNotUseThisInPlugins","ContribHlsTech","HlsJsTech","ShakaTech","getPlayerName","getPlayerVersion","pkg","version","state","snapshot","absoluteTime","mediainfo","_this$player2","_this$player3","language","getTech","getSrc","currentSrc","_this$player4","_this$player5","videojs","muted","_tech$vhs","vhs","playlists","media","activePlaylist","attributes","BANDWIDTH","techWrapper","getBitrate","getRenditionName","_tech$vhs2","allRenditions","master","maxBitrate","p","getManifestBitrate","_tech$vhs3","getSegmentDownloadBitrate","_tech$vhs4","getNetworkDownloadBitrate","getRenditionHeight","videoHeight","getRenditionWidth","videoWidth","autoplay","isFullscreen","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","_this$player6","currentAdPlaying","FreewheelAdsCompleted","isAd","isAdsTrackerActive","ended","sendBufferEnd","sendSeekStart","sendSeekEnd","error","code","message","sendBufferStart","getPlayhead","VideoTracker","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","videoBandwidth","audioBandwidth","track","active","estimatedBandwidth","NAME","RESOLUTION","_this$tech$stats","onAdrequest","onAdload","onAdstart","onAdend","onAdskip","onAdserror","onAdsClick","onPodStart","onPodEnd","onAdspause","onAdsplay","sendAdBreakStart","sendAdBreakEnd","quartile","d","videoAnalyticsHarvester","h","s","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","indexOf","splice","emit","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","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","NOTICE","DEBUG","addEventHandler","prefix","includeTime","getDate","getMinutes","getSeconds","getMilliseconds","SILENT","colorful","documentMode","console","cast","log","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","super","customData","heartbeat","parentTracker","_trackerReadyChrono","_actionTable","ACTION_TABLE","_actionAdTable","ACTION_AD_TABLE","setOptions","dispose","unregisterListeners","registerListeners","_isAd","startHeartbeat","_heartbeatInterval","setInterval","sendHeartbeat","stopHeartbeat","clearInterval","sendVideoAction","HEARTBEAT","getAttributes","trackerName","getTrackerName","trackerVersion","getTrackerVersion","coreVersion","rE","timeSinceTrackerReady","isBackgroundEvent","sendVideoAdAction","sendVideoErrorAction","sendVideoCustomAction","z8","beacon","licenseKey","applicationID","href","ArrayBuffer","byteLength","Blob","FormData","WeakSet","has","get","hasOwnProperty","toStringTag","appName","qoe","timestamp","timeSinceLoad","performance","g","m","qoeAggregateVersion","f","qoeAggregate","setConfiguration","validateRequiredFields","validateConfigFields","initializeGlobalConfig","flatMap","filterObfuscateRules","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","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","getVideoId","isLive","getWebkitBitrate","_lastWebkitBitrate","getRenditionBitrate","getRenditionShift","_lastAdRendition","_lastRendition","getLanguage","getPlayrate","isMuted","getCdn","getFps","isAutoplayed","getPreload","getAdQuartile","getAdPosition","getAdPartner","getAdCreativeId","getInstrumentationProvider","getInstrumentationName","getInstrumentationVersion","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","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","_step2","_iterator2","_createForOfIteratorHelper","split","done","line","startsWith","HLS_TAG_PREFIX","URL","trim","_x4","_fetchDashManifest","_x2","_fetchHlsMasterManifest","_x3","_fetchHlsMediaPlaylist","adBreak","pod","abs","AD_TIMING_TOLERANCE","progress","firedQuartiles","quartiles","calculateQuartiles","toFire","q1","q2","q3","toISOString","_x5","_getTrackingMetadata","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","_step","currentPodStartTime","lastMapUrl","adPods","isInAdBreak","_iterator","REGEX_DISCONTINUITY","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","_ref3","_mtConstants","_regeneratorRuntime","asyncIterator","Generator","arg","delegate","sent","_sent","dispatchException","abrupt","Context","wrap","GeneratorFunction","GeneratorFunctionPrototype","x","_invoke","AsyncIterator","resolve","__await","then","next","w","tryEntries","displayName","isGeneratorFunction","mark","awrap","async","pop","prev","charAt","rval","complete","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","_next","_throw","_n","F","candidates","QUARTILES","fetchTextOrThrow","_x","_fetchTextOrThrow","_callee","response","_context","credentials","text","_callee2","lines","mediaPlaylistUrl","_iterator3","_step3","_context2","t0","_callee3","playlistUrl","_context3","_callee4","_context4","durationStr","REGEX_ISO_8601_DURATION","_callee5","trackingEndpointUrl","timeout","externalSignal","timeoutId","abortHandler","_args5","_context5","json","_mt","_superPropGet","_get","_superPropBase","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","_this2","pollingInterval","getLiveRefreshIntervalMs","pollManifestForNewAds","getAndProcessTrackingMetadata","DEFAULT_LIVE_POLL_INTERVAL_MS","_this3","newInterval","getManifestDirectly","hookHLSViaVHS","hookHLSViaNative","hookHLSViaContribHls","hookDASHViaShaka","hookDASHViaDashJs","_this4","currentPlaylist","parseVhsPlaylistForAdBreaks","el_","canPlayType","HLS_MIME_TYPE","_this5","hls","_this6","handleDASHEmsgEvent","_this7","dash","handleDASHEventStream","_getManifestDirectly","fetchAndParseHlsManifest","fetchAndParseDashManifest","_fetchAndParseHlsManifest","_yield$fetchHlsMaster","mediaText","hlsTargetDurationSeconds","fetchHlsMasterManifest","fetchHlsMediaPlaylist","extractHlsTargetDurationSeconds","updateLiveRefreshIntervalFromManifest","parseHlsManifestForAdBreaks","mergeNewAds","_fetchAndParseDashManifest","dashMinimumUpdatePeriodSeconds","fetchDashManifest","extractDashMinimumUpdatePeriodSeconds","parseDashManifestForAdBreaks","emsgData","detail","schemeIdUri","presentationTimeDelta","eventDuration","messageData","eventData","_playlist$segments","_this8","targetDuration","detectAdBreaksFromVhsPlaylist","_detectionPathLogged","firstSeg","whichAdSegmentMarker","path","sum","ab","_pollManifestForNewAds","mergeAdSchedules","intervalSeconds","restartLivePollingTimers","_getAndProcessTrackingMetadata","getTrackingMetadata","avails","enrichWithTrackingMetadata","_this$adSchedule","enrichAdScheduleWithTrackingMetadata","podCount","adObject","_this9","getQuartilesToFire","_ref","activeAdBreak","findActiveAdBreak","toFixed","_activeAdBreak$pods","determineAdPosition","position","breakIndex","totalBreaks","activePod","findActivePod","podProgress","trackQuartiles","adProgress","sendContentEnd","eventName","sendMethod","handleAdEvent","_this$currentAdBreak2","_this$currentAdBreak3","_this$currentAdBreak","_this$currentAdBreak5","_this$currentAdBreak6","_this$currentAdBreak4","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","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","streamManager","currentAdData","adBreakData","streamData","cuePoints","initialized","eventHandlers","imaDai","dai","setupStreamManagerListeners","_google","_this$eventHandlers","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","_ref2","handler","_ref4","extractStreamData","errorData","extractErrorData","extractAdBreakData","extractAdData","getClickThroughUrl","extractCuePoints","metadata","extractTimedMetadata","getStreamData","streamId","adTagParameters","getStreamType","_adBreakData$ads","getAdBreak","adBreakId","adBreakTitle","adCount","getAd","description","getDescription","advertiserName","getAdvertiserName","clickThroughUrl","dealId","getDealId","wrapperAdIds","getWrapperAdIds","innerError","getInnerError","getCuepoints","getType","getData","_this$player$dai","_this$player$ima","_this$currentAdData","_this$currentAdData2","_this$currentAdData3","_this$currentAdData4","_this$streamData","getStreamTime","_this$currentAdData5","_this$streamData2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","obj","prop","_tracker"],"sourceRoot":""}
|