UNPKG

dashjs

Version:

A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.

1 lines 178 kB
var e={7316:function(e){e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,i,a;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(i=r;0!=i--;)if(!e(t[i],n[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(a=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(i=r;0!=i--;)if(!Object.prototype.hasOwnProperty.call(n,a[i]))return!1;for(i=r;0!=i--;){var s=a[i];if(!e(t[s],n[s]))return!1}return!0}return t!=t&&n!=n}},3282:function(e){function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,a=-1,s=0,o=0;o<=e.length;++o){if(o<e.length)n=e.charCodeAt(o);else{if(47===n)break;n=47}if(47===n){if(a===o-1||1===s);else if(a!==o-1&&2===s){if(r.length<2||2!==i||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var u=r.lastIndexOf("/");if(u!==r.length-1){-1===u?(r="",i=0):i=(r=r.slice(0,u)).length-1-r.lastIndexOf("/"),a=o,s=0;continue}}else if(2===r.length||1===r.length){r="",i=0,a=o,s=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(a+1,o):r=e.slice(a+1,o),i=o-a-1;a=o,s=0}else 46===n&&-1!==s?++s:s=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,a=arguments.length-1;a>=-1&&!i;a--){var s;a>=0?s=arguments[a]:(void 0===e&&(e=process.cwd()),s=e),t(s),0!==s.length&&(r=s+"/"+r,i=47===s.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var i=arguments[n];t(i),i.length>0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;i<e.length&&47===e.charCodeAt(i);++i);for(var a=e.length,s=a-i,o=1;o<n.length&&47===n.charCodeAt(o);++o);for(var u=n.length-o,l=s<u?s:u,c=-1,d=0;d<=l;++d){if(d===l){if(u>l){if(47===n.charCodeAt(o+d))return n.slice(o+d+1);if(0===d)return n.slice(o+d)}else s>l&&(47===e.charCodeAt(i+d)?c=d:0===d&&(c=0));break}var f=e.charCodeAt(i+d);if(f!==n.charCodeAt(o+d))break;47===f&&(c=d)}var E="";for(d=i+c+1;d<=a;++d)d!==a&&47!==e.charCodeAt(d)||(0===E.length?E+="..":E+="/..");return E.length>0?E+n.slice(o+c):(o+=c,47===n.charCodeAt(o)&&++o,n.slice(o))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,a=!0,s=e.length-1;s>=1;--s)if(47===(n=e.charCodeAt(s))){if(!a){i=s;break}}else a=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,a=-1,s=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var o=n.length-1,u=-1;for(r=e.length-1;r>=0;--r){var l=e.charCodeAt(r);if(47===l){if(!s){i=r+1;break}}else-1===u&&(s=!1,u=r+1),o>=0&&(l===n.charCodeAt(o)?-1==--o&&(a=r):(o=-1,a=u))}return i===a?a=u:-1===a&&(a=e.length),e.slice(i,a)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!s){i=r+1;break}}else-1===a&&(s=!1,a=r+1);return-1===a?"":e.slice(i,a)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,a=!0,s=0,o=e.length-1;o>=0;--o){var u=e.charCodeAt(o);if(47!==u)-1===i&&(a=!1,i=o+1),46===u?-1===n?n=o:1!==s&&(s=1):-1!==n&&(s=-1);else if(!a){r=o+1;break}}return-1===n||-1===i||0===s||1===s&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),a=47===i;a?(n.root="/",r=1):r=0;for(var s=-1,o=0,u=-1,l=!0,c=e.length-1,d=0;c>=r;--c)if(47!==(i=e.charCodeAt(c)))-1===u&&(l=!1,u=c+1),46===i?-1===s?s=c:1!==d&&(d=1):-1!==s&&(d=-1);else if(!l){o=c+1;break}return-1===s||-1===u||0===d||1===d&&s===u-1&&s===o+1?-1!==u&&(n.base=n.name=0===o&&a?e.slice(1,u):e.slice(o,u)):(0===o&&a?(n.name=e.slice(1,s),n.base=e.slice(1,u)):(n.name=e.slice(o,s),n.base=e.slice(o,u)),n.ext=e.slice(s,u)),o>0?n.dir=e.slice(0,o-1):a&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r},8735:function(e,t,n){n.r(t),n.d(t,{CMCD_DEFAULT_TIME_INTERVAL:function(){return pe},CMCD_EVENT_AD_BREAK_END:function(){return D},CMCD_EVENT_AD_BREAK_START:function(){return C},CMCD_EVENT_AD_END:function(){return y},CMCD_EVENT_AD_START:function(){return S},CMCD_EVENT_BACKGROUNDED_MODE:function(){return _},CMCD_EVENT_BITRATE_CHANGE:function(){return f},CMCD_EVENT_CONTENT_ID:function(){return m},CMCD_EVENT_CUSTOM_EVENT:function(){return O},CMCD_EVENT_ERROR:function(){return T},CMCD_EVENT_KEYS:function(){return b},CMCD_EVENT_MODE:function(){return M},CMCD_EVENT_MUTE:function(){return p},CMCD_EVENT_PLAYER_COLLAPSE:function(){return A},CMCD_EVENT_PLAYER_EXPAND:function(){return g},CMCD_EVENT_PLAY_STATE:function(){return E},CMCD_EVENT_RESPONSE_RECEIVED:function(){return R},CMCD_EVENT_SKIP:function(){return N},CMCD_EVENT_TIME_INTERVAL:function(){return h},CMCD_EVENT_UNMUTE:function(){return I},CMCD_FORMATTER_MAP:function(){return c},CMCD_HEADERS:function(){return Ce},CMCD_HEADER_FIELDS:function(){return ae},CMCD_HEADER_MAP:function(){return se},CMCD_JSON:function(){return De},CMCD_KEYS:function(){return Ie},CMCD_MIME_TYPE:function(){return ge},CMCD_OBJECT:function(){return ee},CMCD_PARAM:function(){return de},CMCD_QUERY:function(){return ye},CMCD_REQUEST:function(){return te},CMCD_REQUEST_KEYS:function(){return U},CMCD_REQUEST_MODE:function(){return L},CMCD_RESPONSE_KEYS:function(){return G},CMCD_SESSION:function(){return ne},CMCD_STATUS:function(){return re},CMCD_V1:function(){return Ae},CMCD_V1_KEYS:function(){return K},CMCD_V2:function(){return d},CMCD_VALIDATION_SEVERITY_ERROR:function(){return be},CMCD_VALIDATION_SEVERITY_WARNING:function(){return Ue},CmcdEventType:function(){return P},CmcdHeaderField:function(){return ie},CmcdObjectType:function(){return Re},CmcdPlayerState:function(){return Se},CmcdReporter:function(){return Me},CmcdReportingMode:function(){return v},CmcdStreamType:function(){return ve},CmcdStreamingFormat:function(){return Le},CmcdTransmissionMode:function(){return Ne},CmcdValidationSeverity:function(){return we},appendCmcdHeaders:function(){return ce},appendCmcdQuery:function(){return _e},decodeCmcd:function(){return xe},encodeCmcd:function(){return Ee},fromCmcdHeaders:function(){return He},fromCmcdQuery:function(){return Ye},fromCmcdUrl:function(){return Ve},groupCmcdHeaders:function(){return oe},isCmcdCustomKey:function(){return F},isCmcdEventKey:function(){return q},isCmcdRequestKey:function(){return x},isCmcdResponseReceivedKey:function(){return Y},isCmcdV1Data:function(){return qe},isCmcdV1Key:function(){return W},isCmcdV2Data:function(){return ke},prepareCmcdData:function(){return J},toCmcdHeaders:function(){return le},toCmcdQuery:function(){return he},toCmcdUrl:function(){return Te},toCmcdValue:function(){return Ke},validateCmcd:function(){return mt},validateCmcdEventReport:function(){return pt},validateCmcdEvents:function(){return _t},validateCmcdHeaders:function(){return It},validateCmcdKeys:function(){return Qe},validateCmcdRequest:function(){return gt},validateCmcdStructure:function(){return Xe},validateCmcdValues:function(){return ht}});var r=n(2877),i=n(9259);const a=e=>e instanceof r.SfItem?new r.SfItem(Math.round(e.value),e.params):Math.round(e),s=e=>Array.isArray(e)?e.map(a):a(e),o=(e,t)=>Array.isArray(e)?e.map((e=>o(e,t))):e instanceof r.SfItem&&"string"==typeof e.value?new r.SfItem(o(e.value,t),e.params):(t.baseUrl&&(e=(0,i.urlToRelativePath)(e,(0,i.getBaseUrl)(t.baseUrl))),1===t.version?encodeURIComponent(e):e),u=e=>e instanceof r.SfItem?new r.SfItem(100*Math.round(e.value/100),e.params):100*Math.round(e/100),l=e=>Array.isArray(e)?e.map(u):u(e),c={br:s,d:s,bl:l,dl:l,mtp:l,nor:(e,t)=>{let n=e;return t.version>=2&&(e instanceof r.SfItem&&"string"==typeof e.value?n=new r.SfItem([e]):"string"==typeof e&&(n=[e])),o(n,t)},rtp:l,tb:s},d=2,f="bc",E="ps",T="e",h="t",m="c",_="b",p="m",I="um",g="pe",A="pc",R="rr",S="as",y="ae",C="abs",D="abe",N="sk",O="ce",P={BITRATE_CHANGE:f,PLAY_STATE:E,ERROR:T,TIME_INTERVAL:h,CONTENT_ID:m,BACKGROUNDED_MODE:_,MUTE:p,UNMUTE:I,PLAYER_EXPAND:g,PLAYER_COLLAPSE:A,RESPONSE_RECEIVED:R,AD_START:S,AD_END:y,AD_BREAK_START:C,AD_BREAK_END:D,SKIP:N,CUSTOM_EVENT:O},M="event",L="request",v={REQUEST:L,EVENT:M},b=["cen","e","h","ts"],U=["ab","bg","bl","br","bs","bsa","bsd","bsda","cdn","cid","cs","d","dfa","dl","ec","lab","lb","ltc","msd","mtp","nor","nr","ot","pb","pr","pt","rtp","sf","sid","sn","st","sta","su","tab","tb","tbl","tpb","v"],w=/^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/;function F(e){return w.test(e)}const B=new Set(U);function x(e){return B.has(e)||F(e)}const G=["cmsdd","cmsds","rc","smrt","ttfb","ttfbb","ttlb","url"],H=new Set(G);function Y(e){return H.has(e)}const V=new Set(b);function q(e){return x(e)||Y(e)||V.has(e)}const k=new Set(["ab","bl","br","bsa","bsd","bsda","lab","lb","mtp","pb","tab","tb","tbl","tpb"]),K=["bl","br","bs","cid","d","dl","mtp","nor","nrr","ot","pr","rtp","sf","sid","st","su","tb","v"],j=new Set(K);function W(e){return j.has(e)||F(e)}const $=new Set(["ot","sf","st","e","sta"]);function z(e){return $.has(e)}function Q(e){return"number"==typeof e?Number.isFinite(e):null!=e&&""!==e&&!1!==e}const X={[M]:q,[L]:x};function Z(e,t){if(Array.isArray(e)){let n;return t&&(n=e.find((e=>e.params?.ot===t))),n||(n=e[0]),Z(n)}return e instanceof r.SfItem?e.value:e}function J(e,t={}){const n={};if(null==e||"object"!=typeof e)return n;const i=t.version||e.v||d,a=t.reportingMode||L,s=1===i?function(e){const t={};for(const[n,i]of Object.entries(e))if(null!=i)if("nor"===n){const e=(Array.isArray(i)?i:[i])[0];e instanceof r.SfItem?(t.nor=e.value,e.params?.r&&(t.nrr=e.params.r)):t.nor=e}else k.has(n)?t[n]=Z(i,e.ot):t[n]=i;else t[n]=i;return t}(e):e,o=1===i?W:X[a];let u=Object.keys(s).filter(o);s.e&&s.e!==R&&(u=u.filter((e=>!Y(e))));const l=t.filter;"function"==typeof l&&(u=u.filter(l));const f=a===M;if(f){const e=s.e;u.includes("e")||null==e||u.push("e"),u.includes("ts")||u.push("ts"),u.includes("cen")||null==s.cen||e!==O||u.push("cen")}if(0===u.length)return n;i>1&&!u.includes("v")&&u.push("v");const E={version:i,reportingMode:a,baseUrl:t.baseUrl};u.sort();for(const e of u){let a=s[e];const o=t.formatters?.[e]??c[e];if("function"==typeof o&&(a=o(a,E)),"v"===e){if(1===i)continue;a=i}"pr"===e&&1===a||(f&&"ts"===e&&!Number.isFinite(a)&&(a=Date.now()),Q(a)&&(z(e)&&"string"==typeof a&&(a=new r.SfToken(a)),n[e]=a))}return n}const ee="CMCD-Object",te="CMCD-Request",ne="CMCD-Session",re="CMCD-Status",ie={OBJECT:ee,REQUEST:te,SESSION:ne,STATUS:re},ae=[ee,te,ne,re],se={ab:ee,br:ee,d:ee,lab:ee,lb:ee,ot:ee,tab:ee,tb:ee,tpb:ee,bl:te,cs:te,dfa:te,dl:te,ltc:te,mtp:te,nor:te,nrr:te,pb:te,sn:te,sta:te,su:te,tbl:te,cid:ne,msd:ne,sf:ne,sid:ne,st:ne,v:ne,bg:re,bs:re,bsa:re,bsd:re,bsda:re,cdn:re,ec:re,nr:re,pr:re,pt:re,rtp:re};function oe(e,t){const n={};if(!e)return n;const r=Object.keys(e),i=t?(a=t,Object.keys(a).reduce(((e,t)=>(a[t]?.forEach((n=>e[n]=t)),e)),{})):{};var a;for(const t of r){const r=se[t]||i[t]||ie.REQUEST;(n[r]??={})[t]=e[t]}return n}function ue(e,t){const n={},i=oe(e,t);for(const[e,t]of Object.entries(i)){const i=(0,r.encodeSfDict)(t,{whitespace:!1});i&&(n[e]=i)}return n}function le(e,t={}){return e?ue(J(e,t),t?.customHeaderMap):{}}function ce(e,t,n){return Object.assign(e,le(t,n))}const de="CMCD";function fe(e){return(0,r.encodeSfDict)(e,{whitespace:!1})}function Ee(e,t={}){return e?fe(J(e,t)):""}function Te(e,t={}){if(!e)return"";const n=Ee(e,t);return encodeURIComponent(n)}function he(e,t={}){return e?`${de}=${Te(e,t)}`:""}const me=/CMCD=[^&#]+/;function _e(e,t,n){const r=he(t,n);return r?me.test(e)?e.replace(me,r):`${e}${e.includes("?")?"&":"?"}${r}`:e}const pe=30,Ie=[...K,...U,...G,...b].filter(((e,t,n)=>n.indexOf(e)===t)),ge="application/cmcd",Ae=1,Re={MANIFEST:"m",AUDIO:"a",VIDEO:"v",MUXED:"av",INIT:"i",CAPTION:"c",TIMED_TEXT:"tt",KEY:"k",OTHER:"o"},Se={STARTING:"s",PLAYING:"p",SEEKING:"k",REBUFFERING:"r",PAUSED:"a",WAITING:"w",ENDED:"e",FATAL_ERROR:"f",QUIT:"q",PRELOADING:"d"},ye="query",Ce="headers",De="json",Ne={JSON:De,QUERY:ye,HEADERS:Ce};function Oe(e,t,n){const r=new Set(t.enabledKeys??[]);return{version:t.version||d,reportingMode:e,filter:e=>r.has(e),baseUrl:n}}function Pe(e){const{url:t,...n}=e;return fetch(t,n)}var Me=class{constructor(e,t=Pe){this.timeOrigin=performance.timeOrigin||performance.timing?.fetchStart||Date.now()-performance.now(),this.data={},this.msd=NaN,this.eventTargets=new Map,this.requestTarget={sn:0,msdSent:!1},this.config=function(e){const{version:t=d,eventTargets:n=[],sid:r=(0,i.uuid)(),transmissionMode:a=ye,...s}=e;return{...s,version:t,transmissionMode:a,sid:r,eventTargets:n.reduce(((e,t)=>(t?.url&&t.events?.length&&e.push({version:t.version||d,enabledKeys:t.enabledKeys?.slice()||[],url:t.url,events:t.events.slice(),interval:t.interval??pe,batchSize:t.batchSize||1}),e)),[])}}(e),this.data={cid:this.config.cid,sid:this.config.sid,v:this.config.version},this.requester=t;for(const e of this.config.eventTargets)this.eventTargets.set(e,{intervalId:void 0,sn:0,msdSent:!1,queue:[]})}start(){this.eventTargets.forEach(((e,t)=>{if(this.disarmInterval(e),0===t.interval||!t.events.includes(P.TIME_INTERVAL))return;const n=()=>{this.recordTargetEvent(e,t,h),this.processEventTargets()};e.intervalId=setInterval(n,1e3*t.interval),n()}))}stop(e=!1){e&&this.flush(),this.eventTargets.forEach((e=>{this.disarmInterval(e)}))}flush(){this.processEventTargets(!0)}update(e){e.sid&&e.sid!==this.data.sid&&this.resetSession(),e.msd&&!isNaN(e.msd)&&(this.msd=e.msd),this.data={...this.data,...e,msd:void 0}}recordEvent(e,t={}){this.eventTargets.forEach(((n,r)=>{this.recordTargetEvent(n,r,e,t)})),this.processEventTargets()}recordTargetEvent(e,t,n,r={}){if(!t.events.includes(n))return;const i={...this.data,...r,e:n,ts:r.ts??Date.now(),sn:e.sn++};isNaN(this.msd)||e.msdSent||(i.msd=this.msd,e.msdSent=!0),e.queue.push(i)}recordResponseReceived(e,t={}){const{request:n}=e,r=t.url??n?.url;if(!r)return;const i=new URL(r);i.searchParams.delete(de);const a={url:i.toString(),rc:e.status},s=e.resourceTiming;s&&(null!=s.startTime&&(a.ts=Math.round(this.timeOrigin+s.startTime),null!=s.responseStart&&(a.ttfb=Math.round(s.responseStart-s.startTime))),null!=s.duration&&(a.ttlb=Math.round(s.duration)));const o=n.customData?.cmcd??{};this.recordEvent(R,{...o,...a,...t})}applyRequestReport(e){return this.createRequestReport(e)??e}isRequestReportingEnabled(){return!!this.config.enabledKeys?.length}createRequestReport(e,t){const{customData:n={},headers:r={},...i}=e,a={...i,headers:{...r},customData:{...n,cmcd:{}}};if(!this.config.enabledKeys?.length||!a.url)return a;const s=new URL(a.url),o={...this.data,...t,sn:this.requestTarget.sn++},u=Oe(L,this.config,a.url);isNaN(this.msd)||this.requestTarget.msdSent||(o.msd=this.msd,this.requestTarget.msdSent=!0);const l=a.customData.cmcd=J(o,u);switch(this.config.transmissionMode){case ye:const e=fe(l);e&&(s.searchParams.set(de,e),a.url=s.toString());break;case Ce:Object.assign(a.headers,ue(l,u.customHeaderMap))}return a}processEventTargets(e=!1){let t=!1;this.eventTargets.forEach(((n,r)=>{const{queue:i}=n;if(!i.length)return;if(i.length<r.batchSize&&!e)return;const a=e?i.length:r.batchSize,s=i.splice(0,a);this.sendEventReport(r,s).catch((()=>{n.queue.unshift(...s)})),t||=i.length>0})),t&&this.processEventTargets()}async sendEventReport(e,t){const n=Oe(M,e),{status:r}=await this.requester({url:e.url,method:"POST",headers:{"Content-Type":ge},body:t.map((e=>Ee(e,n))).join("\n")+"\n"});if(410===r)this.disposeEventTarget(e);else if(429===r||r>499&&r<600)throw new Error(`Event report failed with status ${r}`)}disarmInterval(e){clearInterval(e.intervalId),e.intervalId=void 0}disposeEventTarget(e){const t=this.eventTargets.get(e);t&&(this.disarmInterval(t),this.eventTargets.delete(e))}resetSession(){this.eventTargets.forEach((e=>e.sn=0)),this.requestTarget.sn=0}};const Le={DASH:"d",HLS:"h",SMOOTH:"s",OTHER:"o"},ve={VOD:"v",LIVE:"l",LOW_LATENCY:"ll"},be="error",Ue="warning",we={ERROR:be,WARNING:Ue};function Fe(e){if(e.v===d)return e;const t={};for(const[n,r]of Object.entries(e))null!=r?k.has(n)&&!Array.isArray(r)?t[n]=[r]:t[n]="nor"===n&&"string"==typeof r?[r]:r:t[n]=r;return t}function Be(e){return Array.isArray(e)?e.map(Be):"symbol"==typeof e?(0,r.symbolToStr)(e):e instanceof r.SfItem&&!e.params?Be(e.value):e}function xe(e,t){if(!e)return{};const n=(0,r.decodeSfDict)(e),i={};for(const[e,t]of Object.entries(n))i[e]=Be(t.value);return t?.convertToLatest?Fe(i):i}function Ge(e){return e instanceof Headers?e:new Headers(e)}function He(e,t){const n=Ge(e),r={};for(const e of ae){const t=n.get(e);t&&Object.assign(r,xe(t))}return t?.convertToLatest?Fe(r):r}function Ye(e,t){return"string"==typeof e&&(e=new URLSearchParams(e)),xe(e.get(de)??"",t)}function Ve(e,t){return xe(decodeURIComponent(e.replace(/^CMCD=/,"")),t)}function qe(e){return e.v!==d}function ke(e){return e.v===d}function Ke(e,t){return new r.SfItem(e,t)}function je(...e){const t=e.flatMap((e=>e.issues));return{valid:t.every((e=>e.severity!==be)),issues:t}}function We(e,t){if(1===t?.version||2===t?.version)return t.version;const n=e.v;return 1===n||2===n?n:Ae}const $e=new Set(K),ze=new Set(Ie);function Qe(e,t){const n=We(e,t),r=n===Ae?$e:ze,i=[];for(const t of Object.keys(e))F(t)||r.has(t)||i.push({key:t,message:`Unknown CMCD key "${t}" for version ${n}.`,severity:be});return{valid:0===i.length,issues:i}}function Xe(e,t){const n=We(e,t),r=[];if(t?.reportingMode===L){for(const t of b)t in e&&r.push({key:t,message:`Event key "${t}" must not be present in request mode.`,severity:be});for(const t of G)t in e&&r.push({key:t,message:`Response key "${t}" must not be present in request mode.`,severity:be})}if(t?.reportingMode===M&&("e"in e||r.push({key:"e",message:'Event mode requires the "e" key to be present.',severity:be}),"ts"in e||r.push({key:"ts",message:'Event mode requires the "ts" key to be present.',severity:be})),"e"in e){if(e.e===O?"cen"in e||r.push({key:"cen",message:'Custom event (e="ce") requires the "cen" key to be present.',severity:be}):"cen"in e&&r.push({key:"cen",message:'The "cen" key must only be present when e="ce".',severity:be}),e.e===R)"url"in e||r.push({key:"url",message:'Response received event (e="rr") requires the "url" key to be present.',severity:be});else for(const t of G)t in e&&r.push({key:t,message:`Response key "${t}" must only be present when e="rr".`,severity:be});e.e!==E||"sta"in e||r.push({key:"sta",message:'Play state event (e="ps") requires the "sta" key to be present.',severity:be}),e.e!==T||"ec"in e||r.push({key:"ec",message:'Error event (e="e") requires the "ec" key to be present.',severity:be})}return"v"in e&&1!==e.v&&2!==e.v?r.push({key:"v",message:`Unsupported CMCD version "${String(e.v)}". Expected 1 or 2.`,severity:be}):n>1&&!("v"in e)?r.push({key:"v",message:'Version 2 payloads require the "v" key to be present.',severity:be}):n===Ae&&"v"in e&&r.push({key:"v",message:'Version 1 payloads should omit the "v" key (v1 is the default).',severity:Ue}),{valid:r.every((e=>e.severity!==be)),issues:r}}const Ze="number[]",Je="string[]",et="integer",tt="number",nt="boolean",rt="string",it="token",at={ab:Ze,bl:Ze,br:Ze,bsa:Ze,bsd:Ze,bsda:Ze,lab:Ze,lb:Ze,mtp:Ze,pb:Ze,tab:Ze,tb:Ze,tbl:Ze,tpb:Ze,ec:Je,nor:Je,d:et,dfa:et,dl:et,ltc:et,msd:et,pt:et,rc:et,rtp:et,sn:et,ts:et,ttfb:et,ttfbb:et,ttlb:et,v:et,pr:tt,bg:nt,bs:nt,nr:nt,su:nt,cdn:rt,cen:rt,cid:rt,cmsdd:rt,cmsds:rt,cs:rt,h:rt,nrr:rt,sid:rt,smrt:rt,url:rt,e:it,ot:it,sf:it,st:it,sta:it},st={bl:et,br:tt,mtp:et,tb:tt,nor:rt},ot={sid:64,cid:128,cdn:128,h:128,cen:64},ut=64,lt={e:["bc","ps","e","t","c","b","m","um","pe","pc","rr","as","ae","abs","abe","sk","ce"],ot:["m","a","v","av","i","c","tt","k","o"],sf:["d","h","s","o"],st:["v","l","ll"],sta:["s","p","k","r","a","w","e","f","q","d"]},ct=new Set(["bl","dl","mtp","rtp","tbl"]),dt=new Set(["br","d","tb"]);function ft(e){return"number"==typeof e&&Number.isFinite(e)}function Et(e,t,n){if(Array.isArray(t))for(let i=0;i<t.length;i++){const a=t[i];a instanceof r.SfItem?ft(a.value)||n.push({key:e,message:`Key "${e}" array element [${i}] must be a finite number.`,severity:be}):ft(a)||n.push({key:e,message:`Key "${e}" array element [${i}] must be a finite number.`,severity:be})}else n.push({key:e,message:`Key "${e}" must be an array.`,severity:be})}function Tt(e,t,n){if(Array.isArray(t))for(let i=0;i<t.length;i++){const a=t[i];a instanceof r.SfItem?"string"!=typeof a.value&&n.push({key:e,message:`Key "${e}" array element [${i}] must be a string.`,severity:be}):"string"!=typeof a&&n.push({key:e,message:`Key "${e}" array element [${i}] must be a string.`,severity:be})}else n.push({key:e,message:`Key "${e}" must be an array.`,severity:be})}function ht(e,t){const n=We(e,t),r=[];for(const[t,i]of Object.entries(e)){if(F(t)){"string"!=typeof i?r.push({key:t,message:`Custom key "${t}" value must be a string or token.`,severity:be}):i.length>ut&&r.push({key:t,message:`Custom key "${t}" value exceeds maximum length of ${ut}.`,severity:be});continue}if("v"===t){1!==i&&2!==i&&r.push({key:t,message:'Key "v" must be 1 or 2.',severity:be});continue}let e=at[t];if(e)switch(n===Ae&&t in st&&(e=st[t]),e){case et:ft(i)&&Number.isInteger(i)?ct.has(t)&&i%100!=0&&r.push({key:t,message:`Key "${t}" should be rounded to the nearest 100.`,severity:Ue}):r.push({key:t,message:`Key "${t}" must be a finite integer.`,severity:be});break;case tt:ft(i)?ct.has(t)&&i%100!=0?r.push({key:t,message:`Key "${t}" should be rounded to the nearest 100.`,severity:Ue}):dt.has(t)&&!Number.isInteger(i)&&r.push({key:t,message:`Key "${t}" should be rounded to an integer.`,severity:Ue}):r.push({key:t,message:`Key "${t}" must be a finite number.`,severity:be});break;case nt:"boolean"!=typeof i&&r.push({key:t,message:`Key "${t}" must be a boolean.`,severity:be});break;case rt:"string"!=typeof i?r.push({key:t,message:`Key "${t}" must be a string.`,severity:be}):t in ot&&i.length>ot[t]&&r.push({key:t,message:`Key "${t}" exceeds maximum length of ${ot[t]}.`,severity:be});break;case it:{const e=lt[t];e&&!e.includes(i)&&r.push({key:t,message:`Key "${t}" has invalid token value "${String(i)}". Expected one of: ${e.join(", ")}.`,severity:be});break}case Ze:Et(t,i,r);break;case Je:Tt(t,i,r)}}return{valid:r.every((e=>e.severity!==be)),issues:r}}function mt(e,t){return je(Qe(e,t),ht(e,t),Xe(e,t))}function _t(e,t){const n={...t,reportingMode:M},r=e.split(/\r?\n/).filter((e=>e.length>0));if(0===r.length)return{valid:!1,issues:[{message:"Empty event mode payload. At least one event line is required.",severity:be}],data:[]};const i=[],a=[];for(let e=0;e<r.length;e++)try{const t=xe(r[e]);i.push(t),a.push(mt(t,n))}catch{i.push({}),a.push({valid:!1,issues:[{message:`Failed to decode event line ${e+1}: invalid structured field syntax.`,severity:be}]})}return{...je(...a),data:i}}function pt(e,t){const n=[];"POST"!==e.method&&n.push({message:`Invalid HTTP method '${e.method??"GET"}'. Event reports must use POST.`,severity:be});const r=e.headers?Ge(e.headers).get("Content-Type"):void 0;if(r){const e=r.split(";")[0].trim().toLowerCase();e!==ge&&n.push({message:`Invalid Content-Type '${e}'. Event reports must use '${ge}'.`,severity:be})}else n.push({message:`Missing Content-Type header. Event reports must use '${ge}'.`,severity:be});const i=e.body;if(null==i)return n.push({message:"Missing request body. Event reports must include a body.",severity:be}),{valid:!1,issues:n,data:[]};if("string"!=typeof i)return n.push({message:"Request body must be a string.",severity:be}),{valid:!1,issues:n,data:[]};const a=_t(i,t);return{valid:0===n.length&&a.valid,issues:[...n,...a.issues],data:a.data}}function It(e,t){const n=Ge(e),r=[],i={};for(const e of ae){const t=n.get(e);if(!t)continue;let a;try{a=xe(t)}catch{r.push({key:e,message:`Failed to decode "${e}" header: invalid structured field syntax.`,severity:be});continue}i[e]=a;for(const t of Object.keys(a)){if(F(t))continue;const n=se[t];n&&n!==e&&r.push({key:t,message:`Key "${t}" is in "${e}" but should be in "${n}".`,severity:be})}}const a={valid:0===r.length,issues:r},s=Object.assign({},...ae.map((e=>i[e])).filter(Boolean));return{...je(a,mt(s,{...t,reportingMode:L})),data:s}}function gt(e,t){const n=function(e){if(!e)return;const t=Ge(e),n={};let r=!1;for(const e of ae){const i=t.get(e);i&&(n[e]=i,r=!0)}return r?n:void 0}(e.headers);if(n)return It(n,t);const r=new URL(e.url).searchParams.get(de);if(!r)return{valid:!1,issues:[{message:"No CMCD data found in request headers or query parameters.",severity:be}],data:{}};let i;try{i=xe(r)}catch{return{valid:!1,issues:[{message:"Failed to decode CMCD query parameter: invalid structured field syntax.",severity:be}],data:{}}}return{...mt(i,{...t,reportingMode:L}),data:i}}},1103:function(e,t,n){n.r(t),n.d(t,{CMSD_DYNAMIC:function(){return a},CMSD_STATIC:function(){return s},CMSD_V1:function(){return o},CmsdHeaderField:function(){return u},CmsdObjectType:function(){return l},CmsdStreamType:function(){return d},CmsdStreamingFormat:function(){return c},decodeCmsdDynamic:function(){return f},decodeCmsdStatic:function(){return E},encodeCmsdDynamic:function(){return T},encodeCmsdStatic:function(){return h}});var r=n(6390),i=n(2877);const a="CMSD-Dynamic",s="CMSD-Static",o=1,u={STATIC:s,DYNAMIC:a},l=r.CmObjectType,c=r.CmStreamingFormat,d=r.CmStreamType;function f(e){return e?(0,i.decodeSfList)(e):[]}function E(e){return e?Object.entries((0,i.decodeSfDict)(e)).reduce(((e,[t,n])=>{const{value:r}=n;return e[t]="symbol"==typeof r?(0,i.symbolToStr)(r):r,e}),{}):{}}function T(e,t){if(!e)return"";if("string"==typeof e){if(!t)return"";e=[new i.SfItem(e,t)]}return(0,i.encodeSfList)(e,{whitespace:!1})}function h(e,t){return e?(0,i.encodeSfDict)(function(e,t){const n={};if(null==e||"object"!=typeof e)return n;const a=Object.keys(e),s=!1!==t?.useSymbol;return a.forEach((t=>{let a=e[t];"v"===t&&1===a||(0,r.isValid)(a)&&((0,r.isTokenField)(t)&&"string"==typeof a&&(a=s?Symbol.for(a):new i.SfToken(a)),n[t]=a)})),n}(e,t),{whitespace:!1}):""}},6390:function(e,t,n){n.r(t),n.d(t,{CmObjectType:function(){return r},CmStreamType:function(){return a},CmStreamingFormat:function(){return i},isTokenField:function(){return s},isValid:function(){return o}});const r={MANIFEST:"m",AUDIO:"a",VIDEO:"v",MUXED:"av",INIT:"i",CAPTION:"c",TIMED_TEXT:"tt",KEY:"k",OTHER:"o"},i={DASH:"d",HLS:"h",SMOOTH:"s",OTHER:"o"},a={VOD:"v",LIVE:"l"};function s(e){return["ot","sf","st","e","sta"].includes(e)}function o(e){return"number"==typeof e?Number.isFinite(e):null!=e&&""!==e&&!1!==e}},2877:function(e,t,n){n.r(t),n.d(t,{SfItem:function(){return i},SfToken:function(){return C},decodeSfDict:function(){return F},decodeSfItem:function(){return x},decodeSfList:function(){return Y},encodeSfDict:function(){return re},encodeSfItem:function(){return ie},encodeSfList:function(){return se},parseBareItem:function(){return O},parseBoolean:function(){return f},parseByteSequence:function(){return T},parseDate:function(){return A},parseDict:function(){return w},parseError:function(){return u},parseInnerList:function(){return b},parseIntegerOrDecimal:function(){return g},parseItem:function(){return v},parseItemOrInnerList:function(){return U},parseKey:function(){return M},parseList:function(){return H},parseParameters:function(){return L},parseString:function(){return y},parseToken:function(){return N},serializeBareItem:function(){return X},serializeBoolean:function(){return q},serializeByteSequence:function(){return k},serializeDate:function(){return j},serializeDecimal:function(){return W},serializeDict:function(){return ne},serializeError:function(){return V},serializeInnerList:function(){return te},serializeInteger:function(){return K},serializeItem:function(){return ee},serializeKey:function(){return Z},serializeList:function(){return ae},serializeParams:function(){return J},serializeString:function(){return $},serializeToken:function(){return Q},symbolToStr:function(){return z}});var r=n(9259),i=class e{constructor(t,n){Array.isArray(t)&&(t=t.map((t=>t instanceof e?t:new e(t)))),this.value=t,this.params=n}};const a="Dict";function s(e,t){return{value:e,src:t}}function o(e,t,n,r){return new Error(`failed to ${e} "${i=t,Array.isArray(i)?JSON.stringify(i):i instanceof Map?"Map{}":i instanceof Set?"Set{}":"object"==typeof i?JSON.stringify(i):String(i)}" as ${n}`,{cause:r});var i}function u(e,t,n){return o("parse",e,t,n)}const l="Inner List",c="Bare Item",d="Boolean";function f(e){let t=0;if("?"!==e[t])throw u(e,d);if(t++,"1"===e[t])return s(!0,e.substring(++t));if("0"===e[t])return s(!1,e.substring(++t));throw u(e,d)}const E="Byte Sequence";function T(e){if(":"!==e[0])throw u(e,E);if(!1===(e=e.substring(1)).includes(":"))throw u(e,E);const t=/(^.*?)(:)/g,n=t.exec(e)[1];return e=e.substring(t.lastIndex),s((0,r.decodeBase64)(n),e)}const h="Date",m="Decimal",_="Integer",p=`${_} or ${m}`;function I(e){return e<-999999999999999||999999999999999<e}function g(e){let t,n=1,r="";const i=u(e,p);if("-"===e[0]&&(n=-1,e=e.substring(1)),e.length<=0)throw i;const a=/^(\d+)?/g,o=a.exec(e);if(0===o[0].length)throw i;if(r+=o[1],"."===(e=e.substring(a.lastIndex))[0]){if(r.length>12)throw i;const a=/^(\.\d+)?/g,s=a.exec(e);if(e=e.substring(a.lastIndex),0===s[0].length||s[1].length>4)throw i;if(r+=s[1],r.length>16)throw i;t=parseFloat(r)*n}else{if(r.length>15)throw i;if(t=parseInt(r)*n,I(t))throw u(r,p)}return s(t,e)}function A(e){let t=0;if("@"!==e[t])throw u(e,h);t++;const n=g(e.substring(t));if(!1===Number.isInteger(n.value))throw u(e,h);return s(new Date(1e3*n.value),n.src)}const R="String",S=/[\x00-\x1f\x7f]+/;function y(e){let t="",n=0;if('"'!==e[n])throw u(e,R);for(n++;e.length>n;){if("\\"===e[n]){if(e.length<=n+1)throw u(e,R);if(n++,'"'!==e[n]&&"\\"!==e[n])throw u(e,R);t+=e[n]}else{if('"'===e[n])return s(t,e.substring(++n));if(S.test(e[n]))throw u(e,R);t+=e[n]}n++}throw u(e,R)}var C=class{constructor(e){this.description=e}};const D="Token";function N(e,t){if(!1===/^[a-zA-Z*]$/.test(e[0]))throw u(e,D);const n=/^([!#$%&'*+\-.^_`|~\w:/]+)/g,r=n.exec(e)[1];return e=e.substring(n.lastIndex),s(!1===t?.useSymbol?new C(r):Symbol.for(r),e)}function O(e,t){const n=e[0];if('"'===n)return y(e);if(/^[-0-9]/.test(n))return g(e);if("?"===n)return f(e);if(":"===n)return T(e);if(/^[a-zA-Z*]/.test(n))return N(e,t);if("@"===n)return A(e);throw u(e,c)}const P="Key";function M(e){let t=0;if(!1===/^[a-z*]$/.test(e[t]))throw u(e,P);let n="";for(;e.length>t;){if(!1===/^[a-z0-9_\-.*]$/.test(e[t]))return s(n,e.substring(t));n+=e[t],t++}return s(n,e.substring(t))}function L(e,t){let n;for(;e.length>0&&";"===e[0];){const r=M(e=e.substring(1).trim()),i=r.value;let a=!0;if("="===(e=r.src)[0]){const n=O(e=e.substring(1),t);a=n.value,e=n.src}null==n&&(n={}),n[i]=a}return s(n,e)}function v(e,t){const n=O(e,t),r=L(e=n.src,t);return e=r.src,s(new i(n.value,r.value),e)}function b(e,t){if("("!==e[0])throw u(e,l);e=e.substring(1);const n=[];for(;e.length>0;){if(")"===(e=e.trim())[0]){const r=L(e=e.substring(1),t);return s(new i(n,r.value),r.src)}const r=v(e,t);if(n.push(r.value)," "!==(e=r.src)[0]&&")"!==e[0])throw u(e,l)}throw u(e,l)}function U(e,t){return"("===e[0]?b(e,t):v(e,t)}function w(e,t){const n={};for(;e.length>0;){let r;const o=M(e),l=o.value;if("="===(e=o.src)[0]){const n=U(e.substring(1),t);r=n.value,e=n.src}else{const n=L(e,t);r=new i(!0,n.value),e=n.src}if(n[l]=r,0===(e=e.trim()).length)return s(n,e);if(","!==e[0])throw u(e,a);if(0===(e=e.substring(1).trim()).length||","===e[0])throw u(e,a)}return s(n,e)}function F(e,t){try{const{src:n,value:r}=w(e.trim(),t);if(""!==n)throw u(n,a);return r}catch(t){throw u(e,a,t)}}const B="Item";function x(e,t){try{const{src:n,value:r}=v(e.trim(),t);if(""!==n)throw u(n,B);return r}catch(t){throw u(e,B,t)}}const G="List";function H(e,t){const n=[];for(;e.length>0;){const r=U(e,t);if(n.push(r.value),0===(e=r.src.trim()).length)return s(n,e);if(","!==e[0])throw u(e,G);if(0===(e=e.substring(1).trim()).length||","===e[0])throw u(e,G)}return s(n,e)}function Y(e,t){try{const{src:n,value:r}=H(e.trim(),t);if(""!==n)throw u(n,G);return r}catch(t){throw u(e,G,t)}}function V(e,t,n){return o("serialize",e,t,n)}function q(e){if("boolean"!=typeof e)throw V(e,d);return e?"?1":"?0"}function k(e){if(!1===ArrayBuffer.isView(e))throw V(e,E);return`:${(0,r.encodeBase64)(e)}:`}function K(e){if(I(e))throw V(e,_);return e.toString()}function j(e){return`@${K(e.getTime()/1e3)}`}function W(e){const t=(0,r.roundToEven)(e,3);if(Math.floor(Math.abs(t)).toString().length>12)throw V(e,m);const n=t.toString();return n.includes(".")?n:`${n}.0`}function $(e){if(S.test(e))throw V(e,R);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function z(e){return e.description||e.toString().slice(7,-1)}function Q(e){const t=z(e);if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw V(t,D);return t}function X(e){switch(typeof e){case"number":if(!Number.isFinite(e))throw V(e,c);return Number.isInteger(e)?K(e):W(e);case"string":return $(e);case"symbol":return Q(e);case"boolean":return q(e);case"object":if(e instanceof Date)return j(e);if(e instanceof Uint8Array)return k(e);if(e instanceof C)return Q(e);default:throw V(e,c)}}function Z(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw V(e,P);return e}function J(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Z(e)}`:`;${Z(e)}=${X(t)}`)).join("")}function ee(e){return e instanceof i?`${X(e.value)}${J(e.params)}`:X(e)}function te(e){return`(${e.value.map(ee).join(" ")})${J(e.params)}`}function ne(e,t={whitespace:!0}){if("object"!=typeof e||null==e)throw V(e,a);const n=e instanceof Map?e.entries():Object.entries(e),r=t?.whitespace?" ":"";return Array.from(n).map((([e,t])=>{t instanceof i==0&&(t=new i(t));let n=Z(e);return!0===t.value?n+=J(t.params):(n+="=",Array.isArray(t.value)?n+=te(t):n+=ee(t)),n})).join(`,${r}`)}function re(e,t){return ne(e,t)}function ie(e,t){return e instanceof i||(e=new i(e,t)),ee(e)}function ae(e,t={whitespace:!0}){if(!1===Array.isArray(e))throw V(e,G);const n=t?.whitespace?" ":"";return e.map((e=>{e instanceof i==0&&(e=new i(e));const t=e;return Array.isArray(t.value)?te(t):ee(t)})).join(`,${n}`)}function se(e,t){return ae(e,t)}},9259:function(e,t,n){function r(e){return new Uint8Array(e).reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"")}function i(e){return r(e).replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/,"$1-$2-$3-$4-$5")}function a(e){return new Uint8Array([...atob(e)].map((e=>e.charCodeAt(0))))}n.r(t),n.d(t,{Encoding:function(){return _},RequestResponseType:function(){return A},UTF_16:function(){return d},UTF_16_BE:function(){return f},UTF_16_LE:function(){return E},UTF_8:function(){return T},arrayBufferToHex:function(){return r},arrayBufferToUuid:function(){return i},base64decode:function(){return s},base64encode:function(){return u},convertUint8ToUint16:function(){return l},decodeBase64:function(){return a},decodeText:function(){return h},encodeBase64:function(){return o},encodeText:function(){return m},getBandwidthBps:function(){return p},getBaseUrl:function(){return I},hexToArrayBuffer:function(){return g},isArrayBufferLike:function(){return c},roundToEven:function(){return R},stringToUint16:function(){return S},unescapeHtml:function(){return C},urlToRelativePath:function(){return D},uuid:function(){return N},uuidToArrayBuffer:function(){return O}});const s=a;function o(e){return btoa(String.fromCharCode(...e))}const u=o;function l(e){if(e.length%2!=0){const t=new Uint8Array(e.length+1);return t.set(e),new Uint16Array(t.buffer)}return new Uint16Array(e.buffer)}function c(e){return e instanceof ArrayBuffer||"undefined"!=typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer}const d="utf-16",f="utf-16be",E="utf-16le",T="utf-8";function h(e,t={}){let n;n=c(e)?new DataView(e):new DataView(e.buffer,e.byteOffset,e.byteLength);let r=0,{encoding:i}=t;if(!i){const e=n.getUint8(0),t=n.getUint8(1);239==e&&187==t&&191==n.getUint8(2)?(i=T,r=3):254==e&&255==t?(i=f,r=2):255==e&&254==t?(i=E,r=2):i=T}if("undefined"!=typeof TextDecoder)return new TextDecoder(i).decode(n);const{byteLength:a}=n,s=i!==f;let o,u="";for(;r<a;){switch(i){case T:if(o=n.getUint8(r),o<128)r++;else if(o>=194&&o<=223)if(r+1<a){const e=n.getUint8(r+1);e>=128&&e<=191?(o=(31&o)<<6|63&e,r+=2):r++}else r++;else if(o>=224&&o<=239)if(r+2<=a-1){const e=n.getUint8(r+1),t=n.getUint8(r+2);e>=128&&e<=191&&t>=128&&t<=191?(o=(15&o)<<12|(63&e)<<6|63&t,r+=3):r++}else r++;else if(o>=240&&o<=244)if(r+3<=a-1){const e=n.getUint8(r+1),t=n.getUint8(r+2),i=n.getUint8(r+3);e>=128&&e<=191&&t>=128&&t<=191&&i>=128&&i<=191?(o=(7&o)<<18|(63&e)<<12|(63&t)<<6|63&i,r+=4):r++}else r++;else r++;break;case f:case d:case E:o=n.getUint16(r,s),r+=2}u+=String.fromCodePoint(o)}return u}function m(e){return(new TextEncoder).encode(e)}const _={UTF8:T,UTF16:d,UTF16BE:f,UTF16LE:E};function p(e){const t=e.duration/1e3;return 8*e.encodedBodySize/t}function I(e){const t="string"==typeof e?new URL(e):e;return t.origin+t.pathname.substring(0,t.pathname.lastIndexOf("/")+1)}function g(e){const t=new ArrayBuffer(e.length/2),n=new Uint8Array(t);for(let t=0;t<e.length;t+=2)n[t/2]=parseInt(e.slice(t,t+2),16);return t}const A={TEXT:"text",JSON:"json",BLOB:"blob",ARRAY_BUFFER:"arrayBuffer",DOCUMENT:"document",STREAM:"stream"};function R(e,t){if(e<0)return-R(-e,t);const n=Math.pow(10,t);if(Math.abs(e*n%1-.5)<Number.EPSILON){const t=Math.floor(e*n);return(t%2==0?t:t+1)/n}return Math.round(e*n)/n}function S(e){const t=new ArrayBuffer(2*e.length),n=new DataView(t);for(let t=0;t<e.length;t++)n.setUint16(2*t,e.charCodeAt(t),!0);return new Uint16Array(t)}const y=/&(?:amp|lt|gt|quot|apos|nbsp|lrm|rlm|#[xX]?[0-9a-fA-F]+);/g;function C(e){return-1===e.indexOf("&")?e:e.replace(y,(e=>{switch(e){case"&amp;":return"&";case"&lt;":return"<";case"&gt;":return">";case"&quot;":return'"';case"&apos;":return"'";case"&nbsp;":return" ";case"&lrm;":return"‎";case"&rlm;":return"‏";default:if("#"===e[1]){const t="x"===e[2]||"X"===e[2]?parseInt(e.slice(3),16):parseInt(e.slice(2),10);return String.fromCodePoint(t)}return e}}))}function D(e,t){let n;try{n=new URL(e)}catch{return e}const r=new URL(t);if(n.origin!==r.origin)return e;const i=n.pathname.split("/").slice(1),a=r.pathname.split("/").slice(1,-1),s=Math.min(i.length,a.length);for(let e=0;e<s&&i[e]===a[e];e++)i.shift(),a.shift();for(;a.length;)a.shift(),i.unshift("..");return i.join("/")+n.search+n.hash}function N(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:3&n|8).toString(16)}))}}}function O(e){return g(e.replace(/-/g,""))}},649:function(e,t,n){n.r(t);var r=n(8850),i=n(3621),a=n(138);function s(e){e=e||{};const t=this.context,n=(0,r.default)(t).getInstance(),a=e.settings,s=[];let o,u,l,c;function d(e){return e&&e.bind?e.bind(window.console):window.console.log.bind(window.console)}function f(...e){_(1,this,...e)}function E(...e){_(2,this,...e)}function T(...e){_(3,this,...e)}function h(...e){_(4,this,...e)}function m(...e){_(5,this,...e)}function _(e,t,...r){let o="",d=null;u&&(d=(new Date).getTime(),o+="["+(d-c)+"]"),l&&t&&t.getClassName&&(o+="["+t.getClassName()+"]",t.getType&&(o+="["+t.getType()+"]")),o.length>0&&(o+=" "),Array.apply(null,r).forEach((function(e){o+=e+" "})),s[e]&&a&&a.get().debug.logLevel>=e&&s[e](o),a&&a.get().debug.dispatchEvent&&n.trigger(i.default.LOG,{message:o,level:e})}return o={getLogger:function(e){return{fatal:f.bind(e),error:E.bind(e),warn:T.bind(e),info:h.bind(e),debug:m.bind(e)}},setLogTimestampVisible:function(e){u=e},setCalleeNameVisible:function(e){l=e}},u=!0,l=!0,c=(new Date).getTime(),"undefined"!=typeof window&&window.console&&(s[1]=d(window.console.error),s[2]=d(window.console.error),s[3]=d(window.console.warn),s[4]=d(window.console.info),s[5]=d(window.console.debug)),o}s.__dashjs_factory_name="Debug";const o=a.default.getSingletonFactory(s);o.LOG_LEVEL_NONE=0,o.LOG_LEVEL_FATAL=1,o.LOG_LEVEL_ERROR=2,o.LOG_LEVEL_WARNING=3,o.LOG_LEVEL_INFO=4,o.LOG_LEVEL_DEBUG=5,a.default.updateSingletonFactory(s.__dashjs_factory_name,o),t.default=o},8850:function(e,t,n){n.r(t);var r=n(138),i=n(1191);function a(){let e={};function t(t,n,i,a={},s=!1){if(!t)throw new Error("event type cannot be null or undefined");if(!n||"function"!=typeof n)throw new Error("listener must be a function: "+n);let o=a.priority||0;if(r(t,n,i)>=0)return;e[t]=e[t]||[];const u={callback:n,scope:i,priority:o,executeOnlyOnce:s};i&&i.getStreamId&&(u.streamId=i.getStreamId()),i&&i.getType&&(u.mediaType=i.getType()),a&&a.mode&&(u.mode=a.mode),e[t].some(((n,r)=>{if(n&&o>n.priority)return e[t].splice(r,0,u),!0}))||e[t].push(u)}function n(t,n,i){if(!t||!n||!e[t])return;const a=r(t,n,i);a<0||e[t].splice(a,1)}function r(t,n,r){let i=-1;return e[t]?(e[t].some(((e,t)=>{if(e&&e.callback===n&&(!r||r===e.scope))return i=t,!0})),i):i}return{on:function(e,n,r,i={}){t(e,n,r,i)},once:function(e,n,r,i={}){t(e,n,r,i,!0)},off:n,trigger:function(t,r={},a={}){if(!t||!e[t])return;if((r=r||{}).hasOwnProperty("type"))throw new Error("'type' is a reserved word for event dispatching");r.type=t,a.streamId&&(r.streamId=a.streamId),a.mediaType&&(r.mediaType=a.mediaType);const s=[];e[t].filter((e=>!(!e||a.streamId&&e.streamId&&e.streamId!==a.streamId||a.mediaType&&e.mediaType&&e.mediaType!==a.mediaType||a.mode&&e.mode&&e.mode!==a.mode||!e.mode&&a.mode&&a.mode===i.default.EVENT_MODE_ON_RECEIVE))).forEach((e=>{e&&e.callback.call(e.scope,r),e.executeOnlyOnce&&s.push(e)})),s.forEach((e=>{n(t,e.callback,e.scope)}))},reset:function(){e={}}}}a.__dashjs_factory_name="EventBus";const s=r.default.getSingletonFactory(a);s.EVENT_PRIORITY_LOW=0,s.EVENT_PRIORITY_HIGH=5e3,r.default.updateSingletonFactory(a.__dashjs_factory_name,s),t.default=s},138:function(e,t,n){n.r(t);const r=function(){let e,t=[];const n={},r={};function i(e,n){for(const r in t){const i=t[r];if(i.context===e&&i.name===n)return i.instance}return null}function a(e,t){return t[e]}function s(e,t,n){e in n&&(n[e]=t)}function o(t,n,r){let i;const a=t.__dashjs_factory_name,s=n[a];if(s){let a=s.instance;if(!s.override)return a.apply({context:n,factory:e},r);i=t.apply({context:n},r),a=a.apply({context:n,factory:e,parent:i},r);for(const e in a)i.hasOwnProperty(e)&&(i[e]=a[e])}else i=t.apply({context:n},r);return i.getClassName=function(){return a},i}return e={deleteSingletonInstances:function(e){t=t.filter((t=>t.context!==e))},extend:function(e,t,n,r){!r[e]&&t&&(r[e]={instance:t,override:n})},getClassFactory:function(e){let t=a(e.__dashjs_factory_name,r);return t||(t=function(t){return void 0===t&&(t={}),{create:function(){return o(e,t,arguments)}}},r[e.__dashjs_factory_name]=t),t},getClassFactoryByName:function(e){return a(e,r)},getSingletonFactory:function(e){let r=a(e.__dashjs_factory_name,n);return r||(r=function(n){let r;return void 0===n&&(n={}),{getInstance:function(){return r||(r=i(n,e.__dashjs_factory_name)),r||(r=o(e,n,arguments),t.push({name:e.__dashjs_factory_name,context:n,instance:r})),r}}},n[e.__dashjs_factory_name]=r),r},getSingletonFactoryByName:function(e){return a(e,n)},getSingletonInstance:i,setSingletonInstance:function(e,n,r){for(const i in t){const a=t[i];if(a.context===e&&a.name===n)return void(t[i].instance=r)}t.push({name:n,context:e,instance:r})},updateClassFactory:function(e,t){s(e,t,r)},updateSingletonFactory:function(e,t){s(e,t,n)}},e}();t.default=r},8261:function(e,t,n){n.r(t);var r=n(138),i=n(7263),a=n(649),s=n(5212),o=n(7568),u=n(8850),l=n(3621),c=n(4246);function d(){let e;const t=this.context,n=(0,u.default)(t).getInstance(),r={"streaming.delay.liveDelay":l.default.SETTING_UPDATED_LIVE_DELAY,"streaming.delay.liveDelayFragmentCount":l.default.SETTING_UPDATED_LIVE_DELAY_FRAGMENT_COUNT,"streaming.liveCatchup.enabled":l.default.SETTING_UPDATED_CATCHUP_ENABLED,"streaming.liveCatchup.playbackRate.min":l.default.SETTING_UPDATED_PLAYBACK_RATE_MIN,"streaming.liveCatchup.playbackRate.max":l.default.SETTING_UPDATED_PLAYBACK_RATE_MAX,"streaming.abr.rules.throughputRule.active":l.default.SETTING_UPDATED_ABR_ACTIVE_RULES,"streaming.abr.rules.bolaRule.active":l.default.SETTING_UPDATED_ABR_ACTIVE_RULES,"streaming.abr.rules.insufficientBufferRule.active":l.default.SETTING_UPDATED_ABR_ACTIVE_RULES,"streaming.abr.rules.switchHistoryRule.active":l.default.SETTING_UPDATED_ABR_ACTIVE_RULES,"streaming.abr.rules.droppedFramesRule.active":l.default.SETTING_UPDATED_ABR_ACTIVE_RULES,"streaming.abr.rules.abandonRequestsRule.active":l.default.SETTING_UPDATED_ABR_ACTIVE_RULES,"streaming.abr.rules.l2ARule.active":l.default.SETTING_UPDATED_ABR_ACTIVE_RULES,"streaming.abr.rules.loLPRule.active":l.default.SETTING_UPDATED_ABR_ACTIVE_RULES,"streaming.abr.maxBitrate.video":l.default.SETTING_UPDATED_MAX_BITRATE,"streaming.abr.maxBitrate.audio":l.default.SETTING_UPDATED_MAX_BITRATE,"streaming.abr.minBitrate.video":l.default.SETTING_UPDATED_MIN_BITRATE,"streaming.abr.minBitrate.audio":l.default.SETTING_UPDATED_MIN_BITRATE},d={debug:{logLevel:a.default.LOG_LEVEL_WARNING,dispatchEvent:!1},streaming:{abandonLoadTimeout:1e4,wallclockTimeUpdateInterval:100,manifestUpdateRetryInterval:100,liveUpdateTimeThresholdInMilliseconds:0,cacheInitSegments:!1,cacheInitSegmentsLimit:50,applyServiceDescription:!0,applyProducerReferenceTime:!0,applyContentSteering:!0,enableManifestDurationMismatchFix:!0,parseInbandPrft:!1,enableManifestTimescaleMismatchFix:!1,capabilities:{filterUnsupportedEssentialProperties:!0,supportedEssentialProperties:[{schemeIdUri:s.default.FONT_DOWNLOAD_DVB_SCHEME},{schemeIdUri:s.default.COLOUR_PRIMARIES_SCHEME_ID_URI,value:/1|5|6|7/},{schemeIdUri:s.default.URL_QUERY_INFO_SCHEME},{schemeIdUri:s.default.EXT_URL_QUERY_INFO_SCHEME},{schemeIdUri:s.default.MATRIX_COEFFICIENTS_SCHEME_ID_URI,value:/0|1|5|6/},{schemeIdUri:s.default.TRANSFER_CHARACTERISTICS_SCHEME_ID_URI,value:/1|6|13|14|15/},{schemeIdUri:s.default.SEGMENT_SEQUENCE_REPRESENTATION_SCHEME_ID_URI},...s.default.THUMBNAILS_SCHEME_ID_URIS.map((e=>({schemeIdUri:e})))],useMediaCapabilitiesApi:!0,filterVideoColorimetryEssentialProperties:!0,filterHDRMetadataFormatEssentialProperties:!0,filterAudioChannelConfiguration:!1},events:{eventControllerRefreshDelay:100,deleteEventMessageDataTimeout:1e4},timeShiftBuffer:{calcFromSegmentTimeline:!1,fallbackToSegmentTimeline:!0},metrics:{maxListDepth:100},delay:{liveDelayFragmentCount:NaN,liveDelay:NaN,useSuggestedPresentationDelay:!0},protection:{keepProtectionMediaKeys:!1,keepProtectionMediaKeysMaximumOpenSessions:-1,ignoreEmeEncryptedEvent:!1,detectPlayreadyMessageFormat:!0,ignoreKeyStatuses:!1},buffer:{enableSeekDecorrelationFix:!1,fastSwitchEnabled:null,flushBufferAtTrackSwitch:!1,reuseExistingSourceBuffers:!0,bufferPruningInterval:10,bufferToKeep:20,bufferTimeAtTopQuality:30,bufferTimeAtTopQualityLongForm:60,initialBufferLevel:NaN,bufferTimeDefault:18,longFormContentDurationThreshold:600,stallThreshold:.3,lowLatencyStallThreshold:.3,useAppendWindow:!0,setStallState:!0,avoidCurrentTimeRangePruning:!1,useChangeType:!0,mediaSourceDurationInfinity:!0,resetSourceBuffersForTrackSwitch:!1,syntheticStallEvents:{enabled:!1,ignoreReadyState:!1}},gaps:{jumpGaps:!0,jumpLargeGaps:!0,smallGapLimit:1.5,threshold:.3,enableSeekFix:!0,enableStallFix:!1,stallSeek:.1,seekOffset:0,checkInterval:250},utcSynchronization:{enabled:!0,useManifestDateHeaderTimeSource:!0,backgroundAttempts:2,timeBetweenSyncAttempts:30,maximumTimeBetweenSyncAttempts:600,minimumTimeBetweenSyncAttempts:2,timeBetweenSyncAttemptsAdjustmentFactor:2,maximumAllowedDrift:100,enableBackgroundSyncAfterSegmentDownloadError:!0,defaultTimingSource:{scheme:"urn:mpeg:dash:utc:http-xsdate:2014",value:"https://time.akamai.com/?iso&ms"},artificialTimeOffsetToApply:0},scheduling:{defaultTimeout:500,lowLatencyTimeout:0,scheduleWhilePaused:!0},text:{defaultEnabled:!0,dispatchForManualRendering:!1,extendSegmentedCues:!0,imsc:{displayForcedOnlyMode:!1,enableRollUp:!0},webvtt:{customRenderingEnabled:!1}},liveCatchup:{maxDrift:NaN,playbackRate:{min:NaN,max:NaN},step:{start:{min:NaN,max:NaN},stop:{min:NaN,max:NaN}},liveThreshold:-1,playbackBufferMin:.5,enabled:null,mode:s.default.LIVE_CATCHUP_MODE_DEFAULT},lastBitrateCachingInfo:{enabled:!0,ttl:36e4},lastMediaSettingsCachingInfo:{enabled:!0,ttl:36e4},saveLastMediaSettingsForCurrentStreamingSession:!0,cacheLoadThresholds:{video:10,audio:5},trackSwitchMode:{audio:s.default.TRACK_SWITCH_MODE_ALWAYS_REPLACE,video:s.default.TRACK_SWITCH_MODE_NEVER_REPLACE},includePreselectionsInMediainfoArray:!0,includePreselectionsForInitialTrackSelection:!1,ignoreSelectionPriority:!1,prioritizeRoleMain:!0,assumeDefaultRoleAsMain:!0,selectionModeForInitialTrack:s.default.TRACK_SELECTION_MODE_LOWEST_STARTUP_DELAY,blacklistExpiryTime:-1,fragmentRequestTimeout:2e4,fragmentRequestProgressTimeout:-1,manifestRequestTimeout:1e4,retryIntervals:{[o.HTTPRequest.MPD_TYPE]:500,[o.HTTPRequest.XLINK_EXPANSION_TYPE]:500,[o.HTTPRequest.MEDIA_SEGMENT_TYPE]:1e3,[o.HTTPRequest.INIT_SEGMENT_TYPE]:1e3,[o.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE]:1e3,[o.HTTPRequest.IN