shaka-ts 5.2.4 → 5.2.6

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/shaka-player.min.js +69 -69
@@ -86,7 +86,7 @@ var Io=Object.defineProperty,Co=Object.defineProperties;var xo=Object.getOwnProp
86
86
  * Shaka Player
87
87
  * Copyright 2016 Google LLC
88
88
  * SPDX-License-Identifier: Apache-2.0
89
- */var Ne=class y{static cloneObject(e){let t=new WeakSet,i=r=>{switch(typeof r){case"undefined":case"boolean":case"number":case"string":case"symbol":case"function":return r;default:{if(!r||ArrayBuffer.isView(r))return r;if(t.has(r))return null;let n=Array.isArray(r);if(r.constructor!=Object&&!n)return null;t.add(r);let a=n?[]:{};for(let o in r)a[o]=i(r[o]);return n&&(a.length=r.length),a}}};return i(e)}static shallowCloneObject(e){let t={};for(let i in e)t[i]=e[i];return t}static alphabeticalKeyOrderStringify(e){return Array.isArray(e)?y.arrayStringify_(e):typeof e=="function"?"":e instanceof Object?y.objectStringify_(e):JSON.stringify(e)}static objectStringify_(e){let t=Object.keys(e);t.sort();let i=[];for(let r of t){let s=JSON.stringify(r),n=e[r];if(n!==void 0){let a=y.alphabeticalKeyOrderStringify(n);a&&i.push(s+":"+a)}}return"{"+i.join(",")+"}"}static arrayStringify_(e){let t=[];for(let i=0;i<e.length;i++){let r=i.toString(),s=e[i];if(s!==void 0){let n=y.alphabeticalKeyOrderStringify(s);n&&t.push(r+":"+n)}}return"["+t.join(",")+"]"}};/*! @license
89
+ */var Oe=class y{static cloneObject(e){let t=new WeakSet,i=r=>{switch(typeof r){case"undefined":case"boolean":case"number":case"string":case"symbol":case"function":return r;default:{if(!r||ArrayBuffer.isView(r))return r;if(t.has(r))return null;let n=Array.isArray(r);if(r.constructor!=Object&&!n)return null;t.add(r);let a=n?[]:{};for(let o in r)a[o]=i(r[o]);return n&&(a.length=r.length),a}}};return i(e)}static shallowCloneObject(e){let t={};for(let i in e)t[i]=e[i];return t}static alphabeticalKeyOrderStringify(e){return Array.isArray(e)?y.arrayStringify_(e):typeof e=="function"?"":e instanceof Object?y.objectStringify_(e):JSON.stringify(e)}static objectStringify_(e){let t=Object.keys(e);t.sort();let i=[];for(let r of t){let s=JSON.stringify(r),n=e[r];if(n!==void 0){let a=y.alphabeticalKeyOrderStringify(n);a&&i.push(s+":"+a)}}return"{"+i.join(",")+"}"}static arrayStringify_(e){let t=[];for(let i=0;i<e.length;i++){let r=i.toString(),s=e[i];if(s!==void 0){let n=y.alphabeticalKeyOrderStringify(s);n&&t.push(r+":"+n)}}return"["+t.join(",")+"]"}};/*! @license
90
90
  * Shaka Player
91
91
  * Copyright 2016 Google LLC
92
92
  * SPDX-License-Identifier: Apache-2.0
@@ -98,11 +98,11 @@ var Io=Object.defineProperty,Co=Object.defineProperties;var xo=Object.getOwnProp
98
98
  * Shaka Player
99
99
  * Copyright 2016 Google LLC
100
100
  * SPDX-License-Identifier: Apache-2.0
101
- */var fe=class{static resolve(e,t){return new URL(t,e).toString()}static resolveUris(e,t,i=""){if(t.length==0)return e;let r=[];for(let s of e)for(let n of t){let a=new URL(n,s);if(i){let o=new URLSearchParams(i);for(let[c,d]of o.entries())a.searchParams.append(c,d)}r.push(a.toString())}return r}static getScheme(e){try{let i=new URL(e).protocol.slice(0,-1);if(i&&e.toLowerCase().startsWith(i+":"))return i}catch(i){}let t=e.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):/);return t?t[1].toLowerCase():""}static setScheme(e,t){try{let r=new URL(e);if(r.protocol=t,r.protocol===t+":")return r.toString()}catch(r){}let i=e.indexOf(":");return i===-1?t+":"+e:t+e.slice(i)}static getDomain(e){try{let i=new URL(e).hostname;if(i)return i}catch(i){}let t=e.match(/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\/([^/?#]*)/);return t?t[1]:""}static setDomain(e,t){let i=new URL(e);return i.hostname=t,i.toString()}static applyUrlParams(e,t){let i=t==null?void 0:t();if(!i)return e;let r=new URL(e);for(let[s,n]of new URLSearchParams(i))r.searchParams.set(s,n);return r.toString()}static appendParams(e,t){if(!t.size)return e;let i=new URL(e);for(let[r,s]of t.entries())i.searchParams.set(r,s);return i.toString()}};/*! @license
101
+ */var fe=class y{static resolve(e,t){return new URL(t,e).toString()}static resolveUris(e,t,i=""){if(t.length==0)return e;let r=[];for(let s of e)for(let n of t){let a=new URL(n,s);if(i){let o=i.replace(/^[?&]/,""),c=a.search.replace(/^\?/,"");a.search=c?c+"&"+o:o}r.push(a.toString())}return r}static getScheme(e){try{let i=new URL(e).protocol.slice(0,-1);if(i&&e.toLowerCase().startsWith(i+":"))return i}catch(i){}let t=e.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):/);return t?t[1].toLowerCase():""}static setScheme(e,t){try{let r=new URL(e);if(r.protocol=t,r.protocol===t+":")return r.toString()}catch(r){}let i=e.indexOf(":");return i===-1?t+":"+e:t+e.slice(i)}static getDomain(e){try{let i=new URL(e).hostname;if(i)return i}catch(i){}let t=e.match(/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\/([^/?#]*)/);return t?t[1]:""}static setDomain(e,t){let i=new URL(e);return i.hostname=t,i.toString()}static applyUrlParams(e,t){let i=t==null?void 0:t();if(!i)return e;let r=new URL(e),s=i.replace(/^[?&]/,"").split("&").filter(n=>n);return y.setRawParams_(r,s),r.toString()}static appendParams(e,t){if(!t.size)return e;let i=new URL(e),r=[];for(let[s,n]of t.entries())r.push(encodeURIComponent(s)+"="+encodeURIComponent(n));return y.setRawParams_(i,r),i.toString()}static setRawParams_(e,t){let i=n=>n.split("=")[0],r=new Set(t.map(i)),s=e.search.replace(/^\?/,"").split("&").filter(n=>n&&!r.has(i(n)));e.search=s.concat(t).join("&")}};/*! @license
102
102
  * Shaka Player
103
103
  * Copyright 2016 Google LLC
104
104
  * SPDX-License-Identifier: Apache-2.0
105
- */var _i=class _i extends Le{constructor(t,i,r,s,n,a,o){super();l(this,"config_");l(this,"destroyed_");l(this,"operationManager_");l(this,"requestFilters_");l(this,"responseFilters_");l(this,"onProgressUpdated_");l(this,"onHeadersReceived_");l(this,"onDownloadCompleted_");l(this,"onDownloadFailed_");l(this,"onRequest_");l(this,"onRetry_");l(this,"onResponse_");l(this,"hostCommonAccessTokenMap_");this.config_=null,this.destroyed_=!1,this.operationManager_=new gi,this.requestFilters_=new Set,this.responseFilters_=new Set,this.onProgressUpdated_=t||null,this.onHeadersReceived_=i||null,this.onDownloadCompleted_=r||null,this.onDownloadFailed_=s||null,this.onRequest_=n||null,this.onRetry_=a||null,this.onResponse_=o||null,this.hostCommonAccessTokenMap_=new Map}configure(t){this.config_=t}static registerScheme(t,i,r,s=!1){v.assert(r==null||r>0,"explicit priority must be > 0"),r=r||_i.PluginPriority.APPLICATION;let n=_i.schemes_.get(t);(!n||r>=n.priority)&&_i.schemes_.set(t,{priority:r,plugin:i,progressSupport:s})}static unregisterScheme(t){_i.schemes_.delete(t)}copyFiltersInto(t){for(let i of this.requestFilters_)t.requestFilters_.add(i);for(let i of this.responseFilters_)t.responseFilters_.add(i)}registerRequestFilter(t){this.requestFilters_.add(t)}unregisterRequestFilter(t){this.requestFilters_.delete(t)}clearAllRequestFilters(){this.requestFilters_.clear()}registerResponseFilter(t){this.responseFilters_.add(t)}unregisterResponseFilter(t){this.responseFilters_.delete(t)}clearAllResponseFilters(){this.responseFilters_.clear()}clearCommonAccessTokenMap(){this.hostCommonAccessTokenMap_.clear()}static defaultRetryParameters(){return xr.defaultRetryParameters()}static makeRequest(t,i,r=null){return{uris:t,method:"GET",body:null,headers:{},allowCrossSiteCredentials:!1,retryParameters:i,licenseRequestType:null,sessionId:null,drmInfo:null,initData:null,initDataType:null,streamDataCallback:r,attempt:0}}destroy(){return this.destroyed_=!0,this.requestFilters_.clear(),this.responseFilters_.clear(),this.hostCommonAccessTokenMap_.clear(),super.release(),this.operationManager_.destroy()}request(t,i,r){let s=new _i.NumBytesRemainingClass;if(this.destroyed_){let m=Promise.reject(new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED));return m.catch(()=>{}),new Js(m,()=>Promise.resolve(),s)}v.assert(i.uris&&i.uris.length,"Request without URIs!"),i.method=i.method||"GET",i.headers=i.headers||{};let n=Ne.cloneObject(i.headers);i.retryParameters=i.retryParameters?Ne.cloneObject(i.retryParameters):_i.defaultRetryParameters(),i.uris=Ne.cloneObject(i.uris),i.attempt=0;let a=this.makeRequestWithRetry_(t,i,r,s,n),o=a.chain(m=>this.filterResponse_(t,m,r)),c=0;a.promise.then(()=>{c=Date.now()},()=>{});let d=o.chain(m=>{let f=Date.now()-c,g=m.response;if(g.timeMs+=f,!m.gotProgress&&this.onProgressUpdated_&&!g.fromCache&&i.method!="HEAD"&&t==Eo.SEGMENT){let _=this.allowSwitch_(r);this.onProgressUpdated_(g.timeMs,g.data.byteLength,_,i,r)}return this.onResponse_&&this.onResponse_(t,g,r),g},m=>{throw m&&(v.assert(m instanceof h,"Wrong error type"),m.severity=h.Severity.CRITICAL),m}),u=new Js(d.promise,()=>d.abort(),s);return this.operationManager_.manage(u),u}filterRequest_(t,i,r){let s=je.completed(void 0),n=a=>{s=s.chain(()=>(i.body&&(i.body=D.toArrayBuffer(i.body)),a(t,i,r)))};this.onRequest_&&n(this.onRequest_);for(let a of this.requestFilters_)n(a);return s.chain(void 0,a=>{throw a instanceof h&&a.code==h.Code.OPERATION_ABORTED?a:new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.REQUEST_FILTER_ERROR,a)})}makeRequestWithRetry_(t,i,r,s,n){let a=new xr(i.retryParameters,!1);return this.send_(t,i,r,a,null,s,n)}send_(t,i,r,s,n,a,o){v.assert(this.config_,"Config must not be null!");let c=i.attempt%i.uris.length;i.headers=Ne.cloneObject(o);let d=this.filterRequest_(t,i,r),u=Date.now(),m=0;if(d.promise.then(()=>{m=Date.now()-u},()=>{}),this.config_.forceHTTP&&(i.uris[c]=i.uris[c].replace("https://","http://")),this.config_.forceHTTPS&&(i.uris[c]=i.uris[c].replace("http://","https://")),c>0&&this.onRetry_){let L=i.uris[c],V=i.uris[c-1];this.onRetry_(t,r,L,V)}let f=fe.getScheme(i.uris[c]),g=!1;f||(f=_i.getLocationProtocol_(),v.assert(f[f.length-1]==":","location.protocol expected to end with a colon!"),f=f.slice(0,-1),i.uris[c]=fe.setScheme(i.uris[c],f)),f=f.toLowerCase();let _=_i.schemes_.get(f),T=_?_.plugin:null;if(!T)return je.failed(new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.UNSUPPORTED_SCHEME,i.uris[c]));let S=_.progressSupport,b=this.hostCommonAccessTokenMap_.get(fe.getDomain(i.uris[c]));b&&(i.headers[this.config_.commonAccessTokenHeaderName]=b);let E=d.chain(()=>je.notAbortable(s.attempt())),C=null,A=null,w=!1,M=!1,x;return E.chain(()=>{if(this.destroyed_)return je.aborted();x=Date.now();let L=Eo.SEGMENT,V=0,ee=(Z,ce,W)=>{if(C&&C.stop(),A&&A.tickAfter(J/1e3),this.onProgressUpdated_&&t==L){V++,i.packetNumber=V;let z=this.allowSwitch_(r);this.onProgressUpdated_(Z,ce,z,i,r),g=!0,a.setBytes(W)}},oe=Z=>{M=!0,i.timeToFirstByte=Date.now()-i.requestStartTime,this.onHeadersReceived_&&this.onHeadersReceived_(Z,i,t)};i.requestStartTime=Date.now();let le=T(i.uris[c],i,t,ee,oe,{minBytesForProgressEvents:this.config_.minBytesForProgressEvents});if(!S)return le;let H=i.retryParameters.connectionTimeout;H&&(C=new ae(()=>{w=!0,le.abort()}),C.tickAfter(H/1e3));let J=i.retryParameters.stallTimeout;return J&&(A=new ae(()=>{w=!0,le.abort()})),le}).chain(L=>{C&&C.stop(),A&&A.stop(),L.timeMs==null&&(L.timeMs=Date.now()-x,L.timeMs+=m);let V=L.headers[this.config_.commonAccessTokenHeaderName];V&&this.hostCommonAccessTokenMap_.set(fe.getDomain(L.uri),V);let ee={response:L,gotProgress:g};return M||this.onHeadersReceived_&&this.onHeadersReceived_(L.headers,i,t),this.onDownloadCompleted_&&this.onDownloadCompleted_(t,i,r,L),ee},L=>{if(C&&C.stop(),A&&A.stop(),this.onDownloadFailed_){let V=null,ee=0;L instanceof h&&(V=L,L.code==h.Code.BAD_HTTP_STATUS&&(ee=L.data[1])),this.onDownloadFailed_(t,i,r,V,ee,w)}if(this.destroyed_)return je.aborted();if(w&&(L=new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.TIMEOUT,i.uris[c],t)),L instanceof h){if(L.code==h.Code.OPERATION_ABORTED)throw L;if(L.code==h.Code.ATTEMPTS_EXHAUSTED)throw v.assert(n,"Should have last error"),n;if(L.severity==h.Severity.RECOVERABLE){let V=new Map().set("error",L),ee=new U("retry",V);if(ee.cancelable=!0,this.dispatchEvent(ee),ee.defaultPrevented)throw L;return++i.attempt,this.send_(t,i,r,s,L,a,o)}}throw L})}filterResponse_(t,i,r){let s=je.completed(void 0);for(let n of this.responseFilters_)s=s.chain(()=>{let a=i.response;return a.data&&(a.data=D.toArrayBuffer(a.data)),n(t,a,r)});return s.chain(()=>i,n=>{let a=h.Severity.CRITICAL;if(n instanceof h){if(n.code==h.Code.OPERATION_ABORTED)throw n;a=n.severity}throw new h(a,h.Category.NETWORK,h.Code.RESPONSE_FILTER_ERROR,n)})}allowSwitch_(t){if(t){let i=t.segment,r=t.stream;if(i&&r&&r.fastSwitching&&i.isPartial())return!1}return!0}static getLocationProtocol_(){return location.protocol}};l(_i,"PluginPriority",{FALLBACK:1,PREFERRED:2,APPLICATION:3}),l(_i,"schemes_",new Map);var K=_i;K.NumBytesRemainingClass=class{constructor(){this.bytesToLoad_=0}setBytes(y){this.bytesToLoad_=y}getBytes(){return this.bytesToLoad_}};var Js=class extends je{constructor(t,i,r){super(t,i);l(this,"bytesRemaining_");this.bytesRemaining_=r}getBytesRemaining(){return this.bytesRemaining_.getBytes()}},Eo={MANIFEST:0,SEGMENT:1,LICENSE:2,APP:3,TIMING:4,SERVER_CERTIFICATE:5,KEY:6,ADS:7,CONTENT_STEERING:8,CMCD:9,SESSION_DATA:10,FINGERPRINT:11,PLAYLIST:12,EVENT_CALLBACK:13};/*! @license
105
+ */var _i=class _i extends Le{constructor(t,i,r,s,n,a,o){super();l(this,"config_");l(this,"destroyed_");l(this,"operationManager_");l(this,"requestFilters_");l(this,"responseFilters_");l(this,"onProgressUpdated_");l(this,"onHeadersReceived_");l(this,"onDownloadCompleted_");l(this,"onDownloadFailed_");l(this,"onRequest_");l(this,"onRetry_");l(this,"onResponse_");l(this,"hostCommonAccessTokenMap_");this.config_=null,this.destroyed_=!1,this.operationManager_=new gi,this.requestFilters_=new Set,this.responseFilters_=new Set,this.onProgressUpdated_=t||null,this.onHeadersReceived_=i||null,this.onDownloadCompleted_=r||null,this.onDownloadFailed_=s||null,this.onRequest_=n||null,this.onRetry_=a||null,this.onResponse_=o||null,this.hostCommonAccessTokenMap_=new Map}configure(t){this.config_=t}static registerScheme(t,i,r,s=!1){v.assert(r==null||r>0,"explicit priority must be > 0"),r=r||_i.PluginPriority.APPLICATION;let n=_i.schemes_.get(t);(!n||r>=n.priority)&&_i.schemes_.set(t,{priority:r,plugin:i,progressSupport:s})}static unregisterScheme(t){_i.schemes_.delete(t)}copyFiltersInto(t){for(let i of this.requestFilters_)t.requestFilters_.add(i);for(let i of this.responseFilters_)t.responseFilters_.add(i)}registerRequestFilter(t){this.requestFilters_.add(t)}unregisterRequestFilter(t){this.requestFilters_.delete(t)}clearAllRequestFilters(){this.requestFilters_.clear()}registerResponseFilter(t){this.responseFilters_.add(t)}unregisterResponseFilter(t){this.responseFilters_.delete(t)}clearAllResponseFilters(){this.responseFilters_.clear()}clearCommonAccessTokenMap(){this.hostCommonAccessTokenMap_.clear()}static defaultRetryParameters(){return xr.defaultRetryParameters()}static makeRequest(t,i,r=null){return{uris:t,method:"GET",body:null,headers:{},allowCrossSiteCredentials:!1,retryParameters:i,licenseRequestType:null,sessionId:null,drmInfo:null,initData:null,initDataType:null,streamDataCallback:r,attempt:0}}destroy(){return this.destroyed_=!0,this.requestFilters_.clear(),this.responseFilters_.clear(),this.hostCommonAccessTokenMap_.clear(),super.release(),this.operationManager_.destroy()}request(t,i,r){let s=new _i.NumBytesRemainingClass;if(this.destroyed_){let m=Promise.reject(new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED));return m.catch(()=>{}),new Js(m,()=>Promise.resolve(),s)}v.assert(i.uris&&i.uris.length,"Request without URIs!"),i.method=i.method||"GET",i.headers=i.headers||{};let n=Oe.cloneObject(i.headers);i.retryParameters=i.retryParameters?Oe.cloneObject(i.retryParameters):_i.defaultRetryParameters(),i.uris=Oe.cloneObject(i.uris),i.attempt=0;let a=this.makeRequestWithRetry_(t,i,r,s,n),o=a.chain(m=>this.filterResponse_(t,m,r)),c=0;a.promise.then(()=>{c=Date.now()},()=>{});let d=o.chain(m=>{let f=Date.now()-c,g=m.response;if(g.timeMs+=f,!m.gotProgress&&this.onProgressUpdated_&&!g.fromCache&&i.method!="HEAD"&&t==Eo.SEGMENT){let _=this.allowSwitch_(r);this.onProgressUpdated_(g.timeMs,g.data.byteLength,_,i,r)}return this.onResponse_&&this.onResponse_(t,g,r),g},m=>{throw m&&(v.assert(m instanceof h,"Wrong error type"),m.severity=h.Severity.CRITICAL),m}),u=new Js(d.promise,()=>d.abort(),s);return this.operationManager_.manage(u),u}filterRequest_(t,i,r){let s=je.completed(void 0),n=a=>{s=s.chain(()=>(i.body&&(i.body=D.toArrayBuffer(i.body)),a(t,i,r)))};this.onRequest_&&n(this.onRequest_);for(let a of this.requestFilters_)n(a);return s.chain(void 0,a=>{throw a instanceof h&&a.code==h.Code.OPERATION_ABORTED?a:new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.REQUEST_FILTER_ERROR,a)})}makeRequestWithRetry_(t,i,r,s,n){let a=new xr(i.retryParameters,!1);return this.send_(t,i,r,a,null,s,n)}send_(t,i,r,s,n,a,o){v.assert(this.config_,"Config must not be null!");let c=i.attempt%i.uris.length;i.headers=Oe.cloneObject(o);let d=this.filterRequest_(t,i,r),u=Date.now(),m=0;if(d.promise.then(()=>{m=Date.now()-u},()=>{}),this.config_.forceHTTP&&(i.uris[c]=i.uris[c].replace("https://","http://")),this.config_.forceHTTPS&&(i.uris[c]=i.uris[c].replace("http://","https://")),c>0&&this.onRetry_){let L=i.uris[c],V=i.uris[c-1];this.onRetry_(t,r,L,V)}let f=fe.getScheme(i.uris[c]),g=!1;f||(f=_i.getLocationProtocol_(),v.assert(f[f.length-1]==":","location.protocol expected to end with a colon!"),f=f.slice(0,-1),i.uris[c]=fe.setScheme(i.uris[c],f)),f=f.toLowerCase();let _=_i.schemes_.get(f),T=_?_.plugin:null;if(!T)return je.failed(new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.UNSUPPORTED_SCHEME,i.uris[c]));let S=_.progressSupport,b=this.hostCommonAccessTokenMap_.get(fe.getDomain(i.uris[c]));b&&(i.headers[this.config_.commonAccessTokenHeaderName]=b);let E=d.chain(()=>je.notAbortable(s.attempt())),C=null,A=null,w=!1,M=!1,x;return E.chain(()=>{if(this.destroyed_)return je.aborted();x=Date.now();let L=Eo.SEGMENT,V=0,ee=(Z,ce,W)=>{if(C&&C.stop(),A&&A.tickAfter(J/1e3),this.onProgressUpdated_&&t==L){V++,i.packetNumber=V;let z=this.allowSwitch_(r);this.onProgressUpdated_(Z,ce,z,i,r),g=!0,a.setBytes(W)}},oe=Z=>{M=!0,i.timeToFirstByte=Date.now()-i.requestStartTime,this.onHeadersReceived_&&this.onHeadersReceived_(Z,i,t)};i.requestStartTime=Date.now();let le=T(i.uris[c],i,t,ee,oe,{minBytesForProgressEvents:this.config_.minBytesForProgressEvents});if(!S)return le;let H=i.retryParameters.connectionTimeout;H&&(C=new ae(()=>{w=!0,le.abort()}),C.tickAfter(H/1e3));let J=i.retryParameters.stallTimeout;return J&&(A=new ae(()=>{w=!0,le.abort()})),le}).chain(L=>{C&&C.stop(),A&&A.stop(),L.timeMs==null&&(L.timeMs=Date.now()-x,L.timeMs+=m);let V=L.headers[this.config_.commonAccessTokenHeaderName];V&&this.hostCommonAccessTokenMap_.set(fe.getDomain(L.uri),V);let ee={response:L,gotProgress:g};return M||this.onHeadersReceived_&&this.onHeadersReceived_(L.headers,i,t),this.onDownloadCompleted_&&this.onDownloadCompleted_(t,i,r,L),ee},L=>{if(C&&C.stop(),A&&A.stop(),this.onDownloadFailed_){let V=null,ee=0;L instanceof h&&(V=L,L.code==h.Code.BAD_HTTP_STATUS&&(ee=L.data[1])),this.onDownloadFailed_(t,i,r,V,ee,w)}if(this.destroyed_)return je.aborted();if(w&&(L=new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.TIMEOUT,i.uris[c],t)),L instanceof h){if(L.code==h.Code.OPERATION_ABORTED)throw L;if(L.code==h.Code.ATTEMPTS_EXHAUSTED)throw v.assert(n,"Should have last error"),n;if(L.severity==h.Severity.RECOVERABLE){let V=new Map().set("error",L),ee=new U("retry",V);if(ee.cancelable=!0,this.dispatchEvent(ee),ee.defaultPrevented)throw L;return++i.attempt,this.send_(t,i,r,s,L,a,o)}}throw L})}filterResponse_(t,i,r){let s=je.completed(void 0);for(let n of this.responseFilters_)s=s.chain(()=>{let a=i.response;return a.data&&(a.data=D.toArrayBuffer(a.data)),n(t,a,r)});return s.chain(()=>i,n=>{let a=h.Severity.CRITICAL;if(n instanceof h){if(n.code==h.Code.OPERATION_ABORTED)throw n;a=n.severity}throw new h(a,h.Category.NETWORK,h.Code.RESPONSE_FILTER_ERROR,n)})}allowSwitch_(t){if(t){let i=t.segment,r=t.stream;if(i&&r&&r.fastSwitching&&i.isPartial())return!1}return!0}static getLocationProtocol_(){return location.protocol}};l(_i,"PluginPriority",{FALLBACK:1,PREFERRED:2,APPLICATION:3}),l(_i,"schemes_",new Map);var K=_i;K.NumBytesRemainingClass=class{constructor(){this.bytesToLoad_=0}setBytes(y){this.bytesToLoad_=y}getBytes(){return this.bytesToLoad_}};var Js=class extends je{constructor(t,i,r){super(t,i);l(this,"bytesRemaining_");this.bytesRemaining_=r}getBytesRemaining(){return this.bytesRemaining_.getBytes()}},Eo={MANIFEST:0,SEGMENT:1,LICENSE:2,APP:3,TIMING:4,SERVER_CERTIFICATE:5,KEY:6,ADS:7,CONTENT_STEERING:8,CMCD:9,SESSION_DATA:10,FINGERPRINT:11,PLAYLIST:12,EVENT_CALLBACK:13};/*! @license
106
106
  * Shaka Player
107
107
  * Copyright 2016 Google LLC
108
108
  * SPDX-License-Identifier: Apache-2.0
@@ -130,7 +130,7 @@ var Io=Object.defineProperty,Co=Object.defineProperties;var xo=Object.getOwnProp
130
130
  * Shaka Player
131
131
  * Copyright 2016 Google LLC
132
132
  * SPDX-License-Identifier: Apache-2.0
133
- */var Zt=class{static asMap(e){let t=new Map;for(let i of Object.keys(e))t.set(i,e[i]);return t}static asObject(e){let t={};return e.forEach((i,r)=>{t[r]=i}),t}static hasSameElements(e,t){if(!e&&!t)return!0;if(e&&!t)return!1;if(t&&!e||e.size!=t.size)return!1;for(let[i,r]of e){if(!t.has(i))return!1;let s=t.get(i);if(s!=r||s==null)return!1}return!0}};/*! @license
133
+ */var ei=class{static asMap(e){let t=new Map;for(let i of Object.keys(e))t.set(i,e[i]);return t}static asObject(e){let t={};return e.forEach((i,r)=>{t[r]=i}),t}static hasSameElements(e,t){if(!e&&!t)return!0;if(e&&!t)return!1;if(t&&!e||e.size!=t.size)return!1;for(let[i,r]of e){if(!t.has(i))return!1;let s=t.get(i);if(s!=r||s==null)return!1}return!0}};/*! @license
134
134
  * Shaka Player
135
135
  * Copyright 2016 Google LLC
136
136
  * SPDX-License-Identifier: Apache-2.0
@@ -142,7 +142,7 @@ var Io=Object.defineProperty,Co=Object.defineProperties;var xo=Object.getOwnProp
142
142
  * Shaka Player
143
143
  * Copyright 2016 Google LLC
144
144
  * SPDX-License-Identifier: Apache-2.0
145
- */var ei=class y{constructor(e){l(this,"systemIds");l(this,"data");this.systemIds=[],this.data=[],new F().boxes(["moov","moof"],F.children).fullBox("pssh",t=>this.parsePsshBox_(t)).parse(e),this.data.length==0&&p.v2("No pssh box found!")}parsePsshBox_(e){if(v.assert(e.version!=null,"PSSH boxes are full boxes and must have a valid version"),v.assert(e.flags!=null,"PSSH boxes are full boxes and must have a valid flag"),e.version>1){p.warning("Unrecognized PSSH version found!");return}let t=e.reader.getDataView();v.assert(t.byteOffset>=12,"DataView at incorrect position");let i=D.toUint8(t,-12,e.size);this.data.push(i);let r=e.reader.readBytes(16,!1);this.systemIds.push(ne.toHex(r))}static createPssh(e,t,i,r){v.assert(t.byteLength==16,"Invalid system ID length");let s=e.length,n=12+t.length+4+s;r>0&&(n+=4+16*i.size);let a=new Uint8Array(n),o=D.toDataView(a),c=0;if(o.setUint32(c,n),c+=4,o.setUint32(c,1886614376),c+=4,r<1?o.setUint32(c,0):o.setUint32(c,16777216),c+=4,a.set(t,c),c+=t.length,r>0){o.setUint32(c,i.size),c+=4;for(let d of i){let u=ne.fromHex(d);a.set(u,c),c+=u.length}}return o.setUint32(c,s),c+=4,a.set(e,c),c+=s,v.assert(c===n,"PSSH invalid length."),a}static getPsshData(e){let t=8,i=D.toDataView(e),r=i.getUint8(t);return t+=20,r>0&&(t+=4+16*i.getUint32(t)),t+=4,D.toUint8(i,t)}static normaliseInitData(e){if(!e)return e;let t=new y(e);if(t.data.length<=1)return e;let i=[];for(let r of t.data)i.some(n=>D.equal(n,r))||i.push(r);return ne.concat(...i)}};/*! @license
145
+ */var ti=class y{constructor(e){l(this,"systemIds");l(this,"data");this.systemIds=[],this.data=[],new F().boxes(["moov","moof"],F.children).fullBox("pssh",t=>this.parsePsshBox_(t)).parse(e),this.data.length==0&&p.v2("No pssh box found!")}parsePsshBox_(e){if(v.assert(e.version!=null,"PSSH boxes are full boxes and must have a valid version"),v.assert(e.flags!=null,"PSSH boxes are full boxes and must have a valid flag"),e.version>1){p.warning("Unrecognized PSSH version found!");return}let t=e.reader.getDataView();v.assert(t.byteOffset>=12,"DataView at incorrect position");let i=D.toUint8(t,-12,e.size);this.data.push(i);let r=e.reader.readBytes(16,!1);this.systemIds.push(ne.toHex(r))}static createPssh(e,t,i,r){v.assert(t.byteLength==16,"Invalid system ID length");let s=e.length,n=12+t.length+4+s;r>0&&(n+=4+16*i.size);let a=new Uint8Array(n),o=D.toDataView(a),c=0;if(o.setUint32(c,n),c+=4,o.setUint32(c,1886614376),c+=4,r<1?o.setUint32(c,0):o.setUint32(c,16777216),c+=4,a.set(t,c),c+=t.length,r>0){o.setUint32(c,i.size),c+=4;for(let d of i){let u=ne.fromHex(d);a.set(u,c),c+=u.length}}return o.setUint32(c,s),c+=4,a.set(e,c),c+=s,v.assert(c===n,"PSSH invalid length."),a}static getPsshData(e){let t=8,i=D.toDataView(e),r=i.getUint8(t);return t+=20,r>0&&(t+=4+16*i.getUint32(t)),t+=4,D.toUint8(i,t)}static normaliseInitData(e){if(!e)return e;let t=new y(e);if(t.data.length<=1)return e;let i=[];for(let r of t.data)i.some(n=>D.equal(n,r))||i.push(r);return ne.concat(...i)}};/*! @license
146
146
  * Shaka Player
147
147
  * Copyright 2016 Google LLC
148
148
  * SPDX-License-Identifier: Apache-2.0
@@ -150,7 +150,7 @@ var Io=Object.defineProperty,Co=Object.defineProperties;var xo=Object.getOwnProp
150
150
  * Shaka Player
151
151
  * Copyright 2016 Google LLC
152
152
  * SPDX-License-Identifier: Apache-2.0
153
- */var ti=class ti{static registerParserByMime(e,t){ti.parsersByMime.set(e,t)}static unregisterParserByMime(e){ti.parsersByMime.delete(e)}static probeSupport(){let e={},t=j.getDevice();if(t.supportsMediaSource())for(let r of ti.parsersByMime.keys())e[r]=!0;let i=["application/dash+xml","application/x-mpegurl","application/vnd.apple.mpegurl","audio/x-mpegurl"];for(let r of i)t.supportsMediaSource()?e[r]=ti.parsersByMime.has(r):e[r]=t.supportsMediaType(r);return e}static getFactory(e,t){if(t){let i=ti.parsersByMime.get(t);if(i)return i;p.warning("Could not determine manifest type using MIME type ",t)}throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.UNABLE_TO_GUESS_MANIFEST_TYPE,e,t)}static isSupported(e){return j.getDevice().supportsMediaSource()?ti.parsersByMime.has(e):!1}};l(ti,"HLS","HLS"),l(ti,"DASH","DASH"),l(ti,"MSF","MSF"),l(ti,"UNKNOWN","UNKNOWN"),l(ti,"AccessibilityPurpose",{VISUALLY_IMPAIRED:"visually impaired",HARD_OF_HEARING:"hard of hearing",SPOKEN_SUBTITLES:"spoken subtitles"}),l(ti,"parsersByMime",new Map);var me=ti;/*! @license
153
+ */var ii=class ii{static registerParserByMime(e,t){ii.parsersByMime.set(e,t)}static unregisterParserByMime(e){ii.parsersByMime.delete(e)}static probeSupport(){let e={},t=j.getDevice();if(t.supportsMediaSource())for(let r of ii.parsersByMime.keys())e[r]=!0;let i=["application/dash+xml","application/x-mpegurl","application/vnd.apple.mpegurl","audio/x-mpegurl"];for(let r of i)t.supportsMediaSource()?e[r]=ii.parsersByMime.has(r):e[r]=t.supportsMediaType(r);return e}static getFactory(e,t){if(t){let i=ii.parsersByMime.get(t);if(i)return i;p.warning("Could not determine manifest type using MIME type ",t)}throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.UNABLE_TO_GUESS_MANIFEST_TYPE,e,t)}static isSupported(e){return j.getDevice().supportsMediaSource()?ii.parsersByMime.has(e):!1}};l(ii,"HLS","HLS"),l(ii,"DASH","DASH"),l(ii,"MSF","MSF"),l(ii,"UNKNOWN","UNKNOWN"),l(ii,"AccessibilityPurpose",{VISUALLY_IMPAIRED:"visually impaired",HARD_OF_HEARING:"hard of hearing",SPOKEN_SUBTITLES:"spoken subtitles"}),l(ii,"parsersByMime",new Map);var me=ii;/*! @license
154
154
  * Shaka Player
155
155
  * Copyright 2016 Google LLC
156
156
  * SPDX-License-Identifier: Apache-2.0
@@ -190,23 +190,23 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
190
190
  * Shaka Player
191
191
  * Copyright 2016 Google LLC
192
192
  * SPDX-License-Identifier: Apache-2.0
193
- */var Xt=class Xt{destroy(){}static registerTransmuxer(e,t,i){let s=Xt.normalizeMimeType_(e)+"-"+i;Xt.transmuxerMap_.set(s,{priority:i,plugin:t})}static unregisterTransmuxer(e,t){let r=Xt.normalizeMimeType_(e)+"-"+t;Xt.transmuxerMap_.delete(r)}static findTransmuxer(e,t){for(let i of Xt.PLUGIN_PRIORITY_ORDER){let r=Xt.findTransmuxerPlugin(e,i);if(!r)continue;let s=r(),n=s.isSupported(e,t);if(s.destroy(),n)return r}return null}static findTransmuxerPlugin(e,t=null){let i=Xt.normalizeMimeType_(e),r=t!==null?[t]:Xt.PLUGIN_PRIORITY_ORDER;for(let s of r){let n=i+"-"+s,a=Xt.transmuxerMap_.get(n);if(a)return a.plugin}return null}static normalizeMimeType_(e){return e.toLowerCase().split(";")[0]}static isSupported(e,t){return!!Xt.findTransmuxer(e)}static convertCodecs(e,t){let i=Xt.findTransmuxer(t);if(!i)return t;let r=i(),s=r.convertCodecs(e,t);return r.destroy(),s}};l(Xt,"transmuxerMap_",new Map),l(Xt,"PluginPriority",{FALLBACK:1,PREFERRED_SECONDARY:2,PREFERRED:3,APPLICATION:4});var Oe=Xt;Oe.PLUGIN_PRIORITY_ORDER=[Oe.PluginPriority.APPLICATION,Oe.PluginPriority.PREFERRED,Oe.PluginPriority.PREFERRED_SECONDARY,Oe.PluginPriority.FALLBACK];/*! @license
193
+ */var Xt=class Xt{destroy(){}static registerTransmuxer(e,t,i){let s=Xt.normalizeMimeType_(e)+"-"+i;Xt.transmuxerMap_.set(s,{priority:i,plugin:t})}static unregisterTransmuxer(e,t){let r=Xt.normalizeMimeType_(e)+"-"+t;Xt.transmuxerMap_.delete(r)}static findTransmuxer(e,t){for(let i of Xt.PLUGIN_PRIORITY_ORDER){let r=Xt.findTransmuxerPlugin(e,i);if(!r)continue;let s=r(),n=s.isSupported(e,t);if(s.destroy(),n)return r}return null}static findTransmuxerPlugin(e,t=null){let i=Xt.normalizeMimeType_(e),r=t!==null?[t]:Xt.PLUGIN_PRIORITY_ORDER;for(let s of r){let n=i+"-"+s,a=Xt.transmuxerMap_.get(n);if(a)return a.plugin}return null}static normalizeMimeType_(e){return e.toLowerCase().split(";")[0]}static isSupported(e,t){return!!Xt.findTransmuxer(e)}static convertCodecs(e,t){let i=Xt.findTransmuxer(t);if(!i)return t;let r=i(),s=r.convertCodecs(e,t);return r.destroy(),s}};l(Xt,"transmuxerMap_",new Map),l(Xt,"PluginPriority",{FALLBACK:1,PREFERRED_SECONDARY:2,PREFERRED:3,APPLICATION:4});var Ne=Xt;Ne.PLUGIN_PRIORITY_ORDER=[Ne.PluginPriority.APPLICATION,Ne.PluginPriority.PREFERRED,Ne.PluginPriority.PREFERRED_SECONDARY,Ne.PluginPriority.FALLBACK];/*! @license
194
194
  * Shaka Player
195
195
  * Copyright 2016 Google LLC
196
196
  * SPDX-License-Identifier: Apache-2.0
197
- */var di=class di{static getFullType(e,t){let i=e;return t&&!di.RAW_FORMATS.includes(e)&&(i+='; codecs="'+t+'"'),i}static getFullTypeWithAllCodecs(e,t){let i=e;return t&&(i+='; codecs="'+t+'"'),i}static getFullOrConvertedType(e,t,i){let r=di.getFullType(e,t),s=di.getFullTypeWithAllCodecs(e,t),n=R.ContentType;return Oe.isSupported(s,i)?Oe.convertCodecs(i,s):e!="video/mp2t"&&i==n.AUDIO?r.replace("video","audio"):r}static getExtendedType(e,t,i){let r=[t];return di.EXTENDED_MIME_PARAMETERS_.forEach((n,a)=>{let o=e[a];a=="codecs"?di.RAW_FORMATS.includes(e.mimeType)||r.push('codecs="'+i+'"'):o&&r.push(n+'="'+o+'"')}),e.hdr=="PQ"&&r.push('eotf="smpte2084"'),r.join(";")}static getContainerType(e){return e.split(";")[0].split("/")[1]}static splitCodecs(e){return e.split(",")}static getNormalizedCodec(e){let t=di.getCodecParts_(e),i=t[0].toLowerCase(),r=t[1].toLowerCase();switch(!0){case(i==="mp4a"&&r==="69"):case(i==="mp4a"&&r==="6b"):case(i==="mp4a"&&r==="40.34"):return"mp3";case(i==="mp4a"&&r==="66"):case(i==="mp4a"&&r==="67"):case(i==="mp4a"&&r==="68"):case(i==="mp4a"&&r==="40.2"):case(i==="mp4a"&&r==="40.02"):case(i==="mp4a"&&r==="40.5"):case(i==="mp4a"&&r==="40.05"):case(i==="mp4a"&&r==="40.29"):case(i==="mp4a"&&r==="40.42"):return"aac";case(i==="mp4a"&&r==="a5"):case i==="ac3":case i==="ac-3":return"ac-3";case(i==="mp4a"&&r==="a6"):case i==="eac3":case i==="ec-3":return"ec-3";case i==="ac-4":return"ac-4";case(i==="mp4a"&&r==="b2"):return"dtsx";case(i==="mp4a"&&r==="a9"):return"dtsc";case i==="vp09":case i==="vp9":return"vp9";case i==="avc1":case i==="avc3":return"avc";case i==="hvc1":case i==="hev1":return"hevc";case i==="vvc1":case i==="vvi1":return"vvc";case i==="dvh1":case i==="dvhe":return r&&r.startsWith("05")?"dovi-p5":"dovi-hevc";case i==="dvav":case i==="dva1":return"dovi-avc";case i==="dav1":return"dovi-av1";case i==="dvc1":case i==="dvi1":return"dovi-vvc";case i==="lvc1":return"lcevc"}return i}static getCodecBase(e){let t=[];for(let i of e.split(",")){let r=di.getCodecParts_(i);t.push(r[0])}return t.sort().join(",")}static getBasicType(e){return e.split(";")[0]}static getCodecs(e){let t=e.split(/ *; */);t.shift();let i=t.find(s=>s.startsWith("codecs="));return i?i.split("=")[1].replace(/^"|"$/g,""):""}static isHlsType(e){return e==="application/x-mpegurl"||e==="application/vnd.apple.mpegurl"||e==="audio/x-mpegurl"}static isDashType(e){return e==="application/dash+xml"||e==="video/vnd.mpeg.dash.mpd"}static getCorrectAudioCodecs(e,t){let i=j.getDevice(),r=ie.BrowserEngine.WEBKIT,s=e.toLowerCase();return s=="flac"?i.getBrowserEngine()!=r?"flac":"fLaC":s==="opus"?i.getBrowserEngine()!=r?"opus":di.getContainerType(t)=="mp4"?"Opus":"opus":s=="ac-3"&&i.requiresEC3InitSegments()?"ec-3":e}static getCorrectVideoCodecs(e){if(e.includes("avc1")){let t=e.split(".");if(t.length==3){let i=t.shift()+".";return i+=parseInt(t.shift(),10).toString(16),i+=("000"+parseInt(t.shift(),10).toString(16)).slice(-4),i}}else if(e=="vp9")return"vp09.00.41.08";return e}static getCodecParts_(e){let t=e.split("."),i=t[0];t.shift();let r=t.join(".");return[i,r]}};l(di,"CEA608_CLOSED_CAPTION_MIMETYPE","application/cea-608"),l(di,"CEA708_CLOSED_CAPTION_MIMETYPE","application/cea-708"),l(di,"RAW_FORMATS",["audio/aac","audio/ac3","audio/ec3","audio/mpeg"]);var N=di;N.EXTENDED_MIME_PARAMETERS_=new Map().set("codecs","codecs").set("frameRate","framerate").set("bandwidth","bitrate").set("width","width").set("height","height").set("channelsCount","channels");/*! @license
197
+ */var di=class di{static getFullType(e,t){let i=e;return t&&!di.RAW_FORMATS.includes(e)&&(i+='; codecs="'+t+'"'),i}static getFullTypeWithAllCodecs(e,t){let i=e;return t&&(i+='; codecs="'+t+'"'),i}static getFullOrConvertedType(e,t,i){let r=di.getFullType(e,t),s=di.getFullTypeWithAllCodecs(e,t),n=R.ContentType;return Ne.isSupported(s,i)?Ne.convertCodecs(i,s):e!="video/mp2t"&&i==n.AUDIO?r.replace("video","audio"):r}static getExtendedType(e,t,i){let r=[t];return di.EXTENDED_MIME_PARAMETERS_.forEach((n,a)=>{let o=e[a];a=="codecs"?di.RAW_FORMATS.includes(e.mimeType)||r.push('codecs="'+i+'"'):o&&r.push(n+'="'+o+'"')}),e.hdr=="PQ"&&r.push('eotf="smpte2084"'),r.join(";")}static getContainerType(e){return e.split(";")[0].split("/")[1]}static splitCodecs(e){return e.split(",")}static getNormalizedCodec(e){let t=di.getCodecParts_(e),i=t[0].toLowerCase(),r=t[1].toLowerCase();switch(!0){case(i==="mp4a"&&r==="69"):case(i==="mp4a"&&r==="6b"):case(i==="mp4a"&&r==="40.34"):return"mp3";case(i==="mp4a"&&r==="66"):case(i==="mp4a"&&r==="67"):case(i==="mp4a"&&r==="68"):case(i==="mp4a"&&r==="40.2"):case(i==="mp4a"&&r==="40.02"):case(i==="mp4a"&&r==="40.5"):case(i==="mp4a"&&r==="40.05"):case(i==="mp4a"&&r==="40.29"):case(i==="mp4a"&&r==="40.42"):return"aac";case(i==="mp4a"&&r==="a5"):case i==="ac3":case i==="ac-3":return"ac-3";case(i==="mp4a"&&r==="a6"):case i==="eac3":case i==="ec-3":return"ec-3";case i==="ac-4":return"ac-4";case(i==="mp4a"&&r==="b2"):return"dtsx";case(i==="mp4a"&&r==="a9"):return"dtsc";case i==="vp09":case i==="vp9":return"vp9";case i==="avc1":case i==="avc3":return"avc";case i==="hvc1":case i==="hev1":return"hevc";case i==="vvc1":case i==="vvi1":return"vvc";case i==="dvh1":case i==="dvhe":return r&&r.startsWith("05")?"dovi-p5":"dovi-hevc";case i==="dvav":case i==="dva1":return"dovi-avc";case i==="dav1":return"dovi-av1";case i==="dvc1":case i==="dvi1":return"dovi-vvc";case i==="lvc1":return"lcevc"}return i}static getCodecBase(e){let t=[];for(let i of e.split(",")){let r=di.getCodecParts_(i);t.push(r[0])}return t.sort().join(",")}static getBasicType(e){return e.split(";")[0]}static getCodecs(e){let t=e.split(/ *; */);t.shift();let i=t.find(s=>s.startsWith("codecs="));return i?i.split("=")[1].replace(/^"|"$/g,""):""}static isHlsType(e){return e==="application/x-mpegurl"||e==="application/vnd.apple.mpegurl"||e==="audio/x-mpegurl"}static isDashType(e){return e==="application/dash+xml"||e==="video/vnd.mpeg.dash.mpd"}static getCorrectAudioCodecs(e,t){let i=j.getDevice(),r=ie.BrowserEngine.WEBKIT,s=e.toLowerCase();return s=="flac"?i.getBrowserEngine()!=r?"flac":"fLaC":s==="opus"?i.getBrowserEngine()!=r?"opus":di.getContainerType(t)=="mp4"?"Opus":"opus":s=="ac-3"&&i.requiresEC3InitSegments()?"ec-3":e}static getCorrectVideoCodecs(e){if(e.includes("avc1")){let t=e.split(".");if(t.length==3){let i=t.shift()+".";return i+=parseInt(t.shift(),10).toString(16),i+=("000"+parseInt(t.shift(),10).toString(16)).slice(-4),i}}else if(e=="vp9")return"vp09.00.41.08";return e}static getCodecParts_(e){let t=e.split("."),i=t[0];t.shift();let r=t.join(".");return[i,r]}};l(di,"CEA608_CLOSED_CAPTION_MIMETYPE","application/cea-608"),l(di,"CEA708_CLOSED_CAPTION_MIMETYPE","application/cea-708"),l(di,"RAW_FORMATS",["audio/aac","audio/ac3","audio/ec3","audio/mpeg"]);var O=di;O.EXTENDED_MIME_PARAMETERS_=new Map().set("codecs","codecs").set("frameRate","framerate").set("bandwidth","bitrate").set("width","width").set("height","height").set("channelsCount","channels");/*! @license
198
198
  * Shaka Player
199
199
  * Copyright 2016 Google LLC
200
200
  * SPDX-License-Identifier: Apache-2.0
201
- */var cr=class cr{constructor(e,t=me.UNKNOWN){l(this,"parser_");l(this,"displayer_");l(this,"manifestType_");l(this,"segmentRelativeVttTiming_");l(this,"containerIsMpegTs_");l(this,"external_");l(this,"timestampOffsetMap_");l(this,"deferredAppends_");l(this,"appendWindowStart_");l(this,"appendWindowEnd_");l(this,"bufferStart_");l(this,"bufferEnd_");l(this,"selectedClosedCaptionId_");l(this,"modifyCueCallback_");l(this,"closedCaptionsMap_");this.parser_=null,this.displayer_=e,this.manifestType_=t,this.segmentRelativeVttTiming_=!1,this.containerIsMpegTs_=!1,this.external_=!1,this.timestampOffsetMap_=new Map,this.deferredAppends_=new Map,this.appendWindowStart_=0,this.appendWindowEnd_=1/0,this.bufferStart_=null,this.bufferEnd_=null,this.selectedClosedCaptionId_="",this.modifyCueCallback_=(i,r)=>{},this.closedCaptionsMap_=new Map}static registerParser(e,t){cr.parserMap_.set(e,t)}static unregisterParser(e){cr.parserMap_.delete(e)}static findParser(e){return cr.parserMap_.get(e)}static isTypeSupported(e){return cr.parserMap_.has(e)?!0:e==N.CEA608_CLOSED_CAPTION_MIMETYPE||e==N.CEA708_CLOSED_CAPTION_MIMETYPE?!!Rt.findDecoder():!1}destroy(){return this.parser_=null,this.displayer_=null,this.timestampOffsetMap_.clear(),this.deferredAppends_.clear(),this.closedCaptionsMap_.clear(),Promise.resolve()}setDisplayer(e){this.displayer_=e}initParser(e,t,i){if(e==N.CEA608_CLOSED_CAPTION_MIMETYPE||e==N.CEA708_CLOSED_CAPTION_MIMETYPE){this.parser_=null;return}let r=cr.parserMap_.get(e);v.assert(r,"Text type negotiation should have happened already"),this.parser_=r(),this.parser_.setManifestType(this.manifestType_),this.segmentRelativeVttTiming_=i,this.external_=t}setModifyCueCallback(e){this.modifyCueCallback_=e}async appendBuffer(e,t,i,r,s=-1){if(v.assert(this.parser_,"The parser should already be initialized"),!this.external_&&!this.timestampOffsetMap_.has(s)){let u=this.deferredAppends_.get(s)||[];u.push({buffer:e,startTime:t,endTime:i,uri:r,disco:s}),this.deferredAppends_.set(s,u);return}if(await Promise.resolve(),!this.parser_||!this.displayer_)return;if(t==null||i==null){this.parser_.parseInit(D.toUint8(e));return}let n=this.external_?0:this.timestampOffsetMap_.get(s),a=this.segmentRelativeVttTiming_||this.external_?t:this.timestampOffsetMap_.get(s),o={periodStart:n,segmentStart:t,segmentEnd:i,vttOffset:a,isMpegTs:this.containerIsMpegTs_},c=this.parser_.parseMedia(D.toUint8(e),o,r,[]);for(let u of c)this.modifyCueCallback_(u,r||null,o);let d=c.filter(u=>u.startTime>=this.appendWindowStart_&&u.startTime<this.appendWindowEnd_);this.displayer_.append(d),this.bufferStart_==null?this.bufferStart_=Math.max(t,this.appendWindowStart_):(v.assert(this.bufferEnd_!=null,"There should already be a buffered range end."),v.assert(t-this.bufferEnd_<=1,"There should not be a gap in text references >1s")),this.bufferEnd_=Math.min(i,this.appendWindowEnd_)}async remove(e,t,i=!1){if(await Promise.resolve(),e>=t||i&&(this.removeClosedCaptions_(e,t),this.selectedClosedCaptionId_===""))return;let r=s=>s.startTime<t&&s.endTime>e;for(let s of this.deferredAppends_.keys()){let n=this.deferredAppends_.get(s),a=[];for(let o=0;o<n.length;o++){let c=n[o];r(c)||a.push(c)}this.deferredAppends_.set(s,a)}this.displayer_&&this.displayer_.remove(e,t)&&(this.bufferStart_==null?v.assert(this.bufferEnd_==null,"end must be null if startTime is null"):(v.assert(this.bufferEnd_!=null,"end must be non-null if startTime is non-null"),t<=this.bufferStart_||e>=this.bufferEnd_||(e<=this.bufferStart_&&t>=this.bufferEnd_?this.bufferStart_=this.bufferEnd_=null:e<=this.bufferStart_&&t<this.bufferEnd_?this.bufferStart_=t:e>this.bufferStart_&&t>=this.bufferEnd_?this.bufferEnd_=e:v.assert(!1,"removal from the middle is not supported by TextEngine")),this.updateRangesWithClosedCaptions_()))}setTimestampOffset(e,t=-1){(!this.timestampOffsetMap_.has(t)||this.manifestType_!==me.HLS||this.manifestType_===me.HLS&&t===-1&&this.timestampOffsetMap_.get(t)===0)&&this.timestampOffsetMap_.set(t,e);let r=this.deferredAppends_.get(t)||[];for(let s=0;s<r.length;s++){let{buffer:n,startTime:a,endTime:o,uri:c,disco:d}=r[s];this.appendBuffer(n,a,o,c,d)}this.deferredAppends_.set(t,[])}setContainerIsMpegTs(e){this.containerIsMpegTs_=e}setAppendWindow(e,t){this.appendWindowStart_=e,this.appendWindowEnd_=t}bufferStart(){return this.bufferStart_}bufferEnd(){return this.bufferEnd_}isBuffered(e){return this.bufferStart_==null||this.bufferEnd_==null?!1:e>=this.bufferStart_&&e<this.bufferEnd_}bufferedAheadOf(e){return this.bufferEnd_==null||this.bufferEnd_<e?0:(v.assert(this.bufferStart_!=null,"start should not be null if end is not null"),this.bufferEnd_-Math.max(e,this.bufferStart_))}bufferedBehindOf(e){return this.bufferStart_==null||this.bufferStart_>e?0:(v.assert(this.bufferEnd_!=null,"end should not be null if start is not null"),Math.min(e,this.bufferEnd_)-this.bufferStart_)}setSelectedClosedCaptionId(e,t){this.selectedClosedCaptionId_=e;let i=this.closedCaptionsMap_.get(e);if(i){let r=i.filter(s=>s.endTime<=t);r.length&&this.displayer_.append(r)}}applyVideoTimestampOffsetRecursive_(e,t){e.startTime+=t,e.endTime+=t;for(let i of e.nestedCues)this.applyVideoTimestampOffsetRecursive_(i,t)}storeAndAppendClosedCaptions(e,t){let i=new Map;for(let r of e){let s=r.stream,n=r.cue;i.getOrInsert(s,[]),this.applyVideoTimestampOffsetRecursive_(n,t),n.startTime>=this.appendWindowStart_&&n.startTime<this.appendWindowEnd_&&(i.get(s).push(n),s==this.selectedClosedCaptionId_&&this.displayer_.append([n]))}for(let r of i.keys()){let s=this.closedCaptionsMap_.getOrInsertComputed(r,()=>[]);for(let n of i.get(r))s.push(n)}this.updateRangesWithClosedCaptions_()}removeClosedCaptions_(e,t){for(let i of this.closedCaptionsMap_.keys()){let r=this.closedCaptionsMap_.get(i);r=r.filter(s=>s.startTime<e||s.endTime>=t),this.closedCaptionsMap_.set(i,r)}}updateRangesWithClosedCaptions_(){let e=1/0,t=-1/0;for(let i of this.closedCaptionsMap_.values())for(let r of i)e=Math.min(e,r.startTime),t=Math.max(t,r.endTime);e===1/0||t===-1/0||(this.bufferStart_==null?this.bufferStart_=Math.max(e,this.appendWindowStart_):this.bufferStart_=Math.min(this.bufferStart_,Math.max(e,this.appendWindowStart_)),this.bufferEnd_=Math.max(this.bufferEnd_,Math.min(t,this.appendWindowEnd_)))}getNumberOfClosedCaptionChannels(){return this.closedCaptionsMap_.size}getNumberOfClosedCaptionsInChannel(e){let t=this.closedCaptionsMap_.get(e);return t?t.length:0}};l(cr,"parserMap_",new Map);var Ue=cr;/*! @license
201
+ */var cr=class cr{constructor(e,t=me.UNKNOWN){l(this,"parser_");l(this,"displayer_");l(this,"manifestType_");l(this,"segmentRelativeVttTiming_");l(this,"containerIsMpegTs_");l(this,"external_");l(this,"timestampOffsetMap_");l(this,"deferredAppends_");l(this,"appendWindowStart_");l(this,"appendWindowEnd_");l(this,"bufferStart_");l(this,"bufferEnd_");l(this,"selectedClosedCaptionId_");l(this,"modifyCueCallback_");l(this,"closedCaptionsMap_");this.parser_=null,this.displayer_=e,this.manifestType_=t,this.segmentRelativeVttTiming_=!1,this.containerIsMpegTs_=!1,this.external_=!1,this.timestampOffsetMap_=new Map,this.deferredAppends_=new Map,this.appendWindowStart_=0,this.appendWindowEnd_=1/0,this.bufferStart_=null,this.bufferEnd_=null,this.selectedClosedCaptionId_="",this.modifyCueCallback_=(i,r)=>{},this.closedCaptionsMap_=new Map}static registerParser(e,t){cr.parserMap_.set(e,t)}static unregisterParser(e){cr.parserMap_.delete(e)}static findParser(e){return cr.parserMap_.get(e)}static isTypeSupported(e){return cr.parserMap_.has(e)?!0:e==O.CEA608_CLOSED_CAPTION_MIMETYPE||e==O.CEA708_CLOSED_CAPTION_MIMETYPE?!!Rt.findDecoder():!1}destroy(){return this.parser_=null,this.displayer_=null,this.timestampOffsetMap_.clear(),this.deferredAppends_.clear(),this.closedCaptionsMap_.clear(),Promise.resolve()}setDisplayer(e){this.displayer_=e}initParser(e,t,i){if(e==O.CEA608_CLOSED_CAPTION_MIMETYPE||e==O.CEA708_CLOSED_CAPTION_MIMETYPE){this.parser_=null;return}let r=cr.parserMap_.get(e);v.assert(r,"Text type negotiation should have happened already"),this.parser_=r(),this.parser_.setManifestType(this.manifestType_),this.segmentRelativeVttTiming_=i,this.external_=t}setModifyCueCallback(e){this.modifyCueCallback_=e}async appendBuffer(e,t,i,r,s=-1){if(v.assert(this.parser_,"The parser should already be initialized"),!this.external_&&!this.timestampOffsetMap_.has(s)){let u=this.deferredAppends_.get(s)||[];u.push({buffer:e,startTime:t,endTime:i,uri:r,disco:s}),this.deferredAppends_.set(s,u);return}if(await Promise.resolve(),!this.parser_||!this.displayer_)return;if(t==null||i==null){this.parser_.parseInit(D.toUint8(e));return}let n=this.external_?0:this.timestampOffsetMap_.get(s),a=this.segmentRelativeVttTiming_||this.external_?t:this.timestampOffsetMap_.get(s),o={periodStart:n,segmentStart:t,segmentEnd:i,vttOffset:a,isMpegTs:this.containerIsMpegTs_},c=this.parser_.parseMedia(D.toUint8(e),o,r,[]);for(let u of c)this.modifyCueCallback_(u,r||null,o);let d=c.filter(u=>u.startTime>=this.appendWindowStart_&&u.startTime<this.appendWindowEnd_);this.displayer_.append(d),this.bufferStart_==null?this.bufferStart_=Math.max(t,this.appendWindowStart_):(v.assert(this.bufferEnd_!=null,"There should already be a buffered range end."),v.assert(t-this.bufferEnd_<=1,"There should not be a gap in text references >1s")),this.bufferEnd_=Math.min(i,this.appendWindowEnd_)}async remove(e,t,i=!1){if(await Promise.resolve(),e>=t||i&&(this.removeClosedCaptions_(e,t),this.selectedClosedCaptionId_===""))return;let r=s=>s.startTime<t&&s.endTime>e;for(let s of this.deferredAppends_.keys()){let n=this.deferredAppends_.get(s),a=[];for(let o=0;o<n.length;o++){let c=n[o];r(c)||a.push(c)}this.deferredAppends_.set(s,a)}this.displayer_&&this.displayer_.remove(e,t)&&(this.bufferStart_==null?v.assert(this.bufferEnd_==null,"end must be null if startTime is null"):(v.assert(this.bufferEnd_!=null,"end must be non-null if startTime is non-null"),t<=this.bufferStart_||e>=this.bufferEnd_||(e<=this.bufferStart_&&t>=this.bufferEnd_?this.bufferStart_=this.bufferEnd_=null:e<=this.bufferStart_&&t<this.bufferEnd_?this.bufferStart_=t:e>this.bufferStart_&&t>=this.bufferEnd_?this.bufferEnd_=e:v.assert(!1,"removal from the middle is not supported by TextEngine")),this.updateRangesWithClosedCaptions_()))}setTimestampOffset(e,t=-1){(!this.timestampOffsetMap_.has(t)||this.manifestType_!==me.HLS||this.manifestType_===me.HLS&&t===-1&&this.timestampOffsetMap_.get(t)===0)&&this.timestampOffsetMap_.set(t,e);let r=this.deferredAppends_.get(t)||[];for(let s=0;s<r.length;s++){let{buffer:n,startTime:a,endTime:o,uri:c,disco:d}=r[s];this.appendBuffer(n,a,o,c,d)}this.deferredAppends_.set(t,[])}setContainerIsMpegTs(e){this.containerIsMpegTs_=e}setAppendWindow(e,t){this.appendWindowStart_=e,this.appendWindowEnd_=t}bufferStart(){return this.bufferStart_}bufferEnd(){return this.bufferEnd_}isBuffered(e){return this.bufferStart_==null||this.bufferEnd_==null?!1:e>=this.bufferStart_&&e<this.bufferEnd_}bufferedAheadOf(e){return this.bufferEnd_==null||this.bufferEnd_<e?0:(v.assert(this.bufferStart_!=null,"start should not be null if end is not null"),this.bufferEnd_-Math.max(e,this.bufferStart_))}bufferedBehindOf(e){return this.bufferStart_==null||this.bufferStart_>e?0:(v.assert(this.bufferEnd_!=null,"end should not be null if start is not null"),Math.min(e,this.bufferEnd_)-this.bufferStart_)}setSelectedClosedCaptionId(e,t){this.selectedClosedCaptionId_=e;let i=this.closedCaptionsMap_.get(e);if(i){let r=i.filter(s=>s.endTime<=t);r.length&&this.displayer_.append(r)}}applyVideoTimestampOffsetRecursive_(e,t){e.startTime+=t,e.endTime+=t;for(let i of e.nestedCues)this.applyVideoTimestampOffsetRecursive_(i,t)}storeAndAppendClosedCaptions(e,t){let i=new Map;for(let r of e){let s=r.stream,n=r.cue;i.getOrInsert(s,[]),this.applyVideoTimestampOffsetRecursive_(n,t),n.startTime>=this.appendWindowStart_&&n.startTime<this.appendWindowEnd_&&(i.get(s).push(n),s==this.selectedClosedCaptionId_&&this.displayer_.append([n]))}for(let r of i.keys()){let s=this.closedCaptionsMap_.getOrInsertComputed(r,()=>[]);for(let n of i.get(r))s.push(n)}this.updateRangesWithClosedCaptions_()}removeClosedCaptions_(e,t){for(let i of this.closedCaptionsMap_.keys()){let r=this.closedCaptionsMap_.get(i);r=r.filter(s=>s.startTime<e||s.endTime>=t),this.closedCaptionsMap_.set(i,r)}}updateRangesWithClosedCaptions_(){let e=1/0,t=-1/0;for(let i of this.closedCaptionsMap_.values())for(let r of i)e=Math.min(e,r.startTime),t=Math.max(t,r.endTime);e===1/0||t===-1/0||(this.bufferStart_==null?this.bufferStart_=Math.max(e,this.appendWindowStart_):this.bufferStart_=Math.min(this.bufferStart_,Math.max(e,this.appendWindowStart_)),this.bufferEnd_=Math.max(this.bufferEnd_,Math.min(t,this.appendWindowEnd_)))}getNumberOfClosedCaptionChannels(){return this.closedCaptionsMap_.size}getNumberOfClosedCaptionsInChannel(e){let t=this.closedCaptionsMap_.get(e);return t?t.length:0}};l(cr,"parserMap_",new Map);var Ue=cr;/*! @license
202
202
  * Shaka Player
203
203
  * Copyright 2016 Google LLC
204
204
  * SPDX-License-Identifier: Apache-2.0
205
- */var Ce=class Ce{static chooseCodecsAndFilterManifest(e,t,i,r,s){if(s.length){let f=e.textStreams;for(let g of s){let _=f.filter(T=>!!(T.codecs.startsWith(g)||T.mimeType.startsWith(g)));if(_.length){f=_;break}}e.textStreams=f}let n=e.variants;if((t.length||i.length)&&(n=Ce.choosePreferredCodecs(n,t,i)),r.length){let f=new lr;for(let _ of n)f.push(String(_.video.width||0),_);let g=[];f.forEach((_,T)=>{let S=0,b=[];for(let E of T){let C=r.filter(A=>E.decodingInfos[0][A]).length;C>S?(S=C,b=[E]):C==S&&b.push(E)}g.push(...b)}),n=g}let a=new Set;for(let f of n)f.video&&a.add(f.video);if(!a.size){e.variants=n;return}let o={vp8:1,avc:1,"dovi-avc":.95,vp9:.9,vp09:.9,hevc:.85,"dovi-hevc":.8,"dovi-p5":.75,av01:.7,"dovi-av1":.65,vvc:.6},c=Array.from(a).sort((f,g)=>{if(f.bandwidth&&g.bandwidth&&f.bandwidth!=g.bandwidth)return f.bandwidth-g.bandwidth;if(f.width!=g.width)return f.width-g.width;if(f.codecs&&g.codecs){let _=N.getNormalizedCodec(f.codecs),T=N.getNormalizedCodec(g.codecs),S=o[_]||1,b=o[T]||1;return S-b}return 0}),d=[],u=new Map,m=f=>{let g=[String(f.width||""),String(f.height||""),String(Math.round(f.frameRate||0)),f.hdr||"",f.fastSwitching];return f.dependencyStream&&g.push(f.dependencyStream.baseOriginalId||""),f.roles&&g.push(f.roles.sort().join("_")),g.join(";")};for(let f of c){let g=m(f),_=u.get(g)||[];if(!_.length)_.push(f),d.push(f.id);else{let T=_[_.length-1],S=N.getNormalizedCodec(T.codecs),b=N.getNormalizedCodec(f.codecs);S==b&&(_.push(f),d.push(f.id))}u.set(g,_)}e.variants=n.filter(f=>{let g=f.video;return g&&!d.includes(g.id)?(p.debug("Dropping Variant (better codec available)",f),!1):!0})}static choosePreferredCodecs(e,t,i){let r=e;for(let s of t){let n=r.filter(a=>a.video&&a.video.codecs.startsWith(s));if(n.length){r=n;break}}for(let s of i){let n=r.filter(a=>a.audio&&a.audio.codecs.startsWith(s));if(n.length){r=n;break}}return r}static filterByRestrictions(e,t,i){e.variants=e.variants.filter(r=>Ce.meetsRestrictions(r,t,i))}static meetsRestrictions(e,t,i){let r=(s,n,a)=>s>=n&&s<=a;if(e&&e.video&&e.video.width&&e.video.height){let s=e.video.width,n=e.video.height;if(n>s&&([s,n]=[n,s]),!r(s,t.minWidth,Math.min(t.maxWidth,i.width))||!r(n,t.minHeight,Math.min(t.maxHeight,i.height))||!r(s*n,t.minPixels,t.maxPixels))return!1}return!(e&&e.video&&e.video.frameRate&&!r(e.video.frameRate,t.minFrameRate,t.maxFrameRate)||e&&e.audio&&e.audio.channelsCount&&!r(e.audio.channelsCount,t.minChannelsCount,t.maxChannelsCount)||!r(e.bandwidth,t.minBandwidth,t.maxBandwidth))}static applyRestrictions(e,t,i){let r=!1;for(let s of e){let n=s.allowedByApplication;s.allowedByApplication=Ce.meetsRestrictions(s,t,i),n!=s.allowedByApplication&&(r=!0)}return r}static async filterManifest(e,t,i=[],r={}){await Ce.filterManifestByMediaCapabilities(e,t,t.offlineSessionIds.length>0,i,r),Ce.filterTextStreams_(t),await Ce.filterImageStreams_(t)}static async filterManifestByMediaCapabilities(e,t,i,r,s){v.assert(navigator.mediaCapabilities,"MediaCapabilities should be valid."),j.getDevice().shouldOverrideDolbyVisionCodecs()&&Ce.overrideDolbyVisionCodecs(t.variants),await Ce.getDecodingInfosForVariants(t.variants,i,!1,r);let n=null;if(e){let a=e.getDrmInfo();a&&(n=a.keySystem)}t.variants=t.variants.filter(a=>{let o=Ce.checkVariantSupported_(a,n,s);return o||p.debug("Dropping variant - not compatible with platform",Ce.getVariantSummaryString_(a)),o})}static overrideDolbyVisionCodecs(e){let t=new Map().set("dvav","avc3").set("dva1","avc1").set("dvhe","hev1").set("dvh1","hvc1").set("dvc1","vvc1").set("dvi1","vvi1"),i=new Set;for(let r of e)r.video&&i.add(r.video);for(let r of i)for(let[s,n]of t)if(r.codecs.includes(s)){r.codecs=r.codecs.replace(s,n);break}}static checkVariantSupported_(e,t,i){if(!e.decodingInfos.some(g=>{if(!g.supported)return!1;if(t){let _=g.keySystemAccess;if(_&&(i[_.keySystem]||_.keySystem)!=t)return!1}return!0}))return!1;let s=j.getDevice(),n=s.getDeviceName()==="Xbox",a=s.getDeviceType()===ie.DeviceType.MOBILE&&s.getBrowserEngine()===ie.BrowserEngine.GECKO,o=e.video,c=o&&o.width||0,d=o&&o.height||0;if(n&&o&&(c>1920||d>1080)&&(o.codecs.includes("avc1.")||o.codecs.includes("avc3.")))return!1;let u=o&&o.dependencyStream;if(u&&!wr.isStreamSupported(u))return!1;let m=e.audio;return!(a&&m&&m.encrypted&&m.codecs.toLowerCase().includes("opus")||m&&m.dependencyStream)}static async getDecodingInfosForVariant_(e,t){let i=(n,a)=>{if(n){let o=Ne.shallowCloneObject(n);return o.supported=n.supported&&a.supported,o.powerEfficient=n.powerEfficient&&a.powerEfficient,o.smooth=n.smooth&&a.smooth,a.keySystemAccess&&!o.keySystemAccess&&(o.keySystemAccess=a.keySystemAccess),o}else return a},r=null,s=[];for(let n of t){let a=Ne.alphabeticalKeyOrderStringify(n),o=Ce.decodingConfigCache_;o.has(a)?(p.v2("Using cached results of mediaCapabilities.decodingInfo","for key",a),r=i(r,o.get(a))):s.push(Ce.checkEachDecodingConfigCombination_(n).then(c=>{let d=null;for(let u of c||[])d=i(d,u);d&&(o.set(a,d),r=i(r,d))}))}await Promise.all(s),r&&e.decodingInfos.push(r)}static checkEachDecodingConfigCombination_(e){let t=[""];e.video&&(t=N.getCodecs(e.video.contentType).split(","));let i=[""];e.audio&&(i=N.getCodecs(e.audio.contentType).split(","));let r=[];for(let s of t)for(let n of i){let a=Ne.cloneObject(e);if(e.video){let o=N.getBasicType(a.video.contentType);a.video.contentType=N.getFullType(o,s)}if(e.audio){let o=N.getBasicType(a.audio.contentType);a.audio.contentType=N.getFullType(o,n)}r.push(new Promise((o,c)=>{let u;j.getDevice().getDeviceType()==ie.DeviceType.MOBILE?u=it.promiseWithTimeout(5,navigator.mediaCapabilities.decodingInfo(a)):u=navigator.mediaCapabilities.decodingInfo(a),u.then(f=>{o(f)}).catch(c)}))}return Promise.all(r).catch(s=>(p.info("MediaCapabilities.decodingInfo() failed.",JSON.stringify(e),s),null))}static async getDecodingInfosForVariants(e,t,i,r){if(e.some(n=>n.decodingInfos.length)){p.debug("Already got the variants' decodingInfo.");return}for(let n of r){let a=!1;for(let o of e){let c=Ce.getDecodingConfigs_(o,t,i).filter(d=>{let u=d[0],m=u.keySystemConfiguration&&u.keySystemConfiguration.keySystem;return!m||m===n});for(let d of c)await Ce.getDecodingInfosForVariant_(o,d);o.decodingInfos.some(d=>d.supported)&&(a=!0)}if(a)return}for(let n of e){let a=Ce.getDecodingConfigs_(n,t,i).filter(o=>{let c=o[0],d=c.keySystemConfiguration&&c.keySystemConfiguration.keySystem;return!d||!r.includes(d)});for(let o of a)await Ce.getDecodingInfosForVariant_(n,o)}}static getDecodingConfigs_(e,t,i){let r=e.audio,s=e.video,n=R.ContentType,a=[],o=[];if(s)for(let S of s.fullMimeTypes){let b=N.getCodecs(S);if(b.includes(",")&&!r){let A=b.split(","),w=N.getBasicType(S);b=R.guessCodecs(n.VIDEO,A);let M=R.guessCodecs(n.AUDIO,A);M=N.getCorrectAudioCodecs(M,w);let x=N.getFullOrConvertedType(w,M,n.AUDIO);o.push({contentType:x,channels:2,bitrate:e.bandwidth||1,samplerate:1,spatialRendering:!1})}b=N.getCorrectVideoCodecs(b);let C={contentType:N.getFullOrConvertedType(N.getBasicType(S),b,n.VIDEO),width:s.width||64,height:s.height||64,bitrate:s.bandwidth||e.bandwidth||1,framerate:s.frameRate||30};if(s.hdr)switch(s.hdr){case"PQ":C.transferFunction="pq";break;case"HLG":C.transferFunction="hlg";break}s.colorGamut&&(C.colorGamut=s.colorGamut),a.push(C)}if(r)for(let S of r.fullMimeTypes){let b=N.getBasicType(S),E=N.getCorrectAudioCodecs(N.getCodecs(S),b),C=N.getFullOrConvertedType(b,E,n.AUDIO);o.push({contentType:C,channels:r.channelsCount||2,bitrate:r.bandwidth||e.bandwidth||1,samplerate:r.audioSamplingRate||1,spatialRendering:r.spatialAudio})}let c=[];a.length==0&&a.push(null),o.length==0&&o.push(null);for(let S of a)for(let b of o){let E={type:i?"file":"media-source"};S&&(E.video=S),b&&(E.audio=b),c.push(E)}let d=e.video?e.video.drmInfos:[],u=e.audio?e.audio.drmInfos:[],m=d.concat(u);if(!m.length)return[c];let f=[],g=new Map;for(let S of m)g.get(S.keySystem)||g.set(S.keySystem,[]),g.get(S.keySystem).push(S);let _=t?"required":"optional",T=t?["persistent-license"]:["temporary"];for(let S of g.keys()){let b=g.get(S),E=new Map;for(let C of b){let A=`${C.videoRobustness},${C.audioRobustness}`;E.get(A)||E.set(A,[]),E.get(A).push(C)}for(let C of E.values()){let A=[];for(let w of c){let M=Object.assign({},w),x={keySystem:S,initDataType:"cenc",persistentState:_,distinctiveIdentifier:"optional",sessionTypes:T};for(let k of C){if(k.initData&&k.initData.length){let L=new Set;for(let V of k.initData)L.add(V.initDataType);L.size>1&&p.v2("DrmInfo contains more than one initDataType,","and we use the initDataType of the first initData.",k),x.initDataType=k.initData[0].initDataType}k.distinctiveIdentifierRequired&&(x.distinctiveIdentifier="required"),k.persistentStateRequired&&(x.persistentState="required"),k.sessionType&&(x.sessionTypes=[k.sessionType]),r&&(x.audio?(k.encryptionScheme&&(x.audio.encryptionScheme=x.audio.encryptionScheme||k.encryptionScheme),x.audio.robustness=x.audio.robustness||k.audioRobustness):(x.audio={robustness:k.audioRobustness},k.encryptionScheme&&(x.audio.encryptionScheme=k.encryptionScheme)),x.audio.robustness==""&&delete x.audio.robustness),s&&(x.video?(k.encryptionScheme&&(x.video.encryptionScheme=x.video.encryptionScheme||k.encryptionScheme),x.video.robustness=x.video.robustness||k.videoRobustness):(x.video={robustness:k.videoRobustness},k.encryptionScheme&&(x.video.encryptionScheme=k.encryptionScheme)),x.video.robustness==""&&delete x.video.robustness)}M.keySystemConfiguration=x,A.push(M)}f.push(A)}}return f}static filterManifestByCurrentVariant(e,t){t.variants=t.variants.filter(i=>{let r=i.audio,s=i.video;return r&&e&&e.audio&&!Ce.areStreamsCompatible_(r,e.audio)?(p.debug("Dropping variant - not compatible with active audio","active audio",Ce.getStreamSummaryString_(e.audio),"variant.audio",Ce.getStreamSummaryString_(r)),!1):s&&e&&e.video&&!Ce.areStreamsCompatible_(s,e.video)?(p.debug("Dropping variant - not compatible with active video","active video",Ce.getStreamSummaryString_(e.video),"variant.video",Ce.getStreamSummaryString_(s)),!1):!0})}static filterTextStreams_(e){e.textStreams=e.textStreams.filter(t=>{let i=N.getFullType(t.mimeType,t.codecs),r=Ue.isTypeSupported(i);return r||p.debug("Dropping text stream. Is not supported by the platform.",t),r})}static async filterImageStreams_(e){let t=[];for(let i of e.imageStreams){let r=i.mimeType;if(r=="application/mp4"&&i.codecs=="mjpg"&&(r="image/jpg"),!Ce.supportedImageMimeTypes_.has(r)){let n=Ce.minImage_.get(r);if(n){let a=await Ce.isImageSupported_(n);Ce.supportedImageMimeTypes_.set(r,a)}else Ce.supportedImageMimeTypes_.set(r,!1)}Ce.supportedImageMimeTypes_.get(r)?t.push(i):p.debug("Dropping image stream. Is not supported by the platform.",i)}e.imageStreams=t}static isImageSupported_(e){return new Promise(t=>{let i=new Image;i.src=e,"decode"in i?i.decode().then(()=>{t(!0)}).catch(()=>{t(!1)}):i.onload=i.onerror=()=>{t(i.height===2)}})}static areStreamsCompatible_(e,t){return!(e.mimeType!=t.mimeType||e.codecs.split(".")[0]!=t.codecs.split(".")[0])}static variantToTrack(e){let t=R.ContentType,i=e.audio,r=e.video,s=i?i.mimeType:null,n=r?r.mimeType:null,a=i?i.codecs:null,o=r?r.codecs:null,c=i?i.groupId:null,d=[];r&&d.push(r.mimeType),i&&d.push(i.mimeType);let u=d[0]||null,m=[];i&&m.push(i.kind),r&&m.push(r.kind);let f=m[0]||null,g=new Set;if(i)for(let S of i.roles)g.add(S);if(r)for(let S of r.roles)g.add(S);let _={id:e.id,active:!1,type:"variant",bandwidth:e.bandwidth,language:e.language,label:null,videoLabel:null,kind:f,width:null,height:null,frameRate:null,pixelAspectRatio:null,hdr:null,colorGamut:null,videoLayout:null,mimeType:u,audioMimeType:s,videoMimeType:n,codecs:"",audioCodec:a,videoCodec:o,primary:e.primary,roles:Array.from(g),audioRoles:null,videoRoles:null,audioLanguage:null,videoLanguage:null,forced:!1,videoId:null,audioId:null,audioGroupId:c,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,tilesLayout:null,audioBandwidth:null,videoBandwidth:null,originalVideoId:null,originalAudioId:null,originalTextId:null,originalImageId:null,accessibilityPurpose:null,originalLanguage:null};if(r){_.videoId=r.id,_.originalVideoId=r.originalId,_.width=r.width||null,_.height=r.height||null,_.frameRate=r.frameRate||null,_.pixelAspectRatio=r.pixelAspectRatio||null,_.videoBandwidth=r.bandwidth||null,_.hdr=r.hdr||null,_.colorGamut=r.colorGamut||null,_.videoLayout=r.videoLayout||null,_.videoRoles=r.roles,_.videoLanguage=r.language||null,_.videoLabel=r.label;let S=r.dependencyStream;if(S&&(_.width=S.width||_.width,_.height=S.height||_.height,_.videoCodec=S.codecs||_.videoCodec,_.pixelAspectRatio=S.pixelAspectRatio||_.pixelAspectRatio,_.videoBandwidth&&S.bandwidth&&(_.videoBandwidth+=S.bandwidth)),o.includes(",")){_.channelsCount=r.channelsCount,_.audioSamplingRate=r.audioSamplingRate,_.spatialAudio=r.spatialAudio,_.originalLanguage=r.originalLanguage,_.audioMimeType=n;let b=o.split(",");try{_.videoCodec=R.guessCodecs(t.VIDEO,b),_.audioCodec=R.guessCodecs(t.AUDIO,b)}catch(E){}}}if(i){_.audioId=i.id,_.originalAudioId=i.originalId,_.channelsCount=i.channelsCount,_.audioSamplingRate=i.audioSamplingRate,_.audioBandwidth=i.bandwidth||null,_.spatialAudio=i.spatialAudio,_.label=i.label,_.audioRoles=i.roles,_.audioLanguage=i.language||null,_.accessibilityPurpose=i.accessibilityPurpose,_.originalLanguage=i.originalLanguage;let S=i.dependencyStream;S&&(_.audioCodec=S.codecs||_.audioCodec,_.audioBandwidth&&S.bandwidth&&(_.audioBandwidth+=S.bandwidth))}r&&!_.videoBandwidth&&(i?_.audioBandwidth&&(_.videoBandwidth=_.bandwidth-_.audioBandwidth):_.videoBandwidth=_.bandwidth),i&&!_.audioBandwidth&&(r?_.videoBandwidth&&(_.audioBandwidth=_.bandwidth-_.videoBandwidth):_.audioBandwidth=_.bandwidth);let T=[];return _.videoCodec&&T.push(_.videoCodec),_.audioCodec&&T.push(_.audioCodec),_.codecs=T.join(", "),_}static textStreamToTrack(e){let t=R.ContentType;return{id:e.id,active:!1,type:t.TEXT,bandwidth:e.bandwidth||0,language:e.language,label:e.label,kind:e.kind||null,mimeType:e.mimeType,codecs:e.codecs||null,primary:e.primary,roles:e.roles,accessibilityPurpose:e.accessibilityPurpose,forced:e.forced,originalTextId:e.originalId,originalLanguage:e.originalLanguage}}static imageStreamToTrack(e){let t=R.ContentType,i=e.width||null,r=e.height||null,s=null;e.segmentIndex&&(s=e.segmentIndex.earliestReference());let n=e.tilesLayout;return s&&(n=s.getTilesLayout()||n),n&&i!=null&&(i/=Number(n.split("x")[0])),n&&r!=null&&(r/=Number(n.split("x")[1])),{id:e.id,type:t.IMAGE,bandwidth:e.bandwidth||0,width:i,height:r,mimeType:e.mimeType,codecs:e.codecs||null,tilesLayout:n||null,originalImageId:e.originalId}}static chapterStreamToTrack(e){let t=R.ContentType;return{id:e.id,type:t.CHAPTER,bandwidth:e.bandwidth||0,language:e.language}}static html5TrackId(e){return e.__shaka_id==null&&(e.__shaka_id=Ce.nextTrackId_++),e.__shaka_id}static html5TextTrackToTrack(e,t=!1){let i=R.ContentType,r={id:Ce.html5TrackId(e),active:t&&e.mode!="disabled",type:i.TEXT,bandwidth:0,language:ve.normalize(e.language||"und"),label:e.label,kind:e.kind,mimeType:null,codecs:null,primary:!1,roles:[],accessibilityPurpose:null,forced:e.kind=="forced",originalTextId:e.id,originalLanguage:e.language};return e.kind=="captions"&&(r.mimeType="unknown"),e.kind=="subtitles"&&(r.mimeType="text/vtt"),e.kind&&(r.roles=[e.kind]),r}static html5TextTrackToChapterTrack(e){let t=R.ContentType;return{id:Ce.html5TrackId(e),type:t.CHAPTER,bandwidth:0,language:ve.normalize(e.language||"und")}}static html5AudioTrackToTrack(e){let t=e.language,i={active:e.enabled,language:ve.normalize(t||"und"),label:e.label,mimeType:null,codecs:null,primary:e.kind=="main",roles:[],accessibilityPurpose:null,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,originalLanguage:t};return e.kind&&(e.kind=="description"&&(i.accessibilityPurpose=me.AccessibilityPurpose.VISUALLY_IMPAIRED),i.roles.push(e.kind)),e.configuration&&(e.configuration.codec&&(i.codecs=e.configuration.codec),e.configuration.sampleRate&&(i.audioSamplingRate=e.configuration.sampleRate),e.configuration.numberOfChannels&&(i.channelsCount=e.configuration.numberOfChannels)),i}static html5TrackToShakaTrack(e,t){v.assert(e||t,"There must be at least audioTrack or videoTrack.");let i=e?e.language:null,r={id:Ce.html5TrackId(e||t),active:e?e.enabled:t.selected,type:"variant",bandwidth:0,language:ve.normalize(i||"und"),label:e?e.label:null,videoLabel:null,kind:e?e.kind:null,width:null,height:null,frameRate:null,pixelAspectRatio:null,hdr:null,colorGamut:null,videoLayout:null,mimeType:null,audioMimeType:null,videoMimeType:null,codecs:null,audioCodec:null,videoCodec:null,primary:e?e.kind=="main":!1,roles:[],forced:!1,audioRoles:null,videoRoles:null,audioLanguage:e?ve.normalize(e.language||"und"):null,videoLanguage:t?ve.normalize(t.language||"und"):null,videoId:null,audioId:null,audioGroupId:null,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,tilesLayout:null,audioBandwidth:null,videoBandwidth:null,originalVideoId:t?t.id:null,originalAudioId:e?e.id:null,originalTextId:null,originalImageId:null,accessibilityPurpose:null,originalLanguage:i};if(e&&e.kind&&(r.roles=[e.kind],r.audioRoles=[e.kind]),e&&e.configuration&&(e.configuration.codec&&(r.audioCodec=e.configuration.codec,r.codecs=r.audioCodec),e.configuration.bitrate&&(r.audioBandwidth=e.configuration.bitrate,r.bandwidth+=r.audioBandwidth),e.configuration.sampleRate&&(r.audioSamplingRate=e.configuration.sampleRate),e.configuration.numberOfChannels&&(r.channelsCount=e.configuration.numberOfChannels)),t&&t.configuration&&(t.configuration.codec&&(r.videoCodec=t.configuration.codec,r.codecs?r.codecs+=","+r.videoCodec:r.codecs=r.videoCodec),t.configuration.bitrate&&(r.videoBandwidth=t.configuration.bitrate,r.bandwidth+=r.videoBandwidth),t.configuration.framerate&&(r.frameRate=t.configuration.framerate),t.configuration.width&&(r.width=t.configuration.width),t.configuration.height&&(r.height=t.configuration.height),t.configuration.colorSpace&&t.configuration.colorSpace.transfer))switch(t.configuration.colorSpace.transfer){case"pq":r.hdr="PQ";break;case"hlg":r.hdr="HLG";break;case"bt709":r.hdr="SDR";break}return r}static isPlayable(e){return e.allowedByApplication&&e.allowedByKeySystem&&e.disabledUntilTime==0}static getPlayableVariants(e){return e.filter(t=>Ce.isPlayable(t))}static filterStreamsByLanguageAndRole(e,t,i,r){if(!t)return[];let s=e,n=e.filter(c=>c.primary);n.length&&(s=n);let a=s.length?s[0].language:"";if(s=s.filter(c=>c.language==a),t){let c=ve.findClosestLocale(ve.normalize(t),e.map(d=>d.language));if(c)s=e.filter(d=>ve.normalize(d.language)==c);else return[]}if(s=s.filter(c=>c.forced==r),i){let c=Ce.filterStreamsByRole_(s,i);if(c.length)return c;p.warning("No exact match for the text role could be found.")}else{let c=s.filter(d=>d.roles.length==0);if(c.length)return c}let o=s.map(c=>c.roles).reduce((c,d)=>c.concat(d),[]);return o.length?Ce.filterStreamsByRole_(s,o[0]):s}static filterStreamsByRole_(e,t){return e.filter(i=>i.roles.includes(t))}static isAudio(e){let t=R.ContentType;return e.type==t.AUDIO}static isVideo(e){let t=R.ContentType;return e.type==t.VIDEO}static getVariantStreams(e){let t=[];return e.audio&&t.push(e.audio),e.video&&t.push(e.video),t}static isFastSwitching(e){return!!(e.audio&&e.audio.fastSwitching||e.video&&e.video.fastSwitching)}static setBetterIFrameStream(e,t){if(!t.length)return;let i=t.filter(r=>N.getNormalizedCodec(e.codecs)==N.getNormalizedCodec(r.codecs)).sort((r,s)=>!r.bandwidth||!s.bandwidth||r.bandwidth==s.bandwidth?(r.width||0)-(s.width||0):r.bandwidth-s.bandwidth);if(e.trickModeVideo=i[0],i.length>1){let r=i.find(s=>e.width==s.width&&e.height==s.height);r&&(e.trickModeVideo=r)}}static getVariantSummaryString_(e){let t=[];return e.audio&&t.push(Ce.getStreamSummaryString_(e.audio)),e.video&&t.push(Ce.getStreamSummaryString_(e.video)),t.join(", ")}static getStreamSummaryString_(e){return Ce.isAudio(e)?"type=audio codecs="+e.codecs+" bandwidth="+e.bandwidth+" channelsCount="+e.channelsCount+" audioSamplingRate="+e.audioSamplingRate:Ce.isVideo(e)?"type=video codecs="+e.codecs+" bandwidth="+e.bandwidth+" frameRate="+e.frameRate+" width="+e.width+" height="+e.height:"unexpected stream type"}static clearDecodingConfigCache(){Ce.decodingConfigCache_.clear()}static createStream(e){let t={id:0,originalId:null,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:"",codecs:"",supplementalCodecs:"",encrypted:!1,drmInfos:[],keyIds:new Set,language:"",originalLanguage:null,label:null,type:"",primary:!1,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,roles:[],accessibilityPurpose:null,forced:!1,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,closedCaptions:null,external:!1,fastSwitching:!1,fullMimeTypes:new Set,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1};return Object.assign(t,e),t.mimeType&&t.fullMimeTypes.add(N.getFullType(t.mimeType,t.codecs)),t}static createEmptyVariant(e){let t=R.ContentType,i={id:0,language:"und",disabledUntilTime:0,primary:!1,audio:null,video:null,bandwidth:100,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]};for(let r of e){let s=Ce.createStream({mimeType:r?N.getBasicType(r):"",codecs:r?N.getCodecs(r):"",encrypted:!0,language:"und",type:t.VIDEO});r.startsWith("audio/")?(s.type=t.AUDIO,i.audio=s):i.video=s}return i}};l(Ce,"decodingConfigCache_",new Map),l(Ce,"nextTrackId_",0),l(Ce,"DecodingAttributes",{SMOOTH:"smooth",POWER:"powerEfficient"});var se=Ce;se.supportedImageMimeTypes_=new Map().set("image/svg+xml",!0).set("image/png",!0).set("image/jpeg",!0).set("image/jpg",!0);se.minWebPImage_="data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA";se.minAvifImage_="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=";se.minImage_=new Map().set("image/webp",se.minWebPImage_).set("image/avif",se.minAvifImage_);/*! @license
205
+ */var Ce=class Ce{static chooseCodecsAndFilterManifest(e,t,i,r,s){if(s.length){let f=e.textStreams;for(let g of s){let _=f.filter(T=>!!(T.codecs.startsWith(g)||T.mimeType.startsWith(g)));if(_.length){f=_;break}}e.textStreams=f}let n=e.variants;if((t.length||i.length)&&(n=Ce.choosePreferredCodecs(n,t,i)),r.length){let f=new lr;for(let _ of n)f.push(String(_.video.width||0),_);let g=[];f.forEach((_,T)=>{let S=0,b=[];for(let E of T){let C=r.filter(A=>E.decodingInfos[0][A]).length;C>S?(S=C,b=[E]):C==S&&b.push(E)}g.push(...b)}),n=g}let a=new Set;for(let f of n)f.video&&a.add(f.video);if(!a.size){e.variants=n;return}let o={vp8:1,avc:1,"dovi-avc":.95,vp9:.9,vp09:.9,hevc:.85,"dovi-hevc":.8,"dovi-p5":.75,av01:.7,"dovi-av1":.65,vvc:.6},c=Array.from(a).sort((f,g)=>{if(f.bandwidth&&g.bandwidth&&f.bandwidth!=g.bandwidth)return f.bandwidth-g.bandwidth;if(f.width!=g.width)return f.width-g.width;if(f.codecs&&g.codecs){let _=O.getNormalizedCodec(f.codecs),T=O.getNormalizedCodec(g.codecs),S=o[_]||1,b=o[T]||1;return S-b}return 0}),d=[],u=new Map,m=f=>{let g=[String(f.width||""),String(f.height||""),String(Math.round(f.frameRate||0)),f.hdr||"",f.fastSwitching];return f.dependencyStream&&g.push(f.dependencyStream.baseOriginalId||""),f.roles&&g.push(f.roles.sort().join("_")),g.join(";")};for(let f of c){let g=m(f),_=u.get(g)||[];if(!_.length)_.push(f),d.push(f.id);else{let T=_[_.length-1],S=O.getNormalizedCodec(T.codecs),b=O.getNormalizedCodec(f.codecs);S==b&&(_.push(f),d.push(f.id))}u.set(g,_)}e.variants=n.filter(f=>{let g=f.video;return g&&!d.includes(g.id)?(p.debug("Dropping Variant (better codec available)",f),!1):!0})}static choosePreferredCodecs(e,t,i){let r=e;for(let s of t){let n=r.filter(a=>a.video&&a.video.codecs.startsWith(s));if(n.length){r=n;break}}for(let s of i){let n=r.filter(a=>a.audio&&a.audio.codecs.startsWith(s));if(n.length){r=n;break}}return r}static filterByRestrictions(e,t,i){e.variants=e.variants.filter(r=>Ce.meetsRestrictions(r,t,i))}static meetsRestrictions(e,t,i){let r=(s,n,a)=>s>=n&&s<=a;if(e&&e.video&&e.video.width&&e.video.height){let s=e.video.width,n=e.video.height;if(n>s&&([s,n]=[n,s]),!r(s,t.minWidth,Math.min(t.maxWidth,i.width))||!r(n,t.minHeight,Math.min(t.maxHeight,i.height))||!r(s*n,t.minPixels,t.maxPixels))return!1}return!(e&&e.video&&e.video.frameRate&&!r(e.video.frameRate,t.minFrameRate,t.maxFrameRate)||e&&e.audio&&e.audio.channelsCount&&!r(e.audio.channelsCount,t.minChannelsCount,t.maxChannelsCount)||!r(e.bandwidth,t.minBandwidth,t.maxBandwidth))}static applyRestrictions(e,t,i){let r=!1;for(let s of e){let n=s.allowedByApplication;s.allowedByApplication=Ce.meetsRestrictions(s,t,i),n!=s.allowedByApplication&&(r=!0)}return r}static async filterManifest(e,t,i=[],r={}){await Ce.filterManifestByMediaCapabilities(e,t,t.offlineSessionIds.length>0,i,r),Ce.filterTextStreams_(t),await Ce.filterImageStreams_(t)}static async filterManifestByMediaCapabilities(e,t,i,r,s){v.assert(navigator.mediaCapabilities,"MediaCapabilities should be valid."),j.getDevice().shouldOverrideDolbyVisionCodecs()&&Ce.overrideDolbyVisionCodecs(t.variants),await Ce.getDecodingInfosForVariants(t.variants,i,!1,r);let n=null;if(e){let a=e.getDrmInfo();a&&(n=a.keySystem)}t.variants=t.variants.filter(a=>{let o=Ce.checkVariantSupported_(a,n,s);return o||p.debug("Dropping variant - not compatible with platform",Ce.getVariantSummaryString_(a)),o})}static overrideDolbyVisionCodecs(e){let t=new Map().set("dvav","avc3").set("dva1","avc1").set("dvhe","hev1").set("dvh1","hvc1").set("dvc1","vvc1").set("dvi1","vvi1"),i=new Set;for(let r of e)r.video&&i.add(r.video);for(let r of i)for(let[s,n]of t)if(r.codecs.includes(s)){r.codecs=r.codecs.replace(s,n);break}}static checkVariantSupported_(e,t,i){if(!e.decodingInfos.some(g=>{if(!g.supported)return!1;if(t){let _=g.keySystemAccess;if(_&&(i[_.keySystem]||_.keySystem)!=t)return!1}return!0}))return!1;let s=j.getDevice(),n=s.getDeviceName()==="Xbox",a=s.getDeviceType()===ie.DeviceType.MOBILE&&s.getBrowserEngine()===ie.BrowserEngine.GECKO,o=e.video,c=o&&o.width||0,d=o&&o.height||0;if(n&&o&&(c>1920||d>1080)&&(o.codecs.includes("avc1.")||o.codecs.includes("avc3.")))return!1;let u=o&&o.dependencyStream;if(u&&!wr.isStreamSupported(u))return!1;let m=e.audio;return!(a&&m&&m.encrypted&&m.codecs.toLowerCase().includes("opus")||m&&m.dependencyStream)}static async getDecodingInfosForVariant_(e,t){let i=(n,a)=>{if(n){let o=Oe.shallowCloneObject(n);return o.supported=n.supported&&a.supported,o.powerEfficient=n.powerEfficient&&a.powerEfficient,o.smooth=n.smooth&&a.smooth,a.keySystemAccess&&!o.keySystemAccess&&(o.keySystemAccess=a.keySystemAccess),o}else return a},r=null,s=[];for(let n of t){let a=Oe.alphabeticalKeyOrderStringify(n),o=Ce.decodingConfigCache_;o.has(a)?(p.v2("Using cached results of mediaCapabilities.decodingInfo","for key",a),r=i(r,o.get(a))):s.push(Ce.checkEachDecodingConfigCombination_(n).then(c=>{let d=null;for(let u of c||[])d=i(d,u);d&&(o.set(a,d),r=i(r,d))}))}await Promise.all(s),r&&e.decodingInfos.push(r)}static checkEachDecodingConfigCombination_(e){let t=[""];e.video&&(t=O.getCodecs(e.video.contentType).split(","));let i=[""];e.audio&&(i=O.getCodecs(e.audio.contentType).split(","));let r=[];for(let s of t)for(let n of i){let a=Oe.cloneObject(e);if(e.video){let o=O.getBasicType(a.video.contentType);a.video.contentType=O.getFullType(o,s)}if(e.audio){let o=O.getBasicType(a.audio.contentType);a.audio.contentType=O.getFullType(o,n)}r.push(new Promise((o,c)=>{let u;j.getDevice().getDeviceType()==ie.DeviceType.MOBILE?u=it.promiseWithTimeout(5,navigator.mediaCapabilities.decodingInfo(a)):u=navigator.mediaCapabilities.decodingInfo(a),u.then(f=>{o(f)}).catch(c)}))}return Promise.all(r).catch(s=>(p.info("MediaCapabilities.decodingInfo() failed.",JSON.stringify(e),s),null))}static async getDecodingInfosForVariants(e,t,i,r){if(e.some(n=>n.decodingInfos.length)){p.debug("Already got the variants' decodingInfo.");return}for(let n of r){let a=!1;for(let o of e){let c=Ce.getDecodingConfigs_(o,t,i).filter(d=>{let u=d[0],m=u.keySystemConfiguration&&u.keySystemConfiguration.keySystem;return!m||m===n});for(let d of c)await Ce.getDecodingInfosForVariant_(o,d);o.decodingInfos.some(d=>d.supported)&&(a=!0)}if(a)return}for(let n of e){let a=Ce.getDecodingConfigs_(n,t,i).filter(o=>{let c=o[0],d=c.keySystemConfiguration&&c.keySystemConfiguration.keySystem;return!d||!r.includes(d)});for(let o of a)await Ce.getDecodingInfosForVariant_(n,o)}}static getDecodingConfigs_(e,t,i){let r=e.audio,s=e.video,n=R.ContentType,a=[],o=[];if(s)for(let S of s.fullMimeTypes){let b=O.getCodecs(S);if(b.includes(",")&&!r){let A=b.split(","),w=O.getBasicType(S);b=R.guessCodecs(n.VIDEO,A);let M=R.guessCodecs(n.AUDIO,A);M=O.getCorrectAudioCodecs(M,w);let x=O.getFullOrConvertedType(w,M,n.AUDIO);o.push({contentType:x,channels:2,bitrate:e.bandwidth||1,samplerate:1,spatialRendering:!1})}b=O.getCorrectVideoCodecs(b);let C={contentType:O.getFullOrConvertedType(O.getBasicType(S),b,n.VIDEO),width:s.width||64,height:s.height||64,bitrate:s.bandwidth||e.bandwidth||1,framerate:s.frameRate||30};if(s.hdr)switch(s.hdr){case"PQ":C.transferFunction="pq";break;case"HLG":C.transferFunction="hlg";break}s.colorGamut&&(C.colorGamut=s.colorGamut),a.push(C)}if(r)for(let S of r.fullMimeTypes){let b=O.getBasicType(S),E=O.getCorrectAudioCodecs(O.getCodecs(S),b),C=O.getFullOrConvertedType(b,E,n.AUDIO);o.push({contentType:C,channels:r.channelsCount||2,bitrate:r.bandwidth||e.bandwidth||1,samplerate:r.audioSamplingRate||1,spatialRendering:r.spatialAudio})}let c=[];a.length==0&&a.push(null),o.length==0&&o.push(null);for(let S of a)for(let b of o){let E={type:i?"file":"media-source"};S&&(E.video=S),b&&(E.audio=b),c.push(E)}let d=e.video?e.video.drmInfos:[],u=e.audio?e.audio.drmInfos:[],m=d.concat(u);if(!m.length)return[c];let f=[],g=new Map;for(let S of m)g.get(S.keySystem)||g.set(S.keySystem,[]),g.get(S.keySystem).push(S);let _=t?"required":"optional",T=t?["persistent-license"]:["temporary"];for(let S of g.keys()){let b=g.get(S),E=new Map;for(let C of b){let A=`${C.videoRobustness},${C.audioRobustness}`;E.get(A)||E.set(A,[]),E.get(A).push(C)}for(let C of E.values()){let A=[];for(let w of c){let M=Object.assign({},w),x={keySystem:S,initDataType:"cenc",persistentState:_,distinctiveIdentifier:"optional",sessionTypes:T};for(let k of C){if(k.initData&&k.initData.length){let L=new Set;for(let V of k.initData)L.add(V.initDataType);L.size>1&&p.v2("DrmInfo contains more than one initDataType,","and we use the initDataType of the first initData.",k),x.initDataType=k.initData[0].initDataType}k.distinctiveIdentifierRequired&&(x.distinctiveIdentifier="required"),k.persistentStateRequired&&(x.persistentState="required"),k.sessionType&&(x.sessionTypes=[k.sessionType]),r&&(x.audio?(k.encryptionScheme&&(x.audio.encryptionScheme=x.audio.encryptionScheme||k.encryptionScheme),x.audio.robustness=x.audio.robustness||k.audioRobustness):(x.audio={robustness:k.audioRobustness},k.encryptionScheme&&(x.audio.encryptionScheme=k.encryptionScheme)),x.audio.robustness==""&&delete x.audio.robustness),s&&(x.video?(k.encryptionScheme&&(x.video.encryptionScheme=x.video.encryptionScheme||k.encryptionScheme),x.video.robustness=x.video.robustness||k.videoRobustness):(x.video={robustness:k.videoRobustness},k.encryptionScheme&&(x.video.encryptionScheme=k.encryptionScheme)),x.video.robustness==""&&delete x.video.robustness)}M.keySystemConfiguration=x,A.push(M)}f.push(A)}}return f}static filterManifestByCurrentVariant(e,t){t.variants=t.variants.filter(i=>{let r=i.audio,s=i.video;return r&&e&&e.audio&&!Ce.areStreamsCompatible_(r,e.audio)?(p.debug("Dropping variant - not compatible with active audio","active audio",Ce.getStreamSummaryString_(e.audio),"variant.audio",Ce.getStreamSummaryString_(r)),!1):s&&e&&e.video&&!Ce.areStreamsCompatible_(s,e.video)?(p.debug("Dropping variant - not compatible with active video","active video",Ce.getStreamSummaryString_(e.video),"variant.video",Ce.getStreamSummaryString_(s)),!1):!0})}static filterTextStreams_(e){e.textStreams=e.textStreams.filter(t=>{let i=O.getFullType(t.mimeType,t.codecs),r=Ue.isTypeSupported(i);return r||p.debug("Dropping text stream. Is not supported by the platform.",t),r})}static async filterImageStreams_(e){let t=[];for(let i of e.imageStreams){let r=i.mimeType;if(r=="application/mp4"&&i.codecs=="mjpg"&&(r="image/jpg"),!Ce.supportedImageMimeTypes_.has(r)){let n=Ce.minImage_.get(r);if(n){let a=await Ce.isImageSupported_(n);Ce.supportedImageMimeTypes_.set(r,a)}else Ce.supportedImageMimeTypes_.set(r,!1)}Ce.supportedImageMimeTypes_.get(r)?t.push(i):p.debug("Dropping image stream. Is not supported by the platform.",i)}e.imageStreams=t}static isImageSupported_(e){return new Promise(t=>{let i=new Image;i.src=e,"decode"in i?i.decode().then(()=>{t(!0)}).catch(()=>{t(!1)}):i.onload=i.onerror=()=>{t(i.height===2)}})}static areStreamsCompatible_(e,t){return!(e.mimeType!=t.mimeType||e.codecs.split(".")[0]!=t.codecs.split(".")[0])}static variantToTrack(e){let t=R.ContentType,i=e.audio,r=e.video,s=i?i.mimeType:null,n=r?r.mimeType:null,a=i?i.codecs:null,o=r?r.codecs:null,c=i?i.groupId:null,d=[];r&&d.push(r.mimeType),i&&d.push(i.mimeType);let u=d[0]||null,m=[];i&&m.push(i.kind),r&&m.push(r.kind);let f=m[0]||null,g=new Set;if(i)for(let S of i.roles)g.add(S);if(r)for(let S of r.roles)g.add(S);let _={id:e.id,active:!1,type:"variant",bandwidth:e.bandwidth,language:e.language,label:null,videoLabel:null,kind:f,width:null,height:null,frameRate:null,pixelAspectRatio:null,hdr:null,colorGamut:null,videoLayout:null,mimeType:u,audioMimeType:s,videoMimeType:n,codecs:"",audioCodec:a,videoCodec:o,primary:e.primary,roles:Array.from(g),audioRoles:null,videoRoles:null,audioLanguage:null,videoLanguage:null,forced:!1,videoId:null,audioId:null,audioGroupId:c,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,tilesLayout:null,audioBandwidth:null,videoBandwidth:null,originalVideoId:null,originalAudioId:null,originalTextId:null,originalImageId:null,accessibilityPurpose:null,originalLanguage:null};if(r){_.videoId=r.id,_.originalVideoId=r.originalId,_.width=r.width||null,_.height=r.height||null,_.frameRate=r.frameRate||null,_.pixelAspectRatio=r.pixelAspectRatio||null,_.videoBandwidth=r.bandwidth||null,_.hdr=r.hdr||null,_.colorGamut=r.colorGamut||null,_.videoLayout=r.videoLayout||null,_.videoRoles=r.roles,_.videoLanguage=r.language||null,_.videoLabel=r.label;let S=r.dependencyStream;if(S&&(_.width=S.width||_.width,_.height=S.height||_.height,_.videoCodec=S.codecs||_.videoCodec,_.pixelAspectRatio=S.pixelAspectRatio||_.pixelAspectRatio,_.videoBandwidth&&S.bandwidth&&(_.videoBandwidth+=S.bandwidth)),o.includes(",")){_.channelsCount=r.channelsCount,_.audioSamplingRate=r.audioSamplingRate,_.spatialAudio=r.spatialAudio,_.originalLanguage=r.originalLanguage,_.audioMimeType=n;let b=o.split(",");try{_.videoCodec=R.guessCodecs(t.VIDEO,b),_.audioCodec=R.guessCodecs(t.AUDIO,b)}catch(E){}}}if(i){_.audioId=i.id,_.originalAudioId=i.originalId,_.channelsCount=i.channelsCount,_.audioSamplingRate=i.audioSamplingRate,_.audioBandwidth=i.bandwidth||null,_.spatialAudio=i.spatialAudio,_.label=i.label,_.audioRoles=i.roles,_.audioLanguage=i.language||null,_.accessibilityPurpose=i.accessibilityPurpose,_.originalLanguage=i.originalLanguage;let S=i.dependencyStream;S&&(_.audioCodec=S.codecs||_.audioCodec,_.audioBandwidth&&S.bandwidth&&(_.audioBandwidth+=S.bandwidth))}r&&!_.videoBandwidth&&(i?_.audioBandwidth&&(_.videoBandwidth=_.bandwidth-_.audioBandwidth):_.videoBandwidth=_.bandwidth),i&&!_.audioBandwidth&&(r?_.videoBandwidth&&(_.audioBandwidth=_.bandwidth-_.videoBandwidth):_.audioBandwidth=_.bandwidth);let T=[];return _.videoCodec&&T.push(_.videoCodec),_.audioCodec&&T.push(_.audioCodec),_.codecs=T.join(", "),_}static textStreamToTrack(e){let t=R.ContentType;return{id:e.id,active:!1,type:t.TEXT,bandwidth:e.bandwidth||0,language:e.language,label:e.label,kind:e.kind||null,mimeType:e.mimeType,codecs:e.codecs||null,primary:e.primary,roles:e.roles,accessibilityPurpose:e.accessibilityPurpose,forced:e.forced,originalTextId:e.originalId,originalLanguage:e.originalLanguage}}static imageStreamToTrack(e){let t=R.ContentType,i=e.width||null,r=e.height||null,s=null;e.segmentIndex&&(s=e.segmentIndex.earliestReference());let n=e.tilesLayout;return s&&(n=s.getTilesLayout()||n),n&&i!=null&&(i/=Number(n.split("x")[0])),n&&r!=null&&(r/=Number(n.split("x")[1])),{id:e.id,type:t.IMAGE,bandwidth:e.bandwidth||0,width:i,height:r,mimeType:e.mimeType,codecs:e.codecs||null,tilesLayout:n||null,originalImageId:e.originalId}}static chapterStreamToTrack(e){let t=R.ContentType;return{id:e.id,type:t.CHAPTER,bandwidth:e.bandwidth||0,language:e.language}}static html5TrackId(e){return e.__shaka_id==null&&(e.__shaka_id=Ce.nextTrackId_++),e.__shaka_id}static html5TextTrackToTrack(e,t=!1){let i=R.ContentType,r={id:Ce.html5TrackId(e),active:t&&e.mode!="disabled",type:i.TEXT,bandwidth:0,language:ve.normalize(e.language||"und"),label:e.label,kind:e.kind,mimeType:null,codecs:null,primary:!1,roles:[],accessibilityPurpose:null,forced:e.kind=="forced",originalTextId:e.id,originalLanguage:e.language};return e.kind=="captions"&&(r.mimeType="unknown"),e.kind=="subtitles"&&(r.mimeType="text/vtt"),e.kind&&(r.roles=[e.kind]),r}static html5TextTrackToChapterTrack(e){let t=R.ContentType;return{id:Ce.html5TrackId(e),type:t.CHAPTER,bandwidth:0,language:ve.normalize(e.language||"und")}}static html5AudioTrackToTrack(e){let t=e.language,i={active:e.enabled,language:ve.normalize(t||"und"),label:e.label,mimeType:null,codecs:null,primary:e.kind=="main",roles:[],accessibilityPurpose:null,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,originalLanguage:t};return e.kind&&(e.kind=="description"&&(i.accessibilityPurpose=me.AccessibilityPurpose.VISUALLY_IMPAIRED),i.roles.push(e.kind)),e.configuration&&(e.configuration.codec&&(i.codecs=e.configuration.codec),e.configuration.sampleRate&&(i.audioSamplingRate=e.configuration.sampleRate),e.configuration.numberOfChannels&&(i.channelsCount=e.configuration.numberOfChannels)),i}static html5TrackToShakaTrack(e,t){v.assert(e||t,"There must be at least audioTrack or videoTrack.");let i=e?e.language:null,r={id:Ce.html5TrackId(e||t),active:e?e.enabled:t.selected,type:"variant",bandwidth:0,language:ve.normalize(i||"und"),label:e?e.label:null,videoLabel:null,kind:e?e.kind:null,width:null,height:null,frameRate:null,pixelAspectRatio:null,hdr:null,colorGamut:null,videoLayout:null,mimeType:null,audioMimeType:null,videoMimeType:null,codecs:null,audioCodec:null,videoCodec:null,primary:e?e.kind=="main":!1,roles:[],forced:!1,audioRoles:null,videoRoles:null,audioLanguage:e?ve.normalize(e.language||"und"):null,videoLanguage:t?ve.normalize(t.language||"und"):null,videoId:null,audioId:null,audioGroupId:null,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,tilesLayout:null,audioBandwidth:null,videoBandwidth:null,originalVideoId:t?t.id:null,originalAudioId:e?e.id:null,originalTextId:null,originalImageId:null,accessibilityPurpose:null,originalLanguage:i};if(e&&e.kind&&(r.roles=[e.kind],r.audioRoles=[e.kind]),e&&e.configuration&&(e.configuration.codec&&(r.audioCodec=e.configuration.codec,r.codecs=r.audioCodec),e.configuration.bitrate&&(r.audioBandwidth=e.configuration.bitrate,r.bandwidth+=r.audioBandwidth),e.configuration.sampleRate&&(r.audioSamplingRate=e.configuration.sampleRate),e.configuration.numberOfChannels&&(r.channelsCount=e.configuration.numberOfChannels)),t&&t.configuration&&(t.configuration.codec&&(r.videoCodec=t.configuration.codec,r.codecs?r.codecs+=","+r.videoCodec:r.codecs=r.videoCodec),t.configuration.bitrate&&(r.videoBandwidth=t.configuration.bitrate,r.bandwidth+=r.videoBandwidth),t.configuration.framerate&&(r.frameRate=t.configuration.framerate),t.configuration.width&&(r.width=t.configuration.width),t.configuration.height&&(r.height=t.configuration.height),t.configuration.colorSpace&&t.configuration.colorSpace.transfer))switch(t.configuration.colorSpace.transfer){case"pq":r.hdr="PQ";break;case"hlg":r.hdr="HLG";break;case"bt709":r.hdr="SDR";break}return r}static isPlayable(e){return e.allowedByApplication&&e.allowedByKeySystem&&e.disabledUntilTime==0}static getPlayableVariants(e){return e.filter(t=>Ce.isPlayable(t))}static filterStreamsByLanguageAndRole(e,t,i,r){if(!t)return[];let s=e,n=e.filter(c=>c.primary);n.length&&(s=n);let a=s.length?s[0].language:"";if(s=s.filter(c=>c.language==a),t){let c=ve.findClosestLocale(ve.normalize(t),e.map(d=>d.language));if(c)s=e.filter(d=>ve.normalize(d.language)==c);else return[]}if(s=s.filter(c=>c.forced==r),i){let c=Ce.filterStreamsByRole_(s,i);if(c.length)return c;p.warning("No exact match for the text role could be found.")}else{let c=s.filter(d=>d.roles.length==0);if(c.length)return c}let o=s.map(c=>c.roles).reduce((c,d)=>c.concat(d),[]);return o.length?Ce.filterStreamsByRole_(s,o[0]):s}static filterStreamsByRole_(e,t){return e.filter(i=>i.roles.includes(t))}static isAudio(e){let t=R.ContentType;return e.type==t.AUDIO}static isVideo(e){let t=R.ContentType;return e.type==t.VIDEO}static getVariantStreams(e){let t=[];return e.audio&&t.push(e.audio),e.video&&t.push(e.video),t}static isFastSwitching(e){return!!(e.audio&&e.audio.fastSwitching||e.video&&e.video.fastSwitching)}static setBetterIFrameStream(e,t){if(!t.length)return;let i=t.filter(r=>O.getNormalizedCodec(e.codecs)==O.getNormalizedCodec(r.codecs)).sort((r,s)=>!r.bandwidth||!s.bandwidth||r.bandwidth==s.bandwidth?(r.width||0)-(s.width||0):r.bandwidth-s.bandwidth);if(e.trickModeVideo=i[0],i.length>1){let r=i.find(s=>e.width==s.width&&e.height==s.height);r&&(e.trickModeVideo=r)}}static getVariantSummaryString_(e){let t=[];return e.audio&&t.push(Ce.getStreamSummaryString_(e.audio)),e.video&&t.push(Ce.getStreamSummaryString_(e.video)),t.join(", ")}static getStreamSummaryString_(e){return Ce.isAudio(e)?"type=audio codecs="+e.codecs+" bandwidth="+e.bandwidth+" channelsCount="+e.channelsCount+" audioSamplingRate="+e.audioSamplingRate:Ce.isVideo(e)?"type=video codecs="+e.codecs+" bandwidth="+e.bandwidth+" frameRate="+e.frameRate+" width="+e.width+" height="+e.height:"unexpected stream type"}static clearDecodingConfigCache(){Ce.decodingConfigCache_.clear()}static createStream(e){let t={id:0,originalId:null,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:"",codecs:"",supplementalCodecs:"",encrypted:!1,drmInfos:[],keyIds:new Set,language:"",originalLanguage:null,label:null,type:"",primary:!1,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,roles:[],accessibilityPurpose:null,forced:!1,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,closedCaptions:null,external:!1,fastSwitching:!1,fullMimeTypes:new Set,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1};return Object.assign(t,e),t.mimeType&&t.fullMimeTypes.add(O.getFullType(t.mimeType,t.codecs)),t}static createEmptyVariant(e){let t=R.ContentType,i={id:0,language:"und",disabledUntilTime:0,primary:!1,audio:null,video:null,bandwidth:100,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]};for(let r of e){let s=Ce.createStream({mimeType:r?O.getBasicType(r):"",codecs:r?O.getCodecs(r):"",encrypted:!0,language:"und",type:t.VIDEO});r.startsWith("audio/")?(s.type=t.AUDIO,i.audio=s):i.video=s}return i}};l(Ce,"decodingConfigCache_",new Map),l(Ce,"nextTrackId_",0),l(Ce,"DecodingAttributes",{SMOOTH:"smooth",POWER:"powerEfficient"});var se=Ce;se.supportedImageMimeTypes_=new Map().set("image/svg+xml",!0).set("image/png",!0).set("image/jpeg",!0).set("image/jpg",!0);se.minWebPImage_="data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA";se.minAvifImage_="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=";se.minImage_=new Map().set("image/webp",se.minWebPImage_).set("image/avif",se.minAvifImage_);/*! @license
206
206
  * Shaka Player
207
207
  * Copyright 2016 Google LLC
208
208
  * SPDX-License-Identifier: Apache-2.0
209
- */var yi=class yi{constructor(e){l(this,"playerInterface_");l(this,"mediaKeys_");l(this,"video_");l(this,"initialized_");l(this,"initializedForStorage_");l(this,"licenseTimeSeconds_");l(this,"currentDrmInfo_");l(this,"eventManager_");l(this,"activeSessions_");l(this,"activeRequests_");l(this,"storedPersistentSessions_");l(this,"hasInitData_");l(this,"allSessionsLoaded_");l(this,"config_");l(this,"onError_");l(this,"keyStatusByKeyId_");l(this,"announcedKeyStatusByKeyId_");l(this,"keyStatusTimer_");l(this,"usePersistentLicenses_");l(this,"mediaKeyMessageEvents_");l(this,"initialRequestsSent_");l(this,"expirationTimer_");l(this,"destroyer_");l(this,"srcEquals_");l(this,"mediaKeysAttached_");l(this,"manifestInitData_");l(this,"isPreload_");this.playerInterface_=e,this.mediaKeys_=null,this.video_=null,this.initialized_=!1,this.initializedForStorage_=!1,this.licenseTimeSeconds_=0,this.currentDrmInfo_=null,this.eventManager_=new ue,this.activeSessions_=new Map,this.activeRequests_=[],this.storedPersistentSessions_=new Map,this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.config_=null,this.onError_=i=>{i.severity==h.Severity.CRITICAL&&this.allSessionsLoaded_.reject(i),e.onError(i)},this.keyStatusByKeyId_=new Map,this.announcedKeyStatusByKeyId_=new Map,this.keyStatusTimer_=new ae(()=>this.processKeyStatusChanges_()),this.usePersistentLicenses_=!1,this.mediaKeyMessageEvents_=[],this.initialRequestsSent_=!1,this.expirationTimer_=new ae(()=>{this.pollExpiration_()});let t=()=>{};this.allSessionsLoaded_.promise.catch(t),this.destroyer_=new ci(()=>this.destroyNow_()),this.srcEquals_=!1,this.mediaKeysAttached_=null,this.manifestInitData_=null,this.isPreload_=()=>!1}destroy(){return this.destroyer_.destroy()}async destroyNow_(){if(this.eventManager_.release(),this.eventManager_=null,this.allSessionsLoaded_.reject(),this.expirationTimer_.stop(),this.expirationTimer_=null,this.keyStatusTimer_.stop(),this.keyStatusTimer_=null,await this.closeOpenSessions_(),this.video_){de.isMediaKeysPolyfilled("webkit")||v.assert(!this.video_.src&&!this.video_.getElementsByTagName("source").length,"video src must be removed first!");try{await this.video_.setMediaKeys(null)}catch(e){p.alwaysWarn("DrmEngine.destroyNow_ exception",e)}this.video_=null}this.currentDrmInfo_=null,this.mediaKeys_=null,this.storedPersistentSessions_=new Map,this.config_=null,this.onError_=()=>{},this.playerInterface_=null,this.srcEquals_=!1,this.mediaKeysAttached_=null}configure(e,t){this.config_=e,t&&(this.isPreload_=t),this.expirationTimer_&&this.initialized_&&this.currentDrmInfo_&&this.expirationTimer_.tickEvery(this.config_.updateExpirationTime)}setSrcEquals(e){this.srcEquals_=e}initForStorage(e,t){return this.initializedForStorage_=!0,this.storedPersistentSessions_=new Map,this.usePersistentLicenses_=t,this.init_(e,!1)}initForPlayback(e,t,i=!0){this.storedPersistentSessions_=new Map;for(let r of t)this.storedPersistentSessions_.set(r,{initData:null,initDataType:null});for(let r of this.config_.persistentSessionsMetadata)this.storedPersistentSessions_.set(r.sessionId,{initData:r.initData,initDataType:r.initDataType});return this.usePersistentLicenses_=this.storedPersistentSessions_.size>0,this.init_(e,i)}async initForRemoval(e,t,i,r,s){let n=[];s.length&&n.push(s[0].contentType),r.length&&n.push(r[0].contentType);let a=c=>{let d=R.createDrmInfo(e,c,null);return d.licenseServerUri=t,d.serverCertificate=i,d.persistentStateRequired=!0,d.sessionType="persistent-license",d},o=se.createEmptyVariant(n);if(o.video){let c=a(s[0].encryptionScheme||"");o.video.drmInfos.push(c)}if(o.audio){let c=a(r[0].encryptionScheme||"");o.audio.drmInfos.push(c)}return await se.getDecodingInfosForVariants([o],!0,this.srcEquals_,[]),this.destroyer_.ensureNotDestroyed(),this.queryMediaKeys_([o])}async init_(e,t){v.assert(this.config_,"DrmEngine configure() must be called before init()!"),yi.configureClearKey(this.config_.clearKeys,e);let i=e.some(u=>!!(u.video&&u.video.drmInfos.length||u.audio&&u.audio.drmInfos.length)),r=Zt.asMap(this.config_.servers),s=Zt.asMap(this.config_.advanced||{});!i&&t&&yi.replaceDrmInfo_(e,r);let n=new WeakSet;for(let u of e){let m=this.getVariantDrmInfos_(u);for(let f of m)n.has(f)||(n.add(f),yi.fillInDrmInfoDefaults_(f,r,s,this.config_.keySystemsMapping))}let a=(u,m)=>{let f=[];for(let g of u){let _=g[m]||s.has(g.keySystem)&&s.get(g.keySystem)[m]||"";if(_==""&&de.isWidevineKeySystem(g.keySystem)&&(m=="audioRobustness"?_=[this.config_.defaultAudioRobustnessForWidevine]:m=="videoRobustness"&&(_=[this.config_.defaultVideoRobustnessForWidevine])),typeof _=="string")f.push(g);else if(Array.isArray(_)){_.length===0&&(_=[""]);for(let T of _)f.push(Object.assign({},g,{[m]:T}))}}return f},o=new WeakSet;for(let u of e)u.video&&!o.has(u.video)&&(u.video.drmInfos=a(u.video.drmInfos,"videoRobustness"),u.video.drmInfos=a(u.video.drmInfos,"audioRobustness"),o.add(u.video)),u.audio&&!o.has(u.audio)&&(u.audio.drmInfos=a(u.audio.drmInfos,"videoRobustness"),u.audio.drmInfos=a(u.audio.drmInfos,"audioRobustness"),o.add(u.audio));if(await se.getDecodingInfosForVariants(e,this.usePersistentLicenses_,this.srcEquals_,this.config_.preferredKeySystems),this.destroyer_.ensureNotDestroyed(),!(i||r.size>0))return this.initialized_=!0,Promise.resolve();let d=this.queryMediaKeys_(e);return i?d:d.catch(()=>{})}async attachMediaKeys_(){if(!this.video_.mediaKeys){if(this.mediaKeysAttached_){await this.mediaKeysAttached_,this.destroyer_.ensureNotDestroyed();return}try{this.mediaKeysAttached_=this.video_.setMediaKeys(this.mediaKeys_),await this.mediaKeysAttached_}catch(e){v.assert(e instanceof Error,"Wrong error type!"),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_ATTACH_TO_VIDEO,e.message))}this.destroyer_.ensureNotDestroyed()}}async onEncryptedEvent_(e){await this.attachMediaKeys_(),this.newInitData(e.initDataType,D.toUint8(e.initData))}async attach(e){if(this.video_===e)return;if(!this.mediaKeys_){this.eventManager_.listenOnce(e,"encrypted",n=>{this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.ENCRYPTED_CONTENT_WITHOUT_DRM_INFO))});return}let t=j.getDevice();this.video_=e,this.config_.delayLicenseRequestUntilPlayed&&this.eventManager_.listenOnce(this.video_,"play",()=>this.onPlay_());let i=t.getRemote(this.video_);i?this.eventManager_.listenMulti(i,["connect","connecting","disconnect"],()=>{this.closeOpenSessions_()}):"webkitCurrentPlaybackTargetIsWireless"in this.video_&&this.eventManager_.listen(this.video_,"webkitcurrentplaybacktargetiswirelesschanged",()=>this.closeOpenSessions_()),this.manifestInitData_=this.currentDrmInfo_&&this.currentDrmInfo_.initData.find(n=>n.initData.length>0)||null;let r=this.currentDrmInfo_.keySystem,s=t.needWaitForEncryptedEvent(r);!s&&(this.manifestInitData_||this.currentDrmInfo_.keySystem!=="com.apple.fps"||this.storedPersistentSessions_.size)&&await this.attachMediaKeys_(),this.createOrLoad().catch(()=>{}),(s||!this.manifestInitData_&&!this.storedPersistentSessions_.size&&!this.config_.parseInbandPsshEnabled)&&this.eventManager_.listen(this.video_,"encrypted",n=>this.onEncryptedEvent_(n))}hasManifestInitData(){return!!this.manifestInitData_}async setServerCertificate(){if(v.assert(this.initialized_,"Must call init() before setServerCertificate"),!(!this.mediaKeys_||!this.currentDrmInfo_)){if(this.currentDrmInfo_.serverCertificateUri&&(!this.currentDrmInfo_.serverCertificate||!this.currentDrmInfo_.serverCertificate.length)){let e=K.makeRequest([this.currentDrmInfo_.serverCertificateUri],this.config_.retryParameters);try{let i=await this.playerInterface_.netEngine.request(K.RequestType.SERVER_CERTIFICATE,e,{isPreload:this.isPreload_()}).promise;this.currentDrmInfo_.serverCertificate=D.toUint8(i.data)}catch(t){throw v.assert(t instanceof h,"Wrong NetworkingEngine error type!"),new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.SERVER_CERTIFICATE_REQUEST_FAILED,t)}if(this.destroyer_.destroyed())return}if(!(!this.currentDrmInfo_.serverCertificate||!this.currentDrmInfo_.serverCertificate.length))try{await this.mediaKeys_.setServerCertificate(this.currentDrmInfo_.serverCertificate)||p.warning("Server certificates are not supported by the key system. The server certificate has been ignored.")}catch(e){throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.INVALID_SERVER_CERTIFICATE,e.message)}}}async removeSession(e){v.assert(this.mediaKeys_,"Must call init() before removeSession");let t=await this.loadOfflineSession_(e,{initData:null,initDataType:null});if(!t){p.v2("Ignoring attempt to remove missing session",e);return}let i=[],r=this.activeSessions_.get(t);r&&(r.updatePromise=Promise.withResolvers(),i.push(r.updatePromise.promise)),p.v2("Attempting to remove session",e),i.push(t.remove()),await Promise.all(i),this.activeSessions_.delete(t)}async createOrLoad(){if(this.storedPersistentSessions_.size){if(this.storedPersistentSessions_.forEach((i,r)=>{this.loadOfflineSession_(r,i)}),await this.allSessionsLoaded_.promise,(this.currentDrmInfo_&&this.currentDrmInfo_.keyIds||new Set([])).size>0&&this.areAllKeysUsable_())return this.allSessionsLoaded_.promise;this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.allSessionsLoaded_.promise.catch(()=>{})}let e=(this.currentDrmInfo_?this.currentDrmInfo_.initData:[])||[];for(let t of e)this.newInitData(t.initDataType,t.initData);return this.areAllSessionsLoaded_()&&this.allSessionsLoaded_.resolve(),this.allSessionsLoaded_.promise}updateCurrentDrmInfo(e){this.currentDrmInfo_&&(this.currentDrmInfo_.mediaTypes!==e.mediaTypes&&(this.currentDrmInfo_.mediaTypes=e.mediaTypes),de.isClearKeyWihRawKey(e)&&(this.currentDrmInfo_=this.createDrmInfoByInfos_(this.currentDrmInfo_.keySystem,[this.currentDrmInfo_,e])))}newInitData(e,t){if(t.length){try{t=this.config_.initDataTransform(t,e,this.currentDrmInfo_)}catch(i){let r=i;i instanceof h||(r=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.INIT_DATA_TRANSFORM_ERROR,i)),this.onError_(r);return}if(this.config_.ignoreDuplicateInitData){let i=this.activeSessions_.values();for(let s of i)if(D.equal(t,s.initData)){p.debug("Ignoring duplicate init data.");return}let r=!1;if(this.storedPersistentSessions_.forEach((s,n)=>{!r&&D.equal(t,s.initData)&&(r=!0)}),r){p.debug("Ignoring duplicate init data.");return}}this.hasInitData_=!0,this.activeSessions_.size>0&&this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.allSessionsLoaded_.promise.catch(()=>{})),this.createSession(e,t,this.currentDrmInfo_.sessionType)}}initialized(){return this.initialized_}getSessionIds(){let e=this.activeSessions_.keys(),t=Qi.map(e,i=>i.sessionId);return Array.from(t)}getActiveSessionsMetadata(){let e=this.activeSessions_.keys(),t=Qi.map(e,i=>{let r=this.activeSessions_.get(i);return{sessionId:i.sessionId,sessionType:r.type,initData:r.initData,initDataType:r.initDataType}});return Array.from(t)}renewLicense(e){this.activeSessions_.forEach((t,i)=>{(e==null||i.sessionId==e)&&this.triggerRenewal_(i)})}async retryLicensing(e,t=.1){this.destroyer_.ensureNotDestroyed(),p.info("Retrying licensing for session",e.sessionId);let i=null,r=null;if(this.activeSessions_.forEach((a,o)=>{o.sessionId===e.sessionId&&(i=o,r=a)}),!i||!r)return p.warning("Session not found for retry:",e.sessionId),!1;if(!this.currentDrmInfo_)return p.warning("No DRM info available for retry"),!1;if(!r.initData||!r.initDataType)return p.error("Missing initData or initDataType for session retry"),!1;let s=r.initData,n=r.initDataType;t>0&&await it.delay(t);try{this.activeSessions_.delete(i),await this.closeSession_(i);let a=this.createSession(n,s,this.currentDrmInfo_.sessionType,!1);if(!a)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to create new session for license retry");return p.info("Successfully created new session for retry:",a.sessionId),!0}catch(a){return p.error("Failed to retry licensing:",a),!1}}getExpiration(){let e=1/0,t=this.activeSessions_.keys();for(let i of t)isNaN(i.expiration)||(e=Math.min(e,i.expiration));return e}getLicenseTime(){return this.licenseTimeSeconds_?this.licenseTimeSeconds_:NaN}getDrmInfo(){return this.currentDrmInfo_}getMediaKeys(){return this.mediaKeys_}getKeyStatuses(){return Zt.asObject(this.announcedKeyStatusByKeyId_)}async queryMediaKeys_(e){let t=new Map,i=this.getKeySystemAccessFromVariants_(e,t);if(!i)throw navigator.requestMediaKeySystemAccess?new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE):new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.MISSING_EME_SUPPORT);this.destroyer_.ensureNotDestroyed();try{let r=i.getConfiguration();p.v2("Got MediaKeySystemAccess with configuration",r);let s=this.config_.keySystemsMapping[i.keySystem]||i.keySystem;if(this.currentDrmInfo_=this.createDrmInfoByInfos_(s,t.get(s)),!this.currentDrmInfo_.licenseServerUri)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.NO_LICENSE_SERVER_GIVEN,this.currentDrmInfo_.keySystem);let n=await i.createMediaKeys();if(this.destroyer_.ensureNotDestroyed(),p.info("Created MediaKeys object for key system",this.currentDrmInfo_.keySystem),this.mediaKeys_=n,this.config_.minHdcpVersion!=""&&"getStatusForPolicy"in this.mediaKeys_)try{if(await this.mediaKeys_.getStatusForPolicy({minHdcpVersion:this.config_.minHdcpVersion})!="usable")throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.MIN_HDCP_VERSION_NOT_MATCH);this.destroyer_.ensureNotDestroyed()}catch(a){throw a instanceof h?a:new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.ERROR_CHECKING_HDCP_VERSION,a.message)}this.initialized_=!0,this.expirationTimer_.tickEvery(this.config_.updateExpirationTime),await this.setServerCertificate(),this.destroyer_.ensureNotDestroyed()}catch(r){throw this.destroyer_.ensureNotDestroyed(r),this.currentDrmInfo_=null,r instanceof h?r:new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_CDM,r.message)}}getKeySystemAccessFromVariants_(e,t){for(let r of e){let s=this.getVariantDrmInfos_(r);for(let n of s)t.getOrInsertComputed(n.keySystem,()=>[]).push(n)}if(t.size==1&&t.has(""))throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.NO_RECOGNIZED_KEY_SYSTEMS);let i=this.config_.preferredKeySystems;if(!i.length){let r=Zt.asMap(this.config_.servers);r.size==1&&(i=Array.from(r.keys()))}for(let r of i)for(let s of e){let n=s.decodingInfos.find(a=>a.supported&&a.keySystemAccess!=null&&a.keySystemAccess.keySystem==r);if(n)return n.keySystemAccess}for(let r of[!0,!1])for(let s of e)for(let n of s.decodingInfos){if(!n.supported||!n.keySystemAccess)continue;let a=n.keySystemAccess.keySystem;if(i.includes(a))continue;let o=t.get(a);!o&&this.config_.keySystemsMapping[a]&&(o=t.get(this.config_.keySystemsMapping[a]));for(let c of o)if(!!c.licenseServerUri==r)return n.keySystemAccess}return null}checkSessionsLoaded_(){this.areAllSessionsLoaded_()&&this.allSessionsLoaded_.resolve()}setLoadSessionTimeoutTimer_(e){new ae(()=>{e.loaded=!0,this.checkSessionsLoaded_()}).tickAfter(yi.SESSION_LOAD_TIMEOUT_)}async loadOfflineSession_(e,t){let i,r="persistent-license";try{p.v1("Attempting to load an offline session",e),i=this.mediaKeys_.createSession(r)}catch(n){let a=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,n.message);return this.onError_(a),Promise.reject(a)}this.eventManager_.listen(i,"message",(n=>this.onSessionMessage_(n))),this.eventManager_.listen(i,"keystatuseschange",n=>this.onKeyStatusesChange_(n));let s={initData:t.initData,initDataType:t.initDataType,loaded:!1,oldExpiration:1/0,updatePromise:null,type:r,lastRenewalTime:0,isRenewal:!1};this.activeSessions_.set(i,s);try{let n=await i.load(e);if(this.destroyer_.ensureNotDestroyed(),p.v2("Loaded offline session",e,n),!n){this.activeSessions_.delete(i);let a=this.config_.persistentSessionOnlinePlayback?h.Severity.RECOVERABLE:h.Severity.CRITICAL;this.onError_(new h(a,h.Category.DRM,h.Code.OFFLINE_SESSION_REMOVED)),s.loaded=!0}return this.setLoadSessionTimeoutTimer_(s),this.checkSessionsLoaded_(),i}catch(n){this.destroyer_.ensureNotDestroyed(n),this.activeSessions_.delete(i);let a=this.config_.persistentSessionOnlinePlayback?h.Severity.RECOVERABLE:h.Severity.CRITICAL;this.onError_(new h(a,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,n.message)),s.loaded=!0,this.checkSessionsLoaded_()}return Promise.resolve()}createSession(e,t,i,r=!1){v.assert(this.mediaKeys_,"mediaKeys_ should be valid when creating temporary session.");let s;try{p.info("Creating new",i,"session"),s=this.mediaKeys_.createSession(i)}catch(a){return this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,a.message)),null}this.eventManager_.listen(s,"message",(a=>this.onSessionMessage_(a))),this.eventManager_.listen(s,"keystatuseschange",a=>this.onKeyStatusesChange_(a));let n={initData:t,initDataType:e,loaded:!1,oldExpiration:1/0,updatePromise:null,type:i,lastRenewalTime:0,isRenewal:r};if(this.activeSessions_.set(s,n),s.closed.then(a=>{if(this.destroyer_.destroyed())return;let o=this.activeSessions_.get(s);o&&this.onSessionClosed_(s,o,a||"unknown")}).catch(a=>{p.warning("session.closed rejected:",a)}),this.config_.logLicenseExchange){let a=ne.toBase64(t);p.info("EME init data: type=",e,"data=",a)}return s.generateRequest(e,t).catch(a=>{if(this.destroyer_.destroyed())return;v.assert(a instanceof Error,"Wrong error type!"),this.activeSessions_.delete(s);let o=a.errorCode,c;o&&o.systemCode&&(c=o.systemCode,c<0&&(c+=Math.pow(2,32)),c="0x"+c.toString(16)),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_GENERATE_LICENSE_REQUEST,a.message,a,c))}),s}onSessionMessage_(e){this.delayLicenseRequest_()?this.mediaKeyMessageEvents_.push(e):this.sendLicenseRequest_(e)}delayLicenseRequest_(){return this.video_?this.config_.delayLicenseRequestUntilPlayed&&this.video_.paused&&!this.initialRequestsSent_:!this.initializedForStorage_&&this.config_.delayLicenseRequestUntilPlayed}async waitForActiveRequests(){this.hasInitData_&&!this.delayLicenseRequest_()&&(await this.allSessionsLoaded_.promise,await Promise.all(this.activeRequests_.map(e=>e.promise)))}async sendLicenseRequest_(e){let t=e.target;if(p.v1("Sending license request for session",t.sessionId,"of type",e.messageType),this.config_.logLicenseExchange){let m=ne.toBase64(e.message);p.info("EME license request",m)}let i=this.activeSessions_.get(t),r=this.currentDrmInfo_.licenseServerUri,s=this.config_.advanced[this.currentDrmInfo_.keySystem];e.messageType=="individualization-request"&&s&&s.individualizationServer&&(r=s.individualizationServer);let n=K.RequestType.LICENSE,a=K.makeRequest([r],this.config_.retryParameters);if(a.body=e.message,a.method="POST",a.licenseRequestType=e.messageType,a.sessionId=t.sessionId,a.drmInfo=this.currentDrmInfo_,i&&(a.initData=i.initData,a.initDataType=i.initDataType,i.isRenewal&&(a.licenseRequestType="license-renewal")),s&&s.headers)for(let m in s.headers)a.headers[m]=s.headers[m];let o=de.isClearKeySystem(this.currentDrmInfo_.keySystem);o&&this.fixClearKeyRequest_(a,this.currentDrmInfo_),de.isPlayReadyKeySystem(this.currentDrmInfo_.keySystem)&&this.unpackPlayReadyRequest_(a);let c=Date.now(),d;try{let m=this.playerInterface_.netEngine.request(n,a,{isPreload:this.isPreload_()});this.activeRequests_.push(m),d=await m.promise,ye.remove(this.activeRequests_,m)}catch(m){if(this.destroyer_.destroyed())return;v.assert(m instanceof h,"Wrong NetworkingEngine error type!");let f={sessionId:t.sessionId,sessionType:i.type,initData:i.initData,initDataType:i.initDataType},g=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.LICENSE_REQUEST_FAILED,m,f);if(this.config_.failureCallback)try{this.config_.failureCallback(g)}catch(_){p.error("Error in failureCallback:",_)}if(g.handled){p.info("License request failure handled by failureCallback"),i&&i.updatePromise&&i.updatePromise.reject(g);return}this.activeSessions_.size==1?(this.onError_(g),i&&i.updatePromise&&i.updatePromise.reject(g)):(i&&i.updatePromise&&i.updatePromise.reject(g),this.activeSessions_.delete(t),this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.keyStatusTimer_.tickAfter(.1)));return}if(this.destroyer_.destroyed())return;if(this.licenseTimeSeconds_+=(Date.now()-c)/1e3,this.config_.logLicenseExchange){let m=ne.toBase64(d.data);p.info("EME license response",m)}o&&this.processClearKeyResponse_(d);try{p.v1("Updating session",t.sessionId),await t.update(d.data),i&&(i.lastRenewalTime=Date.now()/1e3)}catch(m){let f=m&&m.message||String(m),g=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.LICENSE_RESPONSE_REJECTED,f);this.onError_(g),i&&i.updatePromise&&i.updatePromise.reject(g);return}if(this.destroyer_.destroyed())return;let u=new U("drmsessionupdate");this.playerInterface_.onEvent(u),i&&(i.updatePromise&&i.updatePromise.resolve(),this.setLoadSessionTimeoutTimer_(i))}processClearKeyResponse_(e){let t=q.fromUTF8(e.data);try{let i=JSON.parse(t),r=new Map(i.keys.map(({kid:s,k:n})=>[de.normalizeClearKeyValue(s),de.normalizeClearKeyValue(n)]));if(!this.currentDrmInfo_.clearKeys)this.currentDrmInfo_.clearKeys=r;else for(let[s,n]of r)this.currentDrmInfo_.clearKeys.set(s,n)}catch(i){}}unpackPlayReadyRequest_(e){let t=q.fromUTF16(e.body,!0,!0);if(!t.includes("PlayReadyKeyMessage")){p.debug("PlayReady request is already unwrapped."),e.headers["Content-Type"]="text/xml; charset=utf-8";return}p.debug("Unwrapping PlayReady request.");let i=I.parseXmlString(t,"PlayReadyKeyMessage");v.assert(i,"Failed to parse PlayReady XML!");let r=I.getElementsByTagName(i,"HttpHeader");for(let n of r){let a=I.getElementsByTagName(n,"name")[0],o=I.getElementsByTagName(n,"value")[0];v.assert(a&&o,"Malformed PlayReady headers!"),e.headers[I.getTextContents(a)]=I.getTextContents(o)}let s=I.getElementsByTagName(i,"Challenge")[0];v.assert(s,"Malformed PlayReady challenge!"),v.assert(s.attributes.encoding=="base64encoded","Unexpected PlayReady challenge encoding!"),e.body=ne.fromBase64(I.getTextContents(s))}fixClearKeyRequest_(e,t){try{let i=q.fromBytesAutoDetect(e.body);if(i){let r=JSON.parse(i);r.type||(r.type=t.sessionType,e.body=q.toUTF8(JSON.stringify(r)))}}catch(i){p.info("Error unpacking ClearKey license",i)}}onKeyStatusesChange_(e){let t=e.target;p.v2("Key status changed for session",t.sessionId);let i=this.activeSessions_.get(t),r=t.keyStatuses,s=!1;r.forEach((a,o)=>{if(typeof o=="string"){let u=o;o=a,a=u}let c=j.getDevice();if(de.isPlayReadyKeySystem(this.currentDrmInfo_.keySystem)&&o.byteLength==16&&c.returnLittleEndianUsingPlayReady()){let u=D.toDataView(o),m=u.getUint32(0,!0),f=u.getUint16(4,!0),g=u.getUint16(6,!0);u.setUint32(0,m,!1),u.setUint16(4,f,!1),u.setUint16(6,g,!1)}i&&a!="status-pending"&&(i.loaded=!0),i||v.assert(a!="usable","Usable keys found in closed session"),a=="expired"&&(s=!0);let d=ne.toHex(o).slice(0,32);this.keyStatusByKeyId_.set(d,a)});let n=t.expiration-Date.now();(n<0||s&&n<1e3)&&i&&!i.updatePromise&&(p.debug("Session has expired",t.sessionId),this.activeSessions_.delete(t),this.closeSession_(t)),this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.keyStatusTimer_.tickAfter(yi.KEY_STATUS_BATCH_TIME))}processKeyStatusChanges_(){let e=this.keyStatusByKeyId_,t=this.announcedKeyStatusByKeyId_;t.clear(),e.forEach((s,n)=>t.set(n,s));let i=Array.from(t.values());i.length&&i.every(s=>s=="expired")&&this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.EXPIRED)),this.playerInterface_.onKeyStatus(Zt.asObject(t))}static async probeSupport(){let e=["org.w3.clearkey","com.widevine.alpha","com.microsoft.playready","com.microsoft.playready.hardware","com.microsoft.playready.recommendation","com.microsoft.playready.recommendation.3000","com.microsoft.playready.recommendation.3000.clearlead","com.chromecast.playready","com.apple.fps.1_0","com.apple.fps","com.huawei.wiseplay"];if(!de.isBrowserSupported()){let _={};for(let T of e)_[T]=null;return _}let t=["1.0","1.1","1.2","1.3","1.4","2.0","2.1","2.2","2.3"],i=["SW_SECURE_CRYPTO","SW_SECURE_DECODE","HW_SECURE_CRYPTO","HW_SECURE_DECODE","HW_SECURE_ALL"],s={"com.widevine.alpha":i,"com.widevine.alpha.experiment":i,"com.microsoft.playready.recommendation":["150","2000","3000"]},o={videoCapabilities:[{contentType:'video/mp4; codecs="avc1.42E01E"'},{contentType:'video/webm; codecs="vp8"'}],audioCapabilities:[{contentType:'audio/mp4; codecs="mp4a.40.2"'},{contentType:'audio/webm; codecs="opus"'}],initDataTypes:["cenc","sinf","skd","keyids"]},c=[null,"cenc","cbcs"],d=new Map,u=j.getDevice(),m=async(_,T,S)=>{let b;try{if(u.createMediaKeysWhenCheckingSupport())b=await T.createMediaKeys();else throw new Error("Suppressing Firefox Windows DRM in testing!")}catch(V){return}let E=T.getConfiguration().sessionTypes,C=E?E.includes("persistent-license"):!1;u.misreportsSupportForPersistentLicenses()&&(C=!1);let A=T.getConfiguration().videoCapabilities,w=T.getConfiguration().audioCapabilities,M={persistentState:C,encryptionSchemes:[],videoRobustnessLevels:[],audioRobustnessLevels:[],minHdcpVersions:[]};d.get(_)?M=d.get(_):d.set(_,M);let x=A[0].encryptionScheme;x&&!M.encryptionSchemes.includes(x)&&M.encryptionSchemes.push(x);let k=A[0].robustness;k&&!M.videoRobustnessLevels.includes(k)&&M.videoRobustnessLevels.push(k);let L=w[0].robustness;if(L&&!M.audioRobustnessLevels.includes(L)&&M.audioRobustnessLevels.push(L),S&&"getStatusForPolicy"in b)for(let V of t){if(M.minHdcpVersions.includes(V))continue;if(await b.getStatusForPolicy({minHdcpVersion:V})=="usable")M.minHdcpVersions.includes(V)||M.minHdcpVersions.push(V);else break}},f=async(_,T,S,b,E=!1)=>{try{let C=Ne.cloneObject(o);for(let L of C.videoCapabilities)L.encryptionScheme=T,L.robustness=S;for(let L of C.audioCapabilities)L.encryptionScheme=T,L.robustness=b;let A=Ne.cloneObject(C);A.persistentState="required",A.sessionTypes=["persistent-license"];let w=[A,C],M=5,x;j.getDevice().getDeviceType()==ie.DeviceType.MOBILE?x=await it.promiseWithTimeout(M,navigator.requestMediaKeySystemAccess(_,w)):x=await navigator.requestMediaKeySystemAccess(_,w),await m(_,x,E)}catch(C){}},g=[];for(let _ of e){d.set(_,null);let T=!0;for(let S of c)g.push(f(_,S,"","",T)),T=!1;for(let S of s[_]||[])g.push(f(_,null,S,"")),g.push(f(_,null,"",S))}return await Promise.all(g),Zt.asObject(d)}onPlay_(){for(let e of this.mediaKeyMessageEvents_)this.sendLicenseRequest_(e);this.initialRequestsSent_=!0,this.mediaKeyMessageEvents_=[]}async closeSession_(e){let t=null;try{t=(await it.promiseWithTimeout(yi.CLOSE_TIMEOUT_,Promise.all([e.close().catch(()=>{}),e.closed])))[1]}catch(i){p.warning("Timeout waiting for session close")}t&&this.handleSessionCloseReason_(e,t)}processSessionCloseReason_(e,t){e==="internal-error"?(p.error("CDM internal error. Cannot create new sessions."),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"CDM reported internal error"))):e==="closed-by-application"?p.v1("Session closed by application"):e==="release-acknowledged"?p.v1("Session closed: license release acknowledged"):e==="resource-evicted"?p.warning("Session closed: resources evicted"):e==="hardware-context-reset"?t?(p.warning("Hardware context reset detected. Recreating session..."),this.recreateSessionAfterHardwareReset_(t)):p.warning("Hardware context reset detected during app close"):p.warning("Session closed with unknown reason:",e)}handleSessionCloseReason_(e,t){p.info("Session closed with reason",t,"sessionId",e.sessionId),t!=="unknown"&&this.processSessionCloseReason_(t)}onSessionClosed_(e,t,i){i!=="unknown"&&(p.info("CDM closed session with reason",i,"sessionId",e.sessionId),this.activeSessions_.delete(e),this.processSessionCloseReason_(i,t))}recreateSessionAfterHardwareReset_(e){if(p.info("Recreating session after hardware context reset","initDataType",e.initDataType),!e.initDataType||!e.initData){p.error("Cannot recreate session: missing initData or initDataType"),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Cannot recreate session after hardware reset: missing metadata"));return}try{this.createSession(e.initDataType,e.initData,e.type),p.info("Session successfully recreated after hardware reset")}catch(t){p.error("Failed to recreate session after hardware reset:",t),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to recreate session after hardware context reset: "+t.message))}}async closeOpenSessions_(){let e=Array.from(this.activeSessions_.entries());this.activeSessions_.clear(),await Promise.all(e.map(async([t,i])=>{try{!this.initializedForStorage_&&!this.storedPersistentSessions_.has(t.sessionId)&&i.type==="persistent-license"&&!this.config_.persistentSessionOnlinePlayback?(p.v1("Removing session",t.sessionId),await t.remove()):(p.v1("Closing session",t.sessionId,i),await this.closeSession_(t))}catch(r){p.error("Failed to close or remove the session",r)}}))}getVariantDrmInfos_(e){let t=e.video?e.video.drmInfos:[],i=e.audio?e.audio.drmInfos:[];return t.concat(i)}pollExpiration_(){let e=Date.now()/1e3;this.activeSessions_.forEach((t,i)=>{let r=t.oldExpiration,s=i.expiration;if(isNaN(s)&&(s=1/0),s!=r&&(this.playerInterface_.onExpirationUpdated(i.sessionId,s),t.oldExpiration=s),this.config_.renewalIntervalSec>0){let n=e-t.lastRenewalTime;t.lastRenewalTime>0&&n>=this.config_.renewalIntervalSec&&this.triggerRenewal_(i)}})}async triggerRenewal_(e){p.info("Triggering license renewal for session",e.sessionId);let t=this.activeSessions_.get(e);if(t&&(t.lastRenewalTime=Date.now()/1e3),!this.currentDrmInfo_)return;let i=this.currentDrmInfo_.keySystem,r=e,s={sessionId:e.sessionId,sessionType:this.currentDrmInfo_.sessionType,initData:t?t.initData:null,initDataType:t?t.initDataType:null};try{if(de.isFairPlayKeySystem(i)){let c=q.toUTF8("renew");await e.update(c)}else if(de.isPlayReadyKeySystem(i)&&t&&t.initData&&t.initDataType)r=await this.requestPlayReadyLicenseForRenewal_(e,t);else{p.alwaysWarn("Manual license renewal is not supported for "+i);return}}catch(c){p.error("Failed to renew license:",c);return}let n=this.activeSessions_.get(r),a={sessionId:r.sessionId,sessionType:this.currentDrmInfo_.sessionType,initData:n?n.initData:null,initDataType:n?n.initDataType:null},o=new U("licenserenewal",new Map().set("oldSessionMetadata",s).set("newSessionMetadata",a));this.playerInterface_.onEvent(o)}async requestPlayReadyLicenseForRenewal_(e,t){v.assert(t.initDataType,"initDataType must be defined"),v.assert(t.initData,"initData must be defined"),this.activeSessions_.delete(e),await this.closeSession_(e);let i=this.createSession(t.initDataType,t.initData,this.currentDrmInfo_.sessionType,!0);if(!i)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to create new session for renewal");return i}areAllSessionsLoaded_(){let e=this.activeSessions_.values();return Qi.every(e,t=>t.loaded)}areAllKeysUsable_(){let e=this.currentDrmInfo_&&this.currentDrmInfo_.keyIds||new Set([]);for(let t of e)if(this.keyStatusByKeyId_.get(t)!=="usable")return!1;return!0}static replaceDrmInfo_(e,t){let i=[];t.forEach((r,s)=>{i.push({keySystem:s,licenseServerUri:r,distinctiveIdentifierRequired:!1,persistentStateRequired:!1,audioRobustness:"",videoRobustness:"",serverCertificate:null,serverCertificateUri:"",initData:[],keyIds:new Set})});for(let r of e)r.video&&(r.video.drmInfos=i),r.audio&&(r.audio.drmInfos=i)}createDrmInfoByInfos_(e,t){let i=[],r=[],s=[],n=[],a=[],o=new Set,c=new Set;yi.processDrmInfos_(t,i,r,n,s,a,o,c),i.length>1&&p.warning("Multiple unique encryption schemes found! Only the first will be used."),n.length>1&&p.warning("Multiple unique server certificates found! Only the first will be used."),r.length>1&&p.warning("Multiple unique license server URIs found! Only the first will be used."),s.length>1&&p.warning("Multiple unique server certificate URIs found! Only the first will be used.");let d=this.usePersistentLicenses_?"persistent-license":"temporary",u={keySystem:e,encryptionScheme:i[0],licenseServerUri:r[0],distinctiveIdentifierRequired:t[0].distinctiveIdentifierRequired,persistentStateRequired:t[0].persistentStateRequired,sessionType:t[0].sessionType||d,audioRobustness:t[0].audioRobustness||"",videoRobustness:t[0].videoRobustness||"",serverCertificate:n[0],serverCertificateUri:s[0],initData:a,keyIds:o,mediaTypes:t[0].mediaTypes};c.size>0&&(u.keySystemUris=c);for(let m of t)m.distinctiveIdentifierRequired&&(u.distinctiveIdentifierRequired=m.distinctiveIdentifierRequired),m.persistentStateRequired&&(u.persistentStateRequired=m.persistentStateRequired);return u}static processDrmInfos_(e,t,i,r,s,n,a,o){let c=(m,f)=>m.keyId&&m.keyId==f.keyId?!0:m.initDataType==f.initDataType&&D.equal(m.initData,f.initData),d="data:application/json;base64,",u=[];for(let m of e){if(t.includes(m.encryptionScheme)||t.push(m.encryptionScheme),de.isClearKeySystem(m.keySystem)&&m.licenseServerUri.startsWith(d)?u.includes(m.licenseServerUri)||u.push(m.licenseServerUri):i.includes(m.licenseServerUri)||i.push(m.licenseServerUri),s.includes(m.serverCertificateUri)||s.push(m.serverCertificateUri),m.serverCertificate&&(r.some(g=>D.equal(g,m.serverCertificate))||r.push(m.serverCertificate)),m.initData)for(let f of m.initData)n.some(_=>c(_,f))||n.push(f);if(m.keyIds)for(let f of m.keyIds)a.add(f);if(m.keySystemUris&&o)for(let f of m.keySystemUris)o.add(f)}if(u.length==1)i.push(u[0]);else if(u.length>0){let m=[];for(let _ of u){let T=window.atob(_.split(d).pop()),S=JSON.parse(T);m.push(...S.keys)}let g=JSON.stringify({keys:m});i.push(d+window.btoa(g))}}static fillInDrmInfoDefaults_(e,t,i,r){let s=e.keySystem;if(!s||de.isClearKeySystem(s)&&e.licenseServerUri)return;if(t.size&&t.get(s)){let a=t.get(s);e.licenseServerUri=a}e.keyIds||(e.keyIds=new Set);let n=i.get(s);n&&(e.distinctiveIdentifierRequired||(e.distinctiveIdentifierRequired=n.distinctiveIdentifierRequired),e.persistentStateRequired||(e.persistentStateRequired=n.persistentStateRequired),e.serverCertificate||(e.serverCertificate=n.serverCertificate),n.sessionType&&(e.sessionType=n.sessionType),e.serverCertificateUri||(e.serverCertificateUri=n.serverCertificateUri)),r[s]&&(e.keySystem=r[s]),window.cast&&window.cast.__platform__&&s=="com.microsoft.playready"&&(e.keySystem="com.chromecast.playready")}parseInbandPssh(e,t){if(!this.config_.parseInbandPsshEnabled||this.manifestInitData_)return Promise.resolve();let i=R.ContentType;if(![i.AUDIO,i.VIDEO].includes(e))return Promise.resolve();let r=new ei(D.toUint8(t)),s=0;for(let o of r.data)s+=o.length;if(s==0)return Promise.resolve();let n=new Uint8Array(s),a=0;for(let o of r.data)n.set(o,a),a+=o.length;return this.newInitData("cenc",n),this.allSessionsLoaded_.promise}static configureClearKey(e,t){let i=Zt.asMap(e);if(i.size==0)return;let r=R.createDrmInfoFromClearKeys(i);for(let s of t)s.video&&(s.video.drmInfos=[r]),s.audio&&(s.audio.drmInfos=[r])}};l(yi,"CLOSE_TIMEOUT_",1),l(yi,"SESSION_LOAD_TIMEOUT_",5),l(yi,"KEY_STATUS_BATCH_TIME",.5);var Bi=yi;/*! @license
209
+ */var yi=class yi{constructor(e){l(this,"playerInterface_");l(this,"mediaKeys_");l(this,"video_");l(this,"initialized_");l(this,"initializedForStorage_");l(this,"licenseTimeSeconds_");l(this,"currentDrmInfo_");l(this,"eventManager_");l(this,"activeSessions_");l(this,"activeRequests_");l(this,"storedPersistentSessions_");l(this,"hasInitData_");l(this,"allSessionsLoaded_");l(this,"config_");l(this,"onError_");l(this,"keyStatusByKeyId_");l(this,"announcedKeyStatusByKeyId_");l(this,"keyStatusTimer_");l(this,"usePersistentLicenses_");l(this,"mediaKeyMessageEvents_");l(this,"initialRequestsSent_");l(this,"expirationTimer_");l(this,"destroyer_");l(this,"srcEquals_");l(this,"mediaKeysAttached_");l(this,"manifestInitData_");l(this,"isPreload_");this.playerInterface_=e,this.mediaKeys_=null,this.video_=null,this.initialized_=!1,this.initializedForStorage_=!1,this.licenseTimeSeconds_=0,this.currentDrmInfo_=null,this.eventManager_=new ue,this.activeSessions_=new Map,this.activeRequests_=[],this.storedPersistentSessions_=new Map,this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.config_=null,this.onError_=i=>{i.severity==h.Severity.CRITICAL&&this.allSessionsLoaded_.reject(i),e.onError(i)},this.keyStatusByKeyId_=new Map,this.announcedKeyStatusByKeyId_=new Map,this.keyStatusTimer_=new ae(()=>this.processKeyStatusChanges_()),this.usePersistentLicenses_=!1,this.mediaKeyMessageEvents_=[],this.initialRequestsSent_=!1,this.expirationTimer_=new ae(()=>{this.pollExpiration_()});let t=()=>{};this.allSessionsLoaded_.promise.catch(t),this.destroyer_=new ci(()=>this.destroyNow_()),this.srcEquals_=!1,this.mediaKeysAttached_=null,this.manifestInitData_=null,this.isPreload_=()=>!1}destroy(){return this.destroyer_.destroy()}async destroyNow_(){if(this.eventManager_.release(),this.eventManager_=null,this.allSessionsLoaded_.reject(),this.expirationTimer_.stop(),this.expirationTimer_=null,this.keyStatusTimer_.stop(),this.keyStatusTimer_=null,await this.closeOpenSessions_(),this.video_){de.isMediaKeysPolyfilled("webkit")||v.assert(!this.video_.src&&!this.video_.getElementsByTagName("source").length,"video src must be removed first!");try{await this.video_.setMediaKeys(null)}catch(e){p.alwaysWarn("DrmEngine.destroyNow_ exception",e)}this.video_=null}this.currentDrmInfo_=null,this.mediaKeys_=null,this.storedPersistentSessions_=new Map,this.config_=null,this.onError_=()=>{},this.playerInterface_=null,this.srcEquals_=!1,this.mediaKeysAttached_=null}configure(e,t){this.config_=e,t&&(this.isPreload_=t),this.expirationTimer_&&this.initialized_&&this.currentDrmInfo_&&this.expirationTimer_.tickEvery(this.config_.updateExpirationTime)}setSrcEquals(e){this.srcEquals_=e}initForStorage(e,t){return this.initializedForStorage_=!0,this.storedPersistentSessions_=new Map,this.usePersistentLicenses_=t,this.init_(e,!1)}initForPlayback(e,t,i=!0){this.storedPersistentSessions_=new Map;for(let r of t)this.storedPersistentSessions_.set(r,{initData:null,initDataType:null});for(let r of this.config_.persistentSessionsMetadata)this.storedPersistentSessions_.set(r.sessionId,{initData:r.initData,initDataType:r.initDataType});return this.usePersistentLicenses_=this.storedPersistentSessions_.size>0,this.init_(e,i)}async initForRemoval(e,t,i,r,s){let n=[];s.length&&n.push(s[0].contentType),r.length&&n.push(r[0].contentType);let a=c=>{let d=R.createDrmInfo(e,c,null);return d.licenseServerUri=t,d.serverCertificate=i,d.persistentStateRequired=!0,d.sessionType="persistent-license",d},o=se.createEmptyVariant(n);if(o.video){let c=a(s[0].encryptionScheme||"");o.video.drmInfos.push(c)}if(o.audio){let c=a(r[0].encryptionScheme||"");o.audio.drmInfos.push(c)}return await se.getDecodingInfosForVariants([o],!0,this.srcEquals_,[]),this.destroyer_.ensureNotDestroyed(),this.queryMediaKeys_([o])}async init_(e,t){v.assert(this.config_,"DrmEngine configure() must be called before init()!"),yi.configureClearKey(this.config_.clearKeys,e);let i=e.some(u=>!!(u.video&&u.video.drmInfos.length||u.audio&&u.audio.drmInfos.length)),r=ei.asMap(this.config_.servers),s=ei.asMap(this.config_.advanced||{});!i&&t&&yi.replaceDrmInfo_(e,r);let n=new WeakSet;for(let u of e){let m=this.getVariantDrmInfos_(u);for(let f of m)n.has(f)||(n.add(f),yi.fillInDrmInfoDefaults_(f,r,s,this.config_.keySystemsMapping))}let a=(u,m)=>{let f=[];for(let g of u){let _=g[m]||s.has(g.keySystem)&&s.get(g.keySystem)[m]||"";if(_==""&&de.isWidevineKeySystem(g.keySystem)&&(m=="audioRobustness"?_=[this.config_.defaultAudioRobustnessForWidevine]:m=="videoRobustness"&&(_=[this.config_.defaultVideoRobustnessForWidevine])),typeof _=="string")f.push(g);else if(Array.isArray(_)){_.length===0&&(_=[""]);for(let T of _)f.push(Object.assign({},g,{[m]:T}))}}return f},o=new WeakSet;for(let u of e)u.video&&!o.has(u.video)&&(u.video.drmInfos=a(u.video.drmInfos,"videoRobustness"),u.video.drmInfos=a(u.video.drmInfos,"audioRobustness"),o.add(u.video)),u.audio&&!o.has(u.audio)&&(u.audio.drmInfos=a(u.audio.drmInfos,"videoRobustness"),u.audio.drmInfos=a(u.audio.drmInfos,"audioRobustness"),o.add(u.audio));if(await se.getDecodingInfosForVariants(e,this.usePersistentLicenses_,this.srcEquals_,this.config_.preferredKeySystems),this.destroyer_.ensureNotDestroyed(),!(i||r.size>0))return this.initialized_=!0,Promise.resolve();let d=this.queryMediaKeys_(e);return i?d:d.catch(()=>{})}async attachMediaKeys_(){if(!this.video_.mediaKeys){if(this.mediaKeysAttached_){await this.mediaKeysAttached_,this.destroyer_.ensureNotDestroyed();return}try{this.mediaKeysAttached_=this.video_.setMediaKeys(this.mediaKeys_),await this.mediaKeysAttached_}catch(e){v.assert(e instanceof Error,"Wrong error type!"),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_ATTACH_TO_VIDEO,e.message))}this.destroyer_.ensureNotDestroyed()}}async onEncryptedEvent_(e){await this.attachMediaKeys_(),this.newInitData(e.initDataType,D.toUint8(e.initData))}async attach(e){if(this.video_===e)return;if(!this.mediaKeys_){this.eventManager_.listenOnce(e,"encrypted",n=>{this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.ENCRYPTED_CONTENT_WITHOUT_DRM_INFO))});return}let t=j.getDevice();this.video_=e,this.config_.delayLicenseRequestUntilPlayed&&this.eventManager_.listenOnce(this.video_,"play",()=>this.onPlay_());let i=t.getRemote(this.video_);i?this.eventManager_.listenMulti(i,["connect","connecting","disconnect"],()=>{this.closeOpenSessions_()}):"webkitCurrentPlaybackTargetIsWireless"in this.video_&&this.eventManager_.listen(this.video_,"webkitcurrentplaybacktargetiswirelesschanged",()=>this.closeOpenSessions_()),this.manifestInitData_=this.currentDrmInfo_&&this.currentDrmInfo_.initData.find(n=>n.initData.length>0)||null;let r=this.currentDrmInfo_.keySystem,s=t.needWaitForEncryptedEvent(r);!s&&(this.manifestInitData_||this.currentDrmInfo_.keySystem!=="com.apple.fps"||this.storedPersistentSessions_.size)&&await this.attachMediaKeys_(),this.createOrLoad().catch(()=>{}),(s||!this.manifestInitData_&&!this.storedPersistentSessions_.size&&!this.config_.parseInbandPsshEnabled)&&this.eventManager_.listen(this.video_,"encrypted",n=>this.onEncryptedEvent_(n))}hasManifestInitData(){return!!this.manifestInitData_}async setServerCertificate(){if(v.assert(this.initialized_,"Must call init() before setServerCertificate"),!(!this.mediaKeys_||!this.currentDrmInfo_)){if(this.currentDrmInfo_.serverCertificateUri&&(!this.currentDrmInfo_.serverCertificate||!this.currentDrmInfo_.serverCertificate.length)){let e=K.makeRequest([this.currentDrmInfo_.serverCertificateUri],this.config_.retryParameters);try{let i=await this.playerInterface_.netEngine.request(K.RequestType.SERVER_CERTIFICATE,e,{isPreload:this.isPreload_()}).promise;this.currentDrmInfo_.serverCertificate=D.toUint8(i.data)}catch(t){throw v.assert(t instanceof h,"Wrong NetworkingEngine error type!"),new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.SERVER_CERTIFICATE_REQUEST_FAILED,t)}if(this.destroyer_.destroyed())return}if(!(!this.currentDrmInfo_.serverCertificate||!this.currentDrmInfo_.serverCertificate.length))try{await this.mediaKeys_.setServerCertificate(this.currentDrmInfo_.serverCertificate)||p.warning("Server certificates are not supported by the key system. The server certificate has been ignored.")}catch(e){throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.INVALID_SERVER_CERTIFICATE,e.message)}}}async removeSession(e){v.assert(this.mediaKeys_,"Must call init() before removeSession");let t=await this.loadOfflineSession_(e,{initData:null,initDataType:null});if(!t){p.v2("Ignoring attempt to remove missing session",e);return}let i=[],r=this.activeSessions_.get(t);r&&(r.updatePromise=Promise.withResolvers(),i.push(r.updatePromise.promise)),p.v2("Attempting to remove session",e),i.push(t.remove()),await Promise.all(i),this.activeSessions_.delete(t)}async createOrLoad(){if(this.storedPersistentSessions_.size){if(this.storedPersistentSessions_.forEach((i,r)=>{this.loadOfflineSession_(r,i)}),await this.allSessionsLoaded_.promise,(this.currentDrmInfo_&&this.currentDrmInfo_.keyIds||new Set([])).size>0&&this.areAllKeysUsable_())return this.allSessionsLoaded_.promise;this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.allSessionsLoaded_.promise.catch(()=>{})}let e=(this.currentDrmInfo_?this.currentDrmInfo_.initData:[])||[];for(let t of e)this.newInitData(t.initDataType,t.initData);return this.areAllSessionsLoaded_()&&this.allSessionsLoaded_.resolve(),this.allSessionsLoaded_.promise}updateCurrentDrmInfo(e){this.currentDrmInfo_&&(this.currentDrmInfo_.mediaTypes!==e.mediaTypes&&(this.currentDrmInfo_.mediaTypes=e.mediaTypes),de.isClearKeyWihRawKey(e)&&(this.currentDrmInfo_=this.createDrmInfoByInfos_(this.currentDrmInfo_.keySystem,[this.currentDrmInfo_,e])))}newInitData(e,t){if(t.length){try{t=this.config_.initDataTransform(t,e,this.currentDrmInfo_)}catch(i){let r=i;i instanceof h||(r=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.INIT_DATA_TRANSFORM_ERROR,i)),this.onError_(r);return}if(this.config_.ignoreDuplicateInitData){let i=this.activeSessions_.values();for(let s of i)if(D.equal(t,s.initData)){p.debug("Ignoring duplicate init data.");return}let r=!1;if(this.storedPersistentSessions_.forEach((s,n)=>{!r&&D.equal(t,s.initData)&&(r=!0)}),r){p.debug("Ignoring duplicate init data.");return}}this.hasInitData_=!0,this.activeSessions_.size>0&&this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.allSessionsLoaded_.promise.catch(()=>{})),this.createSession(e,t,this.currentDrmInfo_.sessionType)}}initialized(){return this.initialized_}getSessionIds(){let e=this.activeSessions_.keys(),t=Qi.map(e,i=>i.sessionId);return Array.from(t)}getActiveSessionsMetadata(){let e=this.activeSessions_.keys(),t=Qi.map(e,i=>{let r=this.activeSessions_.get(i);return{sessionId:i.sessionId,sessionType:r.type,initData:r.initData,initDataType:r.initDataType}});return Array.from(t)}renewLicense(e){this.activeSessions_.forEach((t,i)=>{(e==null||i.sessionId==e)&&this.triggerRenewal_(i)})}async retryLicensing(e,t=.1){this.destroyer_.ensureNotDestroyed(),p.info("Retrying licensing for session",e.sessionId);let i=null,r=null;if(this.activeSessions_.forEach((a,o)=>{o.sessionId===e.sessionId&&(i=o,r=a)}),!i||!r)return p.warning("Session not found for retry:",e.sessionId),!1;if(!this.currentDrmInfo_)return p.warning("No DRM info available for retry"),!1;if(!r.initData||!r.initDataType)return p.error("Missing initData or initDataType for session retry"),!1;let s=r.initData,n=r.initDataType;t>0&&await it.delay(t);try{this.activeSessions_.delete(i),await this.closeSession_(i);let a=this.createSession(n,s,this.currentDrmInfo_.sessionType,!1);if(!a)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to create new session for license retry");return p.info("Successfully created new session for retry:",a.sessionId),!0}catch(a){return p.error("Failed to retry licensing:",a),!1}}getExpiration(){let e=1/0,t=this.activeSessions_.keys();for(let i of t)isNaN(i.expiration)||(e=Math.min(e,i.expiration));return e}getLicenseTime(){return this.licenseTimeSeconds_?this.licenseTimeSeconds_:NaN}getDrmInfo(){return this.currentDrmInfo_}getMediaKeys(){return this.mediaKeys_}getKeyStatuses(){return ei.asObject(this.announcedKeyStatusByKeyId_)}async queryMediaKeys_(e){let t=new Map,i=this.getKeySystemAccessFromVariants_(e,t);if(!i)throw navigator.requestMediaKeySystemAccess?new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE):new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.MISSING_EME_SUPPORT);this.destroyer_.ensureNotDestroyed();try{let r=i.getConfiguration();p.v2("Got MediaKeySystemAccess with configuration",r);let s=this.config_.keySystemsMapping[i.keySystem]||i.keySystem;if(this.currentDrmInfo_=this.createDrmInfoByInfos_(s,t.get(s)),!this.currentDrmInfo_.licenseServerUri)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.NO_LICENSE_SERVER_GIVEN,this.currentDrmInfo_.keySystem);let n=await i.createMediaKeys();if(this.destroyer_.ensureNotDestroyed(),p.info("Created MediaKeys object for key system",this.currentDrmInfo_.keySystem),this.mediaKeys_=n,this.config_.minHdcpVersion!=""&&"getStatusForPolicy"in this.mediaKeys_)try{if(await this.mediaKeys_.getStatusForPolicy({minHdcpVersion:this.config_.minHdcpVersion})!="usable")throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.MIN_HDCP_VERSION_NOT_MATCH);this.destroyer_.ensureNotDestroyed()}catch(a){throw a instanceof h?a:new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.ERROR_CHECKING_HDCP_VERSION,a.message)}this.initialized_=!0,this.expirationTimer_.tickEvery(this.config_.updateExpirationTime),await this.setServerCertificate(),this.destroyer_.ensureNotDestroyed()}catch(r){throw this.destroyer_.ensureNotDestroyed(r),this.currentDrmInfo_=null,r instanceof h?r:new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_CDM,r.message)}}getKeySystemAccessFromVariants_(e,t){for(let r of e){let s=this.getVariantDrmInfos_(r);for(let n of s)t.getOrInsertComputed(n.keySystem,()=>[]).push(n)}if(t.size==1&&t.has(""))throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.NO_RECOGNIZED_KEY_SYSTEMS);let i=this.config_.preferredKeySystems;if(!i.length){let r=ei.asMap(this.config_.servers);r.size==1&&(i=Array.from(r.keys()))}for(let r of i)for(let s of e){let n=s.decodingInfos.find(a=>a.supported&&a.keySystemAccess!=null&&a.keySystemAccess.keySystem==r);if(n)return n.keySystemAccess}for(let r of[!0,!1])for(let s of e)for(let n of s.decodingInfos){if(!n.supported||!n.keySystemAccess)continue;let a=n.keySystemAccess.keySystem;if(i.includes(a))continue;let o=t.get(a);!o&&this.config_.keySystemsMapping[a]&&(o=t.get(this.config_.keySystemsMapping[a]));for(let c of o)if(!!c.licenseServerUri==r)return n.keySystemAccess}return null}checkSessionsLoaded_(){this.areAllSessionsLoaded_()&&this.allSessionsLoaded_.resolve()}setLoadSessionTimeoutTimer_(e){new ae(()=>{e.loaded=!0,this.checkSessionsLoaded_()}).tickAfter(yi.SESSION_LOAD_TIMEOUT_)}async loadOfflineSession_(e,t){let i,r="persistent-license";try{p.v1("Attempting to load an offline session",e),i=this.mediaKeys_.createSession(r)}catch(n){let a=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,n.message);return this.onError_(a),Promise.reject(a)}this.eventManager_.listen(i,"message",(n=>this.onSessionMessage_(n))),this.eventManager_.listen(i,"keystatuseschange",n=>this.onKeyStatusesChange_(n));let s={initData:t.initData,initDataType:t.initDataType,loaded:!1,oldExpiration:1/0,updatePromise:null,type:r,lastRenewalTime:0,isRenewal:!1};this.activeSessions_.set(i,s);try{let n=await i.load(e);if(this.destroyer_.ensureNotDestroyed(),p.v2("Loaded offline session",e,n),!n){this.activeSessions_.delete(i);let a=this.config_.persistentSessionOnlinePlayback?h.Severity.RECOVERABLE:h.Severity.CRITICAL;this.onError_(new h(a,h.Category.DRM,h.Code.OFFLINE_SESSION_REMOVED)),s.loaded=!0}return this.setLoadSessionTimeoutTimer_(s),this.checkSessionsLoaded_(),i}catch(n){this.destroyer_.ensureNotDestroyed(n),this.activeSessions_.delete(i);let a=this.config_.persistentSessionOnlinePlayback?h.Severity.RECOVERABLE:h.Severity.CRITICAL;this.onError_(new h(a,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,n.message)),s.loaded=!0,this.checkSessionsLoaded_()}return Promise.resolve()}createSession(e,t,i,r=!1){v.assert(this.mediaKeys_,"mediaKeys_ should be valid when creating temporary session.");let s;try{p.info("Creating new",i,"session"),s=this.mediaKeys_.createSession(i)}catch(a){return this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,a.message)),null}this.eventManager_.listen(s,"message",(a=>this.onSessionMessage_(a))),this.eventManager_.listen(s,"keystatuseschange",a=>this.onKeyStatusesChange_(a));let n={initData:t,initDataType:e,loaded:!1,oldExpiration:1/0,updatePromise:null,type:i,lastRenewalTime:0,isRenewal:r};if(this.activeSessions_.set(s,n),s.closed.then(a=>{if(this.destroyer_.destroyed())return;let o=this.activeSessions_.get(s);o&&this.onSessionClosed_(s,o,a||"unknown")}).catch(a=>{p.warning("session.closed rejected:",a)}),this.config_.logLicenseExchange){let a=ne.toBase64(t);p.info("EME init data: type=",e,"data=",a)}return s.generateRequest(e,t).catch(a=>{if(this.destroyer_.destroyed())return;v.assert(a instanceof Error,"Wrong error type!"),this.activeSessions_.delete(s);let o=a.errorCode,c;o&&o.systemCode&&(c=o.systemCode,c<0&&(c+=Math.pow(2,32)),c="0x"+c.toString(16)),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_GENERATE_LICENSE_REQUEST,a.message,a,c))}),s}onSessionMessage_(e){this.delayLicenseRequest_()?this.mediaKeyMessageEvents_.push(e):this.sendLicenseRequest_(e)}delayLicenseRequest_(){return this.video_?this.config_.delayLicenseRequestUntilPlayed&&this.video_.paused&&!this.initialRequestsSent_:!this.initializedForStorage_&&this.config_.delayLicenseRequestUntilPlayed}async waitForActiveRequests(){this.hasInitData_&&!this.delayLicenseRequest_()&&(await this.allSessionsLoaded_.promise,await Promise.all(this.activeRequests_.map(e=>e.promise)))}async sendLicenseRequest_(e){let t=e.target;if(p.v1("Sending license request for session",t.sessionId,"of type",e.messageType),this.config_.logLicenseExchange){let m=ne.toBase64(e.message);p.info("EME license request",m)}let i=this.activeSessions_.get(t),r=this.currentDrmInfo_.licenseServerUri,s=this.config_.advanced[this.currentDrmInfo_.keySystem];e.messageType=="individualization-request"&&s&&s.individualizationServer&&(r=s.individualizationServer);let n=K.RequestType.LICENSE,a=K.makeRequest([r],this.config_.retryParameters);if(a.body=e.message,a.method="POST",a.licenseRequestType=e.messageType,a.sessionId=t.sessionId,a.drmInfo=this.currentDrmInfo_,i&&(a.initData=i.initData,a.initDataType=i.initDataType,i.isRenewal&&(a.licenseRequestType="license-renewal")),s&&s.headers)for(let m in s.headers)a.headers[m]=s.headers[m];let o=de.isClearKeySystem(this.currentDrmInfo_.keySystem);o&&this.fixClearKeyRequest_(a,this.currentDrmInfo_),de.isPlayReadyKeySystem(this.currentDrmInfo_.keySystem)&&this.unpackPlayReadyRequest_(a);let c=Date.now(),d;try{let m=this.playerInterface_.netEngine.request(n,a,{isPreload:this.isPreload_()});this.activeRequests_.push(m),d=await m.promise,ye.remove(this.activeRequests_,m)}catch(m){if(this.destroyer_.destroyed())return;v.assert(m instanceof h,"Wrong NetworkingEngine error type!");let f={sessionId:t.sessionId,sessionType:i.type,initData:i.initData,initDataType:i.initDataType},g=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.LICENSE_REQUEST_FAILED,m,f);if(this.config_.failureCallback)try{this.config_.failureCallback(g)}catch(_){p.error("Error in failureCallback:",_)}if(g.handled){p.info("License request failure handled by failureCallback"),i&&i.updatePromise&&i.updatePromise.reject(g);return}this.activeSessions_.size==1?(this.onError_(g),i&&i.updatePromise&&i.updatePromise.reject(g)):(i&&i.updatePromise&&i.updatePromise.reject(g),this.activeSessions_.delete(t),this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.keyStatusTimer_.tickAfter(.1)));return}if(this.destroyer_.destroyed())return;if(this.licenseTimeSeconds_+=(Date.now()-c)/1e3,this.config_.logLicenseExchange){let m=ne.toBase64(d.data);p.info("EME license response",m)}o&&this.processClearKeyResponse_(d);try{p.v1("Updating session",t.sessionId),await t.update(d.data),i&&(i.lastRenewalTime=Date.now()/1e3)}catch(m){let f=m&&m.message||String(m),g=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.LICENSE_RESPONSE_REJECTED,f);this.onError_(g),i&&i.updatePromise&&i.updatePromise.reject(g);return}if(this.destroyer_.destroyed())return;let u=new U("drmsessionupdate");this.playerInterface_.onEvent(u),i&&(i.updatePromise&&i.updatePromise.resolve(),this.setLoadSessionTimeoutTimer_(i))}processClearKeyResponse_(e){let t=q.fromUTF8(e.data);try{let i=JSON.parse(t),r=new Map(i.keys.map(({kid:s,k:n})=>[de.normalizeClearKeyValue(s),de.normalizeClearKeyValue(n)]));if(!this.currentDrmInfo_.clearKeys)this.currentDrmInfo_.clearKeys=r;else for(let[s,n]of r)this.currentDrmInfo_.clearKeys.set(s,n)}catch(i){}}unpackPlayReadyRequest_(e){let t=q.fromUTF16(e.body,!0,!0);if(!t.includes("PlayReadyKeyMessage")){p.debug("PlayReady request is already unwrapped."),e.headers["Content-Type"]="text/xml; charset=utf-8";return}p.debug("Unwrapping PlayReady request.");let i=I.parseXmlString(t,"PlayReadyKeyMessage");v.assert(i,"Failed to parse PlayReady XML!");let r=I.getElementsByTagName(i,"HttpHeader");for(let n of r){let a=I.getElementsByTagName(n,"name")[0],o=I.getElementsByTagName(n,"value")[0];v.assert(a&&o,"Malformed PlayReady headers!"),e.headers[I.getTextContents(a)]=I.getTextContents(o)}let s=I.getElementsByTagName(i,"Challenge")[0];v.assert(s,"Malformed PlayReady challenge!"),v.assert(s.attributes.encoding=="base64encoded","Unexpected PlayReady challenge encoding!"),e.body=ne.fromBase64(I.getTextContents(s))}fixClearKeyRequest_(e,t){try{let i=q.fromBytesAutoDetect(e.body);if(i){let r=JSON.parse(i);r.type||(r.type=t.sessionType,e.body=q.toUTF8(JSON.stringify(r)))}}catch(i){p.info("Error unpacking ClearKey license",i)}}onKeyStatusesChange_(e){let t=e.target;p.v2("Key status changed for session",t.sessionId);let i=this.activeSessions_.get(t),r=t.keyStatuses,s=!1;r.forEach((a,o)=>{if(typeof o=="string"){let u=o;o=a,a=u}let c=j.getDevice();if(de.isPlayReadyKeySystem(this.currentDrmInfo_.keySystem)&&o.byteLength==16&&c.returnLittleEndianUsingPlayReady()){let u=D.toDataView(o),m=u.getUint32(0,!0),f=u.getUint16(4,!0),g=u.getUint16(6,!0);u.setUint32(0,m,!1),u.setUint16(4,f,!1),u.setUint16(6,g,!1)}i&&a!="status-pending"&&(i.loaded=!0),i||v.assert(a!="usable","Usable keys found in closed session"),a=="expired"&&(s=!0);let d=ne.toHex(o).slice(0,32);this.keyStatusByKeyId_.set(d,a)});let n=t.expiration-Date.now();(n<0||s&&n<1e3)&&i&&!i.updatePromise&&(p.debug("Session has expired",t.sessionId),this.activeSessions_.delete(t),this.closeSession_(t)),this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.keyStatusTimer_.tickAfter(yi.KEY_STATUS_BATCH_TIME))}processKeyStatusChanges_(){let e=this.keyStatusByKeyId_,t=this.announcedKeyStatusByKeyId_;t.clear(),e.forEach((s,n)=>t.set(n,s));let i=Array.from(t.values());i.length&&i.every(s=>s=="expired")&&this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.EXPIRED)),this.playerInterface_.onKeyStatus(ei.asObject(t))}static async probeSupport(){let e=["org.w3.clearkey","com.widevine.alpha","com.microsoft.playready","com.microsoft.playready.hardware","com.microsoft.playready.recommendation","com.microsoft.playready.recommendation.3000","com.microsoft.playready.recommendation.3000.clearlead","com.chromecast.playready","com.apple.fps.1_0","com.apple.fps","com.huawei.wiseplay"];if(!de.isBrowserSupported()){let _={};for(let T of e)_[T]=null;return _}let t=["1.0","1.1","1.2","1.3","1.4","2.0","2.1","2.2","2.3"],i=["SW_SECURE_CRYPTO","SW_SECURE_DECODE","HW_SECURE_CRYPTO","HW_SECURE_DECODE","HW_SECURE_ALL"],s={"com.widevine.alpha":i,"com.widevine.alpha.experiment":i,"com.microsoft.playready.recommendation":["150","2000","3000"]},o={videoCapabilities:[{contentType:'video/mp4; codecs="avc1.42E01E"'},{contentType:'video/webm; codecs="vp8"'}],audioCapabilities:[{contentType:'audio/mp4; codecs="mp4a.40.2"'},{contentType:'audio/webm; codecs="opus"'}],initDataTypes:["cenc","sinf","skd","keyids"]},c=[null,"cenc","cbcs"],d=new Map,u=j.getDevice(),m=async(_,T,S)=>{let b;try{if(u.createMediaKeysWhenCheckingSupport())b=await T.createMediaKeys();else throw new Error("Suppressing Firefox Windows DRM in testing!")}catch(V){return}let E=T.getConfiguration().sessionTypes,C=E?E.includes("persistent-license"):!1;u.misreportsSupportForPersistentLicenses()&&(C=!1);let A=T.getConfiguration().videoCapabilities,w=T.getConfiguration().audioCapabilities,M={persistentState:C,encryptionSchemes:[],videoRobustnessLevels:[],audioRobustnessLevels:[],minHdcpVersions:[]};d.get(_)?M=d.get(_):d.set(_,M);let x=A[0].encryptionScheme;x&&!M.encryptionSchemes.includes(x)&&M.encryptionSchemes.push(x);let k=A[0].robustness;k&&!M.videoRobustnessLevels.includes(k)&&M.videoRobustnessLevels.push(k);let L=w[0].robustness;if(L&&!M.audioRobustnessLevels.includes(L)&&M.audioRobustnessLevels.push(L),S&&"getStatusForPolicy"in b)for(let V of t){if(M.minHdcpVersions.includes(V))continue;if(await b.getStatusForPolicy({minHdcpVersion:V})=="usable")M.minHdcpVersions.includes(V)||M.minHdcpVersions.push(V);else break}},f=async(_,T,S,b,E=!1)=>{try{let C=Oe.cloneObject(o);for(let L of C.videoCapabilities)L.encryptionScheme=T,L.robustness=S;for(let L of C.audioCapabilities)L.encryptionScheme=T,L.robustness=b;let A=Oe.cloneObject(C);A.persistentState="required",A.sessionTypes=["persistent-license"];let w=[A,C],M=5,x;j.getDevice().getDeviceType()==ie.DeviceType.MOBILE?x=await it.promiseWithTimeout(M,navigator.requestMediaKeySystemAccess(_,w)):x=await navigator.requestMediaKeySystemAccess(_,w),await m(_,x,E)}catch(C){}},g=[];for(let _ of e){d.set(_,null);let T=!0;for(let S of c)g.push(f(_,S,"","",T)),T=!1;for(let S of s[_]||[])g.push(f(_,null,S,"")),g.push(f(_,null,"",S))}return await Promise.all(g),ei.asObject(d)}onPlay_(){for(let e of this.mediaKeyMessageEvents_)this.sendLicenseRequest_(e);this.initialRequestsSent_=!0,this.mediaKeyMessageEvents_=[]}async closeSession_(e){let t=null;try{t=(await it.promiseWithTimeout(yi.CLOSE_TIMEOUT_,Promise.all([e.close().catch(()=>{}),e.closed])))[1]}catch(i){p.warning("Timeout waiting for session close")}t&&this.handleSessionCloseReason_(e,t)}processSessionCloseReason_(e,t){e==="internal-error"?(p.error("CDM internal error. Cannot create new sessions."),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"CDM reported internal error"))):e==="closed-by-application"?p.v1("Session closed by application"):e==="release-acknowledged"?p.v1("Session closed: license release acknowledged"):e==="resource-evicted"?p.warning("Session closed: resources evicted"):e==="hardware-context-reset"?t?(p.warning("Hardware context reset detected. Recreating session..."),this.recreateSessionAfterHardwareReset_(t)):p.warning("Hardware context reset detected during app close"):p.warning("Session closed with unknown reason:",e)}handleSessionCloseReason_(e,t){p.info("Session closed with reason",t,"sessionId",e.sessionId),t!=="unknown"&&this.processSessionCloseReason_(t)}onSessionClosed_(e,t,i){i!=="unknown"&&(p.info("CDM closed session with reason",i,"sessionId",e.sessionId),this.activeSessions_.delete(e),this.processSessionCloseReason_(i,t))}recreateSessionAfterHardwareReset_(e){if(p.info("Recreating session after hardware context reset","initDataType",e.initDataType),!e.initDataType||!e.initData){p.error("Cannot recreate session: missing initData or initDataType"),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Cannot recreate session after hardware reset: missing metadata"));return}try{this.createSession(e.initDataType,e.initData,e.type),p.info("Session successfully recreated after hardware reset")}catch(t){p.error("Failed to recreate session after hardware reset:",t),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to recreate session after hardware context reset: "+t.message))}}async closeOpenSessions_(){let e=Array.from(this.activeSessions_.entries());this.activeSessions_.clear(),await Promise.all(e.map(async([t,i])=>{try{!this.initializedForStorage_&&!this.storedPersistentSessions_.has(t.sessionId)&&i.type==="persistent-license"&&!this.config_.persistentSessionOnlinePlayback?(p.v1("Removing session",t.sessionId),await t.remove()):(p.v1("Closing session",t.sessionId,i),await this.closeSession_(t))}catch(r){p.error("Failed to close or remove the session",r)}}))}getVariantDrmInfos_(e){let t=e.video?e.video.drmInfos:[],i=e.audio?e.audio.drmInfos:[];return t.concat(i)}pollExpiration_(){let e=Date.now()/1e3;this.activeSessions_.forEach((t,i)=>{let r=t.oldExpiration,s=i.expiration;if(isNaN(s)&&(s=1/0),s!=r&&(this.playerInterface_.onExpirationUpdated(i.sessionId,s),t.oldExpiration=s),this.config_.renewalIntervalSec>0){let n=e-t.lastRenewalTime;t.lastRenewalTime>0&&n>=this.config_.renewalIntervalSec&&this.triggerRenewal_(i)}})}async triggerRenewal_(e){p.info("Triggering license renewal for session",e.sessionId);let t=this.activeSessions_.get(e);if(t&&(t.lastRenewalTime=Date.now()/1e3),!this.currentDrmInfo_)return;let i=this.currentDrmInfo_.keySystem,r=e,s={sessionId:e.sessionId,sessionType:this.currentDrmInfo_.sessionType,initData:t?t.initData:null,initDataType:t?t.initDataType:null};try{if(de.isFairPlayKeySystem(i)){let c=q.toUTF8("renew");await e.update(c)}else if(de.isPlayReadyKeySystem(i)&&t&&t.initData&&t.initDataType)r=await this.requestPlayReadyLicenseForRenewal_(e,t);else{p.alwaysWarn("Manual license renewal is not supported for "+i);return}}catch(c){p.error("Failed to renew license:",c);return}let n=this.activeSessions_.get(r),a={sessionId:r.sessionId,sessionType:this.currentDrmInfo_.sessionType,initData:n?n.initData:null,initDataType:n?n.initDataType:null},o=new U("licenserenewal",new Map().set("oldSessionMetadata",s).set("newSessionMetadata",a));this.playerInterface_.onEvent(o)}async requestPlayReadyLicenseForRenewal_(e,t){v.assert(t.initDataType,"initDataType must be defined"),v.assert(t.initData,"initData must be defined"),this.activeSessions_.delete(e),await this.closeSession_(e);let i=this.createSession(t.initDataType,t.initData,this.currentDrmInfo_.sessionType,!0);if(!i)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to create new session for renewal");return i}areAllSessionsLoaded_(){let e=this.activeSessions_.values();return Qi.every(e,t=>t.loaded)}areAllKeysUsable_(){let e=this.currentDrmInfo_&&this.currentDrmInfo_.keyIds||new Set([]);for(let t of e)if(this.keyStatusByKeyId_.get(t)!=="usable")return!1;return!0}static replaceDrmInfo_(e,t){let i=[];t.forEach((r,s)=>{i.push({keySystem:s,licenseServerUri:r,distinctiveIdentifierRequired:!1,persistentStateRequired:!1,audioRobustness:"",videoRobustness:"",serverCertificate:null,serverCertificateUri:"",initData:[],keyIds:new Set})});for(let r of e)r.video&&(r.video.drmInfos=i),r.audio&&(r.audio.drmInfos=i)}createDrmInfoByInfos_(e,t){let i=[],r=[],s=[],n=[],a=[],o=new Set,c=new Set;yi.processDrmInfos_(t,i,r,n,s,a,o,c),i.length>1&&p.warning("Multiple unique encryption schemes found! Only the first will be used."),n.length>1&&p.warning("Multiple unique server certificates found! Only the first will be used."),r.length>1&&p.warning("Multiple unique license server URIs found! Only the first will be used."),s.length>1&&p.warning("Multiple unique server certificate URIs found! Only the first will be used.");let d=this.usePersistentLicenses_?"persistent-license":"temporary",u={keySystem:e,encryptionScheme:i[0],licenseServerUri:r[0],distinctiveIdentifierRequired:t[0].distinctiveIdentifierRequired,persistentStateRequired:t[0].persistentStateRequired,sessionType:t[0].sessionType||d,audioRobustness:t[0].audioRobustness||"",videoRobustness:t[0].videoRobustness||"",serverCertificate:n[0],serverCertificateUri:s[0],initData:a,keyIds:o,mediaTypes:t[0].mediaTypes};c.size>0&&(u.keySystemUris=c);for(let m of t)m.distinctiveIdentifierRequired&&(u.distinctiveIdentifierRequired=m.distinctiveIdentifierRequired),m.persistentStateRequired&&(u.persistentStateRequired=m.persistentStateRequired);return u}static processDrmInfos_(e,t,i,r,s,n,a,o){let c=(m,f)=>m.keyId&&m.keyId==f.keyId?!0:m.initDataType==f.initDataType&&D.equal(m.initData,f.initData),d="data:application/json;base64,",u=[];for(let m of e){if(t.includes(m.encryptionScheme)||t.push(m.encryptionScheme),de.isClearKeySystem(m.keySystem)&&m.licenseServerUri.startsWith(d)?u.includes(m.licenseServerUri)||u.push(m.licenseServerUri):i.includes(m.licenseServerUri)||i.push(m.licenseServerUri),s.includes(m.serverCertificateUri)||s.push(m.serverCertificateUri),m.serverCertificate&&(r.some(g=>D.equal(g,m.serverCertificate))||r.push(m.serverCertificate)),m.initData)for(let f of m.initData)n.some(_=>c(_,f))||n.push(f);if(m.keyIds)for(let f of m.keyIds)a.add(f);if(m.keySystemUris&&o)for(let f of m.keySystemUris)o.add(f)}if(u.length==1)i.push(u[0]);else if(u.length>0){let m=[];for(let _ of u){let T=window.atob(_.split(d).pop()),S=JSON.parse(T);m.push(...S.keys)}let g=JSON.stringify({keys:m});i.push(d+window.btoa(g))}}static fillInDrmInfoDefaults_(e,t,i,r){let s=e.keySystem;if(!s||de.isClearKeySystem(s)&&e.licenseServerUri)return;if(t.size&&t.get(s)){let a=t.get(s);e.licenseServerUri=a}e.keyIds||(e.keyIds=new Set);let n=i.get(s);n&&(e.distinctiveIdentifierRequired||(e.distinctiveIdentifierRequired=n.distinctiveIdentifierRequired),e.persistentStateRequired||(e.persistentStateRequired=n.persistentStateRequired),e.serverCertificate||(e.serverCertificate=n.serverCertificate),n.sessionType&&(e.sessionType=n.sessionType),e.serverCertificateUri||(e.serverCertificateUri=n.serverCertificateUri)),r[s]&&(e.keySystem=r[s]),window.cast&&window.cast.__platform__&&s=="com.microsoft.playready"&&(e.keySystem="com.chromecast.playready")}parseInbandPssh(e,t){if(!this.config_.parseInbandPsshEnabled||this.manifestInitData_)return Promise.resolve();let i=R.ContentType;if(![i.AUDIO,i.VIDEO].includes(e))return Promise.resolve();let r=new ti(D.toUint8(t)),s=0;for(let o of r.data)s+=o.length;if(s==0)return Promise.resolve();let n=new Uint8Array(s),a=0;for(let o of r.data)n.set(o,a),a+=o.length;return this.newInitData("cenc",n),this.allSessionsLoaded_.promise}static configureClearKey(e,t){let i=ei.asMap(e);if(i.size==0)return;let r=R.createDrmInfoFromClearKeys(i);for(let s of t)s.video&&(s.video.drmInfos=[r]),s.audio&&(s.audio.drmInfos=[r])}};l(yi,"CLOSE_TIMEOUT_",1),l(yi,"SESSION_LOAD_TIMEOUT_",5),l(yi,"KEY_STATUS_BATCH_TIME",.5);var Bi=yi;/*! @license
210
210
  * Shaka Player
211
211
  * Copyright 2016 Google LLC
212
212
  * SPDX-License-Identifier: Apache-2.0
@@ -242,7 +242,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
242
242
  * Shaka Player
243
243
  * Copyright 2016 Google LLC
244
244
  * SPDX-License-Identifier: Apache-2.0
245
- */var Pe=class Pe{static correctEnca(e){let t=D.toUint8(e),i=t,r=16,s=null;return new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("stsd",F.sampleDescription).box("enca",n=>(s=n.reader.getDataView(),F.audioSampleEntry(n))).box("sinf",F.children).box("frma",n=>{n.parser.stop();let{codec:a}=pe.parseFRMA(n.reader);a==="ec-3"&&s&&s.getUint16(r)!==2&&s.setUint16(r,2)}).parse(t),i}static freeDvvcBox(e){let t=D.toUint8(e),i=null,r=-1;return new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("stsd",F.sampleDescription).box("hvc1",s=>(i=s.reader.getDataView(),r=s.start,F.visualSampleEntry(s))).box("dvvC",s=>{s.parser.stop();let n=s.start-r-4;i.setUint32(n,Pe.BOX_TYPE_FREE_)}).parse(t),t}static fakeEncryption(e,t,i,r){let s=D.toUint8(t),n=s,a=!1,o,c=[],d=T=>{c.push(T),F.children(T)},u=T=>{a=!0,T.parser.stop()},m=[],f=T=>{m.push({box:T,newType:Pe.BOX_TYPE_ENCV_})},g=T=>{m.push({box:T,newType:Pe.BOX_TYPE_ENCA_})};if(new F().boxes(F.SAMPLE_TABLE_PATH,d).fullBox("stsd",T=>{o=T,c.push(T),F.sampleDescription(T)}).boxes(["encv","enca"],u).boxes(F.AVC_HEVC_VVC_DV,f).boxes([...F.GENERIC_AUDIO_SAMPLE_ENTRIES,"mp4a"],g).parse(s),a)return p.debug("Init segment already indicates encryption."),s;if(m.length==0||!o)throw p.error("Failed to find boxes needed to fake encryption!"),p.v2("Failed init segment (hex):",ne.toHex(s)),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.CONTENT_TRANSFORMATION_FAILED,i);m.reverse();for(let T of m){let S=F.typeToString(T.newType);p.debug(`Inserting "${S}" box into init segment.`),n=Pe.insertEncryptionMetadata_(e,n,o,T.box,c,T.newType,r)}if(n=Pe.insertPsshBoxes_(e,n),j.getDevice().requiresClearAndEncryptedInitSegments(r)){let T=new Uint8Array(s.byteLength+n.byteLength);return T.set(n),T.set(s,n.byteLength),T}return n}static fakeMediaEncryption(e){let t=D.toUint8(e),i=[];new F().box("mdat",s=>{i.push(s)}).parse(t);let r=[];for(let s=0;s<i.length;s++){let n=i[s-1],a=i[s],o=n?n.start+n.size:0,c=a.start+a.size,d=t.subarray(o,c);r.push(Pe.fakeMediaEncryptionInChunk_(d))}return ne.concat(...r)}static fakeMediaEncryptionInChunk_(e){let i,r,s,n,a=[],o=u=>{a.push(u),F.children(u)},c=u=>{i=u,s=pe.parseTFHD(u.reader,u.flags)},d=u=>{r=u,n=pe.parseTRUN(u.reader,u.version,u.flags)};if(new F().boxes(F.FRAGMENT_PATH,o).fullBox("tfhd",c).fullBox("trun",d).parse(e),s&&s.sampleDescriptionIndex!==2){let u=i.start+F.headerSize(i)+4+(s.baseDataOffset!==null?8:0),m=D.toDataView(e);if(s.sampleDescriptionIndex!==null)m.setUint32(u,2);else{Pe.updateBoxSize_(e,i.start,i.size+4);let g=m.getUint32(i.start+8);if(m.setUint32(i.start+8,g|2),n&&n.dataOffset!==null){let b=n.dataOffset+4,E=r.start+F.headerSize(r)+4;m.setInt32(E,b)}let _=e.subarray(0,u),T=e.subarray(u);e=new Uint8Array(e.byteLength+4),e.set(_);let S=[];for(let b=3;b>=0;b--)S.push(2>>8*b&255);e.set(new Uint8Array(S),u),e.set(T,u+4);for(let b of a)Pe.updateBoxSize_(e,b.start,b.size+4)}}return e}static insertEncryptionMetadata_(e,t,i,r,s,n,a){let o=Pe.createEncryptionMetadata_(e,t,r,n),c=new Uint8Array(t.byteLength+o.byteLength),u=j.getDevice().insertEncryptionDataBeforeClear(a)?r.start:r.start+r.size,m=t.subarray(0,u),f=t.subarray(u);c.set(m),c.set(o,u),c.set(f,u+o.byteLength);for(let S of s)v.assert(S.start<u,"Ancestor MP4 box found in the wrong location! Modified init segment will not make sense!"),Pe.updateBoxSize_(c,S.start,S.size+o.byteLength);let g=D.toDataView(c,i.start),_=F.headerSize(i),T=g.getUint32(_);return g.setUint32(_,T+1),c}static createEncryptionMetadata_(e,t,i,r){let n=new xe().sinf(e,i.name),a=t.subarray(i.start,i.start+i.size),o=new Uint8Array(i.size+n.byteLength);return o.set(a,0),D.toDataView(o).setUint32(Pe.BOX_TYPE_OFFSET_,r),o.set(n,i.size),Pe.updateBoxSize_(o,0,o.byteLength),o}static insertPsshBoxes_(e,t){let i=new xe().psshs(e);if(i.byteLength===0)return t;let r=0,s=0;new F().box("moov",u=>{r=u.start,s=u.size,u.parser.stop()}).parse(t);let n=s+i.byteLength,a=r+s;Pe.updateBoxSize_(t,r,n);let o=new Uint8Array(t.byteLength+i.byteLength),c=t.subarray(0,a),d=t.subarray(a);return o.set(c),o.set(i,a),o.set(d,a+i.byteLength),o}static updateBoxSize_(e,t,i){let r=D.toDataView(e,t),s=r.getUint32(Pe.BOX_SIZE_OFFSET_);s==0||(s==1?(r.setUint32(Pe.BOX_SIZE_64_OFFSET_,i>>32),r.setUint32(Pe.BOX_SIZE_64_OFFSET_+4,i&4294967295)):r.setUint32(Pe.BOX_SIZE_OFFSET_,i))}static fakeEC3(e){let t=D.toUint8(e),i=[],r=s=>{i.push({start:s.start,size:s.size}),F.children(s)};return new F().boxes(F.SAMPLE_TABLE_PATH,r).box("stsd",s=>{i.push({start:s.start,size:s.size});let n=D.toDataView(t,s.start);for(let a=0;a<s.size-3;a++){let o=n.getUint32(a);o==Pe.BOX_TYPE_AC_3_?n.setUint32(a,Pe.BOX_TYPE_EC_3_):o==Pe.BOX_TYPE_DAC3_&&n.setUint32(a,Pe.BOX_TYPE_DEC3_)}}).parse(t),t}static fixBrokenIframes(e){let t=D.toUint8(e),i=[],r=[],s=[],n=[],a=!1;if(new F().box("moof",W=>{i.push(W),F.children(W)}).box("traf",W=>{r.push(W),F.children(W)}).fullBox("tfhd",W=>{s.push(W)}).fullBox("trun",W=>{n.push(W)}).boxes(["senc","saiz","saio"],()=>{a=!0}).parse(t,!1,!0),a||i.length!=1||r.length!=1||s.length!=1||n.length!=1)return t;let o=i[0],c=r[0],d=s[0],u=n[0];v.assert(d.flags!=null,"TFHD should have valid flags"),v.assert(u.flags!=null,"TRUN should have valid flags"),v.assert(u.version!=null,"TRUN should have a valid version");let m=u.flags,f=pe.parseTFHD(d.reader,d.flags),g=pe.parseTRUN(u.reader,u.version,u.flags);if(f.baseDataOffset!=null||!(m&1)||g.dataOffset==null)return t;let _=o.start+o.size,T=D.toDataView(t);if(_+8>t.byteLength||T.getUint32(_+Pe.BOX_TYPE_OFFSET_)!=Pe.BOX_TYPE_MDAT_)return t;let S=T.getUint32(_),b=8;if(S==1)return t;S==0&&(S=t.byteLength-_);let E=t.byteLength-(_+b),C=S-b;if(E>=C)return t;let A=0,w=0;for(let W of g.sampleData){let z=W.sampleSize!=null?W.sampleSize:f.defaultSampleSize;if(z==null)return t;if(A+z>E)break;A+=z,w++}if(w!=1||w>=g.sampleCount)return t;let M=(m&256)!=0,x=0;for(let W of g.sampleData){let z=M?W.sampleDuration:f.defaultSampleDuration;if(z==null)return t;x+=z}let k=F.headerSize(u),L=u.start+k+4;L+=4,m&4&&(L+=4);let V=0;m&256&&(V+=4),m&512&&(V+=4),m&1024&&(V+=4),m&2048&&(V+=4);let oe=(g.sampleCount-w)*V,le=L+w*V;if(le+oe!=_)return t;let H=t.slice(0,le),J=D.toDataView(H);if(J.setUint32(u.start+k,w),J.setInt32(u.start+k+4,g.dataOffset-oe),M)J.setUint32(L,x);else{let W=d.start+F.headerSize(d)+4;f.sampleDescriptionIndex!=null&&(W+=4),J.setUint32(W,x)}Pe.updateBoxSize_(H,u.start,u.size-oe),Pe.updateBoxSize_(H,c.start,c.size-oe),Pe.updateBoxSize_(H,o.start,o.size-oe);let Z=t.slice(_,_+b);Pe.updateBoxSize_(Z,0,b+A);let ce=t.subarray(_+b,_+b+A);return ne.concat(H,Z,ce)}};l(Pe,"BOX_SIZE_OFFSET_",0),l(Pe,"BOX_TYPE_OFFSET_",4),l(Pe,"BOX_SIZE_64_OFFSET_",8),l(Pe,"BOX_TYPE_MDAT_",1835295092),l(Pe,"BOX_TYPE_ENCV_",1701733238),l(Pe,"BOX_TYPE_ENCA_",1701733217),l(Pe,"BOX_TYPE_AC_3_",1633889587),l(Pe,"BOX_TYPE_DAC3_",1684103987),l(Pe,"BOX_TYPE_EC_3_",1700998451),l(Pe,"BOX_TYPE_FREE_",1718773093),l(Pe,"BOX_TYPE_DEC3_",1684366131);var Zi=Pe;/*! @license
245
+ */var Pe=class Pe{static correctEnca(e){let t=D.toUint8(e),i=t,r=16,s=null;return new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("stsd",F.sampleDescription).box("enca",n=>(s=n.reader.getDataView(),F.audioSampleEntry(n))).box("sinf",F.children).box("frma",n=>{n.parser.stop();let{codec:a}=pe.parseFRMA(n.reader);a==="ec-3"&&s&&s.getUint16(r)!==2&&s.setUint16(r,2)}).parse(t),i}static freeDvvcBox(e){let t=D.toUint8(e),i=null,r=-1;return new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("stsd",F.sampleDescription).boxes(["encv","hvc1"],s=>(i=s.reader.getDataView(),r=s.start,F.visualSampleEntry(s))).box("dvvC",s=>{s.parser.stop();let n=s.start-r-4;i.setUint32(n,Pe.BOX_TYPE_FREE_)}).parse(t),t}static fakeEncryption(e,t,i,r){let s=D.toUint8(t),n=s,a=!1,o,c=[],d=T=>{c.push(T),F.children(T)},u=T=>{a=!0,T.parser.stop()},m=[],f=T=>{m.push({box:T,newType:Pe.BOX_TYPE_ENCV_})},g=T=>{m.push({box:T,newType:Pe.BOX_TYPE_ENCA_})};if(new F().boxes(F.SAMPLE_TABLE_PATH,d).fullBox("stsd",T=>{o=T,c.push(T),F.sampleDescription(T)}).boxes(["encv","enca"],u).boxes(F.AVC_HEVC_VVC_DV,f).boxes([...F.GENERIC_AUDIO_SAMPLE_ENTRIES,"mp4a"],g).parse(s),a)return p.debug("Init segment already indicates encryption."),s;if(m.length==0||!o)throw p.error("Failed to find boxes needed to fake encryption!"),p.v2("Failed init segment (hex):",ne.toHex(s)),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.CONTENT_TRANSFORMATION_FAILED,i);m.reverse();for(let T of m){let S=F.typeToString(T.newType);p.debug(`Inserting "${S}" box into init segment.`),n=Pe.insertEncryptionMetadata_(e,n,o,T.box,c,T.newType,r)}if(n=Pe.insertPsshBoxes_(e,n),j.getDevice().requiresClearAndEncryptedInitSegments(r)){let T=new Uint8Array(s.byteLength+n.byteLength);return T.set(n),T.set(s,n.byteLength),T}return n}static fakeMediaEncryption(e){let t=D.toUint8(e),i=[];new F().box("mdat",s=>{i.push(s)}).parse(t);let r=[];for(let s=0;s<i.length;s++){let n=i[s-1],a=i[s],o=n?n.start+n.size:0,c=a.start+a.size,d=t.subarray(o,c);r.push(Pe.fakeMediaEncryptionInChunk_(d))}return ne.concat(...r)}static fakeMediaEncryptionInChunk_(e){let i,r,s,n,a=[],o=u=>{a.push(u),F.children(u)},c=u=>{i=u,s=pe.parseTFHD(u.reader,u.flags)},d=u=>{r=u,n=pe.parseTRUN(u.reader,u.version,u.flags)};if(new F().boxes(F.FRAGMENT_PATH,o).fullBox("tfhd",c).fullBox("trun",d).parse(e),s&&s.sampleDescriptionIndex!==2){let u=i.start+F.headerSize(i)+4+(s.baseDataOffset!==null?8:0),m=D.toDataView(e);if(s.sampleDescriptionIndex!==null)m.setUint32(u,2);else{Pe.updateBoxSize_(e,i.start,i.size+4);let g=m.getUint32(i.start+8);if(m.setUint32(i.start+8,g|2),n&&n.dataOffset!==null){let b=n.dataOffset+4,E=r.start+F.headerSize(r)+4;m.setInt32(E,b)}let _=e.subarray(0,u),T=e.subarray(u);e=new Uint8Array(e.byteLength+4),e.set(_);let S=[];for(let b=3;b>=0;b--)S.push(2>>8*b&255);e.set(new Uint8Array(S),u),e.set(T,u+4);for(let b of a)Pe.updateBoxSize_(e,b.start,b.size+4)}}return e}static insertEncryptionMetadata_(e,t,i,r,s,n,a){let o=Pe.createEncryptionMetadata_(e,t,r,n),c=new Uint8Array(t.byteLength+o.byteLength),u=j.getDevice().insertEncryptionDataBeforeClear(a)?r.start:r.start+r.size,m=t.subarray(0,u),f=t.subarray(u);c.set(m),c.set(o,u),c.set(f,u+o.byteLength);for(let S of s)v.assert(S.start<u,"Ancestor MP4 box found in the wrong location! Modified init segment will not make sense!"),Pe.updateBoxSize_(c,S.start,S.size+o.byteLength);let g=D.toDataView(c,i.start),_=F.headerSize(i),T=g.getUint32(_);return g.setUint32(_,T+1),c}static createEncryptionMetadata_(e,t,i,r){let n=new xe().sinf(e,i.name),a=t.subarray(i.start,i.start+i.size),o=new Uint8Array(i.size+n.byteLength);return o.set(a,0),D.toDataView(o).setUint32(Pe.BOX_TYPE_OFFSET_,r),o.set(n,i.size),Pe.updateBoxSize_(o,0,o.byteLength),o}static insertPsshBoxes_(e,t){let i=new xe().psshs(e);if(i.byteLength===0)return t;let r=0,s=0;new F().box("moov",u=>{r=u.start,s=u.size,u.parser.stop()}).parse(t);let n=s+i.byteLength,a=r+s;Pe.updateBoxSize_(t,r,n);let o=new Uint8Array(t.byteLength+i.byteLength),c=t.subarray(0,a),d=t.subarray(a);return o.set(c),o.set(i,a),o.set(d,a+i.byteLength),o}static updateBoxSize_(e,t,i){let r=D.toDataView(e,t),s=r.getUint32(Pe.BOX_SIZE_OFFSET_);s==0||(s==1?(r.setUint32(Pe.BOX_SIZE_64_OFFSET_,i>>32),r.setUint32(Pe.BOX_SIZE_64_OFFSET_+4,i&4294967295)):r.setUint32(Pe.BOX_SIZE_OFFSET_,i))}static fakeEC3(e){let t=D.toUint8(e),i=[],r=s=>{i.push({start:s.start,size:s.size}),F.children(s)};return new F().boxes(F.SAMPLE_TABLE_PATH,r).box("stsd",s=>{i.push({start:s.start,size:s.size});let n=D.toDataView(t,s.start);for(let a=0;a<s.size-3;a++){let o=n.getUint32(a);o==Pe.BOX_TYPE_AC_3_?n.setUint32(a,Pe.BOX_TYPE_EC_3_):o==Pe.BOX_TYPE_DAC3_&&n.setUint32(a,Pe.BOX_TYPE_DEC3_)}}).parse(t),t}static fixBrokenIframes(e){let t=D.toUint8(e),i=[],r=[],s=[],n=[],a=!1;if(new F().box("moof",W=>{i.push(W),F.children(W)}).box("traf",W=>{r.push(W),F.children(W)}).fullBox("tfhd",W=>{s.push(W)}).fullBox("trun",W=>{n.push(W)}).boxes(["senc","saiz","saio"],()=>{a=!0}).parse(t,!1,!0),a||i.length!=1||r.length!=1||s.length!=1||n.length!=1)return t;let o=i[0],c=r[0],d=s[0],u=n[0];v.assert(d.flags!=null,"TFHD should have valid flags"),v.assert(u.flags!=null,"TRUN should have valid flags"),v.assert(u.version!=null,"TRUN should have a valid version");let m=u.flags,f=pe.parseTFHD(d.reader,d.flags),g=pe.parseTRUN(u.reader,u.version,u.flags);if(f.baseDataOffset!=null||!(m&1)||g.dataOffset==null)return t;let _=o.start+o.size,T=D.toDataView(t);if(_+8>t.byteLength||T.getUint32(_+Pe.BOX_TYPE_OFFSET_)!=Pe.BOX_TYPE_MDAT_)return t;let S=T.getUint32(_),b=8;if(S==1)return t;S==0&&(S=t.byteLength-_);let E=t.byteLength-(_+b),C=S-b;if(E>=C)return t;let A=0,w=0;for(let W of g.sampleData){let z=W.sampleSize!=null?W.sampleSize:f.defaultSampleSize;if(z==null)return t;if(A+z>E)break;A+=z,w++}if(w!=1||w>=g.sampleCount)return t;let M=(m&256)!=0,x=0;for(let W of g.sampleData){let z=M?W.sampleDuration:f.defaultSampleDuration;if(z==null)return t;x+=z}let k=F.headerSize(u),L=u.start+k+4;L+=4,m&4&&(L+=4);let V=0;m&256&&(V+=4),m&512&&(V+=4),m&1024&&(V+=4),m&2048&&(V+=4);let oe=(g.sampleCount-w)*V,le=L+w*V;if(le+oe!=_)return t;let H=t.slice(0,le),J=D.toDataView(H);if(J.setUint32(u.start+k,w),J.setInt32(u.start+k+4,g.dataOffset-oe),M)J.setUint32(L,x);else{let W=d.start+F.headerSize(d)+4;f.sampleDescriptionIndex!=null&&(W+=4),J.setUint32(W,x)}Pe.updateBoxSize_(H,u.start,u.size-oe),Pe.updateBoxSize_(H,c.start,c.size-oe),Pe.updateBoxSize_(H,o.start,o.size-oe);let Z=t.slice(_,_+b);Pe.updateBoxSize_(Z,0,b+A);let ce=t.subarray(_+b,_+b+A);return ne.concat(H,Z,ce)}};l(Pe,"BOX_SIZE_OFFSET_",0),l(Pe,"BOX_TYPE_OFFSET_",4),l(Pe,"BOX_SIZE_64_OFFSET_",8),l(Pe,"BOX_TYPE_MDAT_",1835295092),l(Pe,"BOX_TYPE_ENCV_",1701733238),l(Pe,"BOX_TYPE_ENCA_",1701733217),l(Pe,"BOX_TYPE_AC_3_",1633889587),l(Pe,"BOX_TYPE_DAC3_",1684103987),l(Pe,"BOX_TYPE_EC_3_",1700998451),l(Pe,"BOX_TYPE_FREE_",1718773093),l(Pe,"BOX_TYPE_DEC3_",1684366131);var Zi=Pe;/*! @license
246
246
  * Shaka Player
247
247
  * Copyright 2016 Google LLC
248
248
  * SPDX-License-Identifier: Apache-2.0
@@ -258,7 +258,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
258
258
  * Shaka Player
259
259
  * Copyright 2016 Google LLC
260
260
  * SPDX-License-Identifier: Apache-2.0
261
- */var ke=class ke{static isHeader_(e,t){return t+10<=e.length&&e[t]===73&&e[t+1]===68&&e[t+2]===51&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128}static isFooter_(e,t){return t+10<=e.length&&e[t]===51&&e[t+1]===68&&e[t+2]===73&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128}static readSize_(e,t){let i=0;return i=(e[t]&127)<<21,i|=(e[t+1]&127)<<14,i|=(e[t+2]&127)<<7,i|=e[t+3]&127,i}static readSizeBE_(e,t){let i=0;return i=e[t]<<24,i|=e[t+1]<<16,i|=e[t+2]<<8,i|=e[t+3],i>>>0}static decodeString_(e,t){switch(t){case ke.LATIN1_encoding:return Array.from(e).map(i=>String.fromCharCode(i)).join("");case ke.UTF16BOM_encoding:return q.fromBytesAutoDetect(e);case ke.UTF16BE_encoding:return q.fromUTF16(e,!1);case ke.UTF8_encoding:return q.fromUTF8(e);default:return""}}static nullTermSize_(e){return e===ke.UTF16BOM_encoding||e===ke.UTF16BE_encoding?2:1}static findNull_(e,t,i=0){if(t===ke.UTF16BOM_encoding||t===ke.UTF16BE_encoding){for(let r=i;r+1<e.length;r+=2)if(e[r]===0&&e[r+1]===0)return r;return-1}return e.indexOf(0,i)}static getFrameData_(e,t){let i=String.fromCharCode(e[0],e[1],e[2],e[3]),r=t>=4?ke.readSize_(e,4):ke.readSizeBE_(e,4),s=10;return{type:i,size:r,data:e.subarray(s,s+r)}}static decodeFrame_(e){let t={key:e.type,description:"",data:"",mimeType:null,pictureType:null};if(e.type==="APIC"){if(e.size<2)return null;let i=e.data[0],r=e.data.subarray(1).indexOf(0);if(r===-1)return null;let s=q.fromUTF8(D.toUint8(e.data,1,r)),n=e.data[2+r],a=3+r,o=ke.findNull_(e.data,i,a);if(o===-1)return null;let c=ke.decodeString_(e.data.subarray(a,o),i),d=ke.nullTermSize_(i),u=o+d,m;return s==="-->"?m=q.fromUTF8(e.data.subarray(u)):m=D.toArrayBuffer(e.data.subarray(u)),t.mimeType=s,t.pictureType=n,t.description=c,t.data=m,t}else if(e.type==="COMM"){if(e.size<5)return null;let i=e.data[0],r=q.fromUTF8(e.data.subarray(1,4)).replace(/\0/g,""),s=4,n=ke.findNull_(e.data,i,s);if(n===-1)return null;let a=ke.decodeString_(e.data.subarray(s,n),i),o=ke.nullTermSize_(i),c=ke.decodeString_(e.data.subarray(n+o),i).replace(/\0*$/,"");return t.description=a||r,t.data=c,t}else if(e.type==="TXXX"){if(e.size<2)return null;let i=e.data[0],r=ke.findNull_(e.data,i,1);if(r===-1)return null;let s=ke.decodeString_(e.data.subarray(1,r),i),n=ke.nullTermSize_(i),a=ke.decodeString_(e.data.subarray(r+n),i).replace(/^\ufeff/,"").replace(/\0*$/,"");return t.description=s,t.data=a,t}else if(e.type==="WXXX"){if(e.size<2)return null;let i=e.data[0],r=ke.findNull_(e.data,i,1);if(r===-1)return null;let s=ke.decodeString_(e.data.subarray(1,r),i),n=ke.nullTermSize_(i),a=q.fromUTF8(e.data.subarray(r+n)).replace(/\0*$/,"");return t.description=s,t.data=a,t}else if(e.type==="PRIV"){if(e.size<2)return null;let i=e.data.indexOf(0);if(i===-1)return null;let r=q.fromUTF8(D.toUint8(e.data,0,i));if(t.description=r,r=="com.apple.streaming.transportStreamTimestamp"){let s=e.data.subarray(r.length+1),n=s[3]&1,a=(s[4]<<23)+(s[5]<<15)+(s[6]<<7)+s[7];a/=45,n&&(a+=4772185884e-2),t.data=a}else{let s=D.toArrayBuffer(e.data.subarray(r.length+1));t.data=s}return t}else if(e.type==="UFID"){let i=e.data.indexOf(0);if(i===-1)return null;let r=q.fromUTF8(D.toUint8(e.data,0,i));return t.description=r,t.data=D.toArrayBuffer(e.data.subarray(i+1)),t}else if(e.type[0]==="T"){if(e.size<2)return null;let i=e.data[0],s=ke.decodeString_(e.data.subarray(1),i).replace(/\0+$/,"").split("\0").map(n=>n.replace(/^\ufeff/,"")).filter(n=>n.length>0).join(" / ");return t.data=s,t}else if(e.type[0]==="W"){let i=q.fromUTF8(e.data).replace(/\0*$/,"");return t.data=i,t}else if(e.data)return p.warning("Unrecognized ID3 frame type:",e.type),t.data=D.toArrayBuffer(e.data),t;return null}static getID3Frames(e){let t=0,i=[];for(;ke.isHeader_(e,t);){let r=e[t+3],s=ke.readSize_(e,t+6);e[t+5]>>6&1&&(t+=10),t+=10;let n=t+s;for(;t+10<n&&e[t]!==0;){let a=ke.getFrameData_(e.subarray(t),r),o=ke.decodeFrame_(a);o&&i.push(o),t+=a.size+10}ke.isFooter_(e,t)&&(t+=10)}return i}static getID3Data(e,t=0){let i=t,r=0;for(;ke.isHeader_(e,t);){e[t+5]>>6&1&&(r+=10),r+=10;let s=ke.readSize_(e,t+6);r+=s,ke.isFooter_(e,t+10)&&(r+=10),t+=r}return r>0?e.subarray(i,i+r):new Uint8Array([])}parse(e){return ke.getID3Frames(e)}};l(ke,"LATIN1_encoding",0),l(ke,"UTF16BOM_encoding",1),l(ke,"UTF16BE_encoding",2),l(ke,"UTF8_encoding",3);var It=ke;for(let y of N.RAW_FORMATS)kt.registerParserByMime(y,()=>new It);/*! @license
261
+ */var ke=class ke{static isHeader_(e,t){return t+10<=e.length&&e[t]===73&&e[t+1]===68&&e[t+2]===51&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128}static isFooter_(e,t){return t+10<=e.length&&e[t]===51&&e[t+1]===68&&e[t+2]===73&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128}static readSize_(e,t){let i=0;return i=(e[t]&127)<<21,i|=(e[t+1]&127)<<14,i|=(e[t+2]&127)<<7,i|=e[t+3]&127,i}static readSizeBE_(e,t){let i=0;return i=e[t]<<24,i|=e[t+1]<<16,i|=e[t+2]<<8,i|=e[t+3],i>>>0}static decodeString_(e,t){switch(t){case ke.LATIN1_encoding:return Array.from(e).map(i=>String.fromCharCode(i)).join("");case ke.UTF16BOM_encoding:return q.fromBytesAutoDetect(e);case ke.UTF16BE_encoding:return q.fromUTF16(e,!1);case ke.UTF8_encoding:return q.fromUTF8(e);default:return""}}static nullTermSize_(e){return e===ke.UTF16BOM_encoding||e===ke.UTF16BE_encoding?2:1}static findNull_(e,t,i=0){if(t===ke.UTF16BOM_encoding||t===ke.UTF16BE_encoding){for(let r=i;r+1<e.length;r+=2)if(e[r]===0&&e[r+1]===0)return r;return-1}return e.indexOf(0,i)}static getFrameData_(e,t){let i=String.fromCharCode(e[0],e[1],e[2],e[3]),r=t>=4?ke.readSize_(e,4):ke.readSizeBE_(e,4),s=10;return{type:i,size:r,data:e.subarray(s,s+r)}}static decodeFrame_(e){let t={key:e.type,description:"",data:"",mimeType:null,pictureType:null};if(e.type==="APIC"){if(e.size<2)return null;let i=e.data[0],r=e.data.subarray(1).indexOf(0);if(r===-1)return null;let s=q.fromUTF8(D.toUint8(e.data,1,r)),n=e.data[2+r],a=3+r,o=ke.findNull_(e.data,i,a);if(o===-1)return null;let c=ke.decodeString_(e.data.subarray(a,o),i),d=ke.nullTermSize_(i),u=o+d,m;return s==="-->"?m=q.fromUTF8(e.data.subarray(u)):m=D.toArrayBuffer(e.data.subarray(u)),t.mimeType=s,t.pictureType=n,t.description=c,t.data=m,t}else if(e.type==="COMM"){if(e.size<5)return null;let i=e.data[0],r=q.fromUTF8(e.data.subarray(1,4)).replace(/\0/g,""),s=4,n=ke.findNull_(e.data,i,s);if(n===-1)return null;let a=ke.decodeString_(e.data.subarray(s,n),i),o=ke.nullTermSize_(i),c=ke.decodeString_(e.data.subarray(n+o),i).replace(/\0*$/,"");return t.description=a||r,t.data=c,t}else if(e.type==="TXXX"){if(e.size<2)return null;let i=e.data[0],r=ke.findNull_(e.data,i,1);if(r===-1)return null;let s=ke.decodeString_(e.data.subarray(1,r),i),n=ke.nullTermSize_(i),a=ke.decodeString_(e.data.subarray(r+n),i).replace(/^\ufeff/,"").replace(/\0*$/,"");return t.description=s,t.data=a,t}else if(e.type==="WXXX"){if(e.size<2)return null;let i=e.data[0],r=ke.findNull_(e.data,i,1);if(r===-1)return null;let s=ke.decodeString_(e.data.subarray(1,r),i),n=ke.nullTermSize_(i),a=q.fromUTF8(e.data.subarray(r+n)).replace(/\0*$/,"");return t.description=s,t.data=a,t}else if(e.type==="PRIV"){if(e.size<2)return null;let i=e.data.indexOf(0);if(i===-1)return null;let r=q.fromUTF8(D.toUint8(e.data,0,i));if(t.description=r,r=="com.apple.streaming.transportStreamTimestamp"){let s=e.data.subarray(r.length+1),n=s[3]&1,a=(s[4]<<23)+(s[5]<<15)+(s[6]<<7)+s[7];a/=45,n&&(a+=4772185884e-2),t.data=a}else{let s=D.toArrayBuffer(e.data.subarray(r.length+1));t.data=s}return t}else if(e.type==="UFID"){let i=e.data.indexOf(0);if(i===-1)return null;let r=q.fromUTF8(D.toUint8(e.data,0,i));return t.description=r,t.data=D.toArrayBuffer(e.data.subarray(i+1)),t}else if(e.type[0]==="T"){if(e.size<2)return null;let i=e.data[0],s=ke.decodeString_(e.data.subarray(1),i).replace(/\0+$/,"").split("\0").map(n=>n.replace(/^\ufeff/,"")).filter(n=>n.length>0).join(" / ");return t.data=s,t}else if(e.type[0]==="W"){let i=q.fromUTF8(e.data).replace(/\0*$/,"");return t.data=i,t}else if(e.data)return p.warning("Unrecognized ID3 frame type:",e.type),t.data=D.toArrayBuffer(e.data),t;return null}static getID3Frames(e){let t=0,i=[];for(;ke.isHeader_(e,t);){let r=e[t+3],s=ke.readSize_(e,t+6);e[t+5]>>6&1&&(t+=10),t+=10;let n=t+s;for(;t+10<n&&e[t]!==0;){let a=ke.getFrameData_(e.subarray(t),r),o=ke.decodeFrame_(a);o&&i.push(o),t+=a.size+10}ke.isFooter_(e,t)&&(t+=10)}return i}static getID3Data(e,t=0){let i=t,r=0;for(;ke.isHeader_(e,t);){e[t+5]>>6&1&&(r+=10),r+=10;let s=ke.readSize_(e,t+6);r+=s,ke.isFooter_(e,t+10)&&(r+=10),t+=r}return r>0?e.subarray(i,i+r):new Uint8Array([])}parse(e){return ke.getID3Frames(e)}};l(ke,"LATIN1_encoding",0),l(ke,"UTF16BOM_encoding",1),l(ke,"UTF16BE_encoding",2),l(ke,"UTF8_encoding",3);var It=ke;for(let y of O.RAW_FORMATS)kt.registerParserByMime(y,()=>new It);/*! @license
262
262
  * Shaka Player
263
263
  * Copyright 2016 Google LLC
264
264
  * SPDX-License-Identifier: Apache-2.0
@@ -289,15 +289,15 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
289
289
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
290
290
  * See the License for the specific language governing permissions and
291
291
  * limitations under the License.
292
- */var ii=class{constructor(e,t=!1){l(this,"data_");l(this,"workingBytesAvailable_");l(this,"workingWord_");l(this,"workingBitsAvailable_");this.data_=e,t&&(this.data_=ne.removeEmulationPreventionBytes(e)),this.workingBytesAvailable_=this.data_.byteLength,this.workingWord_=0,this.workingBitsAvailable_=0}loadWord_(){let e=this.data_.byteLength-this.workingBytesAvailable_,t=Math.min(4,this.workingBytesAvailable_);if(t===0)return;let i=0;for(let r=0;r<t;r++)i=i<<8|this.data_[e+r];this.workingWord_=i<<(4-t)*8,this.workingBitsAvailable_=t*8,this.workingBytesAvailable_-=t}skipBits(e){if(this.workingBitsAvailable_<=e){e-=this.workingBitsAvailable_;let t=Math.floor(e/8);e-=t*8,this.workingBitsAvailable_-=t,this.loadWord_()}this.workingWord_<<=e,this.workingBitsAvailable_-=e}readBits(e){let t=Math.min(this.workingBitsAvailable_,e),i=this.workingWord_>>>32-t;return this.workingBitsAvailable_-=t,this.workingBitsAvailable_>0?this.workingWord_<<=t:this.workingBytesAvailable_>0&&this.loadWord_(),t=e-t,t>0?i<<t|this.readBits(t):i}skipLeadingZeros_(){let e=0;for(;this.workingBitsAvailable_===0;){if(this.workingBytesAvailable_===0)return e;this.loadWord_()}for(;;){let t=Math.clz32(this.workingWord_);if(t>this.workingBitsAvailable_&&(t=this.workingBitsAvailable_),e+=t,this.workingWord_<<=t,this.workingBitsAvailable_-=t,this.workingBitsAvailable_>0||this.workingBytesAvailable_===0)break;this.loadWord_()}return e}skipExpGolomb(){this.skipBits(1+this.skipLeadingZeros_())}readUnsignedExpGolomb(){let e=this.skipLeadingZeros_();return this.readBits(e+1)-1}readExpGolomb(){let e=this.readUnsignedExpGolomb();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return this.readBits(1)===1}readUnsignedByte(){return this.readBits(8)}skipScalingList(e){let t=8,i=8;for(let r=0;r<e;r++){if(i!==0){let s=this.readExpGolomb();i=(t+s+256)%256}t=i===0?t:i}}readSliceType(){return this.readUnsignedByte(),this.readUnsignedExpGolomb(),this.readUnsignedExpGolomb()}};/*! @license
292
+ */var ri=class{constructor(e,t=!1){l(this,"data_");l(this,"workingBytesAvailable_");l(this,"workingWord_");l(this,"workingBitsAvailable_");this.data_=e,t&&(this.data_=ne.removeEmulationPreventionBytes(e)),this.workingBytesAvailable_=this.data_.byteLength,this.workingWord_=0,this.workingBitsAvailable_=0}loadWord_(){let e=this.data_.byteLength-this.workingBytesAvailable_,t=Math.min(4,this.workingBytesAvailable_);if(t===0)return;let i=0;for(let r=0;r<t;r++)i=i<<8|this.data_[e+r];this.workingWord_=i<<(4-t)*8,this.workingBitsAvailable_=t*8,this.workingBytesAvailable_-=t}skipBits(e){if(this.workingBitsAvailable_<=e){e-=this.workingBitsAvailable_;let t=Math.floor(e/8);e-=t*8,this.workingBitsAvailable_-=t,this.loadWord_()}this.workingWord_<<=e,this.workingBitsAvailable_-=e}readBits(e){let t=Math.min(this.workingBitsAvailable_,e),i=this.workingWord_>>>32-t;return this.workingBitsAvailable_-=t,this.workingBitsAvailable_>0?this.workingWord_<<=t:this.workingBytesAvailable_>0&&this.loadWord_(),t=e-t,t>0?i<<t|this.readBits(t):i}skipLeadingZeros_(){let e=0;for(;this.workingBitsAvailable_===0;){if(this.workingBytesAvailable_===0)return e;this.loadWord_()}for(;;){let t=Math.clz32(this.workingWord_);if(t>this.workingBitsAvailable_&&(t=this.workingBitsAvailable_),e+=t,this.workingWord_<<=t,this.workingBitsAvailable_-=t,this.workingBitsAvailable_>0||this.workingBytesAvailable_===0)break;this.loadWord_()}return e}skipExpGolomb(){this.skipBits(1+this.skipLeadingZeros_())}readUnsignedExpGolomb(){let e=this.skipLeadingZeros_();return this.readBits(e+1)-1}readExpGolomb(){let e=this.readUnsignedExpGolomb();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return this.readBits(1)===1}readUnsignedByte(){return this.readBits(8)}skipScalingList(e){let t=8,i=8;for(let r=0;r<e;r++){if(i!==0){let s=this.readExpGolomb();i=(t+s+256)%256}t=i===0?t:i}}readSliceType(){return this.readUnsignedByte(),this.readUnsignedExpGolomb(),this.readUnsignedExpGolomb()}};/*! @license
293
293
  * Shaka Player
294
294
  * Copyright 2016 Google LLC
295
295
  * SPDX-License-Identifier: Apache-2.0
296
- */var lt=class lt{constructor(){l(this,"pmtId_");l(this,"pmtParsed_");l(this,"videoPid_");l(this,"videoCodec_");l(this,"videoData_");l(this,"videoDataPesIndices_");l(this,"videoPes_");l(this,"audioPid_");l(this,"audioCodec_");l(this,"audioData_");l(this,"audioDataPesIndices_");l(this,"audioPes_");l(this,"id3Pid_");l(this,"id3Data_");l(this,"id3DataPesIndices_");l(this,"referencePts_");l(this,"opusMetadata_");l(this,"discontinuitySequence_");this.pmtId_=null,this.pmtParsed_=!1,this.videoPid_=null,this.videoCodec_=null,this.videoData_=[],this.videoDataPesIndices_=[],this.videoPes_=[],this.audioPid_=null,this.audioCodec_=null,this.audioData_=[],this.audioDataPesIndices_=[],this.audioPes_=[],this.id3Pid_=null,this.id3Data_=[],this.id3DataPesIndices_=[],this.referencePts_=null,this.opusMetadata_=null,this.discontinuitySequence_=null}clearData(){this.videoData_=[],this.videoDataPesIndices_=[],this.videoPes_=[],this.audioData_=[],this.audioDataPesIndices_=[],this.audioPes_=[],this.id3Data_=[],this.id3DataPesIndices_=[]}setDiscontinuitySequence(e){this.discontinuitySequence_!=null&&this.discontinuitySequence_!=e&&(this.referencePts_=null),this.discontinuitySequence_=e}parse(e){let t=lt.PacketLength_;if(e.length<3*t)return this;let i=Math.max(0,lt.syncOffset(e)),r=e.length-(e.length+i)%t,s=!1;for(let n=i;n<r;n+=t)if(e[n]==71){let a=!!(e[n+1]&64),o=((e[n+1]&31)<<8)+e[n+2],c=(e[n+3]&48)>>4,d;if(c>1){if(d=n+5+e[n+4],d==n+t)continue}else d=n+4;switch(o){case 0:a&&(d+=e[d]+1),this.pmtId_=this.getPmtId_(e,d);break;case 17:case 8191:break;case this.pmtId_:{a&&(d+=e[d]+1);let u=this.parsePMT_(e,d);u.video!=-1&&(this.videoPid_=u.video,this.videoCodec_=u.videoCodec),u.audio!=-1&&(this.audioPid_=u.audio,this.audioCodec_=u.audioCodec),u.id3!=-1&&(this.id3Pid_=u.id3),s&&!this.pmtParsed_&&(p.debug("reparse from beginning"),s=!1,n=i-t),this.pmtParsed_=!0;break}case this.videoPid_:{let u=e.subarray(d,n+t);a?(this.videoDataPesIndices_.push(this.videoData_.length),this.videoData_.push(u)):this.videoDataPesIndices_.length&&this.videoData_.push(u);break}case this.audioPid_:{let u=e.subarray(d,n+t);a?(this.audioDataPesIndices_.push(this.audioData_.length),this.audioData_.push(u)):this.audioDataPesIndices_.length&&this.audioData_.push(u);break}case this.id3Pid_:{let u=e.subarray(d,n+t);a?(this.id3DataPesIndices_.push(this.id3Data_.length),this.id3Data_.push(u)):this.id3DataPesIndices_.length&&this.id3Data_.push(u);break}default:s=!0;break}}else p.warning("Found TS packet that do not start with 0x47");return this}getPmtId_(e,t){return(e[t+10]&31)<<8|e[t+11]}parsePMT_(e,t){let i={audio:-1,video:-1,id3:-1,audioCodec:"",videoCodec:""},r=(e[t+1]&15)<<8|e[t+2],s=t+3+r-4,n=(e[t+10]&15)<<8|e[t+11];for(t+=12+n;t<s;){let a=(e[t+1]&31)<<8|e[t+2],o=(e[t+3]&15)<<8|e[t+4];switch(e[t]){case 6:if(o>0){let c=t+5,d=o;for(;d>2;){let u=e[c],m=e[c+1]+2;switch(u){case 5:{let f=c+2,g=e[f]<<24|e[f+1]<<16|e[f+2]<<8|e[f+3];i.audio==-1&&g===1332770163?(i.audio=a,i.audioCodec="opus"):i.video==-1&&g===1096167473&&(i.video=a,i.videoCodec="av1");break}case 106:i.audio==-1&&(i.audio=a,i.audioCodec="ac3");break;case 122:i.audio==-1&&(i.audio=a,i.audioCodec="ec3");break;case 124:i.audio==-1&&(i.audio=a,i.audioCodec="aac");break;case 127:if(i.audioCodec=="opus"){let f=e[c+2],g=null;if(f===128&&(g=e[c+3]),g==null)break;let _=(g&15)===0?2:g&15;this.opusMetadata_={channelCount:_,channelConfigCode:g,sampleRate:48e3}}break}c+=m,d-=m}}break;case 207:break;case 15:i.audio==-1&&(i.audio=a,i.audioCodec="aac");break;case 17:i.audio==-1&&(i.audio=a,i.audioCodec="aac-loas");break;case 21:i.id3==-1&&(i.id3=a);break;case 219:break;case 27:i.video==-1&&(i.video=a,i.videoCodec="avc");break;case 3:case 4:i.audio==-1&&(i.audio=a,i.audioCodec="mp3");break;case 36:i.video==-1&&(i.video=a,i.videoCodec="hvc");break;case 129:i.audio==-1&&(i.audio=a,i.audioCodec="ac3");break;case 132:case 135:i.audio==-1&&(i.audio=a,i.audioCodec="ec3");break;default:break}t+=o+5}return i}concatPesPackets_(e,t,i){let r=this.getPesPacketRange_(e,t,i);return this.concatPesPacketRange_(e,r)}concatPesPacketRange_(e,t){return ne.concatRange(e,t.first,t.end)}getPesPacketRange_(e,t,i){let r=t[i],s=i+1<t.length?t[i+1]:e.length;return{first:r,end:s}}parsePESHeader_(e,t){if(e.byteLength<lt.MIN_PES_HEADER_LENGTH_||(e[0]<<16|e[1]<<8|e[2])!==1)return null;let r=e[4]<<8|e[5];if(r&&r>t-6)return null;let s=null,n=null,a=e[7];if(e.byteLength<this.getRequiredPesHeaderLength_(e))return null;if(a&192){let d=(e[9]&14)*536870912+(e[10]&255)*4194304+(e[11]&254)*16384+(e[12]&255)*128+(e[13]&254)/2,u=null;a&64&&(u=(e[14]&14)*536870912+(e[15]&255)*4194304+(e[16]&254)*16384+(e[17]&255)*128+(e[18]&254)/2,d=this.handleRollover_(d,u)),this.referencePts_==null&&(this.referencePts_=d),s=this.handleRollover_(d,this.referencePts_),this.referencePts_=s,n=s,u!=null&&(n=this.handleRollover_(u,s))}let c=e[8]+9;return t<=c?null:{packetLength:r,payloadStartOffset:c,pts:s,dts:n}}parsePES_(e){let t=this.parsePESHeader_(e,e.byteLength);return t?{data:e.subarray(t.payloadStartOffset),packetLength:t.packetLength,pts:t.pts,dts:t.dts,nalus:[]}:null}parseNalus(e,t){let i=lt.Timescale,r=e.pts?e.pts/i:null,s=e.data,n=s.byteLength,a=1;this.videoCodec_=="hvc"&&(a=2);let o=t.state||0,c=o,d=0,u=[],m=-1,f=0,g=this.videoCodec_==="hvc",_=S=>g?s[S]>>1&63:s[S]&31,T=()=>u.length?u[u.length-1]:t.nalu;for(o==-1&&(m=0,f=_(0),o=0,d=1);d<n;){let S=s[d++];if(!o){o=S?0:1;continue}if(o===1){o=S?0:2;continue}if(!S)o=3;else if(S==1){let b=d-o-1;if(m>=0){let E={data:s.subarray(m+a,b),fullData:s.subarray(m,b),type:f,time:r,state:null};u.push(E)}else{let E=T();if(E&&(c&&d<=4-c&&E.state&&(E.data=E.data.subarray(0,E.data.byteLength-c),E.fullData=E.fullData.subarray(0,E.fullData.byteLength-c)),b>0)){let C=s.subarray(0,b);E.data=ne.concat(E.data,C),E.fullData=ne.concat(E.fullData,C),E.state=0}}d<n?(f=_(d),m=d,o=0):o=-1}else o=0}if(m>=0&&o>=0){let S={data:s.subarray(m+a,n),fullData:s.subarray(m,n),type:f,time:r,state:o};u.push(S)}if(!u.length&&t.nalu){let S=T();S&&(S.data=ne.concat(S.data,s),S.fullData=ne.concat(S.fullData,s))}return t.state=o,u}getMetadata(){let e=lt.Timescale,t=[];for(let i=0;i<this.id3DataPesIndices_.length;i++){let r=this.concatPesPackets_(this.id3Data_,this.id3DataPesIndices_,i),s=this.parsePES_(r);s&&t.push({cueTime:s.pts?s.pts/e:null,data:s.data,frames:It.getID3Frames(s.data),dts:s.dts,pts:s.pts})}return t}getAudioData(){if(this.audioDataPesIndices_.length&&!this.audioPes_.length)for(let e=0;e<this.audioDataPesIndices_.length;e++){let t=this.concatPesPackets_(this.audioData_,this.audioDataPesIndices_,e),i=this.parsePES_(t),r=this.audioPes_.length?this.audioPes_[this.audioPes_.length-1]:null;if(i&&i.pts!=null&&i.dts!=null&&(!r||r.pts!=i.pts&&r.dts!=i.dts))this.audioPes_.push(i);else if(this.audioPes_.length){let s=i?i.data:t;if(!s)continue;r=this.audioPes_[this.audioPes_.length-1],r.data=ne.concat(r.data,s)}}return this.audioPes_}getVideoData(e=!0){if(this.videoDataPesIndices_.length&&!this.videoPes_.length){for(let t=0;t<this.videoDataPesIndices_.length;t++){let i=this.concatPesPackets_(this.videoData_,this.videoDataPesIndices_,t),r=this.parsePES_(i),s=this.videoPes_.length?this.videoPes_[this.videoPes_.length-1]:null;if(r&&r.pts!=null&&r.dts!=null&&(!s||s.pts!=r.pts&&s.dts!=r.dts))this.videoPes_.push(r);else if(this.videoPes_.length){let n=r?r.data:i;if(!n)continue;s=this.videoPes_[this.videoPes_.length-1],s.data=ne.concat(s.data,n)}}if(e){let t={nalu:null,state:null},i=[];for(let r of this.videoPes_)r.nalus=this.parseNalus(r,t),r.nalus.length&&(i.push(r),t.nalu=r.nalus[r.nalus.length-1]);this.videoPes_=i}}if(!e){let t=this.videoPes_;return this.videoPes_=[],t}return this.videoPes_}getStartTimeFromPesHeaders(e){let t,i;if(e=="audio")t=this.audioData_,i=this.audioDataPesIndices_;else if(e=="video")t=this.videoData_,i=this.videoDataPesIndices_;else return null;for(let r=0;r<i.length;r++){let s=this.getPesPacketRange_(t,i,r),n=t[s.first];if(!n)continue;let a=0;for(let m=s.first;m<s.end;m++)a+=t[m].byteLength;let c=n.byteLength>=lt.MIN_PES_HEADER_LENGTH_&&n.byteLength>=this.getRequiredPesHeaderLength_(n)?n:this.concatPesPacketRange_(t,s),d=this.parsePESHeader_(c,a);if(!d)continue;let u=this.getStartTimeFromPes_(d);if(u!=null)return u}return null}getRequiredPesHeaderLength_(e){let t=e[7];return t&64?lt.PES_HEADER_WITH_DTS_LENGTH_:t&192?lt.PES_HEADER_WITH_PTS_LENGTH_:lt.MIN_PES_HEADER_LENGTH_}getStartTimeFromPes_(e){return e.pts==null||e.dts==null?null:Math.min(e.dts,e.pts)/lt.Timescale}getStartTime(e){let t;if(e=="audio")t=this.getAudioData();else if(e=="video")t=this.getVideoData(!1);else return null;return t.length?this.getStartTimeFromPes_(t[0]):null}getCodecs(){return{audio:this.audioCodec_,video:this.videoCodec_}}getVideoNalus(){let e=[];for(let t of this.getVideoData())e.push(...t.nalus);return e}getVideoInfo(){return this.videoCodec_=="hvc"?this.getHvcInfo_():this.getAvcInfo_()}getFrameRate_(){let e=lt.Timescale,t=this.getVideoData();if(t.length>1){let i=t[0].pts;v.assert(typeof i=="number","Should be an number!");let r=t[1].pts;if(v.assert(typeof r=="number","Should be an number!"),!isNaN(r-i))return Math.abs(1/(r-i)*e)}return null}getAvcInfo_(){let e={height:null,width:null,codec:null,frameRate:null},t=this.getVideoNalus();if(!t.length)return e;let i=t.find(T=>T.type==lt.H264_NALU_TYPE_SPS_);if(!i)return e;let r=new ii(i.data),s=r.readUnsignedByte(),n=r.readUnsignedByte(),a=r.readUnsignedByte();if(r.skipExpGolomb(),lt.PROFILES_WITH_OPTIONAL_SPS_DATA_.includes(s)){let T=r.readUnsignedExpGolomb();if(T===3&&r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb(),r.skipBits(1),r.readBoolean()){let S=T!==3?8:12;for(let b=0;b<S;b++)r.readBoolean()&&(b<6?r.skipScalingList(16):r.skipScalingList(64))}}r.skipExpGolomb();let o=r.readUnsignedExpGolomb();if(o===0)r.readUnsignedExpGolomb();else if(o===1){r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb();let T=r.readUnsignedExpGolomb();for(let S=0;S<T;S++)r.skipExpGolomb()}r.skipExpGolomb(),r.skipBits(1);let c=r.readUnsignedExpGolomb(),d=r.readUnsignedExpGolomb(),u=r.readBits(1);u===0&&r.skipBits(1),r.skipBits(1);let m=0,f=0,g=0,_=0;return r.readBoolean()&&(m=r.readUnsignedExpGolomb(),f=r.readUnsignedExpGolomb(),g=r.readUnsignedExpGolomb(),_=r.readUnsignedExpGolomb()),e.height=String((2-u)*(d+1)*16-g*2-_*2),e.width=String((c+1)*16-m*2-f*2),e.codec="avc1."+this.byteToHex_(s)+this.byteToHex_(n)+this.byteToHex_(a),e.frameRate=this.getFrameRate_(),e}getHvcInfo_(){let e={height:null,width:null,codec:null,frameRate:null},t=this.getVideoNalus();if(!t.length)return e;let i=t.find(ce=>ce.type==lt.H265_NALU_TYPE_SPS_);if(!i)return e;let r=new ii(i.fullData,!0);r.readUnsignedByte(),r.readUnsignedByte(),r.readBits(4);let s=r.readBits(3);r.readBoolean();let n=r.readBits(2),a=r.readBits(1),o=r.readBits(5),c=r.readBits(32),d=r.readUnsignedByte(),u=r.readUnsignedByte(),m=r.readUnsignedByte(),f=r.readUnsignedByte(),g=r.readUnsignedByte(),_=r.readUnsignedByte(),T=r.readUnsignedByte(),S=[],b=[];for(let ce=0;ce<s;ce++)S.push(r.readBoolean()),b.push(r.readBoolean());if(s>0)for(let ce=s;ce<8;ce++)r.readBits(2);for(let ce=0;ce<s;ce++)S[ce]&&r.readBits(88),b[ce]&&r.readUnsignedByte();r.readUnsignedExpGolomb();let E=r.readUnsignedExpGolomb();E==3&&r.readBits(1);let C=r.readUnsignedExpGolomb(),A=r.readUnsignedExpGolomb(),w=0,M=0,x=0,k=0;r.readBoolean()&&(w+=r.readUnsignedExpGolomb(),M+=r.readUnsignedExpGolomb(),x+=r.readUnsignedExpGolomb(),k+=r.readUnsignedExpGolomb());let V=E===1||E===2?2:1,ee=E===1?2:1;e.width=String(C-(w+M)*V),e.height=String(A-(x+k)*ee);let oe=ce=>{let W=0;for(let z=0;z<32;z++)W|=(ce>>z&1)<<31-z;return W>>>0},le=["","A","B","C"][n],H=oe(c),J=a==1?"H":"L",Z="hvc1";return Z+="."+le+o,Z+="."+H.toString(16).toUpperCase(),Z+="."+J+T,_&&(Z+="."+_.toString(16).toUpperCase()),g&&(Z+="."+g.toString(16).toUpperCase()),f&&(Z+="."+f.toString(16).toUpperCase()),m&&(Z+="."+m.toString(16).toUpperCase()),u&&(Z+="."+u.toString(16).toUpperCase()),d&&(Z+="."+d.toString(16).toUpperCase()),e.codec=Z,e.frameRate=this.getFrameRate_(),e}getOpusMetadata(){return this.opusMetadata_}byteToHex_(e){return("0"+e.toString(16).toUpperCase()).slice(-2)}handleRollover_(e,t){let s=1;for(e>t&&(s=-1);Math.abs(t-e)>4294967296;)e+=s*8589934592;return e}static probe(e){let t=lt.syncOffset(e);return t<0?!1:(t>0&&p.warning("MPEG2-TS detected but first sync word found @ offset "+t+", junk ahead ?"),!0)}static syncOffset(e){let t=lt.PacketLength_,i=Math.min(1e3,e.length-3*t),r=0;for(;r<i;){if(e[r]==71&&e[r+t]==71&&e[r+2*t]==71)return r;{let s=e.indexOf(71,r+1);r=s>=0&&s<i?s:r+1}}return-1}};l(lt,"Timescale",9e4),l(lt,"PacketLength_",188),l(lt,"MIN_PES_HEADER_LENGTH_",9),l(lt,"PES_HEADER_WITH_PTS_LENGTH_",14),l(lt,"PES_HEADER_WITH_DTS_LENGTH_",19),l(lt,"H264_NALU_TYPE_SPS_",7),l(lt,"H265_NALU_TYPE_SPS_",33),l(lt,"PROFILES_WITH_OPTIONAL_SPS_DATA_",[100,110,122,244,44,83,86,118,128,138,139,134]);var pt=lt;/*! @license
296
+ */var lt=class lt{constructor(){l(this,"pmtId_");l(this,"pmtParsed_");l(this,"videoPid_");l(this,"videoCodec_");l(this,"videoData_");l(this,"videoDataPesIndices_");l(this,"videoPes_");l(this,"audioPid_");l(this,"audioCodec_");l(this,"audioData_");l(this,"audioDataPesIndices_");l(this,"audioPes_");l(this,"id3Pid_");l(this,"id3Data_");l(this,"id3DataPesIndices_");l(this,"referencePts_");l(this,"opusMetadata_");l(this,"discontinuitySequence_");this.pmtId_=null,this.pmtParsed_=!1,this.videoPid_=null,this.videoCodec_=null,this.videoData_=[],this.videoDataPesIndices_=[],this.videoPes_=[],this.audioPid_=null,this.audioCodec_=null,this.audioData_=[],this.audioDataPesIndices_=[],this.audioPes_=[],this.id3Pid_=null,this.id3Data_=[],this.id3DataPesIndices_=[],this.referencePts_=null,this.opusMetadata_=null,this.discontinuitySequence_=null}clearData(){this.videoData_=[],this.videoDataPesIndices_=[],this.videoPes_=[],this.audioData_=[],this.audioDataPesIndices_=[],this.audioPes_=[],this.id3Data_=[],this.id3DataPesIndices_=[]}setDiscontinuitySequence(e){this.discontinuitySequence_!=null&&this.discontinuitySequence_!=e&&(this.referencePts_=null),this.discontinuitySequence_=e}parse(e){let t=lt.PacketLength_;if(e.length<3*t)return this;let i=Math.max(0,lt.syncOffset(e)),r=e.length-(e.length+i)%t,s=!1;for(let n=i;n<r;n+=t)if(e[n]==71){let a=!!(e[n+1]&64),o=((e[n+1]&31)<<8)+e[n+2],c=(e[n+3]&48)>>4,d;if(c>1){if(d=n+5+e[n+4],d==n+t)continue}else d=n+4;switch(o){case 0:a&&(d+=e[d]+1),this.pmtId_=this.getPmtId_(e,d);break;case 17:case 8191:break;case this.pmtId_:{a&&(d+=e[d]+1);let u=this.parsePMT_(e,d);u.video!=-1&&(this.videoPid_=u.video,this.videoCodec_=u.videoCodec),u.audio!=-1&&(this.audioPid_=u.audio,this.audioCodec_=u.audioCodec),u.id3!=-1&&(this.id3Pid_=u.id3),s&&!this.pmtParsed_&&(p.debug("reparse from beginning"),s=!1,n=i-t),this.pmtParsed_=!0;break}case this.videoPid_:{let u=e.subarray(d,n+t);a?(this.videoDataPesIndices_.push(this.videoData_.length),this.videoData_.push(u)):this.videoDataPesIndices_.length&&this.videoData_.push(u);break}case this.audioPid_:{let u=e.subarray(d,n+t);a?(this.audioDataPesIndices_.push(this.audioData_.length),this.audioData_.push(u)):this.audioDataPesIndices_.length&&this.audioData_.push(u);break}case this.id3Pid_:{let u=e.subarray(d,n+t);a?(this.id3DataPesIndices_.push(this.id3Data_.length),this.id3Data_.push(u)):this.id3DataPesIndices_.length&&this.id3Data_.push(u);break}default:s=!0;break}}else p.warning("Found TS packet that do not start with 0x47");return this}getPmtId_(e,t){return(e[t+10]&31)<<8|e[t+11]}parsePMT_(e,t){let i={audio:-1,video:-1,id3:-1,audioCodec:"",videoCodec:""},r=(e[t+1]&15)<<8|e[t+2],s=t+3+r-4,n=(e[t+10]&15)<<8|e[t+11];for(t+=12+n;t<s;){let a=(e[t+1]&31)<<8|e[t+2],o=(e[t+3]&15)<<8|e[t+4];switch(e[t]){case 6:if(o>0){let c=t+5,d=o;for(;d>2;){let u=e[c],m=e[c+1]+2;switch(u){case 5:{let f=c+2,g=e[f]<<24|e[f+1]<<16|e[f+2]<<8|e[f+3];i.audio==-1&&g===1332770163?(i.audio=a,i.audioCodec="opus"):i.video==-1&&g===1096167473&&(i.video=a,i.videoCodec="av1");break}case 106:i.audio==-1&&(i.audio=a,i.audioCodec="ac3");break;case 122:i.audio==-1&&(i.audio=a,i.audioCodec="ec3");break;case 124:i.audio==-1&&(i.audio=a,i.audioCodec="aac");break;case 127:if(i.audioCodec=="opus"){let f=e[c+2],g=null;if(f===128&&(g=e[c+3]),g==null)break;let _=(g&15)===0?2:g&15;this.opusMetadata_={channelCount:_,channelConfigCode:g,sampleRate:48e3}}break}c+=m,d-=m}}break;case 207:break;case 15:i.audio==-1&&(i.audio=a,i.audioCodec="aac");break;case 17:i.audio==-1&&(i.audio=a,i.audioCodec="aac-loas");break;case 21:i.id3==-1&&(i.id3=a);break;case 219:break;case 27:i.video==-1&&(i.video=a,i.videoCodec="avc");break;case 3:case 4:i.audio==-1&&(i.audio=a,i.audioCodec="mp3");break;case 36:i.video==-1&&(i.video=a,i.videoCodec="hvc");break;case 129:i.audio==-1&&(i.audio=a,i.audioCodec="ac3");break;case 132:case 135:i.audio==-1&&(i.audio=a,i.audioCodec="ec3");break;default:break}t+=o+5}return i}concatPesPackets_(e,t,i){let r=this.getPesPacketRange_(e,t,i);return this.concatPesPacketRange_(e,r)}concatPesPacketRange_(e,t){return ne.concatRange(e,t.first,t.end)}getPesPacketRange_(e,t,i){let r=t[i],s=i+1<t.length?t[i+1]:e.length;return{first:r,end:s}}parsePESHeader_(e,t){if(e.byteLength<lt.MIN_PES_HEADER_LENGTH_||(e[0]<<16|e[1]<<8|e[2])!==1)return null;let r=e[4]<<8|e[5];if(r&&r>t-6)return null;let s=null,n=null,a=e[7];if(e.byteLength<this.getRequiredPesHeaderLength_(e))return null;if(a&192){let d=(e[9]&14)*536870912+(e[10]&255)*4194304+(e[11]&254)*16384+(e[12]&255)*128+(e[13]&254)/2,u=null;a&64&&(u=(e[14]&14)*536870912+(e[15]&255)*4194304+(e[16]&254)*16384+(e[17]&255)*128+(e[18]&254)/2,d=this.handleRollover_(d,u)),this.referencePts_==null&&(this.referencePts_=d),s=this.handleRollover_(d,this.referencePts_),this.referencePts_=s,n=s,u!=null&&(n=this.handleRollover_(u,s))}let c=e[8]+9;return t<=c?null:{packetLength:r,payloadStartOffset:c,pts:s,dts:n}}parsePES_(e){let t=this.parsePESHeader_(e,e.byteLength);return t?{data:e.subarray(t.payloadStartOffset),packetLength:t.packetLength,pts:t.pts,dts:t.dts,nalus:[]}:null}parseNalus(e,t){let i=lt.Timescale,r=e.pts?e.pts/i:null,s=e.data,n=s.byteLength,a=1;this.videoCodec_=="hvc"&&(a=2);let o=t.state||0,c=o,d=0,u=[],m=-1,f=0,g=this.videoCodec_==="hvc",_=S=>g?s[S]>>1&63:s[S]&31,T=()=>u.length?u[u.length-1]:t.nalu;for(o==-1&&(m=0,f=_(0),o=0,d=1);d<n;){let S=s[d++];if(!o){o=S?0:1;continue}if(o===1){o=S?0:2;continue}if(!S)o=3;else if(S==1){let b=d-o-1;if(m>=0){let E={data:s.subarray(m+a,b),fullData:s.subarray(m,b),type:f,time:r,state:null};u.push(E)}else{let E=T();if(E&&(c&&d<=4-c&&E.state&&(E.data=E.data.subarray(0,E.data.byteLength-c),E.fullData=E.fullData.subarray(0,E.fullData.byteLength-c)),b>0)){let C=s.subarray(0,b);E.data=ne.concat(E.data,C),E.fullData=ne.concat(E.fullData,C),E.state=0}}d<n?(f=_(d),m=d,o=0):o=-1}else o=0}if(m>=0&&o>=0){let S={data:s.subarray(m+a,n),fullData:s.subarray(m,n),type:f,time:r,state:o};u.push(S)}if(!u.length&&t.nalu){let S=T();S&&(S.data=ne.concat(S.data,s),S.fullData=ne.concat(S.fullData,s))}return t.state=o,u}getMetadata(){let e=lt.Timescale,t=[];for(let i=0;i<this.id3DataPesIndices_.length;i++){let r=this.concatPesPackets_(this.id3Data_,this.id3DataPesIndices_,i),s=this.parsePES_(r);s&&t.push({cueTime:s.pts?s.pts/e:null,data:s.data,frames:It.getID3Frames(s.data),dts:s.dts,pts:s.pts})}return t}getAudioData(){if(this.audioDataPesIndices_.length&&!this.audioPes_.length)for(let e=0;e<this.audioDataPesIndices_.length;e++){let t=this.concatPesPackets_(this.audioData_,this.audioDataPesIndices_,e),i=this.parsePES_(t),r=this.audioPes_.length?this.audioPes_[this.audioPes_.length-1]:null;if(i&&i.pts!=null&&i.dts!=null&&(!r||r.pts!=i.pts&&r.dts!=i.dts))this.audioPes_.push(i);else if(this.audioPes_.length){let s=i?i.data:t;if(!s)continue;r=this.audioPes_[this.audioPes_.length-1],r.data=ne.concat(r.data,s)}}return this.audioPes_}getVideoData(e=!0){if(this.videoDataPesIndices_.length&&!this.videoPes_.length){for(let t=0;t<this.videoDataPesIndices_.length;t++){let i=this.concatPesPackets_(this.videoData_,this.videoDataPesIndices_,t),r=this.parsePES_(i),s=this.videoPes_.length?this.videoPes_[this.videoPes_.length-1]:null;if(r&&r.pts!=null&&r.dts!=null&&(!s||s.pts!=r.pts&&s.dts!=r.dts))this.videoPes_.push(r);else if(this.videoPes_.length){let n=r?r.data:i;if(!n)continue;s=this.videoPes_[this.videoPes_.length-1],s.data=ne.concat(s.data,n)}}if(e){let t={nalu:null,state:null},i=[];for(let r of this.videoPes_)r.nalus=this.parseNalus(r,t),r.nalus.length&&(i.push(r),t.nalu=r.nalus[r.nalus.length-1]);this.videoPes_=i}}if(!e){let t=this.videoPes_;return this.videoPes_=[],t}return this.videoPes_}getStartTimeFromPesHeaders(e){let t,i;if(e=="audio")t=this.audioData_,i=this.audioDataPesIndices_;else if(e=="video")t=this.videoData_,i=this.videoDataPesIndices_;else return null;for(let r=0;r<i.length;r++){let s=this.getPesPacketRange_(t,i,r),n=t[s.first];if(!n)continue;let a=0;for(let m=s.first;m<s.end;m++)a+=t[m].byteLength;let c=n.byteLength>=lt.MIN_PES_HEADER_LENGTH_&&n.byteLength>=this.getRequiredPesHeaderLength_(n)?n:this.concatPesPacketRange_(t,s),d=this.parsePESHeader_(c,a);if(!d)continue;let u=this.getStartTimeFromPes_(d);if(u!=null)return u}return null}getRequiredPesHeaderLength_(e){let t=e[7];return t&64?lt.PES_HEADER_WITH_DTS_LENGTH_:t&192?lt.PES_HEADER_WITH_PTS_LENGTH_:lt.MIN_PES_HEADER_LENGTH_}getStartTimeFromPes_(e){return e.pts==null||e.dts==null?null:Math.min(e.dts,e.pts)/lt.Timescale}getStartTime(e){let t;if(e=="audio")t=this.getAudioData();else if(e=="video")t=this.getVideoData(!1);else return null;return t.length?this.getStartTimeFromPes_(t[0]):null}getCodecs(){return{audio:this.audioCodec_,video:this.videoCodec_}}getVideoNalus(){let e=[];for(let t of this.getVideoData())e.push(...t.nalus);return e}getVideoInfo(){return this.videoCodec_=="hvc"?this.getHvcInfo_():this.getAvcInfo_()}getFrameRate_(){let e=lt.Timescale,t=this.getVideoData();if(t.length>1){let i=t[0].pts;v.assert(typeof i=="number","Should be an number!");let r=t[1].pts;if(v.assert(typeof r=="number","Should be an number!"),!isNaN(r-i))return Math.abs(1/(r-i)*e)}return null}getAvcInfo_(){let e={height:null,width:null,codec:null,frameRate:null},t=this.getVideoNalus();if(!t.length)return e;let i=t.find(T=>T.type==lt.H264_NALU_TYPE_SPS_);if(!i)return e;let r=new ri(i.data),s=r.readUnsignedByte(),n=r.readUnsignedByte(),a=r.readUnsignedByte();if(r.skipExpGolomb(),lt.PROFILES_WITH_OPTIONAL_SPS_DATA_.includes(s)){let T=r.readUnsignedExpGolomb();if(T===3&&r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb(),r.skipBits(1),r.readBoolean()){let S=T!==3?8:12;for(let b=0;b<S;b++)r.readBoolean()&&(b<6?r.skipScalingList(16):r.skipScalingList(64))}}r.skipExpGolomb();let o=r.readUnsignedExpGolomb();if(o===0)r.readUnsignedExpGolomb();else if(o===1){r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb();let T=r.readUnsignedExpGolomb();for(let S=0;S<T;S++)r.skipExpGolomb()}r.skipExpGolomb(),r.skipBits(1);let c=r.readUnsignedExpGolomb(),d=r.readUnsignedExpGolomb(),u=r.readBits(1);u===0&&r.skipBits(1),r.skipBits(1);let m=0,f=0,g=0,_=0;return r.readBoolean()&&(m=r.readUnsignedExpGolomb(),f=r.readUnsignedExpGolomb(),g=r.readUnsignedExpGolomb(),_=r.readUnsignedExpGolomb()),e.height=String((2-u)*(d+1)*16-g*2-_*2),e.width=String((c+1)*16-m*2-f*2),e.codec="avc1."+this.byteToHex_(s)+this.byteToHex_(n)+this.byteToHex_(a),e.frameRate=this.getFrameRate_(),e}getHvcInfo_(){let e={height:null,width:null,codec:null,frameRate:null},t=this.getVideoNalus();if(!t.length)return e;let i=t.find(ce=>ce.type==lt.H265_NALU_TYPE_SPS_);if(!i)return e;let r=new ri(i.fullData,!0);r.readUnsignedByte(),r.readUnsignedByte(),r.readBits(4);let s=r.readBits(3);r.readBoolean();let n=r.readBits(2),a=r.readBits(1),o=r.readBits(5),c=r.readBits(32),d=r.readUnsignedByte(),u=r.readUnsignedByte(),m=r.readUnsignedByte(),f=r.readUnsignedByte(),g=r.readUnsignedByte(),_=r.readUnsignedByte(),T=r.readUnsignedByte(),S=[],b=[];for(let ce=0;ce<s;ce++)S.push(r.readBoolean()),b.push(r.readBoolean());if(s>0)for(let ce=s;ce<8;ce++)r.readBits(2);for(let ce=0;ce<s;ce++)S[ce]&&r.readBits(88),b[ce]&&r.readUnsignedByte();r.readUnsignedExpGolomb();let E=r.readUnsignedExpGolomb();E==3&&r.readBits(1);let C=r.readUnsignedExpGolomb(),A=r.readUnsignedExpGolomb(),w=0,M=0,x=0,k=0;r.readBoolean()&&(w+=r.readUnsignedExpGolomb(),M+=r.readUnsignedExpGolomb(),x+=r.readUnsignedExpGolomb(),k+=r.readUnsignedExpGolomb());let V=E===1||E===2?2:1,ee=E===1?2:1;e.width=String(C-(w+M)*V),e.height=String(A-(x+k)*ee);let oe=ce=>{let W=0;for(let z=0;z<32;z++)W|=(ce>>z&1)<<31-z;return W>>>0},le=["","A","B","C"][n],H=oe(c),J=a==1?"H":"L",Z="hvc1";return Z+="."+le+o,Z+="."+H.toString(16).toUpperCase(),Z+="."+J+T,_&&(Z+="."+_.toString(16).toUpperCase()),g&&(Z+="."+g.toString(16).toUpperCase()),f&&(Z+="."+f.toString(16).toUpperCase()),m&&(Z+="."+m.toString(16).toUpperCase()),u&&(Z+="."+u.toString(16).toUpperCase()),d&&(Z+="."+d.toString(16).toUpperCase()),e.codec=Z,e.frameRate=this.getFrameRate_(),e}getOpusMetadata(){return this.opusMetadata_}byteToHex_(e){return("0"+e.toString(16).toUpperCase()).slice(-2)}handleRollover_(e,t){let s=1;for(e>t&&(s=-1);Math.abs(t-e)>4294967296;)e+=s*8589934592;return e}static probe(e){let t=lt.syncOffset(e);return t<0?!1:(t>0&&p.warning("MPEG2-TS detected but first sync word found @ offset "+t+", junk ahead ?"),!0)}static syncOffset(e){let t=lt.PacketLength_,i=Math.min(1e3,e.length-3*t),r=0;for(;r<i;){if(e[r]==71&&e[r+t]==71&&e[r+2*t]==71)return r;{let s=e.indexOf(71,r+1);r=s>=0&&s<i?s:r+1}}return-1}};l(lt,"Timescale",9e4),l(lt,"PacketLength_",188),l(lt,"MIN_PES_HEADER_LENGTH_",9),l(lt,"PES_HEADER_WITH_PTS_LENGTH_",14),l(lt,"PES_HEADER_WITH_DTS_LENGTH_",19),l(lt,"H264_NALU_TYPE_SPS_",7),l(lt,"H265_NALU_TYPE_SPS_",33),l(lt,"PROFILES_WITH_OPTIONAL_SPS_DATA_",[100,110,122,244,44,83,86,118,128,138,139,134]);var pt=lt;/*! @license
297
297
  * Shaka Player
298
298
  * Copyright 2016 Google LLC
299
299
  * SPDX-License-Identifier: Apache-2.0
300
- */var ri=class ri{constructor(e,t,i,r,s){l(this,"video_");l(this,"playerInterface_");l(this,"config_");l(this,"textDisplayer_");l(this,"sourceBuffers_");l(this,"sourceBufferTypes_");l(this,"expectedEncryption_");l(this,"textEngine_");l(this,"segmentRelativeVttTiming_");l(this,"lcevcDec_");l(this,"queues_");l(this,"eventManager_");l(this,"transmuxers_");l(this,"captionParser_");l(this,"mediaSourceOpen_");l(this,"url_");l(this,"playbackHasBegun_");l(this,"streamingAllowed_");l(this,"usingRemotePlayback_");l(this,"source_");l(this,"secondarySource_");l(this,"mediaSource_");l(this,"reloadingMediaSource_");l(this,"playAfterReset_");l(this,"destroyer_");l(this,"sequenceMode_");l(this,"manifestType_");l(this,"ignoreManifestTimestampsInSegmentsMode_");l(this,"attemptTimestampOffsetCalculation_");l(this,"needSplitMuxedContent_");l(this,"lastDuration_");l(this,"tsParsers_");l(this,"firstVideoTimestamp_");l(this,"firstVideoReferenceStartTime_");l(this,"firstAudioTimestamp_");l(this,"firstAudioReferenceStartTime_");l(this,"audioCompensation_");l(this,"usesLiveSeekableRange_");l(this,"clearKeyDecryptors_");this.video_=e,this.playerInterface_=i,this.config_=r,this.textDisplayer_=t,this.sourceBuffers_=new Map,this.sourceBufferTypes_=new Map,this.expectedEncryption_=new Map,this.textEngine_=null,this.segmentRelativeVttTiming_=!1,this.lcevcDec_=s||null,this.queues_=new Map,this.eventManager_=new ue,this.transmuxers_=new Map,this.captionParser_=null,this.mediaSourceOpen_=Promise.withResolvers(),this.url_="",this.playbackHasBegun_=!1,this.streamingAllowed_=!0,this.usingRemotePlayback_=!1,this.source_=null,this.secondarySource_=null,this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),this.reloadingMediaSource_=!1,this.playAfterReset_=!1,this.destroyer_=new ci(()=>this.doDestroy_()),this.sequenceMode_=!1,this.manifestType_=me.UNKNOWN,this.ignoreManifestTimestampsInSegmentsMode_=!1,this.attemptTimestampOffsetCalculation_=!1,this.needSplitMuxedContent_=!1,this.lastDuration_=null,this.tsParsers_=new Map,this.firstVideoTimestamp_=null,this.firstVideoReferenceStartTime_=null,this.firstAudioTimestamp_=null,this.firstAudioReferenceStartTime_=null,this.audioCompensation_=Promise.withResolvers();let a=j.getDevice().getRemote(this.video_);a&&(this.usingRemotePlayback_=a.state!="disconnected",this.eventManager_.listenMulti(a,["connect","connecting","disconnect"],()=>{this.usingRemotePlayback_=a.state!="disconnected"})),this.usesLiveSeekableRange_=!1,this.clearKeyDecryptors_=new Map}createMediaSource(e){this.streamingAllowed_=!0;let t;return window.ManagedMediaSource?(this.secondarySource_||(this.video_.disableRemotePlayback=!0),t=new ManagedMediaSource,this.eventManager_.listen(t,"startstreaming",()=>{p.info("MMS startstreaming"),this.streamingAllowed_=!0}),this.eventManager_.listen(t,"endstreaming",()=>{p.info("MMS endstreaming"),this.streamingAllowed_=!1})):t=new MediaSource,this.eventManager_.listenOnce(t,"sourceopen",()=>this.onSourceOpen_(e)),this.eventManager_.listenOnce(this.video_,"playing",()=>{this.playbackHasBegun_=!0}),this.url_=ri.createObjectURL(t),this.removeSources_(),this.config_.useSourceElements?(this.source_=Ge.createSourceElement(this.url_),this.video_.appendChild(this.source_),this.secondarySource_&&this.video_.appendChild(this.secondarySource_),this.video_.load()):this.video_.src=this.url_,t}addSecondarySource(e,t){var i;if(!this.video_||!window.ManagedMediaSource||!this.mediaSource_){p.warning("Secondary source is used only with ManagedMediaSource");return}this.config_.useSourceElements&&(((i=this.secondarySource_)==null?void 0:i.parentElement)===this.video_&&this.video_.removeChild(this.secondarySource_),this.secondarySource_=Ge.createSourceElement(e,t),this.video_.appendChild(this.secondarySource_),this.video_.disableRemotePlayback=!1)}onSourceOpen_(e){v.assert(this.url_,"Must have object URL"),URL.revokeObjectURL(this.url_),e.resolve()}static probeSupport(){let e=['video/mp4; codecs="avc1.42E01E"','video/mp4; codecs="avc3.42E01E"','video/mp4; codecs="hev1.1.6.L93.90"','video/mp4; codecs="hvc1.1.6.L93.90"','video/mp4; codecs="hev1.2.4.L153.B0"; eotf="smpte2084"','video/mp4; codecs="hvc1.2.4.L153.B0"; eotf="smpte2084"','video/mp4; codecs="hvc1.2.20000000.L153.B0"','video/mp4; codecs="hvc1.2.4.L120.b0"','video/mp4; codecs="hvc1.2.4.L123.b0"','video/mp4; codecs="vp9"','video/mp4; codecs="vp09.00.10.08"','video/mp4; codecs="av01.0.01M.08"','video/mp4; codecs="av01.0.31M.10.0.111.09.16.09.0"','video/mp4; codecs="av01.0.31M.10.0.112.09.18.09.0"','video/mp4; codecs="dvh1.05.01"','video/mp4; codecs="dvh1.08.01"','video/mp4; codecs="dav1.10.01"','video/mp4; codecs="dvh1.20.01"','audio/mp4; codecs="mp4a.40.2"','audio/mp4; codecs="ac-3"','audio/mp4; codecs="ec-3"','audio/mp4; codecs="ac-4.02.01.03"','audio/mp4; codecs="opus"','audio/mp4; codecs="flac"','audio/mp4; codecs="dtsc"','audio/mp4; codecs="dtse"','audio/mp4; codecs="dtsx"','audio/mp4; codecs="apac.31.00"','video/webm; codecs="vp8"','video/webm; codecs="vp9"','video/webm; codecs="vp09.00.10.08"','audio/webm; codecs="vorbis"','audio/webm; codecs="opus"','video/mp2t; codecs="avc1.42E01E"','video/mp2t; codecs="avc3.42E01E"','video/mp2t; codecs="hvc1.1.6.L93.90"','video/mp2t; codecs="mp4a.40.2"','video/mp2t; codecs="ac-3"','video/mp2t; codecs="ec-3"',"text/vtt",'application/mp4; codecs="wvtt"',"application/ttml+xml",'application/mp4; codecs="stpp"',...N.RAW_FORMATS],t={},i=j.getDevice();for(let r of e){if(Ue.isTypeSupported(r))t[r]=!0;else if(i.supportsMediaSource()){let n=N.getBasicType(r),a=N.getCorrectAudioCodecs(N.getCodecs(r),n),o=N.getFullType(n,a);t[r]=Ke.isTypeSupported(o)||Oe.isSupported(o)}else t[r]=i.supportsMediaType(r);let s=r.split(";")[0];t[s]=t[s]||t[r]}return t}destroy(){return this.destroyer_.destroy()}async doDestroy_(){let e=[];for(let[t,i]of this.queues_){let r=i[0],s=t;this.queues_.set(s,i.slice(0,1)),r&&e.push(r.p.promise.catch(()=>{}));for(let n of i.slice(1))n.p.reject(ci.destroyedError())}this.textEngine_&&e.push(this.textEngine_.destroy()),await Promise.all(e),e=[];for(let t of this.transmuxers_.values())t.destroy();for(let t of this.clearKeyDecryptors_.values())e.push(t.destroy());if(this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.video_&&(this.removeSources_(),this.video_.load(),this.video_.disableRemotePlayback=!1),this.video_=null,this.source_=null,this.secondarySource_=null,this.config_=null,this.mediaSource_=null,this.textEngine_=null,this.textDisplayer_=null,this.sourceBuffers_.clear(),this.expectedEncryption_.clear(),this.clearKeyDecryptors_.clear(),this.transmuxers_.clear(),this.captionParser_=null,Fe)for(let[t,i]of this.queues_)v.assert(i.length==0,t+" queue should be empty after destroy!");this.queues_.clear(),this.lcevcDec_=null,this.tsParsers_.clear(),this.playerInterface_=null,await Promise.all(e)}removeSources_(){var e,t;this.video_&&(this.video_.removeAttribute("src"),((e=this.source_)==null?void 0:e.parentElement)===this.video_&&this.video_.removeChild(this.source_),((t=this.secondarySource_)==null?void 0:t.parentElement)===this.video_&&this.video_.removeChild(this.secondarySource_))}open(){return this.mediaSourceOpen_.promise}async init(e,t=!1,i=me.UNKNOWN,r=!1){let s=R.ContentType;await this.mediaSourceOpen_.promise,(this.ended()||this.closed())&&(p.alwaysError("Expected MediaSource to be open during init(); reopening the media source."),this.mediaSourceOpen_=Promise.withResolvers(),this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),await this.mediaSourceOpen_.promise),this.sequenceMode_=t,this.manifestType_=i,this.ignoreManifestTimestampsInSegmentsMode_=r,this.attemptTimestampOffsetCalculation_=!this.sequenceMode_&&this.manifestType_==me.HLS&&!this.ignoreManifestTimestampsInSegmentsMode_,this.tsParsers_.clear(),this.firstVideoTimestamp_=null,this.firstVideoReferenceStartTime_=null,this.firstAudioTimestamp_=null,this.firstAudioReferenceStartTime_=null,this.audioCompensation_=Promise.withResolvers();for(let a of e.keys()){let o=e.get(a);this.initSourceBuffer_(a,o,o.codecs),this.needSplitMuxedContent_?(this.queues_.set(s.AUDIO,[]),this.queues_.set(s.VIDEO,[])):this.queues_.set(a,[])}let n=e.get(s.AUDIO);n&&n.isAudioMuxedInVideo&&(this.needSplitMuxedContent_=!0)}initSourceBuffer_(e,t,i){var n;let r=R.ContentType;e==r.AUDIO&&i&&(i=N.getCorrectAudioCodecs(i,t.mimeType)),e==r.VIDEO&&i&&t.mimeType=="video/mp4"&&(i=N.getCorrectVideoCodecs(i));let s=N.getFullType(t.mimeType,i);if(e==r.TEXT)this.reinitText(s,t.external);else{let a=this.config_.forceTransmux;(!Ke.isTypeSupported(s)||!this.sequenceMode_&&N.RAW_FORMATS.includes(s))&&(a=!0);let o=N.getFullTypeWithAllCodecs(t.mimeType,i);if(a){let m=R.guessCodecsSafe(r.AUDIO,(i||"").split(",")),f=R.guessCodecsSafe(r.VIDEO,(i||"").split(","));if(m&&f){this.needSplitMuxedContent_=!0,this.initSourceBuffer_(r.AUDIO,t,m),this.initSourceBuffer_(r.VIDEO,t,f);return}let g=Oe.findTransmuxer(o);if(g){let _=new Is(g(),this.config_.transmuxWorkerUrl);this.transmuxers_.set(e,_),s=_.convertCodecs(e,o)}}let c=this.addExtraFeaturesToMimeType_(s);this.destroyer_.ensureNotDestroyed();let d;try{d=this.mediaSource_.addSourceBuffer(c)}catch(m){throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,m,"The mediaSource_ status was "+this.mediaSource_.readyState+" expected 'open'",null)}this.sequenceMode_&&(d.mode=ri.SourceBufferMode_.SEQUENCE),this.eventManager_.listen(d,"error",()=>this.onError_(e)),this.eventManager_.listen(d,"updateend",()=>this.onUpdateEnd_(e)),this.sourceBuffers_.set(e,d),this.sourceBufferTypes_.set(e,s),this.expectedEncryption_.set(e,!!t.drmInfos.length);let u=this.playerInterface_.getDrmInfo();if(Es.shouldUse(u)){let m=new Es;this.clearKeyDecryptors_.set(e,m)}else(n=this.clearKeyDecryptors_.get(e))==null||n.destroy(),this.clearKeyDecryptors_.delete(e)}}configure(e){this.config_=e,this.textEngine_&&this.textEngine_.setModifyCueCallback(e.modifyCueCallback)}isStreamingAllowed(){return this.streamingAllowed_&&!this.usingRemotePlayback_&&!this.reloadingMediaSource_}isReloadingMediaSource(){return this.reloadingMediaSource_}reinitText(e,t){this.textEngine_||(this.textEngine_=new Ue(this.textDisplayer_,this.manifestType_),this.textEngine_&&this.textEngine_.setModifyCueCallback(this.config_.modifyCueCallback)),this.textEngine_.initParser(e,t,this.segmentRelativeVttTiming_)}ended(){return this.reloadingMediaSource_?!1:this.mediaSource_?this.mediaSource_.readyState=="ended":!0}closed(){return this.reloadingMediaSource_?!1:this.mediaSource_?this.mediaSource_.readyState=="closed":!0}bufferStart(e){if(!this.sourceBuffers_.size)return null;let t=R.ContentType;return e==t.TEXT?this.textEngine_.bufferStart():Je.bufferStart(this.getBuffered_(e))}bufferEnd(e){if(!this.sourceBuffers_.size)return null;let t=R.ContentType;return e==t.TEXT?this.textEngine_.bufferEnd():Je.bufferEnd(this.getBuffered_(e))}isBuffered(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.isBuffered(t);{let r=this.getBuffered_(e);return Je.isBuffered(r,t)}}bufferedAheadOf(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.bufferedAheadOf(t);{let r=this.getBuffered_(e);return Je.bufferedAheadOf(r,t)}}bufferedBehindOf(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.bufferedBehindOf(t);{let r=this.getBuffered_(e);return Je.bufferedBehindOf(r,t)}}getBufferedInfo(){let e=R.ContentType,t={total:this.reloadingMediaSource_?[]:Je.getBufferedInfo(this.video_.buffered),audio:Je.getBufferedInfo(this.getBuffered_(e.AUDIO)),video:Je.getBufferedInfo(this.getBuffered_(e.VIDEO)),text:[]};if(this.textEngine_){let i=this.textEngine_.bufferStart(),r=this.textEngine_.bufferEnd();i!=null&&r!=null&&t.text.push({start:i,end:r})}return t}getBuffered_(e){if(!this.canPerformOperations_())return null;try{return this.sourceBuffers_.get(e).buffered}catch(t){return this.sourceBuffers_.has(e)&&p.error("failed to get buffered range for "+e,t),null}}getCaptionParser(e){return new Rt(e)}getTimestampAndDispatchMetadata(e,t,i,r,s,n=!1){let a=null,o=[],c=D.toUint8(t);if(N.RAW_FORMATS.includes(s)){let d=It.getID3Frames(c);if(d.length&&i){let u=d.find(f=>f.description==="com.apple.streaming.transportStreamTimestamp");u&&typeof u.data=="number"&&(a=Math.round(u.data)/1e3);let m={cueTime:i.startTime,data:c,frames:d,dts:i.startTime,pts:i.startTime};this.playerInterface_.onMetadata([m],0,i.endTime)}}else if(s.includes("/mp4")&&i&&i.initSegmentReference){let d=new F,u=r.emsgSchemeIdUris!=null&&r.emsgSchemeIdUris.length>0||this.config_.dispatchAllEmsgBoxes,m=[];u&&d.fullBox("emsg",S=>{let b=this.parseEMSG_(i,r.emsgSchemeIdUris,S);b&&m.push(b)});let f=i.initSegmentReference.timescale,g=f&&!isNaN(f),_=0,T=!1;g&&d.fullBox("prft",S=>{v.assert(typeof f=="number","Timescale should be a number!"),this.parsePrft_(f,S)}).boxes(F.FRAGMENT_PATH,F.children).fullBox("tfdt",S=>{T||(v.assert(S.version==0||S.version==1,"TFDT version can only be 0 or 1"),v.assert(typeof f=="number","Timescale should be a number!"),_=pe.parseTFDTInaccurate(S.reader,S.version).baseMediaDecodeTime/f,T=!0,u||S.parser.stop())}),(u||g)&&d.parse(t,!1,n),T&&i.timestampOffset==0&&(a=_);for(let S of m)this.dispatchEmsg_(S,i,a)}else if(!s.includes("/mp4")&&!s.includes("/webm")&&pt.probe(c)){let d=this.tsParsers_.getOrInsertComputed(e,()=>new pt);d.clearData(),d.setDiscontinuitySequence(i.discontinuitySequence),d.parse(c);let u=d.getStartTimeFromPesHeaders(e);u!=null&&(a=u),o=d.getMetadata()}return{timestamp:a,metadata:o}}parseEMSG_(e,t,i){let r,s,n,a,o,c,d;i.version===0?(a=i.reader.readTerminatedString(),d=i.reader.readTerminatedString(),r=i.reader.readUint32(),c=i.reader.readUint32(),n=i.reader.readUint32(),s=i.reader.readUint32(),o=e.startTime+c/r):(r=i.reader.readUint32(),o=i.reader.readUint64()/r+e.timestampOffset,c=o-e.startTime,n=i.reader.readUint32(),s=i.reader.readUint32(),a=i.reader.readTerminatedString(),d=i.reader.readTerminatedString());let u=i.reader.readBytes(i.reader.getLength()-i.reader.getPosition(),!0);if(t&&t.includes(a)||this.config_.dispatchAllEmsgBoxes)if(a=="urn:mpeg:dash:event:2012")this.playerInterface_.onManifestUpdate();else{let m=o;return(a!=="https://aomedia.org/emsg/ID3"||n!==4294967295)&&(m+=n/r),{startTime:o,endTime:m,schemeIdUri:a,value:d,timescale:r,presentationTimeDelta:c,eventDuration:n,id:s,messageData:u}}return null}dispatchEmsg_(e,t,i){let r=jt.isFloatEqual(e.startTime,t.startTime+e.presentationTimeDelta/e.timescale);if(i&&this.manifestType_==me.HLS&&!r){let s=-i+t.startTime;e.startTime=e.startTime+s,e.endTime=e.endTime+s}if(this.playerInterface_.onEmsg(e),e.messageData&&(e.schemeIdUri=="https://aomedia.org/emsg/ID3"||e.schemeIdUri=="https://developer.apple.com/streaming/emsg-id3")){let s=It.getID3Frames(e.messageData);if(s.length){let n=e.startTime,a={cueTime:n,data:e.messageData,frames:s,dts:n,pts:n};this.playerInterface_.onMetadata([a],0,e.endTime)}}}parsePrft_(e,t){v.assert(t.version==0||t.version==1,"PRFT version can only be 0 or 1");let i=pe.parsePRFTInaccurate(t.reader,t.version),r=Wr.convertNtp(i.ntpTimestamp),s=new Date(r-i.mediaTime/e*1e3),n={wallClockTime:r,programStartDate:s},a=U.EventName.Prft,o=new Map().set("detail",n),c=new U(a,o);this.playerInterface_.onEvent(c)}dispatchBufferAppending_(e,t,i=!1){let r=U.EventName.BufferAppending,s=new Map().set("data",t).set("contentType",e).set("isInitData",i),n=new U(r,s);this.playerInterface_.onEvent(n)}async appendBuffer(e,t,i,r,s,n=!1,a=!1,o=!1,c=!1,d){let u=R.ContentType;if(e==u.TEXT)return await this.textEngine_.appendBuffer(t,i?i.startTime:null,i?i.endTime:null,i?i.getUris()[0]:null,i?i.discontinuitySequence:-1),{mediaTimestamp:null};if(!c&&this.needSplitMuxedContent_){let T=await this.appendBuffer(u.AUDIO,t,i,r,s,n,a,o,!0),S=await this.appendBuffer(u.VIDEO,t,i,r,s,n,a,o,!0);return S.mediaTimestamp!=null?S:T}if(!this.sourceBuffers_.has(e))return p.warning("Attempted to restore a non-existent source buffer"),{mediaTimestamp:null};let m=this.sourceBuffers_.get(e).timestampOffset,f=null;this.ended()&&this.enqueueOperation_(e,()=>this.reopenMediaSource_(e),null);let g=this.sourceBufferTypes_.get(e);if(this.transmuxers_.has(e)&&(g=this.transmuxers_.get(e).getOriginalMimeType()),i){let{timestamp:T,metadata:S}=this.getTimestampAndDispatchMetadata(e,t,i,r,g,o);if(T!=null){if(f=T,this.firstVideoTimestamp_==null&&e==u.VIDEO&&(this.firstVideoTimestamp_=T,this.firstVideoReferenceStartTime_=i.startTime,this.firstAudioTimestamp_!=null)){let M=0;this.firstVideoReferenceStartTime_==this.firstAudioReferenceStartTime_&&(M=this.firstVideoTimestamp_-this.firstAudioTimestamp_),this.audioCompensation_.resolve(M)}if(this.firstAudioTimestamp_==null&&e==u.AUDIO&&(this.firstAudioTimestamp_=T,this.firstAudioReferenceStartTime_=i.startTime,this.firstVideoTimestamp_!=null)){let M=0;this.firstVideoReferenceStartTime_==this.firstAudioReferenceStartTime_&&(M=this.firstVideoTimestamp_-this.firstAudioTimestamp_),this.audioCompensation_.resolve(M)}let b=T,E=N.RAW_FORMATS;!this.sequenceMode_&&E.includes(this.sourceBufferTypes_.get(e))&&(b=0);let C=i.startTime-b;(Math.abs(m-C)>=.001||n||a)&&(!o||C>0||!m)&&(m=C,this.attemptTimestampOffsetCalculation_&&(this.enqueueOperation_(e,()=>this.abort_(e),null),this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,m),null))),(e==u.VIDEO||!this.sourceBuffers_.has(u.VIDEO))&&this.textEngine_&&(this.textEngine_.setTimestampOffset(m,i.discontinuitySequence),this.textEngine_.setContainerIsMpegTs((g||"").includes("mp2t")))}S.length&&this.playerInterface_.onMetadata(S,m,i?i.endTime:null)}if(s&&e==u.VIDEO){if(this.textEngine_||this.reinitText(N.CEA608_CLOSED_CAPTION_MIMETYPE,!1),!this.captionParser_){let T=g.split(";",1)[0];this.captionParser_=this.getCaptionParser(T)}if(!i)this.captionParser_.init(t,a,d);else{let T=this.captionParser_.parseFrom(t);T.length&&this.textEngine_.storeAndAppendClosedCaptions(T,m)}}if(this.transmuxers_.has(e)){let T=await this.transmuxers_.get(e).transmux(t,r,i,this.mediaSource_.duration,e);if(ArrayBuffer.isView(T))t=T;else{let S=T;if(S.init!=null){let b=S.init;this.enqueueOperation_(e,()=>{this.append_(e,b,m,r,!0)},i?i.getUris()[0]:null)}t=S.data}}if(t=this.workAroundBrokenPlatforms_(r,t,i,e),this.clearKeyDecryptors_.has(e)){let T=N.getContainerType(this.sourceBufferTypes_.get(e))=="mp4",S=this.playerInterface_.getDrmInfo();if(T&&S){let b=i===null;t=await this.clearKeyDecryptors_.get(e).decrypt(t,b,S)}}if(i&&this.sequenceMode_&&e!=u.TEXT&&(n||a)){let T=i.startTime;if(this.manifestType_==me.HLS&&!this.needSplitMuxedContent_&&e==u.AUDIO&&this.sourceBuffers_.has(u.VIDEO)){let S=await this.audioCompensation_.promise;Math.abs(S)>.15&&(T-=S)}this.enqueueOperation_(e,()=>this.abort_(e),null),this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,T),null)}let _=null;if(await this.enqueueOperation_(e,()=>{Fe&&i&&!i.isPreload()&&!o&&(_=this.getBuffered_(e)),this.append_(e,t,m,r,!i)},i?i.getUris()[0]:null),Fe&&i&&!i.isPreload()&&!o&&this.manifestType_!==me.MSF){let T=this.getBuffered_(e),S=Je.computeAddedRange(_,T);if(S){let b=i.endTime-i.startTime,E=S.end-S.start,C=Math.abs(S.end-i.endTime);b>.1&&(C>b/2||Math.abs(b-E)>.03)&&p.error("Possible encoding problem detected!","Unexpected buffered range for reference",i,"from URIs",i.getUris(),"should be",{start:i.startTime,end:i.endTime},"but got",S)}}return{mediaTimestamp:f}}setSelectedClosedCaptionId(e){let t=R.ContentType.VIDEO,i=this.bufferEnd(t)||0;this.textEngine_.setSelectedClosedCaptionId(e,i)}clearSelectedClosedCaptionId(){this.textEngine_&&this.textEngine_.setSelectedClosedCaptionId("",0)}async remove(e,t,i,r){let s=R.ContentType;if(e==s.VIDEO&&this.captionParser_){this.captionParser_.remove(r);let n=this.textEngine_.bufferStart()||0;this.textEngine_.remove(n,i,!0)}e==s.TEXT?await this.textEngine_.remove(t,i):i>t&&(await this.enqueueOperation_(e,()=>this.remove_(e,t,i),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(s.AUDIO,()=>this.remove_(s.AUDIO,t,i),null))}async clear(e){let t=R.ContentType;if(e==t.TEXT){if(!this.textEngine_)return;await this.textEngine_.remove(0,1/0)}else e===t.VIDEO&&this.captionParser_&&this.textEngine_&&await this.textEngine_.remove(0,1/0,!0),await this.enqueueOperation_(e,()=>this.remove_(e,0,this.mediaSource_.duration),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(t.AUDIO,()=>this.remove_(t.AUDIO,0,this.mediaSource_.duration),null)}resetCaptionParser(){this.captionParser_&&this.captionParser_.reset()}async flush(e){let t=R.ContentType;e!=t.TEXT&&(await this.enqueueOperation_(e,()=>this.flush_(e),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(t.AUDIO,()=>this.flush_(t.AUDIO),null))}async setStreamProperties(e,t,i,r,s,n,a,o){let c=R.ContentType;if(e==c.TEXT){s||this.textEngine_.setTimestampOffset(t),this.textEngine_.setAppendWindow(i,r);return}let d=[];await this.codecSwitchIfNecessary_(e,n,a,o)||(d.push(this.enqueueOperation_(e,()=>this.abort_(e),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.abort_(c.AUDIO),null))),s||(d.push(this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,t),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.setTimestampOffset_(c.AUDIO,t),null))),(i!=0||r!=1/0)&&(d.push(this.enqueueOperation_(e,()=>this.setAppendWindow_(e,i,r),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.setAppendWindow_(c.AUDIO,i,r),null))),d.length&&await Promise.all(d)}async resync(e,t){let i=R.ContentType;if(e==i.TEXT||!this.sequenceMode_)return;let r=this.bufferEnd(e);r&&Math.abs(r-t)<.15||(this.enqueueOperation_(e,()=>this.abort_(e),null),this.needSplitMuxedContent_&&this.enqueueOperation_(i.AUDIO,()=>this.abort_(i.AUDIO),null),await this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,t),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(i.AUDIO,()=>this.setTimestampOffset_(i.AUDIO,t),null))}async endOfStream(e){await this.enqueueBlockingOperation_(()=>{this.ended()||this.closed()||(e?this.mediaSource_.endOfStream(e):this.mediaSource_.endOfStream())})}async setDuration(e){await this.enqueueBlockingOperation_(()=>{if(this.config_.durationReductionEmitsUpdateEnd&&e<this.mediaSource_.duration)for(let t of this.sourceBuffers_.keys()){let i={start:()=>{},p:Promise.withResolvers(),uri:null};this.queues_.get(t).unshift(i)}this.mediaSource_.duration=e,this.lastDuration_=e})}getDuration(){return this.mediaSource_.duration}async setLiveSeekableRange(e,t){!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||(v.assert("setLiveSeekableRange"in this.mediaSource_,"Using setLiveSeekableRange on not supported platform"),this.usesLiveSeekableRange_=!0,await this.enqueueBlockingOperation_(()=>{!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||this.mediaSource_.setLiveSeekableRange(e,t)}))}async clearLiveSeekableRange(){!this.canPerformOperations_()||!this.usesLiveSeekableRange_||this.mediaSource_.duration!==1/0||(v.assert("clearLiveSeekableRange"in this.mediaSource_,"Using clearLiveSeekableRange on not supported platform"),this.usesLiveSeekableRange_=!1,await this.enqueueBlockingOperation_(()=>{!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||this.mediaSource_.clearLiveSeekableRange()}))}appendDependency(e,t,i){this.lcevcDec_&&this.lcevcDec_.appendBuffer(e,t,i)}removeDependency(e,t,i){this.lcevcDec_&&this.lcevcDec_.removeBuffer(e,t,i)}append_(e,t,i,r,s=!1){this.appendDependency(t,i,r),this.dispatchBufferAppending_(e,t,s),this.sourceBuffers_.get(e).appendBuffer(t)}remove_(e,t,i){if(i<=t){this.onUpdateEnd_(e);return}this.removeDependency(e,t,i),this.sourceBuffers_.get(e).remove(t,i)}abort_(e){let t=this.sourceBuffers_.get(e),i=t.appendWindowStart,r=t.appendWindowEnd;t.abort(),t.appendWindowStart=i,t.appendWindowEnd=r,this.onUpdateEnd_(e)}reopenMediaSource_(e){let t=this.sourceBuffers_.get(e);if(!this.ended()){this.onUpdateEnd_(e);return}let i=t.buffered,r=i.length?i.end(i.length-1):0;t.remove(r,r+.001)}flush_(e){v.assert(this.video_.buffered.length==0,"MediaSourceEngine.flush_ should only be used after clearing all data!"),this.video_.currentTime-=.001,this.onUpdateEnd_(e)}setTimestampOffset_(e,t){t<0&&(t+=.001),this.sourceBuffers_.get(e).timestampOffset=t,this.onUpdateEnd_(e)}setAppendWindow_(e,t,i){let r=this.sourceBuffers_.get(e);(r.appendWindowEnd!==i||r.appendWindowStart!==t)&&(r.appendWindowStart=0,r.appendWindowEnd=i,r.appendWindowStart=t),this.onUpdateEnd_(e)}onError_(e){let t=this.queues_.get(e)[0];v.assert(t,"Spurious error event!"),v.assert(!this.sourceBuffers_.get(e).updating,"SourceBuffer should not be updating on error!");let i=this.video_.error?this.video_.error.code:0;t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_FAILED,i,t.uri))}onUpdateEnd_(e){if(this.reloadingMediaSource_||this.destroyer_.destroyed()){let i=this.queues_.get(e);if(i&&i.length){let r=i[0];r&&r.p&&r.p.resolve(),this.queues_.set(e,[])}return}let t=this.queues_.get(e)[0];v.assert(t,"Spurious updateend event!"),t&&(v.assert(!this.sourceBuffers_.get(e).updating,"SourceBuffer should not be updating on updateend!"),t.p.resolve(),this.popFromQueue_(e))}enqueueOperation_(e,t,i){this.destroyer_.ensureNotDestroyed();let r={start:t,p:Promise.withResolvers(),uri:i};return this.queues_.get(e).push(r),this.queues_.get(e).length==1&&this.startOperation_(e),r.p.promise}async enqueueBlockingOperation_(e){this.destroyer_.ensureNotDestroyed();let t=[],i=Array.from(this.sourceBuffers_.keys()),r=new Map;for(let s of i){let n=Promise.withResolvers(),a={start:()=>n.resolve(),p:n,uri:null},o=this.queues_.get(s);o.push(a),t.push(n.promise),r.set(s,a),o.length==1&&a.start()}try{await Promise.all(t)}catch(s){if(this.destroyer_.destroyed()){for(let n of i){let a=this.queues_.get(n);r.has(n)&&ye.remove(a,r.get(n))}return}throw s}if(Fe)for(let s of i)v.assert(this.sourceBuffers_.get(s).updating==!1,"SourceBuffers should not be updating after a blocking op!");try{await e()}catch(s){let n=this.video_.error?h.getMediaElementErrorDetails(this.video_.error):"No error in the media element";throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,s,n,null)}finally{for(let s of i)this.popFromQueue_(s)}}popFromQueue_(e){v.assert(this.queues_.has(e),"Queue should exist"),this.queues_.get(e).shift(),this.startOperation_(e)}startOperation_(e){let t=this.queues_.get(e)[0];if(t)try{t.start()}catch(i){if(i.name=="QuotaExceededError")t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.QUOTA_EXCEEDED_ERROR,e));else if(!this.isStreamingAllowed())t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.STREAMING_NOT_ALLOWED,e));else{let r=this.video_.error?h.getMediaElementErrorDetails(this.video_.error):"No error in the media element";t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,i,r,t.uri))}this.popFromQueue_(e)}}getTextDisplayer(){return v.assert(this.textDisplayer_,"TextDisplayer should only be null when this is destroyed"),this.textDisplayer_}setTextDisplayer(e){this.textDisplayer_=e,this.textEngine_&&this.textEngine_.setDisplayer(e)}setSegmentRelativeVttTiming(e){this.segmentRelativeVttTiming_=e}workAroundBrokenPlatforms_(e,t,i,r){let s=R.ContentType;if(!(N.getContainerType(this.sourceBufferTypes_.get(r))=="mp4"))return t;let a=i===null,o=this.expectedEncryption_.get(r),c=this.playerInterface_.getKeySystem(),d=!1;i&&i.initSegmentReference&&(d=i.initSegmentReference.encrypted);let u=i?i.getUris()[0]:null,m=j.getDevice();return this.config_.correctEc3Enca&&a&&r===s.AUDIO&&(t=Zi.correctEnca(t)),a&&m.requiresDvvcWorkaround(e)&&(t=Zi.freeDvvcBox(t)),this.config_.insertFakeEncryptionInInit&&o&&m.requiresEncryptionInfoInAllInitSegments(c,r)&&(a?(p.debug("Forcing fake encryption information in init segment."),t=Zi.fakeEncryption(e,t,u,c)):!d&&m.requiresTfhdFix(r)&&(p.debug("Forcing fake encryption information in media segment."),t=Zi.fakeMediaEncryption(t))),a&&m.requiresEC3InitSegments()&&(p.debug("Forcing fake EC-3 information in init segment."),t=Zi.fakeEC3(t)),!a&&e.isIframe&&this.config_.repairIFrames&&(t=Zi.fixBrokenIframes(t)),t}change_(e,t,i){let r=R.ContentType;if(e===r.TEXT){p.debug(`Change not supported for ${e}`);return}let s=this.sourceBufferTypes_.get(e);p.debug(`Change Type: ${s} -> ${t}`);let n=j.getDevice(),a=this.playerInterface_.getKeySystem();if(n.supportsSmoothCodecSwitching(a)){this.transmuxers_.has(e)&&(this.transmuxers_.get(e).destroy(),this.transmuxers_.delete(e)),i&&this.transmuxers_.set(e,i);let o=this.addExtraFeaturesToMimeType_(t);this.sourceBuffers_.get(e).changeType(o),this.sourceBufferTypes_.set(e,t)}else p.debug("Change Type not supported");this.onUpdateEnd_(e)}changeType(e,t,i){return this.enqueueOperation_(e,()=>this.change_(e,t,i),null)}async reset_(e){if(this.reloadingMediaSource_||this.usingRemotePlayback_)return;let t=R.ContentType;this.reloadingMediaSource_=!0,this.needSplitMuxedContent_=!1;let i=this.video_.currentTime,r=this.video_.autoplay;this.video_.paused||(this.playAfterReset_=!0),this.playbackHasBegun_&&(this.video_.autoplay=!1);try{this.eventManager_.removeAll();for(let m of this.transmuxers_.values())m.destroy();for(let m of this.clearKeyDecryptors_.values())m.destroy();for(let m of this.sourceBuffers_.values())try{this.mediaSource_.removeSourceBuffer(m)}catch(f){p.debug("Exception on removeSourceBuffer",f)}this.transmuxers_.clear(),this.sourceBuffers_.clear(),this.clearKeyDecryptors_.clear();let s=this.mediaSource_.duration;this.mediaSourceOpen_=Promise.withResolvers(),this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),await this.mediaSourceOpen_.promise,!isNaN(s)&&s?this.mediaSource_.duration=s:!isNaN(this.lastDuration_)&&this.lastDuration_&&(this.mediaSource_.duration=this.lastDuration_);let n=Promise.withResolvers(),a=this.mediaSource_.sourceBuffers,o=e.size,c=0,d=()=>{c++,c===o&&(n.resolve(),this.eventManager_.unlisten(a,"addsourcebuffer",d))};this.eventManager_.listen(a,"addsourcebuffer",d);for(let m of e.keys()){let f=e.get(m);this.initSourceBuffer_(m,f,f.codecs)}let u=e.get(t.AUDIO);u&&u.isAudioMuxedInVideo&&(this.needSplitMuxedContent_=!0),this.needSplitMuxedContent_&&!this.queues_.has(t.AUDIO)&&this.queues_.set(t.AUDIO,[]),await n.promise}finally{this.reloadingMediaSource_=!1,this.destroyer_.ensureNotDestroyed(),this.eventManager_.listenOnce(this.video_,Kt.LOADED_METADATA,()=>{this.destroyer_.destroyed()||(this.video_.currentTime=i)}),this.eventManager_.listenOnce(this.video_,Kt.CAN_PLAY_THROUGH,()=>{this.destroyer_.destroyed()||(this.video_.autoplay=r,this.playAfterReset_&&(this.playAfterReset_=!1,this.video_.play()))})}}reset(e){return this.enqueueBlockingOperation_(()=>this.reset_(e))}getRealInfo_(e,t,i){let r=R.ContentType,s,n=!1,a=R.guessCodecsSafe(r.AUDIO,(i||"").split(",")),o=R.guessCodecsSafe(r.VIDEO,(i||"").split(",")),c=o;e==r.AUDIO&&(c=a),c||(c=i);let d=N.getFullType(t,c),u=N.getBasicType(this.sourceBufferTypes_.get(e)),m=this.config_.forceTransmux;if(!Ke.isTypeSupported(d)||!this.sequenceMode_&&N.RAW_FORMATS.includes(d)?m=!0:!m&&t!=u&&(m=!j.getDevice().supportsContainerChangeType()&&N.RAW_FORMATS.includes(t)),m){let _=N.getFullTypeWithAllCodecs(t,c),T=Oe.findTransmuxer(_);T&&(s=new Is(T(),this.config_.transmuxWorkerUrl),a&&o&&(n=!0),d=s.convertCodecs(e,_))}!s&&e===r.VIDEO&&a&&(d=N.getFullType(t,i));let f=N.getNormalizedCodec(N.getCodecs(d)),g=N.getBasicType(d);return{transmuxer:s,transmuxerMuxed:n,basicType:g,codec:f,mimeType:d}}getInfoAboutResetOrChangeType_(e,t,i,r){let s=R.ContentType;if(e==s.TEXT)return{type:ri.ResetMode_.NONE,newMimeType:t,transmuxer:null};let n=N.getNormalizedCodec(N.getCodecs(this.sourceBufferTypes_.get(e))),a=N.getBasicType(this.sourceBufferTypes_.get(e)),o=this.getRealInfo_(e,t,i),c=o.transmuxer,d=o.transmuxerMuxed,u=o.basicType,m=o.codec,f=o.mimeType,g=!0;if(d&&this.sourceBufferTypes_.has(s.AUDIO)){let b=this.getRealInfo_(s.AUDIO,t,i),E=N.getNormalizedCodec(N.getCodecs(this.sourceBufferTypes_.get(s.AUDIO))),C=N.getBasicType(this.sourceBufferTypes_.get(s.AUDIO));g=E==b.codec&&C==b.basicType,b.transmuxer&&b.transmuxer.destroy()}if(n===m&&a===u&&g)return{type:ri.ResetMode_.NONE,newMimeType:f,transmuxer:c};let _=!0;(this.needSplitMuxedContent_&&!r.has(s.AUDIO)||d&&c&&!this.transmuxers_.has(e))&&(_=!1);let T=j.getDevice(),S=this.playerInterface_.getKeySystem();return _&&this.config_.codecSwitchingStrategy===Pr.SMOOTH&&T.supportsSmoothCodecSwitching(S)?{type:ri.ResetMode_.CHANGE_TYPE,newMimeType:f,transmuxer:c}:(c&&c.destroy(),{type:ri.ResetMode_.RESET,newMimeType:f,transmuxer:null})}async codecSwitchIfNecessary_(e,t,i,r){let s=R.ContentType,{type:n,transmuxer:a,newMimeType:o}=this.getInfoAboutResetOrChangeType_(e,t,i,r),c=r.get(s.AUDIO);return c&&(this.needSplitMuxedContent_=c.isAudioMuxedInVideo),n==ri.ResetMode_.NONE?(this.transmuxers_.has(e)&&!a?(this.transmuxers_.get(e).destroy(),this.transmuxers_.delete(e)):!this.transmuxers_.has(e)&&a?this.transmuxers_.set(e,a):a&&(this.transmuxers_.has(e)&&this.transmuxers_.get(e).transmux!==a.transmux?(this.transmuxers_.get(e).destroy(),this.transmuxers_.set(e,a)):a.destroy()),!1):(n==ri.ResetMode_.CHANGE_TYPE?await this.changeType(e,o,a):n==ri.ResetMode_.RESET&&(a&&a.destroy(),await this.reset(r)),!0)}isResetMediaSourceNecessary(e,t,i,r){let s=this.getInfoAboutResetOrChangeType_(e,t,i,r);return s.transmuxer&&s.transmuxer.destroy(),s.type==ri.ResetMode_.RESET}updateLcevcDec(e){this.lcevcDec_=e}addExtraFeaturesToMimeType_(e){let t=this.config_.addExtraFeaturesToSourceBuffer(e),i=e+t;return p.debug("Using full mime type",i),i}canPerformOperations_(){return!(!this.mediaSource_||this.destroyer_.destroyed()||this.video_.error||this.usingRemotePlayback_||this.reloadingMediaSource_||this.closed())}};l(ri,"SourceBufferMode_",{SEQUENCE:"sequence",SEGMENTS:"segments"}),l(ri,"ResetMode_",{NONE:"none",RESET:"reset",CHANGE_TYPE:"changeType"});var dr=ri;dr.createObjectURL=window.URL.createObjectURL;/*! @license
300
+ */var Yt=class Yt{constructor(e,t,i,r,s){l(this,"video_");l(this,"playerInterface_");l(this,"config_");l(this,"textDisplayer_");l(this,"sourceBuffers_");l(this,"sourceBufferTypes_");l(this,"expectedEncryption_");l(this,"textEngine_");l(this,"segmentRelativeVttTiming_");l(this,"lcevcDec_");l(this,"queues_");l(this,"eventManager_");l(this,"transmuxers_");l(this,"captionParser_");l(this,"mediaSourceOpen_");l(this,"url_");l(this,"playbackHasBegun_");l(this,"streamingAllowed_");l(this,"usingRemotePlayback_");l(this,"source_");l(this,"secondarySource_");l(this,"mediaSource_");l(this,"reloadingMediaSource_");l(this,"playAfterReset_");l(this,"destroyer_");l(this,"sequenceMode_");l(this,"manifestType_");l(this,"ignoreManifestTimestampsInSegmentsMode_");l(this,"attemptTimestampOffsetCalculation_");l(this,"needSplitMuxedContent_");l(this,"lastDuration_");l(this,"tsParsers_");l(this,"firstVideoTimestamp_");l(this,"firstVideoReferenceStartTime_");l(this,"firstAudioTimestamp_");l(this,"firstAudioReferenceStartTime_");l(this,"audioCompensation_");l(this,"usesLiveSeekableRange_");l(this,"clearKeyDecryptors_");this.video_=e,this.playerInterface_=i,this.config_=r,this.textDisplayer_=t,this.sourceBuffers_=new Map,this.sourceBufferTypes_=new Map,this.expectedEncryption_=new Map,this.textEngine_=null,this.segmentRelativeVttTiming_=!1,this.lcevcDec_=s||null,this.queues_=new Map,this.eventManager_=new ue,this.transmuxers_=new Map,this.captionParser_=null,this.mediaSourceOpen_=Promise.withResolvers(),this.url_="",this.playbackHasBegun_=!1,this.streamingAllowed_=!0,this.usingRemotePlayback_=!1,this.source_=null,this.secondarySource_=null,this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),this.reloadingMediaSource_=!1,this.playAfterReset_=!1,this.destroyer_=new ci(()=>this.doDestroy_()),this.sequenceMode_=!1,this.manifestType_=me.UNKNOWN,this.ignoreManifestTimestampsInSegmentsMode_=!1,this.attemptTimestampOffsetCalculation_=!1,this.needSplitMuxedContent_=!1,this.lastDuration_=null,this.tsParsers_=new Map,this.firstVideoTimestamp_=null,this.firstVideoReferenceStartTime_=null,this.firstAudioTimestamp_=null,this.firstAudioReferenceStartTime_=null,this.audioCompensation_=Promise.withResolvers();let a=j.getDevice().getRemote(this.video_);a&&(this.usingRemotePlayback_=a.state!="disconnected",this.eventManager_.listenMulti(a,["connect","connecting","disconnect"],()=>{this.usingRemotePlayback_=a.state!="disconnected"})),this.usesLiveSeekableRange_=!1,this.clearKeyDecryptors_=new Map}createMediaSource(e){this.streamingAllowed_=!0;let t;return window.ManagedMediaSource?(this.secondarySource_||(this.video_.disableRemotePlayback=!0),t=new ManagedMediaSource,this.eventManager_.listen(t,"startstreaming",()=>{p.info("MMS startstreaming"),this.streamingAllowed_=!0}),this.eventManager_.listen(t,"endstreaming",()=>{p.info("MMS endstreaming"),this.streamingAllowed_=!1})):t=new MediaSource,this.eventManager_.listenOnce(t,"sourceopen",()=>this.onSourceOpen_(e)),this.eventManager_.listenOnce(this.video_,"playing",()=>{this.playbackHasBegun_=!0}),this.url_=Yt.createObjectURL(t),this.removeSources_(),this.config_.useSourceElements?(this.source_=Ge.createSourceElement(this.url_),this.video_.appendChild(this.source_),this.secondarySource_&&this.video_.appendChild(this.secondarySource_),this.video_.load()):this.video_.src=this.url_,t}addSecondarySource(e,t){var i;if(!this.video_||!window.ManagedMediaSource||!this.mediaSource_){p.warning("Secondary source is used only with ManagedMediaSource");return}this.config_.useSourceElements&&(((i=this.secondarySource_)==null?void 0:i.parentElement)===this.video_&&this.video_.removeChild(this.secondarySource_),this.secondarySource_=Ge.createSourceElement(e,t),this.video_.appendChild(this.secondarySource_),this.video_.disableRemotePlayback=!1)}onSourceOpen_(e){v.assert(this.url_,"Must have object URL"),URL.revokeObjectURL(this.url_),e.resolve()}static probeSupport(){let e=['video/mp4; codecs="avc1.42E01E"','video/mp4; codecs="avc3.42E01E"','video/mp4; codecs="hev1.1.6.L93.90"','video/mp4; codecs="hvc1.1.6.L93.90"','video/mp4; codecs="hev1.2.4.L153.B0"; eotf="smpte2084"','video/mp4; codecs="hvc1.2.4.L153.B0"; eotf="smpte2084"','video/mp4; codecs="hvc1.2.20000000.L153.B0"','video/mp4; codecs="hvc1.2.4.L120.b0"','video/mp4; codecs="hvc1.2.4.L123.b0"','video/mp4; codecs="vp9"','video/mp4; codecs="vp09.00.10.08"','video/mp4; codecs="av01.0.01M.08"','video/mp4; codecs="av01.0.31M.10.0.111.09.16.09.0"','video/mp4; codecs="av01.0.31M.10.0.112.09.18.09.0"','video/mp4; codecs="dvh1.05.01"','video/mp4; codecs="dvh1.08.01"','video/mp4; codecs="dav1.10.01"','video/mp4; codecs="dvh1.20.01"','audio/mp4; codecs="mp4a.40.2"','audio/mp4; codecs="ac-3"','audio/mp4; codecs="ec-3"','audio/mp4; codecs="ac-4.02.01.03"','audio/mp4; codecs="opus"','audio/mp4; codecs="flac"','audio/mp4; codecs="dtsc"','audio/mp4; codecs="dtse"','audio/mp4; codecs="dtsx"','audio/mp4; codecs="apac.31.00"','video/webm; codecs="vp8"','video/webm; codecs="vp9"','video/webm; codecs="vp09.00.10.08"','audio/webm; codecs="vorbis"','audio/webm; codecs="opus"','video/mp2t; codecs="avc1.42E01E"','video/mp2t; codecs="avc3.42E01E"','video/mp2t; codecs="hvc1.1.6.L93.90"','video/mp2t; codecs="mp4a.40.2"','video/mp2t; codecs="ac-3"','video/mp2t; codecs="ec-3"',"text/vtt",'application/mp4; codecs="wvtt"',"application/ttml+xml",'application/mp4; codecs="stpp"',...O.RAW_FORMATS],t={},i=j.getDevice();for(let r of e){if(Ue.isTypeSupported(r))t[r]=!0;else if(i.supportsMediaSource()){let n=O.getBasicType(r),a=O.getCorrectAudioCodecs(O.getCodecs(r),n),o=O.getFullType(n,a);t[r]=Ke.isTypeSupported(o)||Ne.isSupported(o)}else t[r]=i.supportsMediaType(r);let s=r.split(";")[0];t[s]=t[s]||t[r]}return t}destroy(){return this.destroyer_.destroy()}async doDestroy_(){let e=[];for(let[t,i]of this.queues_){let r=i[0],s=t;this.queues_.set(s,i.slice(0,1)),r&&e.push(r.p.promise.catch(()=>{}));for(let n of i.slice(1))n.p.reject(ci.destroyedError())}this.textEngine_&&e.push(this.textEngine_.destroy()),await Promise.all(e),e=[];for(let t of this.transmuxers_.values())t.destroy();for(let t of this.clearKeyDecryptors_.values())e.push(t.destroy());if(this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.video_&&(this.removeSources_(),this.video_.load(),this.video_.disableRemotePlayback=!1),this.video_=null,this.source_=null,this.secondarySource_=null,this.config_=null,this.mediaSource_=null,this.textEngine_=null,this.textDisplayer_=null,this.sourceBuffers_.clear(),this.expectedEncryption_.clear(),this.clearKeyDecryptors_.clear(),this.transmuxers_.clear(),this.captionParser_=null,Fe)for(let[t,i]of this.queues_)v.assert(i.length==0,t+" queue should be empty after destroy!");this.queues_.clear(),this.lcevcDec_=null,this.tsParsers_.clear(),this.playerInterface_=null,await Promise.all(e)}removeSources_(){var e,t;this.video_&&(this.video_.removeAttribute("src"),((e=this.source_)==null?void 0:e.parentElement)===this.video_&&this.video_.removeChild(this.source_),((t=this.secondarySource_)==null?void 0:t.parentElement)===this.video_&&this.video_.removeChild(this.secondarySource_))}open(){return this.mediaSourceOpen_.promise}async init(e,t=!1,i=me.UNKNOWN,r=!1){let s=R.ContentType;await this.mediaSourceOpen_.promise,(this.ended()||this.closed())&&(p.alwaysError("Expected MediaSource to be open during init(); reopening the media source."),this.mediaSourceOpen_=Promise.withResolvers(),this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),await this.mediaSourceOpen_.promise),this.sequenceMode_=t,this.manifestType_=i,this.ignoreManifestTimestampsInSegmentsMode_=r,this.attemptTimestampOffsetCalculation_=!this.sequenceMode_&&this.manifestType_==me.HLS&&!this.ignoreManifestTimestampsInSegmentsMode_,this.tsParsers_.clear(),this.firstVideoTimestamp_=null,this.firstVideoReferenceStartTime_=null,this.firstAudioTimestamp_=null,this.firstAudioReferenceStartTime_=null,this.audioCompensation_=Promise.withResolvers();for(let a of e.keys()){let o=e.get(a);this.initSourceBuffer_(a,o,o.codecs),this.needSplitMuxedContent_?(this.queues_.set(s.AUDIO,[]),this.queues_.set(s.VIDEO,[])):this.queues_.set(a,[])}let n=e.get(s.AUDIO);n&&n.isAudioMuxedInVideo&&(this.needSplitMuxedContent_=!0)}initSourceBuffer_(e,t,i){var n;let r=R.ContentType;e==r.AUDIO&&i&&(i=O.getCorrectAudioCodecs(i,t.mimeType)),e==r.VIDEO&&i&&t.mimeType=="video/mp4"&&(i=O.getCorrectVideoCodecs(i));let s=O.getFullType(t.mimeType,i);if(e==r.TEXT)this.reinitText(s,t.external);else{let a=this.config_.forceTransmux;(!Ke.isTypeSupported(s)||!this.sequenceMode_&&O.RAW_FORMATS.includes(s))&&(a=!0);let o=O.getFullTypeWithAllCodecs(t.mimeType,i);if(a){let m=R.guessCodecsSafe(r.AUDIO,(i||"").split(",")),f=R.guessCodecsSafe(r.VIDEO,(i||"").split(","));if(m&&f){this.needSplitMuxedContent_=!0,this.initSourceBuffer_(r.AUDIO,t,m),this.initSourceBuffer_(r.VIDEO,t,f);return}let g=Ne.findTransmuxer(o);if(g){let _=new Is(g(),this.config_.transmuxWorkerUrl);this.transmuxers_.set(e,_),s=_.convertCodecs(e,o)}}let c=this.addExtraFeaturesToMimeType_(s);this.destroyer_.ensureNotDestroyed();let d;try{d=this.mediaSource_.addSourceBuffer(c)}catch(m){throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,m,"The mediaSource_ status was "+this.mediaSource_.readyState+" expected 'open'",null)}this.sequenceMode_&&(d.mode=Yt.SourceBufferMode_.SEQUENCE),this.eventManager_.listen(d,"error",()=>this.onError_(e)),this.eventManager_.listen(d,"updateend",()=>this.onUpdateEnd_(e)),this.sourceBuffers_.set(e,d),this.sourceBufferTypes_.set(e,s),this.expectedEncryption_.set(e,!!t.drmInfos.length);let u=this.playerInterface_.getDrmInfo();if(Es.shouldUse(u)){let m=new Es;this.clearKeyDecryptors_.set(e,m)}else(n=this.clearKeyDecryptors_.get(e))==null||n.destroy(),this.clearKeyDecryptors_.delete(e)}}configure(e){this.config_=e,this.textEngine_&&this.textEngine_.setModifyCueCallback(e.modifyCueCallback)}isStreamingAllowed(){return this.streamingAllowed_&&!this.usingRemotePlayback_&&!this.reloadingMediaSource_}isReloadingMediaSource(){return this.reloadingMediaSource_}reinitText(e,t){this.textEngine_||(this.textEngine_=new Ue(this.textDisplayer_,this.manifestType_),this.textEngine_&&this.textEngine_.setModifyCueCallback(this.config_.modifyCueCallback)),this.textEngine_.initParser(e,t,this.segmentRelativeVttTiming_)}ended(){return this.reloadingMediaSource_?!1:this.mediaSource_?this.mediaSource_.readyState=="ended":!0}closed(){return this.reloadingMediaSource_?!1:this.mediaSource_?this.mediaSource_.readyState=="closed":!0}bufferStart(e){if(!this.sourceBuffers_.size)return null;let t=R.ContentType;return e==t.TEXT?this.textEngine_.bufferStart():Je.bufferStart(this.getBuffered_(e))}bufferEnd(e){if(!this.sourceBuffers_.size)return null;let t=R.ContentType;return e==t.TEXT?this.textEngine_.bufferEnd():Je.bufferEnd(this.getBuffered_(e))}isBuffered(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.isBuffered(t);{let r=this.getBuffered_(e);return Je.isBuffered(r,t)}}bufferedAheadOf(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.bufferedAheadOf(t);{let r=this.getBuffered_(e);return Je.bufferedAheadOf(r,t)}}bufferedBehindOf(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.bufferedBehindOf(t);{let r=this.getBuffered_(e);return Je.bufferedBehindOf(r,t)}}getBufferedInfo(){let e=R.ContentType,t={total:this.reloadingMediaSource_?[]:Je.getBufferedInfo(this.video_.buffered),audio:Je.getBufferedInfo(this.getBuffered_(e.AUDIO)),video:Je.getBufferedInfo(this.getBuffered_(e.VIDEO)),text:[]};if(this.textEngine_){let i=this.textEngine_.bufferStart(),r=this.textEngine_.bufferEnd();i!=null&&r!=null&&t.text.push({start:i,end:r})}return t}hasSourceBufferFor(e){return this.sourceBuffers_.has(e)}getBuffered_(e){if(!this.canPerformOperations_())return null;try{return this.sourceBuffers_.get(e).buffered}catch(t){return this.sourceBuffers_.has(e)&&p.error("failed to get buffered range for "+e,t),null}}getCaptionParser(e){return new Rt(e)}getTimestampAndDispatchMetadata(e,t,i,r,s,n=!1){let a=null,o=[],c=D.toUint8(t);if(O.RAW_FORMATS.includes(s)){let d=It.getID3Frames(c);if(d.length&&i){let u=d.find(f=>f.description==="com.apple.streaming.transportStreamTimestamp");u&&typeof u.data=="number"&&(a=Math.round(u.data)/1e3);let m={cueTime:i.startTime,data:c,frames:d,dts:i.startTime,pts:i.startTime};this.playerInterface_.onMetadata([m],0,i.endTime)}}else if(s.includes("/mp4")&&i&&i.initSegmentReference){let d=new F,u=r.emsgSchemeIdUris!=null&&r.emsgSchemeIdUris.length>0||this.config_.dispatchAllEmsgBoxes,m=[];u&&d.fullBox("emsg",S=>{let b=this.parseEMSG_(i,r.emsgSchemeIdUris,S);b&&m.push(b)});let f=i.initSegmentReference.timescale,g=f&&!isNaN(f),_=0,T=!1;g&&d.fullBox("prft",S=>{v.assert(typeof f=="number","Timescale should be a number!"),this.parsePrft_(f,S)}).boxes(F.FRAGMENT_PATH,F.children).fullBox("tfdt",S=>{T||(v.assert(S.version==0||S.version==1,"TFDT version can only be 0 or 1"),v.assert(typeof f=="number","Timescale should be a number!"),_=pe.parseTFDTInaccurate(S.reader,S.version).baseMediaDecodeTime/f,T=!0,u||S.parser.stop())}),(u||g)&&d.parse(t,!1,n),T&&i.timestampOffset==0&&(a=_);for(let S of m)this.dispatchEmsg_(S,i,a)}else if(!s.includes("/mp4")&&!s.includes("/webm")&&pt.probe(c)){let d=this.tsParsers_.getOrInsertComputed(e,()=>new pt);d.clearData(),d.setDiscontinuitySequence(i.discontinuitySequence),d.parse(c);let u=d.getStartTimeFromPesHeaders(e);u!=null&&(a=u),o=d.getMetadata()}return{timestamp:a,metadata:o}}parseEMSG_(e,t,i){let r,s,n,a,o,c,d;i.version===0?(a=i.reader.readTerminatedString(),d=i.reader.readTerminatedString(),r=i.reader.readUint32(),c=i.reader.readUint32(),n=i.reader.readUint32(),s=i.reader.readUint32(),o=e.startTime+c/r):(r=i.reader.readUint32(),o=i.reader.readUint64()/r+e.timestampOffset,c=o-e.startTime,n=i.reader.readUint32(),s=i.reader.readUint32(),a=i.reader.readTerminatedString(),d=i.reader.readTerminatedString());let u=i.reader.readBytes(i.reader.getLength()-i.reader.getPosition(),!0);if(t&&t.includes(a)||this.config_.dispatchAllEmsgBoxes)if(a=="urn:mpeg:dash:event:2012")this.playerInterface_.onManifestUpdate();else{let m=o;return(a!=="https://aomedia.org/emsg/ID3"||n!==4294967295)&&(m+=n/r),{startTime:o,endTime:m,schemeIdUri:a,value:d,timescale:r,presentationTimeDelta:c,eventDuration:n,id:s,messageData:u}}return null}dispatchEmsg_(e,t,i){let r=jt.isFloatEqual(e.startTime,t.startTime+e.presentationTimeDelta/e.timescale);if(i&&this.manifestType_==me.HLS&&!r){let s=-i+t.startTime;e.startTime=e.startTime+s,e.endTime=e.endTime+s}if(this.playerInterface_.onEmsg(e),e.messageData&&(e.schemeIdUri=="https://aomedia.org/emsg/ID3"||e.schemeIdUri=="https://developer.apple.com/streaming/emsg-id3")){let s=It.getID3Frames(e.messageData);if(s.length){let n=e.startTime,a={cueTime:n,data:e.messageData,frames:s,dts:n,pts:n};this.playerInterface_.onMetadata([a],0,e.endTime)}}}parsePrft_(e,t){v.assert(t.version==0||t.version==1,"PRFT version can only be 0 or 1");let i=pe.parsePRFTInaccurate(t.reader,t.version),r=Wr.convertNtp(i.ntpTimestamp),s=new Date(r-i.mediaTime/e*1e3),n={wallClockTime:r,programStartDate:s},a=U.EventName.Prft,o=new Map().set("detail",n),c=new U(a,o);this.playerInterface_.onEvent(c)}dispatchBufferAppending_(e,t,i=!1){let r=U.EventName.BufferAppending,s=new Map().set("data",t).set("contentType",e).set("isInitData",i),n=new U(r,s);this.playerInterface_.onEvent(n)}async appendBuffer(e,t,i,r,s,n=!1,a=!1,o=!1,c=!1,d){let u=R.ContentType;if(e==u.TEXT)return await this.textEngine_.appendBuffer(t,i?i.startTime:null,i?i.endTime:null,i?i.getUris()[0]:null,i?i.discontinuitySequence:-1),{mediaTimestamp:null};if(!c&&this.needSplitMuxedContent_){let T=await this.appendBuffer(u.VIDEO,t,i,r,s,n,a,o,!0),S=await this.appendBuffer(u.AUDIO,t,i,r,s,n,a,o,!0);return T.mediaTimestamp!=null?T:S}if(!this.sourceBuffers_.has(e))return p.warning("Attempted to restore a non-existent source buffer"),{mediaTimestamp:null};let m=this.sourceBuffers_.get(e).timestampOffset,f=null;this.ended()&&this.enqueueOperation_(e,()=>this.reopenMediaSource_(e),null);let g=this.sourceBufferTypes_.get(e);if(this.transmuxers_.has(e)&&(g=this.transmuxers_.get(e).getOriginalMimeType()),i){let{timestamp:T,metadata:S}=this.getTimestampAndDispatchMetadata(e,t,i,r,g,o);if(T!=null){if(f=T,this.firstVideoTimestamp_==null&&e==u.VIDEO&&(this.firstVideoTimestamp_=T,this.firstVideoReferenceStartTime_=i.startTime,this.firstAudioTimestamp_!=null)){let M=0;this.firstVideoReferenceStartTime_==this.firstAudioReferenceStartTime_&&(M=this.firstVideoTimestamp_-this.firstAudioTimestamp_),this.audioCompensation_.resolve(M)}if(this.firstAudioTimestamp_==null&&e==u.AUDIO&&(this.firstAudioTimestamp_=T,this.firstAudioReferenceStartTime_=i.startTime,this.firstVideoTimestamp_!=null)){let M=0;this.firstVideoReferenceStartTime_==this.firstAudioReferenceStartTime_&&(M=this.firstVideoTimestamp_-this.firstAudioTimestamp_),this.audioCompensation_.resolve(M)}let b,E=Yt.SourceBufferMode_;if(e==u.AUDIO&&this.needSplitMuxedContent_&&!this.sequenceMode_&&this.firstVideoTimestamp_!=null&&this.sourceBuffers_.has(u.VIDEO)&&this.sourceBuffers_.get(u.AUDIO).mode==E.SEGMENTS){let M=this.sourceBuffers_.get(u.VIDEO).timestampOffset,x=await this.audioCompensation_.promise;b=M+x}else{let M=T,x=O.RAW_FORMATS;!this.sequenceMode_&&x.includes(this.sourceBufferTypes_.get(e))&&(M=0),b=i.startTime-M}(Math.abs(m-b)>=.001||n||a)&&(!o||b>0||!m)&&(m=b,this.attemptTimestampOffsetCalculation_&&(this.enqueueOperation_(e,()=>this.abort_(e),null),this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,m),null))),(e==u.VIDEO||!this.sourceBuffers_.has(u.VIDEO))&&this.textEngine_&&(this.textEngine_.setTimestampOffset(m,i.discontinuitySequence),this.textEngine_.setContainerIsMpegTs((g||"").includes("mp2t")))}S.length&&this.playerInterface_.onMetadata(S,m,i?i.endTime:null)}if(s&&e==u.VIDEO){if(this.textEngine_||this.reinitText(O.CEA608_CLOSED_CAPTION_MIMETYPE,!1),!this.captionParser_){let T=g.split(";",1)[0];this.captionParser_=this.getCaptionParser(T)}if(!i)this.captionParser_.init(t,a,d);else{let T=this.captionParser_.parseFrom(t);T.length&&this.textEngine_.storeAndAppendClosedCaptions(T,m)}}if(this.transmuxers_.has(e)){let T=await this.transmuxers_.get(e).transmux(t,r,i,this.mediaSource_.duration,e);if(ArrayBuffer.isView(T))t=T;else{let S=T;if(S.init!=null){let b=S.init;this.enqueueOperation_(e,()=>{this.append_(e,b,m,r,!0)},i?i.getUris()[0]:null)}t=S.data}}if(t=this.workAroundBrokenPlatforms_(r,t,i,e),this.clearKeyDecryptors_.has(e)){let T=O.getContainerType(this.sourceBufferTypes_.get(e))=="mp4",S=this.playerInterface_.getDrmInfo();if(T&&S){let b=i===null;t=await this.clearKeyDecryptors_.get(e).decrypt(t,b,S)}}if(i&&this.sequenceMode_&&e!=u.TEXT&&(n||a)){let T=i.startTime;if(this.manifestType_==me.HLS&&!this.needSplitMuxedContent_&&e==u.AUDIO&&this.sourceBuffers_.has(u.VIDEO)){let S=await this.audioCompensation_.promise;Math.abs(S)>.15&&(T-=S)}this.enqueueOperation_(e,()=>this.abort_(e),null),this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,T),null)}let _=null;if(await this.enqueueOperation_(e,()=>{Fe&&i&&!i.isPreload()&&!o&&(_=this.getBuffered_(e)),this.append_(e,t,m,r,!i)},i?i.getUris()[0]:null),Fe&&i&&!i.isPreload()&&!o&&this.manifestType_!==me.MSF){let T=this.getBuffered_(e),S=Je.computeAddedRange(_,T);if(S){let b=i.endTime-i.startTime,E=S.end-S.start,C=Math.abs(S.end-i.endTime);b>.1&&(C>b/2||Math.abs(b-E)>.03)&&p.error("Possible encoding problem detected!","Unexpected buffered range for reference",i,"from URIs",i.getUris(),"should be",{start:i.startTime,end:i.endTime},"but got",S)}}return{mediaTimestamp:f}}setSelectedClosedCaptionId(e){let t=R.ContentType.VIDEO,i=this.bufferEnd(t)||0;this.textEngine_.setSelectedClosedCaptionId(e,i)}clearSelectedClosedCaptionId(){this.textEngine_&&this.textEngine_.setSelectedClosedCaptionId("",0)}async remove(e,t,i,r){let s=R.ContentType;if(e==s.VIDEO&&this.captionParser_){this.captionParser_.remove(r);let n=this.textEngine_.bufferStart()||0;this.textEngine_.remove(n,i,!0)}e==s.TEXT?await this.textEngine_.remove(t,i):i>t&&(await this.enqueueOperation_(e,()=>this.remove_(e,t,i),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(s.AUDIO,()=>this.remove_(s.AUDIO,t,i),null))}async clear(e){let t=R.ContentType;if(e==t.TEXT){if(!this.textEngine_)return;await this.textEngine_.remove(0,1/0)}else e===t.VIDEO&&this.captionParser_&&this.textEngine_&&await this.textEngine_.remove(0,1/0,!0),await this.enqueueOperation_(e,()=>this.remove_(e,0,this.mediaSource_.duration),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(t.AUDIO,()=>this.remove_(t.AUDIO,0,this.mediaSource_.duration),null)}resetCaptionParser(){this.captionParser_&&this.captionParser_.reset()}async flush(e){let t=R.ContentType;e!=t.TEXT&&(await this.enqueueOperation_(e,()=>this.flush_(e),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(t.AUDIO,()=>this.flush_(t.AUDIO),null))}async setStreamProperties(e,t,i,r,s,n,a,o){let c=R.ContentType;if(e==c.TEXT){s||this.textEngine_.setTimestampOffset(t),this.textEngine_.setAppendWindow(i,r);return}let d=[];await this.codecSwitchIfNecessary_(e,n,a,o)||(d.push(this.enqueueOperation_(e,()=>this.abort_(e),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.abort_(c.AUDIO),null))),s||(d.push(this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,t),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.setTimestampOffset_(c.AUDIO,t),null))),(i!=0||r!=1/0)&&(d.push(this.enqueueOperation_(e,()=>this.setAppendWindow_(e,i,r),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.setAppendWindow_(c.AUDIO,i,r),null))),d.length&&await Promise.all(d)}async resync(e,t){let i=R.ContentType;if(e==i.TEXT||!this.sequenceMode_)return;let r=this.bufferEnd(e);r&&Math.abs(r-t)<.15||(this.enqueueOperation_(e,()=>this.abort_(e),null),this.needSplitMuxedContent_&&this.enqueueOperation_(i.AUDIO,()=>this.abort_(i.AUDIO),null),await this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,t),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(i.AUDIO,()=>this.setTimestampOffset_(i.AUDIO,t),null))}async endOfStream(e){await this.enqueueBlockingOperation_(()=>{this.ended()||this.closed()||(e?this.mediaSource_.endOfStream(e):this.mediaSource_.endOfStream())})}async setDuration(e){await this.enqueueBlockingOperation_(()=>{if(this.config_.durationReductionEmitsUpdateEnd&&e<this.mediaSource_.duration)for(let t of this.sourceBuffers_.keys()){let i={start:()=>{},p:Promise.withResolvers(),uri:null};this.queues_.get(t).unshift(i)}this.mediaSource_.duration=e,this.lastDuration_=e})}getDuration(){return this.mediaSource_.duration}async setLiveSeekableRange(e,t){!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||(v.assert("setLiveSeekableRange"in this.mediaSource_,"Using setLiveSeekableRange on not supported platform"),this.usesLiveSeekableRange_=!0,await this.enqueueBlockingOperation_(()=>{!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||this.mediaSource_.setLiveSeekableRange(e,t)}))}async clearLiveSeekableRange(){!this.canPerformOperations_()||!this.usesLiveSeekableRange_||this.mediaSource_.duration!==1/0||(v.assert("clearLiveSeekableRange"in this.mediaSource_,"Using clearLiveSeekableRange on not supported platform"),this.usesLiveSeekableRange_=!1,await this.enqueueBlockingOperation_(()=>{!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||this.mediaSource_.clearLiveSeekableRange()}))}appendDependency(e,t,i){this.lcevcDec_&&this.lcevcDec_.appendBuffer(e,t,i)}removeDependency(e,t,i){this.lcevcDec_&&this.lcevcDec_.removeBuffer(e,t,i)}append_(e,t,i,r,s=!1){this.appendDependency(t,i,r),this.dispatchBufferAppending_(e,t,s),this.sourceBuffers_.get(e).appendBuffer(t)}remove_(e,t,i){if(i<=t){this.onUpdateEnd_(e);return}this.removeDependency(e,t,i),this.sourceBuffers_.get(e).remove(t,i)}abort_(e){let t=this.sourceBuffers_.get(e),i=t.appendWindowStart,r=t.appendWindowEnd;t.abort(),t.appendWindowStart=i,t.appendWindowEnd=r,this.onUpdateEnd_(e)}reopenMediaSource_(e){let t=this.sourceBuffers_.get(e);if(!this.ended()){this.onUpdateEnd_(e);return}let i=t.buffered,r=i.length?i.end(i.length-1):0;t.remove(r,r+.001)}flush_(e){v.assert(this.video_.buffered.length==0,"MediaSourceEngine.flush_ should only be used after clearing all data!"),this.video_.currentTime-=.001,this.onUpdateEnd_(e)}setTimestampOffset_(e,t){t<0&&(t+=.001),this.sourceBuffers_.get(e).timestampOffset=t,this.onUpdateEnd_(e)}setAppendWindow_(e,t,i){let r=this.sourceBuffers_.get(e);(r.appendWindowEnd!==i||r.appendWindowStart!==t)&&(r.appendWindowStart=0,r.appendWindowEnd=i,r.appendWindowStart=t),this.onUpdateEnd_(e)}onError_(e){let t=this.queues_.get(e)[0];v.assert(t,"Spurious error event!"),v.assert(!this.sourceBuffers_.get(e).updating,"SourceBuffer should not be updating on error!");let i=this.video_.error?this.video_.error.code:0;t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_FAILED,i,t.uri))}onUpdateEnd_(e){if(this.reloadingMediaSource_||this.destroyer_.destroyed()){let i=this.queues_.get(e);if(i&&i.length){let r=i[0];r&&r.p&&r.p.resolve(),this.queues_.set(e,[])}return}let t=this.queues_.get(e)[0];v.assert(t,"Spurious updateend event!"),t&&(v.assert(!this.sourceBuffers_.get(e).updating,"SourceBuffer should not be updating on updateend!"),t.p.resolve(),this.popFromQueue_(e))}enqueueOperation_(e,t,i){this.destroyer_.ensureNotDestroyed();let r={start:t,p:Promise.withResolvers(),uri:i};return this.queues_.get(e).push(r),this.queues_.get(e).length==1&&this.startOperation_(e),r.p.promise}async enqueueBlockingOperation_(e){this.destroyer_.ensureNotDestroyed();let t=[],i=Array.from(this.sourceBuffers_.keys()),r=new Map;for(let s of i){let n=Promise.withResolvers(),a={start:()=>n.resolve(),p:n,uri:null},o=this.queues_.get(s);o.push(a),t.push(n.promise),r.set(s,a),o.length==1&&a.start()}try{await Promise.all(t)}catch(s){if(this.destroyer_.destroyed()){for(let n of i){let a=this.queues_.get(n);r.has(n)&&ye.remove(a,r.get(n))}return}throw s}if(Fe)for(let s of i)v.assert(this.sourceBuffers_.get(s).updating==!1,"SourceBuffers should not be updating after a blocking op!");try{await e()}catch(s){let n=this.video_.error?h.getMediaElementErrorDetails(this.video_.error):"No error in the media element";throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,s,n,null)}finally{for(let s of i)this.popFromQueue_(s)}}popFromQueue_(e){v.assert(this.queues_.has(e),"Queue should exist"),this.queues_.get(e).shift(),this.startOperation_(e)}startOperation_(e){let t=this.queues_.get(e)[0];if(t)try{t.start()}catch(i){if(i.name=="QuotaExceededError")t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.QUOTA_EXCEEDED_ERROR,e));else if(!this.isStreamingAllowed())t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.STREAMING_NOT_ALLOWED,e));else{let r=this.video_.error?h.getMediaElementErrorDetails(this.video_.error):"No error in the media element";t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,i,r,t.uri))}this.popFromQueue_(e)}}getTextDisplayer(){return v.assert(this.textDisplayer_,"TextDisplayer should only be null when this is destroyed"),this.textDisplayer_}setTextDisplayer(e){this.textDisplayer_=e,this.textEngine_&&this.textEngine_.setDisplayer(e)}setSegmentRelativeVttTiming(e){this.segmentRelativeVttTiming_=e}workAroundBrokenPlatforms_(e,t,i,r){let s=R.ContentType;if(!(O.getContainerType(this.sourceBufferTypes_.get(r))=="mp4"))return t;let a=i===null,o=this.expectedEncryption_.get(r),c=this.playerInterface_.getKeySystem(),d=!1;i&&i.initSegmentReference&&(d=i.initSegmentReference.encrypted);let u=i?i.getUris()[0]:null,m=j.getDevice();return this.config_.correctEc3Enca&&a&&r===s.AUDIO&&(t=Zi.correctEnca(t)),a&&m.requiresDvvcWorkaround(e)&&(t=Zi.freeDvvcBox(t)),this.config_.insertFakeEncryptionInInit&&o&&m.requiresEncryptionInfoInAllInitSegments(c,r)&&(a?(p.debug("Forcing fake encryption information in init segment."),t=Zi.fakeEncryption(e,t,u,c)):!d&&m.requiresTfhdFix(r)&&(p.debug("Forcing fake encryption information in media segment."),t=Zi.fakeMediaEncryption(t))),a&&m.requiresEC3InitSegments()&&(p.debug("Forcing fake EC-3 information in init segment."),t=Zi.fakeEC3(t)),!a&&e.isIframe&&this.config_.repairIFrames&&(t=Zi.fixBrokenIframes(t)),t}change_(e,t,i){let r=R.ContentType;if(e===r.TEXT){p.debug(`Change not supported for ${e}`);return}let s=this.sourceBufferTypes_.get(e);p.debug(`Change Type: ${s} -> ${t}`);let n=j.getDevice(),a=this.playerInterface_.getKeySystem();if(n.supportsSmoothCodecSwitching(a)){this.transmuxers_.has(e)&&(this.transmuxers_.get(e).destroy(),this.transmuxers_.delete(e)),i&&this.transmuxers_.set(e,i);let o=this.addExtraFeaturesToMimeType_(t);this.sourceBuffers_.get(e).changeType(o),this.sourceBufferTypes_.set(e,t)}else p.debug("Change Type not supported");this.onUpdateEnd_(e)}changeType(e,t,i){return this.enqueueOperation_(e,()=>this.change_(e,t,i),null)}async reset_(e){if(this.reloadingMediaSource_||this.usingRemotePlayback_)return;let t=R.ContentType;this.reloadingMediaSource_=!0,this.needSplitMuxedContent_=!1;let i=this.video_.currentTime,r=this.video_.autoplay;this.video_.paused||(this.playAfterReset_=!0),this.playbackHasBegun_&&(this.video_.autoplay=!1);try{this.eventManager_.removeAll();for(let m of this.transmuxers_.values())m.destroy();for(let m of this.clearKeyDecryptors_.values())m.destroy();for(let m of this.sourceBuffers_.values())try{this.mediaSource_.removeSourceBuffer(m)}catch(f){p.debug("Exception on removeSourceBuffer",f)}this.transmuxers_.clear(),this.sourceBuffers_.clear(),this.clearKeyDecryptors_.clear();let s=this.mediaSource_.duration;this.mediaSourceOpen_=Promise.withResolvers(),this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),await this.mediaSourceOpen_.promise,!isNaN(s)&&s?this.mediaSource_.duration=s:!isNaN(this.lastDuration_)&&this.lastDuration_&&(this.mediaSource_.duration=this.lastDuration_);let n=Promise.withResolvers(),a=this.mediaSource_.sourceBuffers,o=e.size,c=0,d=()=>{c++,c===o&&(n.resolve(),this.eventManager_.unlisten(a,"addsourcebuffer",d))};this.eventManager_.listen(a,"addsourcebuffer",d);for(let m of e.keys()){let f=e.get(m);this.initSourceBuffer_(m,f,f.codecs)}let u=e.get(t.AUDIO);u&&u.isAudioMuxedInVideo&&(this.needSplitMuxedContent_=!0),this.needSplitMuxedContent_&&!this.queues_.has(t.AUDIO)&&this.queues_.set(t.AUDIO,[]),await n.promise}finally{this.reloadingMediaSource_=!1,this.destroyer_.ensureNotDestroyed(),this.eventManager_.listenOnce(this.video_,Kt.LOADED_METADATA,()=>{this.destroyer_.destroyed()||(this.video_.currentTime=i)}),this.eventManager_.listenOnce(this.video_,Kt.CAN_PLAY_THROUGH,()=>{this.destroyer_.destroyed()||(this.video_.autoplay=r,this.playAfterReset_&&(this.playAfterReset_=!1,this.video_.play()))})}}reset(e){return this.enqueueBlockingOperation_(()=>this.reset_(e))}getRealInfo_(e,t,i){let r=R.ContentType,s,n=!1,a=R.guessCodecsSafe(r.AUDIO,(i||"").split(",")),o=R.guessCodecsSafe(r.VIDEO,(i||"").split(",")),c=o;e==r.AUDIO&&(c=a),c||(c=i);let d=O.getFullType(t,c),u=O.getBasicType(this.sourceBufferTypes_.get(e)),m=this.config_.forceTransmux;if(!Ke.isTypeSupported(d)||!this.sequenceMode_&&O.RAW_FORMATS.includes(d)?m=!0:!m&&t!=u&&(m=!j.getDevice().supportsContainerChangeType()&&O.RAW_FORMATS.includes(t)),m){let _=O.getFullTypeWithAllCodecs(t,c),T=Ne.findTransmuxer(_);T&&(s=new Is(T(),this.config_.transmuxWorkerUrl),a&&o&&(n=!0),d=s.convertCodecs(e,_))}!s&&e===r.VIDEO&&a&&(d=O.getFullType(t,i));let f=O.getNormalizedCodec(O.getCodecs(d)),g=O.getBasicType(d);return{transmuxer:s,transmuxerMuxed:n,basicType:g,codec:f,mimeType:d}}getInfoAboutResetOrChangeType_(e,t,i,r){let s=R.ContentType;if(e==s.TEXT)return{type:Yt.ResetMode_.NONE,newMimeType:t,transmuxer:null};let n=O.getNormalizedCodec(O.getCodecs(this.sourceBufferTypes_.get(e))),a=O.getBasicType(this.sourceBufferTypes_.get(e)),o=this.getRealInfo_(e,t,i),c=o.transmuxer,d=o.transmuxerMuxed,u=o.basicType,m=o.codec,f=o.mimeType,g=!0;if(d&&this.sourceBufferTypes_.has(s.AUDIO)){let b=this.getRealInfo_(s.AUDIO,t,i),E=O.getNormalizedCodec(O.getCodecs(this.sourceBufferTypes_.get(s.AUDIO))),C=O.getBasicType(this.sourceBufferTypes_.get(s.AUDIO));g=E==b.codec&&C==b.basicType,b.transmuxer&&b.transmuxer.destroy()}if(n===m&&a===u&&g)return{type:Yt.ResetMode_.NONE,newMimeType:f,transmuxer:c};let _=!0;(this.needSplitMuxedContent_&&!r.has(s.AUDIO)||d&&c&&!this.transmuxers_.has(e))&&(_=!1);let T=j.getDevice(),S=this.playerInterface_.getKeySystem();return _&&this.config_.codecSwitchingStrategy===Pr.SMOOTH&&T.supportsSmoothCodecSwitching(S)?{type:Yt.ResetMode_.CHANGE_TYPE,newMimeType:f,transmuxer:c}:(c&&c.destroy(),{type:Yt.ResetMode_.RESET,newMimeType:f,transmuxer:null})}async codecSwitchIfNecessary_(e,t,i,r){let s=R.ContentType,{type:n,transmuxer:a,newMimeType:o}=this.getInfoAboutResetOrChangeType_(e,t,i,r),c=r.get(s.AUDIO);return c&&(this.needSplitMuxedContent_=c.isAudioMuxedInVideo),n==Yt.ResetMode_.NONE?(this.transmuxers_.has(e)&&!a?(this.transmuxers_.get(e).destroy(),this.transmuxers_.delete(e)):!this.transmuxers_.has(e)&&a?this.transmuxers_.set(e,a):a&&(this.transmuxers_.has(e)&&this.transmuxers_.get(e).transmux!==a.transmux?(this.transmuxers_.get(e).destroy(),this.transmuxers_.set(e,a)):a.destroy()),!1):(n==Yt.ResetMode_.CHANGE_TYPE?await this.changeType(e,o,a):n==Yt.ResetMode_.RESET&&(a&&a.destroy(),await this.reset(r)),!0)}isResetMediaSourceNecessary(e,t,i,r){let s=this.getInfoAboutResetOrChangeType_(e,t,i,r);return s.transmuxer&&s.transmuxer.destroy(),s.type==Yt.ResetMode_.RESET}updateLcevcDec(e){this.lcevcDec_=e}addExtraFeaturesToMimeType_(e){let t=this.config_.addExtraFeaturesToSourceBuffer(e),i=e+t;return p.debug("Using full mime type",i),i}canPerformOperations_(){return!(!this.mediaSource_||this.destroyer_.destroyed()||this.video_.error||this.usingRemotePlayback_||this.reloadingMediaSource_||this.closed())}};l(Yt,"SourceBufferMode_",{SEQUENCE:"sequence",SEGMENTS:"segments"}),l(Yt,"ResetMode_",{NONE:"none",RESET:"reset",CHANGE_TYPE:"changeType"});var dr=Yt;dr.createObjectURL=window.URL.createObjectURL;/*! @license
301
301
  * Shaka Player
302
302
  * Copyright 2016 Google LLC
303
303
  * SPDX-License-Identifier: Apache-2.0
@@ -341,7 +341,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
341
341
  * Shaka Player
342
342
  * Copyright 2016 Google LLC
343
343
  * SPDX-License-Identifier: Apache-2.0
344
- */var Xr=class y{constructor(e,t,i,r,s,n){l(this,"prefetchLimit_");l(this,"stream_");l(this,"fetchDispatcher_");l(this,"segmentPrefetchMap_");l(this,"initSegmentPrefetchMap_");l(this,"iterator_");l(this,"reverse_");l(this,"shouldPrefetchNextSegment_");l(this,"getPlaybackRate_");this.prefetchLimit_=e,this.stream_=t,this.fetchDispatcher_=i,this.segmentPrefetchMap_=new Map,this.initSegmentPrefetchMap_=new Map,this.iterator_=null,this.reverse_=r;let a=(c,d)=>!d.fastSwitching||!c.isPartial()||!c.isLastPartial();this.shouldPrefetchNextSegment_=s||a;let o=()=>1;this.getPlaybackRate_=n||o}replaceFetchDispatcher(e){this.fetchDispatcher_=e;for(let t of this.segmentPrefetchMap_.values())t.replaceFetchDispatcher(e)}prefetchSegmentsByTime(e,t=!1){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let i=y.logPrefix_(this.stream_);if(!this.stream_.segmentIndex)return p.debug(i,"missing segmentIndex"),Promise.resolve();if(this.iterator_||(this.iterator_=this.stream_.segmentIndex.getIteratorForTime(e,!0,this.reverse_)),!this.iterator_)return p.debug(i,"missing iterator"),Promise.resolve();t&&this.iterator_.next();let r=[],s=Math.abs(this.getPlaybackRate_()),n=Math.ceil(this.prefetchLimit_*s);for(;this.segmentPrefetchMap_.size<n;){let a=this.iterator_.next().value;if(!a)break;let o=!0;if(a.isPreload()&&a.endByte!=null&&(o=!1),a.getStatus()==Se.Status.MISSING&&(o=!1),a.getSegmentData(!1)&&(o=!1),o&&a.initSegmentReference&&r.push(this.prefetchInitSegment(a.initSegmentReference)),o&&!this.segmentPrefetchMap_.has(a)){let c=new hn(this.fetchDispatcher_);r.push(c.dispatchFetch(a,this.stream_)),this.segmentPrefetchMap_.set(a,c)}if(!this.shouldPrefetchNextSegment_(a,this.stream_))break}return this.clearInitSegments_(),Promise.all(r)}prefetchInitSegment(e){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let t=y.logPrefix_(this.stream_);if(!this.stream_.segmentIndex)return p.debug(t,"missing segmentIndex"),Promise.resolve();if(e.getSegmentData()||Array.from(this.initSegmentPrefetchMap_.keys()).some(a=>Tt.equal(a,e)))return Promise.resolve();let s=new hn(this.fetchDispatcher_),n=s.dispatchFetch(e,this.stream_);return this.initSegmentPrefetchMap_.set(e,s),n}getPrefetchedSegment(e,t){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let i=y.logPrefix_(this.stream_),r=this.segmentPrefetchMap_;if(e instanceof Tt&&(r=this.initSegmentPrefetchMap_),r.has(e)){let s=r.get(e);return t&&s.setStreamDataCallback(t),e instanceof Se?p.debug(i,"reused prefetched segment at time:",e.startTime,"mapSize",r.size):p.debug(i,"reused prefetched init segment at time, mapSize",r.size),s.getOperation()}else return e instanceof Se?p.debug(i,"missed segment at time:",e.startTime,"mapSize",r.size):p.debug(i,"missed init segment at time, mapSize",r.size),null}clearMap_(e){for(let t of e.keys())t&&this.abortPrefetchedSegment_(t)}resetPosition(){this.iterator_=null}clearAll(){this.clearMap_(this.segmentPrefetchMap_),this.clearMap_(this.initSegmentPrefetchMap_),this.resetPosition();let e=y.logPrefix_(this.stream_);p.debug(e,"cleared all")}removeReference(e){this.abortPrefetchedSegment_(e)}evict(e,t=!1){for(let i of this.segmentPrefetchMap_.keys())e>i.endTime&&this.abortPrefetchedSegment_(i);t&&this.clearInitSegments_()}setReverse(e){this.reverse_=e,this.iterator_&&this.iterator_.setReverse(e)}clearInitSegments_(){if(!this.segmentPrefetchMap_.size)return;let e=Array.from(this.segmentPrefetchMap_.keys());for(let t of this.initSegmentPrefetchMap_.keys())e.some(r=>Tt.equal(r.initSegmentReference,t))||this.abortPrefetchedSegment_(t)}resetLimit(e){v.assert(e>=0,"The new prefetch limit must be >= 0.");let t=y.logPrefix_(this.stream_);p.debug(t,"resetting prefetch limit to",e),this.prefetchLimit_=e;let i=Array.from(this.segmentPrefetchMap_.keys());for(;i.length>e;){let r=i.pop();r&&this.abortPrefetchedSegment_(r)}this.clearInitSegments_()}switchStream(e){e&&e!==this.stream_&&(this.clearAll(),this.stream_=e)}getStream(){return this.stream_}abortPrefetchedSegment_(e){let t=y.logPrefix_(this.stream_),i=this.segmentPrefetchMap_;e instanceof Tt&&(i=this.initSegmentPrefetchMap_);let r=i.get(e);i.delete(e),r&&(r.abort(),e instanceof Se?p.debug(t,"pop and abort prefetched segment at time:",e.startTime):p.debug(t,"pop and abort prefetched init segment"))}static logPrefix_(e){return"SegmentPrefetch("+e.type+":"+e.id+")"}},hn=class{constructor(e){l(this,"fetchDispatcher_");l(this,"streamDataCallback_");l(this,"operation_");this.fetchDispatcher_=e,this.streamDataCallback_=null,this.operation_=null}replaceFetchDispatcher(e){this.fetchDispatcher_=e}dispatchFetch(e,t){let i=new Uint8Array(0);return this.operation_=this.fetchDispatcher_(e,t,async r=>{i.byteLength>0?i=ne.concat(i,r):i=r,this.streamDataCallback_&&(await this.streamDataCallback_(i),i=new Uint8Array(0))}),this.operation_.promise.catch(r=>r instanceof h&&r.code==h.Code.OPERATION_ABORTED?Promise.resolve():Promise.reject(r))}getOperation(){return this.operation_}setStreamDataCallback(e){this.streamDataCallback_=e}abort(){this.operation_&&this.operation_.abort()}};/*! @license
344
+ */var Xr=class y{constructor(e,t,i,r,s,n){l(this,"prefetchLimit_");l(this,"stream_");l(this,"fetchDispatcher_");l(this,"segmentPrefetchMap_");l(this,"initSegmentPrefetchMap_");l(this,"iterator_");l(this,"reverse_");l(this,"shouldPrefetchNextSegment_");l(this,"getPlaybackRate_");this.prefetchLimit_=e,this.stream_=t,this.fetchDispatcher_=i,this.segmentPrefetchMap_=new Map,this.initSegmentPrefetchMap_=new Map,this.iterator_=null,this.reverse_=r;let a=(c,d)=>!d.fastSwitching||!c.isPartial()||!c.isLastPartial();this.shouldPrefetchNextSegment_=s||a;let o=()=>1;this.getPlaybackRate_=n||o}replaceFetchDispatcher(e){this.fetchDispatcher_=e;for(let t of this.segmentPrefetchMap_.values())t.replaceFetchDispatcher(e)}prefetchSegmentsByTime(e,t=!1){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let i=y.logPrefix_(this.stream_);if(!this.stream_.segmentIndex)return p.debug(i,"missing segmentIndex"),Promise.resolve();if(this.iterator_||(this.iterator_=this.stream_.segmentIndex.getIteratorForTime(e,!0,this.reverse_)),!this.iterator_)return p.debug(i,"missing iterator"),Promise.resolve();t&&this.iterator_.next();let r=[],s=Math.abs(this.getPlaybackRate_()),n=Math.ceil(this.prefetchLimit_*s);for(;this.segmentPrefetchMap_.size<n;){let a=this.iterator_.next().value;if(!a)break;let o=!0;if(a.isPreload()&&a.endByte!=null&&(o=!1),a.getStatus()==Se.Status.MISSING&&(o=!1),a.getSegmentData(!1)&&(o=!1),o&&a.initSegmentReference&&r.push(this.prefetchInitSegment(a.initSegmentReference)),o&&!this.segmentPrefetchMap_.has(a)){let c=new hn(this.fetchDispatcher_);r.push(c.dispatchFetch(a,this.stream_)),this.segmentPrefetchMap_.set(a,c)}if(!this.shouldPrefetchNextSegment_(a,this.stream_))break}return this.clearInitSegments_(),Promise.all(r)}prefetchInitSegment(e){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let t=y.logPrefix_(this.stream_);if(!this.stream_.segmentIndex)return p.debug(t,"missing segmentIndex"),Promise.resolve();if(e.getSegmentData()||Array.from(this.initSegmentPrefetchMap_.keys()).some(a=>Tt.equal(a,e)))return Promise.resolve();let s=new hn(this.fetchDispatcher_),n=s.dispatchFetch(e,this.stream_);return this.initSegmentPrefetchMap_.set(e,s),n}getPrefetchedSegment(e,t){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let i=y.logPrefix_(this.stream_),r=this.segmentPrefetchMap_;if(e instanceof Tt&&(r=this.initSegmentPrefetchMap_),r.has(e)){let s=r.get(e);return t&&s.setStreamDataCallback(t),e instanceof Se?p.debug(i,"reused prefetched segment at time:",e.startTime,"mapSize",r.size):p.debug(i,"reused prefetched init segment at time, mapSize",r.size),s.getOperation()}else return e instanceof Se?p.debug(i,"missed segment at time:",e.startTime,"mapSize",r.size):p.debug(i,"missed init segment at time, mapSize",r.size),null}clearMap_(e){for(let t of e.keys())t&&this.abortPrefetchedSegment_(t)}resetPosition(){this.iterator_=null}clearAll(e=!0){this.clearMap_(this.segmentPrefetchMap_),e&&this.clearMap_(this.initSegmentPrefetchMap_),this.resetPosition();let t=y.logPrefix_(this.stream_);p.debug(t,"cleared all")}removeReference(e){this.abortPrefetchedSegment_(e)}evict(e,t=!1){for(let i of this.segmentPrefetchMap_.keys())e>i.endTime&&this.abortPrefetchedSegment_(i);t&&this.clearInitSegments_()}setReverse(e){this.reverse_=e,this.iterator_&&this.iterator_.setReverse(e)}clearInitSegments_(){if(!this.segmentPrefetchMap_.size)return;let e=Array.from(this.segmentPrefetchMap_.keys());for(let t of this.initSegmentPrefetchMap_.keys())e.some(r=>Tt.equal(r.initSegmentReference,t))||this.abortPrefetchedSegment_(t)}resetLimit(e){v.assert(e>=0,"The new prefetch limit must be >= 0.");let t=y.logPrefix_(this.stream_);p.debug(t,"resetting prefetch limit to",e),this.prefetchLimit_=e;let i=Array.from(this.segmentPrefetchMap_.keys());for(;i.length>e;){let r=i.pop();r&&this.abortPrefetchedSegment_(r)}this.clearInitSegments_()}switchStream(e){e&&e!==this.stream_&&(this.clearAll(),this.stream_=e)}getStream(){return this.stream_}abortPrefetchedSegment_(e){let t=y.logPrefix_(this.stream_),i=this.segmentPrefetchMap_;e instanceof Tt&&(i=this.initSegmentPrefetchMap_);let r=i.get(e);i.delete(e),r&&(r.abort(),e instanceof Se?p.debug(t,"pop and abort prefetched segment at time:",e.startTime):p.debug(t,"pop and abort prefetched init segment"))}static logPrefix_(e){return"SegmentPrefetch("+e.type+":"+e.id+")"}},hn=class{constructor(e){l(this,"fetchDispatcher_");l(this,"streamDataCallback_");l(this,"operation_");this.fetchDispatcher_=e,this.streamDataCallback_=null,this.operation_=null}replaceFetchDispatcher(e){this.fetchDispatcher_=e}dispatchFetch(e,t){let i=new Uint8Array(0);return this.operation_=this.fetchDispatcher_(e,t,async r=>{i.byteLength>0?i=ne.concat(i,r):i=r,this.streamDataCallback_&&(await this.streamDataCallback_(i),i=new Uint8Array(0))}),this.operation_.promise.catch(r=>r instanceof h&&r.code==h.Code.OPERATION_ABORTED?Promise.resolve():Promise.reject(r))}getOperation(){return this.operation_}setStreamDataCallback(e){this.streamDataCallback_=e}abort(){this.operation_&&this.operation_.abort()}};/*! @license
345
345
  * Shaka Player
346
346
  * Copyright 2016 Google LLC
347
347
  * SPDX-License-Identifier: Apache-2.0
@@ -349,11 +349,11 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
349
349
  * Shaka Player
350
350
  * Copyright 2016 Google LLC
351
351
  * SPDX-License-Identifier: Apache-2.0
352
- */var Vi=class Vi{static parseMsProRecords_(e,t){let i=[];for(;t<e.byteLength-1;){let r=e.getUint16(t,!0);t+=2;let s=e.getUint16(t,!0);if(t+=2,(s&1)!=0||s+t>e.byteLength)return p.warning("Malformed MS PRO object"),[];let n=D.toUint8(e,t,s);i.push({type:r,value:n}),t+=s}return i}static parseMsPro_(e){let t=0,i=D.toDataView(e),r=i.getUint32(t,!0);return t+=4,r!=e.byteLength?(p.warning("PlayReady Object with invalid length encountered."),[]):(t+=2,Vi.parseMsProRecords_(i,t))}static getLaurl_(e){for(let t of I.getElementsByTagName(e,"DATA"))if(t.children){for(let i of t.children)if(i.tagName=="LA_URL")return I.getTextContents(i)}return""}static getPlayReadyHeaderObject_(e){let t=Vi.PLAYREADY_RECORD_TYPES,r=Vi.parseMsPro_(e).find(a=>a.type===t.RIGHTS_MANAGEMENT);if(!r)return null;let s=q.fromUTF16(r.value,!0),n=I.parseXmlString(s,"WRMHEADER");return n||null}static getLicenseUrl(e){let t=ne.fromBase64(I.getTextContents(e));return Vi.getLicenseFromHeader_(t)}static getLicenseUrlFromPssh(e){let t=ei.getPsshData(e);return Vi.getLicenseFromHeader_(t)}static getLicenseFromHeader_(e){try{let t=Vi.getPlayReadyHeaderObject_(e);return t?Vi.getLaurl_(t):""}catch(t){return""}}};l(Vi,"PLAYREADY_RECORD_TYPES",{RIGHTS_MANAGEMENT:1,RESERVED:2,EMBEDDED_LICENSE:3});var Ri=Vi;/*! @license
352
+ */var Vi=class Vi{static parseMsProRecords_(e,t){let i=[];for(;t<e.byteLength-1;){let r=e.getUint16(t,!0);t+=2;let s=e.getUint16(t,!0);if(t+=2,(s&1)!=0||s+t>e.byteLength)return p.warning("Malformed MS PRO object"),[];let n=D.toUint8(e,t,s);i.push({type:r,value:n}),t+=s}return i}static parseMsPro_(e){let t=0,i=D.toDataView(e),r=i.getUint32(t,!0);return t+=4,r!=e.byteLength?(p.warning("PlayReady Object with invalid length encountered."),[]):(t+=2,Vi.parseMsProRecords_(i,t))}static getLaurl_(e){for(let t of I.getElementsByTagName(e,"DATA"))if(t.children){for(let i of t.children)if(i.tagName=="LA_URL")return I.getTextContents(i)}return""}static getPlayReadyHeaderObject_(e){let t=Vi.PLAYREADY_RECORD_TYPES,r=Vi.parseMsPro_(e).find(a=>a.type===t.RIGHTS_MANAGEMENT);if(!r)return null;let s=q.fromUTF16(r.value,!0),n=I.parseXmlString(s,"WRMHEADER");return n||null}static getLicenseUrl(e){let t=ne.fromBase64(I.getTextContents(e));return Vi.getLicenseFromHeader_(t)}static getLicenseUrlFromPssh(e){let t=ti.getPsshData(e);return Vi.getLicenseFromHeader_(t)}static getLicenseFromHeader_(e){try{let t=Vi.getPlayReadyHeaderObject_(e);return t?Vi.getLaurl_(t):""}catch(t){return""}}};l(Vi,"PLAYREADY_RECORD_TYPES",{RIGHTS_MANAGEMENT:1,RESERVED:2,EMBEDDED_LICENSE:3});var Ri=Vi;/*! @license
353
353
  * Shaka Player
354
354
  * Copyright 2016 Google LLC
355
355
  * SPDX-License-Identifier: Apache-2.0
356
- */var vt=class y{static getBasicInfoFromMimeType(e){let t=N.getBasicType(e),i=t.split("/")[0],r=N.getCodecs(e);return{type:i,mimeType:t,codecs:r,language:null,height:null,width:null,channelCount:null,sampleRate:null,closedCaptions:new Map,videoRange:null,colorGamut:null,frameRate:null,timescale:null,drmInfos:[]}}static getBasicInfoFromTs(e,t,i,r){let s=D.toUint8(e),n=new pt().parse(s),a=n.getCodecs(),o=n.getVideoInfo(),c=[],d=!1,u=!1;if(!t)switch(a.audio){case"aac":case"aac-loas":n.getAudioData().length&&(c.push("mp4a.40.2"),d=!0);break;case"mp3":n.getAudioData().length&&(c.push("mp4a.40.34"),d=!0);break;case"ac3":n.getAudioData().length&&(c.push("ac-3"),d=!0);break;case"ec3":n.getAudioData().length&&(c.push("ec-3"),d=!0);break;case"opus":n.getAudioData().length&&(c.push("opus"),d=!0);break}if(!i)switch(a.video){case"avc":o.codec?c.push(o.codec):c.push("avc1.42E01E"),u=!0;break;case"hvc":o.codec?c.push(o.codec):c.push("hvc1.1.6.L93.90"),u=!0;break;case"av1":c.push("av01.0.01M.08"),u=!0;break}if(!c.length)return null;let m=d&&!u,f=new Map;if(u&&!r){let g=new Rt("video/mp2t");g.parseFrom(e);for(let _ of g.getStreams())f.set(_,_);g.reset()}return{type:m?"audio":"video",mimeType:"video/mp2t",codecs:c.join(", "),language:null,height:o.height,width:o.width,channelCount:null,sampleRate:null,closedCaptions:f,videoRange:null,colorGamut:null,frameRate:o.frameRate,timescale:null,drmInfos:[]}}static getBasicInfoFromMp4(e,t,i){var X;v.assert(e!=null||t!=null,"Either initData or data must be non-null.");let r=[],s=[],n=[],a=!1,o=!1,c=!1,d=O=>{let $=O.toLowerCase();switch($){case"avc1":case"avc3":s.push($+".42E01E"),o=!0;break;case"hev1":case"hvc1":s.push($+".1.6.L93.90"),o=!0;break;case"dvh1":case"dvhe":s.push($+".05.04"),o=!0;break;case"vp09":s.push($+".00.10.08"),o=!0;break;case"av01":s.push($+".0.01M.08"),o=!0;break;case"mp4a":r.push("mp4a.40.2"),a=!0;break;case"ac-3":case"ec-3":case"ac-4":case"opus":case"flac":r.push($),a=!0;break;case"apac":r.push("apac.31.00"),a=!0;break}},u=O=>d(O.name),m=null,f=null,g=null,_=null,T=null,S=null,b=null,E=null,C=null,A=new Map,w=new Set,M=null,x=null,k,L=0,V=[],ee=new Map,oe=null,le=new Map,H;if(e&&t){let O=D.toUint8(e),$=D.toUint8(t);H=ne.concat(O,$)}else t?H=D.toUint8(t):e&&(H=D.toUint8(e));let J=O=>{let $=pe.audioSampleEntry(O.reader);_=$.channelCount,T=$.sampleRate,u(O),O.reader.hasMoreData()&&F.children(O)},Z=O=>{k=O.name;let $=pe.visualSampleEntry(O.reader);g=String($.width),f=String($.height),O.reader.hasMoreData()&&F.children(O)},ce;if(new F().boxes([...F.SAMPLE_TABLE_PATH,...F.FRAGMENT_PATH],F.children).fullBox("tkhd",O=>{v.assert(O.version!=null,"TKHD is a full box and should have a valid version."),oe=pe.parseTKHD(O.reader,O.version).trackId}).fullBox("mdhd",O=>{v.assert(O.version!=null,"MDHD is a full box and should have a valid version.");let $=pe.parseMDHD(O.reader,O.version);m=$.language,oe!==null&&ee.set(oe,$.timescale)}).fullBox("stsd",F.sampleDescription).fullBox("tfhd",O=>{v.assert(O.flags!=null,"A TFHD box should have a valid flags value");let $=pe.parseTFHD(O.reader,O.flags);$.defaultSampleDuration&&(L=$.defaultSampleDuration)}).fullBox("trun",O=>{v.assert(O.version!=null,"A TRUN box should have a valid version value"),v.assert(O.flags!=null,"A TRUN box should have a valid flags value"),V=pe.parseTRUN(O.reader,O.version,O.flags).sampleData}).box("mp4a",O=>{let $=pe.audioSampleEntry(O.reader);_=$.channelCount,T=$.sampleRate,O.reader.hasMoreData()?F.children(O):u(O)}).box("esds",O=>{let $=pe.parseESDS(O.reader);r.push($.codec),a=!0}).boxes(F.GENERIC_AUDIO_SAMPLE_ENTRIES,J).boxes([...F.AVC_HEVC_DV,"vp09","av01"],Z).box("avcC",O=>{let $=k||"";switch(k){case"dvav":$="avc3";break;case"dva1":$="avc1";break}let Ie=pe.parseAVCC($,O.reader);s.push(Ie.codec),o=!0}).box("hvcC",O=>{let $=k||"";switch(k){case"dvh1":$="hvc1";break;case"dvhe":$="hev1";break}let Ie=pe.parseHVCC($,O.reader);s.push(Ie.codec),o=!0}).box("dvcC",O=>{let $=k||"";switch(k){case"hvc1":$="dvh1";break;case"hev1":$="dvhe";break;case"avc1":$="dva1";break;case"avc3":$="dvav";break;case"av01":$="dav1";break}let Ie=pe.parseDVCC($,O.reader);s.push(Ie.codec),o=!0}).box("dvvC",O=>{let $=k||"";switch(k){case"hvc1":$="dvh1";break;case"hev1":$="dvhe";break;case"avc1":$="dva1";break;case"avc3":$="dvav";break;case"av01":$="dav1";break}let Ie=pe.parseDVVC($,O.reader);s.push(Ie.codec),o=!0}).fullBox("vpcC",O=>{let $=k||"",Ie=pe.parseVPCC($,O.reader);s.push(Ie.codec),o=!0}).box("av1C",O=>{let $=k||"";k==="dav1"&&($="av01");let Ie=pe.parseAV1C($,O.reader);s.push(Ie.codec),o=!0}).boxes(["wvtt","stpp"],O=>{n.push(O.name),c=!0}).box("c608",()=>{le.set("CC1","CC1"),oe!==null&&ee.delete(oe)}).box("enca",J).box("encv",Z).box("sinf",F.children).box("frma",O=>{let{codec:$}=pe.parseFRMA(O.reader);d($)}).box("colr",O=>{s=s.map(tt=>tt.startsWith("av01.")?pe.updateAV1CodecWithCOLRBox(tt,O.reader):tt);let{videoRange:$,colorGamut:Ie}=pe.parseCOLR(O.reader);S=$,b=Ie}).fullBox("schm",O=>{M=pe.parseSCHM(O.reader).encryptionScheme}).box("schi",F.children).fullBox("tenc",O=>{v.assert(O.version!=null,"TENC is a full box and should have a valid version."),x=pe.parseTENC(O.reader,O.version).defaultKID}).fullBox("pssh",O=>{v.assert(O.version!=null,"PSSH is a full box and should have a valid version.");let $=O.reader.getDataView();v.assert($.byteOffset>=12,"DataView at incorrect position");let Ie=D.toUint8($,-12,O.size),tt=ne.toHex(Ie);if(w.has(tt))return;w.add(tt);let _t=O.reader.readBytes(16,!1),bt=ne.toHex(_t);ce||(ce=de.getUuidMap(!0));let yt=ce[bt.toLowerCase()];if(!yt)return;let xt=R.createDrmInfo(yt,"cenc",[{initDataType:"cenc",initData:Ie}]);if(de.isPlayReadyKeySystem(yt)&&(xt.licenseServerUri=Ri.getLicenseUrlFromPssh(Ie)),O.version>0){let mt=O.reader.readUint32();for(let Qe=0;Qe<mt;Qe++){let Ft=O.reader.readBytes(16,!1);xt.keyIds.add(ne.toHex(Ft))}}A.set(yt,xt)}).parse(H,!0,!0),!r.length&&!s.length&&!n.length)return null;C=ee.values().next().value;let W=a&&!o;if(o&&!i&&t&&!le.size){let O=new Rt("video/mp4");e&&O.init(e);try{O.parseFrom(t);for(let $ of O.getStreams())le.set($,$)}catch($){p.debug("Error detecting CC streams",$)}O.reset()}let z=r.concat(s).concat(n);M==="cbcs"&&x&&!A.has("com.apple.fps")&&A.set("com.apple.fps",R.createDrmInfo("com.apple.fps",M,null));for(let O of A.values())M&&(O.encryptionScheme=M),x&&O.keyIds.add(x);let ge="video",Y="video/mp4";if(c?(ge="text",Y="application/mp4"):W&&(ge="audio",Y="audio/mp4"),ge==="video"&&C!=null&&V.length){let O=C,$=0;for(let Ie of V)$+=(X=Ie.sampleDuration)!=null?X:L;$>0&&(E=O*V.length/$)}return{type:ge,mimeType:Y,codecs:y.codecsFiltering(z).join(", "),language:m,height:f,width:g,channelCount:_,sampleRate:T,closedCaptions:le,videoRange:S,colorGamut:b,frameRate:E,timescale:C,drmInfos:Array.from(A.values())}}static codecsFiltering(e){let t=R.ContentType,i=y.filterDuplicateCodecs_(e),r=R.guessAllCodecsSafe(t.AUDIO,i),s=R.guessAllCodecsSafe(t.VIDEO,i),n=R.guessAllCodecsSafe(t.TEXT,i),a=y.chooseBetterCodecs_(s),o=r.concat(a).concat(n);return i.length&&!o.length?i:o}static getStartTimeAndDurationFromMp4(e,t){var o;let i=0,r=0,s=[];new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("tfhd",c=>{v.assert(c.flags!=null,"A TFHD box should have a valid flags value"),r=pe.parseTFHD(c.reader,c.flags).defaultSampleDuration}).fullBox("tfdt",c=>{v.assert(c.version==0||c.version==1,"TFDT version can only be 0 or 1"),i=pe.parseTFDTInaccurate(c.reader,c.version).baseMediaDecodeTime/t}).fullBox("trun",c=>{v.assert(c.version!=null,"A TRUN box should have a valid version value"),v.assert(c.flags!=null,"A TRUN box should have a valid flags value"),s=pe.parseTRUN(c.reader,c.version,c.flags).sampleData,c.parser.stop()}).parse(e);let n=0;for(let c of s)n+=(o=c.sampleDuration)!=null?o:r;let a=n/t;return{startTime:i,duration:a}}static filterDuplicateCodecs_(e){let t=new Set,i=[];for(let r of e){let s=N.getCodecBase(r);t.has(s)?p.debug("Ignoring duplicate codec"):(i.push(r),t.add(s))}return i}static chooseBetterCodecs_(e){if(e.length<=1)return e;let t=e.find(r=>r.startsWith("dvav.")||r.startsWith("dva1.")||r.startsWith("dvh1.")||r.startsWith("dvhe.")||r.startsWith("dav1.")||r.startsWith("dvc1.")||r.startsWith("dvi1."));if(!t)return e;let i=`video/mp4; codecs="${t}"`;return Ke.isTypeSupported(i)?[t]:e.filter(r=>r!=t)}static getDefaultKID(e){let t=null;return new F().boxes([...F.SAMPLE_TABLE_PATH,"sinf","schi"],F.children).fullBox("stsd",F.sampleDescription).box("encv",F.visualSampleEntry).box("enca",F.audioSampleEntry).fullBox("tenc",i=>{v.assert(i.version!=null,"TENC is a full box and should have a valid version."),t=pe.parseTENC(i.reader,i.version).defaultKID}).parse(e,!0),t}static async aesDecrypt(e,t,i){let r=t;if(r.cryptoKey||(v.assert(r.fetchKey,"If AES cryptoKey was not preloaded, fetchKey function should be provided"),await r.fetchKey(),v.assert(r.cryptoKey,"AES cryptoKey should now be set")),t.blockCipherMode=="GCM"&&t.bitsKey==256){let a=D.toUint8(e);if(a.byteLength<32)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_GCM_SEGMENT);let o=a.slice(0,16),c=a.slice(16),d={name:"AES-GCM",iv:o,tagLength:128};return window.crypto.subtle.decrypt(d,r.cryptoKey,c)}let s=r.iv;if(!s){s=D.toUint8(new ArrayBuffer(16));let a=r.firstMediaSequenceNumber+i;for(let o=s.byteLength-1;o>=0;o--)s[o]=a&255,a>>=8}let n;return t.blockCipherMode=="CBC"?n={name:"AES-CBC",iv:s}:n={name:"AES-CTR",counter:s,length:64},window.crypto.subtle.decrypt(n,r.cryptoKey,e)}};/*! @license
356
+ */var vt=class y{static getBasicInfoFromMimeType(e){let t=O.getBasicType(e),i=t.split("/")[0],r=O.getCodecs(e);return{type:i,mimeType:t,codecs:r,language:null,height:null,width:null,channelCount:null,sampleRate:null,closedCaptions:new Map,videoRange:null,colorGamut:null,frameRate:null,timescale:null,drmInfos:[]}}static getBasicInfoFromTs(e,t,i,r){let s=D.toUint8(e),n=new pt().parse(s),a=n.getCodecs(),o=n.getVideoInfo(),c=[],d=!1,u=!1;if(!t)switch(a.audio){case"aac":case"aac-loas":n.getAudioData().length&&(c.push("mp4a.40.2"),d=!0);break;case"mp3":n.getAudioData().length&&(c.push("mp4a.40.34"),d=!0);break;case"ac3":n.getAudioData().length&&(c.push("ac-3"),d=!0);break;case"ec3":n.getAudioData().length&&(c.push("ec-3"),d=!0);break;case"opus":n.getAudioData().length&&(c.push("opus"),d=!0);break}if(!i)switch(a.video){case"avc":o.codec?c.push(o.codec):c.push("avc1.42E01E"),u=!0;break;case"hvc":o.codec?c.push(o.codec):c.push("hvc1.1.6.L93.90"),u=!0;break;case"av1":c.push("av01.0.01M.08"),u=!0;break}if(!c.length)return null;let m=d&&!u,f=new Map;if(u&&!r){let g=new Rt("video/mp2t");g.parseFrom(e);for(let _ of g.getStreams())f.set(_,_);g.reset()}return{type:m?"audio":"video",mimeType:"video/mp2t",codecs:c.join(", "),language:null,height:o.height,width:o.width,channelCount:null,sampleRate:null,closedCaptions:f,videoRange:null,colorGamut:null,frameRate:o.frameRate,timescale:null,drmInfos:[]}}static getBasicInfoFromMp4(e,t,i){var X;v.assert(e!=null||t!=null,"Either initData or data must be non-null.");let r=[],s=[],n=[],a=!1,o=!1,c=!1,d=N=>{let $=N.toLowerCase();switch($){case"avc1":case"avc3":s.push($+".42E01E"),o=!0;break;case"hev1":case"hvc1":s.push($+".1.6.L93.90"),o=!0;break;case"dvh1":case"dvhe":s.push($+".05.04"),o=!0;break;case"vp09":s.push($+".00.10.08"),o=!0;break;case"av01":s.push($+".0.01M.08"),o=!0;break;case"mp4a":r.push("mp4a.40.2"),a=!0;break;case"ac-3":case"ec-3":case"ac-4":case"opus":case"flac":r.push($),a=!0;break;case"apac":r.push("apac.31.00"),a=!0;break}},u=N=>d(N.name),m=null,f=null,g=null,_=null,T=null,S=null,b=null,E=null,C=null,A=new Map,w=new Set,M=null,x=null,k,L=0,V=[],ee=new Map,oe=null,le=new Map,H;if(e&&t){let N=D.toUint8(e),$=D.toUint8(t);H=ne.concat(N,$)}else t?H=D.toUint8(t):e&&(H=D.toUint8(e));let J=N=>{let $=pe.audioSampleEntry(N.reader);_=$.channelCount,T=$.sampleRate,u(N),N.reader.hasMoreData()&&F.children(N)},Z=N=>{k=N.name;let $=pe.visualSampleEntry(N.reader);g=String($.width),f=String($.height),N.reader.hasMoreData()&&F.children(N)},ce;if(new F().boxes([...F.SAMPLE_TABLE_PATH,...F.FRAGMENT_PATH],F.children).fullBox("tkhd",N=>{v.assert(N.version!=null,"TKHD is a full box and should have a valid version."),oe=pe.parseTKHD(N.reader,N.version).trackId}).fullBox("mdhd",N=>{v.assert(N.version!=null,"MDHD is a full box and should have a valid version.");let $=pe.parseMDHD(N.reader,N.version);m=$.language,oe!==null&&ee.set(oe,$.timescale)}).fullBox("stsd",F.sampleDescription).fullBox("tfhd",N=>{v.assert(N.flags!=null,"A TFHD box should have a valid flags value");let $=pe.parseTFHD(N.reader,N.flags);$.defaultSampleDuration&&(L=$.defaultSampleDuration)}).fullBox("trun",N=>{v.assert(N.version!=null,"A TRUN box should have a valid version value"),v.assert(N.flags!=null,"A TRUN box should have a valid flags value"),V=pe.parseTRUN(N.reader,N.version,N.flags).sampleData}).box("mp4a",N=>{let $=pe.audioSampleEntry(N.reader);_=$.channelCount,T=$.sampleRate,N.reader.hasMoreData()?F.children(N):u(N)}).box("esds",N=>{let $=pe.parseESDS(N.reader);r.push($.codec),a=!0}).boxes(F.GENERIC_AUDIO_SAMPLE_ENTRIES,J).boxes([...F.AVC_HEVC_DV,"vp09","av01"],Z).box("avcC",N=>{let $=k||"";switch(k){case"dvav":$="avc3";break;case"dva1":$="avc1";break}let Ie=pe.parseAVCC($,N.reader);s.push(Ie.codec),o=!0}).box("hvcC",N=>{let $=k||"";switch(k){case"dvh1":$="hvc1";break;case"dvhe":$="hev1";break}let Ie=pe.parseHVCC($,N.reader);s.push(Ie.codec),o=!0}).box("dvcC",N=>{let $=k||"";switch(k){case"hvc1":$="dvh1";break;case"hev1":$="dvhe";break;case"avc1":$="dva1";break;case"avc3":$="dvav";break;case"av01":$="dav1";break}let Ie=pe.parseDVCC($,N.reader);s.push(Ie.codec),o=!0}).box("dvvC",N=>{let $=k||"";switch(k){case"hvc1":$="dvh1";break;case"hev1":$="dvhe";break;case"avc1":$="dva1";break;case"avc3":$="dvav";break;case"av01":$="dav1";break}let Ie=pe.parseDVVC($,N.reader);s.push(Ie.codec),o=!0}).fullBox("vpcC",N=>{let $=k||"",Ie=pe.parseVPCC($,N.reader);s.push(Ie.codec),o=!0}).box("av1C",N=>{let $=k||"";k==="dav1"&&($="av01");let Ie=pe.parseAV1C($,N.reader);s.push(Ie.codec),o=!0}).boxes(["wvtt","stpp"],N=>{n.push(N.name),c=!0}).box("c608",()=>{le.set("CC1","CC1"),oe!==null&&ee.delete(oe)}).box("enca",J).box("encv",Z).box("sinf",F.children).box("frma",N=>{let{codec:$}=pe.parseFRMA(N.reader);d($)}).box("colr",N=>{s=s.map(tt=>tt.startsWith("av01.")?pe.updateAV1CodecWithCOLRBox(tt,N.reader):tt);let{videoRange:$,colorGamut:Ie}=pe.parseCOLR(N.reader);S=$,b=Ie}).fullBox("schm",N=>{M=pe.parseSCHM(N.reader).encryptionScheme}).box("schi",F.children).fullBox("tenc",N=>{v.assert(N.version!=null,"TENC is a full box and should have a valid version."),x=pe.parseTENC(N.reader,N.version).defaultKID}).fullBox("pssh",N=>{v.assert(N.version!=null,"PSSH is a full box and should have a valid version.");let $=N.reader.getDataView();v.assert($.byteOffset>=12,"DataView at incorrect position");let Ie=D.toUint8($,-12,N.size),tt=ne.toHex(Ie);if(w.has(tt))return;w.add(tt);let _t=N.reader.readBytes(16,!1),bt=ne.toHex(_t);ce||(ce=de.getUuidMap(!0));let yt=ce[bt.toLowerCase()];if(!yt)return;let xt=R.createDrmInfo(yt,"cenc",[{initDataType:"cenc",initData:Ie}]);if(de.isPlayReadyKeySystem(yt)&&(xt.licenseServerUri=Ri.getLicenseUrlFromPssh(Ie)),N.version>0){let mt=N.reader.readUint32();for(let Qe=0;Qe<mt;Qe++){let Ft=N.reader.readBytes(16,!1);xt.keyIds.add(ne.toHex(Ft))}}A.set(yt,xt)}).parse(H,!0,!0),!r.length&&!s.length&&!n.length)return null;C=ee.values().next().value;let W=a&&!o;if(o&&!i&&t&&!le.size){let N=new Rt("video/mp4");e&&N.init(e);try{N.parseFrom(t);for(let $ of N.getStreams())le.set($,$)}catch($){p.debug("Error detecting CC streams",$)}N.reset()}let z=r.concat(s).concat(n);M==="cbcs"&&x&&!A.has("com.apple.fps")&&A.set("com.apple.fps",R.createDrmInfo("com.apple.fps",M,null));for(let N of A.values())M&&(N.encryptionScheme=M),x&&N.keyIds.add(x);let ge="video",Y="video/mp4";if(c?(ge="text",Y="application/mp4"):W&&(ge="audio",Y="audio/mp4"),ge==="video"&&C!=null&&V.length){let N=C,$=0;for(let Ie of V)$+=(X=Ie.sampleDuration)!=null?X:L;$>0&&(E=N*V.length/$)}return{type:ge,mimeType:Y,codecs:y.codecsFiltering(z).join(", "),language:m,height:f,width:g,channelCount:_,sampleRate:T,closedCaptions:le,videoRange:S,colorGamut:b,frameRate:E,timescale:C,drmInfos:Array.from(A.values())}}static codecsFiltering(e){let t=R.ContentType,i=y.filterDuplicateCodecs_(e),r=R.guessAllCodecsSafe(t.AUDIO,i),s=R.guessAllCodecsSafe(t.VIDEO,i),n=R.guessAllCodecsSafe(t.TEXT,i),a=y.chooseBetterCodecs_(s),o=r.concat(a).concat(n);return i.length&&!o.length?i:o}static getStartTimeAndDurationFromMp4(e,t){var o;let i=0,r=0,s=[];new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("tfhd",c=>{v.assert(c.flags!=null,"A TFHD box should have a valid flags value"),r=pe.parseTFHD(c.reader,c.flags).defaultSampleDuration}).fullBox("tfdt",c=>{v.assert(c.version==0||c.version==1,"TFDT version can only be 0 or 1"),i=pe.parseTFDTInaccurate(c.reader,c.version).baseMediaDecodeTime/t}).fullBox("trun",c=>{v.assert(c.version!=null,"A TRUN box should have a valid version value"),v.assert(c.flags!=null,"A TRUN box should have a valid flags value"),s=pe.parseTRUN(c.reader,c.version,c.flags).sampleData,c.parser.stop()}).parse(e);let n=0;for(let c of s)n+=(o=c.sampleDuration)!=null?o:r;let a=n/t;return{startTime:i,duration:a}}static filterDuplicateCodecs_(e){let t=new Set,i=[];for(let r of e){let s=O.getCodecBase(r);t.has(s)?p.debug("Ignoring duplicate codec"):(i.push(r),t.add(s))}return i}static chooseBetterCodecs_(e){if(e.length<=1)return e;let t=e.find(r=>r.startsWith("dvav.")||r.startsWith("dva1.")||r.startsWith("dvh1.")||r.startsWith("dvhe.")||r.startsWith("dav1.")||r.startsWith("dvc1.")||r.startsWith("dvi1."));if(!t)return e;let i=`video/mp4; codecs="${t}"`;return Ke.isTypeSupported(i)?[t]:e.filter(r=>r!=t)}static getDefaultKID(e){let t=null;return new F().boxes([...F.SAMPLE_TABLE_PATH,"sinf","schi"],F.children).fullBox("stsd",F.sampleDescription).box("encv",F.visualSampleEntry).box("enca",F.audioSampleEntry).fullBox("tenc",i=>{v.assert(i.version!=null,"TENC is a full box and should have a valid version."),t=pe.parseTENC(i.reader,i.version).defaultKID}).parse(e,!0),t}static async aesDecrypt(e,t,i){let r=t;if(r.cryptoKey||(v.assert(r.fetchKey,"If AES cryptoKey was not preloaded, fetchKey function should be provided"),await r.fetchKey(),v.assert(r.cryptoKey,"AES cryptoKey should now be set")),t.blockCipherMode=="GCM"&&t.bitsKey==256){let a=D.toUint8(e);if(a.byteLength<32)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_GCM_SEGMENT);let o=a.slice(0,16),c=a.slice(16),d={name:"AES-GCM",iv:o,tagLength:128};return window.crypto.subtle.decrypt(d,r.cryptoKey,c)}let s=r.iv;if(!s){s=D.toUint8(new ArrayBuffer(16));let a=r.firstMediaSequenceNumber+i;for(let o=s.byteLength-1;o>=0;o--)s[o]=a&255,a>>=8}let n;return t.blockCipherMode=="CBC"?n={name:"AES-CBC",iv:s}:n={name:"AES-CTR",counter:s,length:64},window.crypto.subtle.decrypt(n,r.cryptoKey,e)}};/*! @license
357
357
  * Shaka Player
358
358
  * Copyright 2016 Google LLC
359
359
  * SPDX-License-Identifier: Apache-2.0
@@ -361,11 +361,11 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
361
361
  * Shaka Player
362
362
  * Copyright 2016 Google LLC
363
363
  * SPDX-License-Identifier: Apache-2.0
364
- */var Be=class Be{constructor(e,t){l(this,"playerInterface_");l(this,"manifest_");l(this,"config_");l(this,"deferredCloseSegmentIndex_");l(this,"bufferingScale_");l(this,"currentVariant_");l(this,"currentTextStream_");l(this,"textStreamSequenceId_");l(this,"mediaStates_");l(this,"startupComplete_");l(this,"failureCallbackBackoff_");l(this,"fatalError_");l(this,"destroyer_");l(this,"lastMediaSourceReset_");l(this,"audioPrefetchMap_");l(this,"spatialVideoInfo_");l(this,"playRangeStart_");l(this,"playRangeEnd_");l(this,"lastTextMediaStateBeforeUnload_");l(this,"requestedDependencySegments_");l(this,"liveSeekableRangeEventManager_");l(this,"updateLiveSeekableRangeTimer_");l(this,"boundaryTime_");l(this,"crossBoundarySeek_");l(this,"crossBoundaryTimer_");l(this,"crossBoundaryEventManager_");this.playerInterface_=t,this.manifest_=e,this.config_=null,this.deferredCloseSegmentIndex_=new Map,this.bufferingScale_=1,this.currentVariant_=null,this.currentTextStream_=null,this.textStreamSequenceId_=0,this.mediaStates_=new Map,this.startupComplete_=!1,this.failureCallbackBackoff_=null,this.fatalError_=!1,this.destroyer_=new ci(()=>this.doDestroy_()),this.lastMediaSourceReset_=Date.now()/1e3,this.audioPrefetchMap_=new Map,this.spatialVideoInfo_={projection:null,hfov:null},this.playRangeStart_=0,this.playRangeEnd_=1/0,this.lastTextMediaStateBeforeUnload_=null,this.requestedDependencySegments_=[],this.liveSeekableRangeEventManager_=new ue,this.updateLiveSeekableRangeTimer_=new ae(()=>{if(!this.manifest_||!this.playerInterface_){this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop();return}if(!this.manifest_.presentationTimeline.isDynamic()){this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange(),this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop();return}let i=this.manifest_.presentationTimeline.getSeekRangeStart(),r=this.manifest_.presentationTimeline.getSeekRangeEnd();r-i>1?this.playerInterface_.mediaSourceEngine.setLiveSeekableRange(i,r):this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange()}),this.boundaryTime_=null,this.crossBoundarySeek_=!1,this.crossBoundaryTimer_=new ae(()=>{let i=this.playerInterface_.video;i.ended||this.boundaryTime_&&(p.info("Crossing boundary at",this.boundaryTime_),this.crossBoundarySeek_=!0,i.currentTime=this.boundaryTime_,this.boundaryTime_=null)}),this.crossBoundaryEventManager_=new ue}destroy(){return this.destroyer_.destroy()}async doDestroy_(){var t,i,r,s;(t=this.updateLiveSeekableRangeTimer_)==null||t.stop(),this.updateLiveSeekableRangeTimer_=null,(i=this.liveSeekableRangeEventManager_)==null||i.release(),this.liveSeekableRangeEventManager_=null,(r=this.crossBoundaryTimer_)==null||r.stop(),this.crossBoundaryTimer_=null,(s=this.crossBoundaryEventManager_)==null||s.release(),this.crossBoundaryEventManager_=null;let e=[];for(let n of this.mediaStates_.values())this.cancelUpdate_(n),e.push(this.abortOperations_(n)),n.segmentPrefetch&&(n.segmentPrefetch.clearAll(),n.segmentPrefetch=null);for(let n of this.audioPrefetchMap_.values())n.clearAll();await Promise.all(e),this.mediaStates_.clear(),this.audioPrefetchMap_.clear(),this.playerInterface_=null,this.manifest_=null,this.config_=null,this.boundaryTime_=null}configure(e){this.config_=e;let t={maxAttempts:Math.max(e.retryParameters.maxAttempts,2),baseDelay:e.retryParameters.baseDelay,backoffFactor:e.retryParameters.backoffFactor,fuzzFactor:e.retryParameters.fuzzFactor,timeout:0,stallTimeout:0,connectionTimeout:0},i=!0;this.failureCallbackBackoff_=new xr(t,i);let r=R.ContentType;if(e.disableAudioPrefetch){let s=this.mediaStates_.get(r.AUDIO);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null);for(let n of this.audioPrefetchMap_.keys())this.audioPrefetchMap_.get(n).clearAll(),this.audioPrefetchMap_.delete(n)}if(e.disableTextPrefetch){let s=this.mediaStates_.get(r.TEXT);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null)}if(e.disableVideoPrefetch){let s=this.mediaStates_.get(r.VIDEO);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null)}for(let s of this.mediaStates_.keys()){let n=this.mediaStates_.get(s);n.segmentPrefetch?(n.segmentPrefetch.resetLimit(e.segmentPrefetchLimit),e.segmentPrefetchLimit>0||(n.segmentPrefetch.clearAll(),n.segmentPrefetch=null)):e.segmentPrefetchLimit>0&&(n.segmentPrefetch=this.createSegmentPrefetch_(n.stream))}e.disableAudioPrefetch||this.updatePrefetchMapForAudio_()}applyPlayRange(e,t){this.manifest_.presentationTimeline.isDynamic()||(this.playRangeStart_=e,this.playRangeEnd_=t)}async start(e){v.assert(this.config_,"StreamingEngine configure() must be called before init()!"),await this.initStreams_(e||new Map),this.destroyer_.ensureNotDestroyed(),p.debug("init: completed initial Stream setup"),this.startupComplete_=!0}getCurrentVariant(){return this.currentVariant_}getCurrentTextStream(){return this.currentTextStream_}async loadNewTextStream_(e){let t=R.ContentType;v.assert(!this.mediaStates_.has(t.TEXT),"Should not call loadNewTextStream_ while streaming text!"),this.textStreamSequenceId_++;let i=this.textStreamSequenceId_;try{await this.playerInterface_.mediaSourceEngine.clear(t.TEXT)}catch(a){this.playerInterface_&&this.playerInterface_.onError(a)}let r=N.getFullType(e.mimeType,e.codecs);if(this.playerInterface_.mediaSourceEngine.reinitText(r,e.external),this.playerInterface_.mediaSourceEngine.getTextDisplayer().isTextVisible()&&this.textStreamSequenceId_==i){let a=this.createMediaState_(e);this.mediaStates_.set(t.TEXT,a),this.scheduleUpdate_(a,0)}}unloadTextStream(){let e=R.ContentType,t=this.mediaStates_.get(e.TEXT);t&&(this.cancelUpdate_(t),this.abortOperations_(t).catch(()=>{}),this.lastTextMediaStateBeforeUnload_=this.mediaStates_.get(e.TEXT),this.mediaStates_.delete(e.TEXT),t.stream&&t.stream.closeSegmentIndex&&t.stream.closeSegmentIndex()),this.currentTextStream_=null}setTrickPlay(e){let t=R.ContentType;this.updateSegmentIteratorReverse_();let i=this.mediaStates_.get(t.VIDEO);if(!i)return;let r=i.stream;if(r)if(p.debug("setTrickPlay",e),e){let s=r.trickModeVideo;if(!s||i.restoreStreamAfterTrickPlay)return;p.debug("Engaging trick mode stream",s),this.switchInternal_(s,!1,0,!1),i.restoreStreamAfterTrickPlay=r}else{let s=i.restoreStreamAfterTrickPlay;if(!s)return;p.debug("Restoring non-trick-mode stream",s),i.restoreStreamAfterTrickPlay=null,this.switchInternal_(s,!0,0,!1)}}switchVariant(e,t=!1,i=0,r=!1,s=!1){this.currentVariant_=e,this.startupComplete_&&(e.video&&this.switchInternal_(e.video,t,i,r,s),e.audio&&this.switchInternal_(e.audio,t,i,r,s))}async switchTextStream(e){if(this.lastTextMediaStateBeforeUnload_=null,this.currentTextStream_=e,!this.startupComplete_)return;let t=R.ContentType;v.assert(e&&e.type==t.TEXT,"Wrong stream type passed to switchTextStream!"),e.segmentIndex||await e.createSegmentIndex(),this.switchInternal_(e,!0,0,!1)}reloadTextStream(){let e=R.ContentType,t=this.mediaStates_.get(e.TEXT);t&&this.switchInternal_(t.stream,!0,0,!0)}handleDeferredCloseSegmentIndexes_(e){for(let[t,i]of this.deferredCloseSegmentIndex_.entries()){let r=t,s=i;r.includes(e.type)&&(s(),this.deferredCloseSegmentIndex_.delete(r))}}switchInternal_(e,t,i,r,s){let n=R.ContentType,a=e.type,o=this.mediaStates_.get(a);if(!o&&e.type==n.TEXT){this.loadNewTextStream_(e);return}if(v.assert(o,"switch: expected mediaState to exist"),!o)return;if(o.restoreStreamAfterTrickPlay&&(p.debug("switch during trick play mode",e),e.trickModeVideo?(o.restoreStreamAfterTrickPlay=e,e=e.trickModeVideo,p.debug("switch found trick play stream",e)):(o.restoreStreamAfterTrickPlay=null,p.debug("switch found no special trick play stream"))),o.stream==e&&!r){let u=Be.logPrefix_(o);p.debug("switch: Stream "+u+" already active");return}if(this.audioPrefetchMap_.has(e)?o.segmentPrefetch=this.audioPrefetchMap_.get(e):o.segmentPrefetch&&o.segmentPrefetch.switchStream(e),e.type==n.TEXT&&o.stream!=e){let u=N.getFullType(e.mimeType,e.codecs);this.playerInterface_.mediaSourceEngine.reinitText(u,e.external)}if(!this.audioPrefetchMap_.has(o.stream)&&o.stream.closeSegmentIndex)if(o.performingUpdate){let u=Be.logPrefix_(o);this.deferredCloseSegmentIndex_.getOrInsert(u,o.stream.closeSegmentIndex)}else o.stream.closeSegmentIndex();let c=o.stream.isAudioMuxedInVideo!=e.isAudioMuxedInVideo;o.stream=e,o.segmentIterator=null,o.adaptation=!!s,e.dependencyStream?o.dependencyMediaState=this.createMediaState_(e.dependencyStream):o.dependencyMediaState=null,this.setupCrossBoundaryListeners_();let d=Be.logPrefix_(o);if(p.debug("switch: switching to Stream "+d),c&&(o.lastInitSegmentReference=null,o.lastAppendWindowStart=null,o.lastAppendWindowEnd=null,e.isAudioMuxedInVideo)){let u=null;o.type===n.VIDEO?u=this.mediaStates_.get(n.AUDIO):o.type===n.AUDIO&&(u=this.mediaStates_.get(n.VIDEO)),u&&(this.abortOperations_(u).catch(()=>{}),u.lastInitSegmentReference=null,u.lastAppendWindowStart=null,u.lastAppendWindowEnd=null,this.forceClearBuffer_(u),this.makeAbortDecision_(u).catch(m=>{this.playerInterface_&&(v.assert(m instanceof h,"Wrong error type!"),this.playerInterface_.onError(m))}))}t?o.clearingBuffer?o.waitingToFlushBuffer=!0:o.performingUpdate?(o.waitingToClearBuffer=!0,o.clearBufferSafeMargin=i,o.waitingToFlushBuffer=!0):(this.cancelUpdate_(o),this.clearBuffer_(o,!0,i).catch(u=>{this.playerInterface_&&(v.assert(u instanceof h,"Wrong error type!"),this.playerInterface_.onError(u))})):!o.performingUpdate&&!o.updateTimer&&this.scheduleUpdate_(o,0),this.makeAbortDecision_(o).catch(u=>{this.playerInterface_&&(v.assert(u instanceof h,"Wrong error type!"),this.playerInterface_.onError(u))})}async makeAbortDecision_(e){if(!e.operation)return;let t=e.stream,i=e.operation;t.segmentIndex||await t.createSegmentIndex();let r=t.dependencyStream;r&&!r.segmentIndex&&await r.createSegmentIndex(),e.operation==i&&e.stream==t&&(v.assert(e.stream.segmentIndex,"Segment index should exist by now!"),this.shouldAbortCurrentRequest_(e)&&(p.info("Aborting current segment request."),e.operation.abort()))}shouldAbortCurrentRequest_(e){v.assert(e.operation,"Abort logic requires an ongoing operation!"),v.assert(e.stream&&e.stream.segmentIndex,"Abort logic requires a segment index");let t=this.playerInterface_.getPresentationTime(),i=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type),r=this.getTimeNeeded_(e,t),s=e.stream.segmentIndex.find(r),n=s==null?null:e.stream.segmentIndex.get(s),a=n?n.getSize():null;if(n&&!a){let _=n.getEndTime()-n.getStartTime(),T=e.stream.bandwidth||this.currentVariant_.bandwidth;a=_*T/8}if(!a)return!0;let o=n.initSegmentReference;o&&(a+=o.getSize()||0);let c=this.playerInterface_.getBandwidthEstimate(),d=a*8/c,u=(i||0)-t,m=this.config_.rebufferingGoal,f=u-m;return d<f||e.operation.getBytesRemaining()>a}seeked(){if(!this.playerInterface_)return;let e=this.playerInterface_.getPresentationTime(),t=R.ContentType,i=s=>this.playerInterface_.mediaSourceEngine.isBuffered(s,e),r=!1;for(let s of this.mediaStates_.keys()){let n=this.mediaStates_.get(s),a=Be.logPrefix_(n);if(!this.crossBoundarySeek_&&!i(s)){if(this.lastMediaSourceReset_=0,n.segmentPrefetch&&n.segmentPrefetch.resetPosition(),n.type===t.AUDIO)for(let d of this.audioPrefetchMap_.values())d.resetPosition();n.segmentIterator=null,(this.playerInterface_.mediaSourceEngine.bufferEnd(s)!=null||n.performingUpdate)&&(this.forceClearBuffer_(n),r=!0),n.operation&&(n.operation.abort(),p.debug(a,"Aborting operation due to seek"),n.operation=null),s===t.TEXT&&this.playerInterface_.mediaSourceEngine.resetCaptionParser(),n.seeked=!0}this.crossBoundarySeek_&&!n.clearingBuffer&&!n.performingUpdate&&!n.updateTimer&&this.scheduleUpdate_(n,0)}this.shouldUseCrossBoundaryLogic_()&&this.forwardTimeForCrossBoundary_(),r||p.debug("(all): seeked: buffered seek: presentationTime="+e)}forceClearBuffer_(e){let t=Be.logPrefix_(e);if(e.clearingBuffer){p.debug(t,"clear: already clearing the buffer");return}if(e.waitingToClearBuffer){p.debug(t,"clear: already waiting");return}if(e.performingUpdate){p.debug(t,"clear: currently updating"),e.waitingToClearBuffer=!0,e.clearBufferSafeMargin=0;return}let i=e.type;if(this.playerInterface_.mediaSourceEngine.bufferStart(i)==null){p.debug(t,"clear: nothing buffered"),e.updateTimer==null&&this.scheduleUpdate_(e,0);return}p.debug(t,"clear: handling right now"),this.cancelUpdate_(e),this.clearBuffer_(e,!1,0).catch(r=>{this.playerInterface_&&(v.assert(r instanceof h,"Wrong error type!"),this.playerInterface_.onError(r))})}async initStreams_(e){if(v.assert(this.config_,"StreamingEngine configure() must be called before init()!"),!this.currentVariant_)throw p.error("init: no Streams chosen"),new h(h.Severity.CRITICAL,h.Category.STREAMING,h.Code.STREAMING_ENGINE_STARTUP_INVALID_STATE);let t=this.getStreamsByType_(!0);await this.playerInterface_.mediaSourceEngine.init(t,this.manifest_.sequenceMode,this.manifest_.type,this.manifest_.ignoreManifestTimestampsInSegmentsMode),this.destroyer_.ensureNotDestroyed(),this.updateDuration().catch(()=>{});for(let r of t.keys()){let s=t.get(r);if(!this.mediaStates_.has(r)){let n=this.createMediaState_(s),a=e.get(s.id);a&&(a.replaceFetchDispatcher((o,c,d)=>this.dispatchFetch_(o,c,d)),n.segmentPrefetch=a),this.mediaStates_.set(r,n),this.scheduleUpdate_(n,0)}}this.setupCrossBoundaryListeners_()}createMediaState_(e){let t={stream:e,type:e.type,segmentIterator:null,segmentPrefetch:this.createSegmentPrefetch_(e),lastSegmentReference:null,lastInitSegmentReference:null,lastTimestampOffset:null,lastAppendWindowStart:null,lastAppendWindowEnd:null,lastCodecs:null,lastMimeType:null,restoreStreamAfterTrickPlay:null,endOfStream:!1,performingUpdate:!1,updateTimer:null,waitingToClearBuffer:!1,clearBufferSafeMargin:0,waitingToFlushBuffer:!1,clearingBuffer:!1,seeked:!0,adaptation:!1,recovering:!1,hasError:!1,operation:null,dependencyMediaState:null};return e.dependencyStream&&(t.dependencyMediaState=this.createMediaState_(e.dependencyStream)),t}createSegmentPrefetch_(e){let t=R.ContentType;if(this.manifest_.type==me.MSF||e.type===t.VIDEO&&this.config_.disableVideoPrefetch||e.type===t.AUDIO&&this.config_.disableAudioPrefetch)return null;let i=N.CEA608_CLOSED_CAPTION_MIMETYPE,r=N.CEA708_CLOSED_CAPTION_MIMETYPE;if(e.type===t.TEXT&&(e.mimeType==i||e.mimeType==r)||e.type===t.TEXT&&this.config_.disableTextPrefetch)return null;if(this.audioPrefetchMap_.has(e))return this.audioPrefetchMap_.get(e);let s=e.type,n=this.mediaStates_.get(s),a=n&&n.segmentPrefetch;if(a&&e===a.getStream())return a;if(this.config_.segmentPrefetchLimit>0){let o=this.playerInterface_.getPlaybackRate()<0;return new Xr(this.config_.segmentPrefetchLimit,e,(c,d,u)=>this.dispatchFetch_(c,d,u),o,this.playerInterface_.shouldPrefetchNextSegment,this.playerInterface_.getPlaybackRate)}return null}updatePrefetchMapForAudio_(){let e=this.config_.segmentPrefetchLimit,t=this.config_.prefetchAudioLanguages;for(let i of this.manifest_.variants){if(!i.audio)continue;if(this.audioPrefetchMap_.has(i.audio)){let s=this.audioPrefetchMap_.get(i.audio);if(s.resetLimit(e),!(e>0)||!t.some(n=>ve.areLanguageCompatible(i.audio.language,n))){let n=i.audio.type,a=this.mediaStates_.get(n),o=a&&a.segmentPrefetch;s!==o&&s.clearAll(),this.audioPrefetchMap_.delete(i.audio)}continue}if(e<=0||!t.some(s=>ve.areLanguageCompatible(i.audio.language,s)))continue;let r=this.createSegmentPrefetch_(i.audio);r&&(i.audio.segmentIndex||i.audio.createSegmentIndex(),this.audioPrefetchMap_.set(i.audio,r))}}async updateDuration(){let e=Ke.isInfiniteLiveStreamDurationSupported(),t=this.manifest_.presentationTimeline.getDuration();this.liveSeekableRangeEventManager_.removeAll(),t<1/0?(e&&(this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop(),this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange()),await this.playerInterface_.mediaSourceEngine.setDuration(t)):e?(await this.playerInterface_.mediaSourceEngine.setDuration(1/0),this.updateLiveSeekableRangeTimer_&&(this.updateLiveSeekableRangeTimer_.tickNow(),this.liveSeekableRangeEventManager_.listenOnce(this.playerInterface_.video,"timeupdate",()=>{this.updateLiveSeekableRangeTimer_.tickNow().tickEvery(.5)}))):this.playerInterface_.mediaSourceEngine.setDuration(Math.pow(2,32))}async onUpdate_(e){this.destroyer_.ensureNotDestroyed();let t=R.ContentType,i=Be.logPrefix_(e);if(v.assert(!e.performingUpdate&&e.updateTimer!=null,i+" unexpected call to onUpdate_()"),e.performingUpdate||e.updateTimer==null||(v.assert(!e.clearingBuffer,i+" onUpdate_() should not be called when clearing the buffer"),e.clearingBuffer))return;if(e.updateTimer=null,e.waitingToClearBuffer){p.debug(i,"skipping update and clearing the buffer"),await this.clearBuffer_(e,e.waitingToFlushBuffer,e.clearBufferSafeMargin);return}if(this.handleDeferredCloseSegmentIndexes_(e),!e.stream.segmentIndex){let a=e.stream,o=e.stream.codecs,c=e.stream.mimeType;try{await e.stream.createSegmentIndex()}catch(d){await this.handleStreamingError_(e,d);return}if(e.type===t.TEXT&&(o!=e.stream.codecs||c!=e.stream.mimeType)){let d=N.getFullType(e.stream.mimeType,e.stream.codecs);this.playerInterface_.mediaSourceEngine.reinitText(d,e.stream.external)}if(a!=e.stream){a.closeSegmentIndex&&(v.assert(!e.stream.segmentIndex,"mediaState.stream should not have segmentIndex yet."),a.closeSegmentIndex()),!e.performingUpdate&&!e.updateTimer&&this.scheduleUpdate_(e,0);return}}if(e.dependencyMediaState&&!e.dependencyMediaState.stream.segmentIndex)try{await e.dependencyMediaState.stream.createSegmentIndex()}catch(a){p.warning("Could not create segment index for dependency",a)}try{let a=this.update_(e);a!=null&&(this.scheduleUpdate_(e,a),e.hasError=!1)}catch(a){await this.handleStreamingError_(e,a);return}if(e.type===t.TEXT)return;let r=[];e.stream&&!e.stream.isAudioMuxedInVideo&&r.push(e);let s=e.type===t.AUDIO?t.VIDEO:t.AUDIO,n=this.mediaStates_.get(s);if(n&&n.stream&&!n.stream.isAudioMuxedInVideo&&r.push(n),this.startupComplete_&&r.every(a=>a.endOfStream)){p.v1(i,"calling endOfStream()..."),await this.playerInterface_.mediaSourceEngine.endOfStream(),this.destroyer_.ensureNotDestroyed();let a=this.playerInterface_.mediaSourceEngine.getDuration();a!=0&&a<this.manifest_.presentationTimeline.getDuration()&&this.manifest_.presentationTimeline.setDuration(a)}}update_(e){v.assert(this.manifest_,"manifest_ should not be null"),v.assert(this.config_,"config_ should not be null");let t=R.ContentType;if(Be.isEmbeddedText_(e))return this.playerInterface_.mediaSourceEngine.setSelectedClosedCaptionId(e.stream.originalId||""),null;if(e.type==t.TEXT&&this.playerInterface_.mediaSourceEngine.clearSelectedClosedCaptionId(),e.stream.isAudioMuxedInVideo&&e.type==t.AUDIO)return null;if(e.type!=t.TEXT&&this.playerInterface_.mediaSourceEngine.closed())return this.resetMediaSource(!0),null;let i=this.config_.updateIntervalSeconds/Math.max(1,Math.abs(this.playerInterface_.getPlaybackRate()));if(!this.playerInterface_.mediaSourceEngine.isStreamingAllowed()&&e.type!=t.TEXT)return i/2;let r=Be.logPrefix_(e),s=this.playerInterface_.getPresentationTime(),n=this.playerInterface_.getPlaybackRate()<0;if(e.type===t.AUDIO)for(let k of this.audioPrefetchMap_.keys()){let L=this.audioPrefetchMap_.get(k);L.evict(s,!0),L.prefetchSegmentsByTime(s)}let a=this.getTimeNeeded_(e,s);p.v2(r,"timeNeeded="+a);let o=n?this.playerInterface_.mediaSourceEngine.bufferedBehindOf(e.type,s):this.playerInterface_.mediaSourceEngine.bufferedAheadOf(e.type,s);p.v2(r,"update_:","presentationTime="+s,"bufferedAhead="+o);let c=Math.max(this.config_.rebufferingGoal,this.config_.bufferingGoal),d=Math.max(1,c*this.bufferingScale_),u=this.manifest_.presentationTimeline.isDynamic()?1/0:this.manifest_.presentationTimeline.getDuration()-a,m=1e-6,f=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type);if(!n&&u<m&&f){if(p.debug(r,"buffered to end of presentation"),e.endOfStream=!0,e.type==t.VIDEO){let k=this.mediaStates_.get(t.TEXT);k&&Be.isEmbeddedText_(k)&&(k.endOfStream=!0);let L=this.mediaStates_.get(t.AUDIO);L&&L.stream.isAudioMuxedInVideo&&(L.endOfStream=!0)}return null}if(e.endOfStream=!1,n){let k=this.manifest_.presentationTimeline.getSeekRangeStart();if(f!=null&&a<=k+m)return p.debug(r,"buffered to start of presentation"),null}if(o>0&&this.config_.stopFetchingOnPause&&this.playerInterface_.video.paused)return p.v2(r,"video paused"),i/2;if(o>=d)return p.v2(r,"buffering goal met"),i/2;let g=!e.segmentIterator,_=this.getSegmentReferenceNeeded_(e,s,f);if(!_){if(!this.manifest_.presentationTimeline.isDynamic()&&u<m){if(p.info(r,"Close to end with no buffer and no segment reference.","Marking as end of stream."),e.endOfStream=!0,e.type==t.VIDEO){let V=this.mediaStates_.get(t.TEXT);V&&Be.isEmbeddedText_(V)&&(V.endOfStream=!0)}return null}let k=1/0,L=e.lastSegmentReference;return L&&(k=L.endTime-L.startTime),Math.min(k/2,i)}let T=e.lastInitSegmentReference,S=_.initSegmentReference;T&&S&&Tt.equal(S,T)&&(T.boundaryEnd=S.boundaryEnd);let b=!1;g&&e.adaptation&&(b=!0,e.adaptation=!1);let E=1/0,C=-1/0;for(let k of this.mediaStates_.values()){if(Be.isEmbeddedText_(k)||k.stream.isAudioMuxedInVideo||k.segmentIterator&&!k.segmentIterator.current())continue;let L=this.getTimeNeeded_(k,s);E=Math.min(E,L),C=Math.max(C,L)}let w=this.manifest_.presentationTimeline.getMaxSegmentDuration()*Be.MAX_RUN_AHEAD_SEGMENTS_;return(n?C-a:a-E)>=w?(p.v2(r,"waiting for other streams to buffer"),i):(e.segmentPrefetch&&e.segmentIterator&&!this.audioPrefetchMap_.has(e.stream)&&(e.segmentPrefetch.evict(_.startTime+.001),e.segmentPrefetch.prefetchSegmentsByTime(_.startTime).catch(()=>{})),this.shouldUseCrossBoundaryLogic_()&&this.discardReferenceByBoundary_(e,_)||(this.fetchAndAppend_(e,s,_,b).catch(()=>{}),e.dependencyMediaState&&this.fetchAndAppendDependency_(e.dependencyMediaState,s,d)),null)}getTimeNeeded_(e,t){return e.lastSegmentReference?this.playerInterface_.getPlaybackRate()<0?e.lastSegmentReference.startTime:e.lastSegmentReference.endTime:t}getSegmentReferenceNeeded_(e,t,i){var s,n;let r=Be.logPrefix_(e);if(v.assert(e.stream.segmentIndex,"segment index should have been generated already"),e.segmentIterator){let a=e.segmentIterator.current();if(a&&e.lastSegmentReference){let o=e.lastSegmentReference.startTime,c=e.lastSegmentReference.endTime;jt.isFloatEqual(o,a.startTime,.002)&&jt.isFloatEqual(c,a.endTime,.002)&&(a=e.segmentIterator.next().value)}return a}else if(e.lastSegmentReference||i){let a=this.playerInterface_.getPlaybackRate()<0,o;if(a){let d=this.playerInterface_.mediaSourceEngine.bufferStart(e.type),u=e.lastSegmentReference?e.lastSegmentReference.startTime:null,m=d;u!=null&&(m==null||u<m)&&(m=u),o=m!=null?m-.001:i}else o=e.lastSegmentReference?e.lastSegmentReference.endTime:i;v.assert(o!=null,"Should have a time to search"),p.v1(r,"looking up segment from new stream endTime:",o),e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(o,!1,a));let c=e.segmentIterator&&e.segmentIterator.next().value;return c==null&&p.warning(r,"cannot find segment","endTime:",o),c}else{let a=this.manifest_.sequenceMode||this.shouldUseCrossBoundaryLogic_()||this.manifest_.type===me.MSF?0:this.config_.inaccurateManifestTolerance,o=Math.max(t-a,0),c=this.playerInterface_.mediaSourceEngine.getDuration(),d=Be.LOOKUP_TIME_DURATION_THRESHOLD_;Math.abs(o-c)<d&&(a=d,o=Math.max(t-a,0)),p.v1(r,"looking up segment","lookupTime:",o,"presentationTime:",t);let u=this.playerInterface_.getPlaybackRate()<0,m=null;for(a&&(e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(o,!1,u)),m=e.segmentIterator&&e.segmentIterator.next().value),m||(e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(t,!1,u)),m=e.segmentIterator&&e.segmentIterator.next().value);(m==null?void 0:m.getStatus())===Se.Status.MISSING;)m=(n=(s=e.segmentIterator)==null?void 0:s.next().value)!=null?n:null;return m==null&&p.warning(r,"cannot find segment","lookupTime:",o,"presentationTime:",t),m}}async fetchAndAppend_(e,t,i,r){let s=R.ContentType,n=Be.logPrefix_(e);p.v1(n,"fetchAndAppend_:","presentationTime="+t,"reference.startTime="+i.startTime,"reference.endTime="+i.endTime);let a=e.stream,o=e.segmentIterator;e.performingUpdate=!0;try{if(i.getStatus()==Se.Status.MISSING)throw new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.SEGMENT_MISSING);if(await this.initSourceBuffer_(e,i,r),this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;p.v2(n,"fetching segment");let c=a.mimeType=="video/mp4"||a.mimeType=="audio/mp4",d=window.ReadableStream,u=this.config_.lowLatencyMode&&this.manifest_.isLowLatency,m={mediaTimestamp:null};if(u&&d&&c&&(this.manifest_.type!=me.HLS||i.hasByterangeOptimization())){let T=new Uint8Array(0),S=!1,b=!1,E,C=async w=>{if(!S&&(b=!0,this.destroyer_.ensureNotDestroyed(),!this.fatalError_))try{T=ne.concat(T,w);let M=!1,x=0;if(new F().box("mdat",k=>{x=k.size+k.start,M=!0}).parse(T,!1,!0),M){let k=T.subarray(0,x);T=T.subarray(x);let L=await this.append_(e,t,a,i,k,!0,r);m.mediaTimestamp==null&&(m=L),e.segmentPrefetch&&e.segmentIterator&&e.segmentPrefetch.prefetchSegmentsByTime(i.startTime,!0)}}catch(M){E=M}},A=await this.fetch_(e,i,C);if(E)throw E;if(!b){if(S=!0,this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;if(e.waitingToClearBuffer){p.info(n,"waitingToClearBuffer, skip append"),e.performingUpdate=!1,this.scheduleUpdate_(e,0);return}m=await this.append_(e,t,a,i,A,!1,r)}e.segmentPrefetch&&e.segmentIterator&&e.segmentPrefetch.prefetchSegmentsByTime(i.startTime,!0)}else{u&&!d&&p.warning("Low latency streaming mode is enabled, but ReadableStream is not supported by the browser.");let S=await this.fetch_(e,i);if(this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;if(this.destroyer_.ensureNotDestroyed(),e.waitingToClearBuffer){p.info(n,"waitingToClearBuffer, skip append"),e.performingUpdate=!1,this.scheduleUpdate_(e,0);return}m=await this.append_(e,t,a,i,S,!1,r)}if(this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;e.lastSegmentReference=i;let f=o.next().value;p.v2(n,"advancing to next segment",f),e.performingUpdate=!1,e.recovering=!1;let _=this.playerInterface_.mediaSourceEngine.getBufferedInfo()[e.type];if(p.v1(n,"finished fetch and append",JSON.stringify(_)),!e.waitingToClearBuffer){let T=null;e.type===s.VIDEO?T=this.mediaStates_.get(s.AUDIO):e.type===s.AUDIO&&(T=this.mediaStates_.get(s.VIDEO)),T&&T.type==s.AUDIO?this.playerInterface_.onSegmentAppended(i,e.stream,T.stream.isAudioMuxedInVideo,!1,m.mediaTimestamp):this.playerInterface_.onSegmentAppended(i,e.stream,e.stream.codecs.includes(","),!1,m.mediaTimestamp)}this.cancelUpdate_(e),this.scheduleUpdate_(e,0)}catch(c){if(this.destroyer_.ensureNotDestroyed(c),this.fatalError_)return;v.assert(c instanceof h,"Should only receive a Shaka error"),e.performingUpdate=!1,c.code==h.Code.OPERATION_ABORTED?(e.performingUpdate=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0)):e.type==s.TEXT&&this.config_.ignoreTextStreamFailures?(c.code==h.Code.BAD_HTTP_STATUS?p.warning(n,"Text stream failed to download. Proceeding without it."):p.warning(n,"Text stream failed to parse. Proceeding without it."),this.mediaStates_.delete(s.TEXT)):c.code==h.Code.QUOTA_EXCEEDED_ERROR?await this.handleQuotaExceeded_(e,c):(p.error(n,"failed fetch and append: code="+c.code),e.hasError=!0,c.category==h.Category.NETWORK&&e.segmentPrefetch&&e.segmentPrefetch.removeReference(i),c.severity=h.Severity.CRITICAL,await this.handleStreamingError_(e,c))}}async fetchAndAppendDependency_(e,t,i){let r=R.ContentType,s=e.stream,n=s.segmentIndex,a=n&&n.getIteratorForTime(t),o=a&&a.next().value;for(;o&&this.requestedDependencySegments_.includes(o.startTime);)o=a&&a.next().value;if(o){let c=o.initSegmentReference;if(c&&!Tt.equal(c,e.lastInitSegmentReference)){e.lastInitSegmentReference=c;try{let d=await this.fetch_(e,c);if(!this.playerInterface_)return;this.playerInterface_.mediaSourceEngine.appendDependency(d,0,s),this.requestedDependencySegments_=[]}catch(d){throw e.lastInitSegmentReference=null,d}}if(!e.lastSegmentReference||e.lastSegmentReference!=o){e.lastSegmentReference=o;try{let m=await this.fetch_(e,o);if(!this.playerInterface_)return;this.playerInterface_.mediaSourceEngine.appendDependency(m,0,s),this.requestedDependencySegments_.push(o.startTime)}catch(m){throw e.lastSegmentReference=null,m}if(!this.playerInterface_)return;if(!e.waitingToClearBuffer){let m=null;e.type===r.VIDEO?m=this.mediaStates_.get(r.AUDIO):e.type===r.AUDIO&&(m=this.mediaStates_.get(r.VIDEO)),m&&m.type==r.AUDIO?this.playerInterface_.onSegmentAppended(o,e.stream,m.stream.isAudioMuxedInVideo,!0,null):this.playerInterface_.onSegmentAppended(o,e.stream,e.stream.codecs.includes(","),!0,null)}let d=Math.max(0,...this.requestedDependencySegments_);this.playerInterface_.getPresentationTime()+i>d&&await this.fetchAndAppendDependency_(e,o.startTime,i)}}}retry(e){if(this.destroyer_.destroyed())return p.error("Unable to retry after StreamingEngine is destroyed!"),!1;if(this.fatalError_)return p.error("Unable to retry after StreamingEngine encountered a fatal error!"),!1;for(let t of this.mediaStates_.values()){let i=Be.logPrefix_(t);t.hasError&&!t.performingUpdate&&!t.updateTimer&&(p.info(i,"Retrying after failure..."),t.hasError=!1,this.scheduleUpdate_(t,e))}return!0}async handleQuotaExceeded_(e,t){let i=Be.logPrefix_(e),r=!1;for(let s of this.mediaStates_.values())if(s!=e&&s.recovering){r=!0;break}if(r)p.debug(i,"MediaSource threw QuotaExceededError:","waiting for another stream to recover...");else{if(this.config_.avoidEvictionOnQuotaExceededError){let o=this.getDisabledTime_(t);if(o&&p.debug(i,"Disabling stream due to quota",t),this.playerInterface_.disableStream(e.stream,o))return;this.scheduleUpdate_(e,4);return}let s=Math.round(100*this.bufferingScale_);if(s>20)this.bufferingScale_-=.2;else if(s>4)this.bufferingScale_-=.04;else{let o=this.getDisabledTime_(t);if(o&&p.debug(i,"Disabling stream due to quota",t),this.playerInterface_.disableStream(e.stream,o)){this.bufferingScale_=1;let d=this.playerInterface_.getPresentationTime();await this.evict_(e,d)}else p.error(i,"MediaSource threw QuotaExceededError too many times"),e.hasError=!0,this.fatalError_=!0,this.playerInterface_.onError(t);return}let n=Math.round(100*this.bufferingScale_);p.warning(i,"MediaSource threw QuotaExceededError:","reducing buffering goals by "+(100-n)+"%"),e.recovering=!0;let a=this.playerInterface_.getPresentationTime();await this.evict_(e,a)}this.scheduleUpdate_(e,4)}async initSourceBuffer_(e,t,i){let r=R.ContentType,s=Be.logPrefix_(e),n=e.lastSegmentReference==null,a=[],o=Math.max(0,Math.max(t.appendWindowStart,this.playRangeStart_)-Be.APPEND_WINDOW_START_FUDGE_),c=Math.min(t.appendWindowEnd,this.playRangeEnd_)+Be.APPEND_WINDOW_END_FUDGE_;if(this.config_.clampAppendWindowToDuration){let _=this.manifest_.presentationTimeline.getDuration();_<1/0&&(c=Math.min(c,_))}v.assert(t.startTime<=c,s+" segment should start before append window end");let d=t.codecs||e.stream.codecs,u=N.getCodecBase(d),m=N.getBasicType(t.mimeType||e.stream.mimeType),f=t.timestampOffset;if(f!=e.lastTimestampOffset||o!=e.lastAppendWindowStart||c!=e.lastAppendWindowEnd||u!=e.lastCodecs||m!=e.lastMimeType){if(p.v1(s,"setting timestamp offset to "+f),p.v1(s,"setting append window start to "+o),p.v1(s,"setting append window end to "+c),e.lastCodecs&&e.lastMimeType&&this.playerInterface_.mediaSourceEngine.isResetMediaSourceNecessary(e.type,m,d,this.getStreamsByType_())){let T=null;e.type===r.VIDEO?T=this.mediaStates_.get(r.AUDIO):e.type===r.AUDIO&&(T=this.mediaStates_.get(r.VIDEO)),T&&(await this.abortOperations_(T).catch(()=>{}),T.lastInitSegmentReference=null,T.lastAppendWindowStart=null,T.lastAppendWindowEnd=null,this.forceClearBuffer_(T))}await this.setProperties_(e,f,o,c,t,u,m)}if(!Tt.equal(t.initSegmentReference,e.lastInitSegmentReference)&&(e.lastInitSegmentReference=t.initSegmentReference,t.isIndependent()&&t.initSegmentReference)){p.v1(s,"fetching init segment");let _=this.fetch_(e,t.initSegmentReference),T=async()=>{try{let b=await _;this.destroyer_.ensureNotDestroyed();let E=null,C=new Map,A={projection:null,hfov:null};if(e.stream){let L=e.stream.videoLayout;if(L){let V=L.split("/");V.includes("PROJ-RECT")?A.projection="rect":V.includes("PROJ-EQUI")?A.projection="equi":V.includes("PROJ-HEQU")?A.projection="hequ":V.includes("PROJ-PRIM")?A.projection="prim":V.includes("PROJ-AIV")&&(A.projection="aiv")}}let w=new F;w.boxes(["moov","trak","mdia"],F.children).fullBox("mdhd",L=>{v.assert(L.version!=null,"MDHD is a full box and should have a valid version."),E=pe.parseMDHD(L.reader,L.version).timescale}).fullBox("hdlr",L=>{switch(v.assert(L.version!=null,"HDLR is a full box and should have a valid version."),pe.parseHDLR(L.reader).handlerType){case"soun":C.set(r.AUDIO,E);break;case"vide":C.set(r.VIDEO,E);break}E=null}),e.type===r.VIDEO&&!A.projection&&w.boxes(["minf","stbl"],F.children).fullBox("stsd",F.sampleDescription).boxes([...F.AVC_HEVC_VVC_DV,"encv"],F.visualSampleEntry).boxes(["vexu","proj"],F.children).fullBox("prji",L=>{let V=pe.parsePRJI(L.reader);A.projection=V.projection}).box("hfov",L=>{let V=pe.parseHFOV(L.reader);A.hfov=V.hfov}),w.parse(b,!0,!0),e.type===r.VIDEO&&this.updateSpatialVideoInfo_(A),C.has(e.type)?t.initSegmentReference.timescale=C.get(e.type):E!=null&&(t.initSegmentReference.timescale=E);let M=e.stream.segmentIndex,x;M instanceof Mi&&(x=M.getTimelineForTime(t.startTime)),p.v1(s,"appending init segment");let k=e.stream.closedCaptions&&e.stream.closedCaptions.size>0;await this.playerInterface_.beforeAppendSegment(e.type,b),await this.playerInterface_.mediaSourceEngine.appendBuffer(e.type,b,null,e.stream,k,e.seeked,i,!1,!1,x)}catch(b){throw e.lastInitSegmentReference=null,b}},S=t.startTime;if(n){let b=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type);b!=null&&(S=b)}this.playerInterface_.onInitSegmentAppended(S,t.initSegmentReference),a.push(T())}let g=e.lastSegmentReference?e.lastSegmentReference.discontinuitySequence:-1;t.discontinuitySequence!=g&&a.push(this.playerInterface_.mediaSourceEngine.resync(e.type,t.startTime)),await Promise.all(a)}async setProperties_(e,t,i,r,s,n,a){let o=R.ContentType,c=this.getStreamsByType_();try{e.lastAppendWindowStart=i,e.lastAppendWindowEnd=r,n&&(e.lastCodecs=n),a&&(e.lastMimeType=a),e.lastTimestampOffset=t;let d=this.manifest_.sequenceMode||this.manifest_.type==me.HLS,u=null;e.type===o.VIDEO?u=this.mediaStates_.get(o.AUDIO):e.type===o.AUDIO&&(u=this.mediaStates_.get(o.VIDEO)),u&&u.stream&&u.stream.isAudioMuxedInVideo&&await this.playerInterface_.mediaSourceEngine.setStreamProperties(u.type,t,i,r,d,u.stream.mimeType,u.stream.codecs,c),await this.playerInterface_.mediaSourceEngine.setStreamProperties(e.type,t,i,r,d,s.mimeType||e.stream.mimeType,s.codecs||e.stream.codecs,c)}catch(d){throw e.lastAppendWindowStart=null,e.lastAppendWindowEnd=null,e.lastCodecs=null,e.lastMimeType=null,e.lastTimestampOffset=null,d}}async append_(e,t,i,r,s,n=!1,a=!1){let o=Be.logPrefix_(e),c=i.closedCaptions&&i.closedCaptions.size>0;if(this.config_.shouldFixTimestampOffset){let m=i.mimeType=="video/mp4"||i.mimeType=="audio/mp4",f=null;r.initSegmentReference&&(f=r.initSegmentReference.timescale),m&&f&&i.type===R.ContentType.VIDEO&&this.manifest_.type==me.DASH&&new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("tfdt",async _=>{v.assert(_.version!=null,"TFDT is a full box and should have a valid version.");let S=pe.parseTFDTInaccurate(_.reader,_.version).baseMediaDecodeTime;if(!S)return;v.assert(typeof f=="number","Should be an number!");let b=-S/f;if((Number(e.lastTimestampOffset)||0)<b){let C=e.lastAppendWindowStart,A=e.lastAppendWindowEnd;v.assert(typeof C=="number","Should be an number!"),v.assert(typeof A=="number","Should be an number!"),await this.setProperties_(e,b,C,A,r)}}).parse(s,!1,n)}await this.evict_(e,t),this.destroyer_.ensureNotDestroyed();let d=e.seeked;e.seeked=!1,await this.playerInterface_.beforeAppendSegment(e.type,s);let u=await this.playerInterface_.mediaSourceEngine.appendBuffer(e.type,s,r,i,c,d,a,n);return this.destroyer_.ensureNotDestroyed(),p.v2(o,"appended media segment"),u}async evict_(e,t){this.lastTextMediaStateBeforeUnload_==e&&(this.lastTextMediaStateBeforeUnload_=null);let i=e.stream.segmentIndex,r;i instanceof Mi&&(i.evict(this.manifest_.presentationTimeline.getSegmentAvailabilityStart()),r=[],i.forEachIndex(g=>{r.push(g.continuityTimeline())}));let s=Be.logPrefix_(e);p.v2(s,"checking buffer length");let n=Math.max(this.config_.bufferBehind*this.bufferingScale_,this.manifest_.presentationTimeline.getMaxSegmentDuration()),a=this.playerInterface_.mediaSourceEngine.bufferStart(e.type);if(a==null){p.v2(s,"buffer behind okay because nothing buffered:","presentationTime="+t,"bufferBehind="+n);return}let o=t-a,c=this.config_.evictionGoal,d=this.manifest_.presentationTimeline.getSeekRangeStart(),m=this.manifest_.presentationTimeline.getSeekRangeEnd()-d,f=o-n;if(m>c&&(f=Math.max(o-n,d-c-a)),f<=c){p.v2(s,"buffer behind okay:","presentationTime="+t,"bufferedBehind="+o,"bufferBehind="+n,"evictionGoal="+c,"underflow="+Math.abs(f));return}p.v1(s,"buffer behind too large:","presentationTime="+t,"bufferedBehind="+o,"bufferBehind="+n,"evictionGoal="+c,"overflow="+f),await this.playerInterface_.mediaSourceEngine.remove(e.type,a,a+f,r),this.destroyer_.ensureNotDestroyed(),p.v1(s,"evicted "+f+" seconds"),this.lastTextMediaStateBeforeUnload_&&(await this.evict_(this.lastTextMediaStateBeforeUnload_,t),this.destroyer_.ensureNotDestroyed())}static isEmbeddedText_(e){let t=N.CEA608_CLOSED_CAPTION_MIMETYPE,i=N.CEA708_CLOSED_CAPTION_MIMETYPE;return e&&e.type==R.ContentType.TEXT&&(e.stream.mimeType==t||e.stream.mimeType==i)}async fetch_(e,t,i){let r=t.getSegmentData();if(r)return r;let s=null;e.segmentPrefetch&&(s=e.segmentPrefetch.getPrefetchedSegment(t,i)),s||(s=this.dispatchFetch_(t,e.stream,i));let n=0;e.segmentIterator&&(n=e.segmentIterator.currentPosition()),e.operation=s;let a=await s.promise;e.operation=null;let o=a.data;return t.aesKey&&(o=await vt.aesDecrypt(o,t.aesKey,n)),o}dispatchFetch_(e,t,i,r=!1){return v.assert(this.playerInterface_.netEngine,"Must have net engine"),Be.dispatchFetch(e,t,i||null,this.config_.retryParameters,this.playerInterface_.netEngine)}static dispatchFetch(e,t,i,r,s,n=!1){let a=K.RequestType.SEGMENT,o=e instanceof Se?e:void 0,c=o?K.AdvancedRequestType.MEDIA_SEGMENT:K.AdvancedRequestType.INIT_SEGMENT,d=ct.createSegmentRequest(e.getUris(),e.startByte,e.endByte,r,i);return d.contentType=t.type,p.v2("fetching: reference=",e),s.request(a,d,{type:c,stream:t,segment:o,isPreload:n})}async clearBuffer_(e,t,i){let r=Be.logPrefix_(e);if(v.assert(!e.performingUpdate&&e.updateTimer==null,r+" unexpected call to clearBuffer_()"),e.waitingToClearBuffer=!1,e.waitingToFlushBuffer=!1,e.clearBufferSafeMargin=0,e.clearingBuffer=!0,e.lastSegmentReference=null,e.segmentIterator=null,p.debug(r,"clearing buffer"),e.segmentPrefetch&&!this.audioPrefetchMap_.has(e.stream)&&e.segmentPrefetch.clearAll(),i){let s=this.playerInterface_.getPresentationTime(),n=this.playerInterface_.mediaSourceEngine.getDuration();await this.playerInterface_.mediaSourceEngine.remove(e.type,s+i,n)}else await this.playerInterface_.mediaSourceEngine.clear(e.type),this.destroyer_.ensureNotDestroyed(),t&&await this.playerInterface_.mediaSourceEngine.flush(e.type);this.destroyer_.ensureNotDestroyed(),p.debug(r,"cleared buffer"),e.clearingBuffer=!1,e.endOfStream=!1,!e.performingUpdate&&!e.updateTimer&&this.scheduleUpdate_(e,0)}scheduleUpdate_(e,t){let i=Be.logPrefix_(e),r=e.type;if(r==R.ContentType.TEXT&&!this.mediaStates_.has(r)){p.v1(i,"Text stream is unloaded. No update is needed.");return}p.v2(i,"updating in "+t+" seconds"),v.assert(e.updateTimer==null,i+" did not expect update to be scheduled"),e.updateTimer=new ae(async()=>{try{await this.onUpdate_(e)}catch(s){this.playerInterface_&&this.playerInterface_.onError(s)}}).tickAfter(t)}cancelUpdate_(e){e.updateTimer!=null&&(e.updateTimer.stop(),e.updateTimer=null)}async abortOperations_(e){e.operation&&await e.operation.abort()}async handleStreamingError_(e,t){let i=Be.logPrefix_(e);if(t.code==h.Code.STREAMING_NOT_ALLOWED){e.performingUpdate=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0);return}if(await this.failureCallbackBackoff_.attempt(),this.destroyer_.ensureNotDestroyed(),t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||t.category===h.Category.NETWORK&&t.code!=h.Code.TIMEOUT){if(e.restoreStreamAfterTrickPlay){this.setTrickPlay(!1);return}if(t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED){t.handled=await this.resetMediaSource(!0);for(let s of this.mediaStates_.values())this.cancelUpdate_(s);this.destroyer_.ensureNotDestroyed()}let r=this.getDisabledTime_(t);r&&p.debug(i,"Disabling stream due to error",t),t.handled=this.playerInterface_.disableStream(e.stream,r)||t.handled,t.handled&&(t.severity=h.Severity.RECOVERABLE)}if(!t.handled&&t.code==h.Code.SEGMENT_MISSING){let r=this.playerInterface_.getPresentationTime(),s=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type),n=this.getSegmentReferenceNeeded_(e,r,s);for(;(n==null?void 0:n.getStatus())===Se.Status.MISSING;)e.lastSegmentReference=n,n=this.getSegmentReferenceNeeded_(e,r,s);if(n){await this.playerInterface_.mediaSourceEngine.resync(e.type,n.startTime),e.performingUpdate=!1,e.hasError=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0);return}}(!t.handled||t.code!=h.Code.SEGMENT_MISSING)&&this.playerInterface_.onError(t),t.handled||this.config_.failureCallback(t)}getDisabledTime_(e){return this.config_.maxDisabledTime===0&&e.code==h.Code.SEGMENT_MISSING?1:e.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||e.code==h.Code.MEDIA_SOURCE_OPERATION_THREW?1/0:this.config_.maxDisabledTime}async resetMediaSource(e=!1,t=!0){let i=Date.now()/1e3,r=this.config_.minTimeBetweenRecoveries;if(!e&&(!this.config_.allowMediaSourceRecoveries||i-this.lastMediaSourceReset_<r))return!1;this.lastMediaSourceReset_=i;let s=R.ContentType,n=this.mediaStates_.get(s.AUDIO);n&&(this.cancelUpdate_(n),n.operation&&(n.operation.abort(),n.operation=null),n.lastInitSegmentReference=null,n.lastAppendWindowStart=null,n.lastAppendWindowEnd=null,n.lastInitSegmentReference=null,n.lastAppendWindowStart=null,n.lastAppendWindowEnd=null,n.performingUpdate=!1,n.waitingToClearBuffer=!1,n.clearBufferSafeMargin=0,n.waitingToFlushBuffer=!1,n.clearingBuffer=!1,n.segmentIterator&&n.segmentIterator.resetToLastIndependent());let a=this.mediaStates_.get(s.VIDEO);a&&(this.cancelUpdate_(a),a.operation&&(a.operation.abort(),a.operation=null),a.lastInitSegmentReference=null,a.lastAppendWindowStart=null,a.lastAppendWindowEnd=null,a.performingUpdate=!1,a.waitingToClearBuffer=!1,a.clearBufferSafeMargin=0,a.waitingToFlushBuffer=!1,a.clearingBuffer=!1,a.segmentIterator&&a.segmentIterator.resetToLastIndependent());let o=this.playerInterface_.video.paused;return await this.playerInterface_.mediaSourceEngine.reset(this.getStreamsByType_()),a&&!a.clearingBuffer&&!a.performingUpdate&&!a.updateTimer&&this.scheduleUpdate_(a,0),n&&!n.clearingBuffer&&!n.performingUpdate&&!n.updateTimer&&this.scheduleUpdate_(n,0),o||this.playerInterface_.video.play(),!0}updateSpatialVideoInfo_(e){if(this.spatialVideoInfo_.projection!=e.projection||this.spatialVideoInfo_.hfov!=e.hfov){let t=U.EventName,i;if(e.projection!=null||e.hfov!=null){let r=t.SpatialVideoInfoEvent,s=new Map().set("detail",e);i=new U(r,s)}else{let r=t.NoSpatialVideoInfoEvent;i=new U(r)}i.cancelable=!0,this.playerInterface_.onEvent(i),this.spatialVideoInfo_=e}}updateSegmentIteratorReverse_(){let e=this.playerInterface_.getPlaybackRate()<0;for(let t of this.mediaStates_.values())t.segmentIterator&&t.segmentIterator.setReverse(e),t.segmentPrefetch&&t.segmentPrefetch.setReverse(e),e&&(t.segmentIterator=null,t.endOfStream=!1,!t.performingUpdate&&!t.updateTimer&&!t.clearingBuffer&&!t.waitingToClearBuffer&&this.scheduleUpdate_(t,0));for(let t of this.audioPrefetchMap_.values())t.setReverse(e)}shouldUseCrossBoundaryLogic_(){if(this.config_.crossBoundaryStrategy!==Ti.KEEP)return!0;let e=j.getDevice(),t=this.playerInterface_.getKeySystem();if(e.supportsSmoothCodecSwitching(t)){if(!e.supportsContainerChangeType())for(let i of this.mediaStates_.keys()){let r=this.mediaStates_.get(i),s=R.ContentType;if(r.type===s.TEXT)continue;let n=r.stream;if(n&&n.fullMimeTypes&&n.fullMimeTypes.size>1){let a=new Set;for(let o of n.fullMimeTypes)a.add(N.getContainerType(o));return a.size>1}}}else for(let i of this.mediaStates_.keys()){let r=this.mediaStates_.get(i),s=R.ContentType;if(r.type===s.TEXT)continue;let n=r.stream;if(n&&n.fullMimeTypes&&n.fullMimeTypes.size>1)return!0}return!1}setupCrossBoundaryListeners_(){this.crossBoundaryEventManager_.removeAll(),this.shouldUseCrossBoundaryLogic_()&&this.crossBoundaryEventManager_.listenMulti(this.playerInterface_.video,["waiting","timeupdate"],()=>{this.forwardTimeForCrossBoundary_()})}forwardTimeForCrossBoundary_(){if(!this.shouldUseCrossBoundaryLogic_())return;this.crossBoundaryTimer_.stop();let e=this.playerInterface_.getPresentationTime(),t=R.ContentType,i=this.mediaStates_.get(t.VIDEO)||this.mediaStates_.get(t.AUDIO);if(!i)return;let r=i.lastInitSegmentReference;if(!r||r.boundaryEnd===null)return;let s=Be.CROSS_BOUNDARY_END_THRESHOLD_,n=r.boundaryEnd-e;n<0||n>s||(this.boundaryTime_=r.boundaryEnd+Be.APPEND_WINDOW_END_FUDGE_,this.crossBoundaryTimer_.tickAfter(n))}discardReferenceByBoundary_(e,t){let i=R.ContentType;if(e.type===i.TEXT)return!1;let r=e.lastInitSegmentReference;if(!r)return!1;let s=Be.logPrefix_(e),n=t.initSegmentReference,a=r.boundaryEnd!==n.boundaryEnd;if(this.config_.crossBoundaryStrategy===Ti.RESET_TO_ENCRYPTED&&(!r.encrypted&&!n.encrypted&&(a=!1),r.encrypted&&(p.debug(s,"stream is encrypted, discard crossBoundaryStrategy"),this.config_.crossBoundaryStrategy=Ti.KEEP)),this.config_.crossBoundaryStrategy===Ti.RESET_ON_ENCRYPTION_CHANGE&&r.encrypted==n.encrypted&&(a=!1),this.config_.crossBoundaryStrategy===Ti.KEEP&&r.mimeType&&n.mimeType){let c=N.getNormalizedCodec(N.getCodecs(r.mimeType)),d=N.getNormalizedCodec(N.getCodecs(n.mimeType));r.mimeType==n.mimeType&&c==d&&(a=!1)}return(this.mediaStates_.get(i.VIDEO)||this.mediaStates_.get(i.AUDIO))===e&&a&&(this.crossBoundarySeek_||e.seeked)&&(p.debug(s,"reset mediaSource","from=",e.lastInitSegmentReference,"to=",t.initSegmentReference),this.crossBoundarySeek_=!1,this.resetMediaSource(!0).then(()=>{let c=U.EventName.BoundaryCrossed,d=new Map().set("oldEncrypted",r.encrypted).set("newEncrypted",n.encrypted);this.playerInterface_.onEvent(new U(c,d))})),a}getStreamsByType_(e=!1){let t=R.ContentType,i=a=>{if(a.fullMimeTypes&&a.fullMimeTypes.size>1&&this.mediaStates_.has(a.type)){let o=this.mediaStates_.get(a.type),c=this.playerInterface_.mediaSourceEngine.bufferEnd(o.type),d=this.playerInterface_.getPresentationTime(),u=this.getSegmentReferenceNeeded_(o,d,c);u&&u.codecs&&u.mimeType&&(a.codecs=u.codecs,a.mimeType=u.mimeType)}},r=new Map,s=this.currentVariant_.audio;s&&(i(s),r.set(t.AUDIO,s));let n=this.currentVariant_.video;return n&&(i(n),r.set(t.VIDEO,n)),e&&this.currentTextStream_&&r.set(t.TEXT,this.currentTextStream_),r}static logPrefix_(e){return"("+e.type+":"+e.stream.id+")"}};l(Be,"APPEND_WINDOW_START_FUDGE_",.1),l(Be,"APPEND_WINDOW_END_FUDGE_",.1),l(Be,"MAX_RUN_AHEAD_SEGMENTS_",1),l(Be,"CROSS_BOUNDARY_END_THRESHOLD_",1),l(Be,"LOOKUP_TIME_DURATION_THRESHOLD_",1);var jr=Be;/*! @license
364
+ */var Be=class Be{constructor(e,t){l(this,"playerInterface_");l(this,"manifest_");l(this,"config_");l(this,"deferredCloseSegmentIndex_");l(this,"bufferingScale_");l(this,"currentVariant_");l(this,"currentTextStream_");l(this,"textStreamSequenceId_");l(this,"mediaStates_");l(this,"startupComplete_");l(this,"failureCallbackBackoff_");l(this,"fatalError_");l(this,"destroyer_");l(this,"lastMediaSourceReset_");l(this,"audioPrefetchMap_");l(this,"spatialVideoInfo_");l(this,"playRangeStart_");l(this,"playRangeEnd_");l(this,"lastTextMediaStateBeforeUnload_");l(this,"requestedDependencySegments_");l(this,"liveSeekableRangeEventManager_");l(this,"updateLiveSeekableRangeTimer_");l(this,"boundaryTime_");l(this,"crossBoundarySeek_");l(this,"crossBoundaryTimer_");l(this,"crossBoundaryEventManager_");this.playerInterface_=t,this.manifest_=e,this.config_=null,this.deferredCloseSegmentIndex_=new Map,this.bufferingScale_=1,this.currentVariant_=null,this.currentTextStream_=null,this.textStreamSequenceId_=0,this.mediaStates_=new Map,this.startupComplete_=!1,this.failureCallbackBackoff_=null,this.fatalError_=!1,this.destroyer_=new ci(()=>this.doDestroy_()),this.lastMediaSourceReset_=Date.now()/1e3,this.audioPrefetchMap_=new Map,this.spatialVideoInfo_={projection:null,hfov:null},this.playRangeStart_=0,this.playRangeEnd_=1/0,this.lastTextMediaStateBeforeUnload_=null,this.requestedDependencySegments_=[],this.liveSeekableRangeEventManager_=new ue,this.updateLiveSeekableRangeTimer_=new ae(()=>{if(!this.manifest_||!this.playerInterface_){this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop();return}if(!this.manifest_.presentationTimeline.isDynamic()){this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange(),this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop();return}let i=this.manifest_.presentationTimeline.getSeekRangeStart(),r=this.manifest_.presentationTimeline.getSeekRangeEnd();r-i>1?this.playerInterface_.mediaSourceEngine.setLiveSeekableRange(i,r):this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange()}),this.boundaryTime_=null,this.crossBoundarySeek_=!1,this.crossBoundaryTimer_=new ae(()=>{let i=this.playerInterface_.video;i.ended||this.boundaryTime_&&(p.info("Crossing boundary at",this.boundaryTime_),this.crossBoundarySeek_=!0,i.currentTime=this.boundaryTime_,this.boundaryTime_=null)}),this.crossBoundaryEventManager_=new ue}destroy(){return this.destroyer_.destroy()}async doDestroy_(){var t,i,r,s;(t=this.updateLiveSeekableRangeTimer_)==null||t.stop(),this.updateLiveSeekableRangeTimer_=null,(i=this.liveSeekableRangeEventManager_)==null||i.release(),this.liveSeekableRangeEventManager_=null,(r=this.crossBoundaryTimer_)==null||r.stop(),this.crossBoundaryTimer_=null,(s=this.crossBoundaryEventManager_)==null||s.release(),this.crossBoundaryEventManager_=null;let e=[];for(let n of this.mediaStates_.values())this.cancelUpdate_(n),e.push(this.abortOperations_(n)),n.segmentPrefetch&&(n.segmentPrefetch.clearAll(),n.segmentPrefetch=null);for(let n of this.audioPrefetchMap_.values())n.clearAll();await Promise.all(e),this.mediaStates_.clear(),this.audioPrefetchMap_.clear(),this.playerInterface_=null,this.manifest_=null,this.config_=null,this.boundaryTime_=null}configure(e){this.config_=e;let t={maxAttempts:Math.max(e.retryParameters.maxAttempts,2),baseDelay:e.retryParameters.baseDelay,backoffFactor:e.retryParameters.backoffFactor,fuzzFactor:e.retryParameters.fuzzFactor,timeout:0,stallTimeout:0,connectionTimeout:0},i=!0;this.failureCallbackBackoff_=new xr(t,i);let r=R.ContentType;if(e.disableAudioPrefetch){let s=this.mediaStates_.get(r.AUDIO);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null);for(let n of this.audioPrefetchMap_.keys())this.audioPrefetchMap_.get(n).clearAll(),this.audioPrefetchMap_.delete(n)}if(e.disableTextPrefetch){let s=this.mediaStates_.get(r.TEXT);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null)}if(e.disableVideoPrefetch){let s=this.mediaStates_.get(r.VIDEO);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null)}for(let s of this.mediaStates_.keys()){let n=this.mediaStates_.get(s);n.segmentPrefetch?(n.segmentPrefetch.resetLimit(e.segmentPrefetchLimit),e.segmentPrefetchLimit>0||(n.segmentPrefetch.clearAll(),n.segmentPrefetch=null)):e.segmentPrefetchLimit>0&&(n.segmentPrefetch=this.createSegmentPrefetch_(n.stream))}e.disableAudioPrefetch||this.updatePrefetchMapForAudio_()}applyPlayRange(e,t){this.manifest_.presentationTimeline.isDynamic()||(this.playRangeStart_=e,this.playRangeEnd_=t)}async start(e){v.assert(this.config_,"StreamingEngine configure() must be called before init()!"),await this.initStreams_(e||new Map),this.destroyer_.ensureNotDestroyed(),p.debug("init: completed initial Stream setup"),this.startupComplete_=!0}getCurrentVariant(){return this.currentVariant_}getCurrentTextStream(){return this.currentTextStream_}async loadNewTextStream_(e){let t=R.ContentType;v.assert(!this.mediaStates_.has(t.TEXT),"Should not call loadNewTextStream_ while streaming text!"),this.textStreamSequenceId_++;let i=this.textStreamSequenceId_;try{await this.playerInterface_.mediaSourceEngine.clear(t.TEXT)}catch(a){this.playerInterface_&&this.playerInterface_.onError(a)}let r=O.getFullType(e.mimeType,e.codecs);if(this.playerInterface_.mediaSourceEngine.reinitText(r,e.external),this.playerInterface_.mediaSourceEngine.getTextDisplayer().isTextVisible()&&this.textStreamSequenceId_==i){let a=this.createMediaState_(e);this.mediaStates_.set(t.TEXT,a),this.scheduleUpdate_(a,0)}}unloadTextStream(){let e=R.ContentType,t=this.mediaStates_.get(e.TEXT);t&&(this.cancelUpdate_(t),this.abortOperations_(t).catch(()=>{}),this.lastTextMediaStateBeforeUnload_=this.mediaStates_.get(e.TEXT),this.mediaStates_.delete(e.TEXT),t.stream&&t.stream.closeSegmentIndex&&t.stream.closeSegmentIndex()),this.currentTextStream_=null}setTrickPlay(e){let t=R.ContentType;this.updateSegmentIteratorReverse_();let i=this.mediaStates_.get(t.VIDEO);if(!i)return;let r=i.stream;if(r)if(p.debug("setTrickPlay",e),e){let s=r.trickModeVideo;if(!s||i.restoreStreamAfterTrickPlay)return;p.debug("Engaging trick mode stream",s),this.switchInternal_(s,!1,0,!1),i.restoreStreamAfterTrickPlay=r}else{let s=i.restoreStreamAfterTrickPlay;if(!s)return;p.debug("Restoring non-trick-mode stream",s),i.restoreStreamAfterTrickPlay=null,this.switchInternal_(s,!0,0,!1)}}switchVariant(e,t=!1,i=0,r=!1,s=!1){this.currentVariant_=e,this.startupComplete_&&(e.video&&this.switchInternal_(e.video,t,i,r,s),e.audio&&this.switchInternal_(e.audio,t,i,r,s))}async switchTextStream(e){if(this.lastTextMediaStateBeforeUnload_=null,this.currentTextStream_=e,!this.startupComplete_)return;let t=R.ContentType;v.assert(e&&e.type==t.TEXT,"Wrong stream type passed to switchTextStream!"),e.segmentIndex||await e.createSegmentIndex(),this.switchInternal_(e,!0,0,!1)}reloadTextStream(){let e=R.ContentType,t=this.mediaStates_.get(e.TEXT);t&&this.switchInternal_(t.stream,!0,0,!0)}handleDeferredCloseSegmentIndexes_(e){for(let[t,i]of this.deferredCloseSegmentIndex_.entries()){let r=t,s=i;r.includes(e.type)&&(s(),this.deferredCloseSegmentIndex_.delete(r))}}switchInternal_(e,t,i,r,s){let n=R.ContentType,a=e.type,o=this.mediaStates_.get(a);if(!o&&e.type==n.TEXT){this.loadNewTextStream_(e);return}if(v.assert(o,"switch: expected mediaState to exist"),!o)return;if(o.restoreStreamAfterTrickPlay&&(p.debug("switch during trick play mode",e),e.trickModeVideo?(o.restoreStreamAfterTrickPlay=e,e=e.trickModeVideo,p.debug("switch found trick play stream",e)):(o.restoreStreamAfterTrickPlay=null,p.debug("switch found no special trick play stream"))),o.stream==e&&!r){let u=Be.logPrefix_(o);p.debug("switch: Stream "+u+" already active");return}if(this.audioPrefetchMap_.has(e)?o.segmentPrefetch=this.audioPrefetchMap_.get(e):o.segmentPrefetch&&o.segmentPrefetch.switchStream(e),e.type==n.TEXT&&o.stream!=e){let u=O.getFullType(e.mimeType,e.codecs);this.playerInterface_.mediaSourceEngine.reinitText(u,e.external)}if(!this.audioPrefetchMap_.has(o.stream)&&o.stream.closeSegmentIndex)if(o.performingUpdate){let u=Be.logPrefix_(o);this.deferredCloseSegmentIndex_.getOrInsert(u,o.stream.closeSegmentIndex)}else o.stream.closeSegmentIndex();let c=o.stream.isAudioMuxedInVideo!=e.isAudioMuxedInVideo;o.stream=e,o.segmentIterator=null,o.adaptation=!!s,e.dependencyStream?o.dependencyMediaState=this.createMediaState_(e.dependencyStream):o.dependencyMediaState=null,this.setupCrossBoundaryListeners_();let d=Be.logPrefix_(o);if(p.debug("switch: switching to Stream "+d),c&&(o.lastInitSegmentReference=null,o.lastAppendWindowStart=null,o.lastAppendWindowEnd=null,e.isAudioMuxedInVideo)){let u=null;o.type===n.VIDEO?u=this.mediaStates_.get(n.AUDIO):o.type===n.AUDIO&&(u=this.mediaStates_.get(n.VIDEO)),u&&(this.abortOperations_(u).catch(()=>{}),u.lastInitSegmentReference=null,u.lastAppendWindowStart=null,u.lastAppendWindowEnd=null,this.forceClearBuffer_(u),this.makeAbortDecision_(u).catch(m=>{this.playerInterface_&&(v.assert(m instanceof h,"Wrong error type!"),this.playerInterface_.onError(m))}))}t?o.clearingBuffer?o.waitingToFlushBuffer=!0:o.performingUpdate?(o.waitingToClearBuffer=!0,o.clearBufferSafeMargin=i,o.waitingToFlushBuffer=!0):(this.cancelUpdate_(o),this.clearBuffer_(o,!0,i).catch(u=>{this.playerInterface_&&(v.assert(u instanceof h,"Wrong error type!"),this.playerInterface_.onError(u))})):!o.performingUpdate&&!o.updateTimer&&this.scheduleUpdate_(o,0),this.makeAbortDecision_(o).catch(u=>{this.playerInterface_&&(v.assert(u instanceof h,"Wrong error type!"),this.playerInterface_.onError(u))})}async makeAbortDecision_(e){if(!e.operation)return;let t=e.stream,i=e.operation;t.segmentIndex||await t.createSegmentIndex();let r=t.dependencyStream;r&&!r.segmentIndex&&await r.createSegmentIndex(),e.operation==i&&e.stream==t&&(v.assert(e.stream.segmentIndex,"Segment index should exist by now!"),this.shouldAbortCurrentRequest_(e)&&(p.info("Aborting current segment request."),e.operation.abort()))}shouldAbortCurrentRequest_(e){v.assert(e.operation,"Abort logic requires an ongoing operation!"),v.assert(e.stream&&e.stream.segmentIndex,"Abort logic requires a segment index");let t=this.playerInterface_.getPresentationTime(),i=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type),r=this.getTimeNeeded_(e,t),s=e.stream.segmentIndex.find(r),n=s==null?null:e.stream.segmentIndex.get(s),a=n?n.getSize():null;if(n&&!a){let _=n.getEndTime()-n.getStartTime(),T=e.stream.bandwidth||this.currentVariant_.bandwidth;a=_*T/8}if(!a)return!0;let o=n.initSegmentReference;o&&(a+=o.getSize()||0);let c=this.playerInterface_.getBandwidthEstimate(),d=a*8/c,u=(i||0)-t,m=this.config_.rebufferingGoal,f=u-m;return d<f||e.operation.getBytesRemaining()>a}seeked(){if(!this.playerInterface_)return;let e=this.playerInterface_.getPresentationTime(),t=R.ContentType,i=s=>this.playerInterface_.mediaSourceEngine.isBuffered(s,e),r=!1;for(let s of this.mediaStates_.keys()){let n=this.mediaStates_.get(s),a=Be.logPrefix_(n);if(!this.crossBoundarySeek_&&!i(s)){if(this.lastMediaSourceReset_=0,n.segmentPrefetch&&n.segmentPrefetch.resetPosition(),n.type===t.AUDIO)for(let d of this.audioPrefetchMap_.values())d.resetPosition();n.segmentIterator=null,(this.playerInterface_.mediaSourceEngine.bufferEnd(s)!=null||n.performingUpdate)&&(this.forceClearBuffer_(n),r=!0),n.operation&&(n.operation.abort(),p.debug(a,"Aborting operation due to seek"),n.operation=null),s===t.TEXT&&this.playerInterface_.mediaSourceEngine.resetCaptionParser(),n.seeked=!0}this.crossBoundarySeek_&&!n.clearingBuffer&&!n.performingUpdate&&!n.updateTimer&&this.scheduleUpdate_(n,0)}this.shouldUseCrossBoundaryLogic_()&&this.forwardTimeForCrossBoundary_(),r||p.debug("(all): seeked: buffered seek: presentationTime="+e)}forceClearBuffer_(e){let t=Be.logPrefix_(e);if(e.clearingBuffer){p.debug(t,"clear: already clearing the buffer");return}if(e.waitingToClearBuffer){p.debug(t,"clear: already waiting");return}if(e.performingUpdate){p.debug(t,"clear: currently updating"),e.waitingToClearBuffer=!0,e.clearBufferSafeMargin=0;return}let i=e.type;if(this.playerInterface_.mediaSourceEngine.bufferStart(i)==null){p.debug(t,"clear: nothing buffered"),e.updateTimer==null&&this.scheduleUpdate_(e,0);return}p.debug(t,"clear: handling right now"),this.cancelUpdate_(e),this.clearBuffer_(e,!1,0).catch(r=>{this.playerInterface_&&(v.assert(r instanceof h,"Wrong error type!"),this.playerInterface_.onError(r))})}async initStreams_(e){if(v.assert(this.config_,"StreamingEngine configure() must be called before init()!"),!this.currentVariant_)throw p.error("init: no Streams chosen"),new h(h.Severity.CRITICAL,h.Category.STREAMING,h.Code.STREAMING_ENGINE_STARTUP_INVALID_STATE);let t=this.getStreamsByType_(!0);await this.playerInterface_.mediaSourceEngine.init(t,this.manifest_.sequenceMode,this.manifest_.type,this.manifest_.ignoreManifestTimestampsInSegmentsMode),this.destroyer_.ensureNotDestroyed(),this.updateDuration().catch(()=>{});for(let r of t.keys()){let s=t.get(r);if(!this.mediaStates_.has(r)){let n=this.createMediaState_(s),a=e.get(s.id);a&&(a.replaceFetchDispatcher((o,c,d)=>this.dispatchFetch_(o,c,d)),n.segmentPrefetch=a),this.mediaStates_.set(r,n),this.scheduleUpdate_(n,0)}}this.setupCrossBoundaryListeners_()}createMediaState_(e){let t={stream:e,type:e.type,segmentIterator:null,segmentPrefetch:this.createSegmentPrefetch_(e),lastSegmentReference:null,lastInitSegmentReference:null,lastTimestampOffset:null,lastAppendWindowStart:null,lastAppendWindowEnd:null,lastCodecs:null,lastMimeType:null,restoreStreamAfterTrickPlay:null,endOfStream:!1,performingUpdate:!1,updateTimer:null,waitingToClearBuffer:!1,clearBufferSafeMargin:0,waitingToFlushBuffer:!1,clearingBuffer:!1,seeked:!0,adaptation:!1,recovering:!1,hasError:!1,operation:null,dependencyMediaState:null};return e.dependencyStream&&(t.dependencyMediaState=this.createMediaState_(e.dependencyStream)),t}createSegmentPrefetch_(e){let t=R.ContentType;if(this.manifest_.type==me.MSF||e.type===t.VIDEO&&this.config_.disableVideoPrefetch||e.type===t.AUDIO&&this.config_.disableAudioPrefetch)return null;let i=O.CEA608_CLOSED_CAPTION_MIMETYPE,r=O.CEA708_CLOSED_CAPTION_MIMETYPE;if(e.type===t.TEXT&&(e.mimeType==i||e.mimeType==r)||e.type===t.TEXT&&this.config_.disableTextPrefetch)return null;if(this.audioPrefetchMap_.has(e))return this.audioPrefetchMap_.get(e);let s=e.type,n=this.mediaStates_.get(s),a=n&&n.segmentPrefetch;if(a&&e===a.getStream())return a;if(this.config_.segmentPrefetchLimit>0){let o=this.playerInterface_.getPlaybackRate()<0;return new Xr(this.config_.segmentPrefetchLimit,e,(c,d,u)=>this.dispatchFetch_(c,d,u),o,this.playerInterface_.shouldPrefetchNextSegment,this.playerInterface_.getPlaybackRate)}return null}updatePrefetchMapForAudio_(){let e=this.config_.segmentPrefetchLimit,t=this.config_.prefetchAudioLanguages;for(let i of this.manifest_.variants){if(!i.audio)continue;if(this.audioPrefetchMap_.has(i.audio)){let s=this.audioPrefetchMap_.get(i.audio);if(s.resetLimit(e),!(e>0)||!t.some(n=>ve.areLanguageCompatible(i.audio.language,n))){let n=i.audio.type,a=this.mediaStates_.get(n),o=a&&a.segmentPrefetch;s!==o&&s.clearAll(),this.audioPrefetchMap_.delete(i.audio)}continue}if(e<=0||!t.some(s=>ve.areLanguageCompatible(i.audio.language,s)))continue;let r=this.createSegmentPrefetch_(i.audio);r&&(i.audio.segmentIndex||i.audio.createSegmentIndex(),this.audioPrefetchMap_.set(i.audio,r))}}async updateDuration(){let e=Ke.isInfiniteLiveStreamDurationSupported(),t=this.manifest_.presentationTimeline.getDuration();this.liveSeekableRangeEventManager_.removeAll(),t<1/0?(e&&(this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop(),this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange()),await this.playerInterface_.mediaSourceEngine.setDuration(t)):e?(await this.playerInterface_.mediaSourceEngine.setDuration(1/0),this.updateLiveSeekableRangeTimer_&&(this.updateLiveSeekableRangeTimer_.tickNow(),this.liveSeekableRangeEventManager_.listenOnce(this.playerInterface_.video,"timeupdate",()=>{this.updateLiveSeekableRangeTimer_.tickNow().tickEvery(.5)}))):this.playerInterface_.mediaSourceEngine.setDuration(Math.pow(2,32))}async onUpdate_(e){this.destroyer_.ensureNotDestroyed();let t=R.ContentType,i=Be.logPrefix_(e);if(v.assert(!e.performingUpdate&&e.updateTimer!=null,i+" unexpected call to onUpdate_()"),e.performingUpdate||e.updateTimer==null||(v.assert(!e.clearingBuffer,i+" onUpdate_() should not be called when clearing the buffer"),e.clearingBuffer))return;if(e.updateTimer=null,e.waitingToClearBuffer){p.debug(i,"skipping update and clearing the buffer"),await this.clearBuffer_(e,e.waitingToFlushBuffer,e.clearBufferSafeMargin);return}if(this.handleDeferredCloseSegmentIndexes_(e),!e.stream.segmentIndex){let a=e.stream,o=e.stream.codecs,c=e.stream.mimeType;try{await e.stream.createSegmentIndex()}catch(d){await this.handleStreamingError_(e,d);return}if(e.type===t.TEXT&&(o!=e.stream.codecs||c!=e.stream.mimeType)){let d=O.getFullType(e.stream.mimeType,e.stream.codecs);this.playerInterface_.mediaSourceEngine.reinitText(d,e.stream.external)}if(a!=e.stream){a.closeSegmentIndex&&(v.assert(!e.stream.segmentIndex,"mediaState.stream should not have segmentIndex yet."),a.closeSegmentIndex()),!e.performingUpdate&&!e.updateTimer&&this.scheduleUpdate_(e,0);return}}if(e.dependencyMediaState&&!e.dependencyMediaState.stream.segmentIndex)try{await e.dependencyMediaState.stream.createSegmentIndex()}catch(a){p.warning("Could not create segment index for dependency",a)}try{let a=this.update_(e);a!=null&&(this.scheduleUpdate_(e,a),e.hasError=!1)}catch(a){await this.handleStreamingError_(e,a);return}if(e.type===t.TEXT)return;let r=[];e.stream&&!e.stream.isAudioMuxedInVideo&&r.push(e);let s=e.type===t.AUDIO?t.VIDEO:t.AUDIO,n=this.mediaStates_.get(s);if(n&&n.stream&&!n.stream.isAudioMuxedInVideo&&r.push(n),this.startupComplete_&&r.every(a=>a.endOfStream)){p.v1(i,"calling endOfStream()..."),await this.playerInterface_.mediaSourceEngine.endOfStream(),this.destroyer_.ensureNotDestroyed();let a=this.playerInterface_.mediaSourceEngine.getDuration();a!=0&&a<this.manifest_.presentationTimeline.getDuration()&&this.manifest_.presentationTimeline.setDuration(a)}}update_(e){v.assert(this.manifest_,"manifest_ should not be null"),v.assert(this.config_,"config_ should not be null");let t=R.ContentType;if(Be.isEmbeddedText_(e))return this.playerInterface_.mediaSourceEngine.setSelectedClosedCaptionId(e.stream.originalId||""),null;if(e.type==t.TEXT&&this.playerInterface_.mediaSourceEngine.clearSelectedClosedCaptionId(),e.stream.isAudioMuxedInVideo&&e.type==t.AUDIO)return null;if(e.type!=t.TEXT&&this.playerInterface_.mediaSourceEngine.closed())return this.resetMediaSource(!0),null;let i=this.config_.updateIntervalSeconds/Math.max(1,Math.abs(this.playerInterface_.getPlaybackRate()));if(!this.playerInterface_.mediaSourceEngine.isStreamingAllowed()&&e.type!=t.TEXT)return i/2;let r=Be.logPrefix_(e),s=this.playerInterface_.getPresentationTime(),n=this.playerInterface_.getPlaybackRate()<0;if(e.type===t.AUDIO)for(let k of this.audioPrefetchMap_.keys()){let L=this.audioPrefetchMap_.get(k);L.evict(s,!0),L.prefetchSegmentsByTime(s)}let a=this.getTimeNeeded_(e,s);p.v2(r,"timeNeeded="+a);let o=n?this.playerInterface_.mediaSourceEngine.bufferedBehindOf(e.type,s):this.playerInterface_.mediaSourceEngine.bufferedAheadOf(e.type,s);if(e.type==t.VIDEO&&!this.mediaStates_.has(t.AUDIO)&&this.playerInterface_.mediaSourceEngine.hasSourceBufferFor(t.AUDIO)){let k=n?this.playerInterface_.mediaSourceEngine.bufferedBehindOf(t.AUDIO,s):this.playerInterface_.mediaSourceEngine.bufferedAheadOf(t.AUDIO,s);o=Math.min(o,k)}p.v2(r,"update_:","presentationTime="+s,"bufferedAhead="+o);let c=Math.max(this.config_.rebufferingGoal,this.config_.bufferingGoal),d=Math.max(1,c*this.bufferingScale_),u=this.manifest_.presentationTimeline.isDynamic()?1/0:this.manifest_.presentationTimeline.getDuration()-a,m=1e-6,f=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type);if(!n&&u<m&&f){if(p.debug(r,"buffered to end of presentation"),e.endOfStream=!0,e.type==t.VIDEO){let k=this.mediaStates_.get(t.TEXT);k&&Be.isEmbeddedText_(k)&&(k.endOfStream=!0);let L=this.mediaStates_.get(t.AUDIO);L&&L.stream.isAudioMuxedInVideo&&(L.endOfStream=!0)}return null}if(e.endOfStream=!1,n){let k=this.manifest_.presentationTimeline.getSeekRangeStart();if(f!=null&&a<=k+m)return p.debug(r,"buffered to start of presentation"),null}if(o>0&&this.config_.stopFetchingOnPause&&this.playerInterface_.video.paused)return p.v2(r,"video paused"),i/2;if(o>=d)return p.v2(r,"buffering goal met"),i/2;let g=!e.segmentIterator,_=this.getSegmentReferenceNeeded_(e,s,f);if(!_){if(!this.manifest_.presentationTimeline.isDynamic()&&u<m){if(p.info(r,"Close to end with no buffer and no segment reference.","Marking as end of stream."),e.endOfStream=!0,e.type==t.VIDEO){let V=this.mediaStates_.get(t.TEXT);V&&Be.isEmbeddedText_(V)&&(V.endOfStream=!0)}return null}let k=1/0,L=e.lastSegmentReference;return L&&(k=L.endTime-L.startTime),Math.min(k/2,i)}let T=e.lastInitSegmentReference,S=_.initSegmentReference;T&&S&&Tt.equal(S,T)&&(T.boundaryEnd=S.boundaryEnd);let b=!1;g&&e.adaptation&&(b=!0,e.adaptation=!1);let E=1/0,C=-1/0;for(let k of this.mediaStates_.values()){if(Be.isEmbeddedText_(k)||k.stream.isAudioMuxedInVideo||k.segmentIterator&&!k.segmentIterator.current())continue;let L=this.getTimeNeeded_(k,s);E=Math.min(E,L),C=Math.max(C,L)}let w=this.manifest_.presentationTimeline.getMaxSegmentDuration()*Be.MAX_RUN_AHEAD_SEGMENTS_;return(n?C-a:a-E)>=w?(p.v2(r,"waiting for other streams to buffer"),i):(e.segmentPrefetch&&e.segmentIterator&&!this.audioPrefetchMap_.has(e.stream)&&(e.segmentPrefetch.evict(_.startTime+.001),e.segmentPrefetch.prefetchSegmentsByTime(_.startTime).catch(()=>{})),this.shouldUseCrossBoundaryLogic_()&&this.discardReferenceByBoundary_(e,_)||(this.fetchAndAppend_(e,s,_,b).catch(()=>{}),e.dependencyMediaState&&this.fetchAndAppendDependency_(e.dependencyMediaState,s,d)),null)}getTimeNeeded_(e,t){return e.lastSegmentReference?this.playerInterface_.getPlaybackRate()<0?e.lastSegmentReference.startTime:e.lastSegmentReference.endTime:t}getSegmentReferenceNeeded_(e,t,i){var s,n;let r=Be.logPrefix_(e);if(v.assert(e.stream.segmentIndex,"segment index should have been generated already"),e.segmentIterator){let a=e.segmentIterator.current();if(a&&e.lastSegmentReference){let o=e.lastSegmentReference.startTime,c=e.lastSegmentReference.endTime;jt.isFloatEqual(o,a.startTime,.002)&&jt.isFloatEqual(c,a.endTime,.002)&&(a=e.segmentIterator.next().value)}return a}else if(e.lastSegmentReference||i){let a=this.playerInterface_.getPlaybackRate()<0,o;if(a){let d=this.playerInterface_.mediaSourceEngine.bufferStart(e.type),u=e.lastSegmentReference?e.lastSegmentReference.startTime:null,m=d;u!=null&&(m==null||u<m)&&(m=u),o=m!=null?m-.001:i}else o=e.lastSegmentReference?e.lastSegmentReference.endTime:i;v.assert(o!=null,"Should have a time to search"),p.v1(r,"looking up segment from new stream endTime:",o),e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(o,!1,a));let c=e.segmentIterator&&e.segmentIterator.next().value;return c==null&&p.warning(r,"cannot find segment","endTime:",o),c}else{let a=this.manifest_.sequenceMode||this.shouldUseCrossBoundaryLogic_()||this.manifest_.type===me.MSF?0:this.config_.inaccurateManifestTolerance,o=Math.max(t-a,0),c=this.playerInterface_.mediaSourceEngine.getDuration(),d=Be.LOOKUP_TIME_DURATION_THRESHOLD_;Math.abs(o-c)<d&&(a=d,o=Math.max(t-a,0)),p.v1(r,"looking up segment","lookupTime:",o,"presentationTime:",t);let u=this.playerInterface_.getPlaybackRate()<0,m=null;for(a&&(e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(o,!1,u)),m=e.segmentIterator&&e.segmentIterator.next().value),m||(e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(t,!1,u)),m=e.segmentIterator&&e.segmentIterator.next().value);(m==null?void 0:m.getStatus())===Se.Status.MISSING;)m=(n=(s=e.segmentIterator)==null?void 0:s.next().value)!=null?n:null;return m==null&&p.warning(r,"cannot find segment","lookupTime:",o,"presentationTime:",t),m}}async fetchAndAppend_(e,t,i,r){let s=R.ContentType,n=Be.logPrefix_(e);p.v1(n,"fetchAndAppend_:","presentationTime="+t,"reference.startTime="+i.startTime,"reference.endTime="+i.endTime);let a=e.stream,o=e.segmentIterator;e.performingUpdate=!0;try{if(i.getStatus()==Se.Status.MISSING)throw new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.SEGMENT_MISSING);if(await this.initSourceBuffer_(e,i,r),this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;p.v2(n,"fetching segment");let c=a.mimeType=="video/mp4"||a.mimeType=="audio/mp4",d=window.ReadableStream,u=this.config_.lowLatencyMode&&this.manifest_.isLowLatency,m={mediaTimestamp:null};if(u&&d&&c&&(this.manifest_.type!=me.HLS||i.hasByterangeOptimization())){let T=new Uint8Array(0),S=!1,b=!1,E,C=async w=>{if(!S&&(b=!0,this.destroyer_.ensureNotDestroyed(),!this.fatalError_))try{T=ne.concat(T,w);let M=!1,x=0;if(new F().box("mdat",k=>{x=k.size+k.start,M=!0}).parse(T,!1,!0),M){let k=T.subarray(0,x);T=T.subarray(x);let L=await this.append_(e,t,a,i,k,!0,r);m.mediaTimestamp==null&&(m=L),e.segmentPrefetch&&e.segmentIterator&&e.segmentPrefetch.prefetchSegmentsByTime(i.startTime,!0)}}catch(M){E=M}},A=await this.fetch_(e,i,C);if(E)throw E;if(!b){if(S=!0,this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;if(e.waitingToClearBuffer){p.info(n,"waitingToClearBuffer, skip append"),e.performingUpdate=!1,this.scheduleUpdate_(e,0);return}m=await this.append_(e,t,a,i,A,!1,r)}e.segmentPrefetch&&e.segmentIterator&&e.segmentPrefetch.prefetchSegmentsByTime(i.startTime,!0)}else{u&&!d&&p.warning("Low latency streaming mode is enabled, but ReadableStream is not supported by the browser.");let S=await this.fetch_(e,i);if(this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;if(this.destroyer_.ensureNotDestroyed(),e.waitingToClearBuffer){p.info(n,"waitingToClearBuffer, skip append"),e.performingUpdate=!1,this.scheduleUpdate_(e,0);return}m=await this.append_(e,t,a,i,S,!1,r)}if(this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;e.lastSegmentReference=i;let f=o.next().value;p.v2(n,"advancing to next segment",f),e.performingUpdate=!1,e.recovering=!1;let _=this.playerInterface_.mediaSourceEngine.getBufferedInfo()[e.type];if(p.v1(n,"finished fetch and append",JSON.stringify(_)),!e.waitingToClearBuffer){let T=null;e.type===s.VIDEO?T=this.mediaStates_.get(s.AUDIO):e.type===s.AUDIO&&(T=this.mediaStates_.get(s.VIDEO)),T&&T.type==s.AUDIO?this.playerInterface_.onSegmentAppended(i,e.stream,T.stream.isAudioMuxedInVideo,!1,m.mediaTimestamp):this.playerInterface_.onSegmentAppended(i,e.stream,e.stream.codecs.includes(","),!1,m.mediaTimestamp)}this.cancelUpdate_(e),this.scheduleUpdate_(e,0)}catch(c){if(this.destroyer_.ensureNotDestroyed(c),this.fatalError_)return;v.assert(c instanceof h,"Should only receive a Shaka error"),e.performingUpdate=!1,c.code==h.Code.OPERATION_ABORTED?(e.performingUpdate=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0)):e.type==s.TEXT&&this.config_.ignoreTextStreamFailures?(c.code==h.Code.BAD_HTTP_STATUS?p.warning(n,"Text stream failed to download. Proceeding without it."):p.warning(n,"Text stream failed to parse. Proceeding without it."),this.mediaStates_.delete(s.TEXT)):c.code==h.Code.QUOTA_EXCEEDED_ERROR?await this.handleQuotaExceeded_(e,c):(p.error(n,"failed fetch and append: code="+c.code),e.hasError=!0,c.category==h.Category.NETWORK&&e.segmentPrefetch&&e.segmentPrefetch.removeReference(i),c.severity=h.Severity.CRITICAL,await this.handleStreamingError_(e,c))}}async fetchAndAppendDependency_(e,t,i){let r=R.ContentType,s=e.stream,n=s.segmentIndex,a=n&&n.getIteratorForTime(t),o=a&&a.next().value;for(;o&&this.requestedDependencySegments_.includes(o.startTime);)o=a&&a.next().value;if(o){let c=o.initSegmentReference;if(c&&!Tt.equal(c,e.lastInitSegmentReference)){e.lastInitSegmentReference=c;try{let d=await this.fetch_(e,c);if(!this.playerInterface_)return;this.playerInterface_.mediaSourceEngine.appendDependency(d,0,s),this.requestedDependencySegments_=[]}catch(d){throw e.lastInitSegmentReference=null,d}}if(!e.lastSegmentReference||e.lastSegmentReference!=o){e.lastSegmentReference=o;try{let m=await this.fetch_(e,o);if(!this.playerInterface_)return;this.playerInterface_.mediaSourceEngine.appendDependency(m,0,s),this.requestedDependencySegments_.push(o.startTime)}catch(m){throw e.lastSegmentReference=null,m}if(!this.playerInterface_)return;if(!e.waitingToClearBuffer){let m=null;e.type===r.VIDEO?m=this.mediaStates_.get(r.AUDIO):e.type===r.AUDIO&&(m=this.mediaStates_.get(r.VIDEO)),m&&m.type==r.AUDIO?this.playerInterface_.onSegmentAppended(o,e.stream,m.stream.isAudioMuxedInVideo,!0,null):this.playerInterface_.onSegmentAppended(o,e.stream,e.stream.codecs.includes(","),!0,null)}let d=Math.max(0,...this.requestedDependencySegments_);this.playerInterface_.getPresentationTime()+i>d&&await this.fetchAndAppendDependency_(e,o.startTime,i)}}}retry(e){if(this.destroyer_.destroyed())return p.error("Unable to retry after StreamingEngine is destroyed!"),!1;if(this.fatalError_)return p.error("Unable to retry after StreamingEngine encountered a fatal error!"),!1;for(let t of this.mediaStates_.values()){let i=Be.logPrefix_(t);t.hasError&&!t.performingUpdate&&!t.updateTimer&&(p.info(i,"Retrying after failure..."),t.hasError=!1,this.scheduleUpdate_(t,e))}return!0}async handleQuotaExceeded_(e,t){let i=Be.logPrefix_(e),r=!1;for(let s of this.mediaStates_.values())if(s!=e&&s.recovering){r=!0;break}if(r)p.debug(i,"MediaSource threw QuotaExceededError:","waiting for another stream to recover...");else{if(this.config_.avoidEvictionOnQuotaExceededError){let o=this.getDisabledTime_(t);if(o&&p.debug(i,"Disabling stream due to quota",t),this.playerInterface_.disableStream(e.stream,o))return;this.scheduleUpdate_(e,4);return}let s=Math.round(100*this.bufferingScale_);if(s>20)this.bufferingScale_-=.2;else if(s>4)this.bufferingScale_-=.04;else{let o=this.getDisabledTime_(t);if(o&&p.debug(i,"Disabling stream due to quota",t),this.playerInterface_.disableStream(e.stream,o)){this.bufferingScale_=1;let d=this.playerInterface_.getPresentationTime();await this.evict_(e,d)}else p.error(i,"MediaSource threw QuotaExceededError too many times"),e.hasError=!0,this.fatalError_=!0,this.playerInterface_.onError(t);return}let n=Math.round(100*this.bufferingScale_);p.warning(i,"MediaSource threw QuotaExceededError:","reducing buffering goals by "+(100-n)+"%"),e.recovering=!0;let a=this.playerInterface_.getPresentationTime();await this.evict_(e,a)}this.scheduleUpdate_(e,4)}async initSourceBuffer_(e,t,i){let r=R.ContentType,s=Be.logPrefix_(e),n=e.lastSegmentReference==null,a=[],o=Math.max(0,Math.max(t.appendWindowStart,this.playRangeStart_)-Be.APPEND_WINDOW_START_FUDGE_),c=Math.min(t.appendWindowEnd,this.playRangeEnd_)+Be.APPEND_WINDOW_END_FUDGE_;if(this.config_.clampAppendWindowToDuration){let _=this.manifest_.presentationTimeline.getDuration();_<1/0&&(c=Math.min(c,_))}v.assert(t.startTime<=c,s+" segment should start before append window end");let d=t.codecs||e.stream.codecs,u=O.getCodecBase(d),m=O.getBasicType(t.mimeType||e.stream.mimeType),f=t.timestampOffset;if(f!=e.lastTimestampOffset||o!=e.lastAppendWindowStart||c!=e.lastAppendWindowEnd||u!=e.lastCodecs||m!=e.lastMimeType){if(p.v1(s,"setting timestamp offset to "+f),p.v1(s,"setting append window start to "+o),p.v1(s,"setting append window end to "+c),e.lastCodecs&&e.lastMimeType&&this.playerInterface_.mediaSourceEngine.isResetMediaSourceNecessary(e.type,m,d,this.getStreamsByType_())){let T=null;e.type===r.VIDEO?T=this.mediaStates_.get(r.AUDIO):e.type===r.AUDIO&&(T=this.mediaStates_.get(r.VIDEO)),T&&(await this.abortOperations_(T).catch(()=>{}),T.lastInitSegmentReference=null,T.lastAppendWindowStart=null,T.lastAppendWindowEnd=null,this.forceClearBuffer_(T))}await this.setProperties_(e,f,o,c,t,u,m)}if(!Tt.equal(t.initSegmentReference,e.lastInitSegmentReference)&&(e.lastInitSegmentReference=t.initSegmentReference,t.isIndependent()&&t.initSegmentReference)){p.v1(s,"fetching init segment");let _=this.fetch_(e,t.initSegmentReference),T=async()=>{try{let b=await _;this.destroyer_.ensureNotDestroyed();let E=null,C=new Map,A={projection:null,hfov:null};if(e.stream){let L=e.stream.videoLayout;if(L){let V=L.split("/");V.includes("PROJ-RECT")?A.projection="rect":V.includes("PROJ-EQUI")?A.projection="equi":V.includes("PROJ-HEQU")?A.projection="hequ":V.includes("PROJ-PRIM")?A.projection="prim":V.includes("PROJ-AIV")&&(A.projection="aiv")}}let w=new F;w.boxes(["moov","trak","mdia"],F.children).fullBox("mdhd",L=>{v.assert(L.version!=null,"MDHD is a full box and should have a valid version."),E=pe.parseMDHD(L.reader,L.version).timescale}).fullBox("hdlr",L=>{switch(v.assert(L.version!=null,"HDLR is a full box and should have a valid version."),pe.parseHDLR(L.reader).handlerType){case"soun":C.set(r.AUDIO,E);break;case"vide":C.set(r.VIDEO,E);break}E=null}),e.type===r.VIDEO&&!A.projection&&w.boxes(["minf","stbl"],F.children).fullBox("stsd",F.sampleDescription).boxes([...F.AVC_HEVC_VVC_DV,"encv"],F.visualSampleEntry).boxes(["vexu","proj"],F.children).fullBox("prji",L=>{let V=pe.parsePRJI(L.reader);A.projection=V.projection}).box("hfov",L=>{let V=pe.parseHFOV(L.reader);A.hfov=V.hfov}),w.parse(b,!0,!0),e.type===r.VIDEO&&this.updateSpatialVideoInfo_(A),C.has(e.type)?t.initSegmentReference.timescale=C.get(e.type):E!=null&&(t.initSegmentReference.timescale=E);let M=e.stream.segmentIndex,x;M instanceof Mi&&(x=M.getTimelineForTime(t.startTime)),p.v1(s,"appending init segment");let k=e.stream.closedCaptions&&e.stream.closedCaptions.size>0;await this.playerInterface_.beforeAppendSegment(e.type,b),await this.playerInterface_.mediaSourceEngine.appendBuffer(e.type,b,null,e.stream,k,e.seeked,i,!1,!1,x)}catch(b){throw e.lastInitSegmentReference=null,b}},S=t.startTime;if(n){let b=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type);b!=null&&(S=b)}this.playerInterface_.onInitSegmentAppended(S,t.initSegmentReference),a.push(T())}let g=e.lastSegmentReference?e.lastSegmentReference.discontinuitySequence:-1;t.discontinuitySequence!=g&&a.push(this.playerInterface_.mediaSourceEngine.resync(e.type,t.startTime)),await Promise.all(a)}async setProperties_(e,t,i,r,s,n,a){let o=R.ContentType,c=this.getStreamsByType_();try{e.lastAppendWindowStart=i,e.lastAppendWindowEnd=r,n&&(e.lastCodecs=n),a&&(e.lastMimeType=a),e.lastTimestampOffset=t;let d=this.manifest_.sequenceMode||this.manifest_.type==me.HLS,u=null;e.type===o.VIDEO?u=this.mediaStates_.get(o.AUDIO):e.type===o.AUDIO&&(u=this.mediaStates_.get(o.VIDEO)),u&&u.stream&&u.stream.isAudioMuxedInVideo&&await this.playerInterface_.mediaSourceEngine.setStreamProperties(u.type,t,i,r,d,u.stream.mimeType,u.stream.codecs,c),await this.playerInterface_.mediaSourceEngine.setStreamProperties(e.type,t,i,r,d,s.mimeType||e.stream.mimeType,s.codecs||e.stream.codecs,c)}catch(d){throw e.lastAppendWindowStart=null,e.lastAppendWindowEnd=null,e.lastCodecs=null,e.lastMimeType=null,e.lastTimestampOffset=null,d}}async append_(e,t,i,r,s,n=!1,a=!1){let o=Be.logPrefix_(e),c=i.closedCaptions&&i.closedCaptions.size>0;if(this.config_.shouldFixTimestampOffset){let m=i.mimeType=="video/mp4"||i.mimeType=="audio/mp4",f=null;r.initSegmentReference&&(f=r.initSegmentReference.timescale),m&&f&&i.type===R.ContentType.VIDEO&&this.manifest_.type==me.DASH&&new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("tfdt",async _=>{v.assert(_.version!=null,"TFDT is a full box and should have a valid version.");let S=pe.parseTFDTInaccurate(_.reader,_.version).baseMediaDecodeTime;if(!S)return;v.assert(typeof f=="number","Should be an number!");let b=-S/f;if((Number(e.lastTimestampOffset)||0)<b){let C=e.lastAppendWindowStart,A=e.lastAppendWindowEnd;v.assert(typeof C=="number","Should be an number!"),v.assert(typeof A=="number","Should be an number!"),await this.setProperties_(e,b,C,A,r)}}).parse(s,!1,n)}await this.evict_(e,t),this.destroyer_.ensureNotDestroyed();let d=e.seeked;e.seeked=!1,await this.playerInterface_.beforeAppendSegment(e.type,s);let u=await this.playerInterface_.mediaSourceEngine.appendBuffer(e.type,s,r,i,c,d,a,n);return this.destroyer_.ensureNotDestroyed(),p.v2(o,"appended media segment"),u}async evict_(e,t){this.lastTextMediaStateBeforeUnload_==e&&(this.lastTextMediaStateBeforeUnload_=null);let i=e.stream.segmentIndex,r;i instanceof Mi&&(i.evict(this.manifest_.presentationTimeline.getSegmentAvailabilityStart()),r=[],i.forEachIndex(g=>{r.push(g.continuityTimeline())}));let s=Be.logPrefix_(e);p.v2(s,"checking buffer length");let n=Math.max(this.config_.bufferBehind*this.bufferingScale_,this.manifest_.presentationTimeline.getMaxSegmentDuration()),a=this.playerInterface_.mediaSourceEngine.bufferStart(e.type);if(a==null){p.v2(s,"buffer behind okay because nothing buffered:","presentationTime="+t,"bufferBehind="+n);return}let o=t-a,c=this.config_.evictionGoal,d=this.manifest_.presentationTimeline.getSeekRangeStart(),m=this.manifest_.presentationTimeline.getSeekRangeEnd()-d,f=o-n;if(m>c&&(f=Math.max(o-n,d-c-a)),f<=c){p.v2(s,"buffer behind okay:","presentationTime="+t,"bufferedBehind="+o,"bufferBehind="+n,"evictionGoal="+c,"underflow="+Math.abs(f));return}p.v1(s,"buffer behind too large:","presentationTime="+t,"bufferedBehind="+o,"bufferBehind="+n,"evictionGoal="+c,"overflow="+f),await this.playerInterface_.mediaSourceEngine.remove(e.type,a,a+f,r),this.destroyer_.ensureNotDestroyed(),p.v1(s,"evicted "+f+" seconds"),this.lastTextMediaStateBeforeUnload_&&(await this.evict_(this.lastTextMediaStateBeforeUnload_,t),this.destroyer_.ensureNotDestroyed())}static isEmbeddedText_(e){let t=O.CEA608_CLOSED_CAPTION_MIMETYPE,i=O.CEA708_CLOSED_CAPTION_MIMETYPE;return e&&e.type==R.ContentType.TEXT&&(e.stream.mimeType==t||e.stream.mimeType==i)}async fetch_(e,t,i){let r=t.getSegmentData();if(r)return r;let s=null;e.segmentPrefetch&&(s=e.segmentPrefetch.getPrefetchedSegment(t,i)),s||(s=this.dispatchFetch_(t,e.stream,i));let n=0;e.segmentIterator&&(n=e.segmentIterator.currentPosition()),e.operation=s;let a=await s.promise;e.operation=null;let o=a.data;return t.aesKey&&(o=await vt.aesDecrypt(o,t.aesKey,n)),o}dispatchFetch_(e,t,i,r=!1){return v.assert(this.playerInterface_.netEngine,"Must have net engine"),Be.dispatchFetch(e,t,i||null,this.config_.retryParameters,this.playerInterface_.netEngine)}static dispatchFetch(e,t,i,r,s,n=!1){let a=K.RequestType.SEGMENT,o=e instanceof Se?e:void 0,c=o?K.AdvancedRequestType.MEDIA_SEGMENT:K.AdvancedRequestType.INIT_SEGMENT,d=ct.createSegmentRequest(e.getUris(),e.startByte,e.endByte,r,i);return d.contentType=t.type,p.v2("fetching: reference=",e),s.request(a,d,{type:c,stream:t,segment:o,isPreload:n})}async clearBuffer_(e,t,i){let r=Be.logPrefix_(e);if(v.assert(!e.performingUpdate&&e.updateTimer==null,r+" unexpected call to clearBuffer_()"),e.waitingToClearBuffer=!1,e.waitingToFlushBuffer=!1,e.clearBufferSafeMargin=0,e.clearingBuffer=!0,e.lastSegmentReference=null,e.segmentIterator=null,p.debug(r,"clearing buffer"),e.segmentPrefetch&&!this.audioPrefetchMap_.has(e.stream)&&e.segmentPrefetch.clearAll(!1),i){let s=this.playerInterface_.getPresentationTime(),n=this.playerInterface_.mediaSourceEngine.getDuration();await this.playerInterface_.mediaSourceEngine.remove(e.type,s+i,n)}else await this.playerInterface_.mediaSourceEngine.clear(e.type),this.destroyer_.ensureNotDestroyed(),t&&await this.playerInterface_.mediaSourceEngine.flush(e.type);this.destroyer_.ensureNotDestroyed(),p.debug(r,"cleared buffer"),e.clearingBuffer=!1,e.endOfStream=!1,!e.performingUpdate&&!e.updateTimer&&this.scheduleUpdate_(e,0)}scheduleUpdate_(e,t){let i=Be.logPrefix_(e),r=e.type;if(r==R.ContentType.TEXT&&!this.mediaStates_.has(r)){p.v1(i,"Text stream is unloaded. No update is needed.");return}p.v2(i,"updating in "+t+" seconds"),v.assert(e.updateTimer==null,i+" did not expect update to be scheduled"),e.updateTimer=new ae(async()=>{try{await this.onUpdate_(e)}catch(s){this.playerInterface_&&this.playerInterface_.onError(s)}}).tickAfter(t)}cancelUpdate_(e){e.updateTimer!=null&&(e.updateTimer.stop(),e.updateTimer=null)}async abortOperations_(e){e.operation&&await e.operation.abort()}async handleStreamingError_(e,t){let i=Be.logPrefix_(e);if(t.code==h.Code.STREAMING_NOT_ALLOWED){e.performingUpdate=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0);return}if(await this.failureCallbackBackoff_.attempt(),this.destroyer_.ensureNotDestroyed(),t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||t.category===h.Category.NETWORK&&t.code!=h.Code.TIMEOUT){if(e.restoreStreamAfterTrickPlay){this.setTrickPlay(!1);return}let r=!1;if(t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED){r=await this.resetMediaSource(!0);for(let a of this.mediaStates_.values())this.cancelUpdate_(a);this.destroyer_.ensureNotDestroyed()}let s=this.getDisabledTime_(t);s&&p.debug(i,"Disabling stream due to error",t);let n=this.playerInterface_.disableStream(e.stream,s);t.handled=n||r,n&&(t.severity=h.Severity.RECOVERABLE)}if(!t.handled&&t.code==h.Code.SEGMENT_MISSING){let r=this.playerInterface_.getPresentationTime(),s=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type),n=this.getSegmentReferenceNeeded_(e,r,s);for(;(n==null?void 0:n.getStatus())===Se.Status.MISSING;)e.lastSegmentReference=n,n=this.getSegmentReferenceNeeded_(e,r,s);if(n){await this.playerInterface_.mediaSourceEngine.resync(e.type,n.startTime),e.performingUpdate=!1,e.hasError=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0);return}}(!t.handled||t.code!=h.Code.SEGMENT_MISSING)&&this.playerInterface_.onError(t),t.handled||this.config_.failureCallback(t)}getDisabledTime_(e){return this.config_.maxDisabledTime===0&&e.code==h.Code.SEGMENT_MISSING?1:e.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||e.code==h.Code.MEDIA_SOURCE_OPERATION_THREW?1/0:this.config_.maxDisabledTime}async resetMediaSource(e=!1,t=!0){let i=Date.now()/1e3,r=this.config_.minTimeBetweenRecoveries;if(!e&&(!this.config_.allowMediaSourceRecoveries||i-this.lastMediaSourceReset_<r))return!1;this.lastMediaSourceReset_=i;let s=R.ContentType,n=this.mediaStates_.get(s.AUDIO);n&&(this.cancelUpdate_(n),n.operation&&(n.operation.abort(),n.operation=null),n.lastInitSegmentReference=null,n.lastAppendWindowStart=null,n.lastAppendWindowEnd=null,n.lastInitSegmentReference=null,n.lastAppendWindowStart=null,n.lastAppendWindowEnd=null,n.performingUpdate=!1,n.waitingToClearBuffer=!1,n.clearBufferSafeMargin=0,n.waitingToFlushBuffer=!1,n.clearingBuffer=!1,n.segmentIterator&&n.segmentIterator.resetToLastIndependent());let a=this.mediaStates_.get(s.VIDEO);a&&(this.cancelUpdate_(a),a.operation&&(a.operation.abort(),a.operation=null),a.lastInitSegmentReference=null,a.lastAppendWindowStart=null,a.lastAppendWindowEnd=null,a.performingUpdate=!1,a.waitingToClearBuffer=!1,a.clearBufferSafeMargin=0,a.waitingToFlushBuffer=!1,a.clearingBuffer=!1,a.segmentIterator&&a.segmentIterator.resetToLastIndependent());let o=this.playerInterface_.video.paused;return await this.playerInterface_.mediaSourceEngine.reset(this.getStreamsByType_()),a&&!a.clearingBuffer&&!a.performingUpdate&&!a.updateTimer&&this.scheduleUpdate_(a,0),n&&!n.clearingBuffer&&!n.performingUpdate&&!n.updateTimer&&this.scheduleUpdate_(n,0),o||this.playerInterface_.video.play(),!0}updateSpatialVideoInfo_(e){if(this.spatialVideoInfo_.projection!=e.projection||this.spatialVideoInfo_.hfov!=e.hfov){let t=U.EventName,i;if(e.projection!=null||e.hfov!=null){let r=t.SpatialVideoInfoEvent,s=new Map().set("detail",e);i=new U(r,s)}else{let r=t.NoSpatialVideoInfoEvent;i=new U(r)}i.cancelable=!0,this.playerInterface_.onEvent(i),this.spatialVideoInfo_=e}}updateSegmentIteratorReverse_(){let e=this.playerInterface_.getPlaybackRate()<0;for(let t of this.mediaStates_.values())t.segmentIterator&&t.segmentIterator.setReverse(e),t.segmentPrefetch&&t.segmentPrefetch.setReverse(e),e&&(t.segmentIterator=null,t.endOfStream=!1,!t.performingUpdate&&!t.updateTimer&&!t.clearingBuffer&&!t.waitingToClearBuffer&&this.scheduleUpdate_(t,0));for(let t of this.audioPrefetchMap_.values())t.setReverse(e)}shouldUseCrossBoundaryLogic_(){if(this.config_.crossBoundaryStrategy!==Ti.KEEP)return!0;let e=j.getDevice(),t=this.playerInterface_.getKeySystem();if(e.supportsSmoothCodecSwitching(t)){if(!e.supportsContainerChangeType())for(let i of this.mediaStates_.keys()){let r=this.mediaStates_.get(i),s=R.ContentType;if(r.type===s.TEXT)continue;let n=r.stream;if(n&&n.fullMimeTypes&&n.fullMimeTypes.size>1){let a=new Set;for(let o of n.fullMimeTypes)a.add(O.getContainerType(o));return a.size>1}}}else for(let i of this.mediaStates_.keys()){let r=this.mediaStates_.get(i),s=R.ContentType;if(r.type===s.TEXT)continue;let n=r.stream;if(n&&n.fullMimeTypes&&n.fullMimeTypes.size>1)return!0}return!1}setupCrossBoundaryListeners_(){this.crossBoundaryEventManager_.removeAll(),this.shouldUseCrossBoundaryLogic_()&&this.crossBoundaryEventManager_.listenMulti(this.playerInterface_.video,["waiting","timeupdate"],()=>{this.forwardTimeForCrossBoundary_()})}forwardTimeForCrossBoundary_(){if(!this.shouldUseCrossBoundaryLogic_())return;this.crossBoundaryTimer_.stop();let e=this.playerInterface_.getPresentationTime(),t=R.ContentType,i=this.mediaStates_.get(t.VIDEO)||this.mediaStates_.get(t.AUDIO);if(!i)return;let r=i.lastInitSegmentReference;if(!r||r.boundaryEnd===null)return;let s=Be.CROSS_BOUNDARY_END_THRESHOLD_,n=r.boundaryEnd-e;n<0||n>s||(this.boundaryTime_=r.boundaryEnd+Be.APPEND_WINDOW_END_FUDGE_,this.crossBoundaryTimer_.tickAfter(n))}discardReferenceByBoundary_(e,t){let i=R.ContentType;if(e.type===i.TEXT)return!1;let r=e.lastInitSegmentReference;if(!r)return!1;let s=Be.logPrefix_(e),n=t.initSegmentReference,a=r.boundaryEnd!==n.boundaryEnd;if(this.config_.crossBoundaryStrategy===Ti.RESET_TO_ENCRYPTED&&(!r.encrypted&&!n.encrypted&&(a=!1),r.encrypted&&(p.debug(s,"stream is encrypted, discard crossBoundaryStrategy"),this.config_.crossBoundaryStrategy=Ti.KEEP)),this.config_.crossBoundaryStrategy===Ti.RESET_ON_ENCRYPTION_CHANGE&&r.encrypted==n.encrypted&&(a=!1),this.config_.crossBoundaryStrategy===Ti.KEEP&&r.mimeType&&n.mimeType){let c=O.getNormalizedCodec(O.getCodecs(r.mimeType)),d=O.getNormalizedCodec(O.getCodecs(n.mimeType));r.mimeType==n.mimeType&&c==d&&(a=!1)}return(this.mediaStates_.get(i.VIDEO)||this.mediaStates_.get(i.AUDIO))===e&&a&&(this.crossBoundarySeek_||e.seeked)&&(p.debug(s,"reset mediaSource","from=",e.lastInitSegmentReference,"to=",t.initSegmentReference),this.crossBoundarySeek_=!1,this.resetMediaSource(!0).then(()=>{let c=U.EventName.BoundaryCrossed,d=new Map().set("oldEncrypted",r.encrypted).set("newEncrypted",n.encrypted);this.playerInterface_.onEvent(new U(c,d))})),a}getStreamsByType_(e=!1){let t=R.ContentType,i=a=>{if(a.fullMimeTypes&&a.fullMimeTypes.size>1&&this.mediaStates_.has(a.type)){let o=this.mediaStates_.get(a.type),c=this.playerInterface_.mediaSourceEngine.bufferEnd(o.type),d=this.playerInterface_.getPresentationTime(),u=this.getSegmentReferenceNeeded_(o,d,c);u&&u.codecs&&u.mimeType&&(a.codecs=u.codecs,a.mimeType=u.mimeType)}},r=new Map,s=this.currentVariant_.audio;s&&(i(s),r.set(t.AUDIO,s));let n=this.currentVariant_.video;return n&&(i(n),r.set(t.VIDEO,n)),e&&this.currentTextStream_&&r.set(t.TEXT,this.currentTextStream_),r}static logPrefix_(e){return"("+e.type+":"+e.stream.id+")"}};l(Be,"APPEND_WINDOW_START_FUDGE_",.1),l(Be,"APPEND_WINDOW_END_FUDGE_",.1),l(Be,"MAX_RUN_AHEAD_SEGMENTS_",1),l(Be,"CROSS_BOUNDARY_END_THRESHOLD_",1),l(Be,"LOOKUP_TIME_DURATION_THRESHOLD_",1);var jr=Be;/*! @license
365
365
  * Shaka Player
366
366
  * Copyright 2016 Google LLC
367
367
  * SPDX-License-Identifier: Apache-2.0
368
- */var Pt=class y{static mergeConfigObjects(e,t,i,r,s){v.assert(e,"Destination config must not be null!");let n=s in r,a=new Set(["__proto__","constructor","prototype"]),o=!1;n?o=i.constructor==Object&&Object.keys(r).length==0:o=i.constructor==Object&&Object.keys(i).length==0;let c=n||o,d=!0;for(let u of Object.keys(t)){let m=s+"."+u,f=n?r[s]:i[u];if(a.has(u))p.alwaysError("Invalid config, dangerous key "+m),d=!1;else if(!c&&!(u in i))p.alwaysError("Invalid config, unrecognized key "+m),d=!1;else if(t[u]===void 0)f===void 0||c?delete e[u]:e[u]=Ne.cloneObject(f);else if(o)e[u]=t[u];else if(f.constructor==Object&&t[u]&&t[u].constructor==Object){e[u]||(e[u]=Ne.cloneObject(f));let g=y.mergeConfigObjects(e[u],t[u],f,r,m);d=d&&g}else typeof t[u]!=typeof f||t[u]==null||typeof t[u]!="function"&&t[u].constructor!=f.constructor?(p.alwaysError("Invalid config, wrong type for "+m),d=!1):typeof i[u]=="function"&&i[u].length!=t[u].length?(p.alwaysWarn("Unexpected number of arguments for "+m),e[u]=t[u]):Array.isArray(e[u])?e[u]=t[u].slice():e[u]=t[u]}return d}static convertToConfigObject(e,t){let i={},r=i,s=0,n=0;for(;;){let a=e.indexOf(".",s);if(a<0)break;if(a==0||e[a-1]!="\\"){let o=e.substring(n,a).replace(/\\\./g,".");r[o]={},r=r[o],n=a+1}s=a+1}return r[e.substring(n).replace(/\\\./g,".")]=t,i}static referenceParametersAndReturn(e,t){return e&&t}static getDifferenceFromConfigObjects(e,t){let i=a=>a&&typeof a=="object"&&!Array.isArray(a),r=(a,o)=>Object.keys(a).reduce((c,d)=>{let u=a[d];if(!o.hasOwnProperty(d))c[d]=u;else if(u instanceof HTMLElement&&o[d]instanceof HTMLElement)u.isEqualNode(o[d])||(c[d]=u);else if(i(u)&&i(o[d])){let m=r(u,o[d]);(Object.keys(m).length>0||!i(m))&&(c[d]=m)}else Array.isArray(u)&&Array.isArray(o[d])?ye.equal(u,o[d])||(c[d]=u):Number.isNaN(u)&&Number.isNaN(o[d])||u!==o[d]&&(c[d]=u);return c},{}),s=r(e,t),n=a=>{for(let o of Object.keys(a))a[o]instanceof HTMLElement||(i(a[o])&&Object.keys(a[o]).length===0||typeof a[o]=="function"?delete a[o]:i(a[o])&&(n(a[o]),Object.keys(a[o]).length===0&&delete a[o]))};return n(s),s}};/*! @license
368
+ */var Pt=class y{static mergeConfigObjects(e,t,i,r,s){v.assert(e,"Destination config must not be null!");let n=s in r,a=new Set(["__proto__","constructor","prototype"]),o=!1;n?o=i.constructor==Object&&Object.keys(r).length==0:o=i.constructor==Object&&Object.keys(i).length==0;let c=n||o,d=!0;for(let u of Object.keys(t)){let m=s+"."+u,f=n?r[s]:i[u];if(a.has(u))p.alwaysError("Invalid config, dangerous key "+m),d=!1;else if(!c&&!(u in i))p.alwaysError("Invalid config, unrecognized key "+m),d=!1;else if(t[u]===void 0)f===void 0||c?delete e[u]:e[u]=Oe.cloneObject(f);else if(o)e[u]=t[u];else if(f.constructor==Object&&t[u]&&t[u].constructor==Object){e[u]||(e[u]=Oe.cloneObject(f));let g=y.mergeConfigObjects(e[u],t[u],f,r,m);d=d&&g}else typeof t[u]!=typeof f||t[u]==null||typeof t[u]!="function"&&t[u].constructor!=f.constructor?(p.alwaysError("Invalid config, wrong type for "+m),d=!1):typeof i[u]=="function"&&i[u].length!=t[u].length?(p.alwaysWarn("Unexpected number of arguments for "+m),e[u]=t[u]):Array.isArray(e[u])?e[u]=t[u].slice():e[u]=t[u]}return d}static convertToConfigObject(e,t){let i={},r=i,s=0,n=0;for(;;){let a=e.indexOf(".",s);if(a<0)break;if(a==0||e[a-1]!="\\"){let o=e.substring(n,a).replace(/\\\./g,".");r[o]={},r=r[o],n=a+1}s=a+1}return r[e.substring(n).replace(/\\\./g,".")]=t,i}static referenceParametersAndReturn(e,t){return e&&t}static getDifferenceFromConfigObjects(e,t){let i=a=>a&&typeof a=="object"&&!Array.isArray(a),r=(a,o)=>Object.keys(a).reduce((c,d)=>{let u=a[d];if(!o.hasOwnProperty(d))c[d]=u;else if(u instanceof HTMLElement&&o[d]instanceof HTMLElement)u.isEqualNode(o[d])||(c[d]=u);else if(i(u)&&i(o[d])){let m=r(u,o[d]);(Object.keys(m).length>0||!i(m))&&(c[d]=m)}else Array.isArray(u)&&Array.isArray(o[d])?ye.equal(u,o[d])||(c[d]=u):Number.isNaN(u)&&Number.isNaN(o[d])||u!==o[d]&&(c[d]=u);return c},{}),s=r(e,t),n=a=>{for(let o of Object.keys(a))a[o]instanceof HTMLElement||(i(a[o])&&Object.keys(a[o]).length===0||typeof a[o]=="function"?delete a[o]:i(a[o])&&(n(a[o]),Object.keys(a[o]).length===0&&delete a[o]))};return n(s),s}};/*! @license
369
369
  * Shaka Player
370
370
  * Copyright 2016 Google LLC
371
371
  * SPDX-License-Identifier: Apache-2.0
@@ -389,7 +389,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
389
389
  * Shaka Player
390
390
  * Copyright 2016 Google LLC
391
391
  * SPDX-License-Identifier: Apache-2.0
392
- */var Yt={DEFAULT:0,TOP_LEFT:1,TOP_CENTER:2,TOP_RIGHT:3,CENTER_LEFT:4,CENTER:5,CENTER_RIGHT:6,BOTTOM_LEFT:7,BOTTOM_CENTER:8,BOTTOM_RIGHT:9};/*! @license
392
+ */var $t={DEFAULT:0,TOP_LEFT:1,TOP_CENTER:2,TOP_RIGHT:3,CENTER_LEFT:4,CENTER:5,CENTER_RIGHT:6,BOTTOM_LEFT:7,BOTTOM_CENTER:8,BOTTOM_RIGHT:9};/*! @license
393
393
  * Shaka Player
394
394
  * Copyright 2016 Google LLC
395
395
  * SPDX-License-Identifier: Apache-2.0
@@ -401,7 +401,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
401
401
  * Shaka Player
402
402
  * Copyright 2016 Google LLC
403
403
  * SPDX-License-Identifier: Apache-2.0
404
- */var pn=class y{constructor(e,t,i=!0){l(this,"root_");l(this,"variants_");this.root_=e,this.variants_=new Set([e]),t=t||[];for(let r of t)this.add(r,i)}add(e,t){return this.canInclude(e,t)?(this.variants_.add(e),!0):(p.warning("Rejecting variant - not compatible with root."),!1)}canInclude(e,t=!0){return y.areAdaptable(this.root_,e,t)}static areAdaptable(e,t,i){return!(!!e.audio!=!!t.audio||!!e.video!=!!t.video||e.language!=t.language||(v.assert(!!e.audio==!!t.audio,"Both should either have audio or not have audio."),e.audio&&t.audio&&!y.areAudiosCompatible_(e.audio,t.audio,i))||(v.assert(!!e.video==!!t.video,"Both should either have video or not have video."),e.video&&t.video&&!y.areVideosCompatible_(e.video,t.video,i)))}values(){return this.variants_.values()}static areAudiosCompatible_(e,t,i){return!((!e.channelsCount||!t.channelsCount||e.channelsCount>2||t.channelsCount>2)&&e.channelsCount!=t.channelsCount||e.spatialAudio!==t.spatialAudio||i&&!y.canTransitionBetween_(e,t)||!y.areRolesEqual_(e.roles,t.roles)||e.groupId!==t.groupId)}static areVideosCompatible_(e,t,i){return!(i&&!y.canTransitionBetween_(e,t)||!y.areRolesEqual_(e.roles,t.roles))}static canTransitionBetween_(e,t){if(e.mimeType!=t.mimeType)return!1;let i=N.splitCodecs(e.codecs).map(s=>N.getCodecBase(s)),r=N.splitCodecs(t.codecs).map(s=>N.getCodecBase(s));return ye.hasSameElements(i,r)}static areRolesEqual_(e,t){return ye.hasSameElements(e,t)}};/*! @license
404
+ */var pn=class y{constructor(e,t,i=!0){l(this,"root_");l(this,"variants_");this.root_=e,this.variants_=new Set([e]),t=t||[];for(let r of t)this.add(r,i)}add(e,t){return this.canInclude(e,t)?(this.variants_.add(e),!0):(p.warning("Rejecting variant - not compatible with root."),!1)}canInclude(e,t=!0){return y.areAdaptable(this.root_,e,t)}static areAdaptable(e,t,i){return!(!!e.audio!=!!t.audio||!!e.video!=!!t.video||e.language!=t.language||(v.assert(!!e.audio==!!t.audio,"Both should either have audio or not have audio."),e.audio&&t.audio&&!y.areAudiosCompatible_(e.audio,t.audio,i))||(v.assert(!!e.video==!!t.video,"Both should either have video or not have video."),e.video&&t.video&&!y.areVideosCompatible_(e.video,t.video,i)))}values(){return this.variants_.values()}static areAudiosCompatible_(e,t,i){return!((!e.channelsCount||!t.channelsCount||e.channelsCount>2||t.channelsCount>2)&&e.channelsCount!=t.channelsCount||e.spatialAudio!==t.spatialAudio||i&&!y.canTransitionBetween_(e,t)||!y.areRolesEqual_(e.roles,t.roles)||e.groupId!==t.groupId)}static areVideosCompatible_(e,t,i){return!(i&&!y.canTransitionBetween_(e,t)||!y.areRolesEqual_(e.roles,t.roles))}static canTransitionBetween_(e,t){if(e.mimeType!=t.mimeType)return!1;let i=O.splitCodecs(e.codecs).map(s=>O.getCodecBase(s)),r=O.splitCodecs(t.codecs).map(s=>O.getCodecBase(s));return ye.hasSameElements(i,r)}static areRolesEqual_(e,t){return ye.hasSameElements(e,t)}};/*! @license
405
405
  * Shaka Player
406
406
  * Copyright 2016 Google LLC
407
407
  * SPDX-License-Identifier: Apache-2.0
@@ -409,7 +409,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
409
409
  * Shaka Player
410
410
  * Copyright 2016 Google LLC
411
411
  * SPDX-License-Identifier: Apache-2.0
412
- */var st=class y{static createDefault(){let i=1/0,r=j.getDevice();navigator.connection&&navigator.connection.saveData&&(i=360);let s={retryParameters:K.defaultRetryParameters(),servers:{},clearKeys:{},advanced:{},delayLicenseRequestUntilPlayed:!1,persistentSessionOnlinePlayback:!1,persistentSessionsMetadata:[],initDataTransform:(A,w,M)=>{if(de.isMediaKeysPolyfilled("apple")&&w=="skd"){let x=M.serverCertificate,k=hr.defaultGetContentId(A);A=hr.initDataTransform(A,k,x)}return A},logLicenseExchange:!1,updateExpirationTime:1,preferredKeySystems:[],keySystemsMapping:{},parseInbandPsshEnabled:!1,minHdcpVersion:"",ignoreDuplicateInitData:!0,defaultAudioRobustnessForWidevine:"SW_SECURE_CRYPTO",defaultVideoRobustnessForWidevine:"SW_SECURE_DECODE",renewalIntervalSec:0,failureCallback:A=>Pt.referenceParametersAndReturn([A],void 0)},n=Pr.RELOAD;r.supportsSmoothCodecSwitching("")&&(n=Pr.SMOOTH);let a={retryParameters:K.defaultRetryParameters(),availabilityWindowOverride:NaN,disableAudio:!1,disableVideo:!1,disableText:!1,disableThumbnails:!1,disableIFrames:!1,disableChapters:!1,defaultPresentationDelay:0,segmentRelativeVttTiming:!1,raiseFatalErrorOnManifestUpdateRequestFailure:!1,continueLoadingWhenPaused:!0,ignoreSupplementalCodecs:!1,updatePeriod:-1,ignoreDrmInfo:!1,enableAudioGroups:!0,dash:{clockSyncUri:"",xlinkFailGracefully:!1,ignoreMinBufferTime:!1,autoCorrectDrift:!0,initialSegmentLimit:1e3,ignoreSuggestedPresentationDelay:!1,ignoreEmptyAdaptationSet:!1,ignoreMaxSegmentDuration:!1,keySystemsByURI:de.getUuidMap(!1,!0),manifestPreprocessorTXml:y.defaultManifestPreprocessorTXml,sequenceMode:!1,useStreamOnceInPeriodFlattening:!1,enableFastSwitching:!0},hls:{ignoreTextStreamFailures:!1,ignoreImageStreamFailures:!1,defaultAudioCodec:"mp4a.40.2",defaultVideoCodec:"avc1.42E01E",ignoreManifestProgramDateTime:!1,ignoreManifestProgramDateTimeForTypes:[],mediaPlaylistFullMimeType:'video/mp2t; codecs="avc1.42E01E, mp4a.40.2"',liveSegmentsDelay:3,sequenceMode:!1,ignoreManifestTimestampsInSegmentsMode:!1,disableCodecGuessing:!1,disableClosedCaptionsDetection:!1,allowLowLatencyByteRangeOptimization:!0,allowRangeRequestsToGuessMimeType:!1,chaptersUri:""},msf:{fingerprintUri:"",namespaces:[],authorizationToken:"",subscribeFilterType:Ao.LARGEST_OBJECT,useFetchCatalog:!1,version:Dr.AUTO,catalogPreprocessor:y.defaultCatalogPreprocessor}},o={retryParameters:K.defaultRetryParameters(),failureCallback:A=>(p.error("Unhandled streaming error",A),Pt.referenceParametersAndReturn([A],void 0)),rebufferingGoal:0,bufferingGoal:10,bufferBehind:30,evictionGoal:1,ignoreTextStreamFailures:!1,startAtSegmentBoundary:!1,gapDetectionThreshold:.5,gapPadding:0,gapJumpTimerTime:.25,durationBackoff:1,safeSeekOffset:5,safeSeekEndOffset:0,stallEnabled:!0,stallThreshold:1,stallSkip:.1,useNativeHlsForFairPlay:!0,inaccurateManifestTolerance:2,lowLatencyMode:!0,preferNativeDash:!1,preferNativeHls:!1,updateIntervalSeconds:1,observeQualityChanges:!1,maxDisabledTime:30,segmentPrefetchLimit:1,prefetchAudioLanguages:[],disableAudioPrefetch:!1,disableTextPrefetch:!1,disableVideoPrefetch:!1,liveSync:{enabled:!1,targetLatency:.5,targetLatencyTolerance:.5,maxPlaybackRate:1.1,minPlaybackRate:.95,panicMode:!1,panicThreshold:60,dynamicTargetLatency:{enabled:!1,stabilityThreshold:60,rebufferIncrement:.5,maxAttempts:10,maxLatency:4,minLatency:1}},allowMediaSourceRecoveries:!0,minTimeBetweenRecoveries:5,vodDynamicPlaybackRate:!1,vodDynamicPlaybackRateLowBufferRate:.95,vodDynamicPlaybackRateBufferRatio:.5,preloadNextUrlWindow:30,loadTimeout:30,clearDecodingCache:!1,dontChooseCodecs:!1,shouldFixTimestampOffset:!1,avoidEvictionOnQuotaExceededError:!1,crossBoundaryStrategy:Ti.KEEP,returnToEndOfLiveWindowWhenOutside:!1,stopFetchingOnPause:!1,clampAppendWindowToDuration:!1,processSrcEqualMetadata:!0},c={forceHTTP:!1,forceHTTPS:!1,minBytesForProgressEvents:16e3,commonAccessTokenHeaderName:"cta-common-access-token"},d={trackSelectionCallback:async A=>A,downloadSizeCallback:async A=>{if(navigator.storage&&navigator.storage.estimate){let w=await navigator.storage.estimate();return w.usage+A<w.quota*.95}else return!0},progressCallback:(A,w)=>Pt.referenceParametersAndReturn([A,w],void 0),usePersistentLicense:!0,numberOfParallelDownloads:5},u={enabled:!0,useNetworkInformation:!0,defaultBandwidthEstimate:1e6,switchInterval:8,bandwidthUpgradeTarget:.85,bandwidthDowngradeTarget:.95,restrictions:{minWidth:0,maxWidth:1/0,minHeight:0,maxHeight:i,minPixels:0,maxPixels:1/0,minFrameRate:0,maxFrameRate:1/0,minBandwidth:0,maxBandwidth:1/0,minChannelsCount:0,maxChannelsCount:1/0},advanced:{minTotalBytes:128e3,minBytes:16e3,fastHalfLife:2,slowHalfLife:5,droppedFramesThreshold:.15,droppedFramesInterval:2,droppedFramesBanDuration:30},restrictToElementSize:!1,restrictToScreenSize:!1,ignoreDevicePixelRatio:!1,clearBufferSwitch:!1,safeMarginSwitch:0,cacheLoadThreshold:5,minTimeToSwitch:0,preferNetworkInformationBandwidth:!1,droppedFrames:!0},m={enabled:!1,sessionId:"",contentId:"",rtpSafetyFactor:5,useHeaders:!1,includeKeys:[],version:1,eventTargets:[]},f={enabled:!0,applyMaximumSuggestedBitrate:!0,estimatedThroughputWeightRatio:.5},g={enabled:!1,dynamicPerformanceScaling:!0,logLevel:0,drawLogo:!1,poster:!0},_={codecSwitchingStrategy:n,addExtraFeaturesToSourceBuffer:A=>Pt.referenceParametersAndReturn([A],""),forceTransmux:!1,insertFakeEncryptionInInit:!0,correctEc3Enca:!1,modifyCueCallback:(A,w,M)=>Pt.referenceParametersAndReturn([A,w,M],void 0),dispatchAllEmsgBoxes:!1,useSourceElements:!0,durationReductionEmitsUpdateEnd:!0,transmuxWorkerUrl:"",repairIFrames:!0},T={customPlayheadTracker:!1,skipPlayDetection:!1,supportsMultipleMediaElements:!0,disableHLSInterstitial:!1,disableDASHInterstitial:!1,allowPreloadOnDomElements:!0,allowStartInMiddleOfInterstitial:!0,disableTrackingEvents:!1,disableSnapback:!1,interstitialPreloadAheadTime:10,disablePlayedLinearAdSkip:!1,disableTrackingForPlayedLinearAds:!1},S={fontScaleFactor:1,positionArea:Yt.DEFAULT,subtitleDelay:0,suspendRenderingWhenHidden:!0},b={preloadNextUrlWindow:1/0,preloadPrevItem:!0,repeatMode:Yr.OFF},C={drm:s,manifest:a,streaming:o,networking:c,mediaSource:_,offline:d,abrFactory:()=>new Ms,adaptationSetCriteriaFactory:(...A)=>new Rs(...A),abr:u,preferredAudio:[{language:"",role:"",label:"",channelCount:2,codec:""}],preferredText:[],preferredVideo:[{label:"",role:"",language:"",codec:"",hdrLevel:"AUTO",layout:""}],preferredDecodingAttributes:[],restrictions:{minWidth:0,maxWidth:1/0,minHeight:0,maxHeight:1/0,minPixels:0,maxPixels:1/0,minFrameRate:0,maxFrameRate:1/0,minBandwidth:0,maxBandwidth:1/0,minChannelsCount:0,maxChannelsCount:1/0},playRangeStart:0,playRangeEnd:1/0,textDisplayer:S,textDisplayFactory:A=>null,cmcd:m,cmsd:f,lcevc:g,ads:T,ignoreHardwareResolution:!1,queue:b,accessibility:{handleForcedSubtitlesAutomatically:!0,speechToText:{enabled:!1,maxTextLength:140,processLocally:!1,languagesToTranslate:[]}}};return d.trackSelectionCallback=async A=>{let w=C.preferredAudio.map(x=>x.language).filter(Boolean),M=C.preferredVideo[0]&&C.preferredVideo[0].hdrLevel||"";return y.defaultTrackSelect(A,w,M)},r.adjustConfig(C)}static createDefaultForLL(){return{streaming:{inaccurateManifestTolerance:0,segmentPrefetchLimit:2,updateIntervalSeconds:.1,maxDisabledTime:1,retryParameters:{baseDelay:100}},manifest:{dash:{autoCorrectDrift:!1},retryParameters:{baseDelay:100}},drm:{retryParameters:{baseDelay:100}}}}static mergeConfigObjects(e,t,i){let r={".drm.keySystemsMapping":"",".drm.servers":"",".drm.clearKeys":"",".drm.advanced":{distinctiveIdentifierRequired:!1,persistentStateRequired:!1,videoRobustness:[],audioRobustness:[],sessionType:"",serverCertificate:new Uint8Array(0),serverCertificateUri:"",individualizationServer:"",headers:{}}};return Pt.mergeConfigObjects(e,t,i||y.createDefault(),r,"")}static addDeprecatedConfigFields(e){var r,s,n,a,o,c,d,u,m,f;let t=e.preferredAudio[0],i=e.preferredVideo[0];e.language=(r=t==null?void 0:t.language)!=null?r:"",e.role=(s=t==null?void 0:t.role)!=null?s:"",e.channelCount=(n=t==null?void 0:t.channelCount)!=null?n:2,e.spatialAudio=(a=t==null?void 0:t.spatialAudio)!=null?a:!1,e.audioLabel=(o=t==null?void 0:t.label)!=null?o:"",e.videoRole=(c=i==null?void 0:i.role)!=null?c:"",e.hdrLevel=(d=i==null?void 0:i.hdrLevel)!=null?d:"",e.videoLayout=(u=i==null?void 0:i.layout)!=null?u:"",e.videoLabel=(m=i==null?void 0:i.label)!=null?m:"",e.preferredAudioCodecs=e.preferredAudio.map(g=>g.codec).filter(Boolean),e.preferredAudioChannelCount=(f=t==null?void 0:t.channelCount)!=null?f:2}static defaultTrackSelect(e,t,i){let r=R.ContentType,s=i;if(s=="AUTO"){let m=e.some(g=>!!(g.hdr&&g.hdr=="HLG"));s=j.getDevice().getHdrLevel(m)}let n=e.filter(m=>!(m.type!="variant"||m.hdr&&m.hdr!=s)),a=[],o=n.map(m=>m.language),c=null;for(let m of t)if(c=ve.findClosestLocale(m,o),c)break;c&&(a=n.filter(m=>ve.normalize(m.language)==c)),a.length==0&&(a=n.filter(m=>m.primary)),a.length==0&&(new Set(n.map(f=>f.language)).size>1&&p.warning("Could not choose a good audio track based on language preferences or primary tracks. An arbitrary language will be stored!"),a=n);let d=a.filter(m=>m.height&&m.height<=480);d.length&&(d.sort((m,f)=>(v.assert(m.height!=null,"Null height"),v.assert(f.height!=null,"Null height"),f.height-m.height)),a=d.filter(m=>m.height==d[0].height));let u=[];if(a.length){let m=Math.floor(a.length/2);a.sort((f,g)=>f.bandwidth-g.bandwidth),u.push(a[m])}for(let m of e)(m.type==r.TEXT||m.type==r.IMAGE||m.type==r.CHAPTER)&&u.push(m);return u}static defaultManifestPreprocessorTXml(e){return Pt.referenceParametersAndReturn([e],e)}static defaultCatalogPreprocessor(e){return Pt.referenceParametersAndReturn([e],e)}};/*! @license
412
+ */var st=class y{static createDefault(){let i=1/0,r=j.getDevice();navigator.connection&&navigator.connection.saveData&&(i=360);let s={retryParameters:K.defaultRetryParameters(),servers:{},clearKeys:{},advanced:{},delayLicenseRequestUntilPlayed:!1,persistentSessionOnlinePlayback:!1,persistentSessionsMetadata:[],initDataTransform:(A,w,M)=>{if(de.isMediaKeysPolyfilled("apple")&&w=="skd"){let x=M.serverCertificate,k=hr.defaultGetContentId(A);A=hr.initDataTransform(A,k,x)}return A},logLicenseExchange:!1,updateExpirationTime:1,preferredKeySystems:[],keySystemsMapping:{},parseInbandPsshEnabled:!1,minHdcpVersion:"",ignoreDuplicateInitData:!0,defaultAudioRobustnessForWidevine:"SW_SECURE_CRYPTO",defaultVideoRobustnessForWidevine:"SW_SECURE_DECODE",renewalIntervalSec:0,failureCallback:A=>Pt.referenceParametersAndReturn([A],void 0)},n=Pr.RELOAD;r.supportsSmoothCodecSwitching("")&&(n=Pr.SMOOTH);let a={retryParameters:K.defaultRetryParameters(),availabilityWindowOverride:NaN,disableAudio:!1,disableVideo:!1,disableText:!1,disableThumbnails:!1,disableIFrames:!1,disableChapters:!1,defaultPresentationDelay:0,segmentRelativeVttTiming:!1,raiseFatalErrorOnManifestUpdateRequestFailure:!1,continueLoadingWhenPaused:!0,ignoreSupplementalCodecs:!1,updatePeriod:-1,ignoreDrmInfo:!1,enableAudioGroups:!0,dash:{clockSyncUri:"",xlinkFailGracefully:!1,ignoreMinBufferTime:!1,autoCorrectDrift:!0,initialSegmentLimit:1e3,ignoreSuggestedPresentationDelay:!1,ignoreEmptyAdaptationSet:!1,ignoreMaxSegmentDuration:!1,keySystemsByURI:de.getUuidMap(!1,!0),manifestPreprocessorTXml:y.defaultManifestPreprocessorTXml,sequenceMode:!1,useStreamOnceInPeriodFlattening:!1,enableFastSwitching:!0},hls:{ignoreTextStreamFailures:!1,ignoreImageStreamFailures:!1,defaultAudioCodec:"mp4a.40.2",defaultVideoCodec:"avc1.42E01E",ignoreManifestProgramDateTime:!1,ignoreManifestProgramDateTimeForTypes:[],mediaPlaylistFullMimeType:'video/mp2t; codecs="avc1.42E01E, mp4a.40.2"',liveSegmentsDelay:3,sequenceMode:!1,ignoreManifestTimestampsInSegmentsMode:!1,disableCodecGuessing:!1,disableClosedCaptionsDetection:!1,allowLowLatencyByteRangeOptimization:!0,allowRangeRequestsToGuessMimeType:!1,chaptersUri:""},msf:{fingerprintUri:"",namespaces:[],authorizationToken:"",subscribeFilterType:Ao.LARGEST_OBJECT,useFetchCatalog:!1,version:Dr.AUTO,catalogPreprocessor:y.defaultCatalogPreprocessor}},o={retryParameters:K.defaultRetryParameters(),failureCallback:A=>(p.error("Unhandled streaming error",A),Pt.referenceParametersAndReturn([A],void 0)),rebufferingGoal:0,bufferingGoal:10,bufferBehind:30,evictionGoal:1,ignoreTextStreamFailures:!1,startAtSegmentBoundary:!1,gapDetectionThreshold:.5,gapPadding:0,gapJumpTimerTime:.25,durationBackoff:1,safeSeekOffset:5,safeSeekEndOffset:0,stallEnabled:!0,stallThreshold:1,stallSkip:.1,useNativeHlsForFairPlay:!0,inaccurateManifestTolerance:2,lowLatencyMode:!0,preferNativeDash:!1,preferNativeHls:!1,updateIntervalSeconds:1,observeQualityChanges:!1,maxDisabledTime:30,segmentPrefetchLimit:1,prefetchAudioLanguages:[],disableAudioPrefetch:!1,disableTextPrefetch:!1,disableVideoPrefetch:!1,liveSync:{enabled:!1,targetLatency:.5,targetLatencyTolerance:.5,maxPlaybackRate:1.1,minPlaybackRate:.95,panicMode:!1,panicThreshold:60,dynamicTargetLatency:{enabled:!1,stabilityThreshold:60,rebufferIncrement:.5,maxAttempts:10,maxLatency:4,minLatency:1}},allowMediaSourceRecoveries:!0,minTimeBetweenRecoveries:5,vodDynamicPlaybackRate:!1,vodDynamicPlaybackRateLowBufferRate:.95,vodDynamicPlaybackRateBufferRatio:.5,preloadNextUrlWindow:30,loadTimeout:30,clearDecodingCache:!1,dontChooseCodecs:!1,shouldFixTimestampOffset:!1,avoidEvictionOnQuotaExceededError:!1,crossBoundaryStrategy:Ti.KEEP,returnToEndOfLiveWindowWhenOutside:!1,stopFetchingOnPause:!1,clampAppendWindowToDuration:!1,processSrcEqualMetadata:!0},c={forceHTTP:!1,forceHTTPS:!1,minBytesForProgressEvents:16e3,commonAccessTokenHeaderName:"cta-common-access-token"},d={trackSelectionCallback:async A=>A,downloadSizeCallback:async A=>{if(navigator.storage&&navigator.storage.estimate){let w=await navigator.storage.estimate();return w.usage+A<w.quota*.95}else return!0},progressCallback:(A,w)=>Pt.referenceParametersAndReturn([A,w],void 0),usePersistentLicense:!0,numberOfParallelDownloads:5},u={enabled:!0,useNetworkInformation:!0,defaultBandwidthEstimate:1e6,switchInterval:8,bandwidthUpgradeTarget:.85,bandwidthDowngradeTarget:.95,restrictions:{minWidth:0,maxWidth:1/0,minHeight:0,maxHeight:i,minPixels:0,maxPixels:1/0,minFrameRate:0,maxFrameRate:1/0,minBandwidth:0,maxBandwidth:1/0,minChannelsCount:0,maxChannelsCount:1/0},advanced:{minTotalBytes:128e3,minBytes:16e3,fastHalfLife:2,slowHalfLife:5,droppedFramesThreshold:.15,droppedFramesInterval:2,droppedFramesBanDuration:30},restrictToElementSize:!1,restrictToScreenSize:!1,ignoreDevicePixelRatio:!1,clearBufferSwitch:!1,safeMarginSwitch:0,cacheLoadThreshold:5,minTimeToSwitch:0,preferNetworkInformationBandwidth:!1,droppedFrames:!0},m={enabled:!1,sessionId:"",contentId:"",rtpSafetyFactor:5,useHeaders:!1,includeKeys:[],version:1,eventTargets:[]},f={enabled:!0,applyMaximumSuggestedBitrate:!0,estimatedThroughputWeightRatio:.5},g={enabled:!1,dynamicPerformanceScaling:!0,logLevel:0,drawLogo:!1,poster:!0},_={codecSwitchingStrategy:n,addExtraFeaturesToSourceBuffer:A=>Pt.referenceParametersAndReturn([A],""),forceTransmux:!1,insertFakeEncryptionInInit:!0,correctEc3Enca:!1,modifyCueCallback:(A,w,M)=>Pt.referenceParametersAndReturn([A,w,M],void 0),dispatchAllEmsgBoxes:!1,useSourceElements:!0,durationReductionEmitsUpdateEnd:!0,transmuxWorkerUrl:"",repairIFrames:!0},T={customPlayheadTracker:!1,skipPlayDetection:!1,supportsMultipleMediaElements:!0,disableHLSInterstitial:!1,disableDASHInterstitial:!1,allowPreloadOnDomElements:!0,allowStartInMiddleOfInterstitial:!0,disableTrackingEvents:!1,disableSnapback:!1,interstitialPreloadAheadTime:10,disablePlayedLinearAdSkip:!1,disableTrackingForPlayedLinearAds:!1},S={fontScaleFactor:1,positionArea:$t.DEFAULT,subtitleDelay:0,suspendRenderingWhenHidden:!0},b={preloadNextUrlWindow:1/0,preloadPrevItem:!0,repeatMode:Yr.OFF},C={drm:s,manifest:a,streaming:o,networking:c,mediaSource:_,offline:d,abrFactory:()=>new Ms,adaptationSetCriteriaFactory:(...A)=>new Rs(...A),abr:u,preferredAudio:[{language:"",role:"",label:"",channelCount:2,codec:""}],preferredText:[],preferredVideo:[{label:"",role:"",language:"",codec:"",hdrLevel:"AUTO",layout:""}],preferredDecodingAttributes:[],restrictions:{minWidth:0,maxWidth:1/0,minHeight:0,maxHeight:1/0,minPixels:0,maxPixels:1/0,minFrameRate:0,maxFrameRate:1/0,minBandwidth:0,maxBandwidth:1/0,minChannelsCount:0,maxChannelsCount:1/0},playRangeStart:0,playRangeEnd:1/0,textDisplayer:S,textDisplayFactory:A=>null,cmcd:m,cmsd:f,lcevc:g,ads:T,ignoreHardwareResolution:!1,queue:b,accessibility:{handleForcedSubtitlesAutomatically:!0,speechToText:{enabled:!1,maxTextLength:140,processLocally:!1,languagesToTranslate:[]}}};return d.trackSelectionCallback=async A=>{let w=C.preferredAudio.map(x=>x.language).filter(Boolean),M=C.preferredVideo[0]&&C.preferredVideo[0].hdrLevel||"";return y.defaultTrackSelect(A,w,M)},r.adjustConfig(C)}static createDefaultForLL(){return{streaming:{inaccurateManifestTolerance:0,segmentPrefetchLimit:2,updateIntervalSeconds:.1,maxDisabledTime:1,retryParameters:{baseDelay:100}},manifest:{dash:{autoCorrectDrift:!1},retryParameters:{baseDelay:100}},drm:{retryParameters:{baseDelay:100}}}}static mergeConfigObjects(e,t,i){let r={".drm.keySystemsMapping":"",".drm.servers":"",".drm.clearKeys":"",".drm.advanced":{distinctiveIdentifierRequired:!1,persistentStateRequired:!1,videoRobustness:[],audioRobustness:[],sessionType:"",serverCertificate:new Uint8Array(0),serverCertificateUri:"",individualizationServer:"",headers:{}}};return Pt.mergeConfigObjects(e,t,i||y.createDefault(),r,"")}static addDeprecatedConfigFields(e){var r,s,n,a,o,c,d,u,m,f;let t=e.preferredAudio[0],i=e.preferredVideo[0];e.language=(r=t==null?void 0:t.language)!=null?r:"",e.role=(s=t==null?void 0:t.role)!=null?s:"",e.channelCount=(n=t==null?void 0:t.channelCount)!=null?n:2,e.spatialAudio=(a=t==null?void 0:t.spatialAudio)!=null?a:!1,e.audioLabel=(o=t==null?void 0:t.label)!=null?o:"",e.videoRole=(c=i==null?void 0:i.role)!=null?c:"",e.hdrLevel=(d=i==null?void 0:i.hdrLevel)!=null?d:"",e.videoLayout=(u=i==null?void 0:i.layout)!=null?u:"",e.videoLabel=(m=i==null?void 0:i.label)!=null?m:"",e.preferredAudioCodecs=e.preferredAudio.map(g=>g.codec).filter(Boolean),e.preferredAudioChannelCount=(f=t==null?void 0:t.channelCount)!=null?f:2}static defaultTrackSelect(e,t,i){let r=R.ContentType,s=i;if(s=="AUTO"){let m=e.some(g=>!!(g.hdr&&g.hdr=="HLG"));s=j.getDevice().getHdrLevel(m)}let n=e.filter(m=>!(m.type!="variant"||m.hdr&&m.hdr!=s)),a=[],o=n.map(m=>m.language),c=null;for(let m of t)if(c=ve.findClosestLocale(m,o),c)break;c&&(a=n.filter(m=>ve.normalize(m.language)==c)),a.length==0&&(a=n.filter(m=>m.primary)),a.length==0&&(new Set(n.map(f=>f.language)).size>1&&p.warning("Could not choose a good audio track based on language preferences or primary tracks. An arbitrary language will be stored!"),a=n);let d=a.filter(m=>m.height&&m.height<=480);d.length&&(d.sort((m,f)=>(v.assert(m.height!=null,"Null height"),v.assert(f.height!=null,"Null height"),f.height-m.height)),a=d.filter(m=>m.height==d[0].height));let u=[];if(a.length){let m=Math.floor(a.length/2);a.sort((f,g)=>f.bandwidth-g.bandwidth),u.push(a[m])}for(let m of e)(m.type==r.TEXT||m.type==r.IMAGE||m.type==r.CHAPTER)&&u.push(m);return u}static defaultManifestPreprocessorTXml(e){return Pt.referenceParametersAndReturn([e],e)}static defaultCatalogPreprocessor(e){return Pt.referenceParametersAndReturn([e],e)}};/*! @license
413
413
  * Shaka Player
414
414
  * Copyright 2016 Google LLC
415
415
  * SPDX-License-Identifier: Apache-2.0
@@ -425,7 +425,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
425
425
  * Shaka Player
426
426
  * Copyright 2016 Google LLC
427
427
  * SPDX-License-Identifier: Apache-2.0
428
- */var Ps=class y extends Le{constructor(t,i,r,s){super();l(this,"assetUri_");l(this,"mimeType_");l(this,"networkingEngine_");l(this,"startTime_");l(this,"currentAdaptationSetCriteria_");l(this,"startTimeOfDrm_");l(this,"createDrmEngine_");l(this,"manifestFilterer_");l(this,"manifestPlayerInterface_");l(this,"config_");l(this,"manifest_");l(this,"parserFactory_");l(this,"parser_");l(this,"parserEntrusted_");l(this,"regionTimeline_");l(this,"regionTimelineEntrusted_");l(this,"drmEngine_");l(this,"drmEngineEntrusted_");l(this,"abrManager_");l(this,"segmentPrefetchById_");l(this,"segmentPrefetchEntrusted_");l(this,"qualityObserver_");l(this,"stats_");l(this,"manifestPromise_");l(this,"successPromise_");l(this,"eventHandoffTarget_");l(this,"destroyed_");l(this,"allowPrefetch_");l(this,"prefetchedVariant_");l(this,"prefetchedTextStream_");l(this,"hasBeenAttached_");l(this,"queuedOperations_");l(this,"latePhaseQueuedOperations_");l(this,"isPreload_");let n=s;this.assetUri_=t,this.mimeType_=i,this.networkingEngine_=n.networkingEngine,this.startTime_=r,this.currentAdaptationSetCriteria_=null,this.startTimeOfDrm_=0,this.createDrmEngine_=n.createDrmEngine,this.manifestFilterer_=n.manifestFilterer,this.manifestPlayerInterface_=n.manifestPlayerInterface,this.config_=n.config,this.manifest_=null,this.parserFactory_=null,this.parser_=null,this.parserEntrusted_=!1,this.regionTimeline_=n.regionTimeline,this.regionTimelineEntrusted_=!1,this.drmEngine_=null,this.drmEngineEntrusted_=!1,this.abrManager_=null,this.segmentPrefetchById_=new Map,this.segmentPrefetchEntrusted_=!1,this.qualityObserver_=n.qualityObserver,this.stats_=new tr,this.manifestPromise_=Promise.withResolvers(),this.successPromise_=Promise.withResolvers(),this.eventHandoffTarget_=null,this.destroyed_=!1,this.allowPrefetch_=n.allowPrefetch,this.prefetchedVariant_=null,this.prefetchedTextStream_=null,this.hasBeenAttached_=!1,this.queuedOperations_=[],this.latePhaseQueuedOperations_=[],this.isPreload_=!0}markIsLoad(){this.isPreload_=!1}addQueuedOperation(t,i){let r=t?this.latePhaseQueuedOperations_:this.queuedOperations_;r?r.push(i):i()}stopQueuingLatePhaseQueuedOperations(){if(this.latePhaseQueuedOperations_)for(let t of this.latePhaseQueuedOperations_)t();this.latePhaseQueuedOperations_=null}setEventHandoffTarget(t){if(this.eventHandoffTarget_=t,this.hasBeenAttached_=!0,this.queuedOperations_)for(let i of this.queuedOperations_)i();this.queuedOperations_=null}setOffsetToStartTime(t){this.startTime_&&t&&(typeof this.startTime_=="number"?this.startTime_+=t:this.startTime_.setTime(this.startTime_.getTime()+t*1e3))}getStartTime(){return this.startTime_}getStartTimeOfDRM(){return this.startTimeOfDrm_}getMimeType(){return this.mimeType_}getAssetUri(){return this.assetUri_}getManifest(){return this.manifest_}getParserFactory(){return this.parserFactory_}getCurrentAdaptationSetCriteria(){return this.currentAdaptationSetCriteria_}receiveParser(){return this.parserEntrusted_=!0,this.parser_}getParser(){return this.parser_}receiveRegionTimeline(){return this.regionTimelineEntrusted_=!0,this.regionTimeline_}getRegionTimeline(){return this.regionTimeline_}getQualityObserver(){return this.qualityObserver_}getStats(){return this.stats_}getManifestFilterer(){return this.manifestFilterer_}receiveDrmEngine(){return this.drmEngineEntrusted_=!0,this.drmEngine_}getDrmEngine(){return this.drmEngine_}setPrefetchVariant(t){this.prefetchedVariant_=t}getPrefetchedVariant(){return this.prefetchedVariant_}getPrefetchedVariantTrack(){return this.prefetchedVariant_?se.variantToTrack(this.prefetchedVariant_):null}getPrefetchedTextTrack(){return this.prefetchedTextStream_?se.textStreamToTrack(this.prefetchedTextStream_):null}receiveSegmentPrefetchesById(){return this.segmentPrefetchEntrusted_=!0,this.segmentPrefetchById_}attachAdaptationSetCriteria(t){this.currentAdaptationSetCriteria_=t}attachManifest(t,i,r){this.manifest_=t,this.parser_=i,this.parserFactory_=r}start(){(async()=>{await Promise.resolve();try{await this.parseManifestInner_(),this.throwIfDestroyed_(),de.isMediaKeysPolyfilled("webkit")||(await this.initializeDrm(),this.throwIfDestroyed_()),await this.validatePrefetchedVariant_(),this.throwIfDestroyed_(),this.allowPrefetch_&&(await this.prefetchInner_(),this.throwIfDestroyed_()),this.allowPrefetch_&&this.drmEngine_&&(await this.drmEngine_.waitForActiveRequests(),this.throwIfDestroyed_()),this.successPromise_.resolve()}catch(t){(!(t instanceof h)||t.code!=h.Code.OPERATION_ABORTED&&t.code!=h.Code.OBJECT_DESTROYED)&&this.successPromise_.reject(t)}})()}dispatchEvent(t){return this.eventHandoffTarget_?this.eventHandoffTarget_.dispatchEvent(t):super.dispatchEvent(t)}onError(t){t.severity===h.Severity.CRITICAL&&(this.successPromise_.reject(t),this.destroy());let i=U.EventName.Error,r=this.makeEvent_(i,new Map().set("detail",t));this.dispatchEvent(r),r.defaultPrevented&&(t.handled=!0)}throwIfDestroyed_(){if(this.isDestroyed())throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OBJECT_DESTROYED)}makeStateChangeEvent_(t){this.dispatchEvent(new U(U.EventName.OnStateChange,new Map().set("state",t)))}makeEvent_(t,i){return new U(t,i)}async parseManifestInner_(){this.makeStateChangeEvent_("manifest-parser"),this.parser_||(this.parserFactory_=me.getFactory(this.assetUri_,this.mimeType_),v.assert(this.parserFactory_,"Must have manifest parser"),this.parser_=this.parserFactory_(),this.parser_.configure(this.config_.manifest,()=>this.isPreload_));let t=Date.now()/1e3;this.makeStateChangeEvent_("manifest"),this.manifest_||(this.manifest_=await this.parser_.start(this.assetUri_,this.manifestPlayerInterface_),y.filterForAVVariants_(this.manifest_),await this.chooseInitialVariant_()),this.manifestPromise_.resolve();let i=this.makeEvent_(U.EventName.ManifestParsed);if(await Promise.resolve(),this.dispatchEvent(i),this.manifest_.variants.length==0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_VARIANTS);if(y.filterForAVVariants_(this.manifest_),this.manifestFilterer_.applyRestrictions(this.manifest_)){let a=this.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),this.throwIfDestroyed_(),this.dispatchEvent(a)}let n=Date.now()/1e3-t;this.stats_.setManifestTime(n)}async initializeDrm(t){if(!this.manifest_||this.drmEngine_)return;this.makeStateChangeEvent_("drm-engine"),this.startTimeOfDrm_=Date.now()/1e3,this.drmEngine_=this.createDrmEngine_(),this.manifestFilterer_.setDrmEngine(this.drmEngine_),this.drmEngine_.configure(this.config_.drm,()=>this.isPreload_);let i=se.getPlayableVariants(this.manifest_.variants),r=!0;if(this.manifest_&&this.manifest_.presentationTimeline&&(r=this.manifest_.presentationTimeline.isDynamic()),await this.drmEngine_.initForPlayback(i,this.manifest_.offlineSessionIds,r),this.throwIfDestroyed_(),t&&(await this.drmEngine_.attach(t),this.throwIfDestroyed_()),this.currentAdaptationSetCriteria_){let n=this.currentAdaptationSetCriteria_.getConfiguration();n.keySystem=this.keySystem_(),this.currentAdaptationSetCriteria_.configure(n)}if(await this.manifestFilterer_.filterManifest(this.manifest_)){let n=this.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),this.dispatchEvent(n)}}reconfigure(t){this.config_=t}configure(t,i){let r=Pt.convertToConfigObject(t,i);st.mergeConfigObjects(this.config_,r),this.reconfigurePrefetched_()}getConfiguration(){return Ne.cloneObject(this.config_)}async chooseInitialVariant_(){if(!this.currentAdaptationSetCriteria_){this.currentAdaptationSetCriteria_=this.config_.adaptationSetCriteriaFactory();let t={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem_()};st.addDeprecatedConfigFields(t),this.currentAdaptationSetCriteria_.configure(t)}this.shouldCreateSegmentIndexBeforeDrmEngineInitialization_()&&(this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_(),this.prefetchedVariant_&&await this.createSegmentIndexFromVariant_(this.prefetchedVariant_))}shouldCreateSegmentIndexBeforeDrmEngineInitialization_(){return this.prefetchedVariant_||(v.assert(this.manifest_,"The manifest should already be parsed."),!this.manifest_.variants.length)?!1:this.manifest_.variants.length==1||this.manifest_.type==me.HLS}async validatePrefetchedVariant_(){this.prefetchedVariant_&&!this.manifest_.variants.includes(this.prefetchedVariant_)&&(await this.closeSegmentIndexFromVariant_(this.prefetchedVariant_),this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_(),this.prefetchedVariant_&&await this.createSegmentIndexFromVariant_(this.prefetchedVariant_))}async prefetchInner_(){if(!this.prefetchedVariant_){let t=this.configureAbrManagerAndChooseVariant_();t&&(this.prefetchedVariant_=t)}if(this.prefetchedVariant_){let t=this.manifest_.presentationTimeline.isLive(),i=[],r=this.prefetchedVariant_;r.video&&i.push(this.prefetchStream_(r.video,t)),r.audio&&i.push(this.prefetchStream_(r.audio,t));let s=this.chooseTextStream_(r);s&&(i.push(this.prefetchStream_(s,t)),this.prefetchedTextStream_=s),await Promise.all(i)}}configureAbrManagerAndChooseVariant_(){if(v.assert(this.currentAdaptationSetCriteria_,"Must have an AdaptationSetCriteria"),!this.abrManager_){let s=this.config_.abrFactory;this.abrManager_=s(),this.abrManager_.configure(this.config_.abr)}let t=this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode,i=se.getPlayableVariants(this.manifest_.variants),r=this.currentAdaptationSetCriteria_.create(i);return this.abrManager_.setVariants(Array.from(r.values()),t),this.abrManager_.chooseVariant(!0)}chooseTextStream_(t){let i=null,r=this.config_.preferredText;for(let s of r){if(!s.language)continue;let n=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,s.language,s.role,s.forced);if(n.length){i=n[0];break}}if(!i&&(t!=null&&t.audio)&&this.config_.accessibility.handleForcedSubtitlesAutomatically){let s=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,t.audio.language,"",!0);s.length&&(i=s[0])}return i}async prefetchStream_(t,i){let r=this.config_.streaming.segmentPrefetchLimit||2,s=new Xr(r,t,(c,d,u)=>jr.dispatchFetch(c,d,u||null,this.config_.streaming.retryParameters,this.networkingEngine_,this.isPreload_),!1);this.segmentPrefetchById_.set(t.id,s),t.segmentIndex||await t.createSegmentIndex();let n=typeof this.startTime_=="number"?this.startTime_:0,a=t.segmentIndex.getIteratorForTime(n),o=null;a&&(o=a.current(),o||(o=a.next().value)),o||(o=t.segmentIndex.earliestReference()),o&&(i?o.initSegmentReference&&await s.prefetchInitSegment(o.initSegmentReference):await s.prefetchSegmentsByTime(o.startTime))}async reconfigurePrefetched_(){if(!this.prefetchedVariant_)return;let t=this.manifest_.presentationTimeline.isLive(),i=[],r=d=>{d&&(this.segmentPrefetchById_.has(d.id)&&(this.segmentPrefetchById_.get(d.id).clearAll(),this.segmentPrefetchById_.delete(d.id)),d.segmentIndex&&d.closeSegmentIndex&&i.push(d.closeSegmentIndex()))},s=()=>{let d=this.prefetchedVariant_;for(let u of[d.video,d.audio])r(u);this.prefetchedTextStream_=null},n=()=>{r(this.prefetchedTextStream_),this.prefetchedTextStream_=null},a=this.currentAdaptationSetCriteria_.getConfiguration(),o={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem_()};if(st.addDeprecatedConfigFields(o),Ne.alphabeticalKeyOrderStringify(a)!=Ne.alphabeticalKeyOrderStringify(o)&&(this.currentAdaptationSetCriteria_.configure(o),s(),this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_()),this.prefetchedVariant_){let d=this.chooseTextStream_(this.prefetchedVariant_);d?d!=this.prefetchedTextStream_&&(n(),this.prefetchedTextStream_=d):n()}else n();await Promise.all(i);let c=[];if(this.prefetchedVariant_){let d=this.prefetchedVariant_;for(let u of[d.video,d.audio])c.push(this.prefetchStream_(u,t));this.prefetchedTextStream_&&c.push(this.prefetchStream_(this.prefetchedTextStream_,t))}await Promise.all(c)}async createSegmentIndexFromVariant_(t){let i=[];for(let r of[t.video,t.audio])r&&!r.segmentIndex&&i.push(r.createSegmentIndex());i.length>0&&await Promise.all(i)}async closeSegmentIndexFromVariant_(t){let i=[];for(let r of[t.video,t.audio])r&&r.segmentIndex&&r.closeSegmentIndex&&i.push(r.closeSegmentIndex());i.length>0&&await Promise.all(i)}waitForFinish(){return this.successPromise_.promise}waitForManifest(){let t=[this.manifestPromise_.promise,this.successPromise_.promise];return Promise.race(t)}async destroy(){if(this.destroyed_=!0,this.parser_&&!this.parserEntrusted_&&await this.parser_.stop(),this.abrManager_&&this.abrManager_.release(),this.regionTimeline_&&!this.regionTimelineEntrusted_&&this.regionTimeline_.release(),this.drmEngine_&&!this.drmEngineEntrusted_&&await this.drmEngine_.destroy(),this.segmentPrefetchById_.size>0&&!this.segmentPrefetchEntrusted_)for(let t of this.segmentPrefetchById_.values())t.clearAll()}isDestroyed(){return this.destroyed_}hasBeenAttached(){return this.hasBeenAttached_}keySystem_(){return de.keySystem(this.drmEngine_?this.drmEngine_.getDrmInfo():null)}static filterForAVVariants_(t){let i=r=>r.video&&r.audio||r.video&&r.video.codecs.includes(",");t.variants.some(i)&&(p.debug("Found variant with audio and video content, so filtering out audio-only content."),t.variants=t.variants.filter(i))}};/*! @license
428
+ */var Ps=class y extends Le{constructor(t,i,r,s){super();l(this,"assetUri_");l(this,"mimeType_");l(this,"networkingEngine_");l(this,"startTime_");l(this,"currentAdaptationSetCriteria_");l(this,"startTimeOfDrm_");l(this,"createDrmEngine_");l(this,"manifestFilterer_");l(this,"manifestPlayerInterface_");l(this,"config_");l(this,"manifest_");l(this,"parserFactory_");l(this,"parser_");l(this,"parserEntrusted_");l(this,"regionTimeline_");l(this,"regionTimelineEntrusted_");l(this,"drmEngine_");l(this,"drmEngineEntrusted_");l(this,"abrManager_");l(this,"segmentPrefetchById_");l(this,"segmentPrefetchEntrusted_");l(this,"qualityObserver_");l(this,"stats_");l(this,"manifestPromise_");l(this,"successPromise_");l(this,"eventHandoffTarget_");l(this,"destroyed_");l(this,"allowPrefetch_");l(this,"prefetchedVariant_");l(this,"prefetchedTextStream_");l(this,"hasBeenAttached_");l(this,"queuedOperations_");l(this,"latePhaseQueuedOperations_");l(this,"isPreload_");let n=s;this.assetUri_=t,this.mimeType_=i,this.networkingEngine_=n.networkingEngine,this.startTime_=r,this.currentAdaptationSetCriteria_=null,this.startTimeOfDrm_=0,this.createDrmEngine_=n.createDrmEngine,this.manifestFilterer_=n.manifestFilterer,this.manifestPlayerInterface_=n.manifestPlayerInterface,this.config_=n.config,this.manifest_=null,this.parserFactory_=null,this.parser_=null,this.parserEntrusted_=!1,this.regionTimeline_=n.regionTimeline,this.regionTimelineEntrusted_=!1,this.drmEngine_=null,this.drmEngineEntrusted_=!1,this.abrManager_=null,this.segmentPrefetchById_=new Map,this.segmentPrefetchEntrusted_=!1,this.qualityObserver_=n.qualityObserver,this.stats_=new tr,this.manifestPromise_=Promise.withResolvers(),this.successPromise_=Promise.withResolvers(),this.eventHandoffTarget_=null,this.destroyed_=!1,this.allowPrefetch_=n.allowPrefetch,this.prefetchedVariant_=null,this.prefetchedTextStream_=null,this.hasBeenAttached_=!1,this.queuedOperations_=[],this.latePhaseQueuedOperations_=[],this.isPreload_=!0}markIsLoad(){this.isPreload_=!1}addQueuedOperation(t,i){let r=t?this.latePhaseQueuedOperations_:this.queuedOperations_;r?r.push(i):i()}stopQueuingLatePhaseQueuedOperations(){if(this.latePhaseQueuedOperations_)for(let t of this.latePhaseQueuedOperations_)t();this.latePhaseQueuedOperations_=null}setEventHandoffTarget(t){if(this.eventHandoffTarget_=t,this.hasBeenAttached_=!0,this.queuedOperations_)for(let i of this.queuedOperations_)i();this.queuedOperations_=null}setOffsetToStartTime(t){this.startTime_&&t&&(typeof this.startTime_=="number"?this.startTime_+=t:this.startTime_.setTime(this.startTime_.getTime()+t*1e3))}getStartTime(){return this.startTime_}getStartTimeOfDRM(){return this.startTimeOfDrm_}getMimeType(){return this.mimeType_}getAssetUri(){return this.assetUri_}getManifest(){return this.manifest_}getParserFactory(){return this.parserFactory_}getCurrentAdaptationSetCriteria(){return this.currentAdaptationSetCriteria_}receiveParser(){return this.parserEntrusted_=!0,this.parser_}getParser(){return this.parser_}receiveRegionTimeline(){return this.regionTimelineEntrusted_=!0,this.regionTimeline_}getRegionTimeline(){return this.regionTimeline_}getQualityObserver(){return this.qualityObserver_}getStats(){return this.stats_}getManifestFilterer(){return this.manifestFilterer_}receiveDrmEngine(){return this.drmEngineEntrusted_=!0,this.drmEngine_}getDrmEngine(){return this.drmEngine_}setPrefetchVariant(t){this.prefetchedVariant_=t}getPrefetchedVariant(){return this.prefetchedVariant_}getPrefetchedVariantTrack(){return this.prefetchedVariant_?se.variantToTrack(this.prefetchedVariant_):null}getPrefetchedTextTrack(){return this.prefetchedTextStream_?se.textStreamToTrack(this.prefetchedTextStream_):null}receiveSegmentPrefetchesById(){return this.segmentPrefetchEntrusted_=!0,this.segmentPrefetchById_}attachAdaptationSetCriteria(t){this.currentAdaptationSetCriteria_=t}attachManifest(t,i,r){this.manifest_=t,this.parser_=i,this.parserFactory_=r}start(){(async()=>{await Promise.resolve();try{await this.parseManifestInner_(),this.throwIfDestroyed_(),de.isMediaKeysPolyfilled("webkit")||(await this.initializeDrm(),this.throwIfDestroyed_()),await this.validatePrefetchedVariant_(),this.throwIfDestroyed_(),this.allowPrefetch_&&(await this.prefetchInner_(),this.throwIfDestroyed_()),this.allowPrefetch_&&this.drmEngine_&&(await this.drmEngine_.waitForActiveRequests(),this.throwIfDestroyed_()),this.successPromise_.resolve()}catch(t){(!(t instanceof h)||t.code!=h.Code.OPERATION_ABORTED&&t.code!=h.Code.OBJECT_DESTROYED)&&this.successPromise_.reject(t)}})()}dispatchEvent(t){return this.eventHandoffTarget_?this.eventHandoffTarget_.dispatchEvent(t):super.dispatchEvent(t)}onError(t){t.severity===h.Severity.CRITICAL&&(this.successPromise_.reject(t),this.destroy());let i=U.EventName.Error,r=this.makeEvent_(i,new Map().set("detail",t));this.dispatchEvent(r),r.defaultPrevented&&(t.handled=!0)}throwIfDestroyed_(){if(this.isDestroyed())throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OBJECT_DESTROYED)}makeStateChangeEvent_(t){this.dispatchEvent(new U(U.EventName.OnStateChange,new Map().set("state",t)))}makeEvent_(t,i){return new U(t,i)}async parseManifestInner_(){this.makeStateChangeEvent_("manifest-parser"),this.parser_||(this.parserFactory_=me.getFactory(this.assetUri_,this.mimeType_),v.assert(this.parserFactory_,"Must have manifest parser"),this.parser_=this.parserFactory_(),this.parser_.configure(this.config_.manifest,()=>this.isPreload_));let t=Date.now()/1e3;this.makeStateChangeEvent_("manifest"),this.manifest_||(this.manifest_=await this.parser_.start(this.assetUri_,this.manifestPlayerInterface_),y.filterForAVVariants_(this.manifest_),await this.chooseInitialVariant_()),this.manifestPromise_.resolve();let i=this.makeEvent_(U.EventName.ManifestParsed);if(await Promise.resolve(),this.dispatchEvent(i),this.manifest_.variants.length==0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_VARIANTS);if(y.filterForAVVariants_(this.manifest_),this.manifestFilterer_.applyRestrictions(this.manifest_)){let a=this.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),this.throwIfDestroyed_(),this.dispatchEvent(a)}let n=Date.now()/1e3-t;this.stats_.setManifestTime(n)}async initializeDrm(t){if(!this.manifest_||this.drmEngine_)return;this.makeStateChangeEvent_("drm-engine"),this.startTimeOfDrm_=Date.now()/1e3,this.drmEngine_=this.createDrmEngine_(),this.manifestFilterer_.setDrmEngine(this.drmEngine_),this.drmEngine_.configure(this.config_.drm,()=>this.isPreload_);let i=se.getPlayableVariants(this.manifest_.variants),r=!0;if(this.manifest_&&this.manifest_.presentationTimeline&&(r=this.manifest_.presentationTimeline.isDynamic()),await this.drmEngine_.initForPlayback(i,this.manifest_.offlineSessionIds,r),this.throwIfDestroyed_(),t&&(await this.drmEngine_.attach(t),this.throwIfDestroyed_()),this.currentAdaptationSetCriteria_){let n=this.currentAdaptationSetCriteria_.getConfiguration();n.keySystem=this.keySystem_(),this.currentAdaptationSetCriteria_.configure(n)}if(await this.manifestFilterer_.filterManifest(this.manifest_)){let n=this.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),this.dispatchEvent(n)}}reconfigure(t){this.config_=t}configure(t,i){let r=Pt.convertToConfigObject(t,i);st.mergeConfigObjects(this.config_,r),this.reconfigurePrefetched_()}getConfiguration(){return Oe.cloneObject(this.config_)}async chooseInitialVariant_(){if(!this.currentAdaptationSetCriteria_){this.currentAdaptationSetCriteria_=this.config_.adaptationSetCriteriaFactory();let t={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem_()};st.addDeprecatedConfigFields(t),this.currentAdaptationSetCriteria_.configure(t)}this.shouldCreateSegmentIndexBeforeDrmEngineInitialization_()&&(this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_(),this.prefetchedVariant_&&await this.createSegmentIndexFromVariant_(this.prefetchedVariant_))}shouldCreateSegmentIndexBeforeDrmEngineInitialization_(){return this.prefetchedVariant_||(v.assert(this.manifest_,"The manifest should already be parsed."),!this.manifest_.variants.length)?!1:this.manifest_.variants.length==1||this.manifest_.type==me.HLS}async validatePrefetchedVariant_(){this.prefetchedVariant_&&!this.manifest_.variants.includes(this.prefetchedVariant_)&&(await this.closeSegmentIndexFromVariant_(this.prefetchedVariant_),this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_(),this.prefetchedVariant_&&await this.createSegmentIndexFromVariant_(this.prefetchedVariant_))}async prefetchInner_(){if(!this.prefetchedVariant_){let t=this.configureAbrManagerAndChooseVariant_();t&&(this.prefetchedVariant_=t)}if(this.prefetchedVariant_){let t=this.manifest_.presentationTimeline.isLive(),i=[],r=this.prefetchedVariant_;r.video&&i.push(this.prefetchStream_(r.video,t)),r.audio&&i.push(this.prefetchStream_(r.audio,t));let s=this.chooseTextStream_(r);s&&(i.push(this.prefetchStream_(s,t)),this.prefetchedTextStream_=s),await Promise.all(i)}}configureAbrManagerAndChooseVariant_(){if(v.assert(this.currentAdaptationSetCriteria_,"Must have an AdaptationSetCriteria"),!this.abrManager_){let s=this.config_.abrFactory;this.abrManager_=s(),this.abrManager_.configure(this.config_.abr)}let t=this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode,i=se.getPlayableVariants(this.manifest_.variants),r=this.currentAdaptationSetCriteria_.create(i);return this.abrManager_.setVariants(Array.from(r.values()),t),this.abrManager_.chooseVariant(!0)}chooseTextStream_(t){let i=null,r=this.config_.preferredText;for(let s of r){if(!s.language)continue;let n=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,s.language,s.role,s.forced);if(n.length){i=n[0];break}}if(!i&&(t!=null&&t.audio)&&this.config_.accessibility.handleForcedSubtitlesAutomatically){let s=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,t.audio.language,"",!0);s.length&&(i=s[0])}return i}async prefetchStream_(t,i){let r=this.config_.streaming.segmentPrefetchLimit||2,s=new Xr(r,t,(c,d,u)=>jr.dispatchFetch(c,d,u||null,this.config_.streaming.retryParameters,this.networkingEngine_,this.isPreload_),!1);this.segmentPrefetchById_.set(t.id,s),t.segmentIndex||await t.createSegmentIndex();let n=typeof this.startTime_=="number"?this.startTime_:0,a=t.segmentIndex.getIteratorForTime(n),o=null;a&&(o=a.current(),o||(o=a.next().value)),o||(o=t.segmentIndex.earliestReference()),o&&(i?o.initSegmentReference&&await s.prefetchInitSegment(o.initSegmentReference):await s.prefetchSegmentsByTime(o.startTime))}async reconfigurePrefetched_(){if(!this.prefetchedVariant_)return;let t=this.manifest_.presentationTimeline.isLive(),i=[],r=d=>{d&&(this.segmentPrefetchById_.has(d.id)&&(this.segmentPrefetchById_.get(d.id).clearAll(),this.segmentPrefetchById_.delete(d.id)),d.segmentIndex&&d.closeSegmentIndex&&i.push(d.closeSegmentIndex()))},s=()=>{let d=this.prefetchedVariant_;for(let u of[d.video,d.audio])r(u);this.prefetchedTextStream_=null},n=()=>{r(this.prefetchedTextStream_),this.prefetchedTextStream_=null},a=this.currentAdaptationSetCriteria_.getConfiguration(),o={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem_()};if(st.addDeprecatedConfigFields(o),Oe.alphabeticalKeyOrderStringify(a)!=Oe.alphabeticalKeyOrderStringify(o)&&(this.currentAdaptationSetCriteria_.configure(o),s(),this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_()),this.prefetchedVariant_){let d=this.chooseTextStream_(this.prefetchedVariant_);d?d!=this.prefetchedTextStream_&&(n(),this.prefetchedTextStream_=d):n()}else n();await Promise.all(i);let c=[];if(this.prefetchedVariant_){let d=this.prefetchedVariant_;for(let u of[d.video,d.audio])c.push(this.prefetchStream_(u,t));this.prefetchedTextStream_&&c.push(this.prefetchStream_(this.prefetchedTextStream_,t))}await Promise.all(c)}async createSegmentIndexFromVariant_(t){let i=[];for(let r of[t.video,t.audio])r&&!r.segmentIndex&&i.push(r.createSegmentIndex());i.length>0&&await Promise.all(i)}async closeSegmentIndexFromVariant_(t){let i=[];for(let r of[t.video,t.audio])r&&r.segmentIndex&&r.closeSegmentIndex&&i.push(r.closeSegmentIndex());i.length>0&&await Promise.all(i)}waitForFinish(){return this.successPromise_.promise}waitForManifest(){let t=[this.manifestPromise_.promise,this.successPromise_.promise];return Promise.race(t)}async destroy(){if(this.destroyed_=!0,this.parser_&&!this.parserEntrusted_&&await this.parser_.stop(),this.abrManager_&&this.abrManager_.release(),this.regionTimeline_&&!this.regionTimelineEntrusted_&&this.regionTimeline_.release(),this.drmEngine_&&!this.drmEngineEntrusted_&&await this.drmEngine_.destroy(),this.segmentPrefetchById_.size>0&&!this.segmentPrefetchEntrusted_)for(let t of this.segmentPrefetchById_.values())t.clearAll()}isDestroyed(){return this.destroyed_}hasBeenAttached(){return this.hasBeenAttached_}keySystem_(){return de.keySystem(this.drmEngine_?this.drmEngine_.getDrmInfo():null)}static filterForAVVariants_(t){let i=r=>r.video&&r.audio||r.video&&r.video.codecs.includes(",");t.variants.some(i)&&(p.debug("Found variant with audio and video content, so filtering out audio-only content."),t.variants=t.variants.filter(i))}};/*! @license
429
429
  * Shaka Player
430
430
  * Copyright 2016 Google LLC
431
431
  * SPDX-License-Identifier: Apache-2.0
@@ -458,7 +458,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
458
458
  * Shaka Player
459
459
  * Copyright 2016 Google LLC
460
460
  * SPDX-License-Identifier: Apache-2.0
461
- */var Dt=class Dt{constructor(e){l(this,"isTextVisible_");l(this,"cues_");l(this,"player_");l(this,"video_");l(this,"videoContainer_");l(this,"aspectRatio_");l(this,"renderSuspended_");l(this,"isContainerActuallyVisible_");l(this,"config_");l(this,"previewConfig_");l(this,"previewCue_");l(this,"showingPreviewCue_");l(this,"textContainer_");l(this,"captionsTimer_");l(this,"applyVisibilityTimer_");l(this,"currentCuesMap_");l(this,"eventManager_");l(this,"pendingResize_");l(this,"resizeObserver_");l(this,"regionElements_");l(this,"visibilityObserver_");if(this.isTextVisible_=!1,this.cues_=[],this.player_=e,this.video_=e.getMediaElement(),this.videoContainer_=e.getVideoContainer(),this.aspectRatio_=null,this.renderSuspended_=!1,this.isContainerActuallyVisible_=!0,this.config_=null,this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,this.textContainer_=Ge.createHTMLElement("div"),this.textContainer_.classList.add("shaka-text-container"),this.textContainer_.style.textAlign="center",this.textContainer_.style.display="flex",this.textContainer_.style.flexDirection="column",this.textContainer_.style.alignItems="center",this.textContainer_.style.justifyContent="flex-end",this.captionsTimer_=new ae(()=>{this.updateCaptions_(),this.configureCaptionsTimer_()}),this.configureCaptionsTimer_(),this.applyVisibilityTimer_=new ae(()=>{this.applyVisibility_()}),this.currentCuesMap_=new Map,this.eventManager_=new ue,this.eventManager_.listen(document,"fullscreenchange",()=>{this.updateCaptions_(!0)}),this.eventManager_.listen(this.video_,"seeking",()=>{this.updateCaptions_(!0),this.configureCaptionsTimer_()}),this.eventManager_.listenMulti(this.video_,["play","playing","pause","waiting"],()=>{this.configureCaptionsTimer_()}),this.eventManager_.listen(this.player_,"ratechange",()=>{this.configureCaptionsTimer_()}),this.eventManager_.listen(this.video_,"resize",()=>{let i=this.video_,r=i.videoWidth,s=i.videoHeight;r&&s?this.aspectRatio_=r/s:this.aspectRatio_=null}),this.pendingResize_=!1,this.resizeObserver_=null,"ResizeObserver"in window&&(this.resizeObserver_=new ResizeObserver(()=>{this.pendingResize_||(this.pendingResize_=!0,requestAnimationFrame(()=>{this.pendingResize_=!1,this.textContainer_&&this.textContainer_.parentElement&&this.isTextVisible_&&this.updateCaptions_(!0)}))}),v.assert(this.videoContainer_,"this.videoContainer_ must be non-null"),this.resizeObserver_.observe(this.videoContainer_)),this.regionElements_=new Map,this.visibilityObserver_=null,"IntersectionObserver"in window){let i={root:null,threshold:[.01]};this.visibilityObserver_=new IntersectionObserver(r=>{if(r.length){let s=r[r.length-1];this.isContainerActuallyVisible_=s.isIntersecting&&s.intersectionRatio>0,this.applyVisibilityTimer_.tickAfter(Dt.VISIBILITY_DEBOUNCE_)}},i),v.assert(this.videoContainer_,"this.videoContainer_ must be non-null"),this.visibilityObserver_.observe(this.videoContainer_)}this.eventManager_.listen(document,"visibilitychange",i=>{this.applyVisibilityTimer_.tickNow()}),this.eventManager_.listen(document,"fullscreenchange",()=>{this.applyVisibilityTimer_.tickNow()}),this.eventManager_.listenMulti(this.video_,["enterpictureinpicture","leavepictureinpicture"],()=>{this.applyVisibilityTimer_.tickNow()}),"documentPictureInPicture"in window&&this.eventManager_.listen(window.documentPictureInPicture,"enter",i=>{this.applyVisibilityTimer_.tickNow();let s=i.window;this.eventManager_.listenOnce(s,"pagehide",()=>{this.applyVisibilityTimer_.tickNow()})});let t=this.video_;(t.webkitPresentationMode||t.webkitSupportsFullscreen)&&this.eventManager_.listen(t,"webkitpresentationmodechanged",()=>{this.applyVisibilityTimer_.tickNow()}),this.applyVisibility_()}configure(e){this.config_=e,this.configureCaptionsTimer_(),this.applyVisibility_(),this.updateCaptions_(!0)}setTextStylePreview(e,t){this.previewConfig_=Object.assign({},e),this.previewCue_=new B(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY,t),this.updateCaptions_(!0)}clearTextStylePreview(){!this.previewConfig_&&!this.previewCue_||(this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,this.updateCaptions_(!0))}append(e){let t=[...this.cues_];for(let i of si.removeDuplicates(e))t.some(s=>B.equal(s,i))||this.cues_.push(i);this.cues_.length&&this.configureCaptionsTimer_(),this.updateCaptions_()}destroy(){var e,t,i,r,s;return this.textContainer_&&(this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_),this.textContainer_=null,this.isTextVisible_=!1,this.cues_=[],this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,(e=this.captionsTimer_)==null||e.stop(),this.captionsTimer_=null,(t=this.applyVisibilityTimer_)==null||t.stop(),this.applyVisibilityTimer_=null,this.currentCuesMap_.clear(),(i=this.eventManager_)==null||i.release(),this.eventManager_=null,(r=this.resizeObserver_)==null||r.disconnect(),this.resizeObserver_=null,(s=this.visibilityObserver_)==null||s.disconnect(),this.visibilityObserver_=null),Promise.resolve()}remove(e,t){if(!this.textContainer_)return!1;let i=this.cues_.length;this.cues_=this.cues_.filter(s=>s.startTime<e||s.endTime>=t);let r=i>this.cues_.length;return this.updateCaptions_(r),this.cues_.length||this.configureCaptionsTimer_(),!0}isTextVisible(){return this.isTextVisible_}setTextVisibility(e){this.isTextVisible_=e,this.isTextVisible_?(this.textContainer_.parentElement||this.videoContainer_.appendChild(this.textContainer_),this.updateCaptions_(!0)):this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_)}setTextLanguage(e){e&&e!="und"?this.textContainer_.setAttribute("lang",e):this.textContainer_.setAttribute("lang","")}configureCaptionsTimer_(){var a,o;if(!this.captionsTimer_)return;if(!this.cues_.length||this.renderSuspended_||this.video_.paused){this.captionsTimer_.stop();return}let e=(o=(a=this.getActiveConfig_())==null?void 0:a.subtitleDelay)!=null?o:0,t=this.video_.currentTime-e,i=Dt.SAFETY_REFRESH_PERIOD_,r=this.getNextBoundary_(this.cues_,t);r!=null&&this.video_.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&(i=Math.min(i,Math.max(0,r-t)));let s=Math.abs(this.player_.getPlaybackRate())||1,n=Math.max(Dt.MIN_REFRESH_PERIOD_,i/s);this.captionsTimer_.tickAfter(n)}getNextBoundary_(e,t){let i=null,r=s=>{s>t&&(i==null||s<i)&&(i=s)};for(let s of e)if(r(s.startTime),r(s.endTime),s.nestedCues.length){let n=this.getNextBoundary_(s.nestedCues,t);n!=null&&r(n)}return i}getActiveConfig_(){return this.previewConfig_||this.config_}applyVisibility_(){var a,o;let e=this.video_,t=!1;(window.documentPictureInPicture&&window.documentPictureInPicture.window||document.pictureInPictureElement===e)&&(t=!0);let i=!1;document.fullscreenEnabled&&document.fullscreenElement===this.videoContainer_?i=!0:e.webkitSupportsFullscreen&&(i=e.webkitDisplayingFullscreen);let r=document.visibilityState==="visible";!((o=(a=this.config_)==null?void 0:a.suspendRenderingWhenHidden)!=null?o:!0)||t||i||r&&this.isContainerActuallyVisible_?this.renderSuspended_&&(this.renderSuspended_=!1,this.configureCaptionsTimer_(),requestAnimationFrame(()=>{this.textContainer_&&this.textContainer_.parentElement&&this.isTextVisible_&&this.updateCaptions_()})):this.renderSuspended_||(this.renderSuspended_=!0,this.captionsTimer_&&this.captionsTimer_.stop())}isElementUnderTextContainer_(e){for(;e!=null;){if(e==this.textContainer_)return!0;e=e.parentElement}return!1}findCueRegistry_(e,t){let i=e,r=this.currentCuesMap_.get(e)||null;if(!r&&t&&t.positionArea!=Yt.DEFAULT)for(let s of this.currentCuesMap_.keys())B.equal(e,s)&&(i=s,r=this.currentCuesMap_.get(s));return{key:i,registry:r}}updateCuesRecursive_(e,t,i,r){let s=this.getActiveConfig_(),n=!1,a=[],o=[];for(let c of e){r.push(c);let d=this.findCueRegistry_(c,s),u=d.key,m=d.registry,f=c.startTime<=i&&c.endTime>i,g=m?m.wrapper:null;m&&(a.push(m.cueElement),m.regionElement&&a.push(m.regionElement),f||(n=!0,this.currentCuesMap_.delete(u),m=null)),f&&(o.push(c),m?this.isElementUnderTextContainer_(g)||(n=!0):(this.createCue_(c,r),m=this.currentCuesMap_.get(u),g=m.wrapper,n=!0)),c.nestedCues.length>0&&g&&this.updateCuesRecursive_(c.nestedCues,g,i,r);let _=r.pop();v.assert(_==c,"Parent cues should be kept in order")}if(n){for(let c of a)c.parentElement&&c.parentElement.removeChild(c);o.sort((c,d)=>c.startTime!=d.startTime?c.startTime-d.startTime:c.endTime-d.endTime);for(let c of o){let d=this.findCueRegistry_(c,s).registry;v.assert(d,"cueRegistry should exist."),d.regionElement?(d.regionElement.contains(t)&&d.regionElement.removeChild(t),t.appendChild(d.regionElement),d.regionElement.appendChild(d.cueElement)):t.appendChild(d.cueElement)}}}hasCueAtTime_(e,t){return e.some(i=>i.startTime<=t&&i.endTime>t&&this.hasCueContent_(i))}hasCueContent_(e){return!!e.payload.replace(/[\u00a0\u200B]/g," ").trim()||!!e.backgroundImage||e.nestedCues.some(i=>this.hasCueContent_(i))}updateCaptions_(e=!1){var a;if(!this.textContainer_||this.renderSuspended_)return;let t=this.getActiveConfig_(),i=(a=t==null?void 0:t.subtitleDelay)!=null?a:0,r=this.video_.currentTime-i,s=!!this.previewCue_&&!this.hasCueAtTime_(this.cues_,r);s!=this.showingPreviewCue_&&(e=!0,this.showingPreviewCue_=s),s&&(e=!0);let n=this.isTextVisible_||s;if(n?this.textContainer_.parentElement||this.videoContainer_.appendChild(this.textContainer_):this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_),!n||e){for(let o of this.regionElements_.values())Ge.removeAllChildren(o);Ge.removeAllChildren(this.textContainer_),this.currentCuesMap_.clear(),this.regionElements_.clear()}if(n){let o=new Map;if(Fe)for(let d of this.currentCuesMap_.keys())o.set(d,this.currentCuesMap_.get(d));let c=s&&this.previewCue_?[this.previewCue_]:this.cues_;if(t&&t.positionArea!=Yt.DEFAULT&&(c=c.map(d=>this.processCueStyle_(d))),this.updateCuesRecursive_(c,this.textContainer_,r,[]),Fe){for(let d of o.keys())if(!this.currentCuesMap_.has(d)){let u=o.get(d).cueElement;v.assert(!u.parentNode,"Cue was not properly removed!")}}}}processCueStyle_(e){let t=this.getActiveConfig_();v.assert(t.positionArea!==Yt.DEFAULT,"processCueStyle_ is intended to use on non default positioning");let i=e.clone();switch(si.resetCuePositioning(i),i.region=Dt.CustomRegion_.value(),t.positionArea){case Yt.TOP_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.BEFORE;break;case Yt.TOP_CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.BEFORE;break;case Yt.TOP_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.BEFORE;break;case Yt.CENTER_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.CENTER;break;case Yt.CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.CENTER;break;case Yt.CENTER_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.CENTER;break;case Yt.BOTTOM_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.AFTER;break;case Yt.BOTTOM_CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.AFTER;break;case Yt.BOTTOM_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.AFTER;break}return i}generateRegionId_(e){let t=He.units.PERCENTAGE,i=e.heightUnits==t?"%":"px",r=e.viewportAnchorUnits==t?"%":"px";return`${e.id}_${e.width}x${e.height}${i}-${e.viewportAnchorX}x${e.viewportAnchorY}${r}-${e.regionAnchorX}x${e.regionAnchorY}`}getRegionElement_(e){let t=e.region,i=this.aspectRatio_===4/3?2.5:1.9,r=5.33,s=this.generateRegionId_(t);if(this.regionElements_.has(s))return this.regionElements_.get(s);let n=Ge.createHTMLElement("span"),a=He.units.LINES,o=He.units.PERCENTAGE,c=He.units.PX,d=t.heightUnits==o?"%":"px",u=t.widthUnits==o?"%":"px",m=t.viewportAnchorUnits==o?"%":"px";n.id="shaka-text-region---"+s,n.classList.add("shaka-text-region"),n.style.position="absolute";let f=t.height,g=t.width;if(t.heightUnits===a&&(f=t.height*r,d="%"),t.widthUnits===a&&(g=t.width*i,u="%"),n.style.height=f+d,n.style.width=g+u,t.viewportAnchorUnits===a){let _=t.viewportAnchorY/75*100,T=this.aspectRatio_===4/3?160:210,S=t.viewportAnchorX/T*100;_-=t.regionAnchorY*f/100,S-=t.regionAnchorX*g/100,n.style.top=_+"%",n.style.left=S+"%"}else n.style.top=t.viewportAnchorY-t.regionAnchorY*f/100+m,n.style.left=t.viewportAnchorX-t.regionAnchorX*g/100+m;if(t.heightUnits!==c&&t.widthUnits!==c&&t.viewportAnchorUnits!==c){let _=parseInt(n.style.top.slice(0,-1),10)||0,T=parseInt(n.style.left.slice(0,-1),10)||0,S=parseInt(n.style.height.slice(0,-1),10)||0,b=parseInt(n.style.width.slice(0,-1),10)||0,E=Math.max(0,Math.min(100-S,_)),C=Math.max(0,Math.min(100-b,T));n.style.top=E+"%",n.style.left=C+"%"}return n.style.display="flex",n.style.flexDirection="column",n.style.alignItems="center",n.style.justifyContent=Dt.displayAlignToJustifyContent_(e.displayAlign),this.regionElements_.set(s,n),n}createCue_(e,t){let i=t.length>1,r=i?"span":"div";e.lineBreak&&(r="br"),e.rubyTag&&(r=e.rubyTag);let s=!i&&e.nestedCues.length>0,n=Ge.createHTMLElement(r);r!="br"&&this.setCaptionStyles_(n,e,t,s);let a=null;e.region&&e.region.id&&(a=this.getRegionElement_(e));let o=n;s&&(o=Ge.createHTMLElement("span"),o.classList.add("shaka-text-wrapper"),o.style.backgroundColor=e.backgroundColor,o.style.lineHeight="normal",n.appendChild(o)),this.currentCuesMap_.set(e,{cueElement:n,wrapper:o,regionElement:a})}computeCuePositionAlignment_(e){let{direction:t,positionAlign:i,textAlign:r}=e;return i!==B.positionAlign.AUTO?i:r===B.textAlign.LEFT||r===B.textAlign.START&&t===B.direction.HORIZONTAL_LEFT_TO_RIGHT||r===B.textAlign.END&&t===B.direction.HORIZONTAL_RIGHT_TO_LEFT?B.positionAlign.LEFT:r===B.textAlign.RIGHT||r===B.textAlign.START&&t===B.direction.HORIZONTAL_RIGHT_TO_LEFT||r===B.textAlign.END&&t===B.direction.HORIZONTAL_LEFT_TO_RIGHT?B.positionAlign.RIGHT:B.positionAlign.CENTER}setCaptionStyles_(e,t,i,r){let s=g=>Dt.inheritProperty_(i,g),n=e.style,a=t.nestedCues.length==0,o=i.length>1;n.whiteSpace="pre-wrap";let c=t.payload.replace(/\s+$/g,g=>"\xA0".repeat(g.length));if(n.webkitTextStrokeColor=t.textStrokeColor,n.webkitTextStrokeWidth=t.textStrokeWidth,n.color=t.color,n.direction=t.direction,n.opacity=t.opacity,n.paddingLeft=Dt.convertLengthValue_(t.linePadding,t,this.videoContainer_),n.paddingRight=Dt.convertLengthValue_(t.linePadding,t,this.videoContainer_),n.textCombineUpright=t.textCombineUpright,n.textShadow=t.textShadow,t.backgroundImage){let g=t.backgroundImage.replace(/['"()\\]/g,"");n.backgroundImage="url('"+g+"')",n.backgroundRepeat="no-repeat",n.backgroundSize="contain",n.backgroundPosition="center",t.backgroundColor&&(n.backgroundColor=t.backgroundColor),n.width="100%",n.height="100%"}else{let g;if(t.nestedCues.length?g=e:(g=Ge.createHTMLElement("span"),e.appendChild(g)),t.border&&(g.style.border=t.border),!r){let _=s(T=>T.backgroundColor);_?g.style.backgroundColor=_:c&&(g.style.backgroundColor="rgba(0, 0, 0, 0.8)")}c&&(g.setAttribute("translate","no"),g.textContent=c)}o&&!i[i.length-1].isContainer?n.display="inline":(n.display="flex",n.flexDirection="column",n.alignItems="center",t.textAlign==B.textAlign.LEFT||t.textAlign==B.textAlign.START?(n.width="100%",n.alignItems="flex-start"):(t.textAlign==B.textAlign.RIGHT||t.textAlign==B.textAlign.END)&&(n.width="100%",n.alignItems="flex-end"),n.justifyContent=Dt.displayAlignToJustifyContent_(t.displayAlign)),a||(n.margin="0"),n.fontFamily=t.fontFamily,n.fontWeight=t.fontWeight.toString(),n.fontStyle=t.fontStyle,n.letterSpacing=t.letterSpacing;let d=this.getActiveConfig_(),u=d?d.fontScaleFactor:1;if(u!==1||t.fontSize){let g=t.fontSize||"1em";n.fontSize=Dt.convertLengthValue_(g,t,this.videoContainer_,u)}let m=t.line;if(m!=null){let g=t.lineInterpretation;if(g==B.lineInterpretation.LINE_NUMBER){g=B.lineInterpretation.PERCENTAGE;let _=16;this.aspectRatio_&&this.aspectRatio_<1&&(_=32),m<0?m=100+m/_*100:m=m/_*100}g==B.lineInterpretation.PERCENTAGE&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.width="100%",t.lineAlign==B.lineAlign.START?n.top=m+"%":t.lineAlign==B.lineAlign.END&&(n.bottom=100-m+"%")):t.writingMode==B.writingMode.VERTICAL_LEFT_TO_RIGHT?(n.height="100%",t.lineAlign==B.lineAlign.START?n.left=m+"%":t.lineAlign==B.lineAlign.END&&(n.right=100-m+"%")):(n.height="100%",t.lineAlign==B.lineAlign.START?n.right=m+"%":t.lineAlign==B.lineAlign.END&&(n.left=100-m+"%")))}n.lineHeight=t.lineHeight;let f=this.computeCuePositionAlignment_(t);f==B.positionAlign.LEFT?(n.cssFloat="left",t.position!==null&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.left=t.position+"%",n.width="auto"):n.top=t.position+"%")):f==B.positionAlign.RIGHT?(n.cssFloat="right",t.position!==null&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.right=100-t.position+"%",n.width="auto"):n.bottom=t.position+"%")):t.position!==null&&t.position!=50&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.left=t.position+"%",n.width="auto"):n.top=t.position+"%",t.size&&(n.transform="translateX(-50%)")),n.textAlign=t.textAlign,n.textDecoration=t.textDecoration.join(" "),n.writingMode=t.writingMode,(!("writingMode"in document.documentElement.style)||n.writingMode!=t.writingMode)&&(n.webkitWritingMode=t.writingMode),t.size&&(t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?n.width=t.size+"%":n.height=t.size+"%")}static getLengthValueInfo_(e){let t=new RegExp(/(\d*\.?\d+)([a-z]+|%+)/).exec(e);return t?{value:Number(t[1]),unit:t[2]}:null}static convertLengthValue_(e,t,i,r=1){let s=Dt.getLengthValueInfo_(e);if(!s)return e;let{unit:n,value:a}=s,o=a*r;switch(n){case"%":return Dt.getAbsoluteLengthInPixels_(o/100,t,i);case"c":return Dt.getAbsoluteLengthInPixels_(o,t,i);default:return o+n}}static getAbsoluteLengthInPixels_(e,t,i){return i.clientHeight*e/t.cellResolution.rows+"px"}static inheritProperty_(e,t){for(let i=e.length-1;i>=0;i--){let r=t(e[i]);if(r||r===0)return r}return null}static displayAlignToJustifyContent_(e){switch(e){case B.displayAlign.BEFORE:return"flex-start";case B.displayAlign.CENTER:return"center";default:return"flex-end"}}};l(Dt,"SAFETY_REFRESH_PERIOD_",1),l(Dt,"VISIBILITY_DEBOUNCE_",.25);var Jr=Dt;Jr.MIN_REFRESH_PERIOD_=1/60;Jr.CustomRegion_=new _e(()=>{let y=new He;return y.id="shaka-custom-region",y.height=90,y.width=90,y.viewportAnchorX=5,y.viewportAnchorY=5,y});/*! @license
461
+ */var Dt=class Dt{constructor(e){l(this,"isTextVisible_");l(this,"cues_");l(this,"player_");l(this,"video_");l(this,"videoContainer_");l(this,"aspectRatio_");l(this,"renderSuspended_");l(this,"isContainerActuallyVisible_");l(this,"config_");l(this,"previewConfig_");l(this,"previewCue_");l(this,"showingPreviewCue_");l(this,"textContainer_");l(this,"captionsTimer_");l(this,"applyVisibilityTimer_");l(this,"currentCuesMap_");l(this,"eventManager_");l(this,"pendingResize_");l(this,"resizeObserver_");l(this,"regionElements_");l(this,"visibilityObserver_");if(this.isTextVisible_=!1,this.cues_=[],this.player_=e,this.video_=e.getMediaElement(),this.videoContainer_=e.getVideoContainer(),this.aspectRatio_=null,this.renderSuspended_=!1,this.isContainerActuallyVisible_=!0,this.config_=null,this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,this.textContainer_=Ge.createHTMLElement("div"),this.textContainer_.classList.add("shaka-text-container"),this.textContainer_.style.textAlign="center",this.textContainer_.style.display="flex",this.textContainer_.style.flexDirection="column",this.textContainer_.style.alignItems="center",this.textContainer_.style.justifyContent="flex-end",this.captionsTimer_=new ae(()=>{this.updateCaptions_(),this.configureCaptionsTimer_()}),this.configureCaptionsTimer_(),this.applyVisibilityTimer_=new ae(()=>{this.applyVisibility_()}),this.currentCuesMap_=new Map,this.eventManager_=new ue,this.eventManager_.listen(document,"fullscreenchange",()=>{this.updateCaptions_(!0)}),this.eventManager_.listen(this.video_,"seeking",()=>{this.updateCaptions_(!0),this.configureCaptionsTimer_()}),this.eventManager_.listenMulti(this.video_,["play","playing","pause","waiting"],()=>{this.configureCaptionsTimer_()}),this.eventManager_.listen(this.player_,"ratechange",()=>{this.configureCaptionsTimer_()}),this.eventManager_.listen(this.video_,"resize",()=>{let i=this.video_,r=i.videoWidth,s=i.videoHeight;r&&s?this.aspectRatio_=r/s:this.aspectRatio_=null}),this.pendingResize_=!1,this.resizeObserver_=null,"ResizeObserver"in window&&(this.resizeObserver_=new ResizeObserver(()=>{this.pendingResize_||(this.pendingResize_=!0,requestAnimationFrame(()=>{this.pendingResize_=!1,this.textContainer_&&this.textContainer_.parentElement&&this.isTextVisible_&&this.updateCaptions_(!0)}))}),v.assert(this.videoContainer_,"this.videoContainer_ must be non-null"),this.resizeObserver_.observe(this.videoContainer_)),this.regionElements_=new Map,this.visibilityObserver_=null,"IntersectionObserver"in window){let i={root:null,threshold:[.01]};this.visibilityObserver_=new IntersectionObserver(r=>{if(r.length){let s=r[r.length-1];this.isContainerActuallyVisible_=s.isIntersecting&&s.intersectionRatio>0,this.applyVisibilityTimer_.tickAfter(Dt.VISIBILITY_DEBOUNCE_)}},i),v.assert(this.videoContainer_,"this.videoContainer_ must be non-null"),this.visibilityObserver_.observe(this.videoContainer_)}this.eventManager_.listen(document,"visibilitychange",i=>{this.applyVisibilityTimer_.tickNow()}),this.eventManager_.listen(document,"fullscreenchange",()=>{this.applyVisibilityTimer_.tickNow()}),this.eventManager_.listenMulti(this.video_,["enterpictureinpicture","leavepictureinpicture"],()=>{this.applyVisibilityTimer_.tickNow()}),"documentPictureInPicture"in window&&this.eventManager_.listen(window.documentPictureInPicture,"enter",i=>{this.applyVisibilityTimer_.tickNow();let s=i.window;this.eventManager_.listenOnce(s,"pagehide",()=>{this.applyVisibilityTimer_.tickNow()})});let t=this.video_;(t.webkitPresentationMode||t.webkitSupportsFullscreen)&&this.eventManager_.listen(t,"webkitpresentationmodechanged",()=>{this.applyVisibilityTimer_.tickNow()}),this.applyVisibility_()}configure(e){this.config_=e,this.configureCaptionsTimer_(),this.applyVisibility_(),this.updateCaptions_(!0)}setTextStylePreview(e,t){this.previewConfig_=Object.assign({},e),this.previewCue_=new B(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY,t),this.updateCaptions_(!0)}clearTextStylePreview(){!this.previewConfig_&&!this.previewCue_||(this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,this.updateCaptions_(!0))}append(e){let t=[...this.cues_];for(let i of si.removeDuplicates(e))t.some(s=>B.equal(s,i))||this.cues_.push(i);this.cues_.length&&this.configureCaptionsTimer_(),this.updateCaptions_()}destroy(){var e,t,i,r,s;return this.textContainer_&&(this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_),this.textContainer_=null,this.isTextVisible_=!1,this.cues_=[],this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,(e=this.captionsTimer_)==null||e.stop(),this.captionsTimer_=null,(t=this.applyVisibilityTimer_)==null||t.stop(),this.applyVisibilityTimer_=null,this.currentCuesMap_.clear(),(i=this.eventManager_)==null||i.release(),this.eventManager_=null,(r=this.resizeObserver_)==null||r.disconnect(),this.resizeObserver_=null,(s=this.visibilityObserver_)==null||s.disconnect(),this.visibilityObserver_=null),Promise.resolve()}remove(e,t){if(!this.textContainer_)return!1;let i=this.cues_.length;this.cues_=this.cues_.filter(s=>s.startTime<e||s.endTime>=t);let r=i>this.cues_.length;return this.updateCaptions_(r),this.cues_.length||this.configureCaptionsTimer_(),!0}isTextVisible(){return this.isTextVisible_}setTextVisibility(e){this.isTextVisible_=e,this.isTextVisible_?(this.textContainer_.parentElement||this.videoContainer_.appendChild(this.textContainer_),this.updateCaptions_(!0)):this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_)}setTextLanguage(e){e&&e!="und"?this.textContainer_.setAttribute("lang",e):this.textContainer_.setAttribute("lang","")}configureCaptionsTimer_(){var a,o;if(!this.captionsTimer_)return;if(!this.cues_.length||this.renderSuspended_||this.video_.paused){this.captionsTimer_.stop();return}let e=(o=(a=this.getActiveConfig_())==null?void 0:a.subtitleDelay)!=null?o:0,t=this.video_.currentTime-e,i=Dt.SAFETY_REFRESH_PERIOD_,r=this.getNextBoundary_(this.cues_,t);r!=null&&this.video_.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&(i=Math.min(i,Math.max(0,r-t)));let s=Math.abs(this.player_.getPlaybackRate())||1,n=Math.max(Dt.MIN_REFRESH_PERIOD_,i/s);this.captionsTimer_.tickAfter(n)}getNextBoundary_(e,t){let i=null,r=s=>{s>t&&(i==null||s<i)&&(i=s)};for(let s of e)if(r(s.startTime),r(s.endTime),s.nestedCues.length){let n=this.getNextBoundary_(s.nestedCues,t);n!=null&&r(n)}return i}getActiveConfig_(){return this.previewConfig_||this.config_}applyVisibility_(){var a,o;let e=this.video_,t=!1;(window.documentPictureInPicture&&window.documentPictureInPicture.window||document.pictureInPictureElement===e)&&(t=!0);let i=!1;document.fullscreenEnabled&&document.fullscreenElement===this.videoContainer_?i=!0:e.webkitSupportsFullscreen&&(i=e.webkitDisplayingFullscreen);let r=document.visibilityState==="visible";!((o=(a=this.config_)==null?void 0:a.suspendRenderingWhenHidden)!=null?o:!0)||t||i||r&&this.isContainerActuallyVisible_?this.renderSuspended_&&(this.renderSuspended_=!1,this.configureCaptionsTimer_(),requestAnimationFrame(()=>{this.textContainer_&&this.textContainer_.parentElement&&this.isTextVisible_&&this.updateCaptions_()})):this.renderSuspended_||(this.renderSuspended_=!0,this.captionsTimer_&&this.captionsTimer_.stop())}isElementUnderTextContainer_(e){for(;e!=null;){if(e==this.textContainer_)return!0;e=e.parentElement}return!1}findCueRegistry_(e,t){let i=e,r=this.currentCuesMap_.get(e)||null;if(!r&&t&&t.positionArea!=$t.DEFAULT)for(let s of this.currentCuesMap_.keys())B.equal(e,s)&&(i=s,r=this.currentCuesMap_.get(s));return{key:i,registry:r}}updateCuesRecursive_(e,t,i,r){let s=this.getActiveConfig_(),n=!1,a=[],o=[];for(let c of e){r.push(c);let d=this.findCueRegistry_(c,s),u=d.key,m=d.registry,f=c.startTime<=i&&c.endTime>i,g=m?m.wrapper:null;m&&(a.push(m.cueElement),m.regionElement&&a.push(m.regionElement),f||(n=!0,this.currentCuesMap_.delete(u),m=null)),f&&(o.push(c),m?this.isElementUnderTextContainer_(g)||(n=!0):(this.createCue_(c,r),m=this.currentCuesMap_.get(u),g=m.wrapper,n=!0)),c.nestedCues.length>0&&g&&this.updateCuesRecursive_(c.nestedCues,g,i,r);let _=r.pop();v.assert(_==c,"Parent cues should be kept in order")}if(n){for(let c of a)c.parentElement&&c.parentElement.removeChild(c);o.sort((c,d)=>c.startTime!=d.startTime?c.startTime-d.startTime:c.endTime-d.endTime);for(let c of o){let d=this.findCueRegistry_(c,s).registry;v.assert(d,"cueRegistry should exist."),d.regionElement?(d.regionElement.contains(t)&&d.regionElement.removeChild(t),t.appendChild(d.regionElement),d.regionElement.appendChild(d.cueElement)):t.appendChild(d.cueElement)}}}hasCueAtTime_(e,t){return e.some(i=>i.startTime<=t&&i.endTime>t&&this.hasCueContent_(i))}hasCueContent_(e){return!!e.payload.replace(/[\u00a0\u200B]/g," ").trim()||!!e.backgroundImage||e.nestedCues.some(i=>this.hasCueContent_(i))}updateCaptions_(e=!1){var a;if(!this.textContainer_||this.renderSuspended_)return;let t=this.getActiveConfig_(),i=(a=t==null?void 0:t.subtitleDelay)!=null?a:0,r=this.video_.currentTime-i,s=!!this.previewCue_&&!this.hasCueAtTime_(this.cues_,r);s!=this.showingPreviewCue_&&(e=!0,this.showingPreviewCue_=s),s&&(e=!0);let n=this.isTextVisible_||s;if(n?this.textContainer_.parentElement||this.videoContainer_.appendChild(this.textContainer_):this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_),!n||e){for(let o of this.regionElements_.values())Ge.removeAllChildren(o);Ge.removeAllChildren(this.textContainer_),this.currentCuesMap_.clear(),this.regionElements_.clear()}if(n){let o=new Map;if(Fe)for(let d of this.currentCuesMap_.keys())o.set(d,this.currentCuesMap_.get(d));let c=s&&this.previewCue_?[this.previewCue_]:this.cues_;if(t&&t.positionArea!=$t.DEFAULT&&(c=c.map(d=>this.processCueStyle_(d))),this.updateCuesRecursive_(c,this.textContainer_,r,[]),Fe){for(let d of o.keys())if(!this.currentCuesMap_.has(d)){let u=o.get(d).cueElement;v.assert(!u.parentNode,"Cue was not properly removed!")}}}}processCueStyle_(e){let t=this.getActiveConfig_();v.assert(t.positionArea!==$t.DEFAULT,"processCueStyle_ is intended to use on non default positioning");let i=e.clone();switch(si.resetCuePositioning(i),i.region=Dt.CustomRegion_.value(),t.positionArea){case $t.TOP_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.BEFORE;break;case $t.TOP_CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.BEFORE;break;case $t.TOP_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.BEFORE;break;case $t.CENTER_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.CENTER;break;case $t.CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.CENTER;break;case $t.CENTER_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.CENTER;break;case $t.BOTTOM_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.AFTER;break;case $t.BOTTOM_CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.AFTER;break;case $t.BOTTOM_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.AFTER;break}return i}generateRegionId_(e){let t=He.units.PERCENTAGE,i=e.heightUnits==t?"%":"px",r=e.viewportAnchorUnits==t?"%":"px";return`${e.id}_${e.width}x${e.height}${i}-${e.viewportAnchorX}x${e.viewportAnchorY}${r}-${e.regionAnchorX}x${e.regionAnchorY}`}getRegionElement_(e){let t=e.region,i=this.aspectRatio_===4/3?2.5:1.9,r=5.33,s=this.generateRegionId_(t);if(this.regionElements_.has(s))return this.regionElements_.get(s);let n=Ge.createHTMLElement("span"),a=He.units.LINES,o=He.units.PERCENTAGE,c=He.units.PX,d=t.heightUnits==o?"%":"px",u=t.widthUnits==o?"%":"px",m=t.viewportAnchorUnits==o?"%":"px";n.id="shaka-text-region---"+s,n.classList.add("shaka-text-region"),n.style.position="absolute";let f=t.height,g=t.width;if(t.heightUnits===a&&(f=t.height*r,d="%"),t.widthUnits===a&&(g=t.width*i,u="%"),n.style.height=f+d,n.style.width=g+u,t.viewportAnchorUnits===a){let _=t.viewportAnchorY/75*100,T=this.aspectRatio_===4/3?160:210,S=t.viewportAnchorX/T*100;_-=t.regionAnchorY*f/100,S-=t.regionAnchorX*g/100,n.style.top=_+"%",n.style.left=S+"%"}else n.style.top=t.viewportAnchorY-t.regionAnchorY*f/100+m,n.style.left=t.viewportAnchorX-t.regionAnchorX*g/100+m;if(t.heightUnits!==c&&t.widthUnits!==c&&t.viewportAnchorUnits!==c){let _=parseInt(n.style.top.slice(0,-1),10)||0,T=parseInt(n.style.left.slice(0,-1),10)||0,S=parseInt(n.style.height.slice(0,-1),10)||0,b=parseInt(n.style.width.slice(0,-1),10)||0,E=Math.max(0,Math.min(100-S,_)),C=Math.max(0,Math.min(100-b,T));n.style.top=E+"%",n.style.left=C+"%"}return n.style.display="flex",n.style.flexDirection="column",n.style.alignItems="center",n.style.justifyContent=Dt.displayAlignToJustifyContent_(e.displayAlign),this.regionElements_.set(s,n),n}createCue_(e,t){let i=t.length>1,r=i?"span":"div";e.lineBreak&&(r="br"),e.rubyTag&&(r=e.rubyTag);let s=!i&&e.nestedCues.length>0,n=Ge.createHTMLElement(r);r!="br"&&this.setCaptionStyles_(n,e,t,s);let a=null;e.region&&e.region.id&&(a=this.getRegionElement_(e));let o=n;s&&(o=Ge.createHTMLElement("span"),o.classList.add("shaka-text-wrapper"),o.style.backgroundColor=e.backgroundColor,o.style.lineHeight="normal",n.appendChild(o)),this.currentCuesMap_.set(e,{cueElement:n,wrapper:o,regionElement:a})}computeCuePositionAlignment_(e){let{direction:t,positionAlign:i,textAlign:r}=e;return i!==B.positionAlign.AUTO?i:r===B.textAlign.LEFT||r===B.textAlign.START&&t===B.direction.HORIZONTAL_LEFT_TO_RIGHT||r===B.textAlign.END&&t===B.direction.HORIZONTAL_RIGHT_TO_LEFT?B.positionAlign.LEFT:r===B.textAlign.RIGHT||r===B.textAlign.START&&t===B.direction.HORIZONTAL_RIGHT_TO_LEFT||r===B.textAlign.END&&t===B.direction.HORIZONTAL_LEFT_TO_RIGHT?B.positionAlign.RIGHT:B.positionAlign.CENTER}setCaptionStyles_(e,t,i,r){let s=g=>Dt.inheritProperty_(i,g),n=e.style,a=t.nestedCues.length==0,o=i.length>1;n.whiteSpace="pre-wrap";let c=t.payload.replace(/\s+$/g,g=>"\xA0".repeat(g.length));if(n.webkitTextStrokeColor=t.textStrokeColor,n.webkitTextStrokeWidth=t.textStrokeWidth,n.color=t.color,n.direction=t.direction,n.opacity=t.opacity,n.paddingLeft=Dt.convertLengthValue_(t.linePadding,t,this.videoContainer_),n.paddingRight=Dt.convertLengthValue_(t.linePadding,t,this.videoContainer_),n.textCombineUpright=t.textCombineUpright,n.textShadow=t.textShadow,t.backgroundImage){let g=t.backgroundImage.replace(/['"()\\]/g,"");n.backgroundImage="url('"+g+"')",n.backgroundRepeat="no-repeat",n.backgroundSize="contain",n.backgroundPosition="center",t.backgroundColor&&(n.backgroundColor=t.backgroundColor),n.width="100%",n.height="100%"}else{let g;if(t.nestedCues.length?g=e:(g=Ge.createHTMLElement("span"),e.appendChild(g)),t.border&&(g.style.border=t.border),!r){let _=s(T=>T.backgroundColor);_?g.style.backgroundColor=_:c&&(g.style.backgroundColor="rgba(0, 0, 0, 0.8)")}c&&(g.setAttribute("translate","no"),g.textContent=c)}o&&!i[i.length-1].isContainer?n.display="inline":(n.display="flex",n.flexDirection="column",n.alignItems="center",t.textAlign==B.textAlign.LEFT||t.textAlign==B.textAlign.START?(n.width="100%",n.alignItems="flex-start"):(t.textAlign==B.textAlign.RIGHT||t.textAlign==B.textAlign.END)&&(n.width="100%",n.alignItems="flex-end"),n.justifyContent=Dt.displayAlignToJustifyContent_(t.displayAlign)),a||(n.margin="0"),n.fontFamily=t.fontFamily,n.fontWeight=t.fontWeight.toString(),n.fontStyle=t.fontStyle,n.letterSpacing=t.letterSpacing;let d=this.getActiveConfig_(),u=d?d.fontScaleFactor:1;if(u!==1||t.fontSize){let g=t.fontSize||"1em";n.fontSize=Dt.convertLengthValue_(g,t,this.videoContainer_,u)}let m=t.line;if(m!=null){let g=t.lineInterpretation;if(g==B.lineInterpretation.LINE_NUMBER){g=B.lineInterpretation.PERCENTAGE;let _=16;this.aspectRatio_&&this.aspectRatio_<1&&(_=32),m<0?m=100+m/_*100:m=m/_*100}g==B.lineInterpretation.PERCENTAGE&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.width="100%",t.lineAlign==B.lineAlign.START?n.top=m+"%":t.lineAlign==B.lineAlign.END&&(n.bottom=100-m+"%")):t.writingMode==B.writingMode.VERTICAL_LEFT_TO_RIGHT?(n.height="100%",t.lineAlign==B.lineAlign.START?n.left=m+"%":t.lineAlign==B.lineAlign.END&&(n.right=100-m+"%")):(n.height="100%",t.lineAlign==B.lineAlign.START?n.right=m+"%":t.lineAlign==B.lineAlign.END&&(n.left=100-m+"%")))}n.lineHeight=t.lineHeight;let f=this.computeCuePositionAlignment_(t);f==B.positionAlign.LEFT?(n.cssFloat="left",t.position!==null&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.left=t.position+"%",n.width="auto"):n.top=t.position+"%")):f==B.positionAlign.RIGHT?(n.cssFloat="right",t.position!==null&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.right=100-t.position+"%",n.width="auto"):n.bottom=t.position+"%")):t.position!==null&&t.position!=50&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.left=t.position+"%",n.width="auto"):n.top=t.position+"%",t.size&&(n.transform="translateX(-50%)")),n.textAlign=t.textAlign,n.textDecoration=t.textDecoration.join(" "),n.writingMode=t.writingMode,(!("writingMode"in document.documentElement.style)||n.writingMode!=t.writingMode)&&(n.webkitWritingMode=t.writingMode),t.size&&(t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?n.width=t.size+"%":n.height=t.size+"%")}static getLengthValueInfo_(e){let t=new RegExp(/(\d*\.?\d+)([a-z]+|%+)/).exec(e);return t?{value:Number(t[1]),unit:t[2]}:null}static convertLengthValue_(e,t,i,r=1){let s=Dt.getLengthValueInfo_(e);if(!s)return e;let{unit:n,value:a}=s,o=a*r;switch(n){case"%":return Dt.getAbsoluteLengthInPixels_(o/100,t,i);case"c":return Dt.getAbsoluteLengthInPixels_(o,t,i);default:return o+n}}static getAbsoluteLengthInPixels_(e,t,i){return i.clientHeight*e/t.cellResolution.rows+"px"}static inheritProperty_(e,t){for(let i=e.length-1;i>=0;i--){let r=t(e[i]);if(r||r===0)return r}return null}static displayAlignToJustifyContent_(e){switch(e){case B.displayAlign.BEFORE:return"flex-start";case B.displayAlign.CENTER:return"center";default:return"flex-end"}}};l(Dt,"SAFETY_REFRESH_PERIOD_",1),l(Dt,"VISIBILITY_DEBOUNCE_",.25);var Jr=Dt;Jr.MIN_REFRESH_PERIOD_=1/60;Jr.CustomRegion_=new _e(()=>{let y=new He;return y.id="shaka-custom-region",y.height=90,y.width=90,y.viewportAnchorX=5,y.viewportAnchorY=5,y});/*! @license
462
462
  * Shaka Player
463
463
  * Copyright 2016 Google LLC
464
464
  * SPDX-License-Identifier: Apache-2.0
@@ -471,7 +471,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
471
471
  * Shaka Player
472
472
  * Copyright 2016 Google LLC
473
473
  * SPDX-License-Identifier: Apache-2.0
474
- */var Nr=class{constructor(e,t){l(this,"player_");l(this,"config_");l(this,"video_");l(this,"reporter_");l(this,"lastPlayerState_");l(this,"sf_");l(this,"requestTimestampMap_");l(this,"eventManager_");l(this,"startTimeOfLoad_");this.player_=e,this.config_=t,this.video_=null,this.reporter_=null,this.lastPlayerState_=null,this.sf_=void 0,this.requestTimestampMap_=new Map,this.eventManager_=new ue,this.startTimeOfLoad_=0}setMediaElement(e){this.video_=e,this.maybeStartReporter_(),this.reporter_&&this.setupEventListeners_()}configure(e){let t=this.config_;if(this.config_=e,this.reporter_){let i=t&&t.enabled&&!e.enabled,r=t&&e.enabled&&(t.sessionId!==e.sessionId||t.contentId!==e.contentId||t.version!==e.version||t.useHeaders!==e.useHeaders||t.eventTargets!==e.eventTargets);(i||r)&&(this.reporter_.stop(!0),this.reporter_=null,this.lastPlayerState_=null)}!this.reporter_&&this.video_&&(this.maybeStartReporter_(),this.reporter_&&this.setupEventListeners_())}reset(){this.reporter_&&(this.reporter_.stop(!0),this.reporter_=null),this.lastPlayerState_=null,this.sf_=void 0,this.requestTimestampMap_.clear(),this.startTimeOfLoad_=0,this.eventManager_.removeAll()}setBuffering(e){this.setPlayerState_(e?cml.cmcd.CmcdPlayerState.REBUFFERING:cml.cmcd.CmcdPlayerState.PLAYING)}setLowLatency(e){}setStartTimeOfLoad(e){if(this.reporter_&&(this.startTimeOfLoad_=e,this.video_&&this.video_.autoplay)){let t=this.video_.play();t&&t.catch(()=>{this.startTimeOfLoad_=0})}}applyRequestData(e,t,i={}){if(!this.reporter_)return;let r=K.RequestType,s=cml.cmcd.CmcdObjectType;if(t.method==="HEAD"){this.applyToRequest_(t,{});return}switch(e){case r.MANIFEST:{if(i.type){let n=this.getStreamFormat_(i.type);n&&n!==this.sf_&&(this.sf_=n,this.reporter_.update({sf:n,st:this.getStreamType_()}))}this.applyToRequest_(t,{ot:s.MANIFEST,su:this.lastPlayerState_===null});break}case r.SEGMENT:{let n=this.getDataForSegment_(i,t.uris[0]);this.requestTimestampMap_.has(t)&&this.requestTimestampMap_.delete(t),this.requestTimestampMap_.set(t,Date.now()),this.applyToRequest_(t,n);break}case r.LICENSE:case r.SERVER_CERTIFICATE:case r.KEY:this.applyToRequest_(t,{ot:s.KEY});break;case r.TIMING:this.applyToRequest_(t,{ot:s.OTHER});break}}applyResponseData(e,t,i={}){if(!this.reporter_)return;let r=K.RequestType;if(e!==r.SEGMENT)return;let s=this.requestTimestampMap_.get(t.originalRequest);if(this.requestTimestampMap_.delete(t.originalRequest),!!this.responseModeEnabled_())try{let n=this.removeCmcdQueryFromUri_(t.originalUri||t.uri),a={url:n};t.status!=null&&(a.rc=t.status),t.originalRequest&&t.originalRequest.timeToFirstByte!=null&&(a.ttfb=t.originalRequest.timeToFirstByte),t.timeMs!=null&&(a.ttlb=t.timeMs),s!=null&&(a.ts=s),t.headers&&t.headers["CMSD-Static"]&&(a.cmsds=btoa(t.headers["CMSD-Static"])),t.headers&&t.headers["CMSD-Dynamic"]&&(a.cmsdd=btoa(t.headers["CMSD-Dynamic"])),this.reporter_.recordResponseReceived({request:{url:n},status:t.status||0},a)}catch(n){p.warnOnce("CMCD_RESPONSE_ERROR","Could not apply CMCD data to response.",n)}}applyTextData(e){this.reporter_&&this.applyToRequest_(e,{ot:cml.cmcd.CmcdObjectType.CAPTION,su:!0})}appendSrcData(e,t){if(!this.reporter_)return e;try{let i=this.buildExternalUriData_();return i.ot=this.getObjectTypeFromMimeType_(t),i.su=!0,cml.cmcd.appendCmcdQuery(e,i,this.encodeOptionsForUri_(e))}catch(i){return p.warnOnce("CMCD_SRC_ERROR","Could not generate src CMCD data.",i),e}}appendTextTrackData(e){if(!this.reporter_)return e;try{let t=this.buildExternalUriData_();return t.ot=cml.cmcd.CmcdObjectType.CAPTION,t.su=!0,cml.cmcd.appendCmcdQuery(e,t,this.encodeOptionsForUri_(e))}catch(t){return p.warnOnce("CMCD_TEXT_TRACK_ERROR","Could not generate text track CMCD data.",t),e}}maybeStartReporter_(){if(this.reporter_||!this.config_||!this.config_.enabled||!this.video_)return;let e=this.toReporterConfig_(this.config_);this.reporter_=new cml.cmcd.CmcdReporter(e,this.makeRequester_()),this.reporter_.start()}toReporterConfig_(e){e.sessionId||(e.sessionId=window.crypto.randomUUID());let t=e.includeKeys&&e.includeKeys.length?e.includeKeys:this.allKeysForVersion_(e.version),i={sid:e.sessionId,cid:e.contentId,transmissionMode:e.useHeaders?cml.cmcd.CMCD_HEADERS:cml.cmcd.CMCD_QUERY,enabledKeys:t,version:e.version===2?cml.cmcd.CMCD_V2:cml.cmcd.CMCD_V1},r=e.eventTargets;return r&&r.length&&(i.eventTargets=r.filter(s=>s.enabled!==!1&&s.url&&s.events&&s.events.length).map(s=>{let n=s.includeKeys&&s.includeKeys.length?s.includeKeys:this.allKeysForVersion_(s.version||e.version);return{url:s.url,events:s.events,interval:s.interval,batchSize:s.batchSize,enabledKeys:n,version:cml.cmcd.CMCD_V2}})),i}allKeysForVersion_(e){return e===2||e===cml.cmcd.CMCD_V2?Array.from(new Set([].concat(cml.cmcd.CMCD_REQUEST_KEYS,cml.cmcd.CMCD_RESPONSE_KEYS,cml.cmcd.CMCD_EVENT_KEYS))):[].concat(cml.cmcd.CMCD_V1_KEYS)}makeRequester_(){return async e=>{let t=K.RequestType,i=K.defaultRetryParameters(),r=e.url,s=K.makeRequest([r],i);s.method=e.method||"POST",s.headers=e.headers||{},s.body=q.toUTF8(e.body);try{let n=this.player_.getNetworkingEngine();return v.assert(n,"Must have net engine"),await n.request(t.CMCD,s).promise,{status:200}}catch(n){return{status:n&&n.status?n.status:0}}}}setPlayerState_(e){!this.reporter_||this.lastPlayerState_===e||(this.lastPlayerState_=e,this.reporter_.update({sta:e}))}applyToRequest_(e,t){try{let i={url:e.uris[0],headers:Object.assign({},e.headers||{}),customData:{}},r=this.reporter_.createRequestReport(i,t),s=r.headers||{},n=Object.keys(i.headers).length;if(Object.keys(s).length>n){e.headers||(e.headers={});for(let c of Object.keys(s))c in i.headers||(e.headers[c]=s[c])}let o=r.url;if(o&&o!==i.url)if(e.uris.length===1)e.uris=[o];else{let c=null;try{c=new URL(o).searchParams.get("CMCD")}catch(d){}if(c!=null){let d=c;e.uris=e.uris.map(u=>{if(u.includes("offline:"))return u;try{let m=new URL(u);return m.searchParams.set("CMCD",d),m.toString()}catch(m){return u}})}}}catch(i){p.warnOnce("CMCD_REQUEST_ERROR","Could not apply CMCD data to request.",i)}}responseModeEnabled_(){let e=this.config_.eventTargets;return e?e.some(t=>t.enabled!==!1&&t.events&&t.events.includes(cml.cmcd.CmcdEventType.RESPONSE_RECEIVED)):!1}buildExternalUriData_(){return{v:this.config_.version,sid:this.config_.sessionId,cid:this.config_.contentId,sf:this.sf_,mtp:this.player_.getBandwidthEstimate()/1e3}}encodeOptionsForUri_(e){let t={};if(e&&!e.includes("offline:"))try{t.baseUrl=new URL(e).origin}catch(i){}return this.config_.version!=null&&(t.version=this.config_.version),t.reportingMode=cml.cmcd.CMCD_REQUEST_MODE,t}setupEventListeners_(){let e=cml.cmcd.CmcdPlayerState,t=cml.cmcd.CmcdEventType;this.eventManager_.listen(this.video_,"pause",()=>{this.setPlayerState_(e.PAUSED)}),this.eventManager_.listen(this.video_,"playing",()=>{this.setPlayerState_(e.PLAYING),this.reporter_&&this.startTimeOfLoad_&&(this.reporter_.update({msd:Date.now()-this.startTimeOfLoad_}),this.startTimeOfLoad_=0)}),this.eventManager_.listen(this.video_,"seeking",()=>{this.setPlayerState_(e.SEEKING)}),this.eventManager_.listen(this.video_,"ended",()=>{this.setPlayerState_(e.ENDED)}),this.eventManager_.listen(this.video_,"volumechange",()=>{if(!this.reporter_||!this.video_)return;let r=this.video_.muted;this.reporter_.recordEvent(r?t.MUTE:t.UNMUTE)}),this.eventManager_.listen(this.player_,"buffering",r=>{let s=r.buffering;this.setPlayerState_(s?e.REBUFFERING:e.PLAYING)}),this.eventManager_.listen(this.player_,"adaptation",()=>{if(!this.reporter_||!this.player_)return;let s=this.player_.getVariantTracks().find(n=>n.active);s&&s.bandwidth&&this.reporter_.update({br:[s.bandwidth/1e3]})}),this.eventManager_.listen(this.player_,"error",()=>{this.setPlayerState_(e.FATAL_ERROR),this.reporter_&&this.reporter_.recordEvent(t.ERROR)}),this.eventManager_.listen(document,"fullscreenchange",()=>{if(!this.reporter_)return;let r=!!document.fullscreenElement;this.reporter_.recordEvent(r?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE)});let i=this.video_;(i.webkitPresentationMode||i.webkitSupportsFullscreen)&&this.eventManager_.listen(i,"webkitpresentationmodechanged",()=>{this.reporter_&&(i.webkitPresentationMode?this.reporter_.recordEvent(i.webkitPresentationMode!=="inline"?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE):i.webkitSupportsFullscreen&&this.reporter_.recordEvent(i.webkitDisplayingFullscreen?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE))}),this.eventManager_.listen(this.video_,"enterpictureinpicture",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_EXPAND)}),this.eventManager_.listen(this.video_,"leavepictureinpicture",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_COLLAPSE)}),"documentPictureInPicture"in window&&this.eventManager_.listen(window.documentPictureInPicture,"enter",r=>{if(!this.reporter_)return;this.reporter_.recordEvent(t.PLAYER_EXPAND);let n=r.window;this.eventManager_.listenOnce(n,"pagehide",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_COLLAPSE)})}),this.eventManager_.listen(document,"visibilitychange",()=>{if(!this.reporter_)return;let r=document.hidden;this.reporter_.update({bg:r})}),this.eventManager_.listen(this.player_,"complete",()=>{this.setPlayerState_(e.ENDED)})}removeCmcdQueryFromUri_(e){if(!e.includes("CMCD="))return e;try{let t=new URL(e);return t.searchParams.delete("CMCD"),t.toString()}catch(t){return p.error("Failed to parse URI for CMCD removal:",e,t),e}}getObjectType_(e){if(e.type===K.AdvancedRequestType.INIT_SEGMENT)return cml.cmcd.CmcdObjectType.INIT;let t=e.stream;if(!t)return;let i=t.type;if(i=="video")return t.codecs&&t.codecs.includes(",")?cml.cmcd.CmcdObjectType.MUXED:cml.cmcd.CmcdObjectType.VIDEO;if(i=="audio")return cml.cmcd.CmcdObjectType.AUDIO;if(i=="text")return t.mimeType==="application/mp4"?cml.cmcd.CmcdObjectType.TIMED_TEXT:cml.cmcd.CmcdObjectType.CAPTION}getObjectTypeFromMimeType_(e){switch(e.toLowerCase()){case"audio/mp4":case"audio/webm":case"audio/ogg":case"audio/mpeg":case"audio/aac":case"audio/flac":case"audio/wav":return cml.cmcd.CmcdObjectType.AUDIO;case"video/webm":case"video/mp4":case"video/mpeg":case"video/mp2t":return cml.cmcd.CmcdObjectType.MUXED;case"application/x-mpegurl":case"application/vnd.apple.mpegurl":case"audio/x-mpegurl":case"application/dash+xml":case"video/vnd.mpeg.dash.mpd":case"application/vnd.ms-sstr+xml":return cml.cmcd.CmcdObjectType.MANIFEST;default:return}}getBufferLength_(e){let t=this.player_.getBufferedInfo()[e];if(!t.length)return NaN;let i=this.getCurrentTime_(),r=t.find(s=>s.start<=i&&s.end>=i);return r?(r.end-i)*1e3:NaN}getRemainingBufferLength_(e){let t=this.player_.getBufferedInfo()[e];if(!t.length)return 0;let i=this.getCurrentTime_(),r=t.find(s=>s.start<=i&&s.end>=i);return r?(r.end-i)*1e3:0}calculateRtp_(e,t){let i=this.player_.getPlaybackRate()||1,r=this.getRemainingBufferLength_(e.type)||500,s=e.bandwidth;if(!s)return NaN;let n=t.endTime-t.startTime,a=s*n/1e3,o=r/i/1e3;return a/o*this.config_.rtpSafetyFactor}getStreamFormat_(e){let t=K.AdvancedRequestType;switch(e){case t.MPD:return cml.cmcd.CmcdStreamingFormat.DASH;case t.MASTER_PLAYLIST:case t.MEDIA_PLAYLIST:return cml.cmcd.CmcdStreamingFormat.HLS}}getStreamType_(){return this.player_.isLive()?cml.cmcd.CmcdStreamType.LIVE:cml.cmcd.CmcdStreamType.VOD}getTopBandwidth_(e){let t=this.player_.getVariantTracks();if(!t.length)return NaN;let i=t[0];for(let s of t)s.type==="variant"&&s.bandwidth>i.bandwidth&&(i=s);let r=cml.cmcd.CmcdObjectType;switch(e){case r.VIDEO:return i.videoBandwidth||NaN;case r.AUDIO:return i.audioBandwidth||NaN;default:return i.bandwidth}}getDataForSegment_(e,t){let i=e.segment,r=0;i&&(r=i.endTime-i.startTime);let s={d:r*1e3,st:this.getStreamType_()};s.ot=this.getObjectType_(e);let n=cml.cmcd.CmcdObjectType,a=s.ot===n.VIDEO||s.ot===n.AUDIO||s.ot===n.MUXED||s.ot===n.TIMED_TEXT,o=e.stream;if(o){let c=this.player_.getPlaybackRate();if(a){let d=this.getBufferLength_(o.type);if(Number.isFinite(d)&&(s.bl=d),s.ot!==n.TIMED_TEXT){let u=this.getRemainingBufferLength_(o.type);c?s.dl=u/Math.abs(c):s.dl=u}}if(o.bandwidth&&(s.br=o.bandwidth/1e3),o.segmentIndex&&i){let d=c<0,u=o.segmentIndex.getIteratorForTime(i.endTime,!0,d);if(u){let f=u.next().value;if(f&&f!=i&&(t&&!ye.equal(i.getUris(),f.getUris())&&(s.nor=f.getUris()[0]),(f.startByte||f.endByte)&&(i.startByte!=f.startByte||i.endByte!=f.endByte))){let g=f.startByte+"-";f.endByte&&(g+=f.endByte),s.nrr=g}}let m=this.calculateRtp_(o,i);Number.isFinite(m)&&(s.rtp=m)}}if(a&&s.ot!==n.TIMED_TEXT){let c=this.getTopBandwidth_(s.ot)/1e3;Number.isFinite(c)&&(s.tb=c)}if(this.player_.isLive()){let c=this.player_.getLiveLatency();c&&(s.ltc=c)}return s.su=this.lastPlayerState_===null||this.lastPlayerState_===cml.cmcd.CmcdPlayerState.REBUFFERING,s}getCurrentTime_(){return this.video_?this.video_.currentTime:0}};l(Nr,"StreamingFormat",{DASH:"d",HLS:"h",SMOOTH:"s",OTHER:"o"}),l(Nr,"EventType",{BITRATE_CHANGE:"bc",PLAY_STATE:"ps",PLAYBACK_RATE:"pr",ERROR:"e",TIME_INTERVAL:"t",CONTENT_ID:"c",BACKGROUNDED_MODE:"b",MUTE:"m",UNMUTE:"um",PLAYER_EXPAND:"pe",PLAYER_COLLAPSE:"pc",RESPONSE_RECEIVED:"rr",AD_START:"as",AD_END:"ae",AD_BREAK_START:"abs",AD_BREAK_END:"abe",SKIP:"sk",CUSTOM_EVENT:"ce"}),l(Nr,"PlayerState",{STARTING:"s",PLAYING:"p",SEEKING:"k",REBUFFERING:"r",PAUSED:"a",WAITING:"w",ENDED:"e",FATAL_ERROR:"f",QUIT:"q",PRELOADING:"d"});/*! @license
474
+ */var Or=class{constructor(e,t){l(this,"player_");l(this,"config_");l(this,"video_");l(this,"reporter_");l(this,"lastPlayerState_");l(this,"sf_");l(this,"requestTimestampMap_");l(this,"eventManager_");l(this,"startTimeOfLoad_");this.player_=e,this.config_=t,this.video_=null,this.reporter_=null,this.lastPlayerState_=null,this.sf_=void 0,this.requestTimestampMap_=new Map,this.eventManager_=new ue,this.startTimeOfLoad_=0}setMediaElement(e){this.video_=e,this.maybeStartReporter_()}configure(e){let t=this.config_;if(this.config_=e,this.reporter_){let i=t&&t.enabled&&!e.enabled,r=t&&e.enabled&&(t.sessionId!==e.sessionId||t.contentId!==e.contentId||t.version!==e.version||t.useHeaders!==e.useHeaders||t.eventTargets!==e.eventTargets);(i||r)&&this.reset()}this.maybeStartReporter_()}reset(){this.reporter_&&(this.reporter_.stop(!0),this.reporter_=null),this.lastPlayerState_=null,this.sf_=void 0,this.requestTimestampMap_.clear(),this.startTimeOfLoad_=0,this.eventManager_.removeAll()}onLoad(){this.maybeStartReporter_()}setBuffering(e){this.setPlayerState_(e?cml.cmcd.CmcdPlayerState.REBUFFERING:cml.cmcd.CmcdPlayerState.PLAYING)}setLowLatency(e){}setStartTimeOfLoad(e){if(this.reporter_&&(this.startTimeOfLoad_=e,this.video_&&this.video_.autoplay)){let t=this.video_.play();t&&t.catch(()=>{this.startTimeOfLoad_=0})}}applyRequestData(e,t,i={}){if(!this.reporter_)return;let r=K.RequestType,s=cml.cmcd.CmcdObjectType;if(t.method==="HEAD"){this.applyToRequest_(t,{});return}switch(e){case r.MANIFEST:{if(i.type){let n=this.getStreamFormat_(i.type);n&&n!==this.sf_&&(this.sf_=n,this.reporter_.update({sf:n,st:this.getStreamType_()}))}this.applyToRequest_(t,{ot:s.MANIFEST,su:this.lastPlayerState_===null});break}case r.SEGMENT:{let n=this.getDataForSegment_(i,t.uris[0]);this.requestTimestampMap_.has(t)&&this.requestTimestampMap_.delete(t),this.requestTimestampMap_.set(t,Date.now()),this.applyToRequest_(t,n);break}case r.LICENSE:case r.SERVER_CERTIFICATE:case r.KEY:this.applyToRequest_(t,{ot:s.KEY});break;case r.TIMING:this.applyToRequest_(t,{ot:s.OTHER});break}}applyResponseData(e,t,i={}){if(!this.reporter_)return;let r=K.RequestType;if(e!==r.SEGMENT)return;let s=this.requestTimestampMap_.get(t.originalRequest);if(this.requestTimestampMap_.delete(t.originalRequest),!!this.responseModeEnabled_())try{let n=this.removeCmcdQueryFromUri_(t.originalUri||t.uri),a={url:n};t.status!=null&&(a.rc=t.status),t.originalRequest&&t.originalRequest.timeToFirstByte!=null&&(a.ttfb=t.originalRequest.timeToFirstByte),t.timeMs!=null&&(a.ttlb=t.timeMs),s!=null&&(a.ts=s),t.headers&&t.headers["CMSD-Static"]&&(a.cmsds=btoa(t.headers["CMSD-Static"])),t.headers&&t.headers["CMSD-Dynamic"]&&(a.cmsdd=btoa(t.headers["CMSD-Dynamic"])),this.reporter_.recordResponseReceived({request:{url:n},status:t.status||0},a)}catch(n){p.warnOnce("CMCD_RESPONSE_ERROR","Could not apply CMCD data to response.",n)}}applyTextData(e){this.reporter_&&this.applyToRequest_(e,{ot:cml.cmcd.CmcdObjectType.CAPTION,su:!0})}appendSrcData(e,t){if(!this.reporter_)return e;try{let i=this.buildExternalUriData_();return i.ot=this.getObjectTypeFromMimeType_(t),i.su=!0,cml.cmcd.appendCmcdQuery(e,i,this.encodeOptionsForUri_(e))}catch(i){return p.warnOnce("CMCD_SRC_ERROR","Could not generate src CMCD data.",i),e}}appendTextTrackData(e){if(!this.reporter_)return e;try{let t=this.buildExternalUriData_();return t.ot=cml.cmcd.CmcdObjectType.CAPTION,t.su=!0,cml.cmcd.appendCmcdQuery(e,t,this.encodeOptionsForUri_(e))}catch(t){return p.warnOnce("CMCD_TEXT_TRACK_ERROR","Could not generate text track CMCD data.",t),e}}maybeStartReporter_(){if(this.reporter_||!this.config_||!this.config_.enabled||!this.video_)return;let e=this.toReporterConfig_(this.config_);this.reporter_=new cml.cmcd.CmcdReporter(e,this.makeRequester_()),this.reporter_.start(),this.setupEventListeners_()}toReporterConfig_(e){e.sessionId||(e.sessionId=window.crypto.randomUUID());let t=e.includeKeys&&e.includeKeys.length?e.includeKeys:this.allKeysForVersion_(e.version),i={sid:e.sessionId,cid:e.contentId,transmissionMode:e.useHeaders?cml.cmcd.CMCD_HEADERS:cml.cmcd.CMCD_QUERY,enabledKeys:t,version:e.version===2?cml.cmcd.CMCD_V2:cml.cmcd.CMCD_V1},r=e.eventTargets;return r&&r.length&&(i.eventTargets=r.filter(s=>s.enabled!==!1&&s.url&&s.events&&s.events.length).map(s=>{let n=s.includeKeys&&s.includeKeys.length?s.includeKeys:this.allKeysForVersion_(s.version||e.version);return{url:s.url,events:s.events,interval:s.interval,batchSize:s.batchSize,enabledKeys:n,version:cml.cmcd.CMCD_V2}})),i}allKeysForVersion_(e){return e===2||e===cml.cmcd.CMCD_V2?Array.from(new Set([].concat(cml.cmcd.CMCD_REQUEST_KEYS,cml.cmcd.CMCD_RESPONSE_KEYS,cml.cmcd.CMCD_EVENT_KEYS))):[].concat(cml.cmcd.CMCD_V1_KEYS)}makeRequester_(){return async e=>{let t=K.RequestType,i=K.defaultRetryParameters(),r=e.url,s=K.makeRequest([r],i);s.method=e.method||"POST",s.headers=e.headers||{},s.body=q.toUTF8(e.body);try{let n=this.player_.getNetworkingEngine();return v.assert(n,"Must have net engine"),await n.request(t.CMCD,s).promise,{status:200}}catch(n){return{status:n&&n.status?n.status:0}}}}setPlayerState_(e){!this.reporter_||this.lastPlayerState_===e||(this.lastPlayerState_=e,this.reporter_.update({sta:e}))}applyToRequest_(e,t){try{let i={url:e.uris[0],headers:Object.assign({},e.headers||{}),customData:{}},r=this.reporter_.createRequestReport(i,t),s=r.headers||{},n=Object.keys(i.headers).length;if(Object.keys(s).length>n){e.headers||(e.headers={});for(let c of Object.keys(s))c in i.headers||(e.headers[c]=s[c])}let o=r.url;if(o&&o!==i.url)if(e.uris.length===1)e.uris=[o];else{let c=null;try{c=new URL(o).searchParams.get("CMCD")}catch(d){}if(c!=null){let d=c;e.uris=e.uris.map(u=>{if(u.includes("offline:"))return u;try{let m=new URL(u);return m.searchParams.set("CMCD",d),m.toString()}catch(m){return u}})}}}catch(i){p.warnOnce("CMCD_REQUEST_ERROR","Could not apply CMCD data to request.",i)}}responseModeEnabled_(){let e=this.config_.eventTargets;return e?e.some(t=>t.enabled!==!1&&t.events&&t.events.includes(cml.cmcd.CmcdEventType.RESPONSE_RECEIVED)):!1}buildExternalUriData_(){return{v:this.config_.version,sid:this.config_.sessionId,cid:this.config_.contentId,sf:this.sf_,mtp:this.player_.getBandwidthEstimate()/1e3}}encodeOptionsForUri_(e){let t={};if(e&&!e.includes("offline:"))try{t.baseUrl=new URL(e).origin}catch(i){}return this.config_.version!=null&&(t.version=this.config_.version),t.reportingMode=cml.cmcd.CMCD_REQUEST_MODE,t}setupEventListeners_(){let e=cml.cmcd.CmcdPlayerState,t=cml.cmcd.CmcdEventType;this.eventManager_.listen(this.video_,"pause",()=>{this.setPlayerState_(e.PAUSED)}),this.eventManager_.listen(this.video_,"playing",()=>{this.setPlayerState_(e.PLAYING),this.reporter_&&this.startTimeOfLoad_&&(this.reporter_.update({msd:Date.now()-this.startTimeOfLoad_}),this.startTimeOfLoad_=0)}),this.eventManager_.listen(this.video_,"seeking",()=>{this.setPlayerState_(e.SEEKING)}),this.eventManager_.listen(this.video_,"ended",()=>{this.setPlayerState_(e.ENDED)}),this.eventManager_.listen(this.video_,"volumechange",()=>{if(!this.reporter_||!this.video_)return;let r=this.video_.muted;this.reporter_.recordEvent(r?t.MUTE:t.UNMUTE)}),this.eventManager_.listen(this.player_,"buffering",r=>{let s=r.buffering;this.setPlayerState_(s?e.REBUFFERING:e.PLAYING)}),this.eventManager_.listen(this.player_,"adaptation",()=>{if(!this.reporter_||!this.player_)return;let s=this.player_.getVariantTracks().find(n=>n.active);s&&s.bandwidth&&this.reporter_.update({br:[s.bandwidth/1e3]})}),this.eventManager_.listen(this.player_,"error",()=>{this.setPlayerState_(e.FATAL_ERROR),this.reporter_&&this.reporter_.recordEvent(t.ERROR)}),this.eventManager_.listen(document,"fullscreenchange",()=>{if(!this.reporter_)return;let r=!!document.fullscreenElement;this.reporter_.recordEvent(r?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE)});let i=this.video_;(i.webkitPresentationMode||i.webkitSupportsFullscreen)&&this.eventManager_.listen(i,"webkitpresentationmodechanged",()=>{this.reporter_&&(i.webkitPresentationMode?this.reporter_.recordEvent(i.webkitPresentationMode!=="inline"?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE):i.webkitSupportsFullscreen&&this.reporter_.recordEvent(i.webkitDisplayingFullscreen?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE))}),this.eventManager_.listen(this.video_,"enterpictureinpicture",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_EXPAND)}),this.eventManager_.listen(this.video_,"leavepictureinpicture",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_COLLAPSE)}),"documentPictureInPicture"in window&&this.eventManager_.listen(window.documentPictureInPicture,"enter",r=>{if(!this.reporter_)return;this.reporter_.recordEvent(t.PLAYER_EXPAND);let n=r.window;this.eventManager_.listenOnce(n,"pagehide",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_COLLAPSE)})}),this.eventManager_.listen(document,"visibilitychange",()=>{if(!this.reporter_)return;let r=document.hidden;this.reporter_.update({bg:r})}),this.eventManager_.listen(this.player_,"complete",()=>{this.setPlayerState_(e.ENDED)})}removeCmcdQueryFromUri_(e){if(!e.includes("CMCD="))return e;try{let t=new URL(e);return t.searchParams.delete("CMCD"),t.toString()}catch(t){return p.error("Failed to parse URI for CMCD removal:",e,t),e}}getObjectType_(e){if(e.type===K.AdvancedRequestType.INIT_SEGMENT)return cml.cmcd.CmcdObjectType.INIT;let t=e.stream;if(!t)return;let i=t.type;if(i=="video")return t.codecs&&t.codecs.includes(",")?cml.cmcd.CmcdObjectType.MUXED:cml.cmcd.CmcdObjectType.VIDEO;if(i=="audio")return cml.cmcd.CmcdObjectType.AUDIO;if(i=="text")return t.mimeType==="application/mp4"?cml.cmcd.CmcdObjectType.TIMED_TEXT:cml.cmcd.CmcdObjectType.CAPTION}getObjectTypeFromMimeType_(e){switch(e.toLowerCase()){case"audio/mp4":case"audio/webm":case"audio/ogg":case"audio/mpeg":case"audio/aac":case"audio/flac":case"audio/wav":return cml.cmcd.CmcdObjectType.AUDIO;case"video/webm":case"video/mp4":case"video/mpeg":case"video/mp2t":return cml.cmcd.CmcdObjectType.MUXED;case"application/x-mpegurl":case"application/vnd.apple.mpegurl":case"audio/x-mpegurl":case"application/dash+xml":case"video/vnd.mpeg.dash.mpd":case"application/vnd.ms-sstr+xml":return cml.cmcd.CmcdObjectType.MANIFEST;default:return}}getBufferLength_(e){let t=this.player_.getBufferedInfo()[e];if(!t.length)return NaN;let i=this.getCurrentTime_(),r=t.find(s=>s.start<=i&&s.end>=i);return r?(r.end-i)*1e3:NaN}getRemainingBufferLength_(e){let t=this.player_.getBufferedInfo()[e];if(!t.length)return 0;let i=this.getCurrentTime_(),r=t.find(s=>s.start<=i&&s.end>=i);return r?(r.end-i)*1e3:0}calculateRtp_(e,t){let i=this.player_.getPlaybackRate()||1,r=this.getRemainingBufferLength_(e.type)||500,s=e.bandwidth;if(!s)return NaN;let n=t.endTime-t.startTime,a=s*n/1e3,o=r/i/1e3;return a/o*this.config_.rtpSafetyFactor}getStreamFormat_(e){let t=K.AdvancedRequestType;switch(e){case t.MPD:return cml.cmcd.CmcdStreamingFormat.DASH;case t.MASTER_PLAYLIST:case t.MEDIA_PLAYLIST:return cml.cmcd.CmcdStreamingFormat.HLS}}getStreamType_(){return this.player_.isLive()?cml.cmcd.CmcdStreamType.LIVE:cml.cmcd.CmcdStreamType.VOD}getTopBandwidth_(e){let t=this.player_.getVariantTracks();if(!t.length)return NaN;let i=t[0];for(let s of t)s.type==="variant"&&s.bandwidth>i.bandwidth&&(i=s);let r=cml.cmcd.CmcdObjectType;switch(e){case r.VIDEO:return i.videoBandwidth||NaN;case r.AUDIO:return i.audioBandwidth||NaN;default:return i.bandwidth}}getDataForSegment_(e,t){let i=e.segment,r=0;i&&(r=i.endTime-i.startTime);let s={d:r*1e3,st:this.getStreamType_()};s.ot=this.getObjectType_(e);let n=cml.cmcd.CmcdObjectType,a=s.ot===n.VIDEO||s.ot===n.AUDIO||s.ot===n.MUXED||s.ot===n.TIMED_TEXT,o=e.stream;if(o){let c=this.player_.getPlaybackRate();if(a){let d=this.getBufferLength_(o.type);if(Number.isFinite(d)&&(s.bl=d),s.ot!==n.TIMED_TEXT){let u=this.getRemainingBufferLength_(o.type);c?s.dl=u/Math.abs(c):s.dl=u}}if(o.bandwidth&&(s.br=o.bandwidth/1e3),o.segmentIndex&&i){let d=c<0,u=o.segmentIndex.getIteratorForTime(i.endTime,!0,d);if(u){let f=u.next().value;if(f&&f!=i&&(t&&!ye.equal(i.getUris(),f.getUris())&&(s.nor=f.getUris()[0]),(f.startByte||f.endByte)&&(i.startByte!=f.startByte||i.endByte!=f.endByte))){let g=f.startByte+"-";f.endByte&&(g+=f.endByte),s.nrr=g}}let m=this.calculateRtp_(o,i);Number.isFinite(m)&&(s.rtp=m)}}if(a&&s.ot!==n.TIMED_TEXT){let c=this.getTopBandwidth_(s.ot)/1e3;Number.isFinite(c)&&(s.tb=c)}if(this.player_.isLive()){let c=this.player_.getLiveLatency();c&&(s.ltc=c)}return s.su=this.lastPlayerState_===null||this.lastPlayerState_===cml.cmcd.CmcdPlayerState.REBUFFERING,s}getCurrentTime_(){return this.video_?this.video_.currentTime:0}};l(Or,"StreamingFormat",{DASH:"d",HLS:"h",SMOOTH:"s",OTHER:"o"}),l(Or,"EventType",{BITRATE_CHANGE:"bc",PLAY_STATE:"ps",PLAYBACK_RATE:"pr",ERROR:"e",TIME_INTERVAL:"t",CONTENT_ID:"c",BACKGROUNDED_MODE:"b",MUTE:"m",UNMUTE:"um",PLAYER_EXPAND:"pe",PLAYER_COLLAPSE:"pc",RESPONSE_RECEIVED:"rr",AD_START:"as",AD_END:"ae",AD_BREAK_START:"abs",AD_BREAK_END:"abe",SKIP:"sk",CUSTOM_EVENT:"ce"}),l(Or,"PlayerState",{STARTING:"s",PLAYING:"p",SEEKING:"k",REBUFFERING:"r",PAUSED:"a",WAITING:"w",ENDED:"e",FATAL_ERROR:"f",QUIT:"q",PRELOADING:"d"});/*! @license
475
475
  * Shaka Player
476
476
  * Copyright 2016 Google LLC
477
477
  * SPDX-License-Identifier: Apache-2.0
@@ -487,7 +487,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
487
487
  * Shaka Player
488
488
  * Copyright 2016 Google LLC
489
489
  * SPDX-License-Identifier: Apache-2.0
490
- */var Q=class Q extends Le{constructor(t,i=null,r){var n,a,o;super();l(this,"loadMode_");l(this,"video_");l(this,"videoContainer_");l(this,"isTextVisible_");l(this,"globalEventManager_");l(this,"attachEventManager_");l(this,"loadEventManager_");l(this,"trickPlayEventManager_");l(this,"adManagerEventManager_");l(this,"networkingEngine_");l(this,"drmEngine_");l(this,"mediaSourceEngine_");l(this,"playhead_");l(this,"operationId_");l(this,"mutex_");l(this,"playheadObservers_");l(this,"playRateController_");l(this,"bufferPoller_");l(this,"bufferObserver_");l(this,"regionTimeline_");l(this,"metadataRegionTimeline_");l(this,"emsgRegionTimeline_");l(this,"cmcdManager_");l(this,"cmsdManager_");l(this,"lcevcCanvas_");l(this,"lcevcDec_");l(this,"qualityObserver_");l(this,"streamingEngine_");l(this,"parser_");l(this,"parserFactory_");l(this,"manifest_");l(this,"assetUri_");l(this,"mimeType_");l(this,"startTime_");l(this,"fullyLoaded_");l(this,"abrManager_");l(this,"abrManagerFactory_");l(this,"nextExternalStreamId_");l(this,"externalSrcEqualsThumbnailsStreams_");l(this,"deferredCloseSegmentIndex_");l(this,"externalSrcEqualsChapterStreams_");l(this,"completionPercent_");l(this,"config_");l(this,"lowLatencyConfig_");l(this,"currentTargetLatency_");l(this,"rebufferingCount_");l(this,"targetLatencyReached_");l(this,"maxHwRes_");l(this,"manifestFilterer_");l(this,"createdPreloadManagers_");l(this,"stats_");l(this,"currentAdaptationSetCriteria_");l(this,"currentTextLanguage_");l(this,"currentTextRole_");l(this,"currentTextForced_");l(this,"cleanupOnUnload_");l(this,"adManager_");l(this,"queueManager_");l(this,"preloadDueAdManager_");l(this,"preloadDueAdManagerVideo_");l(this,"preloadDueAdManagerVideoEnded_");l(this,"externalSrcEqualsTextTracks_");l(this,"preloadDueAdManagerTimer_");l(this,"checkVariantsTimer_");l(this,"preloadNextUrl_");l(this,"textDisplayer_");l(this,"speechToText_");l(this,"pendingExtraTrackPromises_");l(this,"frameHandler_");l(this,"operationManager_");l(this,"playbackObjectUrl_");l(this,"lastTextFactory_");this.loadMode_=Q.LoadMode.NOT_LOADED,this.video_=null,this.videoContainer_=i,this.isTextVisible_=!1,this.globalEventManager_=new ue,this.attachEventManager_=new ue,this.loadEventManager_=new ue,this.trickPlayEventManager_=new ue,this.adManagerEventManager_=new ue,this.networkingEngine_=null,this.drmEngine_=null,this.mediaSourceEngine_=null,this.playhead_=null,this.operationId_=0,this.mutex_=new Zr,this.playheadObservers_=null,this.playRateController_=null,this.bufferPoller_=null,this.bufferObserver_=null,this.regionTimeline_=null,this.metadataRegionTimeline_=null,this.emsgRegionTimeline_=null,this.cmcdManager_=null,this.cmsdManager_=null,this.lcevcCanvas_=null,this.lcevcDec_=null,this.qualityObserver_=null,this.streamingEngine_=null,this.parser_=null,this.parserFactory_=null,this.manifest_=null,this.assetUri_=null,this.mimeType_=null,this.startTime_=null,this.fullyLoaded_=!1,this.abrManager_=null,this.abrManagerFactory_=null,this.nextExternalStreamId_=1e9,this.externalSrcEqualsThumbnailsStreams_=[],this.deferredCloseSegmentIndex_=new Map,this.externalSrcEqualsChapterStreams_=[],this.completionPercent_=-1,this.config_=this.defaultConfig_(),this.lowLatencyConfig_=st.createDefaultForLL(),this.currentTargetLatency_=null,this.rebufferingCount_=-1,this.targetLatencyReached_=null,this.lastTextFactory_,this.maxHwRes_={width:1/0,height:1/0},this.manifestFilterer_=new Rr(this.config_,this.maxHwRes_,null),this.createdPreloadManagers_=[],this.stats_=null,this.currentAdaptationSetCriteria_=this.config_.adaptationSetCriteriaFactory();let s={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem()};st.addDeprecatedConfigFields(s),this.currentAdaptationSetCriteria_.configure(s),this.currentTextLanguage_=((n=this.config_.preferredText[0])==null?void 0:n.language)||"",this.currentTextRole_=((a=this.config_.preferredText[0])==null?void 0:a.role)||"",this.currentTextForced_=((o=this.config_.preferredText[0])==null?void 0:o.forced)||!1,this.cleanupOnUnload_=[],r&&r(this),this.cmcdManager_=this.createCmcd_(),this.cmsdManager_=this.createCmsd_(),this.networkingEngine_=this.createNetworkingEngine(),this.adManager_=null,this.queueManager_=null,this.preloadDueAdManager_=null,this.preloadDueAdManagerVideo_=null,this.preloadDueAdManagerVideoEnded_=!1,this.externalSrcEqualsTextTracks_=[],this.preloadDueAdManagerTimer_=new ae(async()=>{this.preloadDueAdManager_&&(v.assert(this.preloadDueAdManagerVideo_,"Must have video"),await this.attach(this.preloadDueAdManagerVideo_,!0),await this.load(this.preloadDueAdManager_),this.preloadDueAdManagerVideoEnded_?this.preloadDueAdManagerVideo_.pause():this.preloadDueAdManagerVideo_.play(),this.preloadDueAdManager_=null,this.preloadDueAdManagerVideoEnded_=!1)}),Q.adManagerFactory_&&(this.adManager_=Q.adManagerFactory_(this),this.adManager_.configure(this.config_.ads),this.adManagerEventManager_.listen(this.adManager_,"ad-content-pause-requested",async c=>{if(this.preloadDueAdManagerTimer_.stop(),!this.preloadDueAdManager_){this.preloadDueAdManagerVideo_=this.video_,this.preloadDueAdManagerVideoEnded_=this.isEnded();let d=c.saveLivePosition||!1,u=!0;this.isLive()&&(u=d),this.preloadDueAdManager_=await this.detachAndSavePreload(!0,u)}}),this.adManagerEventManager_.listen(this.adManager_,"ad-content-resume-requested",c=>{let d=c.offset||0;this.preloadDueAdManager_&&this.preloadDueAdManager_.setOffsetToStartTime(d),this.preloadDueAdManagerTimer_.tickAfter(.1)}),this.adManagerEventManager_.listen(this.adManager_,"ad-content-attach-requested",async c=>{!this.video_&&this.preloadDueAdManagerVideo_&&(await this.attach(this.preloadDueAdManagerVideo_,!0),this.preloadDueAdManagerVideo_=null)})),Q.queueManagerFactory_&&(this.queueManager_=Q.queueManagerFactory_(this),this.queueManager_.configure(this.config_.queue)),this.globalEventManager_.listen(window,"online",()=>{this.restoreDisabledVariants_(),this.retryStreaming()}),this.checkVariantsTimer_=new ae(()=>this.checkVariants_()),this.preloadNextUrl_=null,this.textDisplayer_=null,this.speechToText_=null,this.pendingExtraTrackPromises_=new Set,this.frameHandler_=null,this.operationManager_=new gi,this.playbackObjectUrl_=null,t&&(p.alwaysWarn("Please migrate from initializing Player with a mediaElement; use the attach method instead."),this.attach(t,!0))}createLcevcDec_(t,i){this.lcevcDec_==null&&(this.lcevcDec_=new wr(this.video_,this.lcevcCanvas_,t,i),this.mediaSourceEngine_&&this.mediaSourceEngine_.updateLcevcDec(this.lcevcDec_))}closeLcevcDec_(){this.lcevcDec_!=null&&(this.lcevcDec_.hideCanvas(),this.lcevcDec_.release(),this.lcevcDec_=null)}setupLcevc_(t,i){i||t.lcevc.enabled?(this.closeLcevcDec_(),this.createLcevcDec_(t.lcevc,i)):this.closeLcevcDec_()}static makeEvent_(t,i){return new U(t,i)}async destroy(){if(this.loadMode_==Q.LoadMode.DESTROYED)return;this.closeLcevcDec_();let t=this.detach();this.loadMode_=Q.LoadMode.DESTROYED,await t,await this.destroyAllPreloads(),this.globalEventManager_&&(this.globalEventManager_.release(),this.globalEventManager_=null),this.attachEventManager_&&(this.attachEventManager_.release(),this.attachEventManager_=null),this.loadEventManager_&&(this.loadEventManager_.release(),this.loadEventManager_=null),this.trickPlayEventManager_&&(this.trickPlayEventManager_.release(),this.trickPlayEventManager_=null),this.adManagerEventManager_&&(this.adManagerEventManager_.release(),this.adManagerEventManager_=null),this.abrManagerFactory_=null,this.config_=null,this.stats_=null,this.videoContainer_=null,this.cmcdManager_=null,this.cmsdManager_=null,this.networkingEngine_&&(await this.networkingEngine_.destroy(),this.networkingEngine_=null),this.abrManager_&&(this.abrManager_.release(),this.abrManager_=null),this.queueManager_&&(this.queueManager_.destroy(),this.queueManager_=null),this.speechToText_&&(this.speechToText_.release(),this.speechToText_=null),this.frameHandler_&&(this.frameHandler_.release(),this.frameHandler_=null),super.release()}static registerSupportPlugin(t,i){Q.supportPlugins_.set(t,i)}static setAdManagerFactory(t){Q.adManagerFactory_=t}static setQueueManagerFactory(t){Q.queueManagerFactory_=t}static isBrowserSupported(){if(window.Promise||p.alwaysWarn("A Promise implementation or polyfill is required"),!(!!window.Promise&&!!window.Uint8Array&&!!Array.prototype.forEach)||(navigator.userAgent||"").includes("Trident/"))return!1;let r=j.getDevice();return r.supportsMediaSource()?!0:r.supportsMediaType("application/x-mpegurl")}static async probeSupport(t=!0){v.assert(Q.isBrowserSupported(),"Must have basic support");let i={};t&&(i=await Bi.probeSupport());let r=me.probeSupport(),s=dr.probeSupport(),n=j.getDevice();v.assert(n,"device must be non-null");let a=await n.detectMaxHardwareResolution(),o={manifest:r,media:s,drm:i,hardwareResolution:a};return Q.supportPlugins_.forEach((d,u)=>{o[u]=d()}),o}makeStateChangeEvent_(t){this.dispatchEvent(Q.makeEvent_(U.EventName.OnStateChange,new Map().set("state",t)))}async attach(t,i=!0){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();let r=this.video_&&this.video_==t;if(this.video_&&this.video_!=t&&await this.detach(),!await this.atomicOperationAcquireMutex_("attach"))try{if(!r){this.makeStateChangeEvent_("attach");let n=a=>this.onVideoError_(a);this.attachEventManager_.listen(t,"error",n),this.video_=t,this.cmcdManager_&&this.cmcdManager_.setMediaElement(t)}let s=j.getDevice();i&&s.supportsMediaSource()&&!this.mediaSourceEngine_&&await this.initializeMediaSourceEngineInner_()}catch(s){throw await this.detach(),s}finally{this.mutex_.release()}}attachCanvas(t){this.lcevcCanvas_=t}async detach(t=!1,i=!1){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();if(await this.unload(!1,t,i),!await this.atomicOperationAcquireMutex_("detach"))try{this.video_&&(this.attachEventManager_.removeAll(),this.video_=null),this.makeStateChangeEvent_("detach"),this.adManager_&&!t&&this.adManager_.release()}finally{this.mutex_.release()}}async atomicOperationAcquireMutex_(t){let i=++this.operationId_;return await this.mutex_.acquire(t),i!=this.operationId_?(this.mutex_.release(),!0):!1}async unload(t=!0,i=!1,r=!1){if(this.loadMode_!=Q.LoadMode.DESTROYED&&(this.loadMode_=Q.LoadMode.NOT_LOADED),await this.atomicOperationAcquireMutex_("unload"))return;try{this.fullyLoaded_=!1,this.makeStateChangeEvent_("unload"),this.closeLcevcDec_();let n=this.cleanupOnUnload_.map(o=>o());this.cleanupOnUnload_=[],await Promise.all(n);let a=new Map().set("isSwitchingContent",r);if(this.dispatchEvent(Q.makeEvent_(U.EventName.Unloading,a)),this.regionTimeline_&&(this.regionTimeline_.release(),this.regionTimeline_=null),this.metadataRegionTimeline_&&(this.metadataRegionTimeline_.release(),this.metadataRegionTimeline_=null),this.emsgRegionTimeline_&&(this.emsgRegionTimeline_.release(),this.emsgRegionTimeline_=null),this.video_&&(this.loadEventManager_.removeAll(),this.trickPlayEventManager_.removeAll()),this.checkVariantsTimer_.stop(),this.playheadObservers_&&(this.playheadObservers_.release(),this.playheadObservers_=null),this.bufferPoller_&&(this.bufferPoller_.stop(),this.bufferPoller_=null),this.parser_&&(await this.parser_.stop(),this.parser_=null,this.parserFactory_=null),this.abrManager_&&this.abrManager_.stop(),this.streamingEngine_&&(await this.streamingEngine_.destroy(),this.streamingEngine_=null),this.playRateController_&&(this.playRateController_.release(),this.playRateController_=null),this.playhead_&&(this.playhead_.release(),this.playhead_=null),de.isMediaKeysPolyfilled("webkit")&&this.drmEngine_&&(await this.drmEngine_.destroy(),this.drmEngine_=null),this.mediaSourceEngine_&&(await this.mediaSourceEngine_.destroy(),this.mediaSourceEngine_=null),this.adManager_&&!i&&this.adManager_.onAssetUnload(),this.preloadDueAdManager_&&!i&&(this.preloadDueAdManager_.destroy(),this.preloadDueAdManager_=null),i||this.preloadDueAdManagerTimer_.stop(),this.cmcdManager_&&this.cmcdManager_.reset(),this.cmsdManager_&&this.cmsdManager_.reset(),this.textDisplayer_&&(await this.textDisplayer_.destroy(),this.textDisplayer_=null),this.isTextVisible_=!1,this.speechToText_&&this.speechToText_.disable(),this.pendingExtraTrackPromises_.clear(),this.frameHandler_&&(this.frameHandler_.release(),this.frameHandler_=null),await this.operationManager_.destroy(),this.video_){for(let o of this.externalSrcEqualsTextTracks_)o.src.startsWith("blob:")&&URL.revokeObjectURL(o.src),o.remove();this.externalSrcEqualsTextTracks_=[],Ge.clearSourceFromVideo(this.video_)&&this.video_.load()}if(this.drmEngine_&&(await this.drmEngine_.destroy(),this.drmEngine_=null),this.preloadNextUrl_&&this.assetUri_!=this.preloadNextUrl_.getAssetUri()&&(this.preloadNextUrl_.isDestroyed()||this.preloadNextUrl_.destroy(),this.preloadNextUrl_=null),this.assetUri_=null,this.mimeType_=null,this.bufferObserver_=null,this.manifest_){for(let o of this.manifest_.variants)for(let c of[o.audio,o.video])c&&c.segmentIndex&&c.segmentIndex.release();for(let o of this.manifest_.textStreams)o.segmentIndex&&o.segmentIndex.release()}this.config_&&this.config_.streaming.clearDecodingCache&&(se.clearDecodingConfigCache(),de.clearMediaKeySystemAccessMap()),this.manifest_=null,this.stats_=new tr,this.lastTextFactory_=null,this.targetLatencyReached_=null,this.currentTargetLatency_=null,this.rebufferingCount_=-1,this.externalSrcEqualsThumbnailsStreams_=[];for(let o of this.deferredCloseSegmentIndex_.values())o.stop();this.deferredCloseSegmentIndex_.clear(),this.externalSrcEqualsChapterStreams_=[],this.completionPercent_=-1,this.networkingEngine_&&this.networkingEngine_.clearCommonAccessTokenMap(),this.playbackObjectUrl_&&(URL.revokeObjectURL(this.playbackObjectUrl_),this.playbackObjectUrl_=null),this.updateBufferState_()}finally{this.mutex_.release()}let s=j.getDevice();t&&s.supportsMediaSource()&&!this.mediaSourceEngine_&&this.video_&&await this.initializeMediaSourceEngineInner_()}updateStartTime(t){this.startTime_=t}async load(t,i=null,r){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();!this.video_&&this.preloadDueAdManagerVideo_&&(await this.attach(this.preloadDueAdManagerVideo_,!0),this.preloadDueAdManagerVideo_=null);let s=null,n="";if(r=r==null?void 0:r.toLowerCase(),t instanceof Ps){if(t.isDestroyed())throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.PRELOAD_DESTROYED);s=t,n=s.getAssetUri()||""}else n=t||"";if(await this.mutex_.acquire("load"),this.mutex_.release(),!this.video_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.NO_VIDEO_ELEMENT);this.assetUri_&&(this.assetUri_=n,await this.unload(!1,!1,!0));let a=++this.operationId_,o=async()=>{if(this.operationId_!=a)throw s&&await s.destroy(),this.createAbortLoadError_()},c=async(d,u)=>{try{await this.mutex_.acquire(u),await o(),await d(),await o(),s&&this.config_&&s.reconfigure(this.config_)}finally{this.mutex_.release()}};try{i==null&&s&&(i=s.getStartTime()),this.startTime_=i,this.fullyLoaded_=!1,this.dispatchEvent(Q.makeEvent_(U.EventName.Loading)),s?r=s.getMimeType():r||await c(async()=>{r=await this.guessMimeType_(n)},"guessMimeType_");let d=!!s;s?(s.setEventHandoffTarget(this),this.stats_=s.getStats()):(s=await this.preloadInner_(n,i,r,!0,this.config_),s?(s.markIsLoad(),s.setEventHandoffTarget(this),this.stats_=s.getStats(),s.start(),s.waitForFinish().catch(()=>{})):this.stats_=new tr);let u=!s,m=Date.now()/1e3;this.stats_=s?s.getStats():new tr,this.assetUri_=n,this.mimeType_=r||null,this.updateBufferState_();let f=()=>{let g=this.video_?this.video_.buffered:null;return{start:Je.bufferStart(g)||0,end:Je.bufferEnd(g)||0}};if(this.metadataRegionTimeline_=new zr(f),this.metadataRegionTimeline_.addEventListener("regionadd",g=>{let _=g.region;this.dispatchMetadataEvent_(_,U.EventName.MetadataAdded)}),u)await c(async()=>{v.assert(r,"We should know the mimeType by now!"),await this.initializeSrcEqualsDrmInner_(r)},"initializeSrcEqualsDrmInner_"),await c(async()=>{v.assert(r,"We should know the mimeType by now!"),await this.srcEqualsInner_(m,r)},"srcEqualsInner_");else{this.emsgRegionTimeline_=new zr(f),await c(async()=>{await s.waitForManifest(),this.parserFactory_=s.getParserFactory(),this.parser_=s.receiveParser(),this.manifest_=s.getManifest()},"waitForFinish"),this.mediaSourceEngine_||await c(async()=>{await this.initializeMediaSourceEngineInner_()},"initializeMediaSourceEngineInner_"),await c(async()=>{await s.waitForFinish()},"waitForFinish"),this.config_=s.getConfiguration(),this.manifestFilterer_=s.getManifestFilterer(),this.parser_&&this.parser_.setMediaElement&&this.video_&&this.parser_.setMediaElement(this.video_),this.regionTimeline_=s.receiveRegionTimeline(),this.qualityObserver_=s.getQualityObserver();let g=s.getCurrentAdaptationSetCriteria();if(g&&(this.currentAdaptationSetCriteria_=g),d&&this.video_&&this.video_.nodeName==="AUDIO"&&(this.makeManifestAudioOnly_(),this.configure("manifest.disableVideo",!0)),s.getDrmEngine()||await c(async()=>{await s.initializeDrm(this.video_)},"drmEngine_.init"),this.drmEngine_=s.receiveDrmEngine(),await c(async()=>{await this.drmEngine_.attach(this.video_)},"drmEngine_.attach"),this.currentAdaptationSetCriteria_){let b=this.currentAdaptationSetCriteria_.getConfiguration();b.keySystem=this.keySystem(),this.currentAdaptationSetCriteria_.configure(b)}let _=this.config_.abrFactory;(!this.abrManager_||this.abrManagerFactory_!=_)&&(this.abrManagerFactory_=_,this.abrManager_&&this.abrManager_.release(),this.abrManager_=_(),this.abrManager_.configure(this.config_.abr));let T=s.receiveSegmentPrefetchesById(),S=s.getPrefetchedVariant();await c(async()=>{await this.loadInner_(m,S,T)},"loadInner_"),s.stopQueuingLatePhaseQueuedOperations(),this.mimeType_&&j.getDevice().supportsAirPlay()&&N.isHlsType(this.mimeType_)&&this.mediaSourceEngine_.addSecondarySource(this.assetUri_,this.mimeType_)}this.dispatchEvent(Q.makeEvent_(U.EventName.Loaded))}catch(d){throw d&&d.code!=h.Code.LOAD_INTERRUPTED&&await this.unload(!1),d}finally{s&&await s.destroy(),this.preloadNextUrl_=null}}makeManifestAudioOnly_(){for(let t of this.manifest_.variants)t.video&&(t.video.closeSegmentIndex(),t.video=null),t.audio&&t.audio.bandwidth?t.bandwidth=t.audio.bandwidth:t.bandwidth=0;this.manifest_.variants=this.manifest_.variants.filter(t=>t.audio)}async unloadAndSavePreload(t=!0,i=!1,r=!1,s=!1){let n=await this.savePreload_(r);return await this.unload(t,i,s),n}async detachAndSavePreload(t=!1,i=!1,r=!1){let s=await this.savePreload_(i);return await this.detach(t,r),s}async savePreload_(t=!1){let i=null;if(this.manifest_&&this.parser_&&this.parserFactory_&&this.assetUri_&&this.config_){let r=this.video_.currentTime;t||(r=null),i=await this.makePreloadManager_(this.assetUri_,r,this.mimeType_,this.config_,!0,!1),this.createdPreloadManagers_.push(i),this.parser_&&this.parser_.setMediaElement&&this.parser_.setMediaElement(null);let s=this.streamingEngine_?this.streamingEngine_.getCurrentVariant():null;s&&i.setPrefetchVariant(s),i.attachManifest(this.manifest_,this.parser_,this.parserFactory_),i.attachAdaptationSetCriteria(this.currentAdaptationSetCriteria_),i.start(),this.manifest_=null,this.parser_=null,this.parserFactory_=null,this.abrManager_=null,this.abrManagerFactory_=null}return i}async preload(t,i=null,r,s,n=!1){v.assert(this.config_,"Config must not be null!"),r=r==null?void 0:r.toLowerCase();let a=this.defaultConfig_();st.mergeConfigObjects(a,s||this.config_,this.defaultConfig_());let o=await this.preloadInner_(t,i,r,!1,a);if(o)o.start();else{let c=new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.SRC_EQUALS_PRELOAD_NOT_SUPPORTED);if(n)throw c;this.onError_(c)}return o}async destroyAllPreloads(){let t=[];for(let i of this.createdPreloadManagers_)i.isDestroyed()||t.push(i.destroy());this.createdPreloadManagers_=[],await Promise.all(t)}async preloadInner_(t,i,r,s=!1,n){if(v.assert(this.networkingEngine_,"Should have a net engine!"),v.assert(this.config_,"Config must not be null!"),r||(r=await this.guessMimeType_(t)),this.shouldUseSrcEquals_(r))return null;let o=n||this.config_,c=!1;s&&this.video_&&this.video_.nodeName==="AUDIO"&&(c=!0);let d=this.makePreloadManager_(t,i,r||null,o,!s,c);return s?d=d.then(u=>(u.markIsLoad(),u)):d=d.then(u=>(this.createdPreloadManagers_.push(u),u)),d}async makePreloadManager_(t,i,r,s,n=!0,a=!1){v.assert(this.networkingEngine_,"Must have net engine");let o=null,c=Ne.cloneObject(s);a&&(c.manifest.disableVideo=!0);let d=()=>(v.assert(o,"Must have preload manager"),o.hasBeenAttached()&&o.isDestroyed()?null:o),u=()=>d()?d().getConfiguration():this.config_;if(this.maxHwRes_.width==1/0&&this.maxHwRes_.height==1/0&&!this.config_.ignoreHardwareResolution){let A=j.getDevice();v.assert(A,"device must be non-null");let w=await A.detectMaxHardwareResolution();this.maxHwRes_.width=w.width,this.maxHwRes_.height=w.height}let m=new Rr(c,this.maxHwRes_,null),f={networkingEngine:this.networkingEngine_,filter:async A=>{if(await m.filterManifest(A)){let M=Q.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),o.dispatchEvent(M)}},makeTextStreamsForClosedCaptions:A=>this.makeTextStreamsForClosedCaptions_(A),onTimelineRegionAdded:A=>{o.getRegionTimeline().addRegion(A)},onEvent:A=>o.dispatchEvent(A),onError:A=>o.onError(A),isLowLatencyMode:()=>u().streaming.lowLatencyMode,updateDuration:()=>{this.streamingEngine_&&o.hasBeenAttached()&&this.streamingEngine_.updateDuration()},newDrmInfo:A=>{let w=o.getDrmEngine(),M=w?w.getDrmInfo():null;M&&w.getMediaKeys()&&m.processDrmInfos(M.keySystem,A)},onManifestUpdated:()=>{let A=U.EventName.ManifestUpdated,w=new Map().set("isLive",this.isLive()).set("isInProgress",this.isInProgress());o.dispatchEvent(Q.makeEvent_(A,w)),o.addQueuedOperation(!1,()=>{this.adManager_&&this.adManager_.onManifestUpdated(this.isDynamic())})},getBandwidthEstimate:()=>this.abrManager_.getBandwidthEstimate(),onMetadata:(A,w,M,x)=>{let k=A;(A=="com.apple.hls.interstitial"||A=="com.apple.hls.overlay")&&(k="com.apple.quicktime.HLS");let L={type:k,startTime:w,endTime:M,values:x},V=new Promise(ee=>{o.addQueuedOperation(!1,async()=>{if(this.adManager_){if(this.video_)try{await this.adManager_.onHLSMetadata(L)}catch(oe){}ee()}})});for(let ee of x)ee.name!="ID"&&o.addQueuedOperation(!1,()=>{this.addMetadataToRegionTimeline_(w,M,k,ee)});return V},disableStream:A=>this.disableStream(A,this.config_.streaming.maxDisabledTime),addFont:(A,w)=>this.addFont(A,w),getStreamingRetryParameters:()=>this.config_.streaming.retryParameters,onSegmentReceived:(A,w)=>{o.addQueuedOperation(!1,()=>{var M;(M=this.abrManager_)==null||M.segmentDownloaded(A,w,!0)})}},g=new zr(()=>this.seekRange());g.addEventListener("regionadd",A=>{let w=A.region;this.onRegionEvent_(U.EventName.TimelineRegionAdded,w,o),o.addQueuedOperation(!1,()=>{this.adManager_&&this.adManager_.onDASHMetadata(w)})});let _=null;c.streaming.observeQualityChanges&&(_=new ur(()=>this.getBufferedInfo()),_.addEventListener("qualitychange",A=>{let w=A.quality,M=A.position;this.onMediaQualityChange_(w,M)}),_.addEventListener("audiotrackchange",A=>{let w=A.quality,M=A.position;this.onMediaQualityChange_(w,M,!0)}));let T=!0,S={netEngine:this.networkingEngine_,onError:A=>o.onError(A),onKeyStatus:A=>{o.addQueuedOperation(!0,()=>{this.drmEngine_&&this.onKeyStatus_(A)})},onExpirationUpdated:(A,w)=>{let M=Q.makeEvent_(U.EventName.ExpirationUpdated);o.dispatchEvent(M);let x=o.getParser();x&&x.onExpirationUpdated&&x.onExpirationUpdated(A,w)},onEvent:A=>{if(o.dispatchEvent(A),A.type==U.EventName.DrmSessionUpdate&&T){T=!1;let M=Date.now()/1e3-o.getStartTimeOfDRM();(this.stats_||o.getStats()).setDrmTime(M),this.lcevcDec_&&this.lcevcDec_.hideCanvas()}}},b=this.createNetworkingEngine(d);this.networkingEngine_.copyFiltersInto(b);let C={config:c,manifestPlayerInterface:f,regionTimeline:g,qualityObserver:_,createDrmEngine:()=>this.createDrmEngine(S),manifestFilterer:m,networkingEngine:b,allowPrefetch:n};return o=new Ps(t,r,i,C),o}async guessMimeType_(t){v.assert(this.networkingEngine_,"Should have a net engine!");let i=this.config_.manifest.retryParameters,r=await ct.getMimeType(t,this.networkingEngine_,i);return N.isHlsType(r)?j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(r="application/vnd.apple.mpegurl"):r==="video/quicktime"&&j.getDevice().getBrowserEngine()===ie.BrowserEngine.CHROMIUM&&(r="video/mp4"),r}shouldUseSrcEquals_(t){if(!j.getDevice().supportsMediaSource())return!0;if(t){let s=(this.video_||Ge.anyMediaElement()).canPlayType(t)!="";if(!s)return!1;let n=me.isSupported(t);return n?(v.assert(s&&n,"Both native and MSE playback should be possible!"),N.isHlsType(t)?j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(this.config_.drm.servers["com.apple.fps"]||this.config_.drm.servers["com.apple.fps.1_0"])?this.config_.streaming.useNativeHlsForFairPlay:this.config_.streaming.preferNativeHls:N.isDashType(t)?this.config_.streaming.preferNativeDash:!1):!0}return!1}createAndConfigureTextDisplayer_(t=!1){let i=this.config_.textDisplayFactory;if(this.lastTextFactory_!==i||t){let r=this.textDisplayer_;this.textDisplayer_=i(this),this.textDisplayer_.configure(this.config_.textDisplayer),r?(this.textDisplayer_.setTextVisibility(r.isTextVisible()),r.destroy().catch(()=>{})):this.textDisplayer_.setTextVisibility(this.isTextVisible_),this.mediaSourceEngine_&&this.mediaSourceEngine_.setTextDisplayer(this.textDisplayer_),this.lastTextFactory_=i,this.streamingEngine_&&this.streamingEngine_.reloadTextStream()}else this.textDisplayer_&&this.textDisplayer_.configure(this.config_.textDisplayer)}async initializeMediaSourceEngineInner_(){let t=j.getDevice();v.assert(t.supportsMediaSource(),"We should not be initializing media source on a platform that does not support media source."),v.assert(this.video_,"We should have a media element when initializing media source."),v.assert(this.mediaSourceEngine_==null,"We should not have a media source engine yet."),this.makeStateChangeEvent_("media-source"),this.config_.mediaSource.useSourceElements&&Ge.clearSourceFromVideo(this.video_),this.createAndConfigureTextDisplayer_(),v.assert(this.textDisplayer_,"Text displayer should be created already");let i=this.createMediaSourceEngine(this.video_,this.textDisplayer_,{getKeySystem:()=>this.keySystem(),onMetadata:(s,n,a)=>{this.processTimedMetadataMediaSrc_(s,n,a)},onEmsg:s=>{this.addEmsgToRegionTimeline_(s)},onEvent:s=>this.dispatchEvent(s),onManifestUpdate:()=>this.onManifestUpdate_(),getDrmInfo:()=>this.drmInfo()},this.lcevcDec_,this.config_.mediaSource),{segmentRelativeVttTiming:r}=this.config_.manifest;i.setSegmentRelativeVttTiming(r),await i.open(),this.mediaSourceEngine_=i}setupPlayRateController_(t){this.playRateController_=new dn({getRate:()=>t.playbackRate,getDefaultRate:()=>t.defaultPlaybackRate,setRate:i=>{t.playbackRate=i},movePlayhead:i=>{let r=t.currentTime;if(!Je.isBuffered(t.buffered,r)||t.readyState<=HTMLMediaElement.HAVE_CURRENT_DATA)return;let s=r+i,n=this.seekRange();if(s<n.start)r!==n.start&&(t.currentTime=n.start);else if(s>n.end)r!==n.end&&(t.currentTime=n.end);else{if(i<0){let o=Je.getBufferedInfo(t.buffered);for(let c=o.length-1;c>=0;c--)if(s>=o[c].start){s>o[c].end&&(s=Math.max(o[c].start,o[c].end-.5));break}}t.currentTime=s}},isPaused:()=>t.paused})}addBasicMediaListeners_(t,i){this.loadEventManager_.listenMulti(t,[Kt.PLAYING,Kt.PAUSE,Kt.ENDED],()=>{this.updateStateHistory_()}),this.loadEventManager_.listen(t,"ratechange",()=>{this.onRateChange_()});let s=j.getDevice().getRemote(t);s&&(this.loadEventManager_.listen(s,"connect",()=>{this.streamingEngine_&&s.state=="connected"&&this.onTextChanged_(),this.onTracksChanged_()}),this.loadEventManager_.listen(s,"connecting",()=>this.onTracksChanged_()),this.loadEventManager_.listen(s,"disconnect",async()=>{this.streamingEngine_&&s.state=="disconnected"&&(await this.streamingEngine_.resetMediaSource(),this.onTextChanged_()),this.onTracksChanged_()})),t.audioTracks&&this.loadEventManager_.listenMulti(t.audioTracks,["addtrack","removetrack","change"],()=>{this.onTracksChanged_()}),t.videoTracks&&this.loadEventManager_.listenMulti(t.videoTracks,["addtrack","removetrack","change"],()=>{this.onTracksChanged_()});let n=t;if((n.webkitPresentationMode||n.webkitSupportsFullscreen)&&this.loadEventManager_.listen(n,"webkitpresentationmodechanged",()=>{this.videoContainer_&&this.createAndConfigureTextDisplayer_(!0)}),t.textTracks){let a=()=>{this.loadMode_===Q.LoadMode.SRC_EQUALS&&this.textDisplayer_ instanceof mr&&this.onTextChanged_(),this.onTracksChanged_()};this.loadEventManager_.listen(t.textTracks,"addtrack",o=>{let c=o;if(c.track){let d=c.track;switch(v.assert(d instanceof TextTrack,"Wrong track type!"),d.kind){case"metadata":this.processTimedMetadata_(d);break;case"chapters":this.activateChaptersTrack_(d);break;default:a();break}}}),this.loadEventManager_.listenMulti(t.textTracks,["removetrack","change"],a)}t.preload!="none"&&(this.loadEventManager_.listenOnce(t,"loadedmetadata",()=>{let o=Date.now()/1e3-i;this.stats_.setLoadLatency(o)}),this.isAudioOnly()||(this.frameHandler_=new es(t),this.frameHandler_.start(()=>{this.frameHandler_.release(),this.frameHandler_=null;let c=Date.now()/1e3-i;this.stats_.setTimeToFirstFrame(c)},!0)||this.loadEventManager_.listenOnce(t,"loadeddata",()=>{let c=Date.now()/1e3-i;this.stats_.setTimeToFirstFrame(c)})))}async loadInner_(t,i,r){var g;v.assert(this.video_,"We should have a media element by now."),v.assert(this.manifest_,"The manifest should already be parsed."),v.assert(this.assetUri_,"We should have an asset uri by now."),v.assert(this.abrManager_,"We should have an abr manager by now."),this.makeStateChangeEvent_("load");let s=this.video_;this.setupPlayRateController_(s),this.addBasicMediaListeners_(s,t),"onchange"in window.screen&&this.loadEventManager_.listen(window.screen,"change",()=>{if(this.currentAdaptationSetCriteria_.getConfiguration){let _=this.currentAdaptationSetCriteria_.getConfiguration();_.preferredVideo.some(S=>S.hdrLevel=="AUTO")?this.updateAbrManagerVariants_():this.config_.preferredVideo.some(b=>b.hdrLevel=="AUTO")&&this.config_.abr.enabled&&(_.preferredVideo=this.config_.preferredVideo,st.addDeprecatedConfigFields(_),this.currentAdaptationSetCriteria_.configure(_),this.updateAbrManagerVariants_())}});let n=!1;for(let _ of this.manifest_.variants){let T=_.video&&_.video.dependencyStream;T&&(n=wr.isStreamSupported(T))}this.setupLcevc_(this.config_,n),this.currentTextLanguage_=this.config_.preferredText[0]&&this.config_.preferredText[0].language||"",this.currentTextRole_=this.config_.preferredText[0]&&this.config_.preferredText[0].role||"",this.currentTextForced_=((g=this.config_.preferredText[0])==null?void 0:g.forced)||!1,Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.abrManager_.init((_,T,S)=>this.switch_(_,T,S),(_,T)=>{var E;let S=(E=this.streamingEngine_)==null?void 0:E.getCurrentVariant(),b=S&&S[_];b&&this.disableStream(b,T)}),this.abrManager_.setMediaElement(s),this.abrManager_.setCmsdManager(this.cmsdManager_),this.streamingEngine_=this.createStreamingEngine(),this.streamingEngine_.configure(this.config_.streaming),this.loadMode_=Q.LoadMode.MEDIA_SOURCE,this.dispatchEvent(Q.makeEvent_(U.EventName.Streaming));let a=i,o,c;do{if(c=this.streamingEngine_.getCurrentVariant(),!c){let T=this.chooseVariant_(!0);i||(a=T),v.assert(a,"Must choose an initial variant!")}let _=[];o=c||a;for(let T of[o.video,o.audio])T&&!T.segmentIndex&&(_.push(T.createSegmentIndex()),T.dependencyStream&&_.push(T.dependencyStream.createSegmentIndex()));_.length>0&&await Promise.all(_)}while(!o||o.disabledUntilTime!=0);this.updateAbrManagerVariants_(),this.parser_&&this.parser_.onInitialVariantChosen&&this.parser_.onInitialVariantChosen(o),this.manifest_.isLowLatency&&(this.config_.streaming.lowLatencyMode?this.configure(this.lowLatencyConfig_):p.alwaysWarn("Low-latency live stream detected, but low-latency streaming mode is not enabled in Shaka Player. Set streaming.lowLatencyMode configuration to true, and see https://bit.ly/3clctcj for details.")),this.cmcdManager_&&(this.cmcdManager_.setLowLatency(this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode),this.cmcdManager_.setStartTimeOfLoad(t*1e3)),Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.streamingEngine_.applyPlayRange(this.config_.playRangeStart,this.config_.playRangeEnd),await this.waitForPendingExtraTrackPromises_(),this.fullyLoaded_=!0,this.dispatchEvent(Q.makeEvent_(U.EventName.CanUpdateStartTime));let d=_=>{this.playhead_=this.createPlayhead(_),this.playheadObservers_=this.createPlayheadObserversForMSE_(_),this.startBufferManagement_(s,!1)};if(!this.config_.streaming.startAtSegmentBoundary){let _=this.startTime_;_==null&&this.manifest_.startTime&&(_=this.manifest_.startTime),d(_)}if(!c){if(v.assert(a,"Must have chosen an initial variant!"),this.config_.streaming.startAtSegmentBoundary){let _=this.manifest_.presentationTimeline,T;if(this.startTime_ instanceof Date){let C=_.getInitialProgramDateTime()||_.getPresentationStartTime();v.assert(C!=null,"Presentation start time should not be null!");let A=this.startTime_.getTime()/1e3-C;A!=null&&(T=A)}T==null&&(T=typeof this.startTime_=="number"?this.startTime_:this.isLive()?1/0:this.video_.currentTime),this.startTime_==null&&this.manifest_.startTime&&(T=this.manifest_.startTime);let S=_.getSeekRangeStart(),b=_.getSeekRangeEnd();T<S?T=S:T>b&&(T=b);let E=await this.adjustStartTime_(a,T);d(E)}this.switchVariant_(a,!0,!1,0)}if(this.playhead_.ready(),!this.getTextTracks().find(_=>_.active)){v.assert(a,"Must have chosen an initial variant!");let _=this.chooseTextStream_(a);_&&(this.addTextStreamToSwitchHistory_(_,!0),this.setInitialTextState_(_)),_&&this.isTextVisible_&&(this.streamingEngine_.switchTextStream(_),this.setTextDisplayerLanguage_())}await this.streamingEngine_.start(r),this.config_.abr.enabled&&(this.abrManager_.enable(),this.onAbrStatusChanged_()),this.onTracksChanged_();let m=this.manifest_.variants.some(_=>_.primary);!this.config_.preferredAudio.length&&!m&&p.warning("No preferred audio language set. We have chosen an arbitrary language initially");let f=this.isDynamic();if(f&&(this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled||this.manifest_.serviceDescription||this.config_.streaming.liveSync.panicMode)||this.config_.streaming.vodDynamicPlaybackRate){let _=()=>this.onTimeUpdate_();this.loadEventManager_.listen(s,"timeupdate",_)}if(!f){let _=()=>this.onVideoProgress_();if(this.loadEventManager_.listen(s,"timeupdate",_),this.onVideoProgress_(),this.manifest_.nextUrl){if(this.config_.streaming.preloadNextUrlWindow>0){let T=async()=>{let S=this.seekRange().end-this.video_.currentTime;isNaN(S)||S<=this.config_.streaming.preloadNextUrlWindow&&(this.loadEventManager_.unlisten(s,"timeupdate",T),v.assert(this.manifest_.nextUrl,"this.manifest_.nextUrl should be valid."),this.preloadNextUrl_=await this.preload(this.manifest_.nextUrl))};this.loadEventManager_.listen(s,"timeupdate",T)}this.loadEventManager_.listen(s,"ended",()=>{this.load(this.preloadNextUrl_||this.manifest_.nextUrl)})}}this.adManager_&&this.adManager_.onManifestUpdated(f)}async initializeSrcEqualsDrmInner_(t){v.assert(this.networkingEngine_,"|onInitializeSrcEqualsDrm_| should never be called after |destroy|"),v.assert(this.config_,"|onInitializeSrcEqualsDrm_| should never be called after |destroy|");let i=Date.now()/1e3,r=!0;this.drmEngine_=this.createDrmEngine({netEngine:this.networkingEngine_,onError:n=>{this.onError_(n)},onKeyStatus:n=>{},onExpirationUpdated:(n,a)=>{let o=Q.makeEvent_(U.EventName.ExpirationUpdated);this.dispatchEvent(o)},onEvent:n=>{if(this.dispatchEvent(n),n.type==U.EventName.DrmSessionUpdate&&r){r=!1;let o=Date.now()/1e3-i;this.stats_.setDrmTime(o)}}}),this.drmEngine_.configure(this.config_.drm);let s=se.createEmptyVariant([t]);this.drmEngine_.setSrcEquals(!0),await this.drmEngine_.initForPlayback([s],[]),await this.drmEngine_.attach(this.video_)}async srcEqualsInner_(t,i){this.makeStateChangeEvent_("src-equals"),v.assert(this.video_,"We should have a media element when loading."),v.assert(this.assetUri_,"We should have a valid uri when loading.");let r=this.video_;this.playhead_=new ln(r);let s=!1;if(this.cleanupOnUnload_.push(()=>{s=!0}),this.dispatchEvent(Q.makeEvent_(U.EventName.CanUpdateStartTime)),this.startTime_!=null&&this.playhead_.setStartTime(this.startTime_),this.playheadObservers_=this.createPlayheadObserversForSrcEquals_(this.startTime_||0),this.setupPlayRateController_(r),this.startBufferManagement_(r,!0),r.textTracks){this.createAndConfigureTextDisplayer_();let m=T=>{if(!(this.textDisplayer_ instanceof mr)){let S=this.getFilteredTextTracks_().find(b=>b.mode!=="disabled");S&&(S.mode=T?"showing":"hidden")}};this.loadEventManager_.listen(r,"enterpictureinpicture",()=>m(!0)),this.loadEventManager_.listen(r,"leavepictureinpicture",()=>m(!1));let g=j.getDevice().getRemote(r);g?this.loadEventManager_.listenMulti(g,["connect","connecting","disconnect"],()=>{m(!1)}):"webkitCurrentPlaybackTargetIsWireless"in r&&this.loadEventManager_.listen(r,"webkitcurrentplaybacktargetiswirelesschanged",()=>m(!1));let _=r;(_.webkitPresentationMode||_.webkitSupportsFullscreen)&&this.loadEventManager_.listen(_,"webkitpresentationmodechanged",()=>{_.webkitPresentationMode?m(_.webkitPresentationMode!=="inline"):_.webkitSupportsFullscreen&&m(_.webkitDisplayingFullscreen)})}this.addBasicMediaListeners_(r,t);let n=this.cmcdManager_.appendSrcData(this.assetUri_,i),a;if(this.mimeType_&&this.config_.streaming.processSrcEqualMetadata&&kt.supports(this.mimeType_)){let m=!1,f=K.RequestType.MANIFEST,g=this.config_.streaming.retryParameters,_=K.makeRequest([n],g),T=this.networkingEngine_.request(f,_);this.operationManager_.manage(T);let S=b=>{if(b.request===_){let E=b.headers;E["content-length"]&&!E["icy-br"]&&!E["icy-description"]&&!E["icy-genre"]&&!E["icy-name"]&&!E["icy-url"]||(m=!0,T.abort())}};this.addEventListener(U.EventName.DownloadHeadersReceived,S);try{let b=await T.promise;a=D.toUint8(b.data);let E=new Blob([b.data],{type:this.mimeType_});n=URL.createObjectURL(E),this.playbackObjectUrl_=n}catch(b){if(!m)throw b}finally{this.removeEventListener(U.EventName.DownloadHeadersReceived,S)}}!n.includes("#t=")&&(this.config_.playRangeStart>0||isFinite(this.config_.playRangeEnd))&&(n+="#t=",this.config_.playRangeStart>0&&(n+=this.config_.playRangeStart),isFinite(this.config_.playRangeEnd)&&(n+=","+this.config_.playRangeEnd)),this.mediaSourceEngine_&&(await this.mediaSourceEngine_.destroy(),this.mediaSourceEngine_=null),Ge.clearSourceFromVideo(r),r.src=n;let o=j.getDevice();o.getDeviceType()==ie.DeviceType.TV&&r.load(),r.preload!="none"&&!r.autoplay&&N.isHlsType(i)&&o.getBrowserEngine()===ie.BrowserEngine.WEBKIT&&r.load(),this.loadMode_=Q.LoadMode.SRC_EQUALS,this.dispatchEvent(Q.makeEvent_(U.EventName.Streaming));let c=()=>new Promise(m=>{let g=new ae(m);this.loadEventManager_.listen(r.textTracks,"change",()=>g.tickAfter(.5)),g.tickAfter(.5)}),d=Promise.withResolvers();ui.waitForReadyState(r,HTMLMediaElement.HAVE_METADATA,this.loadEventManager_,async()=>{this.playhead_.ready(),!this.mimeType_||!N.isHlsType(this.mimeType_)||await c(),d.resolve()}),ui.waitForReadyState(r,HTMLMediaElement.HAVE_CURRENT_DATA,this.loadEventManager_,async()=>{if(await c(),s)return;this.setupPreferredAudioOnSrc_();let m=this.getFilteredTextTracks_();if(m.some(f=>f.mode==="showing")&&(this.isTextVisible_=!0,this.textDisplayer_.setTextVisibility(!0)),!(this.textDisplayer_ instanceof mr)){let f=!1;for(let g of m)g.mode!=="disabled"&&(f?(g.mode="disabled",p.alwaysWarn("Found more than one enabled text track, disabling it",g)):(this.enableNativeTrack_(g),f=!0))}this.setupPreferredTextOnSrc_()}),r.error?d.reject(this.videoErrorToShakaError_()):r.preload=="none"&&(p.alwaysWarn('With <video preload="none">, the browser will not load anything until play() is called. We are unable to measure load latency in a meaningful way, and we cannot provide track info yet. Please do not use preload="none" with Shaka Player.'),d.resolve()),this.loadEventManager_.listenOnce(r,"error",()=>{d.reject(this.videoErrorToShakaError_())}),await it.promiseWithTimeout(this.config_.streaming.loadTimeout,d.promise);let u=this.isDynamic();if(u&&(this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled||this.config_.streaming.liveSync.panicMode)||this.config_.streaming.vodDynamicPlaybackRate){let m=()=>this.onTimeUpdate_();this.loadEventManager_.listen(r,"timeupdate",m)}if(!u){let m=()=>this.onVideoProgress_();this.loadEventManager_.listen(r,"timeupdate",m),this.onVideoProgress_()}if(this.adManager_&&(this.adManager_.onManifestUpdated(u),u)){let m=this.seekRange().end;this.loadEventManager_.listen(r,"progress",()=>{let f=this.seekRange().end;m!=f&&(this.adManager_.onManifestUpdated(this.isDynamic()),m=f)})}if(this.mimeType_&&a){let m=kt.getMetadataFrames(a,this.mimeType_);if(m.length){let g=this.video_.duration,_="org.id3";for(let T of m)this.addMetadataToRegionTimeline_(0,g,_,T)}}await this.waitForPendingExtraTrackPromises_(),this.fullyLoaded_=!0}setupPreferredAudioOnSrc_(){let t=this.config_.preferredAudio;if(t.length&&this.video_&&this.video_.audioTracks){let i=this.getVariantTracks();for(let r of t){if(!r.language)continue;let s=se.filterStreamsByLanguageAndRole(i,r.language,r.role,!1)[0];if(s){this.selectVariantTrack(s);return}}}}setupPreferredTextOnSrc_(){let t=this.getTextTracks();if(t.some(r=>r.active))return;let i=this.config_.preferredText;for(let r of i){if(!r.language)continue;let s=se.filterStreamsByLanguageAndRole(t,r.language,r.role,r.forced);if(s.length){this.selectTextTrack(s[0]);return}}if(this.video_&&this.video_.audioTracks&&this.config_.accessibility.handleForcedSubtitlesAutomatically){let s=Array.from(this.video_.audioTracks).find(n=>n.enabled);if(s){let n=se.filterStreamsByLanguageAndRole(t,s.language,"",!0);if(n.length){this.selectTextTrack(n[0]);return}}}this.selectTextTrack(null)}processTimedMetadata_(t){if(t.kind!="metadata")return;t.mode="hidden";let i=()=>{if(t.cues){let s=[];for(let n of t.cues)if(n.startTime!=null&&"type"in n){let a=s.find(o=>o.startTime==n.startTime&&o.endTime==n.endTime);a||(a={type:n.type,startTime:n.startTime,endTime:n.endTime,values:[]},s.push(a)),n.value&&n.value.key=="X-AD-CREATIVE-SIGNALING"&&(a.type="urn:svta:advertising-wg:ad-creative-signaling"),a.values.push(n.value)}for(let n of s)if(this.adManager_){if(n.values.some(o=>o.key=="X-ASSET-URI"||o.key=="X-ASSET-LIST")){let o=n.startTime==0&&!this.isDynamic();n.values.push({key:"CUE",description:"",data:o?"ONCE,PRE":"ONCE",mimeType:null,pictureType:null})}this.adManager_.onHLSMetadata(n)}}};this.loadEventManager_.listen(t,"cuechange",s=>{if(t.activeCues)for(let n of t.activeCues)this.addMetadataToRegionTimeline_(n.startTime,n.endTime,n.type,n.value),this.adManager_&&this.adManager_.onCueMetadataChange(n.value);i()}),i();let r=new ae(()=>{let s=this.getMetadataTracks_();for(let n of s)n.mode="hidden"}).tickNow().tickAfter(.5);this.cleanupOnUnload_.push(()=>{r.stop()})}processTimedMetadataMediaSrc_(t,i,r){for(let s of t)if(s.data&&typeof s.cueTime=="number"&&s.frames){let n=s.cueTime+i,a=r;a&&n>a&&(a=n);let o="org.id3";for(let c of s.frames){let d=c;this.addMetadataToRegionTimeline_(n,a,o,d)}this.adManager_&&this.adManager_.onHlsTimedMetadata(s,n)}}dispatchMetadataEvent_(t,i){let r=new Map().set("startTime",t.startTime).set("endTime",t.endTime).set("metadataType",t.schemeIdUri).set("payload",t.payload);this.dispatchEvent(Q.makeEvent_(i,r))}addMetadataToRegionTimeline_(t,i,r,s){if(!this.metadataRegionTimeline_)return;v.assert(!i||t<=i,"Metadata start time should be less or equal to the end time!");let n={schemeIdUri:r,startTime:t,endTime:i||1/0,id:"",payload:s};n.id=JSON.stringify(n),this.metadataRegionTimeline_.addRegion(n)}dispatchEmsgEvent_(t){let i=U.EventName.Emsg,r=t.emsg,s=new Map().set("detail",r);this.dispatchEvent(Q.makeEvent_(i,s))}addEmsgToRegionTimeline_(t){if(!this.emsgRegionTimeline_)return;let i={schemeIdUri:t.schemeIdUri,startTime:t.startTime,endTime:t.endTime,id:String(t.id),emsg:t};this.emsgRegionTimeline_.addRegion(i)}activateChaptersTrack_(t){if(!t||t.kind!="chapters")return;t.mode="hidden";let i=new ae(()=>{t.mode="hidden"}).tickNow().tickAfter(.5);this.cleanupOnUnload_.push(()=>{i.stop()})}releaseAllMutexes(){this.mutex_.releaseAll()}createDrmEngine(t){return new Bi(t)}createNetworkingEngine(t){t||(t=()=>null);let i=()=>t()?t().getParser():this.parser_,r=_=>{t()?t().addQueuedOperation(!0,_):_()},s=_=>{t()?t().dispatchEvent(_):this.dispatchEvent(_)},n=()=>t()?t().getStats():this.stats_,a=(_,T,S,b,E)=>{r(()=>{this.abrManager_&&this.abrManager_.segmentDownloaded(_,T,S,b,E)})},o=(_,T,S)=>{let b=U.EventName.DownloadHeadersReceived,E=new Map().set("headers",_).set("request",T).set("requestType",S);s(Q.makeEvent_(b,E)),r(()=>{this.cmsdManager_&&this.cmsdManager_.processHeaders(_)})},c=(_,T,S,b)=>{let E=U.EventName.DownloadCompleted,C=new Map().set("requestType",_).set("request",T).set("context",S).set("response",b);s(Q.makeEvent_(E,C))},d=(_,T,S,b,E,C)=>{let A=U.EventName.DownloadFailed,w=new Map().set("requestType",_).set("request",T).set("context",S).set("error",b).set("httpResponseCode",E).set("aborted",C);s(Q.makeEvent_(A,w))},u=(_,T,S)=>{r(()=>{this.cmcdManager_&&this.cmcdManager_.applyRequestData(_,T,S)})},m=(_,T,S,b)=>{let E=i();E&&E.banLocation&&E.banLocation(b)},f=(_,T,S)=>{if(T.data){let b=T.data.byteLength,E=n();E&&(E.addBytesDownloaded(b),_===K.RequestType.MANIFEST&&E.setManifestSize(b)),this.cmcdManager_.applyResponseData(_,T,S)}},g=new K(a,o,c,d,u,m,f);return g.configure(this.config_.networking),g}createPlayhead(t){return v.assert(this.manifest_,"Must have manifest"),v.assert(this.video_,"Must have video"),new cn(this.video_,this.manifest_,this.config_.streaming,t,()=>this.onSeek_(),i=>this.dispatchEvent(i),()=>this.getPlaybackRate())}createPlayheadObserversForMSE_(t){v.assert(this.manifest_,"Must have manifest"),v.assert(this.regionTimeline_,"Must have region timeline"),v.assert(this.metadataRegionTimeline_,"Must have metadata region timeline"),v.assert(this.emsgRegionTimeline_,"Must have emsg region timeline"),v.assert(this.video_,"Must have video element");let i=this.isDynamic()||typeof t=="number"&&t>0,r=new Ur(this.regionTimeline_,i);r.addEventListener("enter",c=>{let d=c.region;this.onRegionEvent_(U.EventName.TimelineRegionEnter,d),this.sendEventStreamCallback_(d)}),r.addEventListener("exit",c=>{let d=c.region;this.onRegionEvent_(U.EventName.TimelineRegionExit,d)}),r.addEventListener("skip",c=>{let d=c.region;c.seeking||(this.onRegionEvent_(U.EventName.TimelineRegionEnter,d),this.onRegionEvent_(U.EventName.TimelineRegionExit,d))});let s=new Ur(this.metadataRegionTimeline_,i);s.addEventListener("enter",c=>{let d=c.region;this.dispatchMetadataEvent_(d,U.EventName.Metadata)});let n=new Ur(this.emsgRegionTimeline_,i);n.addEventListener("enter",c=>{let d=c.region;this.dispatchEmsgEvent_(d)});let a=new _n(this.manifest_.presentationTimeline);a.addEventListener("change",c=>{this.dispatchEvent(Q.makeEvent_(U.EventName.TimelineChanged,new Map([["programDateTime",c.programDateTime],["timestamp",c.timestamp]])))});let o=new xs(this.video_);return o.manage(r),o.manage(s),o.manage(n),o.manage(a),this.qualityObserver_&&o.manage(this.qualityObserver_),o}createPlayheadObserversForSrcEquals_(t){v.assert(this.metadataRegionTimeline_,"Must have metadata region timeline"),v.assert(this.video_,"Must have video element");let i=t instanceof Date||t>0,r=new Ur(this.metadataRegionTimeline_,i);r.addEventListener("enter",n=>{let a=n.region;this.dispatchMetadataEvent_(a,U.EventName.Metadata)});let s=new xs(this.video_);return s.manage(r),s}startBufferManagement_(t,i){let r=Kt;v.assert(!this.bufferObserver_,"No buffering observer should exist before initialization."),v.assert(!this.bufferPoller_,"No buffer timer should exist before initialization."),this.bufferObserver_=new Mr(1,2),this.bufferObserver_.setState(Mr.State.STARVING),this.updateBufferingSettings_(),this.updateBufferState_(),this.bufferPoller_=new ae(()=>{this.pollBufferState_()}),this.config_.streaming.rebufferingGoal&&this.bufferPoller_.tickEvery(.25),this.loadEventManager_.listen(t,r.WAITING,s=>this.pollBufferState_(r.WAITING)),this.loadEventManager_.listen(t,r.CAN_PLAY_THROUGH,s=>this.pollBufferState_(r.CAN_PLAY_THROUGH)),this.loadEventManager_.listen(t,r.PLAYING,s=>this.pollBufferState_(r.PLAYING)),this.loadEventManager_.listen(t,r.SEEKED,s=>this.pollBufferState_(r.SEEKED)),this.loadEventManager_.listen(t,r.TIME_UPDATE,s=>this.pollBufferState_(r.TIME_UPDATE)),i&&(this.loadEventManager_.listen(t,r.PROGRESS,s=>this.pollBufferState_(r.PROGRESS)),this.loadEventManager_.listen(t,r.STALLED,s=>this.pollBufferState_(r.STALLED)))}updateBufferingSettings_(){let t=this.config_.streaming.rebufferingGoal,i=t,r=Math.min(Q.TYPICAL_BUFFERING_THRESHOLD_,t/2);this.bufferObserver_.setThresholds(i,r)}pollBufferState_(t){if(v.assert(this.video_,"Need a media element to update the buffering observer"),v.assert(this.bufferObserver_,"Need a buffering observer to update"),!this.config_.streaming.rebufferingGoal){t&&this.bufferObserver_.reportEvent(t,this.video_.currentTime)&&this.updateBufferState_();return}let i=this.mediaSourceEngine_?this.mediaSourceEngine_.ended():!1,r=this.isEnded()||i||this.playhead_.isBufferedToEnd(),s=this.getPlaybackRate()<0?Je.bufferedBehindOf(this.video_.buffered,this.video_.currentTime):Je.bufferedAheadOf(this.video_.buffered,this.video_.currentTime);this.bufferObserver_.update(s,r)&&this.updateBufferState_()}createMediaSourceEngine(t,i,r,s,n){return new dr(t,i,r,n,s)}createCmcd_(){return new Nr(this,this.config_.cmcd)}createCmsd_(){return new Tn(this.config_.cmsd)}createStreamingEngine(){v.assert(this.abrManager_&&this.mediaSourceEngine_&&this.manifest_&&this.video_,"Must not be destroyed");let t={getPresentationTime:()=>this.playhead_?this.playhead_.getTime():0,getBandwidthEstimate:()=>this.abrManager_.getBandwidthEstimate(),getPlaybackRate:()=>this.getPlaybackRate(),video:this.video_,mediaSourceEngine:this.mediaSourceEngine_,netEngine:this.networkingEngine_,onError:i=>this.onError_(i),onEvent:i=>this.dispatchEvent(i),onSegmentAppended:(i,r,s,n,a)=>{this.onSegmentAppended_(i.startTime,i.endTime,r.type,s,n,a),this.abrManager_&&r.fastSwitching&&i.isPartial()&&i.isLastPartial()&&this.abrManager_.trySuggestStreams()},onInitSegmentAppended:(i,r)=>{let s=r.getMediaQuality();s&&this.qualityObserver_&&this.qualityObserver_.addMediaQualityChange(s,i)},beforeAppendSegment:(i,r)=>this.drmEngine_.parseInbandPssh(i,r),disableStream:(i,r)=>this.disableStream(i,r),shouldPrefetchNextSegment:(i,r)=>!this.config_.abr.enabled||!r.fastSwitching||!i.isPartial()||!i.isLastPartial(),getKeySystem:()=>this.keySystem()};return new jr(this.manifest_,t)}configure(t,i){v.assert(this.config_,"Config must not be null!"),v.assert(typeof t=="object"||arguments.length==2,"String configs should have values!");let r=this.getConfiguration();arguments.length==2&&typeof t=="string"&&(t=Pt.convertToConfigObject(t,i)),v.assert(typeof t=="object","Should be an object!"),t.manifest&&t.manifest.dash&&"disableXlinkProcessing"in t.manifest.dash&&(Cr.deprecateFeature(6,"manifest.dash.disableXlinkProcessing configuration","It is now automatically detected if the manifest has Xlink."),delete t.manifest.dash.disableXlinkProcessing),t.textDisplayer&&"captionsUpdatePeriod"in t.textDisplayer&&(Cr.deprecateFeature(6,"textDisplayer.captionsUpdatePeriod configuration","Captions are now updated based on the cue timings, so this configuration is no longer needed."),delete t.textDisplayer.captionsUpdatePeriod),Q.convertLegacyPreferences_(t);let s=st.mergeConfigObjects(this.config_,t,this.defaultConfig_());return this.applyConfig_(r),s}configurationForLowLatency(t){this.lowLatencyConfig_=t}applyConfig_(t){if(this.manifestFilterer_=new Rr(this.config_,this.maxHwRes_,this.drmEngine_),this.parser_){let s=Ne.cloneObject(this.config_.manifest);this.video_&&this.video_.nodeName==="AUDIO"&&(s.disableVideo=!0),this.parser_.configure(s)}if(this.drmEngine_&&this.drmEngine_.configure(this.config_.drm),this.streamingEngine_){this.streamingEngine_.configure(this.config_.streaming);try{this.loadMode_!=Q.LoadMode.DESTROYED&&this.manifestFilterer_.filterManifestWithRestrictions(this.manifest_)&&this.onTracksChanged_()}catch(n){this.onError_(n)}this.abrManager_&&this.updateAbrManagerVariants_();let s=this.streamingEngine_.getCurrentVariant();s&&(!s.allowedByApplication||!s.allowedByKeySystem)&&(p.debug("Choosing new variant after changing configuration"),this.chooseVariantAndSwitch_())}if(this.networkingEngine_&&this.networkingEngine_.configure(this.config_.networking),this.mediaSourceEngine_){this.mediaSourceEngine_.configure(this.config_.mediaSource);let{segmentRelativeVttTiming:s}=this.config_.manifest;this.mediaSourceEngine_.setSegmentRelativeVttTiming(s)}this.textDisplayer_&&this.createAndConfigureTextDisplayer_(),this.abrManager_&&(this.abrManager_.configure(this.config_.abr),this.config_.abr.enabled?this.abrManager_.enable():this.abrManager_.disable(),this.onAbrStatusChanged_()),this.bufferObserver_&&this.updateBufferingSettings_(),this.bufferPoller_&&(this.config_.streaming.rebufferingGoal?this.bufferPoller_.tickEvery(.25):this.bufferPoller_.stop()),this.manifest_&&Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.adManager_&&this.adManager_.configure(this.config_.ads),this.cmcdManager_&&this.cmcdManager_.configure(this.config_.cmcd),this.cmsdManager_&&this.cmsdManager_.configure(this.config_.cmsd),this.queueManager_&&this.queueManager_.configure(this.config_.queue);let i=this.loadMode_==Q.LoadMode.MEDIA_SOURCE||this.loadMode_==Q.LoadMode.SRC_EQUALS;this.config_.accessibility.speechToText.enabled?this.speechToText_?this.speechToText_.configure(this.config_.accessibility.speechToText):(this.speechToText_=new Qr(this),this.speechToText_.configure(this.config_.accessibility.speechToText),i&&this.onTextChanged_()):this.speechToText_&&(this.speechToText_.release(),this.speechToText_=null,i&&this.onTextChanged_()),this.applyCriteriaConfigChanges_(t);let r=Q.makeEvent_(U.EventName.ConfigurationChanged);this.dispatchEvent(r)}applyCriteriaConfigChanges_(t){if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE||!this.currentAdaptationSetCriteria_.getConfiguration)return;let i=this.currentAdaptationSetCriteria_.getConfiguration();v.assert(i,"criteriaConfig must not be null!");let r=!1,s=n=>Ne.alphabeticalKeyOrderStringify(n);s(t.preferredVideo)!=s(this.config_.preferredVideo)&&(i.preferredVideo=this.config_.preferredVideo,r=!0),s(t.preferredAudio)!=s(this.config_.preferredAudio)&&(i.preferredAudio=this.config_.preferredAudio,r=!0),r&&(st.addDeprecatedConfigFields(i),this.currentAdaptationSetCriteria_.configure(i),this.chooseVariantAndSwitch_())}getConfiguration(){v.assert(this.config_,"Config must not be null!");let t=this.defaultConfig_();return st.mergeConfigObjects(t,this.config_,this.defaultConfig_()),t}getConfigurationForLowLatency(){return this.lowLatencyConfig_}getNonDefaultConfiguration(){v.assert(this.config_,"Config must not be null!");let t=this.defaultConfig_();return st.mergeConfigObjects(t,this.config_,this.defaultConfig_()),Pt.getDifferenceFromConfigObjects(this.config_,this.defaultConfig_())}getSharedConfiguration(){return v.assert(this.config_,"Cannot call getSharedConfiguration after call destroy!"),this.config_}getBufferFullness(){if(this.video_){let t=this.video_.buffered.length,i=t?this.video_.buffered.end(t-1):0,r=this.config_.streaming.bufferingGoal,s=Math.min(this.video_.currentTime+r,this.seekRange().end);if(i>=s)return 1;if(i<=this.video_.currentTime)return 0;if(i<s)return(i-this.video_.currentTime)/(s-this.video_.currentTime)}return 0}resetConfiguration(){v.assert(this.config_,"Cannot be destroyed");let t=this.getConfiguration();for(let i in this.config_)delete this.config_[i];st.mergeConfigObjects(this.config_,this.defaultConfig_(),this.defaultConfig_()),this.applyConfig_(t)}getLoadMode(){return this.loadMode_}getManifestType(){return this.manifest_?this.manifest_.type:null}getMediaElement(){return this.video_}getNetworkingEngine(){return this.networkingEngine_}getAssetUri(){return this.assetUri_}getMimeType(){return this.mimeType_}getAllMetadataRegions(){var t;return Array.from(((t=this.metadataRegionTimeline_)==null?void 0:t.regions())||[])}getAllEmsgRegions(){var t;return Array.from(((t=this.emsgRegionTimeline_)==null?void 0:t.regions())||[])}getAllTimelineRegions(){var t;return Array.from(((t=this.regionTimeline_)==null?void 0:t.regions())||[])}getAdManager(){return this.adManager_?this.adManager_:null}getQueueManager(){return this.queueManager_?this.queueManager_:null}isLive(){return this.manifest_&&!this.isRemotePlayback()?this.manifest_.presentationTimeline.isLive():this.video_&&(this.video_.src||this.isRemotePlayback())?this.video_.duration==1/0:!1}isInProgress(){return this.manifest_?this.manifest_.presentationTimeline.isInProgress():!1}isDynamic(){return this.isLive()||this.isInProgress()}isAudioOnly(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.variants;return t.length?!t[0].video:!1}else return this.video_&&(this.video_.src||this.isRemotePlayback())?this.video_.videoTracks?this.video_.videoTracks.length==0:this.video_.videoHeight==0:!1}isVideoOnly(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.variants;if(!t.length)return!1;let i=t[0];return i.audio||!i.video?!1:!i.video.codecs.includes(",")}else if(this.video_&&(this.video_.src||this.isRemotePlayback())&&this.video_.audioTracks)return this.video_.audioTracks.length==0;return!1}seekRange(){if(this.manifest_&&!this.isRemotePlayback()){if(!this.fullyLoaded_&&this.manifest_.type==me.HLS)return{start:0,end:0};let t=this.manifest_.presentationTimeline;return{start:t.getSeekRangeStart(),end:t.getSeekRangeEnd()}}if(this.video_&&(this.video_.src||this.isRemotePlayback())){let t=this.video_.seekable;if(t&&t.length){let i=this.config_?this.config_.playRangeStart:0,r=Math.max(t.start(0),i),s=this.config_?this.config_.playRangeEnd:1/0,n=Math.min(t.end(t.length-1),s);return{start:r,end:n}}}return{start:0,end:0}}goToLive(){this.isDynamic()?this.video_.currentTime=this.seekRange().end:p.warning("goToLive is for live streams!")}isFullyLoaded(){return this.fullyLoaded_}keySystem(){return de.keySystem(this.drmInfo())}drmInfo(){return this.drmEngine_?this.drmEngine_.getDrmInfo():null}getDrmEngine(){return this.drmEngine_}getExpiration(){return this.drmEngine_?this.drmEngine_.getExpiration():1/0}getActiveSessionsMetadata(){return this.drmEngine_?this.drmEngine_.getActiveSessionsMetadata():[]}renewLicense(t){this.drmEngine_&&this.drmEngine_.renewLicense(t)}async retryLicensing(t,i){return this.drmEngine_?await this.drmEngine_.retryLicensing(t,i):!1}getKeyStatuses(){return this.drmEngine_?this.drmEngine_.getKeyStatuses():{}}isBuffering(){let t=Mr.State;return this.bufferObserver_?this.bufferObserver_.getState()==t.STARVING:!!this.assetUri_}getPlaybackRate(){return this.video_?this.playRateController_?this.playRateController_.getRealRate():1:0}useTrickPlayTrackIfAvailable(t){this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&this.streamingEngine_&&this.streamingEngine_.setTrickPlay(t)}trickPlay(t,i=!0){if(v.assert(t!=0,"Should never set a trick play rate of 0!"),t==0){p.alwaysWarn("A trick play rate of 0 is unsupported!");return}let r=this.video_.playbackRate,s=this.playRateController_.getRealRate();this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&(this.abrManager_.playbackRateChanged(t),this.useTrickPlayTrackIfAvailable(i&&t!=1)),this.setupTrickPlayEventListeners_(t),r===0&&this.video_.playbackRate===0&&t!=s&&this.onRateChange_()}cancelTrickPlay(){let t=this.playRateController_.getDefaultRate();this.loadMode_==Q.LoadMode.SRC_EQUALS&&this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&(this.playRateController_.set(t),this.abrManager_.playbackRateChanged(t),this.useTrickPlayTrackIfAvailable(!1)),this.trickPlayEventManager_.removeAll()}getVariantTracks(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.streamingEngine_?this.streamingEngine_.getCurrentVariant():null,i=[],r=0;for(let s of this.manifest_.variants){if(!se.isPlayable(s))continue;let n=se.variantToTrack(s);n.active=s==t,!n.active&&r!=1&&t!=null&&s.video==t.video&&s.audio==t.audio&&(n.active=!0),n.active&&r++,i.push(n)}return v.assert(r<=1,"It should only have one active track"),i}else if(this.video_&&this.video_.audioTracks){let t=this.getActiveHtml5VideoTrack_(),i=Array.from(this.video_.audioTracks);return i.length?i.map(r=>se.html5TrackToShakaTrack(r,t)):t?[se.html5TrackToShakaTrack(null,t)]:[]}else return[]}getTextTracks(){if(this.manifest_){if(this.isRemotePlayback())return[];{let t=this.streamingEngine_?this.streamingEngine_.getCurrentTextStream():null,i=[];for(let r of this.manifest_.textStreams){let s=se.textStreamToTrack(r);s.active=r==t,i.push(s)}return this.speechToText_&&i.push(...this.speechToText_.getTextTracks()),i}}else if(this.video_&&this.video_.src&&this.video_.textTracks){let t=this.getFilteredTextTracks_(),i=this.textDisplayer_.isTextVisible(),r=t.map(s=>se.html5TextTrackToTrack(s,i));return this.speechToText_&&r.push(...this.speechToText_.getTextTracks()),r}else return[]}getImageTracks(){let t=this.externalSrcEqualsThumbnailsStreams_;return this.manifest_&&(t=this.manifest_.imageStreams),t.map(i=>se.imageStreamToTrack(i))}async getAllThumbnails(t){let i=await this.getBestImageStream_(t);if(!i)return null;let r=[];return i.segmentIndex.forEachTopLevelReference(s=>{let n=this.parseTilesLayout_(s.getTilesLayout()||i.tilesLayout);if(n){let a=n.rows*n.columns,c=(s.trueEndTime-s.startTime)/a;for(let d=0;d<a;d++){let u=s.startTime+d*c,m=this.getThumbnailByReference_(s,i,u,n);if(!m)break;r.push(m)}}}),r}parseTilesLayout_(t){if(!t)return null;let i=/(\d+)x(\d+)/.exec(t);if(!i)return p.warning("Tiles layout does not contain a valid format (columns x rows)"),null;let r=parseInt(i[1],10),s=parseInt(i[2],10);return{columns:r,rows:s}}async getThumbnails(t,i){let r=await this.getBestImageStream_(t);if(!r)return null;let s=r.segmentIndex.find(i);if(s==null)return null;let n=r.segmentIndex.get(s),a=this.parseTilesLayout_(n.getTilesLayout()||r.tilesLayout);return a?this.getThumbnailByReference_(n,r,i,a):null}async getBestImageStream_(t){if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)return null;let i=this.externalSrcEqualsThumbnailsStreams_;this.manifest_&&(i=this.manifest_.imageStreams);let r=i[0];if(!r||(t!=null&&(r=i.find(s=>s.id==t)),!r))return null;if(r.segmentIndex||await r.createSegmentIndex(),r.closeSegmentIndex){if(!this.deferredCloseSegmentIndex_.has(r)){let s=new ae(()=>{r&&(r.closeSegmentIndex(),this.deferredCloseSegmentIndex_.delete(r))});this.deferredCloseSegmentIndex_.set(r,s)}this.deferredCloseSegmentIndex_.get(r).tickAfter(5)}return r}getThumbnailByReference_(t,i,r,s){let n=t.getUris();if(!n.length)return null;let a=1e-4,o=i.width||0,c=i.height||0,d=o/s.columns,u=c/s.rows,m=s.columns*s.rows,f=t.trueEndTime-t.startTime,g=t.getTileDuration()||f/m,_=t.startTime,T=0,S=0;if(m>1){let C=(r-t.startTime)/g,A=Math.floor(C+a);_=t.startTime+A*g,T=A%s.columns*d,S=Math.floor(A/s.columns)*u}if(_>=t.endTime||jt.isFloatEqual(_,t.endTime,a))return null;let b=!1,E=t.getThumbnailSprite();return E&&(b=!0,u=E.height,T=E.positionX,S=E.positionY,d=E.width),{segment:t,imageHeight:c,imageWidth:o,height:u,positionX:T,positionY:S,startTime:_,duration:g,uris:n,startByte:t.getStartByte(),endByte:t.getEndByte(),width:d,sprite:b,mimeType:t.mimeType||i.mimeType,codecs:t.codecs||i.codecs}}selectTextTrack(t){let i=!1;if(this.speechToText_&&t&&(i=this.speechToText_.getTextTracks().includes(t)),this.speechToText_&&!i&&this.speechToText_.disable(),!t||i){this.speechToText_&&i&&t&&this.speechToText_.enable(t),this.onTextChanged_(),this.setTextTrackVisibility_(!1);return}let r=()=>{let n=this.manifest_.textStreams.find(a=>a.id==t.id);if(!n){this.isRemotePlayback()||p.error("No stream with id",t.id);return}if(n==this.streamingEngine_.getCurrentTextStream()){p.debug("Text track already selected.");return}this.addTextStreamToSwitchHistory_(n,!1),this.streamingEngine_.switchTextStream(n),this.onTextChanged_(),this.setTextDisplayerLanguage_(),this.currentTextLanguage_=n.language,this.setTextTrackVisibility_(!0)},s=()=>{if(this.video_&&this.video_.textTracks){let n=this.getFilteredTextTracks_(),a=n.find(o=>se.html5TrackId(o)===t.id);if(!a){p.error("No track with id",t.id);return}if(this.textDisplayer_ instanceof mr)for(let o of n){let c=o===a?this.isTextVisible_?"showing":"hidden":"disabled";o.mode!==c&&(o.mode=c)}else{let o=n.find(c=>c.mode!=="disabled");o!==a&&(o&&(o.mode="disabled",this.loadEventManager_.unlisten(o,"cuechange"),this.textDisplayer_.remove(0,1/0)),a&&this.enableNativeTrack_(a))}this.onTextChanged_(),this.setTextDisplayerLanguage_(),this.setTextTrackVisibility_(!0)}};this.manifest_&&this.playhead_&&(r(),!this.isRemotePlayback())||s()}enableNativeTrack_(t){this.loadEventManager_.listen(t,"cuechange",()=>{let i=Math.max(0,this.video_.currentTime-this.config_.streaming.bufferBehind);this.textDisplayer_.remove(0,i);let r={periodStart:0,segmentStart:0,segmentEnd:this.video_.duration,vttOffset:0,isMpegTs:!1},s=[],n=Array.from(t.activeCues||[]);for(let a of n){let o=si.mapNativeCueToShakaCue(a);if(o){let c=this.config_.mediaSource.modifyCueCallback;c&&c(o,null,r),s.push(o)}}this.textDisplayer_.append(s)}),t.mode=document.pictureInPictureElement?"showing":"hidden"}selectVariantTrack(t,i=!1,r=0){let s=()=>{let a=this.manifest_.variants.find(m=>m.id==t.id);if(!a){this.isRemotePlayback()||p.error("No variant with id",t.id);return}if(!se.isPlayable(a)){p.error("Unable to switch to restricted track",t.id);return}let o=this.streamingEngine_.getCurrentVariant();this.config_.abr.enabled&&(o.video!=a.video||o.audio&&a.audio&&o.audio.language==a.audio.language&&o.audio.channelsCount==a.audio.channelsCount&&o.audio.label==a.audio.label)&&p.alwaysWarn("Changing tracks while abr manager is enabled will likely result in the selected track being overridden. Consider disabling abr before calling selectVariantTrack()."),this.isRemotePlayback()?this.switchVariant_(a,!1,!1,0):this.switchVariant_(a,!1,i||!1,r||0);let c={language:a.language||"",role:a.audio&&a.audio.roles&&a.audio.roles[0]||"",label:a.audio&&a.audio.label||"",channelCount:a.audio&&a.audio.channelsCount||0,codec:a.audio&&a.audio.codecs||"",spatialAudio:a.audio&&a.audio.spatialAudio?a.audio.spatialAudio:!1},d={label:a.video&&a.video.label||"",role:a.video&&a.video.roles&&a.video.roles[0]||"",language:a.video&&a.video.language||"",codec:a.video&&a.video.codecs||"",hdrLevel:a.video&&a.video.hdr||"",layout:a.video&&a.video.videoLayout||""},u={preferredAudio:[c],preferredVideo:[d],language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:a.audio&&a.audio.codecs?a.audio.codecs:"",activeAudioCodec:o.audio&&o.audio.codecs?o.audio.codecs:"",activeAudioChannelCount:o.audio&&o.audio.channelsCount?o.audio.channelsCount:0,keySystem:this.keySystem()};st.addDeprecatedConfigFields(u),this.currentAdaptationSetCriteria_.configure(u),this.updateAbrManagerVariants_()},n=()=>{if(t.originalAudioId&&this.video_&&this.video_.audioTracks){let a=Array.from(this.video_.audioTracks);for(let o of a)if(se.html5TrackId(o)==t.id){this.switchHtml5Track_(o);return}}};this.manifest_&&this.playhead_&&(s(),!this.isRemotePlayback())||n()}selectAudioTrack(t,i=0){let r=(a,o)=>{if(a==o||!this.config_.accessibility.handleForcedSubtitlesAutomatically)return;let c=this.getTextTracks(),d=c.find(g=>g.active),u=d?ve.normalize(d.language):null,m=ve.normalize(a),f=ve.normalize(o);if(!d||u==m&&u!=f&&d.forced){let g=se.filterStreamsByLanguageAndRole(c,f,"",!0);g.length&&this.selectTextTrack(g[0])}},s=()=>{let a=this.currentAdaptationSetCriteria_.getConfiguration();a.audioCodec=t.codecs||"",a.preferredAudio=[{language:t.language,role:t.roles[0]||"",label:t.label||"",channelCount:t.channelsCount||0,codec:"",spatialAudio:t.spatialAudio}];let o=this.streamingEngine_.getCurrentVariant(),c=o&&o.audio;c&&(a.activeAudioCodec=c.codecs||"",a.activeAudioChannelCount=c.channelsCount||0,r(c.language,t.language)),st.addDeprecatedConfigFields(a),this.currentAdaptationSetCriteria_.configure(a),this.chooseVariantAndSwitch_(!0,i,!1,!1)},n=()=>{if(this.video_&&this.video_.audioTracks){let a=ve.normalize(t.language),o=Array.from(this.video_.audioTracks),c=null,d=null;for(let u of o){let m=u.language||"und";!c&&u.label==t.label&&ve.normalize(m)==a&&u.kind==t.roles[0]&&(c=u),u.enabled&&(d=u)}c&&(d&&r(d.language,c.language),this.switchHtml5Track_(c))}};this.manifest_&&this.playhead_&&(s(),!this.isRemotePlayback())||n()}getAudioTracks(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.getVariantTracks();if(!t.length)return[];let i=t.find(n=>n.active);if(!i)return[];let r=t;if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&!this.isRemotePlayback()&&(r=t.filter(n=>n.originalVideoId===i.originalVideoId&&(n.audioCodec||N.RAW_FORMATS.includes(n.audioMimeType||"")))),!r.length)return[];let s=new Map;for(let n of r){let a=[n.language,n.originalLanguage,n.label||"",(n.audioRoles||[]).join(","),n.channelsCount,n.spatialAudio,n.audioCodec||"",n.accessibilityPurpose||""].join("_"),o={active:n.active,language:n.language,label:n.label,mimeType:n.audioMimeType,codecs:n.audioCodec,primary:n.primary,roles:n.audioRoles||[],accessibilityPurpose:n.accessibilityPurpose,channelsCount:n.channelsCount,audioSamplingRate:n.audioSamplingRate,spatialAudio:n.spatialAudio,originalLanguage:n.originalLanguage};s.has(a)?!s.get(a).active&&o.active&&s.set(a,o):s.set(a,o)}return Array.from(s.values())}else return this.video_&&this.video_.audioTracks?Array.from(this.video_.audioTracks).map(t=>se.html5AudioTrackToTrack(t)):[]}selectVideoTrack(t,i=!1,r=0){let s=this.getVariantTracks();if(!s.length)return;let n=s.find(c=>c.active);if(!n)return;let a=s.filter(c=>(c.videoBandwidth||c.bandwidth)==t.bandwidth&&c.width==t.width&&c.height==t.height&&c.frameRate==t.frameRate&&c.pixelAspectRatio==t.pixelAspectRatio&&c.hdr==t.hdr&&c.colorGamut==t.colorGamut&&c.videoLayout==t.videoLayout&&c.videoMimeType==t.mimeType&&c.videoCodec==t.codecs&&ye.equal(c.videoRoles,t.roles)&&(c.videoLanguage||"und")==(t.language||"und")&&c.videoLabel==t.label),o;a.length==1?o=a[0]:o=a.find(c=>c.audioId===n.audioId),o||(o=a.find(c=>c.language==n.language&&c.label===n.label&&c.channelsCount===n.channelsCount&&c.spatialAudio===n.spatialAudio&&c.audioMimeType===n.audioMimeType&&N.getNormalizedCodec(c.audioCodec||"")===N.getNormalizedCodec(n.audioCodec||"")&&ye.equal(c.audioRoles,n.audioRoles))),o&&!o.active&&this.selectVariantTrack(o,i,r)}getVideoTracks(){if(this.loadMode_==Q.LoadMode.SRC_EQUALS||this.isRemotePlayback())return[];let t=this.getVariantTracks();if(!t.length)return[];let i=t.find(n=>n.active);if(!i)return[];let r=t;if(this.isVideoOnly()||(r=t.filter(n=>!n.videoCodec||n.audioGroupId!==i.audioGroupId||n.originalAudioId!==i.originalAudioId?!1:n.audioId===i.audioId?!0:n.language===i.language&&n.label===i.label&&n.channelsCount===i.channelsCount&&n.spatialAudio===i.spatialAudio&&n.audioMimeType===i.audioMimeType&&N.getNormalizedCodec(n.audioCodec||"")===N.getNormalizedCodec(i.audioCodec||"")&&ye.equal(n.audioRoles,i.audioRoles))),!r.length)return[];let s=new Map;for(let n of r){let a=n.originalVideoId;if(!a&&n.videoId!=null&&(a=String(n.videoId)),!a)continue;let o={active:n.active,language:n.videoLanguage||"und",bandwidth:n.videoBandwidth||n.bandwidth,width:n.width,height:n.height,frameRate:n.frameRate,pixelAspectRatio:n.pixelAspectRatio,hdr:n.hdr,colorGamut:n.colorGamut,videoLayout:n.videoLayout,mimeType:n.videoMimeType,codecs:n.videoCodec,roles:n.videoRoles||[],label:n.videoLabel};s.set(a,o)}return Array.from(s.values())}getChaptersTracks(){let t=this.externalSrcEqualsChapterStreams_;this.manifest_&&(t=this.manifest_.chapterStreams);let i=t.map(s=>se.chapterStreamToTrack(s)),r=this.getChaptersTracks_();return r.length&&i.push(...r.map(s=>se.html5TextTrackToChapterTrack(s))),i}async getChaptersAsync(t){var c,d;let i=this.getNativeChapters_(t);if(i.length)return i;let r=this.externalSrcEqualsChapterStreams_;if(this.manifest_&&(r=this.manifest_.chapterStreams),!r.length)return[];let s=ve.normalize(t),n=r.filter(u=>ve.normalize(u.language)==s);if(!n.length)return[];let a=[],o=new Set;for(let u of n){u.segmentIndex||await u.createSegmentIndex();let m=0;if(this.isLive()&&((c=this.manifest_)==null?void 0:c.type)===me.HLS){let f=this.manifest_.presentationTimeline;m=Math.max(0,(d=f.getInitialProgramDateTime())!=null?d:f.getPresentationStartTime())}u.segmentIndex.forEachTopLevelReference(f=>{let g=f.getMetadata();if(!g)return;let _=g.title,T=f.startTime+"-"+f.endTime+"-"+_;m>0&&f.endTime-m<0&&(m=0);let S={id:T,title:_,startTime:Math.max(0,f.startTime-m),endTime:Math.max(0,f.endTime-m),images:g.images};o.has(T)||(a.push(S),o.add(T))})}return a}getNativeChapters_(t){let i=this.getChaptersTracks_();if(!i.length)return[];let r=ve.normalize(t),s=i.filter(o=>ve.normalize(o.language)==r);if(!s||!s.length)return[];let n=[],a=new Set;for(let o of s)if(o&&o.cues)for(let c of o.cues){let d=c.id;(!d||d=="")&&(d=c.startTime+"-"+c.endTime+"-"+c.text);let u={id:d,title:c.text,startTime:c.startTime,endTime:c.endTime,images:[]};a.has(d)||(n.push(u),a.add(d))}return n}getFilteredTextTracks_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).filter(t=>t.kind!="metadata"&&t.kind!="chapters"&&t.label!=Q.TextTrackLabel)}getGeneratedTextTrack_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).find(t=>t.label==Q.TextTrackLabel)}getMetadataTracks_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).filter(t=>t.kind=="metadata")}getChaptersTracks_(){return!this.video_||!this.video_.textTracks?[]:Array.from(this.video_.textTracks).filter(t=>t.kind=="chapters")}setTextTrackVisibility_(t){let i=this.isTextVisible_,r=!!t;if(i!=r)if(this.isTextVisible_=r,this.loadMode_==Q.LoadMode.MEDIA_SOURCE)if(this.textDisplayer_.setTextVisibility(r),r){if(!this.streamingEngine_.getCurrentTextStream()){let s=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,this.currentTextLanguage_,this.currentTextRole_,this.currentTextForced_);s.length>0&&(this.streamingEngine_.switchTextStream(s[0]),this.onTextChanged_(),this.setTextDisplayerLanguage_())}}else this.streamingEngine_.unloadTextStream();else this.video_&&this.video_.src&&this.video_.textTracks&&this.textDisplayer_.setTextVisibility(r)}getPlayheadTimeAsDate(){let t=0;if(this.playhead_)t=this.playhead_.getTime();else{if(this.startTime_==null)return new Date;if(this.startTime_ instanceof Date)return this.startTime_;t=this.startTime_}if(this.manifest_&&!this.isRemotePlayback()){let i=this.manifest_.presentationTimeline,r=i.getProgramDateTimeForTime(t);if(r!=null)return new Date(r*1e3);let s=i.getPresentationStartTime();return new Date((s+t)*1e3)}else if(this.video_&&this.video_.getStartDate){let i=this.video_.getStartDate();return!(i instanceof Date)||isNaN(i.getTime())?(p.warning("EXT-X-PROGRAM-DATETIME required to get playhead time as Date!"),null):new Date(i.getTime()+t*1e3)}else return p.warning("No way to get playhead time as Date!"),null}getPresentationStartTimeAsDate(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.presentationTimeline,i=t.getInitialProgramDateTime()||t.getPresentationStartTime();return i===null?(p.info("Manifest appears to have no PDT or PST"),null):new Date(i*1e3)}else if(this.video_&&this.video_.getStartDate){let t=this.video_.getStartDate();return!(t instanceof Date)||isNaN(t.getTime())?(p.warning("EXT-X-PROGRAM-DATETIME required to get presentation start time as Date!"),null):t}else return p.warning("No way to get presentation start time as Date!"),null}getSegmentAvailabilityDuration(){return this.isLive()?this.manifest_?this.manifest_.presentationTimeline.getSegmentAvailabilityDuration():(p.warning("No way to get segment segment availability duration!"),null):(p.warning("getSegmentAvailabilityDuration is for live streams!"),null)}getBufferedInfo(){if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE)return this.mediaSourceEngine_.getBufferedInfo();let t={total:[],audio:[],video:[],text:[]};return this.loadMode_==Q.LoadMode.SRC_EQUALS&&(t.total=Je.getBufferedInfo(this.video_.buffered)),t}getLiveLatency(){if(!this.video_||!this.video_.currentTime)return null;let t=this.getPresentationStartTimeAsDate();if(!t)return null;let i=t.getTime()+this.video_.currentTime*1e3;return Math.floor(Date.now()-i)}getBandwidthEstimate(){return this.abrManager_?this.abrManager_.getBandwidthEstimate():NaN}getStats(){if(!(this.loadMode_==Q.LoadMode.MEDIA_SOURCE||this.loadMode_==Q.LoadMode.SRC_EQUALS))return tr.getEmptyBlob();this.updateStateHistory_(),v.assert(this.video_,"If we have stats, we should have video_");let i=this.video_,r=i.currentTime/i.duration;if(!isNaN(r)&&!this.isDynamic()&&this.stats_.setCompletionPercent(Math.round(100*r)),this.playhead_&&(this.stats_.setGapsJumped(this.playhead_.getGapsJumped()),this.stats_.setStallsDetected(this.playhead_.getStallsDetected())),i.getVideoPlaybackQuality){let d=i.getVideoPlaybackQuality();this.stats_.setDroppedFrames(Number(d.droppedVideoFrames),Number(d.totalVideoFrames)),this.stats_.setCorruptedFrames(Number(d.corruptedVideoFrames))}let s=this.drmEngine_?this.drmEngine_.getLicenseTime():NaN;if(this.stats_.setLicenseTime(s),this.stats_.setResolution(i.videoWidth||NaN,i.videoHeight||NaN),this.stats_.setCodecs(""),this.isDynamic()){let d=this.getLiveLatency();d!=null&&this.stats_.setLiveLatency(d/1e3)}let a=this.getVariantTracks().find(d=>d.active),c=this.getTextTracks().find(d=>d.active);if(a){if(a.bandwidth){let u=this.playRateController_?this.playRateController_.getRealRate():1,f=u*a.bandwidth;c&&c.bandwidth&&(f+=u*c.bandwidth),this.stats_.setCurrentStreamBandwidth(f)}a.width&&a.height&&this.stats_.setResolution(a.width||NaN,a.height||NaN);let d=a.codecs;c&&(d+=","+(c.codecs||c.mimeType)),d&&this.stats_.setCodecs(d)}if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&!this.isRemotePlayback()){if(this.manifest_&&(this.stats_.setManifestPeriodCount(this.manifest_.periodCount),this.stats_.setManifestGapCount(this.manifest_.gapCount),this.manifest_.presentationTimeline)){let u=this.manifest_.presentationTimeline.getMaxSegmentDuration();this.stats_.setMaxSegmentDuration(u)}let d=this.abrManager_.getBandwidthEstimate();this.stats_.setBandwidthEstimate(d)}return this.loadMode_==Q.LoadMode.SRC_EQUALS&&this.stats_.addBytesDownloaded(NaN),this.stats_.getBlob()}addTextTrackAsync(t,i,r,s,n,a,o=!1){let c=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding text tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);r!="subtitles"&&r!="captions"&&p.alwaysWarn("Using a kind value different of `subtitles` or `captions` can cause unwanted issues."),s||(s=await this.getTextMimetype_(t));let d=[];if(this.adManager_&&(d=this.adManager_.getCuePoints()),this.loadMode_==Q.LoadMode.SRC_EQUALS){let S=j.getDevice();o&&S.getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(r="forced");let b=await this.addSrcTrackElement_(t,i,r,s,a||"",d);if(b.track)return this.onTracksChanged_(),this.onTextChanged_(),se.html5TextTrackToTrack(b.track,this.textDisplayer_.isTextVisible());throw p.error("Cannot add this text when loaded with src="),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.CANNOT_ADD_EXTERNAL_TEXT_TO_SRC_EQUALS)}let u=R.ContentType,m=this.seekRange(),f=m.end-m.start;if(this.manifest_&&(f=this.manifest_.presentationTimeline.getDuration()),f==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_TEXT_TO_LIVE_STREAM);if(d.length){let S=await this.getTextData_(t),b=this.convertToWebVTT_(S,s,d),E=new Blob([b],{type:"text/vtt"});t=dr.createObjectURL(E),s="text/vtt"}let g=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:Ze.forSingleSegment(0,f,[t]),mimeType:s||"",codecs:n||"",kind:r,language:i,originalLanguage:i,label:a||null,type:u.TEXT,forced:!!o,external:!0}),_=N.getFullType(g.mimeType,g.codecs);if(!Ue.isTypeSupported(_))throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,s);return this.manifest_.textStreams.push(g),this.onTracksChanged_(),this.onTextChanged_(),se.textStreamToTrack(g)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(c),c}addThumbnailsTrack(t,i){let r=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding image tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);if(i||(i=await this.getTextMimetype_(t)),i!="text/vtt")throw new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.UNSUPPORTED_EXTERNAL_THUMBNAILS_URI,t);let s=R.ContentType,n=this.seekRange(),a=n.end-n.start;if(this.manifest_&&(a=this.manifest_.presentationTimeline.getDuration()),a==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_THUMBNAILS_TO_LIVE_STREAM);let o=await this.getTextData_(t),c=Ue.findParser(i);if(!c)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i);let d=c(),u={periodStart:0,segmentStart:0,segmentEnd:a,vttOffset:0,isMpegTs:!1},m=D.toUint8(o),f=d.parseMedia(m,u,t,[]),g=[];for(let S of f){let b=null,E=()=>(b==null&&(b=fe.resolveUris([t],[S.payload])),b||[]),C=new Se(S.startTime,S.endTime,E,0,null,null,0,0,1/0);if(S.payload.includes("#xywh")){let A=S.payload.split("#xywh=")[1].split(",");A.length===4&&C.setThumbnailSprite({height:parseInt(A[3],10),positionX:parseInt(A[0],10),positionY:parseInt(A[1],10),width:parseInt(A[2],10)})}g.push(C)}let _=i;g.length&&(_=await this.getTextMimetype_(g[0].getUris()[0]));let T=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(g),mimeType:_||"",kind:"",language:"und",type:s.IMAGE,tilesLayout:"1x1",external:!0});return this.loadMode_==Q.LoadMode.SRC_EQUALS?this.externalSrcEqualsThumbnailsStreams_.push(T):this.manifest_.imageStreams.push(T),this.onTracksChanged_(),se.imageStreamToTrack(T)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(r),r}addChaptersTrack(t,i,r){let s=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding chapters tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);r||(r=await this.getTextMimetype_(t));let n=R.ContentType,a=this.seekRange(),o=a.end-a.start;if(this.manifest_&&(o=this.manifest_.presentationTimeline.getDuration()),o==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_CHAPTERS_TO_LIVE_STREAM);let c=Ue.findParser(r);if(!c)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,r);let d=await this.getTextData_(t),u=c(),m={periodStart:0,segmentStart:0,segmentEnd:o,vttOffset:0,isMpegTs:!1},f=D.toUint8(d),g=u.parseMedia(f,m,t,[]),_=[];for(let b of g){let E=new Se(b.startTime,b.endTime,()=>[],0,null,null,0,0,1/0),C={title:b.payload,images:[]};E.setMetadata(C),_.push(E)}let S=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(_),mimeType:"text/plain",kind:"",language:i,originalLanguage:i,type:n.CHAPTER,external:!0});return this.loadMode_==Q.LoadMode.MEDIA_SOURCE?this.manifest_.chapterStreams.push(S):this.externalSrcEqualsChapterStreams_.push(S),this.onTracksChanged_(),se.chapterStreamToTrack(S)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(s),s}async getTextMimetype_(t){let i;try{v.assert(this.networkingEngine_,"Need networking engine."),i=await ct.getMimeType(t,this.networkingEngine_,this.config_.streaming.retryParameters)}catch(r){}if(i)return i;throw p.error("The mimeType has not been provided and it could not be deduced from its uri."),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.TEXT_COULD_NOT_GUESS_MIME_TYPE,t)}async addSrcTrackElement_(t,i,r,s,n,a){if(s!="text/vtt"||a.length){let c=await this.getTextData_(t),d=this.convertToWebVTT_(c,s,a),u=new Blob([d],{type:"text/vtt"});t=dr.createObjectURL(u),s="text/vtt"}let o=document.createElement("track");return o.src=this.cmcdManager_.appendTextTrackData(t),o.label=n,o.kind=r,o.srclang=i,this.video_.getAttribute("crossorigin")||this.video_.setAttribute("crossorigin","anonymous"),this.video_.appendChild(o),this.externalSrcEqualsTextTracks_.push(o),o}async getTextData_(t){v.assert(this.networkingEngine_,"Need networking engine.");let i=K.RequestType.SEGMENT,r=this.config_.streaming.retryParameters,s=K.makeRequest([t],r);return s.method="GET",this.cmcdManager_.applyTextData(s),(await this.networkingEngine_.request(i,s).promise).data}convertToWebVTT_(t,i,r){let s=Ue.findParser(i);if(s){let n=s(),a={periodStart:0,segmentStart:0,segmentEnd:this.video_.duration,vttOffset:0,isMpegTs:!1},o=D.toUint8(t),c=n.parseMedia(o,a,null,[]);return Us.convert(c,r)}throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i)}setMaxHardwareResolution(t,i){this.maxHwRes_.width=t,this.maxHwRes_.height=i}retryStreaming(t=.1){return this.loadMode_==Q.LoadMode.MEDIA_SOURCE?this.streamingEngine_.retry(t):!1}getManifest(){return p.alwaysWarn("Shaka Player's internal Manifest structure is NOT covered by semantic versioning compatibility guarantees. It may change at any time! Please consider filing a feature request for whatever you use getManifest() for."),this.manifest_}getManifestParserFactory(){return this.parserFactory_}getFetchedPlaybackInfo(){var a,o,c;let t={video:null,audio:null,text:null};if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE)return t;let i=R.ContentType,r=this.streamingEngine_.getCurrentVariant(),s=this.streamingEngine_.getCurrentTextStream(),n=this.video_.currentTime;for(let d of[r.video,r.audio,s]){if(!d||!d.segmentIndex)continue;let u=d.segmentIndex.find(n),m=d.segmentIndex.get(u),f={codecs:(a=m==null?void 0:m.codecs)!=null?a:d.codecs,mimeType:(o=m==null?void 0:m.mimeType)!=null?o:d.mimeType,bandwidth:(c=m==null?void 0:m.bandwidth)!=null?c:d.bandwidth};d.type==i.VIDEO?(f.width=d.width,f.height=d.height,t.video=f):d.type==i.AUDIO?t.audio=f:d.type==i.TEXT&&(t.text=f)}return t}addVariantToSwitchHistory_(t,i){this.stats_.getSwitchHistory().updateCurrentVariant(t,i)}addTextStreamToSwitchHistory_(t,i){this.stats_.getSwitchHistory().updateCurrentText(t,i)}defaultConfig_(){let t=st.createDefault();return t.streaming.failureCallback=i=>{this.defaultStreamingFailureCallback_(i)},t.textDisplayFactory=i=>(()=>{if(!this.videoContainer_)return!1;let s=this.video_;return!(s.webkitDisplayingFullscreen||s.webkitPresentationMode&&s.webkitPresentationMode!="inline")})()?new Jr(i):"track"in document.createElement("track")?new mr(i):(p.warning("Text tracks are not supported by the browser, disabling."),new yn),t}setVideoContainer(t){this.videoContainer_=t}getVideoContainer(){return this.videoContainer_}getTextDisplayer(){return this.textDisplayer_}defaultStreamingFailureCallback_(t){if(!this.isDynamic())return;let i=null;t.code==h.Code.BAD_HTTP_STATUS||t.code==h.Code.HTTP_ERROR?(i=1,this.config_.streaming.lowLatencyMode&&(i=.1)):t.code==h.Code.TIMEOUT&&(i=.1),i!=null&&(t.severity=h.Severity.RECOVERABLE,p.warning("Live streaming error. Retrying automatically..."),this.retryStreaming(i))}makeTextStreamsForClosedCaptions_(t){let i=R.ContentType,r=R.TextStreamKind,s=N.CEA608_CLOSED_CAPTION_MIMETYPE,n=N.CEA708_CLOSED_CAPTION_MIMETYPE,a=new Set;for(let o of t.textStreams)(o.mimeType==s||o.mimeType==n)&&a.add(o.originalId);for(let o of t.variants){let c=o.video;if(c&&c.closedCaptions){for(let d of c.closedCaptions.keys())if(!a.has(d)){let u=d.startsWith("CC")?s:n,m=new Mi,f=c.closedCaptions.get(d),g=se.createStream({id:this.nextExternalStreamId_++,originalId:d,segmentIndex:m,mimeType:u,kind:r.CLOSED_CAPTION,language:f,originalLanguage:f,type:i.TEXT,roles:c.roles});t.textStreams.push(g),a.add(d)}}}}async adjustStartTime_(t,i){let r=t.audio,s=t.video,n=async(c,d)=>{if(!c)return null;c.segmentIndex||await c.createSegmentIndex();let u=c.segmentIndex.getIteratorForTime(d),m=u?u.next().value:null;if(!m)return null;let f=m.startTime;return v.assert(f<=d,"Segment should start before target time!"),f},a=await n(r,i),o=await n(s,i);return o!=null&&a!=null?Math.max(o,a):o!=null?o:a!=null?a:i}updateBufferState_(){let t=this.isBuffering();if(p.v2("Player changing buffering state to",t),this.stats_&&this.bufferObserver_&&this.playhead_){this.config_.streaming.rebufferingGoal==0?this.playRateController_.setBuffering(!1):this.playRateController_.setBuffering(t),this.cmcdManager_&&this.cmcdManager_.setBuffering(t),this.updateStateHistory_();let n=this.config_.streaming.liveSync.dynamicTargetLatency.enabled,a=this.config_.streaming.liveSync.dynamicTargetLatency.maxAttempts;if(n&&t&&this.rebufferingCount_<a){let o=this.config_.streaming.liveSync.dynamicTargetLatency.maxLatency,c=this.config_.streaming.liveSync.targetLatencyTolerance,d=this.config_.streaming.liveSync.dynamicTargetLatency.rebufferIncrement;this.currentTargetLatency_&&(this.currentTargetLatency_=Math.min(this.currentTargetLatency_+ ++this.rebufferingCount_*d,o-c))}}let r=U.EventName.Buffering,s=new Map().set("buffering",t);this.dispatchEvent(Q.makeEvent_(r,s))}onRateChange_(){let t=this.video_.playbackRate;if(t==0){let r=this.getPlaybackRate();if(r!==0&&r!==1){let s=Q.makeEvent_(U.EventName.RateChange);this.dispatchEvent(s)}return}this.playRateController_&&(this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&this.abrManager_.playbackRateChanged(t),this.setupTrickPlayEventListeners_(t));let i=Q.makeEvent_(U.EventName.RateChange);this.dispatchEvent(i)}setupTrickPlayEventListeners_(t){this.trickPlayEventManager_.removeAll(),this.trickPlayEventManager_.listen(this.video_,"timeupdate",()=>{let i=this.video_.currentTime,r=this.seekRange(),s=this.isDynamic(),n=s?this.config_.streaming.safeSeekOffset:0;t>0?s&&t>1&&Math.floor(i)>=Math.floor(r.end)&&this.cancelTrickPlay():Math.floor(i)<=Math.floor(r.start+n)&&this.cancelTrickPlay()})}updateStateHistory_(){if(!this.stats_||!this.bufferObserver_)return;let t=Mr.State,i=this.stats_.getStateHistory(),r="playing";if(this.bufferObserver_.getState()==t.STARVING?r="buffering":this.isEnded()?r="ended":this.video_.paused&&(r="paused"),i.update(r)){let n=U.EventName.StateChanged,a=new Map().set("newstate",r);this.dispatchEvent(Q.makeEvent_(n,a))}}onTimeUpdate_(){let t=this.video_.playbackRate,i=this.isDynamic();if(this.config_.streaming.vodDynamicPlaybackRate&&!i){let C=this.config_.streaming.vodDynamicPlaybackRateLowBufferRate,A=this.getBufferFullness(),w=this.config_.streaming.vodDynamicPlaybackRateBufferRatio;A<=w?t!=C&&(p.debug("Buffer fullness ratio ("+A+") is less than the vodDynamicPlaybackRateBufferRatio ("+w+"). Updating playbackRate to "+C),this.trickPlay(C,!1)):A==1&&t!==this.playRateController_.getDefaultRate()&&(p.debug("Buffer is full. Cancel trick play."),this.cancelTrickPlay())}if(!i)return;let r=this.seekRange();if(!Number.isFinite(r.end)||this.video_.currentTime<r.start||this.video_.paused)return;let n,a,o,c,d,u=this.config_.streaming.liveSync.targetLatencyTolerance,m=this.config_.streaming.liveSync.dynamicTargetLatency.enabled,f=this.config_.streaming.liveSync.dynamicTargetLatency.stabilityThreshold;this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled?(n=this.config_.streaming.liveSync.targetLatency,a=n+u,c=Math.max(0,n-u),o=this.config_.streaming.liveSync.maxPlaybackRate,d=this.config_.streaming.liveSync.minPlaybackRate):this.manifest_&&this.manifest_.serviceDescription&&(n=this.manifest_.serviceDescription.targetLatency,this.manifest_.serviceDescription.targetLatency!=null?a=this.manifest_.serviceDescription.targetLatency+u:this.manifest_.serviceDescription.maxLatency!=null&&(a=this.manifest_.serviceDescription.maxLatency),this.manifest_.serviceDescription.targetLatency!=null?c=Math.max(0,this.manifest_.serviceDescription.targetLatency-u):this.manifest_.serviceDescription.minLatency!=null&&(c=this.manifest_.serviceDescription.minLatency),o=this.manifest_.serviceDescription.maxPlaybackRate||this.config_.streaming.liveSync.maxPlaybackRate,d=this.manifest_.serviceDescription.minPlaybackRate||this.config_.streaming.liveSync.minPlaybackRate),!this.currentTargetLatency_&&typeof n=="number"&&(this.currentTargetLatency_=n);let g=this.config_.streaming.liveSync.dynamicTargetLatency.maxAttempts;if(m&&this.targetLatencyReached_&&this.currentTargetLatency_!==null&&typeof n=="number"&&this.rebufferingCount_<g&&Date.now()-this.targetLatencyReached_>f*1e3){let C=this.config_.streaming.liveSync.dynamicTargetLatency.minLatency,A=(n-C)/2;this.currentTargetLatency_=Math.max(this.currentTargetLatency_-A,C+u),this.targetLatencyReached_=Date.now()}m&&this.currentTargetLatency_!==null&&(a=this.currentTargetLatency_+u,c=this.currentTargetLatency_-u);let _=r.end-this.video_.currentTime,T=0;if(this.loadMode_==Q.LoadMode.SRC_EQUALS){let C=this.video_.buffered;if(C.length>0){let A=C.end(C.length-1);T=Math.max(o,A-r.end)}}let S=this.config_.streaming.liveSync.panicMode,b=this.config_.streaming.liveSync.panicThreshold*1e3,E=Date.now()-this.bufferObserver_.getLastRebufferTime();S&&!d&&(d=this.config_.streaming.liveSync.minPlaybackRate),S&&d&&E<=b?t!=d&&(p.debug("Time since last rebuffer ("+E+"s) is less than the live sync panicThreshold ("+b+"s). Updating playbackRate to "+d),this.trickPlay(d,!1)):a!=null&&o&&_-T>a?(t!=o&&(p.debug("Latency ("+_+"s) is greater than live sync maxLatency ("+a+"s). Updating playbackRate to "+o),this.trickPlay(o,!1)),this.targetLatencyReached_=null):c!=null&&d&&_-T<c?(t!=d&&(p.debug("Latency ("+_+"s) is smaller than live sync minLatency ("+c+"s). Updating playbackRate to "+d),this.trickPlay(d,!1)),this.targetLatencyReached_=null):t!==this.playRateController_.getDefaultRate()&&(this.cancelTrickPlay(),this.targetLatencyReached_=Date.now())}isQuartile_(t,i){return(jt.isFloatEqual(t,i,.01)||i>t)&&this.completionPercent_<t?(this.completionPercent_=t,!0):!1}checkEnded_(){this.config_&&this.config_.playRangeEnd!=1/0&&this.isEnded()&&this.video_.pause()}onVideoProgress_(){if(!this.video_)return;let t=this.seekRange(),i=t.end-t.start,r=i>0?this.video_.currentTime/i:0;if(isNaN(r))return;let s=r*100,n;this.isQuartile_(0,s)?n=Q.makeEvent_(U.EventName.Started):this.isQuartile_(25,s)?n=Q.makeEvent_(U.EventName.FirstQuartile):this.isQuartile_(50,s)?n=Q.makeEvent_(U.EventName.Midpoint):this.isQuartile_(75,s)?n=Q.makeEvent_(U.EventName.ThirdQuartile):this.isQuartile_(100,s)||s>100?(n=Q.makeEvent_(U.EventName.Complete),this.checkEnded_()):this.checkEnded_(),n&&this.dispatchEvent(n)}onSeek_(){this.playheadObservers_&&this.playheadObservers_.notifyOfSeek(!this.playhead_.getIsJumpingGap()),this.streamingEngine_&&this.streamingEngine_.seeked(),this.bufferObserver_&&this.pollBufferState_(Kt.SEEKING)}updateAbrManagerVariants_(){try{v.assert(this.manifest_,"Manifest should exist by now!"),this.manifestFilterer_.checkRestrictedVariants(this.manifest_)}catch(n){return this.onError_(n),!1}let t=this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode,i=se.getPlayableVariants(this.manifest_.variants),r=this.currentAdaptationSetCriteria_.create(i),s=this.abrManager_.setVariants(Array.from(r.values()),t);return typeof s=="boolean"?s:!0}chooseVariant_(t=!1){if(this.updateAbrManagerVariants_()){if(this.config_.abr.enabled)return this.abrManager_.chooseVariant(t);{let r=this.currentAdaptationSetCriteria_.getLastAdaptationSet();if(r){let s=Array.from(r.values());if(s.length){let n=this.streamingEngine_.getCurrentVariant();if(n&&n.video){let a=s.find(o=>o.video==n.video);if(a)return a}}}return this.abrManager_.chooseVariant(t)}}else return null}checkVariants_(){v.assert(this.manifest_,"Should have manifest!");let t=Date.now()/1e3,i=!1,r=n=>{let a="";return n.video&&(a+="video:"+n.video.id),n.audio&&(a+=a?"&":"",a+="audio:"+n.audio.id),a},s=!0;for(let n of this.manifest_.variants)n.disabledUntilTime>0&&n.disabledUntilTime<=t&&(n.disabledUntilTime=0,i=!0,p.v2("Re-enabled variant with "+r(n))),n.disabledUntilTime>0&&(s=!1);s&&this.checkVariantsTimer_.stop(),i&&this.chooseVariantAndSwitch_(!1,void 0,!1,!1)}chooseTextStream_(t){let i=null,r=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,this.currentTextLanguage_,this.currentTextRole_,this.currentTextForced_);return r.length&&(i=r[0]),!i&&t.audio&&this.config_.accessibility.handleForcedSubtitlesAutomatically&&(r=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,t.audio.language,"",!0),r.length&&(i=r[0])),i}chooseVariantAndSwitch_(t=!0,i=0,r=!1,s=!0){v.assert(this.config_,"Must not be destroyed");let n=this.chooseVariant_();n&&this.switchVariant_(n,s,t,i,r)}switchVariant_(t,i,r,s,n=!1){let a=this.streamingEngine_.getCurrentVariant();if(t==a){p.debug("Variant already selected."),r&&this.streamingEngine_.switchVariant(t,r,s,!0);return}this.addVariantToSwitchHistory_(t,i),this.streamingEngine_.switchVariant(t,r,s,n,i);let o=null;a&&(o=se.variantToTrack(a));let c=se.variantToTrack(t);c.active=!0,this.lcevcDec_&&this.lcevcDec_.updateVariant(t,this.getManifestType()),i?this.onAdaptation_(o,c):this.onVariantChanged_(o,c),this.checkAudioTracksChanged_(o,c)}switchHtml5Track_(t){v.assert(this.video_&&this.video_.audioTracks,"Video and video.audioTracks should not be null!");let r=Array.from(this.video_.audioTracks).find(o=>o.enabled);if(t.enabled=!0,!r)return;t.id!==r.id&&(r.enabled=!1);let s=this.getActiveHtml5VideoTrack_(),n=se.html5TrackToShakaTrack(r,s),a=se.html5TrackToShakaTrack(t,s);this.onVariantChanged_(n,a),this.checkAudioTracksChanged_(n,a)}getActiveHtml5VideoTrack_(){return this.video_&&this.video_.videoTracks?Array.from(this.video_.videoTracks).find(i=>i.selected):null}setInitialTextState_(t){t?(this.isTextVisible_=!0,this.textDisplayer_.setTextVisibility(!0)):(this.isTextVisible_=!1,this.textDisplayer_.setTextVisibility(!1))}onManifestUpdate_(){this.parser_&&this.parser_.update&&this.parser_.update()}onSegmentAppended_(t,i,r,s,n,a){let o=R.ContentType;if(r!=o.TEXT){if(this.playhead_){this.playhead_.notifyOfBufferingChange();let d=this.mediaSourceEngine_.bufferStart(r);!this.isDynamic()&&this.video_.paused&&!this.video_.seeking&&!this.mediaSourceEngine_.isReloadingMediaSource()&&d!=null&&d>0&&this.playhead_.getTime()<d&&!jt.isFloatEqual(this.playhead_.getTime(),d,.001)&&this.playhead_.setStartTime(d)}this.pollBufferState_()}let c=new Map().set("start",t).set("end",i).set("contentType",r).set("isMuxed",s).set("isDependency",n).set("mediaTimestamp",a);this.dispatchEvent(Q.makeEvent_(U.EventName.SegmentAppended,c))}switch_(t,i=!1,r=0){p.debug("switch_"),v.assert(this.config_.abr.enabled,"AbrManager should not call switch while disabled!"),this.manifest_&&this.streamingEngine_&&t!=this.streamingEngine_.getCurrentVariant()&&this.switchVariant_(t,!0,i,r)}onAdaptation_(t,i){let r=new Map().set("oldTrack",t).set("newTrack",i),s=Q.makeEvent_(U.EventName.Adaptation,r);this.delayDispatchEvent_(s)}onTracksChanged_(){let t=Q.makeEvent_(U.EventName.TracksChanged);this.delayDispatchEvent_(t),this.onAudioTracksChanged_()}onVariantChanged_(t,i){let r=new Map().set("oldTrack",t).set("newTrack",i),s=Q.makeEvent_(U.EventName.VariantChanged,r);this.delayDispatchEvent_(s)}checkAudioTracksChanged_(t,i){let r=!1;(!t||t.audioId!=i.audioId||t.audioGroupId!=i.audioGroupId)&&(r=!0),r&&this.onAudioTracksChanged_()}onAudioTracksChanged_(){let t=Q.makeEvent_(U.EventName.AudioTracksChanged);this.delayDispatchEvent_(t)}onTextChanged_(){let t=Q.makeEvent_(U.EventName.TextChanged);this.delayDispatchEvent_(t)}onAbrStatusChanged_(){this.config_.abr.enabled||this.restoreDisabledVariants_();let t=new Map().set("newStatus",this.config_.abr.enabled);this.delayDispatchEvent_(Q.makeEvent_(U.EventName.AbrStatusChanged,t))}setTextDisplayerLanguage_(){let t=this.getTextTracks().find(i=>i.active);t&&this.textDisplayer_&&this.textDisplayer_.setTextLanguage(t.language)}restoreDisabledVariants_(t=!0){if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE){v.assert(this.manifest_,"Should have manifest!"),p.v2("Restoring all disabled streams..."),this.checkVariantsTimer_.stop();for(let i of this.manifest_.variants)isFinite(i.disabledUntilTime)&&(i.disabledUntilTime=0);t&&this.updateAbrManagerVariants_()}}disableStream(t,i){if(!this.config_.abr.enabled||this.loadMode_===Q.LoadMode.DESTROYED||!navigator.onLine||i==0||!this.manifest_)return!1;if(this.manifest_.variants.some(s=>{let n=s[t.type];return n&&n.id!==t.id&&!s.disabledUntilTime?se.isAudio(t)?t.language===n.language:!0:!1})){let s=!1,n=!1;for(let c of this.manifest_.variants){let d=c[t.type];d&&(d.id===t.id?(c.disabledUntilTime=Date.now()/1e3+i,s=!0,p.v2("Disabled stream "+t.type+":"+t.id+" for "+i+" seconds...")):d.trickModeVideo&&d.trickModeVideo.id==t.id&&(n=!0))}if(!s&&n)return!1;v.assert(s,"Must have disabled stream"),this.checkVariantsTimer_.tickEvery(1);let{video:a}=this.getBufferedInfo(),o=a.reduce((c,{start:d,end:u})=>c+u-d,0);return this.chooseVariantAndSwitch_(!1,o,!0,!1),!0}return p.warning("No alternate stream found for active "+t.type+" stream. Will ignore request to disable stream..."),!1}async onError_(t){if(v.assert(t instanceof h,"Wrong error type!"),this.loadMode_==Q.LoadMode.DESTROYED)return;if(t.severity===h.Severity.RECOVERABLE&&this.stats_.addNonFatalError(),this.manifest_&&this.streamingEngine_&&!t.handled&&(t.code==h.Code.VIDEO_ERROR||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.STREAMING_NOT_ALLOWED||t.code==h.Code.TRANSMUXING_FAILED)&&(se.getPlayableVariants(this.manifest_.variants).length>1||this.fullyLoaded_)){if(j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&t.code==h.Code.VIDEO_ERROR)return;try{if(await this.streamingEngine_.resetMediaSource()){let o=Q.makeEvent_(U.EventName.MediaSourceRecovered);this.dispatchEvent(o);return}}catch(a){}}t.severity===h.Severity.CRITICAL&&this.restoreDisabledVariants_(!1);let i=U.EventName.Error,r=Q.makeEvent_(i,new Map().set("detail",t));this.dispatchEvent(r),r.defaultPrevented&&(t.handled=!0)}addFont(t,i){return Ge.addFont(t,i)}onRegionEvent_(t,i,r=this){let s={schemeIdUri:i.schemeIdUri,value:i.value,startTime:i.startTime,endTime:i.endTime,id:i.id,timescale:i.timescale,eventNode:i.eventNode,urlParams:i.urlParams,values:i.values},n=new Map().set("detail",s);r.dispatchEvent(Q.makeEvent_(t,n))}sendEventStreamCallback_(t){if(t.schemeIdUri!=="urn:mpeg:dash:event:callback:2015"||!t.eventNode)return;let i=I.getTextContents(t.eventNode);if(!i)return;let r=i.trim();if(!r)return;r=fe.applyUrlParams(r,t.urlParams);let s=K.RequestType.EVENT_CALLBACK,n=K.makeRequest([r],K.defaultRetryParameters());this.networkingEngine_.request(s,n).promise.catch(()=>{})}onMediaQualityChange_(t,i,r=!1){let s={bandwidth:t.bandwidth,audioSamplingRate:t.audioSamplingRate,codecs:t.codecs,contentType:t.contentType,frameRate:t.frameRate,height:t.height,mimeType:t.mimeType,channelsCount:t.channelsCount,pixelAspectRatio:t.pixelAspectRatio,width:t.width,label:t.label,roles:t.roles,language:t.language},n=new Map().set("mediaQuality",s).set("position",i);this.dispatchEvent(Q.makeEvent_(r?U.EventName.AudioTrackChanged:U.EventName.MediaQualityChanged,n))}videoErrorToShakaError_(t=!0){if(v.assert(this.video_.error,"Video error expected, but missing!"),!this.video_.error)return t?new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.VIDEO_ERROR):null;let{code:i,extended:r,message:s}=h.getMediaElementErrorDetails(this.video_.error);return!t&&i===MediaError.MEDIA_ERR_ABORTED?null:new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.VIDEO_ERROR,i,r,s)}onVideoError_(t){let i=this.videoErrorToShakaError_(!1);i&&this.onError_(i)}onKeyStatus_(t){if(!this.streamingEngine_)return;let i=Q.makeEvent_(U.EventName.KeyStatusChanged);this.dispatchEvent(i);let r=Object.keys(t);r.length==0&&p.warning("Got a key status event without any key statuses, so we don't know the real key statuses. If we don't have all the keys, you'll need to set restrictions so we don't select those tracks."),r.length==1&&r[0]==""&&(r=["00"],t={"00":t[""]});let s=r.length==1&&r[0]=="00";s&&p.warning("Got a synthetic key status event, so we don't know the real key statuses. If we don't have all the keys, you'll need to set restrictions so we don't select those tracks.");let n=Rr.restrictedStatuses,a=!1;if(v.assert(this.drmEngine_,"drmEngine should be non-null here."),r.length){let o=this.keySystem(),c=Zt.asMap(this.config_.drm.clearKeys),d=(u,m)=>{u.allowedByKeySystem=!0;for(let f of m){let g=t[s?"00":f];(g||this.drmEngine_.hasManifestInitData())&&(u.allowedByKeySystem=u.allowedByKeySystem&&!!g&&!n.includes(g))}};for(let u of this.manifest_.variants){let m=se.getVariantStreams(u);for(let f of m){let g=u.allowedByKeySystem;if(f.keyIds.size)if(f.drmInfos.length&&!c.size&&this.manifest_.type==me.HLS)for(let _ of f.drmInfos)_.keySystem==o&&(_.keyIds.size?d(u,_.keyIds):d(u,f.keyIds));else d(u,f.keyIds);g!=u.allowedByKeySystem&&(a=!0)}}}if(a){this.onTracksChanged_();let o=this.streamingEngine_.getCurrentVariant();o&&!o.allowedByKeySystem?(p.debug("Choosing new streams after key status changed"),this.chooseVariantAndSwitch_()):this.updateAbrManagerVariants_()}}static applyPlayRange_(t,i,r){i>0&&(t.isDynamic()?p.warning("|playRangeStart| has been configured for live content. Ignoring the setting."):t.setUserSeekStart(i));let s=t.getDuration();r<s&&(t.isDynamic()?p.warning("|playRangeEnd| has been configured for live content. Ignoring the setting."):t.setDuration(r))}async delayDispatchEvent_(t){await Promise.resolve(),this.loadMode_!=Q.LoadMode.DESTROYED&&this.dispatchEvent(t)}createAbortLoadError_(){return new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.LOAD_INTERRUPTED)}isRemotePlayback(){if(!this.video_)return!1;let i=j.getDevice().getRemote(this.video_);return i?i.state!="disconnected":!1}isEnded(){return!this.video_||this.video_.ended?!0:this.fullyLoaded_&&!this.isDynamic()&&this.video_.currentTime>=this.seekRange().end}static convertLegacyPreferences_(t){let i=(d,u)=>{p.alwaysWarn(d,"has been deprecated. Please use",u,"instead.")},r={preferredAudioLanguage:"language",preferredAudioRole:"role",preferredAudioLabel:"label",preferredAudioChannelCount:"channelCount",preferSpatialAudio:"spatialAudio"};if(Object.keys(r).some(d=>d in t)){let d={language:"",role:"",label:"",channelCount:0,codec:""};for(let[u,m]of Object.entries(r))u in t&&(i(u,"preferredAudio"),d[m]=t[u],delete t[u]);t.preferredAudio||(t.preferredAudio=[d])}if("preferredAudioCodecs"in t){i("preferredAudioCodecs","preferredAudio");let d=t.preferredAudioCodecs;Array.isArray(d)&&d.length&&(t.preferredAudio||(t.preferredAudio=d.map(u=>({language:"",role:"",label:"",channelCount:0,codec:u})))),delete t.preferredAudioCodecs}let n={preferredTextLanguage:"language",preferredTextRole:"role",preferForcedSubs:"forced"};if(Object.keys(n).some(d=>d in t)){let d={language:"",role:"",format:""};for(let[u,m]of Object.entries(n))u in t&&(i(u,"preferredText"),d[m]=t[u],delete t[u]);t.preferredText||(t.preferredText=[d])}if("preferredTextFormats"in t){i("preferredTextFormats","preferredText");let d=t.preferredTextFormats;Array.isArray(d)&&d.length&&(t.preferredText||(t.preferredText=d.map(u=>({language:"",role:"",format:u})))),delete t.preferredTextFormats}let o={preferredVideoLabel:"label",preferredVideoRole:"role",preferredVideoHdrLevel:"hdrLevel",preferredVideoLayout:"layout"};if(Object.keys(o).some(d=>d in t)){let d={label:"",role:"",language:"",codec:"",hdrLevel:"",layout:""};for(let[u,m]of Object.entries(o))u in t&&(i(u,"preferredVideo"),d[m]=t[u],delete t[u]);t.preferredVideo||(t.preferredVideo=[d])}if("preferredVideoCodecs"in t){i("preferredVideoCodecs","preferredVideo");let d=t.preferredVideoCodecs;Array.isArray(d)&&d.length&&(t.preferredVideo||(t.preferredVideo=d.map(u=>({label:"",role:"",language:"",codec:u,hdrLevel:"",layout:""})))),delete t.preferredVideoCodecs}}registerExtraTrackPromise_(t){this.pendingExtraTrackPromises_.add(t),t.finally(()=>this.pendingExtraTrackPromises_.delete(t))}async waitForPendingExtraTrackPromises_(){this.pendingExtraTrackPromises_.size&&await Promise.all([...this.pendingExtraTrackPromises_])}};l(Q,"LoadMode",{DESTROYED:0,NOT_LOADED:1,MEDIA_SOURCE:2,SRC_EQUALS:3}),l(Q,"TYPICAL_BUFFERING_THRESHOLD_",.5),l(Q,"supportPlugins_",new Map),l(Q,"adManagerFactory_",null),l(Q,"queueManagerFactory_",null),l(Q,"TextTrackLabel","Shaka Player TextTrack");var dt=Q;dt.version="v5.2.4-uncompiled";Cr.init(dt.version);/*! @license
490
+ */var Q=class Q extends Le{constructor(t,i=null,r){var n,a,o;super();l(this,"loadMode_");l(this,"video_");l(this,"videoContainer_");l(this,"isTextVisible_");l(this,"globalEventManager_");l(this,"attachEventManager_");l(this,"loadEventManager_");l(this,"trickPlayEventManager_");l(this,"adManagerEventManager_");l(this,"networkingEngine_");l(this,"drmEngine_");l(this,"mediaSourceEngine_");l(this,"playhead_");l(this,"operationId_");l(this,"mutex_");l(this,"playheadObservers_");l(this,"playRateController_");l(this,"bufferPoller_");l(this,"bufferObserver_");l(this,"regionTimeline_");l(this,"metadataRegionTimeline_");l(this,"emsgRegionTimeline_");l(this,"cmcdManager_");l(this,"cmsdManager_");l(this,"lcevcCanvas_");l(this,"lcevcDec_");l(this,"qualityObserver_");l(this,"streamingEngine_");l(this,"parser_");l(this,"parserFactory_");l(this,"manifest_");l(this,"assetUri_");l(this,"mimeType_");l(this,"startTime_");l(this,"fullyLoaded_");l(this,"abrManager_");l(this,"abrManagerFactory_");l(this,"nextExternalStreamId_");l(this,"externalSrcEqualsThumbnailsStreams_");l(this,"deferredCloseSegmentIndex_");l(this,"externalSrcEqualsChapterStreams_");l(this,"completionPercent_");l(this,"config_");l(this,"lowLatencyConfig_");l(this,"currentTargetLatency_");l(this,"rebufferingCount_");l(this,"targetLatencyReached_");l(this,"maxHwRes_");l(this,"manifestFilterer_");l(this,"createdPreloadManagers_");l(this,"stats_");l(this,"currentAdaptationSetCriteria_");l(this,"currentTextLanguage_");l(this,"currentTextRole_");l(this,"currentTextForced_");l(this,"cleanupOnUnload_");l(this,"adManager_");l(this,"queueManager_");l(this,"preloadDueAdManager_");l(this,"preloadDueAdManagerVideo_");l(this,"preloadDueAdManagerVideoEnded_");l(this,"externalSrcEqualsTextTracks_");l(this,"preloadDueAdManagerTimer_");l(this,"checkVariantsTimer_");l(this,"preloadNextUrl_");l(this,"textDisplayer_");l(this,"speechToText_");l(this,"pendingExtraTrackPromises_");l(this,"frameHandler_");l(this,"operationManager_");l(this,"playbackObjectUrl_");l(this,"lastTextFactory_");this.loadMode_=Q.LoadMode.NOT_LOADED,this.video_=null,this.videoContainer_=i,this.isTextVisible_=!1,this.globalEventManager_=new ue,this.attachEventManager_=new ue,this.loadEventManager_=new ue,this.trickPlayEventManager_=new ue,this.adManagerEventManager_=new ue,this.networkingEngine_=null,this.drmEngine_=null,this.mediaSourceEngine_=null,this.playhead_=null,this.operationId_=0,this.mutex_=new Zr,this.playheadObservers_=null,this.playRateController_=null,this.bufferPoller_=null,this.bufferObserver_=null,this.regionTimeline_=null,this.metadataRegionTimeline_=null,this.emsgRegionTimeline_=null,this.cmcdManager_=null,this.cmsdManager_=null,this.lcevcCanvas_=null,this.lcevcDec_=null,this.qualityObserver_=null,this.streamingEngine_=null,this.parser_=null,this.parserFactory_=null,this.manifest_=null,this.assetUri_=null,this.mimeType_=null,this.startTime_=null,this.fullyLoaded_=!1,this.abrManager_=null,this.abrManagerFactory_=null,this.nextExternalStreamId_=1e9,this.externalSrcEqualsThumbnailsStreams_=[],this.deferredCloseSegmentIndex_=new Map,this.externalSrcEqualsChapterStreams_=[],this.completionPercent_=-1,this.config_=this.defaultConfig_(),this.lowLatencyConfig_=st.createDefaultForLL(),this.currentTargetLatency_=null,this.rebufferingCount_=-1,this.targetLatencyReached_=null,this.lastTextFactory_,this.maxHwRes_={width:1/0,height:1/0},this.manifestFilterer_=new Rr(this.config_,this.maxHwRes_,null),this.createdPreloadManagers_=[],this.stats_=null,this.currentAdaptationSetCriteria_=this.config_.adaptationSetCriteriaFactory();let s={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem()};st.addDeprecatedConfigFields(s),this.currentAdaptationSetCriteria_.configure(s),this.currentTextLanguage_=((n=this.config_.preferredText[0])==null?void 0:n.language)||"",this.currentTextRole_=((a=this.config_.preferredText[0])==null?void 0:a.role)||"",this.currentTextForced_=((o=this.config_.preferredText[0])==null?void 0:o.forced)||!1,this.cleanupOnUnload_=[],r&&r(this),this.cmcdManager_=this.createCmcd_(),this.cmsdManager_=this.createCmsd_(),this.networkingEngine_=this.createNetworkingEngine(),this.adManager_=null,this.queueManager_=null,this.preloadDueAdManager_=null,this.preloadDueAdManagerVideo_=null,this.preloadDueAdManagerVideoEnded_=!1,this.externalSrcEqualsTextTracks_=[],this.preloadDueAdManagerTimer_=new ae(async()=>{this.preloadDueAdManager_&&(v.assert(this.preloadDueAdManagerVideo_,"Must have video"),await this.attach(this.preloadDueAdManagerVideo_,!0),await this.load(this.preloadDueAdManager_),this.preloadDueAdManagerVideoEnded_?this.preloadDueAdManagerVideo_.pause():this.preloadDueAdManagerVideo_.play(),this.preloadDueAdManager_=null,this.preloadDueAdManagerVideoEnded_=!1)}),Q.adManagerFactory_&&(this.adManager_=Q.adManagerFactory_(this),this.adManager_.configure(this.config_.ads),this.adManagerEventManager_.listen(this.adManager_,"ad-content-pause-requested",async c=>{if(this.preloadDueAdManagerTimer_.stop(),!this.preloadDueAdManager_){this.preloadDueAdManagerVideo_=this.video_,this.preloadDueAdManagerVideoEnded_=this.isEnded();let d=c.saveLivePosition||!1,u=!0;this.isLive()&&(u=d),this.preloadDueAdManager_=await this.detachAndSavePreload(!0,u)}}),this.adManagerEventManager_.listen(this.adManager_,"ad-content-resume-requested",c=>{let d=c.offset||0;this.preloadDueAdManager_&&this.preloadDueAdManager_.setOffsetToStartTime(d),this.preloadDueAdManagerTimer_.tickAfter(.1)}),this.adManagerEventManager_.listen(this.adManager_,"ad-content-attach-requested",async c=>{!this.video_&&this.preloadDueAdManagerVideo_&&(await this.attach(this.preloadDueAdManagerVideo_,!0),this.preloadDueAdManagerVideo_=null)})),Q.queueManagerFactory_&&(this.queueManager_=Q.queueManagerFactory_(this),this.queueManager_.configure(this.config_.queue)),this.globalEventManager_.listen(window,"online",()=>{this.restoreDisabledVariants_(),this.retryStreaming()}),this.checkVariantsTimer_=new ae(()=>this.checkVariants_()),this.preloadNextUrl_=null,this.textDisplayer_=null,this.speechToText_=null,this.pendingExtraTrackPromises_=new Set,this.frameHandler_=null,this.operationManager_=new gi,this.playbackObjectUrl_=null,t&&(p.alwaysWarn("Please migrate from initializing Player with a mediaElement; use the attach method instead."),this.attach(t,!0))}createLcevcDec_(t,i){this.lcevcDec_==null&&(this.lcevcDec_=new wr(this.video_,this.lcevcCanvas_,t,i),this.mediaSourceEngine_&&this.mediaSourceEngine_.updateLcevcDec(this.lcevcDec_))}closeLcevcDec_(){this.lcevcDec_!=null&&(this.lcevcDec_.hideCanvas(),this.lcevcDec_.release(),this.lcevcDec_=null)}setupLcevc_(t,i){i||t.lcevc.enabled?(this.closeLcevcDec_(),this.createLcevcDec_(t.lcevc,i)):this.closeLcevcDec_()}static makeEvent_(t,i){return new U(t,i)}async destroy(){if(this.loadMode_==Q.LoadMode.DESTROYED)return;this.closeLcevcDec_();let t=this.detach();this.loadMode_=Q.LoadMode.DESTROYED,await t,await this.destroyAllPreloads(),this.globalEventManager_&&(this.globalEventManager_.release(),this.globalEventManager_=null),this.attachEventManager_&&(this.attachEventManager_.release(),this.attachEventManager_=null),this.loadEventManager_&&(this.loadEventManager_.release(),this.loadEventManager_=null),this.trickPlayEventManager_&&(this.trickPlayEventManager_.release(),this.trickPlayEventManager_=null),this.adManagerEventManager_&&(this.adManagerEventManager_.release(),this.adManagerEventManager_=null),this.abrManagerFactory_=null,this.config_=null,this.stats_=null,this.videoContainer_=null,this.cmcdManager_=null,this.cmsdManager_=null,this.networkingEngine_&&(await this.networkingEngine_.destroy(),this.networkingEngine_=null),this.abrManager_&&(this.abrManager_.release(),this.abrManager_=null),this.queueManager_&&(this.queueManager_.destroy(),this.queueManager_=null),this.speechToText_&&(this.speechToText_.release(),this.speechToText_=null),this.frameHandler_&&(this.frameHandler_.release(),this.frameHandler_=null),super.release()}static registerSupportPlugin(t,i){Q.supportPlugins_.set(t,i)}static setAdManagerFactory(t){Q.adManagerFactory_=t}static setQueueManagerFactory(t){Q.queueManagerFactory_=t}static isBrowserSupported(){if(window.Promise||p.alwaysWarn("A Promise implementation or polyfill is required"),!(!!window.Promise&&!!window.Uint8Array&&!!Array.prototype.forEach)||(navigator.userAgent||"").includes("Trident/"))return!1;let r=j.getDevice();return r.supportsMediaSource()?!0:r.supportsMediaType("application/x-mpegurl")}static async probeSupport(t=!0){v.assert(Q.isBrowserSupported(),"Must have basic support");let i={};t&&(i=await Bi.probeSupport());let r=me.probeSupport(),s=dr.probeSupport(),n=j.getDevice();v.assert(n,"device must be non-null");let a=await n.detectMaxHardwareResolution(),o={manifest:r,media:s,drm:i,hardwareResolution:a};return Q.supportPlugins_.forEach((d,u)=>{o[u]=d()}),o}makeStateChangeEvent_(t){this.dispatchEvent(Q.makeEvent_(U.EventName.OnStateChange,new Map().set("state",t)))}async attach(t,i=!0){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();let r=this.video_&&this.video_==t;if(this.video_&&this.video_!=t&&await this.detach(),!await this.atomicOperationAcquireMutex_("attach"))try{if(!r){this.makeStateChangeEvent_("attach");let n=a=>this.onVideoError_(a);this.attachEventManager_.listen(t,"error",n),this.video_=t,this.cmcdManager_&&this.cmcdManager_.setMediaElement(t)}let s=j.getDevice();i&&s.supportsMediaSource()&&!this.mediaSourceEngine_&&await this.initializeMediaSourceEngineInner_()}catch(s){throw await this.detach(),s}finally{this.mutex_.release()}}attachCanvas(t){this.lcevcCanvas_=t}async detach(t=!1,i=!1){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();if(await this.unload(!1,t,i),!await this.atomicOperationAcquireMutex_("detach"))try{this.video_&&(this.attachEventManager_.removeAll(),this.video_=null),this.makeStateChangeEvent_("detach"),this.adManager_&&!t&&this.adManager_.release()}finally{this.mutex_.release()}}async atomicOperationAcquireMutex_(t){let i=++this.operationId_;return await this.mutex_.acquire(t),i!=this.operationId_?(this.mutex_.release(),!0):!1}async unload(t=!0,i=!1,r=!1){if(this.loadMode_!=Q.LoadMode.DESTROYED&&(this.loadMode_=Q.LoadMode.NOT_LOADED),await this.atomicOperationAcquireMutex_("unload"))return;try{this.fullyLoaded_=!1,this.makeStateChangeEvent_("unload"),this.closeLcevcDec_();let n=this.cleanupOnUnload_.map(o=>o());this.cleanupOnUnload_=[],await Promise.all(n);let a=new Map().set("isSwitchingContent",r);if(this.dispatchEvent(Q.makeEvent_(U.EventName.Unloading,a)),this.regionTimeline_&&(this.regionTimeline_.release(),this.regionTimeline_=null),this.metadataRegionTimeline_&&(this.metadataRegionTimeline_.release(),this.metadataRegionTimeline_=null),this.emsgRegionTimeline_&&(this.emsgRegionTimeline_.release(),this.emsgRegionTimeline_=null),this.video_&&(this.loadEventManager_.removeAll(),this.trickPlayEventManager_.removeAll()),this.checkVariantsTimer_.stop(),this.playheadObservers_&&(this.playheadObservers_.release(),this.playheadObservers_=null),this.bufferPoller_&&(this.bufferPoller_.stop(),this.bufferPoller_=null),this.parser_&&(await this.parser_.stop(),this.parser_=null,this.parserFactory_=null),this.abrManager_&&this.abrManager_.stop(),this.streamingEngine_&&(await this.streamingEngine_.destroy(),this.streamingEngine_=null),this.playRateController_&&(this.playRateController_.release(),this.playRateController_=null),this.playhead_&&(this.playhead_.release(),this.playhead_=null),de.isMediaKeysPolyfilled("webkit")&&this.drmEngine_&&(await this.drmEngine_.destroy(),this.drmEngine_=null),this.mediaSourceEngine_&&(await this.mediaSourceEngine_.destroy(),this.mediaSourceEngine_=null),this.adManager_&&!i&&this.adManager_.onAssetUnload(),this.preloadDueAdManager_&&!i&&(this.preloadDueAdManager_.destroy(),this.preloadDueAdManager_=null),i||this.preloadDueAdManagerTimer_.stop(),this.cmcdManager_&&this.cmcdManager_.reset(),this.cmsdManager_&&this.cmsdManager_.reset(),this.textDisplayer_&&(await this.textDisplayer_.destroy(),this.textDisplayer_=null),this.isTextVisible_=!1,this.speechToText_&&this.speechToText_.disable(),this.pendingExtraTrackPromises_.clear(),this.frameHandler_&&(this.frameHandler_.release(),this.frameHandler_=null),await this.operationManager_.destroy(),this.video_){for(let o of this.externalSrcEqualsTextTracks_)o.src.startsWith("blob:")&&URL.revokeObjectURL(o.src),o.remove();this.externalSrcEqualsTextTracks_=[],Ge.clearSourceFromVideo(this.video_)&&this.video_.load()}if(this.drmEngine_&&(await this.drmEngine_.destroy(),this.drmEngine_=null),this.preloadNextUrl_&&this.assetUri_!=this.preloadNextUrl_.getAssetUri()&&(this.preloadNextUrl_.isDestroyed()||this.preloadNextUrl_.destroy(),this.preloadNextUrl_=null),this.assetUri_=null,this.mimeType_=null,this.bufferObserver_=null,this.manifest_){for(let o of this.manifest_.variants)for(let c of[o.audio,o.video])c&&c.segmentIndex&&c.segmentIndex.release();for(let o of this.manifest_.textStreams)o.segmentIndex&&o.segmentIndex.release()}this.config_&&this.config_.streaming.clearDecodingCache&&(se.clearDecodingConfigCache(),de.clearMediaKeySystemAccessMap()),this.manifest_=null,this.stats_=new tr,this.lastTextFactory_=null,this.targetLatencyReached_=null,this.currentTargetLatency_=null,this.rebufferingCount_=-1,this.externalSrcEqualsThumbnailsStreams_=[];for(let o of this.deferredCloseSegmentIndex_.values())o.stop();this.deferredCloseSegmentIndex_.clear(),this.externalSrcEqualsChapterStreams_=[],this.completionPercent_=-1,this.networkingEngine_&&this.networkingEngine_.clearCommonAccessTokenMap(),this.playbackObjectUrl_&&(URL.revokeObjectURL(this.playbackObjectUrl_),this.playbackObjectUrl_=null),this.updateBufferState_()}finally{this.mutex_.release()}let s=j.getDevice();t&&s.supportsMediaSource()&&!this.mediaSourceEngine_&&this.video_&&await this.initializeMediaSourceEngineInner_()}updateStartTime(t){this.startTime_=t}async load(t,i=null,r){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();!this.video_&&this.preloadDueAdManagerVideo_&&(await this.attach(this.preloadDueAdManagerVideo_,!0),this.preloadDueAdManagerVideo_=null);let s=null,n="";if(r=r==null?void 0:r.toLowerCase(),t instanceof Ps){if(t.isDestroyed())throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.PRELOAD_DESTROYED);s=t,n=s.getAssetUri()||""}else n=t||"";if(await this.mutex_.acquire("load"),this.mutex_.release(),!this.video_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.NO_VIDEO_ELEMENT);this.assetUri_&&(this.assetUri_=n,await this.unload(!1,!1,!0)),this.cmcdManager_&&this.cmcdManager_.onLoad();let a=++this.operationId_,o=async()=>{if(this.operationId_!=a)throw s&&await s.destroy(),this.createAbortLoadError_()},c=async(d,u)=>{try{await this.mutex_.acquire(u),await o(),await d(),await o(),s&&this.config_&&s.reconfigure(this.config_)}finally{this.mutex_.release()}};try{i==null&&s&&(i=s.getStartTime()),this.startTime_=i,this.fullyLoaded_=!1,this.dispatchEvent(Q.makeEvent_(U.EventName.Loading)),s?r=s.getMimeType():r||await c(async()=>{r=await this.guessMimeType_(n)},"guessMimeType_");let d=!!s;s?(s.setEventHandoffTarget(this),this.stats_=s.getStats()):(s=await this.preloadInner_(n,i,r,!0,this.config_),s?(s.markIsLoad(),s.setEventHandoffTarget(this),this.stats_=s.getStats(),s.start(),s.waitForFinish().catch(()=>{})):this.stats_=new tr);let u=!s,m=Date.now()/1e3;this.stats_=s?s.getStats():new tr,this.assetUri_=n,this.mimeType_=r||null,this.updateBufferState_();let f=()=>{let g=this.video_?this.video_.buffered:null;return{start:Je.bufferStart(g)||0,end:Je.bufferEnd(g)||0}};if(this.metadataRegionTimeline_=new zr(f),this.metadataRegionTimeline_.addEventListener("regionadd",g=>{let _=g.region;this.dispatchMetadataEvent_(_,U.EventName.MetadataAdded)}),u)await c(async()=>{v.assert(r,"We should know the mimeType by now!"),await this.initializeSrcEqualsDrmInner_(r)},"initializeSrcEqualsDrmInner_"),await c(async()=>{v.assert(r,"We should know the mimeType by now!"),await this.srcEqualsInner_(m,r)},"srcEqualsInner_");else{this.emsgRegionTimeline_=new zr(f),await c(async()=>{await s.waitForManifest(),this.parserFactory_=s.getParserFactory(),this.parser_=s.receiveParser(),this.manifest_=s.getManifest()},"waitForFinish"),this.mediaSourceEngine_||await c(async()=>{await this.initializeMediaSourceEngineInner_()},"initializeMediaSourceEngineInner_"),await c(async()=>{await s.waitForFinish()},"waitForFinish"),this.config_=s.getConfiguration(),this.manifestFilterer_=s.getManifestFilterer(),this.parser_&&this.parser_.setMediaElement&&this.video_&&this.parser_.setMediaElement(this.video_),this.regionTimeline_=s.receiveRegionTimeline(),this.qualityObserver_=s.getQualityObserver();let g=s.getCurrentAdaptationSetCriteria();if(g&&(this.currentAdaptationSetCriteria_=g),d&&this.video_&&this.video_.nodeName==="AUDIO"&&(this.makeManifestAudioOnly_(),this.configure("manifest.disableVideo",!0)),s.getDrmEngine()||await c(async()=>{await s.initializeDrm(this.video_)},"drmEngine_.init"),this.drmEngine_=s.receiveDrmEngine(),await c(async()=>{await this.drmEngine_.attach(this.video_)},"drmEngine_.attach"),this.currentAdaptationSetCriteria_){let b=this.currentAdaptationSetCriteria_.getConfiguration();b.keySystem=this.keySystem(),this.currentAdaptationSetCriteria_.configure(b)}let _=this.config_.abrFactory;(!this.abrManager_||this.abrManagerFactory_!=_)&&(this.abrManagerFactory_=_,this.abrManager_&&this.abrManager_.release(),this.abrManager_=_(),this.abrManager_.configure(this.config_.abr));let T=s.receiveSegmentPrefetchesById(),S=s.getPrefetchedVariant();await c(async()=>{await this.loadInner_(m,S,T)},"loadInner_"),s.stopQueuingLatePhaseQueuedOperations(),this.mimeType_&&j.getDevice().supportsAirPlay()&&O.isHlsType(this.mimeType_)&&this.mediaSourceEngine_.addSecondarySource(this.assetUri_,this.mimeType_)}this.dispatchEvent(Q.makeEvent_(U.EventName.Loaded))}catch(d){throw d&&d.code!=h.Code.LOAD_INTERRUPTED&&await this.unload(!1),d}finally{s&&await s.destroy(),this.preloadNextUrl_=null}}makeManifestAudioOnly_(){for(let t of this.manifest_.variants)t.video&&(t.video.closeSegmentIndex(),t.video=null),t.audio&&t.audio.bandwidth?t.bandwidth=t.audio.bandwidth:t.bandwidth=0;this.manifest_.variants=this.manifest_.variants.filter(t=>t.audio)}async unloadAndSavePreload(t=!0,i=!1,r=!1,s=!1){let n=await this.savePreload_(r);return await this.unload(t,i,s),n}async detachAndSavePreload(t=!1,i=!1,r=!1){let s=await this.savePreload_(i);return await this.detach(t,r),s}async savePreload_(t=!1){let i=null;if(this.manifest_&&this.parser_&&this.parserFactory_&&this.assetUri_&&this.config_){let r=this.video_.currentTime;t||(r=null),i=await this.makePreloadManager_(this.assetUri_,r,this.mimeType_,this.config_,!0,!1),this.createdPreloadManagers_.push(i),this.parser_&&this.parser_.setMediaElement&&this.parser_.setMediaElement(null);let s=this.streamingEngine_?this.streamingEngine_.getCurrentVariant():null;s&&i.setPrefetchVariant(s),i.attachManifest(this.manifest_,this.parser_,this.parserFactory_),i.attachAdaptationSetCriteria(this.currentAdaptationSetCriteria_),i.start(),this.manifest_=null,this.parser_=null,this.parserFactory_=null,this.abrManager_=null,this.abrManagerFactory_=null}return i}async preload(t,i=null,r,s,n=!1){v.assert(this.config_,"Config must not be null!"),r=r==null?void 0:r.toLowerCase();let a=this.defaultConfig_();st.mergeConfigObjects(a,s||this.config_,this.defaultConfig_());let o=await this.preloadInner_(t,i,r,!1,a);if(o)o.start();else{let c=new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.SRC_EQUALS_PRELOAD_NOT_SUPPORTED);if(n)throw c;this.onError_(c)}return o}async destroyAllPreloads(){let t=[];for(let i of this.createdPreloadManagers_)i.isDestroyed()||t.push(i.destroy());this.createdPreloadManagers_=[],await Promise.all(t)}async preloadInner_(t,i,r,s=!1,n){if(v.assert(this.networkingEngine_,"Should have a net engine!"),v.assert(this.config_,"Config must not be null!"),r||(r=await this.guessMimeType_(t)),this.shouldUseSrcEquals_(r))return null;let o=n||this.config_,c=!1;s&&this.video_&&this.video_.nodeName==="AUDIO"&&(c=!0);let d=this.makePreloadManager_(t,i,r||null,o,!s,c);return s?d=d.then(u=>(u.markIsLoad(),u)):d=d.then(u=>(this.createdPreloadManagers_.push(u),u)),d}async makePreloadManager_(t,i,r,s,n=!0,a=!1){v.assert(this.networkingEngine_,"Must have net engine");let o=null,c=Oe.cloneObject(s);a&&(c.manifest.disableVideo=!0);let d=()=>(v.assert(o,"Must have preload manager"),o.hasBeenAttached()&&o.isDestroyed()?null:o),u=()=>d()?d().getConfiguration():this.config_;if(this.maxHwRes_.width==1/0&&this.maxHwRes_.height==1/0&&!this.config_.ignoreHardwareResolution){let A=j.getDevice();v.assert(A,"device must be non-null");let w=await A.detectMaxHardwareResolution();this.maxHwRes_.width=w.width,this.maxHwRes_.height=w.height}let m=new Rr(c,this.maxHwRes_,null),f={networkingEngine:this.networkingEngine_,filter:async A=>{if(await m.filterManifest(A)){let M=Q.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),o.dispatchEvent(M)}},makeTextStreamsForClosedCaptions:A=>this.makeTextStreamsForClosedCaptions_(A),onTimelineRegionAdded:A=>{o.getRegionTimeline().addRegion(A)},onEvent:A=>o.dispatchEvent(A),onError:A=>o.onError(A),isLowLatencyMode:()=>u().streaming.lowLatencyMode,updateDuration:()=>{this.streamingEngine_&&o.hasBeenAttached()&&this.streamingEngine_.updateDuration()},newDrmInfo:A=>{let w=o.getDrmEngine(),M=w?w.getDrmInfo():null;M&&w.getMediaKeys()&&m.processDrmInfos(M.keySystem,A)},onManifestUpdated:()=>{let A=U.EventName.ManifestUpdated,w=new Map().set("isLive",this.isLive()).set("isInProgress",this.isInProgress());o.dispatchEvent(Q.makeEvent_(A,w)),o.addQueuedOperation(!1,()=>{this.adManager_&&this.adManager_.onManifestUpdated(this.isDynamic())})},getBandwidthEstimate:()=>this.abrManager_.getBandwidthEstimate(),onMetadata:(A,w,M,x)=>{let k=A;(A=="com.apple.hls.interstitial"||A=="com.apple.hls.overlay")&&(k="com.apple.quicktime.HLS");let L={type:k,startTime:w,endTime:M,values:x},V=new Promise(ee=>{o.addQueuedOperation(!1,async()=>{if(this.adManager_){if(this.video_)try{await this.adManager_.onHLSMetadata(L)}catch(oe){}ee()}})});for(let ee of x)ee.name!="ID"&&o.addQueuedOperation(!1,()=>{this.addMetadataToRegionTimeline_(w,M,k,ee)});return V},disableStream:A=>this.disableStream(A,this.config_.streaming.maxDisabledTime),addFont:(A,w)=>this.addFont(A,w),getStreamingRetryParameters:()=>this.config_.streaming.retryParameters,onSegmentReceived:(A,w)=>{o.addQueuedOperation(!1,()=>{var M;(M=this.abrManager_)==null||M.segmentDownloaded(A,w,!0)})}},g=new zr(()=>this.seekRange());g.addEventListener("regionadd",A=>{let w=A.region;this.onRegionEvent_(U.EventName.TimelineRegionAdded,w,o),o.addQueuedOperation(!1,()=>{this.adManager_&&this.adManager_.onDASHMetadata(w)})});let _=null;c.streaming.observeQualityChanges&&(_=new ur(()=>this.getBufferedInfo()),_.addEventListener("qualitychange",A=>{let w=A.quality,M=A.position;this.onMediaQualityChange_(w,M)}),_.addEventListener("audiotrackchange",A=>{let w=A.quality,M=A.position;this.onMediaQualityChange_(w,M,!0)}));let T=!0,S={netEngine:this.networkingEngine_,onError:A=>o.onError(A),onKeyStatus:A=>{o.addQueuedOperation(!0,()=>{this.drmEngine_&&this.onKeyStatus_(A)})},onExpirationUpdated:(A,w)=>{let M=Q.makeEvent_(U.EventName.ExpirationUpdated);o.dispatchEvent(M);let x=o.getParser();x&&x.onExpirationUpdated&&x.onExpirationUpdated(A,w)},onEvent:A=>{if(o.dispatchEvent(A),A.type==U.EventName.DrmSessionUpdate&&T){T=!1;let M=Date.now()/1e3-o.getStartTimeOfDRM();(this.stats_||o.getStats()).setDrmTime(M),this.lcevcDec_&&this.lcevcDec_.hideCanvas()}}},b=this.createNetworkingEngine(d);this.networkingEngine_.copyFiltersInto(b);let C={config:c,manifestPlayerInterface:f,regionTimeline:g,qualityObserver:_,createDrmEngine:()=>this.createDrmEngine(S),manifestFilterer:m,networkingEngine:b,allowPrefetch:n};return o=new Ps(t,r,i,C),o}async guessMimeType_(t){v.assert(this.networkingEngine_,"Should have a net engine!");let i=this.config_.manifest.retryParameters,r=await ct.getMimeType(t,this.networkingEngine_,i);return O.isHlsType(r)?j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(r="application/vnd.apple.mpegurl"):r==="video/quicktime"&&j.getDevice().getBrowserEngine()===ie.BrowserEngine.CHROMIUM&&(r="video/mp4"),r}shouldUseSrcEquals_(t){if(!j.getDevice().supportsMediaSource())return!0;if(t){let s=(this.video_||Ge.anyMediaElement()).canPlayType(t)!="";if(!s)return!1;let n=me.isSupported(t);return n?(v.assert(s&&n,"Both native and MSE playback should be possible!"),O.isHlsType(t)?j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(this.config_.drm.servers["com.apple.fps"]||this.config_.drm.servers["com.apple.fps.1_0"])?this.config_.streaming.useNativeHlsForFairPlay:this.config_.streaming.preferNativeHls:O.isDashType(t)?this.config_.streaming.preferNativeDash:!1):!0}return!1}createAndConfigureTextDisplayer_(t=!1){let i=this.config_.textDisplayFactory;if(this.lastTextFactory_!==i||t){let r=this.textDisplayer_;this.textDisplayer_=i(this),this.textDisplayer_.configure(this.config_.textDisplayer),r?(this.textDisplayer_.setTextVisibility(r.isTextVisible()),r.destroy().catch(()=>{})):this.textDisplayer_.setTextVisibility(this.isTextVisible_),this.mediaSourceEngine_&&this.mediaSourceEngine_.setTextDisplayer(this.textDisplayer_),this.lastTextFactory_=i,this.streamingEngine_&&this.streamingEngine_.reloadTextStream()}else this.textDisplayer_&&this.textDisplayer_.configure(this.config_.textDisplayer)}async initializeMediaSourceEngineInner_(){let t=j.getDevice();v.assert(t.supportsMediaSource(),"We should not be initializing media source on a platform that does not support media source."),v.assert(this.video_,"We should have a media element when initializing media source."),v.assert(this.mediaSourceEngine_==null,"We should not have a media source engine yet."),this.makeStateChangeEvent_("media-source"),this.config_.mediaSource.useSourceElements&&Ge.clearSourceFromVideo(this.video_),this.createAndConfigureTextDisplayer_(),v.assert(this.textDisplayer_,"Text displayer should be created already");let i=this.createMediaSourceEngine(this.video_,this.textDisplayer_,{getKeySystem:()=>this.keySystem(),onMetadata:(s,n,a)=>{this.processTimedMetadataMediaSrc_(s,n,a)},onEmsg:s=>{this.addEmsgToRegionTimeline_(s)},onEvent:s=>this.dispatchEvent(s),onManifestUpdate:()=>this.onManifestUpdate_(),getDrmInfo:()=>this.drmInfo()},this.lcevcDec_,this.config_.mediaSource),{segmentRelativeVttTiming:r}=this.config_.manifest;i.setSegmentRelativeVttTiming(r),await i.open(),this.mediaSourceEngine_=i}setupPlayRateController_(t){this.playRateController_=new dn({getRate:()=>t.playbackRate,getDefaultRate:()=>t.defaultPlaybackRate,setRate:i=>{t.playbackRate=i},movePlayhead:i=>{let r=t.currentTime;if(!Je.isBuffered(t.buffered,r)||t.readyState<=HTMLMediaElement.HAVE_CURRENT_DATA)return;let s=r+i,n=this.seekRange();if(s<n.start)r!==n.start&&(t.currentTime=n.start);else if(s>n.end)r!==n.end&&(t.currentTime=n.end);else{if(i<0){let o=Je.getBufferedInfo(t.buffered);for(let c=o.length-1;c>=0;c--)if(s>=o[c].start){s>o[c].end&&(s=Math.max(o[c].start,o[c].end-.5));break}}t.currentTime=s}},isPaused:()=>t.paused})}addBasicMediaListeners_(t,i){this.loadEventManager_.listenMulti(t,[Kt.PLAYING,Kt.PAUSE,Kt.ENDED],()=>{this.updateStateHistory_()}),this.loadEventManager_.listen(t,"ratechange",()=>{this.onRateChange_()});let s=j.getDevice().getRemote(t);s&&(this.loadEventManager_.listen(s,"connect",()=>{this.streamingEngine_&&s.state=="connected"&&this.onTextChanged_(),this.onTracksChanged_()}),this.loadEventManager_.listen(s,"connecting",()=>this.onTracksChanged_()),this.loadEventManager_.listen(s,"disconnect",async()=>{this.streamingEngine_&&s.state=="disconnected"&&(await this.streamingEngine_.resetMediaSource(),this.onTextChanged_()),this.onTracksChanged_()})),t.audioTracks&&this.loadEventManager_.listenMulti(t.audioTracks,["addtrack","removetrack","change"],()=>{this.onTracksChanged_()}),t.videoTracks&&this.loadEventManager_.listenMulti(t.videoTracks,["addtrack","removetrack","change"],()=>{this.onTracksChanged_()});let n=t;if((n.webkitPresentationMode||n.webkitSupportsFullscreen)&&this.loadEventManager_.listen(n,"webkitpresentationmodechanged",()=>{this.videoContainer_&&this.createAndConfigureTextDisplayer_(!0)}),t.textTracks){let a=()=>{this.loadMode_===Q.LoadMode.SRC_EQUALS&&this.textDisplayer_ instanceof mr&&this.onTextChanged_(),this.onTracksChanged_()};this.loadEventManager_.listen(t.textTracks,"addtrack",o=>{let c=o;if(c.track){let d=c.track;switch(v.assert(d instanceof TextTrack,"Wrong track type!"),d.kind){case"metadata":this.processTimedMetadata_(d);break;case"chapters":this.activateChaptersTrack_(d);break;default:a();break}}}),this.loadEventManager_.listenMulti(t.textTracks,["removetrack","change"],a)}t.preload!="none"&&(this.loadEventManager_.listenOnce(t,"loadedmetadata",()=>{let o=Date.now()/1e3-i;this.stats_.setLoadLatency(o)}),this.isAudioOnly()||(this.frameHandler_=new es(t),this.frameHandler_.start(()=>{this.frameHandler_.release(),this.frameHandler_=null;let c=Date.now()/1e3-i;this.stats_.setTimeToFirstFrame(c)},!0)||this.loadEventManager_.listenOnce(t,"loadeddata",()=>{let c=Date.now()/1e3-i;this.stats_.setTimeToFirstFrame(c)})))}async loadInner_(t,i,r){var g;v.assert(this.video_,"We should have a media element by now."),v.assert(this.manifest_,"The manifest should already be parsed."),v.assert(this.assetUri_,"We should have an asset uri by now."),v.assert(this.abrManager_,"We should have an abr manager by now."),this.makeStateChangeEvent_("load");let s=this.video_;this.setupPlayRateController_(s),this.addBasicMediaListeners_(s,t),"onchange"in window.screen&&this.loadEventManager_.listen(window.screen,"change",()=>{if(this.currentAdaptationSetCriteria_.getConfiguration){let _=this.currentAdaptationSetCriteria_.getConfiguration();_.preferredVideo.some(S=>S.hdrLevel=="AUTO")?this.updateAbrManagerVariants_():this.config_.preferredVideo.some(b=>b.hdrLevel=="AUTO")&&this.config_.abr.enabled&&(_.preferredVideo=this.config_.preferredVideo,st.addDeprecatedConfigFields(_),this.currentAdaptationSetCriteria_.configure(_),this.updateAbrManagerVariants_())}});let n=!1;for(let _ of this.manifest_.variants){let T=_.video&&_.video.dependencyStream;T&&(n=wr.isStreamSupported(T))}this.setupLcevc_(this.config_,n),this.currentTextLanguage_=this.config_.preferredText[0]&&this.config_.preferredText[0].language||"",this.currentTextRole_=this.config_.preferredText[0]&&this.config_.preferredText[0].role||"",this.currentTextForced_=((g=this.config_.preferredText[0])==null?void 0:g.forced)||!1,Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.abrManager_.init((_,T,S)=>this.switch_(_,T,S),(_,T)=>{var E;let S=(E=this.streamingEngine_)==null?void 0:E.getCurrentVariant(),b=S&&S[_];b&&this.disableStream(b,T)}),this.abrManager_.setMediaElement(s),this.abrManager_.setCmsdManager(this.cmsdManager_),this.streamingEngine_=this.createStreamingEngine(),this.streamingEngine_.configure(this.config_.streaming),this.loadMode_=Q.LoadMode.MEDIA_SOURCE,this.dispatchEvent(Q.makeEvent_(U.EventName.Streaming));let a=i,o,c;do{if(c=this.streamingEngine_.getCurrentVariant(),!c){let T=this.chooseVariant_(!0);i||(a=T),v.assert(a,"Must choose an initial variant!")}let _=[];o=c||a;for(let T of[o.video,o.audio])T&&!T.segmentIndex&&(_.push(T.createSegmentIndex()),T.dependencyStream&&_.push(T.dependencyStream.createSegmentIndex()));_.length>0&&await Promise.all(_)}while(!o||o.disabledUntilTime!=0);this.updateAbrManagerVariants_(),this.parser_&&this.parser_.onInitialVariantChosen&&this.parser_.onInitialVariantChosen(o),this.manifest_.isLowLatency&&(this.config_.streaming.lowLatencyMode?this.configure(this.lowLatencyConfig_):p.alwaysWarn("Low-latency live stream detected, but low-latency streaming mode is not enabled in Shaka Player. Set streaming.lowLatencyMode configuration to true, and see https://bit.ly/3clctcj for details.")),this.cmcdManager_&&(this.cmcdManager_.setLowLatency(this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode),this.cmcdManager_.setStartTimeOfLoad(t*1e3)),Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.streamingEngine_.applyPlayRange(this.config_.playRangeStart,this.config_.playRangeEnd),await this.waitForPendingExtraTrackPromises_(),this.fullyLoaded_=!0,this.dispatchEvent(Q.makeEvent_(U.EventName.CanUpdateStartTime));let d=_=>{this.playhead_=this.createPlayhead(_),this.playheadObservers_=this.createPlayheadObserversForMSE_(_),this.startBufferManagement_(s,!1)};if(!this.config_.streaming.startAtSegmentBoundary){let _=this.startTime_;_==null&&this.manifest_.startTime&&(_=this.manifest_.startTime),d(_)}if(!c){if(v.assert(a,"Must have chosen an initial variant!"),this.config_.streaming.startAtSegmentBoundary){let _=this.manifest_.presentationTimeline,T;if(this.startTime_ instanceof Date){let C=_.getInitialProgramDateTime()||_.getPresentationStartTime();v.assert(C!=null,"Presentation start time should not be null!");let A=this.startTime_.getTime()/1e3-C;A!=null&&(T=A)}T==null&&(T=typeof this.startTime_=="number"?this.startTime_:this.isLive()?1/0:this.video_.currentTime),this.startTime_==null&&this.manifest_.startTime&&(T=this.manifest_.startTime);let S=_.getSeekRangeStart(),b=_.getSeekRangeEnd();T<S?T=S:T>b&&(T=b);let E=await this.adjustStartTime_(a,T);d(E)}this.switchVariant_(a,!0,!1,0)}if(this.playhead_.ready(),!this.getTextTracks().find(_=>_.active)){v.assert(a,"Must have chosen an initial variant!");let _=this.chooseTextStream_(a);_&&(this.addTextStreamToSwitchHistory_(_,!0),this.setInitialTextState_(_)),_&&this.isTextVisible_&&(this.streamingEngine_.switchTextStream(_),this.setTextDisplayerLanguage_())}await this.streamingEngine_.start(r),this.config_.abr.enabled&&(this.abrManager_.enable(),this.onAbrStatusChanged_()),this.onTracksChanged_();let m=this.manifest_.variants.some(_=>_.primary);!this.config_.preferredAudio.length&&!m&&p.warning("No preferred audio language set. We have chosen an arbitrary language initially");let f=this.isDynamic();if(f&&(this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled||this.manifest_.serviceDescription||this.config_.streaming.liveSync.panicMode)||this.config_.streaming.vodDynamicPlaybackRate){let _=()=>this.onTimeUpdate_();this.loadEventManager_.listen(s,"timeupdate",_)}if(!f){let _=()=>this.onVideoProgress_();if(this.loadEventManager_.listen(s,"timeupdate",_),this.onVideoProgress_(),this.manifest_.nextUrl){if(this.config_.streaming.preloadNextUrlWindow>0){let T=async()=>{let S=this.seekRange().end-this.video_.currentTime;isNaN(S)||S<=this.config_.streaming.preloadNextUrlWindow&&(this.loadEventManager_.unlisten(s,"timeupdate",T),v.assert(this.manifest_.nextUrl,"this.manifest_.nextUrl should be valid."),this.preloadNextUrl_=await this.preload(this.manifest_.nextUrl))};this.loadEventManager_.listen(s,"timeupdate",T)}this.loadEventManager_.listen(s,"ended",()=>{this.load(this.preloadNextUrl_||this.manifest_.nextUrl)})}}this.adManager_&&this.adManager_.onManifestUpdated(f)}async initializeSrcEqualsDrmInner_(t){v.assert(this.networkingEngine_,"|onInitializeSrcEqualsDrm_| should never be called after |destroy|"),v.assert(this.config_,"|onInitializeSrcEqualsDrm_| should never be called after |destroy|");let i=Date.now()/1e3,r=!0;this.drmEngine_=this.createDrmEngine({netEngine:this.networkingEngine_,onError:n=>{this.onError_(n)},onKeyStatus:n=>{},onExpirationUpdated:(n,a)=>{let o=Q.makeEvent_(U.EventName.ExpirationUpdated);this.dispatchEvent(o)},onEvent:n=>{if(this.dispatchEvent(n),n.type==U.EventName.DrmSessionUpdate&&r){r=!1;let o=Date.now()/1e3-i;this.stats_.setDrmTime(o)}}}),this.drmEngine_.configure(this.config_.drm);let s=se.createEmptyVariant([t]);this.drmEngine_.setSrcEquals(!0),await this.drmEngine_.initForPlayback([s],[]),await this.drmEngine_.attach(this.video_)}async srcEqualsInner_(t,i){this.makeStateChangeEvent_("src-equals"),v.assert(this.video_,"We should have a media element when loading."),v.assert(this.assetUri_,"We should have a valid uri when loading.");let r=this.video_;this.playhead_=new ln(r);let s=!1;if(this.cleanupOnUnload_.push(()=>{s=!0}),this.dispatchEvent(Q.makeEvent_(U.EventName.CanUpdateStartTime)),this.startTime_!=null&&this.playhead_.setStartTime(this.startTime_),this.playheadObservers_=this.createPlayheadObserversForSrcEquals_(this.startTime_||0),this.setupPlayRateController_(r),this.startBufferManagement_(r,!0),r.textTracks){this.createAndConfigureTextDisplayer_();let m=T=>{if(!(this.textDisplayer_ instanceof mr)){let S=this.getFilteredTextTracks_().find(b=>b.mode!=="disabled");S&&(S.mode=T?"showing":"hidden")}};this.loadEventManager_.listen(r,"enterpictureinpicture",()=>m(!0)),this.loadEventManager_.listen(r,"leavepictureinpicture",()=>m(!1));let g=j.getDevice().getRemote(r);g?this.loadEventManager_.listenMulti(g,["connect","connecting","disconnect"],()=>{m(!1)}):"webkitCurrentPlaybackTargetIsWireless"in r&&this.loadEventManager_.listen(r,"webkitcurrentplaybacktargetiswirelesschanged",()=>m(!1));let _=r;(_.webkitPresentationMode||_.webkitSupportsFullscreen)&&this.loadEventManager_.listen(_,"webkitpresentationmodechanged",()=>{_.webkitPresentationMode?m(_.webkitPresentationMode!=="inline"):_.webkitSupportsFullscreen&&m(_.webkitDisplayingFullscreen)})}this.addBasicMediaListeners_(r,t);let n=this.cmcdManager_.appendSrcData(this.assetUri_,i),a;if(this.mimeType_&&this.config_.streaming.processSrcEqualMetadata&&kt.supports(this.mimeType_)){let m=!1,f=K.RequestType.MANIFEST,g=this.config_.streaming.retryParameters,_=K.makeRequest([n],g),T=this.networkingEngine_.request(f,_);this.operationManager_.manage(T);let S=b=>{if(b.request===_){let E=b.headers;E["content-length"]&&!E["icy-br"]&&!E["icy-description"]&&!E["icy-genre"]&&!E["icy-name"]&&!E["icy-url"]||(m=!0,T.abort())}};this.addEventListener(U.EventName.DownloadHeadersReceived,S);try{let b=await T.promise;a=D.toUint8(b.data);let E=new Blob([b.data],{type:this.mimeType_});n=URL.createObjectURL(E),this.playbackObjectUrl_=n}catch(b){if(!m)throw b}finally{this.removeEventListener(U.EventName.DownloadHeadersReceived,S)}}!n.includes("#t=")&&(this.config_.playRangeStart>0||isFinite(this.config_.playRangeEnd))&&(n+="#t=",this.config_.playRangeStart>0&&(n+=this.config_.playRangeStart),isFinite(this.config_.playRangeEnd)&&(n+=","+this.config_.playRangeEnd)),this.mediaSourceEngine_&&(await this.mediaSourceEngine_.destroy(),this.mediaSourceEngine_=null),Ge.clearSourceFromVideo(r),r.src=n;let o=j.getDevice();o.getDeviceType()==ie.DeviceType.TV&&r.load(),r.preload!="none"&&!r.autoplay&&O.isHlsType(i)&&o.getBrowserEngine()===ie.BrowserEngine.WEBKIT&&r.load(),this.loadMode_=Q.LoadMode.SRC_EQUALS,this.dispatchEvent(Q.makeEvent_(U.EventName.Streaming));let c=()=>new Promise(m=>{let g=new ae(m);this.loadEventManager_.listen(r.textTracks,"change",()=>g.tickAfter(.5)),g.tickAfter(.5)}),d=Promise.withResolvers();ui.waitForReadyState(r,HTMLMediaElement.HAVE_METADATA,this.loadEventManager_,async()=>{this.playhead_.ready(),!this.mimeType_||!O.isHlsType(this.mimeType_)||await c(),d.resolve()}),ui.waitForReadyState(r,HTMLMediaElement.HAVE_CURRENT_DATA,this.loadEventManager_,async()=>{if(await c(),s)return;this.setupPreferredAudioOnSrc_();let m=this.getFilteredTextTracks_();if(m.some(f=>f.mode==="showing")&&(this.isTextVisible_=!0,this.textDisplayer_.setTextVisibility(!0)),!(this.textDisplayer_ instanceof mr)){let f=!1;for(let g of m)g.mode!=="disabled"&&(f?(g.mode="disabled",p.alwaysWarn("Found more than one enabled text track, disabling it",g)):(this.enableNativeTrack_(g),f=!0))}this.setupPreferredTextOnSrc_()}),r.error?d.reject(this.videoErrorToShakaError_()):r.preload=="none"&&(p.alwaysWarn('With <video preload="none">, the browser will not load anything until play() is called. We are unable to measure load latency in a meaningful way, and we cannot provide track info yet. Please do not use preload="none" with Shaka Player.'),d.resolve()),this.loadEventManager_.listenOnce(r,"error",()=>{d.reject(this.videoErrorToShakaError_())}),await it.promiseWithTimeout(this.config_.streaming.loadTimeout,d.promise);let u=this.isDynamic();if(u&&(this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled||this.config_.streaming.liveSync.panicMode)||this.config_.streaming.vodDynamicPlaybackRate){let m=()=>this.onTimeUpdate_();this.loadEventManager_.listen(r,"timeupdate",m)}if(!u){let m=()=>this.onVideoProgress_();this.loadEventManager_.listen(r,"timeupdate",m),this.onVideoProgress_()}if(this.adManager_&&(this.adManager_.onManifestUpdated(u),u)){let m=this.seekRange().end;this.loadEventManager_.listen(r,"progress",()=>{let f=this.seekRange().end;m!=f&&(this.adManager_.onManifestUpdated(this.isDynamic()),m=f)})}if(this.mimeType_&&a){let m=kt.getMetadataFrames(a,this.mimeType_);if(m.length){let g=this.video_.duration,_="org.id3";for(let T of m)this.addMetadataToRegionTimeline_(0,g,_,T)}}await this.waitForPendingExtraTrackPromises_(),this.fullyLoaded_=!0}setupPreferredAudioOnSrc_(){let t=this.config_.preferredAudio;if(t.length&&this.video_&&this.video_.audioTracks){let i=this.getVariantTracks();for(let r of t){if(!r.language)continue;let s=se.filterStreamsByLanguageAndRole(i,r.language,r.role,!1)[0];if(s){this.selectVariantTrack(s);return}}}}setupPreferredTextOnSrc_(){let t=this.getTextTracks();if(t.some(r=>r.active))return;let i=this.config_.preferredText;for(let r of i){if(!r.language)continue;let s=se.filterStreamsByLanguageAndRole(t,r.language,r.role,r.forced);if(s.length){this.selectTextTrack(s[0]);return}}if(this.video_&&this.video_.audioTracks&&this.config_.accessibility.handleForcedSubtitlesAutomatically){let s=Array.from(this.video_.audioTracks).find(n=>n.enabled);if(s){let n=se.filterStreamsByLanguageAndRole(t,s.language,"",!0);if(n.length){this.selectTextTrack(n[0]);return}}}this.selectTextTrack(null)}processTimedMetadata_(t){if(t.kind!="metadata")return;t.mode="hidden";let i=()=>{if(t.cues){let s=[];for(let n of t.cues)if(n.startTime!=null&&"type"in n){let a=s.find(o=>o.startTime==n.startTime&&o.endTime==n.endTime);a||(a={type:n.type,startTime:n.startTime,endTime:n.endTime,values:[]},s.push(a)),n.value&&n.value.key=="X-AD-CREATIVE-SIGNALING"&&(a.type="urn:svta:advertising-wg:ad-creative-signaling"),a.values.push(n.value)}for(let n of s)if(this.adManager_){if(n.values.some(o=>o.key=="X-ASSET-URI"||o.key=="X-ASSET-LIST")){let o=n.startTime==0&&!this.isDynamic();n.values.push({key:"CUE",description:"",data:o?"ONCE,PRE":"ONCE",mimeType:null,pictureType:null})}this.adManager_.onHLSMetadata(n)}}};this.loadEventManager_.listen(t,"cuechange",s=>{if(t.activeCues)for(let n of t.activeCues)this.addMetadataToRegionTimeline_(n.startTime,n.endTime,n.type,n.value),this.adManager_&&this.adManager_.onCueMetadataChange(n.value);i()}),i();let r=new ae(()=>{let s=this.getMetadataTracks_();for(let n of s)n.mode="hidden"}).tickNow().tickAfter(.5);this.cleanupOnUnload_.push(()=>{r.stop()})}processTimedMetadataMediaSrc_(t,i,r){for(let s of t)if(s.data&&typeof s.cueTime=="number"&&s.frames){let n=s.cueTime+i,a=r;a&&n>a&&(a=n);let o="org.id3";for(let c of s.frames){let d=c;this.addMetadataToRegionTimeline_(n,a,o,d)}this.adManager_&&this.adManager_.onHlsTimedMetadata(s,n)}}dispatchMetadataEvent_(t,i){let r=new Map().set("startTime",t.startTime).set("endTime",t.endTime).set("metadataType",t.schemeIdUri).set("payload",t.payload);this.dispatchEvent(Q.makeEvent_(i,r))}addMetadataToRegionTimeline_(t,i,r,s){if(!this.metadataRegionTimeline_)return;v.assert(!i||t<=i,"Metadata start time should be less or equal to the end time!");let n={schemeIdUri:r,startTime:t,endTime:i||1/0,id:"",payload:s};n.id=JSON.stringify(n),this.metadataRegionTimeline_.addRegion(n)}dispatchEmsgEvent_(t){let i=U.EventName.Emsg,r=t.emsg,s=new Map().set("detail",r);this.dispatchEvent(Q.makeEvent_(i,s))}addEmsgToRegionTimeline_(t){if(!this.emsgRegionTimeline_)return;let i={schemeIdUri:t.schemeIdUri,startTime:t.startTime,endTime:t.endTime,id:String(t.id),emsg:t};this.emsgRegionTimeline_.addRegion(i)}activateChaptersTrack_(t){if(!t||t.kind!="chapters")return;t.mode="hidden";let i=new ae(()=>{t.mode="hidden"}).tickNow().tickAfter(.5);this.cleanupOnUnload_.push(()=>{i.stop()})}releaseAllMutexes(){this.mutex_.releaseAll()}createDrmEngine(t){return new Bi(t)}createNetworkingEngine(t){t||(t=()=>null);let i=()=>t()?t().getParser():this.parser_,r=_=>{t()?t().addQueuedOperation(!0,_):_()},s=_=>{t()?t().dispatchEvent(_):this.dispatchEvent(_)},n=()=>t()?t().getStats():this.stats_,a=(_,T,S,b,E)=>{r(()=>{this.abrManager_&&this.abrManager_.segmentDownloaded(_,T,S,b,E)})},o=(_,T,S)=>{let b=U.EventName.DownloadHeadersReceived,E=new Map().set("headers",_).set("request",T).set("requestType",S);s(Q.makeEvent_(b,E)),r(()=>{this.cmsdManager_&&this.cmsdManager_.processHeaders(_)})},c=(_,T,S,b)=>{let E=U.EventName.DownloadCompleted,C=new Map().set("requestType",_).set("request",T).set("context",S).set("response",b);s(Q.makeEvent_(E,C))},d=(_,T,S,b,E,C)=>{let A=U.EventName.DownloadFailed,w=new Map().set("requestType",_).set("request",T).set("context",S).set("error",b).set("httpResponseCode",E).set("aborted",C);s(Q.makeEvent_(A,w))},u=(_,T,S)=>{r(()=>{this.cmcdManager_&&this.cmcdManager_.applyRequestData(_,T,S)})},m=(_,T,S,b)=>{let E=i();E&&E.banLocation&&E.banLocation(b)},f=(_,T,S)=>{if(T.data){let b=T.data.byteLength,E=n();E&&(E.addBytesDownloaded(b),_===K.RequestType.MANIFEST&&E.setManifestSize(b)),this.cmcdManager_.applyResponseData(_,T,S)}},g=new K(a,o,c,d,u,m,f);return g.configure(this.config_.networking),g}createPlayhead(t){return v.assert(this.manifest_,"Must have manifest"),v.assert(this.video_,"Must have video"),new cn(this.video_,this.manifest_,this.config_.streaming,t,()=>this.onSeek_(),i=>this.dispatchEvent(i),()=>this.getPlaybackRate())}createPlayheadObserversForMSE_(t){v.assert(this.manifest_,"Must have manifest"),v.assert(this.regionTimeline_,"Must have region timeline"),v.assert(this.metadataRegionTimeline_,"Must have metadata region timeline"),v.assert(this.emsgRegionTimeline_,"Must have emsg region timeline"),v.assert(this.video_,"Must have video element");let i=this.isDynamic()||typeof t=="number"&&t>0,r=new Ur(this.regionTimeline_,i);r.addEventListener("enter",c=>{let d=c.region;this.onRegionEvent_(U.EventName.TimelineRegionEnter,d),this.sendEventStreamCallback_(d)}),r.addEventListener("exit",c=>{let d=c.region;this.onRegionEvent_(U.EventName.TimelineRegionExit,d)}),r.addEventListener("skip",c=>{let d=c.region;c.seeking||(this.onRegionEvent_(U.EventName.TimelineRegionEnter,d),this.onRegionEvent_(U.EventName.TimelineRegionExit,d))});let s=new Ur(this.metadataRegionTimeline_,i);s.addEventListener("enter",c=>{let d=c.region;this.dispatchMetadataEvent_(d,U.EventName.Metadata)});let n=new Ur(this.emsgRegionTimeline_,i);n.addEventListener("enter",c=>{let d=c.region;this.dispatchEmsgEvent_(d)});let a=new _n(this.manifest_.presentationTimeline);a.addEventListener("change",c=>{this.dispatchEvent(Q.makeEvent_(U.EventName.TimelineChanged,new Map([["programDateTime",c.programDateTime],["timestamp",c.timestamp]])))});let o=new xs(this.video_);return o.manage(r),o.manage(s),o.manage(n),o.manage(a),this.qualityObserver_&&o.manage(this.qualityObserver_),o}createPlayheadObserversForSrcEquals_(t){v.assert(this.metadataRegionTimeline_,"Must have metadata region timeline"),v.assert(this.video_,"Must have video element");let i=t instanceof Date||t>0,r=new Ur(this.metadataRegionTimeline_,i);r.addEventListener("enter",n=>{let a=n.region;this.dispatchMetadataEvent_(a,U.EventName.Metadata)});let s=new xs(this.video_);return s.manage(r),s}startBufferManagement_(t,i){let r=Kt;v.assert(!this.bufferObserver_,"No buffering observer should exist before initialization."),v.assert(!this.bufferPoller_,"No buffer timer should exist before initialization."),this.bufferObserver_=new Mr(1,2),this.bufferObserver_.setState(Mr.State.STARVING),this.updateBufferingSettings_(),this.updateBufferState_(),this.bufferPoller_=new ae(()=>{this.pollBufferState_()}),this.config_.streaming.rebufferingGoal&&this.bufferPoller_.tickEvery(.25),this.loadEventManager_.listen(t,r.WAITING,s=>this.pollBufferState_(r.WAITING)),this.loadEventManager_.listen(t,r.CAN_PLAY_THROUGH,s=>this.pollBufferState_(r.CAN_PLAY_THROUGH)),this.loadEventManager_.listen(t,r.PLAYING,s=>this.pollBufferState_(r.PLAYING)),this.loadEventManager_.listen(t,r.SEEKED,s=>this.pollBufferState_(r.SEEKED)),this.loadEventManager_.listen(t,r.TIME_UPDATE,s=>this.pollBufferState_(r.TIME_UPDATE)),i&&(this.loadEventManager_.listen(t,r.PROGRESS,s=>this.pollBufferState_(r.PROGRESS)),this.loadEventManager_.listen(t,r.STALLED,s=>this.pollBufferState_(r.STALLED)))}updateBufferingSettings_(){let t=this.config_.streaming.rebufferingGoal,i=t,r=Math.min(Q.TYPICAL_BUFFERING_THRESHOLD_,t/2);this.bufferObserver_.setThresholds(i,r)}pollBufferState_(t){if(v.assert(this.video_,"Need a media element to update the buffering observer"),v.assert(this.bufferObserver_,"Need a buffering observer to update"),!this.config_.streaming.rebufferingGoal){t&&this.bufferObserver_.reportEvent(t,this.video_.currentTime)&&this.updateBufferState_();return}let i=this.mediaSourceEngine_?this.mediaSourceEngine_.ended():!1,r=this.isEnded()||i||this.playhead_.isBufferedToEnd(),s=this.getPlaybackRate()<0?Je.bufferedBehindOf(this.video_.buffered,this.video_.currentTime):Je.bufferedAheadOf(this.video_.buffered,this.video_.currentTime);this.bufferObserver_.update(s,r)&&this.updateBufferState_()}createMediaSourceEngine(t,i,r,s,n){return new dr(t,i,r,n,s)}createCmcd_(){return new Or(this,this.config_.cmcd)}createCmsd_(){return new Tn(this.config_.cmsd)}createStreamingEngine(){v.assert(this.abrManager_&&this.mediaSourceEngine_&&this.manifest_&&this.video_,"Must not be destroyed");let t={getPresentationTime:()=>this.playhead_?this.playhead_.getTime():0,getBandwidthEstimate:()=>this.abrManager_.getBandwidthEstimate(),getPlaybackRate:()=>this.getPlaybackRate(),video:this.video_,mediaSourceEngine:this.mediaSourceEngine_,netEngine:this.networkingEngine_,onError:i=>this.onError_(i),onEvent:i=>this.dispatchEvent(i),onSegmentAppended:(i,r,s,n,a)=>{this.onSegmentAppended_(i.startTime,i.endTime,r.type,s,n,a),this.abrManager_&&r.fastSwitching&&i.isPartial()&&i.isLastPartial()&&this.abrManager_.trySuggestStreams()},onInitSegmentAppended:(i,r)=>{let s=r.getMediaQuality();s&&this.qualityObserver_&&this.qualityObserver_.addMediaQualityChange(s,i)},beforeAppendSegment:(i,r)=>this.drmEngine_.parseInbandPssh(i,r),disableStream:(i,r)=>this.disableStream(i,r),shouldPrefetchNextSegment:(i,r)=>!this.config_.abr.enabled||!r.fastSwitching||!i.isPartial()||!i.isLastPartial(),getKeySystem:()=>this.keySystem()};return new jr(this.manifest_,t)}configure(t,i){v.assert(this.config_,"Config must not be null!"),v.assert(typeof t=="object"||arguments.length==2,"String configs should have values!");let r=this.getConfiguration();arguments.length==2&&typeof t=="string"&&(t=Pt.convertToConfigObject(t,i)),v.assert(typeof t=="object","Should be an object!"),t.manifest&&t.manifest.dash&&"disableXlinkProcessing"in t.manifest.dash&&(Cr.deprecateFeature(6,"manifest.dash.disableXlinkProcessing configuration","It is now automatically detected if the manifest has Xlink."),delete t.manifest.dash.disableXlinkProcessing),t.textDisplayer&&"captionsUpdatePeriod"in t.textDisplayer&&(Cr.deprecateFeature(6,"textDisplayer.captionsUpdatePeriod configuration","Captions are now updated based on the cue timings, so this configuration is no longer needed."),delete t.textDisplayer.captionsUpdatePeriod),Q.convertLegacyPreferences_(t);let s=st.mergeConfigObjects(this.config_,t,this.defaultConfig_());return this.applyConfig_(r),s}configurationForLowLatency(t){this.lowLatencyConfig_=t}applyConfig_(t){if(this.manifestFilterer_=new Rr(this.config_,this.maxHwRes_,this.drmEngine_),this.parser_){let s=Oe.cloneObject(this.config_.manifest);this.video_&&this.video_.nodeName==="AUDIO"&&(s.disableVideo=!0),this.parser_.configure(s)}if(this.drmEngine_&&this.drmEngine_.configure(this.config_.drm),this.streamingEngine_){this.streamingEngine_.configure(this.config_.streaming);try{this.loadMode_!=Q.LoadMode.DESTROYED&&this.manifestFilterer_.filterManifestWithRestrictions(this.manifest_)&&this.onTracksChanged_()}catch(n){this.onError_(n)}this.abrManager_&&this.updateAbrManagerVariants_();let s=this.streamingEngine_.getCurrentVariant();s&&(!s.allowedByApplication||!s.allowedByKeySystem)&&(p.debug("Choosing new variant after changing configuration"),this.chooseVariantAndSwitch_())}if(this.networkingEngine_&&this.networkingEngine_.configure(this.config_.networking),this.mediaSourceEngine_){this.mediaSourceEngine_.configure(this.config_.mediaSource);let{segmentRelativeVttTiming:s}=this.config_.manifest;this.mediaSourceEngine_.setSegmentRelativeVttTiming(s)}this.textDisplayer_&&this.createAndConfigureTextDisplayer_(),this.abrManager_&&(this.abrManager_.configure(this.config_.abr),this.config_.abr.enabled?this.abrManager_.enable():this.abrManager_.disable(),this.onAbrStatusChanged_()),this.bufferObserver_&&this.updateBufferingSettings_(),this.bufferPoller_&&(this.config_.streaming.rebufferingGoal?this.bufferPoller_.tickEvery(.25):this.bufferPoller_.stop()),this.manifest_&&Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.adManager_&&this.adManager_.configure(this.config_.ads),this.cmcdManager_&&this.cmcdManager_.configure(this.config_.cmcd),this.cmsdManager_&&this.cmsdManager_.configure(this.config_.cmsd),this.queueManager_&&this.queueManager_.configure(this.config_.queue);let i=this.loadMode_==Q.LoadMode.MEDIA_SOURCE||this.loadMode_==Q.LoadMode.SRC_EQUALS;this.config_.accessibility.speechToText.enabled?this.speechToText_?this.speechToText_.configure(this.config_.accessibility.speechToText):(this.speechToText_=new Qr(this),this.speechToText_.configure(this.config_.accessibility.speechToText),i&&this.onTextChanged_()):this.speechToText_&&(this.speechToText_.release(),this.speechToText_=null,i&&this.onTextChanged_()),this.applyCriteriaConfigChanges_(t);let r=Q.makeEvent_(U.EventName.ConfigurationChanged);this.dispatchEvent(r)}applyCriteriaConfigChanges_(t){if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE||!this.currentAdaptationSetCriteria_.getConfiguration)return;let i=this.currentAdaptationSetCriteria_.getConfiguration();v.assert(i,"criteriaConfig must not be null!");let r=!1,s=n=>Oe.alphabeticalKeyOrderStringify(n);s(t.preferredVideo)!=s(this.config_.preferredVideo)&&(i.preferredVideo=this.config_.preferredVideo,r=!0),s(t.preferredAudio)!=s(this.config_.preferredAudio)&&(i.preferredAudio=this.config_.preferredAudio,r=!0),r&&(st.addDeprecatedConfigFields(i),this.currentAdaptationSetCriteria_.configure(i),this.chooseVariantAndSwitch_())}getConfiguration(){v.assert(this.config_,"Config must not be null!");let t=this.defaultConfig_();return st.mergeConfigObjects(t,this.config_,this.defaultConfig_()),t}getConfigurationForLowLatency(){return this.lowLatencyConfig_}getNonDefaultConfiguration(){v.assert(this.config_,"Config must not be null!");let t=this.defaultConfig_();return st.mergeConfigObjects(t,this.config_,this.defaultConfig_()),Pt.getDifferenceFromConfigObjects(this.config_,this.defaultConfig_())}getSharedConfiguration(){return v.assert(this.config_,"Cannot call getSharedConfiguration after call destroy!"),this.config_}getBufferFullness(){if(this.video_){let t=this.video_.buffered.length,i=t?this.video_.buffered.end(t-1):0,r=this.config_.streaming.bufferingGoal,s=Math.min(this.video_.currentTime+r,this.seekRange().end);if(i>=s)return 1;if(i<=this.video_.currentTime)return 0;if(i<s)return(i-this.video_.currentTime)/(s-this.video_.currentTime)}return 0}resetConfiguration(){v.assert(this.config_,"Cannot be destroyed");let t=this.getConfiguration();for(let i in this.config_)delete this.config_[i];st.mergeConfigObjects(this.config_,this.defaultConfig_(),this.defaultConfig_()),this.applyConfig_(t)}getLoadMode(){return this.loadMode_}getManifestType(){return this.manifest_?this.manifest_.type:null}getMediaElement(){return this.video_}getNetworkingEngine(){return this.networkingEngine_}getAssetUri(){return this.assetUri_}getMimeType(){return this.mimeType_}getAllMetadataRegions(){var t;return Array.from(((t=this.metadataRegionTimeline_)==null?void 0:t.regions())||[])}getAllEmsgRegions(){var t;return Array.from(((t=this.emsgRegionTimeline_)==null?void 0:t.regions())||[])}getAllTimelineRegions(){var t;return Array.from(((t=this.regionTimeline_)==null?void 0:t.regions())||[])}getAdManager(){return this.adManager_?this.adManager_:null}getQueueManager(){return this.queueManager_?this.queueManager_:null}isLive(){return this.manifest_&&!this.isRemotePlayback()?this.manifest_.presentationTimeline.isLive():this.video_&&(this.video_.src||this.isRemotePlayback())?this.video_.duration==1/0:!1}isInProgress(){return this.manifest_?this.manifest_.presentationTimeline.isInProgress():!1}isDynamic(){return this.isLive()||this.isInProgress()}isAudioOnly(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.variants;return t.length?!t[0].video:!1}else return this.video_&&(this.video_.src||this.isRemotePlayback())?this.video_.videoTracks?this.video_.videoTracks.length==0:this.video_.videoHeight==0:!1}isVideoOnly(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.variants;if(!t.length)return!1;let i=t[0];return i.audio||!i.video?!1:!i.video.codecs.includes(",")}else if(this.video_&&(this.video_.src||this.isRemotePlayback())&&this.video_.audioTracks)return this.video_.audioTracks.length==0;return!1}seekRange(){if(this.manifest_&&!this.isRemotePlayback()){if(!this.fullyLoaded_&&this.manifest_.type==me.HLS)return{start:0,end:0};let t=this.manifest_.presentationTimeline;return{start:t.getSeekRangeStart(),end:t.getSeekRangeEnd()}}if(this.video_&&(this.video_.src||this.isRemotePlayback())){let t=this.video_.seekable;if(t&&t.length){let i=this.config_?this.config_.playRangeStart:0,r=Math.max(t.start(0),i),s=this.config_?this.config_.playRangeEnd:1/0,n=Math.min(t.end(t.length-1),s);return{start:r,end:n}}}return{start:0,end:0}}goToLive(){this.isDynamic()?this.video_.currentTime=this.seekRange().end:p.warning("goToLive is for live streams!")}isFullyLoaded(){return this.fullyLoaded_}keySystem(){return de.keySystem(this.drmInfo())}drmInfo(){return this.drmEngine_?this.drmEngine_.getDrmInfo():null}getDrmEngine(){return this.drmEngine_}getExpiration(){return this.drmEngine_?this.drmEngine_.getExpiration():1/0}getActiveSessionsMetadata(){return this.drmEngine_?this.drmEngine_.getActiveSessionsMetadata():[]}renewLicense(t){this.drmEngine_&&this.drmEngine_.renewLicense(t)}async retryLicensing(t,i){return this.drmEngine_?await this.drmEngine_.retryLicensing(t,i):!1}getKeyStatuses(){return this.drmEngine_?this.drmEngine_.getKeyStatuses():{}}isBuffering(){let t=Mr.State;return this.bufferObserver_?this.bufferObserver_.getState()==t.STARVING:!!this.assetUri_}getPlaybackRate(){return this.video_?this.playRateController_?this.playRateController_.getRealRate():1:0}useTrickPlayTrackIfAvailable(t){this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&this.streamingEngine_&&this.streamingEngine_.setTrickPlay(t)}trickPlay(t,i=!0){if(v.assert(t!=0,"Should never set a trick play rate of 0!"),t==0){p.alwaysWarn("A trick play rate of 0 is unsupported!");return}let r=this.video_.playbackRate,s=this.playRateController_.getRealRate();this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&(this.abrManager_.playbackRateChanged(t),this.useTrickPlayTrackIfAvailable(i&&t!=1)),this.setupTrickPlayEventListeners_(t),r===0&&this.video_.playbackRate===0&&t!=s&&this.onRateChange_()}cancelTrickPlay(){let t=this.playRateController_.getDefaultRate();this.loadMode_==Q.LoadMode.SRC_EQUALS&&this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&(this.playRateController_.set(t),this.abrManager_.playbackRateChanged(t),this.useTrickPlayTrackIfAvailable(!1)),this.trickPlayEventManager_.removeAll()}getVariantTracks(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.streamingEngine_?this.streamingEngine_.getCurrentVariant():null,i=[],r=0;for(let s of this.manifest_.variants){if(!se.isPlayable(s))continue;let n=se.variantToTrack(s);n.active=s==t,!n.active&&r!=1&&t!=null&&s.video==t.video&&s.audio==t.audio&&(n.active=!0),n.active&&r++,i.push(n)}return v.assert(r<=1,"It should only have one active track"),i}else if(this.video_&&this.video_.audioTracks){let t=this.getActiveHtml5VideoTrack_(),i=Array.from(this.video_.audioTracks);return i.length?i.map(r=>se.html5TrackToShakaTrack(r,t)):t?[se.html5TrackToShakaTrack(null,t)]:[]}else return[]}getTextTracks(){if(this.manifest_){if(this.isRemotePlayback())return[];{let t=this.streamingEngine_?this.streamingEngine_.getCurrentTextStream():null,i=[];for(let r of this.manifest_.textStreams){let s=se.textStreamToTrack(r);s.active=r==t,i.push(s)}return this.speechToText_&&i.push(...this.speechToText_.getTextTracks()),i}}else if(this.video_&&this.video_.src&&this.video_.textTracks){let t=this.getFilteredTextTracks_(),i=this.textDisplayer_.isTextVisible(),r=t.map(s=>se.html5TextTrackToTrack(s,i));return this.speechToText_&&r.push(...this.speechToText_.getTextTracks()),r}else return[]}getImageTracks(){let t=this.externalSrcEqualsThumbnailsStreams_;return this.manifest_&&(t=this.manifest_.imageStreams),t.map(i=>se.imageStreamToTrack(i))}async getAllThumbnails(t){let i=await this.getBestImageStream_(t);if(!i)return null;let r=[];return i.segmentIndex.forEachTopLevelReference(s=>{let n=this.parseTilesLayout_(s.getTilesLayout()||i.tilesLayout);if(n){let a=n.rows*n.columns,c=(s.trueEndTime-s.startTime)/a;for(let d=0;d<a;d++){let u=s.startTime+d*c,m=this.getThumbnailByReference_(s,i,u,n);if(!m)break;r.push(m)}}}),r}parseTilesLayout_(t){if(!t)return null;let i=/(\d+)x(\d+)/.exec(t);if(!i)return p.warning("Tiles layout does not contain a valid format (columns x rows)"),null;let r=parseInt(i[1],10),s=parseInt(i[2],10);return{columns:r,rows:s}}async getThumbnails(t,i){let r=await this.getBestImageStream_(t);if(!r)return null;let s=r.segmentIndex.find(i);if(s==null)return null;let n=r.segmentIndex.get(s),a=this.parseTilesLayout_(n.getTilesLayout()||r.tilesLayout);return a?this.getThumbnailByReference_(n,r,i,a):null}async getBestImageStream_(t){if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)return null;let i=this.externalSrcEqualsThumbnailsStreams_;this.manifest_&&(i=this.manifest_.imageStreams);let r=i[0];if(!r||(t!=null&&(r=i.find(s=>s.id==t)),!r))return null;if(r.segmentIndex||await r.createSegmentIndex(),r.closeSegmentIndex){if(!this.deferredCloseSegmentIndex_.has(r)){let s=new ae(()=>{r&&(r.closeSegmentIndex(),this.deferredCloseSegmentIndex_.delete(r))});this.deferredCloseSegmentIndex_.set(r,s)}this.deferredCloseSegmentIndex_.get(r).tickAfter(5)}return r}getThumbnailByReference_(t,i,r,s){let n=t.getUris();if(!n.length)return null;let a=1e-4,o=i.width||0,c=i.height||0,d=o/s.columns,u=c/s.rows,m=s.columns*s.rows,f=t.trueEndTime-t.startTime,g=t.getTileDuration()||f/m,_=t.startTime,T=0,S=0;if(m>1){let C=(r-t.startTime)/g,A=Math.floor(C+a);_=t.startTime+A*g,T=A%s.columns*d,S=Math.floor(A/s.columns)*u}if(_>=t.endTime||jt.isFloatEqual(_,t.endTime,a))return null;let b=!1,E=t.getThumbnailSprite();return E&&(b=!0,u=E.height,T=E.positionX,S=E.positionY,d=E.width),{segment:t,imageHeight:c,imageWidth:o,height:u,positionX:T,positionY:S,startTime:_,duration:g,uris:n,startByte:t.getStartByte(),endByte:t.getEndByte(),width:d,sprite:b,mimeType:t.mimeType||i.mimeType,codecs:t.codecs||i.codecs}}selectTextTrack(t){let i=!1;if(this.speechToText_&&t&&(i=this.speechToText_.getTextTracks().includes(t)),this.speechToText_&&!i&&this.speechToText_.disable(),!t||i){this.speechToText_&&i&&t&&this.speechToText_.enable(t),this.onTextChanged_(),this.setTextTrackVisibility_(!1);return}let r=()=>{let n=this.manifest_.textStreams.find(a=>a.id==t.id);if(!n){this.isRemotePlayback()||p.error("No stream with id",t.id);return}if(n==this.streamingEngine_.getCurrentTextStream()){p.debug("Text track already selected.");return}this.addTextStreamToSwitchHistory_(n,!1),this.streamingEngine_.switchTextStream(n),this.onTextChanged_(),this.setTextDisplayerLanguage_(),this.currentTextLanguage_=n.language,this.setTextTrackVisibility_(!0)},s=()=>{if(this.video_&&this.video_.textTracks){let n=this.getFilteredTextTracks_(),a=n.find(o=>se.html5TrackId(o)===t.id);if(!a){p.error("No track with id",t.id);return}if(this.textDisplayer_ instanceof mr)for(let o of n){let c=o===a?this.isTextVisible_?"showing":"hidden":"disabled";o.mode!==c&&(o.mode=c)}else{let o=n.find(c=>c.mode!=="disabled");o!==a&&(o&&(o.mode="disabled",this.loadEventManager_.unlisten(o,"cuechange"),this.textDisplayer_.remove(0,1/0)),a&&this.enableNativeTrack_(a))}this.onTextChanged_(),this.setTextDisplayerLanguage_(),this.setTextTrackVisibility_(!0)}};this.manifest_&&this.playhead_&&(r(),!this.isRemotePlayback())||s()}enableNativeTrack_(t){this.loadEventManager_.listen(t,"cuechange",()=>{let i=Math.max(0,this.video_.currentTime-this.config_.streaming.bufferBehind);this.textDisplayer_.remove(0,i);let r={periodStart:0,segmentStart:0,segmentEnd:this.video_.duration,vttOffset:0,isMpegTs:!1},s=[],n=Array.from(t.activeCues||[]);for(let a of n){let o=si.mapNativeCueToShakaCue(a);if(o){let c=this.config_.mediaSource.modifyCueCallback;c&&c(o,null,r),s.push(o)}}this.textDisplayer_.append(s)}),t.mode=document.pictureInPictureElement?"showing":"hidden"}selectVariantTrack(t,i=!1,r=0){let s=()=>{let a=this.manifest_.variants.find(m=>m.id==t.id);if(!a){this.isRemotePlayback()||p.error("No variant with id",t.id);return}if(!se.isPlayable(a)){p.error("Unable to switch to restricted track",t.id);return}let o=this.streamingEngine_.getCurrentVariant();this.config_.abr.enabled&&(o.video!=a.video||o.audio&&a.audio&&o.audio.language==a.audio.language&&o.audio.channelsCount==a.audio.channelsCount&&o.audio.label==a.audio.label)&&p.alwaysWarn("Changing tracks while abr manager is enabled will likely result in the selected track being overridden. Consider disabling abr before calling selectVariantTrack()."),this.isRemotePlayback()?this.switchVariant_(a,!1,!1,0):this.switchVariant_(a,!1,i||!1,r||0);let c={language:a.language||"",role:a.audio&&a.audio.roles&&a.audio.roles[0]||"",label:a.audio&&a.audio.label||"",channelCount:a.audio&&a.audio.channelsCount||0,codec:a.audio&&a.audio.codecs||"",spatialAudio:a.audio&&a.audio.spatialAudio?a.audio.spatialAudio:!1},d={label:a.video&&a.video.label||"",role:a.video&&a.video.roles&&a.video.roles[0]||"",language:a.video&&a.video.language||"",codec:a.video&&a.video.codecs||"",hdrLevel:a.video&&a.video.hdr||"",layout:a.video&&a.video.videoLayout||""},u={preferredAudio:[c],preferredVideo:[d],language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:a.audio&&a.audio.codecs?a.audio.codecs:"",activeAudioCodec:o.audio&&o.audio.codecs?o.audio.codecs:"",activeAudioChannelCount:o.audio&&o.audio.channelsCount?o.audio.channelsCount:0,keySystem:this.keySystem()};st.addDeprecatedConfigFields(u),this.currentAdaptationSetCriteria_.configure(u),this.updateAbrManagerVariants_()},n=()=>{if(t.originalAudioId&&this.video_&&this.video_.audioTracks){let a=Array.from(this.video_.audioTracks);for(let o of a)if(se.html5TrackId(o)==t.id){this.switchHtml5Track_(o);return}}};this.manifest_&&this.playhead_&&(s(),!this.isRemotePlayback())||n()}selectAudioTrack(t,i=0){let r=(a,o)=>{if(a==o||!this.config_.accessibility.handleForcedSubtitlesAutomatically)return;let c=this.getTextTracks(),d=c.find(g=>g.active),u=d?ve.normalize(d.language):null,m=ve.normalize(a),f=ve.normalize(o);if(!d||u==m&&u!=f&&d.forced){let g=se.filterStreamsByLanguageAndRole(c,f,"",!0);g.length&&this.selectTextTrack(g[0])}},s=()=>{let a=this.currentAdaptationSetCriteria_.getConfiguration();a.audioCodec=t.codecs||"",a.preferredAudio=[{language:t.language,role:t.roles[0]||"",label:t.label||"",channelCount:t.channelsCount||0,codec:"",spatialAudio:t.spatialAudio}];let o=this.streamingEngine_.getCurrentVariant(),c=o&&o.audio;c&&(a.activeAudioCodec=c.codecs||"",a.activeAudioChannelCount=c.channelsCount||0,r(c.language,t.language)),st.addDeprecatedConfigFields(a),this.currentAdaptationSetCriteria_.configure(a),this.chooseVariantAndSwitch_(!0,i,!1,!1)},n=()=>{if(this.video_&&this.video_.audioTracks){let a=ve.normalize(t.language),o=Array.from(this.video_.audioTracks),c=null,d=null;for(let u of o){let m=u.language||"und";!c&&u.label==t.label&&ve.normalize(m)==a&&u.kind==t.roles[0]&&(c=u),u.enabled&&(d=u)}c&&(d&&r(d.language,c.language),this.switchHtml5Track_(c))}};this.manifest_&&this.playhead_&&(s(),!this.isRemotePlayback())||n()}getAudioTracks(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.getVariantTracks();if(!t.length)return[];let i=t.find(n=>n.active);if(!i)return[];let r=t;if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&!this.isRemotePlayback()&&(r=t.filter(n=>n.originalVideoId===i.originalVideoId&&(n.audioCodec||O.RAW_FORMATS.includes(n.audioMimeType||"")))),!r.length)return[];let s=new Map;for(let n of r){let a=[n.language,n.originalLanguage,n.label||"",(n.audioRoles||[]).join(","),n.channelsCount,n.spatialAudio,n.audioCodec||"",n.accessibilityPurpose||""].join("_"),o={active:n.active,language:n.language,label:n.label,mimeType:n.audioMimeType,codecs:n.audioCodec,primary:n.primary,roles:n.audioRoles||[],accessibilityPurpose:n.accessibilityPurpose,channelsCount:n.channelsCount,audioSamplingRate:n.audioSamplingRate,spatialAudio:n.spatialAudio,originalLanguage:n.originalLanguage};s.has(a)?!s.get(a).active&&o.active&&s.set(a,o):s.set(a,o)}return Array.from(s.values())}else return this.video_&&this.video_.audioTracks?Array.from(this.video_.audioTracks).map(t=>se.html5AudioTrackToTrack(t)):[]}selectVideoTrack(t,i=!1,r=0){let s=this.getVariantTracks();if(!s.length)return;let n=s.find(c=>c.active);if(!n)return;let a=s.filter(c=>(c.videoBandwidth||c.bandwidth)==t.bandwidth&&c.width==t.width&&c.height==t.height&&c.frameRate==t.frameRate&&c.pixelAspectRatio==t.pixelAspectRatio&&c.hdr==t.hdr&&c.colorGamut==t.colorGamut&&c.videoLayout==t.videoLayout&&c.videoMimeType==t.mimeType&&c.videoCodec==t.codecs&&ye.equal(c.videoRoles,t.roles)&&(c.videoLanguage||"und")==(t.language||"und")&&c.videoLabel==t.label),o;a.length==1?o=a[0]:o=a.find(c=>c.audioId===n.audioId),o||(o=a.find(c=>c.language==n.language&&c.label===n.label&&c.channelsCount===n.channelsCount&&c.spatialAudio===n.spatialAudio&&c.audioMimeType===n.audioMimeType&&O.getNormalizedCodec(c.audioCodec||"")===O.getNormalizedCodec(n.audioCodec||"")&&ye.equal(c.audioRoles,n.audioRoles))),o&&!o.active&&this.selectVariantTrack(o,i,r)}getVideoTracks(){if(this.loadMode_==Q.LoadMode.SRC_EQUALS||this.isRemotePlayback())return[];let t=this.getVariantTracks();if(!t.length)return[];let i=t.find(n=>n.active);if(!i)return[];let r=t;if(this.isVideoOnly()||(r=t.filter(n=>!n.videoCodec||n.audioGroupId!==i.audioGroupId||n.originalAudioId!==i.originalAudioId?!1:n.audioId===i.audioId?!0:n.language===i.language&&n.label===i.label&&n.channelsCount===i.channelsCount&&n.spatialAudio===i.spatialAudio&&n.audioMimeType===i.audioMimeType&&O.getNormalizedCodec(n.audioCodec||"")===O.getNormalizedCodec(i.audioCodec||"")&&ye.equal(n.audioRoles,i.audioRoles))),!r.length)return[];let s=new Map;for(let n of r){let a=n.originalVideoId;if(!a&&n.videoId!=null&&(a=String(n.videoId)),!a)continue;let o={active:n.active,language:n.videoLanguage||"und",bandwidth:n.videoBandwidth||n.bandwidth,width:n.width,height:n.height,frameRate:n.frameRate,pixelAspectRatio:n.pixelAspectRatio,hdr:n.hdr,colorGamut:n.colorGamut,videoLayout:n.videoLayout,mimeType:n.videoMimeType,codecs:n.videoCodec,roles:n.videoRoles||[],label:n.videoLabel};s.set(a,o)}return Array.from(s.values())}getChaptersTracks(){let t=this.externalSrcEqualsChapterStreams_;this.manifest_&&(t=this.manifest_.chapterStreams);let i=t.map(s=>se.chapterStreamToTrack(s)),r=this.getChaptersTracks_();return r.length&&i.push(...r.map(s=>se.html5TextTrackToChapterTrack(s))),i}async getChaptersAsync(t){var c,d;let i=this.getNativeChapters_(t);if(i.length)return i;let r=this.externalSrcEqualsChapterStreams_;if(this.manifest_&&(r=this.manifest_.chapterStreams),!r.length)return[];let s=ve.normalize(t),n=r.filter(u=>ve.normalize(u.language)==s);if(!n.length)return[];let a=[],o=new Set;for(let u of n){u.segmentIndex||await u.createSegmentIndex();let m=0;if(this.isLive()&&((c=this.manifest_)==null?void 0:c.type)===me.HLS){let f=this.manifest_.presentationTimeline;m=Math.max(0,(d=f.getInitialProgramDateTime())!=null?d:f.getPresentationStartTime())}u.segmentIndex.forEachTopLevelReference(f=>{let g=f.getMetadata();if(!g)return;let _=g.title,T=f.startTime+"-"+f.endTime+"-"+_;m>0&&f.endTime-m<0&&(m=0);let S={id:T,title:_,startTime:Math.max(0,f.startTime-m),endTime:Math.max(0,f.endTime-m),images:g.images};o.has(T)||(a.push(S),o.add(T))})}return a}getNativeChapters_(t){let i=this.getChaptersTracks_();if(!i.length)return[];let r=ve.normalize(t),s=i.filter(o=>ve.normalize(o.language)==r);if(!s||!s.length)return[];let n=[],a=new Set;for(let o of s)if(o&&o.cues)for(let c of o.cues){let d=c.id;(!d||d=="")&&(d=c.startTime+"-"+c.endTime+"-"+c.text);let u={id:d,title:c.text,startTime:c.startTime,endTime:c.endTime,images:[]};a.has(d)||(n.push(u),a.add(d))}return n}getFilteredTextTracks_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).filter(t=>t.kind!="metadata"&&t.kind!="chapters"&&t.label!=Q.TextTrackLabel)}getGeneratedTextTrack_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).find(t=>t.label==Q.TextTrackLabel)}getMetadataTracks_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).filter(t=>t.kind=="metadata")}getChaptersTracks_(){return!this.video_||!this.video_.textTracks?[]:Array.from(this.video_.textTracks).filter(t=>t.kind=="chapters")}setTextTrackVisibility_(t){let i=this.isTextVisible_,r=!!t;if(i!=r)if(this.isTextVisible_=r,this.loadMode_==Q.LoadMode.MEDIA_SOURCE)if(this.textDisplayer_.setTextVisibility(r),r){if(!this.streamingEngine_.getCurrentTextStream()){let s=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,this.currentTextLanguage_,this.currentTextRole_,this.currentTextForced_);s.length>0&&(this.streamingEngine_.switchTextStream(s[0]),this.onTextChanged_(),this.setTextDisplayerLanguage_())}}else this.streamingEngine_.unloadTextStream();else this.video_&&this.video_.src&&this.video_.textTracks&&this.textDisplayer_.setTextVisibility(r)}getPlayheadTimeAsDate(){let t=0;if(this.playhead_)t=this.playhead_.getTime();else{if(this.startTime_==null)return new Date;if(this.startTime_ instanceof Date)return this.startTime_;t=this.startTime_}if(this.manifest_&&!this.isRemotePlayback()){let i=this.manifest_.presentationTimeline,r=i.getProgramDateTimeForTime(t);if(r!=null)return new Date(r*1e3);let s=i.getPresentationStartTime();return new Date((s+t)*1e3)}else if(this.video_&&this.video_.getStartDate){let i=this.video_.getStartDate();return!(i instanceof Date)||isNaN(i.getTime())?(p.warning("EXT-X-PROGRAM-DATETIME required to get playhead time as Date!"),null):new Date(i.getTime()+t*1e3)}else return p.warning("No way to get playhead time as Date!"),null}getPresentationStartTimeAsDate(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.presentationTimeline,i=t.getInitialProgramDateTime()||t.getPresentationStartTime();return i===null?(p.info("Manifest appears to have no PDT or PST"),null):new Date(i*1e3)}else if(this.video_&&this.video_.getStartDate){let t=this.video_.getStartDate();return!(t instanceof Date)||isNaN(t.getTime())?(p.warning("EXT-X-PROGRAM-DATETIME required to get presentation start time as Date!"),null):t}else return p.warning("No way to get presentation start time as Date!"),null}getSegmentAvailabilityDuration(){return this.isLive()?this.manifest_?this.manifest_.presentationTimeline.getSegmentAvailabilityDuration():(p.warning("No way to get segment segment availability duration!"),null):(p.warning("getSegmentAvailabilityDuration is for live streams!"),null)}getBufferedInfo(){if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE)return this.mediaSourceEngine_.getBufferedInfo();let t={total:[],audio:[],video:[],text:[]};return this.loadMode_==Q.LoadMode.SRC_EQUALS&&(t.total=Je.getBufferedInfo(this.video_.buffered)),t}getLiveLatency(){if(!this.video_||!this.video_.currentTime)return null;let t=this.getPresentationStartTimeAsDate();if(!t)return null;let i=t.getTime()+this.video_.currentTime*1e3;return Math.floor(Date.now()-i)}getBandwidthEstimate(){return this.abrManager_?this.abrManager_.getBandwidthEstimate():NaN}getStats(){if(!(this.loadMode_==Q.LoadMode.MEDIA_SOURCE||this.loadMode_==Q.LoadMode.SRC_EQUALS))return tr.getEmptyBlob();this.updateStateHistory_(),v.assert(this.video_,"If we have stats, we should have video_");let i=this.video_,r=i.currentTime/i.duration;if(!isNaN(r)&&!this.isDynamic()&&this.stats_.setCompletionPercent(Math.round(100*r)),this.playhead_&&(this.stats_.setGapsJumped(this.playhead_.getGapsJumped()),this.stats_.setStallsDetected(this.playhead_.getStallsDetected())),i.getVideoPlaybackQuality){let d=i.getVideoPlaybackQuality();this.stats_.setDroppedFrames(Number(d.droppedVideoFrames),Number(d.totalVideoFrames)),this.stats_.setCorruptedFrames(Number(d.corruptedVideoFrames))}let s=this.drmEngine_?this.drmEngine_.getLicenseTime():NaN;if(this.stats_.setLicenseTime(s),this.stats_.setResolution(i.videoWidth||NaN,i.videoHeight||NaN),this.stats_.setCodecs(""),this.isDynamic()){let d=this.getLiveLatency();d!=null&&this.stats_.setLiveLatency(d/1e3)}let a=this.getVariantTracks().find(d=>d.active),c=this.getTextTracks().find(d=>d.active);if(a){if(a.bandwidth){let u=this.playRateController_?this.playRateController_.getRealRate():1,f=u*a.bandwidth;c&&c.bandwidth&&(f+=u*c.bandwidth),this.stats_.setCurrentStreamBandwidth(f)}a.width&&a.height&&this.stats_.setResolution(a.width||NaN,a.height||NaN);let d=a.codecs;c&&(d+=","+(c.codecs||c.mimeType)),d&&this.stats_.setCodecs(d)}if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&!this.isRemotePlayback()){if(this.manifest_&&(this.stats_.setManifestPeriodCount(this.manifest_.periodCount),this.stats_.setManifestGapCount(this.manifest_.gapCount),this.manifest_.presentationTimeline)){let u=this.manifest_.presentationTimeline.getMaxSegmentDuration();this.stats_.setMaxSegmentDuration(u)}let d=this.abrManager_.getBandwidthEstimate();this.stats_.setBandwidthEstimate(d)}return this.loadMode_==Q.LoadMode.SRC_EQUALS&&this.stats_.addBytesDownloaded(NaN),this.stats_.getBlob()}addTextTrackAsync(t,i,r,s,n,a,o=!1){let c=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding text tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);r!="subtitles"&&r!="captions"&&p.alwaysWarn("Using a kind value different of `subtitles` or `captions` can cause unwanted issues."),s||(s=await this.getTextMimetype_(t));let d=[];if(this.adManager_&&(d=this.adManager_.getCuePoints()),this.loadMode_==Q.LoadMode.SRC_EQUALS){let S=j.getDevice();o&&S.getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(r="forced");let b=await this.addSrcTrackElement_(t,i,r,s,a||"",d);if(b.track)return this.onTracksChanged_(),this.onTextChanged_(),se.html5TextTrackToTrack(b.track,this.textDisplayer_.isTextVisible());throw p.error("Cannot add this text when loaded with src="),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.CANNOT_ADD_EXTERNAL_TEXT_TO_SRC_EQUALS)}let u=R.ContentType,m=this.seekRange(),f=m.end-m.start;if(this.manifest_&&(f=this.manifest_.presentationTimeline.getDuration()),f==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_TEXT_TO_LIVE_STREAM);if(d.length){let S=await this.getTextData_(t),b=this.convertToWebVTT_(S,s,d),E=new Blob([b],{type:"text/vtt"});t=dr.createObjectURL(E),s="text/vtt"}let g=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:Ze.forSingleSegment(0,f,[t]),mimeType:s||"",codecs:n||"",kind:r,language:i,originalLanguage:i,label:a||null,type:u.TEXT,forced:!!o,external:!0}),_=O.getFullType(g.mimeType,g.codecs);if(!Ue.isTypeSupported(_))throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,s);return this.manifest_.textStreams.push(g),this.onTracksChanged_(),this.onTextChanged_(),se.textStreamToTrack(g)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(c),c}addThumbnailsTrack(t,i){let r=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding image tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);if(i||(i=await this.getTextMimetype_(t)),i!="text/vtt")throw new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.UNSUPPORTED_EXTERNAL_THUMBNAILS_URI,t);let s=R.ContentType,n=this.seekRange(),a=n.end-n.start;if(this.manifest_&&(a=this.manifest_.presentationTimeline.getDuration()),a==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_THUMBNAILS_TO_LIVE_STREAM);let o=await this.getTextData_(t),c=Ue.findParser(i);if(!c)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i);let d=c(),u={periodStart:0,segmentStart:0,segmentEnd:a,vttOffset:0,isMpegTs:!1},m=D.toUint8(o),f=d.parseMedia(m,u,t,[]),g=[];for(let S of f){let b=null,E=()=>(b==null&&(b=fe.resolveUris([t],[S.payload])),b||[]),C=new Se(S.startTime,S.endTime,E,0,null,null,0,0,1/0);if(S.payload.includes("#xywh")){let A=S.payload.split("#xywh=")[1].split(",");A.length===4&&C.setThumbnailSprite({height:parseInt(A[3],10),positionX:parseInt(A[0],10),positionY:parseInt(A[1],10),width:parseInt(A[2],10)})}g.push(C)}let _=i;g.length&&(_=await this.getTextMimetype_(g[0].getUris()[0]));let T=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(g),mimeType:_||"",kind:"",language:"und",type:s.IMAGE,tilesLayout:"1x1",external:!0});return this.loadMode_==Q.LoadMode.SRC_EQUALS?this.externalSrcEqualsThumbnailsStreams_.push(T):this.manifest_.imageStreams.push(T),this.onTracksChanged_(),se.imageStreamToTrack(T)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(r),r}addChaptersTrack(t,i,r){let s=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding chapters tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);r||(r=await this.getTextMimetype_(t));let n=R.ContentType,a=this.seekRange(),o=a.end-a.start;if(this.manifest_&&(o=this.manifest_.presentationTimeline.getDuration()),o==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_CHAPTERS_TO_LIVE_STREAM);let c=Ue.findParser(r);if(!c)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,r);let d=await this.getTextData_(t),u=c(),m={periodStart:0,segmentStart:0,segmentEnd:o,vttOffset:0,isMpegTs:!1},f=D.toUint8(d),g=u.parseMedia(f,m,t,[]),_=[];for(let b of g){let E=new Se(b.startTime,b.endTime,()=>[],0,null,null,0,0,1/0),C={title:b.payload,images:[]};E.setMetadata(C),_.push(E)}let S=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(_),mimeType:"text/plain",kind:"",language:i,originalLanguage:i,type:n.CHAPTER,external:!0});return this.loadMode_==Q.LoadMode.MEDIA_SOURCE?this.manifest_.chapterStreams.push(S):this.externalSrcEqualsChapterStreams_.push(S),this.onTracksChanged_(),se.chapterStreamToTrack(S)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(s),s}async getTextMimetype_(t){let i;try{v.assert(this.networkingEngine_,"Need networking engine."),i=await ct.getMimeType(t,this.networkingEngine_,this.config_.streaming.retryParameters)}catch(r){}if(i)return i;throw p.error("The mimeType has not been provided and it could not be deduced from its uri."),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.TEXT_COULD_NOT_GUESS_MIME_TYPE,t)}async addSrcTrackElement_(t,i,r,s,n,a){if(s!="text/vtt"||a.length){let c=await this.getTextData_(t),d=this.convertToWebVTT_(c,s,a),u=new Blob([d],{type:"text/vtt"});t=dr.createObjectURL(u),s="text/vtt"}let o=document.createElement("track");return o.src=this.cmcdManager_.appendTextTrackData(t),o.label=n,o.kind=r,o.srclang=i,this.video_.getAttribute("crossorigin")||this.video_.setAttribute("crossorigin","anonymous"),this.video_.appendChild(o),this.externalSrcEqualsTextTracks_.push(o),o}async getTextData_(t){v.assert(this.networkingEngine_,"Need networking engine.");let i=K.RequestType.SEGMENT,r=this.config_.streaming.retryParameters,s=K.makeRequest([t],r);return s.method="GET",this.cmcdManager_.applyTextData(s),(await this.networkingEngine_.request(i,s).promise).data}convertToWebVTT_(t,i,r){let s=Ue.findParser(i);if(s){let n=s(),a={periodStart:0,segmentStart:0,segmentEnd:this.video_.duration,vttOffset:0,isMpegTs:!1},o=D.toUint8(t),c=n.parseMedia(o,a,null,[]);return Us.convert(c,r)}throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i)}setMaxHardwareResolution(t,i){this.maxHwRes_.width=t,this.maxHwRes_.height=i}retryStreaming(t=.1){return this.loadMode_==Q.LoadMode.MEDIA_SOURCE?this.streamingEngine_.retry(t):!1}getManifest(){return p.alwaysWarn("Shaka Player's internal Manifest structure is NOT covered by semantic versioning compatibility guarantees. It may change at any time! Please consider filing a feature request for whatever you use getManifest() for."),this.manifest_}getManifestParserFactory(){return this.parserFactory_}getFetchedPlaybackInfo(){var a,o,c;let t={video:null,audio:null,text:null};if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE)return t;let i=R.ContentType,r=this.streamingEngine_.getCurrentVariant(),s=this.streamingEngine_.getCurrentTextStream(),n=this.video_.currentTime;for(let d of[r.video,r.audio,s]){if(!d||!d.segmentIndex)continue;let u=d.segmentIndex.find(n),m=d.segmentIndex.get(u),f={codecs:(a=m==null?void 0:m.codecs)!=null?a:d.codecs,mimeType:(o=m==null?void 0:m.mimeType)!=null?o:d.mimeType,bandwidth:(c=m==null?void 0:m.bandwidth)!=null?c:d.bandwidth};d.type==i.VIDEO?(f.width=d.width,f.height=d.height,t.video=f):d.type==i.AUDIO?t.audio=f:d.type==i.TEXT&&(t.text=f)}return t}addVariantToSwitchHistory_(t,i){this.stats_.getSwitchHistory().updateCurrentVariant(t,i)}addTextStreamToSwitchHistory_(t,i){this.stats_.getSwitchHistory().updateCurrentText(t,i)}defaultConfig_(){let t=st.createDefault();return t.streaming.failureCallback=i=>{this.defaultStreamingFailureCallback_(i)},t.textDisplayFactory=i=>(()=>{if(!this.videoContainer_)return!1;let s=this.video_;return!(s.webkitDisplayingFullscreen||s.webkitPresentationMode&&s.webkitPresentationMode!="inline")})()?new Jr(i):"track"in document.createElement("track")?new mr(i):(p.warning("Text tracks are not supported by the browser, disabling."),new yn),t}setVideoContainer(t){this.videoContainer_=t}getVideoContainer(){return this.videoContainer_}getTextDisplayer(){return this.textDisplayer_}defaultStreamingFailureCallback_(t){if(!this.isDynamic())return;let i=null;t.code==h.Code.BAD_HTTP_STATUS||t.code==h.Code.HTTP_ERROR?(i=1,this.config_.streaming.lowLatencyMode&&(i=.1)):t.code==h.Code.TIMEOUT&&(i=.1),i!=null&&(t.severity=h.Severity.RECOVERABLE,p.warning("Live streaming error. Retrying automatically..."),this.retryStreaming(i))}makeTextStreamsForClosedCaptions_(t){let i=R.ContentType,r=R.TextStreamKind,s=O.CEA608_CLOSED_CAPTION_MIMETYPE,n=O.CEA708_CLOSED_CAPTION_MIMETYPE,a=new Set;for(let o of t.textStreams)(o.mimeType==s||o.mimeType==n)&&a.add(o.originalId);for(let o of t.variants){let c=o.video;if(c&&c.closedCaptions){for(let d of c.closedCaptions.keys())if(!a.has(d)){let u=d.startsWith("CC")?s:n,m=new Mi,f=c.closedCaptions.get(d),g=se.createStream({id:this.nextExternalStreamId_++,originalId:d,segmentIndex:m,mimeType:u,kind:r.CLOSED_CAPTION,language:f,originalLanguage:f,type:i.TEXT,roles:c.roles});t.textStreams.push(g),a.add(d)}}}}async adjustStartTime_(t,i){let r=t.audio,s=t.video,n=async(c,d)=>{if(!c)return null;c.segmentIndex||await c.createSegmentIndex();let u=c.segmentIndex.getIteratorForTime(d),m=u?u.next().value:null;if(!m)return null;let f=m.startTime;return v.assert(f<=d,"Segment should start before target time!"),f},a=await n(r,i),o=await n(s,i);return o!=null&&a!=null?Math.max(o,a):o!=null?o:a!=null?a:i}updateBufferState_(){let t=this.isBuffering();if(p.v2("Player changing buffering state to",t),this.stats_&&this.bufferObserver_&&this.playhead_){this.config_.streaming.rebufferingGoal==0?this.playRateController_.setBuffering(!1):this.playRateController_.setBuffering(t),this.cmcdManager_&&this.cmcdManager_.setBuffering(t),this.updateStateHistory_();let n=this.config_.streaming.liveSync.dynamicTargetLatency.enabled,a=this.config_.streaming.liveSync.dynamicTargetLatency.maxAttempts;if(n&&t&&this.rebufferingCount_<a){let o=this.config_.streaming.liveSync.dynamicTargetLatency.maxLatency,c=this.config_.streaming.liveSync.targetLatencyTolerance,d=this.config_.streaming.liveSync.dynamicTargetLatency.rebufferIncrement;this.currentTargetLatency_&&(this.currentTargetLatency_=Math.min(this.currentTargetLatency_+ ++this.rebufferingCount_*d,o-c))}}let r=U.EventName.Buffering,s=new Map().set("buffering",t);this.dispatchEvent(Q.makeEvent_(r,s))}onRateChange_(){let t=this.video_.playbackRate;if(t==0){let r=this.getPlaybackRate();if(r!==0&&r!==1){let s=Q.makeEvent_(U.EventName.RateChange);this.dispatchEvent(s)}return}this.playRateController_&&(this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&this.abrManager_.playbackRateChanged(t),this.setupTrickPlayEventListeners_(t));let i=Q.makeEvent_(U.EventName.RateChange);this.dispatchEvent(i)}setupTrickPlayEventListeners_(t){this.trickPlayEventManager_.removeAll(),this.trickPlayEventManager_.listen(this.video_,"timeupdate",()=>{let i=this.video_.currentTime,r=this.seekRange(),s=this.isDynamic(),n=s?this.config_.streaming.safeSeekOffset:0;t>0?s&&t>1&&Math.floor(i)>=Math.floor(r.end)&&this.cancelTrickPlay():Math.floor(i)<=Math.floor(r.start+n)&&this.cancelTrickPlay()})}updateStateHistory_(){if(!this.stats_||!this.bufferObserver_)return;let t=Mr.State,i=this.stats_.getStateHistory(),r="playing";if(this.bufferObserver_.getState()==t.STARVING?r="buffering":this.isEnded()?r="ended":this.video_.paused&&(r="paused"),i.update(r)){let n=U.EventName.StateChanged,a=new Map().set("newstate",r);this.dispatchEvent(Q.makeEvent_(n,a))}}onTimeUpdate_(){let t=this.video_.playbackRate,i=this.isDynamic();if(this.config_.streaming.vodDynamicPlaybackRate&&!i){let C=this.config_.streaming.vodDynamicPlaybackRateLowBufferRate,A=this.getBufferFullness(),w=this.config_.streaming.vodDynamicPlaybackRateBufferRatio;A<=w?t!=C&&(p.debug("Buffer fullness ratio ("+A+") is less than the vodDynamicPlaybackRateBufferRatio ("+w+"). Updating playbackRate to "+C),this.trickPlay(C,!1)):A==1&&t!==this.playRateController_.getDefaultRate()&&(p.debug("Buffer is full. Cancel trick play."),this.cancelTrickPlay())}if(!i)return;let r=this.seekRange();if(!Number.isFinite(r.end)||this.video_.currentTime<r.start||this.video_.paused)return;let n,a,o,c,d,u=this.config_.streaming.liveSync.targetLatencyTolerance,m=this.config_.streaming.liveSync.dynamicTargetLatency.enabled,f=this.config_.streaming.liveSync.dynamicTargetLatency.stabilityThreshold;this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled?(n=this.config_.streaming.liveSync.targetLatency,a=n+u,c=Math.max(0,n-u),o=this.config_.streaming.liveSync.maxPlaybackRate,d=this.config_.streaming.liveSync.minPlaybackRate):this.manifest_&&this.manifest_.serviceDescription&&(n=this.manifest_.serviceDescription.targetLatency,this.manifest_.serviceDescription.targetLatency!=null?a=this.manifest_.serviceDescription.targetLatency+u:this.manifest_.serviceDescription.maxLatency!=null&&(a=this.manifest_.serviceDescription.maxLatency),this.manifest_.serviceDescription.targetLatency!=null?c=Math.max(0,this.manifest_.serviceDescription.targetLatency-u):this.manifest_.serviceDescription.minLatency!=null&&(c=this.manifest_.serviceDescription.minLatency),o=this.manifest_.serviceDescription.maxPlaybackRate||this.config_.streaming.liveSync.maxPlaybackRate,d=this.manifest_.serviceDescription.minPlaybackRate||this.config_.streaming.liveSync.minPlaybackRate),!this.currentTargetLatency_&&typeof n=="number"&&(this.currentTargetLatency_=n);let g=this.config_.streaming.liveSync.dynamicTargetLatency.maxAttempts;if(m&&this.targetLatencyReached_&&this.currentTargetLatency_!==null&&typeof n=="number"&&this.rebufferingCount_<g&&Date.now()-this.targetLatencyReached_>f*1e3){let C=this.config_.streaming.liveSync.dynamicTargetLatency.minLatency,A=(n-C)/2;this.currentTargetLatency_=Math.max(this.currentTargetLatency_-A,C+u),this.targetLatencyReached_=Date.now()}m&&this.currentTargetLatency_!==null&&(a=this.currentTargetLatency_+u,c=this.currentTargetLatency_-u);let _=r.end-this.video_.currentTime,T=0;if(this.loadMode_==Q.LoadMode.SRC_EQUALS){let C=this.video_.buffered;if(C.length>0){let A=C.end(C.length-1);T=Math.max(o,A-r.end)}}let S=this.config_.streaming.liveSync.panicMode,b=this.config_.streaming.liveSync.panicThreshold*1e3,E=Date.now()-this.bufferObserver_.getLastRebufferTime();S&&!d&&(d=this.config_.streaming.liveSync.minPlaybackRate),S&&d&&E<=b?t!=d&&(p.debug("Time since last rebuffer ("+E+"s) is less than the live sync panicThreshold ("+b+"s). Updating playbackRate to "+d),this.trickPlay(d,!1)):a!=null&&o&&_-T>a?(t!=o&&(p.debug("Latency ("+_+"s) is greater than live sync maxLatency ("+a+"s). Updating playbackRate to "+o),this.trickPlay(o,!1)),this.targetLatencyReached_=null):c!=null&&d&&_-T<c?(t!=d&&(p.debug("Latency ("+_+"s) is smaller than live sync minLatency ("+c+"s). Updating playbackRate to "+d),this.trickPlay(d,!1)),this.targetLatencyReached_=null):t!==this.playRateController_.getDefaultRate()&&(this.cancelTrickPlay(),this.targetLatencyReached_=Date.now())}isQuartile_(t,i){return(jt.isFloatEqual(t,i,.01)||i>t)&&this.completionPercent_<t?(this.completionPercent_=t,!0):!1}checkEnded_(){this.config_&&this.config_.playRangeEnd!=1/0&&this.isEnded()&&this.video_.pause()}onVideoProgress_(){if(!this.video_)return;let t=this.seekRange(),i=t.end-t.start,r=i>0?this.video_.currentTime/i:0;if(isNaN(r))return;let s=r*100,n;this.isQuartile_(0,s)?n=Q.makeEvent_(U.EventName.Started):this.isQuartile_(25,s)?n=Q.makeEvent_(U.EventName.FirstQuartile):this.isQuartile_(50,s)?n=Q.makeEvent_(U.EventName.Midpoint):this.isQuartile_(75,s)?n=Q.makeEvent_(U.EventName.ThirdQuartile):this.isQuartile_(100,s)||s>100?(n=Q.makeEvent_(U.EventName.Complete),this.checkEnded_()):this.checkEnded_(),n&&this.dispatchEvent(n)}onSeek_(){this.playheadObservers_&&this.playheadObservers_.notifyOfSeek(!this.playhead_.getIsJumpingGap()),this.streamingEngine_&&this.streamingEngine_.seeked(),this.bufferObserver_&&this.pollBufferState_(Kt.SEEKING)}updateAbrManagerVariants_(){try{v.assert(this.manifest_,"Manifest should exist by now!"),this.manifestFilterer_.checkRestrictedVariants(this.manifest_)}catch(n){return this.onError_(n),!1}let t=this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode,i=se.getPlayableVariants(this.manifest_.variants),r=this.currentAdaptationSetCriteria_.create(i),s=this.abrManager_.setVariants(Array.from(r.values()),t);return typeof s=="boolean"?s:!0}chooseVariant_(t=!1){if(this.updateAbrManagerVariants_()){if(this.config_.abr.enabled)return this.abrManager_.chooseVariant(t);{let r=this.currentAdaptationSetCriteria_.getLastAdaptationSet();if(r){let s=Array.from(r.values());if(s.length){let n=this.streamingEngine_.getCurrentVariant();if(n&&n.video){let a=s.find(o=>o.video==n.video);if(a)return a}}}return this.abrManager_.chooseVariant(t)}}else return null}checkVariants_(){v.assert(this.manifest_,"Should have manifest!");let t=Date.now()/1e3,i=!1,r=n=>{let a="";return n.video&&(a+="video:"+n.video.id),n.audio&&(a+=a?"&":"",a+="audio:"+n.audio.id),a},s=!0;for(let n of this.manifest_.variants)n.disabledUntilTime>0&&n.disabledUntilTime<=t&&(n.disabledUntilTime=0,i=!0,p.v2("Re-enabled variant with "+r(n))),n.disabledUntilTime>0&&(s=!1);s&&this.checkVariantsTimer_.stop(),i&&this.chooseVariantAndSwitch_(!1,void 0,!1,!1)}chooseTextStream_(t){let i=null,r=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,this.currentTextLanguage_,this.currentTextRole_,this.currentTextForced_);return r.length&&(i=r[0]),!i&&t.audio&&this.config_.accessibility.handleForcedSubtitlesAutomatically&&(r=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,t.audio.language,"",!0),r.length&&(i=r[0])),i}chooseVariantAndSwitch_(t=!0,i=0,r=!1,s=!0){v.assert(this.config_,"Must not be destroyed");let n=this.chooseVariant_();n&&this.switchVariant_(n,s,t,i,r)}switchVariant_(t,i,r,s,n=!1){let a=this.streamingEngine_.getCurrentVariant();if(t==a){p.debug("Variant already selected."),r&&this.streamingEngine_.switchVariant(t,r,s,!0);return}this.addVariantToSwitchHistory_(t,i),this.streamingEngine_.switchVariant(t,r,s,n,i);let o=null;a&&(o=se.variantToTrack(a));let c=se.variantToTrack(t);c.active=!0,this.lcevcDec_&&this.lcevcDec_.updateVariant(t,this.getManifestType()),i?this.onAdaptation_(o,c):this.onVariantChanged_(o,c),this.checkAudioTracksChanged_(o,c)}switchHtml5Track_(t){v.assert(this.video_&&this.video_.audioTracks,"Video and video.audioTracks should not be null!");let r=Array.from(this.video_.audioTracks).find(o=>o.enabled);if(t.enabled=!0,!r)return;t.id!==r.id&&(r.enabled=!1);let s=this.getActiveHtml5VideoTrack_(),n=se.html5TrackToShakaTrack(r,s),a=se.html5TrackToShakaTrack(t,s);this.onVariantChanged_(n,a),this.checkAudioTracksChanged_(n,a)}getActiveHtml5VideoTrack_(){return this.video_&&this.video_.videoTracks?Array.from(this.video_.videoTracks).find(i=>i.selected):null}setInitialTextState_(t){t?(this.isTextVisible_=!0,this.textDisplayer_.setTextVisibility(!0)):(this.isTextVisible_=!1,this.textDisplayer_.setTextVisibility(!1))}onManifestUpdate_(){this.parser_&&this.parser_.update&&this.parser_.update()}onSegmentAppended_(t,i,r,s,n,a){let o=R.ContentType;if(r!=o.TEXT){if(this.playhead_){this.playhead_.notifyOfBufferingChange();let d=this.mediaSourceEngine_.bufferStart(r);!this.isDynamic()&&this.video_.paused&&!this.video_.seeking&&!this.mediaSourceEngine_.isReloadingMediaSource()&&d!=null&&d>0&&this.playhead_.getTime()<d&&!jt.isFloatEqual(this.playhead_.getTime(),d,.001)&&this.playhead_.setStartTime(d)}this.pollBufferState_()}let c=new Map().set("start",t).set("end",i).set("contentType",r).set("isMuxed",s).set("isDependency",n).set("mediaTimestamp",a);this.dispatchEvent(Q.makeEvent_(U.EventName.SegmentAppended,c))}switch_(t,i=!1,r=0){p.debug("switch_"),v.assert(this.config_.abr.enabled,"AbrManager should not call switch while disabled!"),this.manifest_&&this.streamingEngine_&&t!=this.streamingEngine_.getCurrentVariant()&&this.switchVariant_(t,!0,i,r)}onAdaptation_(t,i){let r=new Map().set("oldTrack",t).set("newTrack",i),s=Q.makeEvent_(U.EventName.Adaptation,r);this.delayDispatchEvent_(s)}onTracksChanged_(){let t=Q.makeEvent_(U.EventName.TracksChanged);this.delayDispatchEvent_(t),this.onAudioTracksChanged_()}onVariantChanged_(t,i){let r=new Map().set("oldTrack",t).set("newTrack",i),s=Q.makeEvent_(U.EventName.VariantChanged,r);this.delayDispatchEvent_(s)}checkAudioTracksChanged_(t,i){let r=!1;(!t||t.audioId!=i.audioId||t.audioGroupId!=i.audioGroupId)&&(r=!0),r&&this.onAudioTracksChanged_()}onAudioTracksChanged_(){let t=Q.makeEvent_(U.EventName.AudioTracksChanged);this.delayDispatchEvent_(t)}onTextChanged_(){let t=Q.makeEvent_(U.EventName.TextChanged);this.delayDispatchEvent_(t)}onAbrStatusChanged_(){this.config_.abr.enabled||this.restoreDisabledVariants_();let t=new Map().set("newStatus",this.config_.abr.enabled);this.delayDispatchEvent_(Q.makeEvent_(U.EventName.AbrStatusChanged,t))}setTextDisplayerLanguage_(){let t=this.getTextTracks().find(i=>i.active);t&&this.textDisplayer_&&this.textDisplayer_.setTextLanguage(t.language)}restoreDisabledVariants_(t=!0){if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE){v.assert(this.manifest_,"Should have manifest!"),p.v2("Restoring all disabled streams..."),this.checkVariantsTimer_.stop();for(let i of this.manifest_.variants)isFinite(i.disabledUntilTime)&&(i.disabledUntilTime=0);t&&this.updateAbrManagerVariants_()}}disableStream(t,i){if(!this.config_.abr.enabled||this.loadMode_===Q.LoadMode.DESTROYED||!navigator.onLine||i==0||!this.manifest_)return!1;if(this.manifest_.variants.some(s=>{let n=s[t.type];return n&&n.id!==t.id&&!s.disabledUntilTime?se.isAudio(t)?t.language===n.language:!0:!1})){let s=!1,n=!1;for(let c of this.manifest_.variants){let d=c[t.type];d&&(d.id===t.id?(c.disabledUntilTime=Date.now()/1e3+i,s=!0,p.v2("Disabled stream "+t.type+":"+t.id+" for "+i+" seconds...")):d.trickModeVideo&&d.trickModeVideo.id==t.id&&(n=!0))}if(!s&&n)return!1;v.assert(s,"Must have disabled stream"),this.checkVariantsTimer_.tickEvery(1);let{video:a}=this.getBufferedInfo(),o=a.reduce((c,{start:d,end:u})=>c+u-d,0);return this.chooseVariantAndSwitch_(!1,o,!0,!1),!0}return p.warning("No alternate stream found for active "+t.type+" stream. Will ignore request to disable stream..."),!1}async onError_(t){if(v.assert(t instanceof h,"Wrong error type!"),this.loadMode_==Q.LoadMode.DESTROYED)return;if(t.severity===h.Severity.RECOVERABLE&&this.stats_.addNonFatalError(),this.manifest_&&this.streamingEngine_&&!t.handled&&(t.code==h.Code.VIDEO_ERROR||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.STREAMING_NOT_ALLOWED||t.code==h.Code.TRANSMUXING_FAILED)&&(se.getPlayableVariants(this.manifest_.variants).length>1||this.fullyLoaded_)){if(j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&t.code==h.Code.VIDEO_ERROR)return;try{if(await this.streamingEngine_.resetMediaSource()){let o=Q.makeEvent_(U.EventName.MediaSourceRecovered);this.dispatchEvent(o);return}}catch(a){}}t.severity===h.Severity.CRITICAL&&this.restoreDisabledVariants_(!1);let i=U.EventName.Error,r=Q.makeEvent_(i,new Map().set("detail",t));this.dispatchEvent(r),r.defaultPrevented&&(t.handled=!0)}addFont(t,i){return Ge.addFont(t,i)}onRegionEvent_(t,i,r=this){let s={schemeIdUri:i.schemeIdUri,value:i.value,startTime:i.startTime,endTime:i.endTime,id:i.id,timescale:i.timescale,eventNode:i.eventNode,urlParams:i.urlParams,values:i.values},n=new Map().set("detail",s);r.dispatchEvent(Q.makeEvent_(t,n))}sendEventStreamCallback_(t){if(t.schemeIdUri!=="urn:mpeg:dash:event:callback:2015"||!t.eventNode)return;let i=I.getTextContents(t.eventNode);if(!i)return;let r=i.trim();if(!r)return;r=fe.applyUrlParams(r,t.urlParams);let s=K.RequestType.EVENT_CALLBACK,n=K.makeRequest([r],K.defaultRetryParameters());this.networkingEngine_.request(s,n).promise.catch(()=>{})}onMediaQualityChange_(t,i,r=!1){let s={bandwidth:t.bandwidth,audioSamplingRate:t.audioSamplingRate,codecs:t.codecs,contentType:t.contentType,frameRate:t.frameRate,height:t.height,mimeType:t.mimeType,channelsCount:t.channelsCount,pixelAspectRatio:t.pixelAspectRatio,width:t.width,label:t.label,roles:t.roles,language:t.language},n=new Map().set("mediaQuality",s).set("position",i);this.dispatchEvent(Q.makeEvent_(r?U.EventName.AudioTrackChanged:U.EventName.MediaQualityChanged,n))}videoErrorToShakaError_(t=!0){if(v.assert(this.video_.error,"Video error expected, but missing!"),!this.video_.error)return t?new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.VIDEO_ERROR):null;let{code:i,extended:r,message:s}=h.getMediaElementErrorDetails(this.video_.error);return!t&&i===MediaError.MEDIA_ERR_ABORTED?null:new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.VIDEO_ERROR,i,r,s)}onVideoError_(t){let i=this.videoErrorToShakaError_(!1);i&&this.onError_(i)}onKeyStatus_(t){if(!this.streamingEngine_)return;let i=Q.makeEvent_(U.EventName.KeyStatusChanged);this.dispatchEvent(i);let r=Object.keys(t);r.length==0&&p.warning("Got a key status event without any key statuses, so we don't know the real key statuses. If we don't have all the keys, you'll need to set restrictions so we don't select those tracks."),r.length==1&&r[0]==""&&(r=["00"],t={"00":t[""]});let s=r.length==1&&r[0]=="00";s&&p.warning("Got a synthetic key status event, so we don't know the real key statuses. If we don't have all the keys, you'll need to set restrictions so we don't select those tracks.");let n=Rr.restrictedStatuses,a=!1;if(v.assert(this.drmEngine_,"drmEngine should be non-null here."),r.length){let o=this.keySystem(),c=ei.asMap(this.config_.drm.clearKeys),d=(u,m)=>{u.allowedByKeySystem=!0;for(let f of m){let g=t[s?"00":f];(g||this.drmEngine_.hasManifestInitData())&&(u.allowedByKeySystem=u.allowedByKeySystem&&!!g&&!n.includes(g))}};for(let u of this.manifest_.variants){let m=se.getVariantStreams(u);for(let f of m){let g=u.allowedByKeySystem;if(f.keyIds.size)if(f.drmInfos.length&&!c.size&&this.manifest_.type==me.HLS)for(let _ of f.drmInfos)_.keySystem==o&&(_.keyIds.size?d(u,_.keyIds):d(u,f.keyIds));else d(u,f.keyIds);g!=u.allowedByKeySystem&&(a=!0)}}}if(a){this.onTracksChanged_();let o=this.streamingEngine_.getCurrentVariant();o&&!o.allowedByKeySystem?(p.debug("Choosing new streams after key status changed"),this.chooseVariantAndSwitch_()):this.updateAbrManagerVariants_()}}static applyPlayRange_(t,i,r){i>0&&(t.isDynamic()?p.warning("|playRangeStart| has been configured for live content. Ignoring the setting."):t.setUserSeekStart(i));let s=t.getDuration();r<s&&(t.isDynamic()?p.warning("|playRangeEnd| has been configured for live content. Ignoring the setting."):t.setDuration(r))}async delayDispatchEvent_(t){await Promise.resolve(),this.loadMode_!=Q.LoadMode.DESTROYED&&this.dispatchEvent(t)}createAbortLoadError_(){return new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.LOAD_INTERRUPTED)}isRemotePlayback(){if(!this.video_)return!1;let i=j.getDevice().getRemote(this.video_);return i?i.state!="disconnected":!1}isEnded(){return!this.video_||this.video_.ended?!0:this.fullyLoaded_&&!this.isDynamic()&&this.video_.currentTime>=this.seekRange().end}static convertLegacyPreferences_(t){let i=(d,u)=>{p.alwaysWarn(d,"has been deprecated. Please use",u,"instead.")},r={preferredAudioLanguage:"language",preferredAudioRole:"role",preferredAudioLabel:"label",preferredAudioChannelCount:"channelCount",preferSpatialAudio:"spatialAudio"};if(Object.keys(r).some(d=>d in t)){let d={language:"",role:"",label:"",channelCount:0,codec:""};for(let[u,m]of Object.entries(r))u in t&&(i(u,"preferredAudio"),d[m]=t[u],delete t[u]);t.preferredAudio||(t.preferredAudio=[d])}if("preferredAudioCodecs"in t){i("preferredAudioCodecs","preferredAudio");let d=t.preferredAudioCodecs;Array.isArray(d)&&d.length&&(t.preferredAudio||(t.preferredAudio=d.map(u=>({language:"",role:"",label:"",channelCount:0,codec:u})))),delete t.preferredAudioCodecs}let n={preferredTextLanguage:"language",preferredTextRole:"role",preferForcedSubs:"forced"};if(Object.keys(n).some(d=>d in t)){let d={language:"",role:"",format:""};for(let[u,m]of Object.entries(n))u in t&&(i(u,"preferredText"),d[m]=t[u],delete t[u]);t.preferredText||(t.preferredText=[d])}if("preferredTextFormats"in t){i("preferredTextFormats","preferredText");let d=t.preferredTextFormats;Array.isArray(d)&&d.length&&(t.preferredText||(t.preferredText=d.map(u=>({language:"",role:"",format:u})))),delete t.preferredTextFormats}let o={preferredVideoLabel:"label",preferredVideoRole:"role",preferredVideoHdrLevel:"hdrLevel",preferredVideoLayout:"layout"};if(Object.keys(o).some(d=>d in t)){let d={label:"",role:"",language:"",codec:"",hdrLevel:"",layout:""};for(let[u,m]of Object.entries(o))u in t&&(i(u,"preferredVideo"),d[m]=t[u],delete t[u]);t.preferredVideo||(t.preferredVideo=[d])}if("preferredVideoCodecs"in t){i("preferredVideoCodecs","preferredVideo");let d=t.preferredVideoCodecs;Array.isArray(d)&&d.length&&(t.preferredVideo||(t.preferredVideo=d.map(u=>({label:"",role:"",language:"",codec:u,hdrLevel:"",layout:""})))),delete t.preferredVideoCodecs}}registerExtraTrackPromise_(t){this.pendingExtraTrackPromises_.add(t),t.finally(()=>this.pendingExtraTrackPromises_.delete(t))}async waitForPendingExtraTrackPromises_(){this.pendingExtraTrackPromises_.size&&await Promise.all([...this.pendingExtraTrackPromises_])}};l(Q,"LoadMode",{DESTROYED:0,NOT_LOADED:1,MEDIA_SOURCE:2,SRC_EQUALS:3}),l(Q,"TYPICAL_BUFFERING_THRESHOLD_",.5),l(Q,"supportPlugins_",new Map),l(Q,"adManagerFactory_",null),l(Q,"queueManagerFactory_",null),l(Q,"TextTrackLabel","Shaka Player TextTrack");var dt=Q;dt.version="v5.2.6-uncompiled";Cr.init(dt.version);/*! @license
491
491
  * Shaka Player
492
492
  * Copyright 2016 Google LLC
493
493
  * SPDX-License-Identifier: Apache-2.0
@@ -511,7 +511,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
511
511
  * Shaka Player
512
512
  * Copyright 2016 Google LLC
513
513
  * SPDX-License-Identifier: Apache-2.0
514
- */var Ns=class y{static isInterstitialRegion(e){if(y.isAlternativeMpd_(e))return!0;let t=e.schemeIdUri;return(t=="urn:mpeg:dash:event:2012"||t=="urn:scte:dash:scte214-events")&&!!e.eventNode&&!!I.findChild(e.eventNode,"OverlayEvent")}static parseRegion(e){return y.isAlternativeMpd_(e)?y.parseAlternativeMpd_(e):y.parseOverlay_(e)}static isAlternativeMpd_(e){return e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:insert:2025"||e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:replace:2025"}static parseAlternativeMpd_(e){let t=e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:replace:2025",i=e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:insert:2025";if(!t&&!i)return p.warning("Unsupported alternative media presentation",e),null;let r=e.startTime,s=e.endTime,n=null,a=0,o,c=!0,d=null,u=null;for(let f of e.eventNode.children)if(f.tagName=="AlternativeMPD"){let g=f.attributes.uri;if(g){o=g;break}}else if(f.tagName=="InsertPresentation"||f.tagName=="ReplacePresentation"){let g=f.attributes.uri||f.attributes.url;if(g){o=q.htmlUnescape(g);let _=I.parseAttr(f,"maxDuration",I.parseInt);_&&(n=_/e.timescale);let T=I.parseAttr(f,"returnOffset",I.parseInt);T&&(a=T/e.timescale),t&&a&&(s=r+a),I.parseAttr(f,"noJump",I.parseInt)&&(c=!1);let b=I.parseAttr(f,"skipAfter",I.parseDuration);typeof b=="number"&&(d=b);let E=I.parseAttr(f,"earliestResolutionTimeOffset",I.parseFloat);E&&(u=E/e.timescale);break}}if(!o)return p.warning("Unsupported alternative media presentation",e),null;o=fe.applyUrlParams(o,e.urlParams);let m={id:e.id,groupId:null,startTime:r,endTime:s,uri:o,mimeType:null,isSkippable:d!=null,skipOffset:d,skipFor:null,canJump:c,resumeOffset:i?a:null,playoutLimit:n,once:!1,pre:!1,post:!1,timelineRange:t&&!i,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null};return u!=null&&(m.resolutionTimeOffset=u),m}static parseOverlay_(e){v.assert(e.eventNode,"Need a region eventNode");let t=I.findChild(e.eventNode,"OverlayEvent"),i=t.attributes.uri,r=t.attributes.mimeType,s=t.attributes.loop=="true",n=I.parseAttr(t,"z",I.parseInt);if(!i||n==0)return p.warning("Unsupported OverlayEvent",e),null;let a=null,o=I.findChild(t,"Background");if(o){let T=o.attributes.uri;T?a=`center / contain no-repeat url('${T}')`:a=I.getContents(o)}let c={x:1920,y:1080},d=I.findChild(t,"Viewport");if(d){let T=I.parseAttr(d,"x",I.parseInt);if(T==null)return p.warning("Unsupported OverlayEvent",e),null;let S=I.parseAttr(d,"y",I.parseInt);if(S==null)return p.warning("Unsupported OverlayEvent",e),null;c.x=T,c.y=S}let u={viewport:{x:c.x,y:c.y},topLeft:{x:0,y:0},size:{x:c.x,y:c.y}},m=I.findChild(t,"Overlay");if(d&&m){let T=I.findChild(m,"TopLeft"),S=I.findChild(m,"Size");if(T&&S){let b=y.parseTopLeftSize_(T,S);if(!b)return p.warning("Unsupported OverlayEvent",e),null;u.topLeft=b.topLeft,u.size=b.size}}let f=null,g=I.findChild(t,"Squeeze");if(d&&g){let T=I.findChild(g,"TopLeft"),S=I.findChild(g,"Size");if(T&&S){let b=y.parseTopLeftSize_(T,S);if(!b)return p.warning("Unsupported OverlayEvent",e),null;f={viewport:{x:c.x,y:c.y},topLeft:b.topLeft,size:b.size}}}return{id:e.id,groupId:null,startTime:e.startTime,endTime:e.endTime,uri:i,mimeType:r,isSkippable:!1,skipOffset:null,skipFor:null,canJump:!0,resumeOffset:null,playoutLimit:null,once:!1,pre:!1,post:!1,timelineRange:!0,loop:s,overlay:u,displayOnBackground:n==-1,currentVideo:f,background:a,clickThroughUrl:null,tracking:null}}static parseTopLeftSize_(e,t){let i=I.parseAttr(e,"x",I.parseInt),r=I.parseAttr(e,"y",I.parseInt),s=I.parseAttr(t,"x",I.parseInt),n=I.parseAttr(t,"y",I.parseInt);return i==null||r==null||s==null||n==null?null:{topLeft:{x:i,y:r},size:{x:s,y:n}}}};/*! @license
514
+ */var Os=class y{static isInterstitialRegion(e){if(y.isAlternativeMpd_(e))return!0;let t=e.schemeIdUri;return(t=="urn:mpeg:dash:event:2012"||t=="urn:scte:dash:scte214-events")&&!!e.eventNode&&!!I.findChild(e.eventNode,"OverlayEvent")}static parseRegion(e){return y.isAlternativeMpd_(e)?y.parseAlternativeMpd_(e):y.parseOverlay_(e)}static isAlternativeMpd_(e){return e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:insert:2025"||e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:replace:2025"}static parseAlternativeMpd_(e){let t=e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:replace:2025",i=e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:insert:2025";if(!t&&!i)return p.warning("Unsupported alternative media presentation",e),null;let r=e.startTime,s=e.endTime,n=null,a=0,o,c=!0,d=null,u=null;for(let f of e.eventNode.children)if(f.tagName=="AlternativeMPD"){let g=f.attributes.uri;if(g){o=g;break}}else if(f.tagName=="InsertPresentation"||f.tagName=="ReplacePresentation"){let g=f.attributes.uri||f.attributes.url;if(g){o=q.htmlUnescape(g);let _=I.parseAttr(f,"maxDuration",I.parseInt);_&&(n=_/e.timescale);let T=I.parseAttr(f,"returnOffset",I.parseInt);T&&(a=T/e.timescale),t&&a&&(s=r+a),I.parseAttr(f,"noJump",I.parseInt)&&(c=!1);let b=I.parseAttr(f,"skipAfter",I.parseDuration);typeof b=="number"&&(d=b);let E=I.parseAttr(f,"earliestResolutionTimeOffset",I.parseFloat);E&&(u=E/e.timescale);break}}if(!o)return p.warning("Unsupported alternative media presentation",e),null;o=fe.applyUrlParams(o,e.urlParams);let m={id:e.id,groupId:null,startTime:r,endTime:s,uri:o,mimeType:null,isSkippable:d!=null,skipOffset:d,skipFor:null,canJump:c,resumeOffset:i?a:null,playoutLimit:n,once:!1,pre:!1,post:!1,timelineRange:t&&!i,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null};return u!=null&&(m.resolutionTimeOffset=u),m}static parseOverlay_(e){v.assert(e.eventNode,"Need a region eventNode");let t=I.findChild(e.eventNode,"OverlayEvent"),i=t.attributes.uri,r=t.attributes.mimeType,s=t.attributes.loop=="true",n=I.parseAttr(t,"z",I.parseInt);if(!i||n==0)return p.warning("Unsupported OverlayEvent",e),null;let a=null,o=I.findChild(t,"Background");if(o){let T=o.attributes.uri;T?a=`center / contain no-repeat url('${T}')`:a=I.getContents(o)}let c={x:1920,y:1080},d=I.findChild(t,"Viewport");if(d){let T=I.parseAttr(d,"x",I.parseInt);if(T==null)return p.warning("Unsupported OverlayEvent",e),null;let S=I.parseAttr(d,"y",I.parseInt);if(S==null)return p.warning("Unsupported OverlayEvent",e),null;c.x=T,c.y=S}let u={viewport:{x:c.x,y:c.y},topLeft:{x:0,y:0},size:{x:c.x,y:c.y}},m=I.findChild(t,"Overlay");if(d&&m){let T=I.findChild(m,"TopLeft"),S=I.findChild(m,"Size");if(T&&S){let b=y.parseTopLeftSize_(T,S);if(!b)return p.warning("Unsupported OverlayEvent",e),null;u.topLeft=b.topLeft,u.size=b.size}}let f=null,g=I.findChild(t,"Squeeze");if(d&&g){let T=I.findChild(g,"TopLeft"),S=I.findChild(g,"Size");if(T&&S){let b=y.parseTopLeftSize_(T,S);if(!b)return p.warning("Unsupported OverlayEvent",e),null;f={viewport:{x:c.x,y:c.y},topLeft:b.topLeft,size:b.size}}}return{id:e.id,groupId:null,startTime:e.startTime,endTime:e.endTime,uri:i,mimeType:r,isSkippable:!1,skipOffset:null,skipFor:null,canJump:!0,resumeOffset:null,playoutLimit:null,once:!1,pre:!1,post:!1,timelineRange:!0,loop:s,overlay:u,displayOnBackground:n==-1,currentVideo:f,background:a,clickThroughUrl:null,tracking:null}}static parseTopLeftSize_(e,t){let i=I.parseAttr(e,"x",I.parseInt),r=I.parseAttr(e,"y",I.parseInt),s=I.parseAttr(t,"x",I.parseInt),n=I.parseAttr(t,"y",I.parseInt);return i==null||r==null||s==null||n==null?null:{topLeft:{x:i,y:r},size:{x:s,y:n}}}};/*! @license
515
515
  * Shaka Player
516
516
  * Copyright 2016 Google LLC
517
517
  * SPDX-License-Identifier: Apache-2.0
@@ -527,15 +527,15 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
527
527
  * Shaka Player
528
528
  * Copyright 2016 Google LLC
529
529
  * SPDX-License-Identifier: Apache-2.0
530
- */var An=class{constructor(e,t,i){l(this,"config_");l(this,"adContainer_");l(this,"basePlayer_");l(this,"baseVideo_");l(this,"adVideo_");l(this,"usingBaseVideo_");l(this,"video_");l(this,"onEvent_");l(this,"hlsMetadataIds_");l(this,"interstitialIds_");l(this,"interstitials_");l(this,"sortedInterstitials_");l(this,"unresolvedAssetLists_");l(this,"preloadOffsets_");l(this,"preloadTasks_");l(this,"preloadOnDomElements_");l(this,"player_");l(this,"eventManager_");l(this,"adEventManager_");l(this,"isEnded_");l(this,"playingAd_");l(this,"lastTime_");l(this,"lastPlayedAd_");l(this,"playingAdStartTime_");l(this,"playoutLimitTimer_");l(this,"lastOnSkip_");l(this,"usingListeners_");l(this,"videoCallbackId_");l(this,"videoFrameCallbackHandler_");l(this,"sessionId_");l(this,"assetStartOffsets_");l(this,"checkForInterstitials_");l(this,"onTimeUpdate_");l(this,"onSeeked_");l(this,"timeUpdateTimer_");l(this,"pollTimer_");this.config_=null,this.adContainer_=e,this.basePlayer_=t,this.baseVideo_=t.getMediaElement(),this.adVideo_=null,this.usingBaseVideo_=!0,this.video_=this.baseVideo_,this.onEvent_=i,this.hlsMetadataIds_=new Set,this.interstitialIds_=new Set,this.interstitials_=new Set,this.sortedInterstitials_=null,this.unresolvedAssetLists_=new Set,this.preloadOffsets_=new Map,this.preloadTasks_=new Map,this.preloadOnDomElements_=new Map,this.player_=new dt,this.updatePlayerConfig_(),this.eventManager_=new ue,this.adEventManager_=new ue,this.isEnded_=!1,this.playingAd_=!1,this.lastTime_=null,this.lastPlayedAd_=null,this.playingAdStartTime_=null,this.playoutLimitTimer_=null,this.lastOnSkip_=null,this.usingListeners_=!1,this.videoCallbackId_=-1,this.videoFrameCallbackHandler_=null,this.sessionId_=null,this.assetStartOffsets_=new Map;let r=s=>s?s.overlay?!0:this.isEnded_?s.post:!this.baseVideo_.paused:!1;this.checkForInterstitials_=()=>{if(this.playingAd_||!this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended,this.lastTime_=this.baseVideo_.currentTime;let s=this.getCurrentInterstitial_();s&&r(s)&&this.setupAd_(s,1,1,Date.now())},this.onTimeUpdate_=()=>{if(this.playingAd_||this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended,this.baseVideo_.paused||(this.lastTime_=this.baseVideo_.currentTime);let s;this.lastPlayedAd_||(s=this.getCurrentInterstitial_(!0)),s||(s=this.getCurrentInterstitial_()),s&&r(s)&&this.setupAd_(s,1,1,Date.now())},this.onSeeked_=()=>{if(this.playingAd_||!this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended;let s=this.baseVideo_.currentTime;this.lastPlayedAd_&&!this.lastPlayedAd_.pre&&!this.lastPlayedAd_.post&&s<this.lastPlayedAd_.startTime&&(this.lastPlayedAd_=null),this.maybeResetAssetListsOnSeek_(s)},this.timeUpdateTimer_=new ae(this.checkForInterstitials_),this.pollTimer_=new ae(()=>{if(!this.playingAd_&&this.lastTime_!=null&&(this.interstitials_.size||this.unresolvedAssetLists_.size)){let s=this.basePlayer_.getLoadMode();if(s==dt.LoadMode.DESTROYED||s==dt.LoadMode.NOT_LOADED)return;let n=!1,a=this.basePlayer_.seekRange();for(let c of Array.from(this.unresolvedAssetLists_)){let d=c.endTime||c.startTime;a.start-d>=1?(this.unresolvedAssetLists_.delete(c),this.removeEventListeners_(),n=!0):!c.resolving&&!c.resolved&&this.shouldResolveAssetListNow_(c)&&(c.resolving=!0,this.resolveAssetListDescriptor_(c))}let o=Array.from(this.interstitials_);for(let c of o){if(c==this.lastPlayedAd_)continue;let d=c.endTime||c.startTime;if(a.start-d>=1)this.removeInterstitial_(c),this.removeEventListeners_(),c.overlay||(n=!0);else if(this.isWithinPreloadWindow_(c)){if(!this.preloadTasks_.has(c)&&this.isPreloadAllowed_(c)){v.assert(this.player_,"Need a player");let u=new In(this.player_,c,(m,f)=>{this.sendEvent_(m,f)});this.preloadTasks_.set(c,u)}this.checkPreloadOnDomElements_(c)}}n&&this.cuepointsChanged_()}}),this.configure(this.basePlayer_.getConfiguration().ads)}configure(e){this.config_=e,this.playingAd_||this.determineIfUsingBaseVideo_()}addEventListeners_(){var t;if(this.usingListeners_||!this.interstitials_.size&&!this.unresolvedAssetLists_.size)return;this.eventManager_.listenMulti(this.baseVideo_,["playing","timeupdate"],this.onTimeUpdate_),this.eventManager_.listen(this.baseVideo_,"seeked",this.onSeeked_),this.eventManager_.listen(this.baseVideo_,"ended",this.checkForInterstitials_);let e=!0;if(!this.isSmartTV_()){(t=this.videoFrameCallbackHandler_)==null||t.release();let i=this.baseVideo_;this.videoFrameCallbackHandler_=new es(i),e=!this.videoFrameCallbackHandler_.start(()=>{this.checkForInterstitials_()})}e&&this.timeUpdateTimer_.tickEvery(.025),this.pollTimer_&&this.pollTimer_.tickEvery(1),this.usingListeners_=!0}removeEventListeners_(){var e,t,i;!this.usingListeners_||this.interstitials_.size||this.unresolvedAssetLists_.size||(this.eventManager_.unlisten(this.baseVideo_,"playing",this.onTimeUpdate_),this.eventManager_.unlisten(this.baseVideo_,"timeupdate",this.onTimeUpdate_),this.eventManager_.unlisten(this.baseVideo_,"seeked",this.onSeeked_),this.eventManager_.unlisten(this.baseVideo_,"ended",this.checkForInterstitials_),(e=this.videoFrameCallbackHandler_)==null||e.release(),this.videoFrameCallbackHandler_=null,(t=this.timeUpdateTimer_)==null||t.stop(),(i=this.pollTimer_)==null||i.stop(),this.usingListeners_=!1)}determineIfUsingBaseVideo_(e=!1){if(!this.adContainer_||!this.config_){this.usingBaseVideo_=!0;return}let t=this.config_.supportsMultipleMediaElements,i=this.baseVideo_;(i.controls||i.webkitPresentationMode&&i.webkitPresentationMode!=="inline"||i.webkitDisplayingFullscreen)&&(t=!1),!(!e&&this.usingBaseVideo_!=t)&&(this.usingBaseVideo_=!t,this.usingBaseVideo_?(this.video_=this.baseVideo_,this.adVideo_&&(this.adVideo_.parentElement&&this.adContainer_.removeChild(this.adVideo_),this.adVideo_=null)):(e&&this.adVideo_&&(this.adVideo_.parentElement&&this.adContainer_.removeChild(this.adVideo_),this.adVideo_=null),this.adVideo_||(this.adVideo_=this.createMediaElement_()),this.video_=this.adVideo_))}stop(){this.adEventManager_&&this.adEventManager_.removeAll(),this.hlsMetadataIds_.clear(),this.interstitialIds_.clear(),this.interstitials_.clear(),this.sortedInterstitials_=null,this.unresolvedAssetLists_.clear(),this.preloadOffsets_.clear(),this.player_.destroyAllPreloads();let e=Array.from(this.preloadTasks_.values());for(let t of e)t.release();if(this.preloadTasks_.clear(),this.preloadOnDomElements_.size){let t=Array.from(this.preloadOnDomElements_.keys());for(let i of t)this.removePreloadOnDomElements_(i)}this.preloadOnDomElements_.clear(),this.assetStartOffsets_.clear(),this.player_.detach(),this.isEnded_=!1,this.playingAd_=!1,this.lastTime_=null,this.lastPlayedAd_=null,this.playingAdStartTime_=null,this.usingBaseVideo_=!0,this.video_=this.baseVideo_,this.adVideo_=null,this.sessionId_=null,this.removeBaseStyles_(),this.removeEventListeners_(),this.adContainer_&&Ge.removeAllChildren(this.adContainer_),this.playoutLimitTimer_&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null)}release(){this.stop(),this.eventManager_&&this.eventManager_.release(),this.adEventManager_&&this.adEventManager_.release(),this.timeUpdateTimer_&&(this.timeUpdateTimer_.stop(),this.timeUpdateTimer_=null),this.pollTimer_&&(this.pollTimer_.stop(),this.pollTimer_=null),this.player_.destroy()}getPlayer(){return this.player_}async addMetadata(e){let t=this.getMetadataValue_(e,"ID");if(t){if(this.hlsMetadataIds_.has(t)){this.updateInterstitials_(e,t);return}this.hlsMetadataIds_.add(t)}this.updatePlayerConfig_();let i=[];this.getMetadataValue_(e,"X-OVERLAY-ID")!=null?i=this.getOverlaysInfo_(e):i=await this.getInterstitialsInfo_(e),i.length&&await this.addInterstitials(i)}updateInterstitials_(e,t){let i=this.getMetadataValue_(e,"X-PLAYOUT-LIMIT");if(i==null)return;let r=parseFloat(i);if(!isNaN(r)){for(let s of this.interstitials_)(s.id===t||s.groupId===t)&&this.applyUpdatedPlayoutLimit_(s,r);for(let s of this.unresolvedAssetLists_)s.id===t&&s.playoutLimit==null&&(s.playoutLimit=r)}}applyUpdatedPlayoutLimit_(e,t){var a;if(e.playoutLimit!=null)return;e.playoutLimit=t;let i=this.playingAd_&&this.lastPlayedAd_!=null&&(this.lastPlayedAd_===e||e.groupId!=null&&this.lastPlayedAd_.groupId===e.groupId),r=!e.overlay&&!(e.mimeType&&(e.mimeType.startsWith("image/")||e.mimeType==="text/html"));if(!i||!r||this.playingAdStartTime_==null)return;let s=(Date.now()-this.playingAdStartTime_)/1e3,n=t-s;(a=this.playoutLimitTimer_)==null||a.stop(),this.playoutLimitTimer_=null,n<=0?this.lastOnSkip_&&this.lastOnSkip_():(this.playoutLimitTimer_=new ae(()=>{this.lastOnSkip_&&this.lastOnSkip_()}).tickAfter(n),this.player_.configure("playRangeEnd",t))}addPreloadMetadata(e){let t=this.getMetadataValue_(e,"ID");if(t){if(this.hlsMetadataIds_.has(t))return;this.hlsMetadataIds_.add(t)}let i=this.getMetadataValue_(e,"X-TARGET-ID");if(i){this.preloadOffsets_.set(i,e.startTime);for(let r of this.interstitials_)this.applyPreloadOffset_(r);for(let r of this.unresolvedAssetLists_)this.applyPreloadOffset_(r)}}applyPreloadOffset_(e){let t=null;e.id!=null&&this.preloadOffsets_.has(e.id)?t=this.preloadOffsets_.get(e.id):e.groupId!=null&&this.preloadOffsets_.has(e.groupId)&&(t=this.preloadOffsets_.get(e.groupId)),t!=null&&(e.resolutionTimeOffset=Math.max(0,e.startTime-t))}async addAdUrlInterstitial(e){let t={type:K.AdvancedRequestType.INTERSTITIAL_AD_URL},i=await this.makeAdRequest_(e,t).promise,r=I.parseXml(i.data,"VAST,vmap:VMAP");if(!r)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.VAST_INVALID_XML);let s=[];if(r.tagName=="VAST")s=ts.parseVastToInterstitials(r,this.lastTime_);else if(r.tagName=="vmap:VMAP"){let n=async o=>{let c=await this.makeAdRequest_(o.uri,t).promise,d=I.parseXml(c.data,"VAST");if(!d)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.VAST_INVALID_XML);s.push(...ts.parseVastToInterstitials(d,o.time))},a=[];for(let o of ts.parseVMAP(r))a.push(n(o));a.length&&await Promise.all(a)}this.addInterstitials(s)}async addInterstitials(e){let t=!1;for(let i of e){if(!i.uri){p.alwaysWarn("Missing URL in interstitial",i);continue}if(!i.mimeType)try{let s=this.player_.getNetworkingEngine();v.assert(s,"Need networking engine"),i.mimeType=await ct.getMimeType(i.uri,s,this.basePlayer_.getConfiguration().streaming.retryParameters)}catch(s){}let r=this.interstitialId_(i);if(!this.interstitialIds_.has(r)&&(i.loop&&!i.overlay&&p.alwaysWarn("Loop is only supported in overlay interstitials",i),i.overlay||(t=!0),this.interstitialIds_.add(r),this.interstitials_.add(i),this.sortedInterstitials_=null,this.applyPreloadOffset_(i),this.isWithinPreloadWindow_(i))){if(!this.preloadTasks_.has(i)&&this.isPreloadAllowed_(i)){v.assert(this.player_,"Need a player");let s=new In(this.player_,i,(n,a)=>{this.sendEvent_(n,a)});this.preloadTasks_.set(i,s)}this.checkPreloadOnDomElements_(i)}}t&&this.cuepointsChanged_(),this.addEventListeners_()}createMediaElement_(){let e=document.createElement(this.baseVideo_.tagName);return e.autoplay=!0,e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.display="none",e.setAttribute("playsinline",""),e}getSortedInterstitials_(){return this.sortedInterstitials_||(this.sortedInterstitials_=Array.from(this.interstitials_).sort((e,t)=>t.startTime-e.startTime)),this.sortedInterstitials_}getCurrentInterstitial_(e=!1,t=null){let i=0,r=null;if(this.interstitials_.size&&this.lastTime_!=null){let s=this.getSortedInterstitials_(),n=o=>Math.round(o*1e3)/1e3,a=s;e?a=s.filter(o=>o.pre):this.isEnded_?a=s.filter(o=>o.post):a=s.filter(o=>!o.pre&&!o.post);for(let o of a){let c=!1;if(e)c=o.pre;else if(this.isEnded_)c=o.post;else if(!o.pre&&!o.post){let d=this.lastTime_-n(o.startTime),u=1;this.config_.allowStartInMiddleOfInterstitial&&o.endTime&&o.endTime!=1/0&&(u=o.endTime-o.startTime),(d>0||d==0&&this.lastTime_==0)&&(d<=u||!o.canJump)&&(t==null&&this.lastPlayedAd_&&!this.lastPlayedAd_.pre&&!this.lastPlayedAd_.post&&this.lastPlayedAd_.startTime>=o.startTime?c=!1:c=!0)}if(c&&(!this.lastPlayedAd_||o.startTime>=this.lastPlayedAd_.startTime)){if(i==(t||0))r=o;else if(r&&!o.canJump){let d=n(r.startTime);n(o.startTime)-d>.001&&(r=o,i=0)}i++}}}return r}setupAd_(e,t,i,r,s=0){if(p.info("Starting interstitial",e.startTime,"at",this.lastTime_),this.lastPlayedAd_=e,this.determineIfUsingBaseVideo_(),v.assert(this.video_,"Must have video"),!this.usingBaseVideo_&&this.adContainer_&&!this.video_.parentElement&&this.adContainer_.appendChild(this.video_),i==1&&t==1&&(t=Array.from(this.interstitials_).filter(n=>e.pre?n.pre==e.pre:e.post?n.post==e.post:Math.abs(n.startTime-e.startTime)<.001).length),e.once&&(s++,this.interstitials_.delete(e),this.sortedInterstitials_=null,this.removeEventListeners_(),e.overlay||this.cuepointsChanged_()),e.mimeType&&(e.mimeType.startsWith("image/")||e.mimeType==="text/html")){if(!e.overlay){p.alwaysWarn("Unsupported interstitial",e);return}p.info("Starting interstitial",e),this.setupStaticAd_(e,t,i,s);return}if(this.usingBaseVideo_&&e.overlay){p.alwaysWarn("Unsupported interstitial",e);return}p.info("Starting interstitial",e),this.setupVideoAd_(e,t,i,r,s)}setupStaticAd_(e,t,i,r){let s=this.getTimeOffset_(e);if(!this.playingAd_){this.playingAdStartTime_=Date.now();let m=new Map().set("timeOffset",s).set("startedAt",this.lastTime_);this.sendEvent_(G.AD_BREAK_STARTED,m)}this.playingAd_=!0;let n=e.overlay;v.assert(n,"Must have overlay");let a=e.mimeType=="text/html"?"iframe":"img",o=document.createElement(a);o.style.objectFit="contain",o.style.position="absolute",o.style.border="none",this.setBaseStyles_(e);let c=()=>{this.playoutLimitTimer_&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null),this.adContainer_.removeChild(o),this.removeBaseStyles_(e),this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll();let m=this.getCurrentInterstitial_(e.pre,i-r);m?this.setupAd_(m,t,++i,Date.now(),r):this.playingAd_=!1,this.playingAd_||this.sendEvent_(G.AD_BREAK_ENDED,new Map().set("timeOffset",s))},d=new En(e,t,i);this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",d)),a=="iframe"?o.src=e.uri:(o.src=e.uri,o.onerror=m=>{this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",m)),c()}),n.viewport.x==0&&n.viewport.y==0?(o.width=n.size.x,o.height=n.size.y,o.style.bottom="10%",o.style.left="0",o.style.right="0",o.style.width="100%",!n.size.y&&a=="iframe"&&(o.style.height="auto")):this.applyOverlayPosition_(o,n),this.adContainer_.appendChild(o);let u=Date.now();this.playoutLimitTimer_&&this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=new ae(()=>{e.playoutLimit&&(Date.now()-u)/1e3>e.playoutLimit?(this.sendEvent_(G.AD_COMPLETE),c()):e.endTime&&this.baseVideo_.currentTime>e.endTime?(this.sendEvent_(G.AD_COMPLETE),c()):this.baseVideo_.currentTime<e.startTime&&(this.sendEvent_(G.AD_SKIPPED),c())}),e.playoutLimit&&!e.endTime?this.playoutLimitTimer_.tickAfter(e.playoutLimit):e.endTime&&this.playoutLimitTimer_.tickEvery(.025),this.adEventManager_.listen(this.baseVideo_,"seeked",()=>{let m=this.baseVideo_.currentTime;(m<e.startTime||e.endTime&&m>e.endTime)&&(this.playoutLimitTimer_&&this.playoutLimitTimer_.stop(),this.sendEvent_(G.AD_SKIPPED),c())}),e.clickThroughUrl&&this.adEventManager_.listen(o,"click",m=>{e.clickThroughUrl&&(this.sendEvent_(G.AD_CLICKED),window.open(e.clickThroughUrl,"_blank"))})}async setupVideoAd_(e,t,i,r,s){var T;v.assert(this.video_,"Must have video");let n=Date.now(),a=this.getTimeOffset_(e);if(!this.playingAd_){this.playingAdStartTime_=Date.now();let S=new Map().set("timeOffset",a).set("startedAt",this.lastTime_);this.sendEvent_(G.AD_BREAK_STARTED,S)}this.playingAd_=!0;let o=!1,c=()=>{if(!this.usingBaseVideo_&&!e.overlay&&e.resumeOffset==null)if(e.timelineRange&&e.endTime&&e.endTime!=1/0)this.baseVideo_.currentTime!=e.endTime&&(this.baseVideo_.currentTime=e.endTime);else{let S=Date.now();this.baseVideo_.currentTime+=(S-r)/1e3,r=S}},d=async(S,b)=>{var C;b||c();let E=this.getCurrentInterstitial_(e.pre,i-s);if(S&&e.groupId)for(;E&&E.groupId==e.groupId;)i++,E=this.getCurrentInterstitial_(e.pre,i-s);if(this.playoutLimitTimer_&&(!e.groupId||E&&E.groupId!=e.groupId)&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null),this.removeBaseStyles_(e),!E||E.overlay){if(e.post&&(this.lastTime_=null,this.lastPlayedAd_=null),this.usingBaseVideo_?await this.player_.detach():await this.player_.unload(),this.usingBaseVideo_){let A=e.resumeOffset;A==null&&(e.timelineRange&&e.endTime&&e.endTime!=1/0?A=e.endTime-(this.lastTime_||0):A=(Date.now()-r)/1e3),this.sendEvent_(G.AD_CONTENT_RESUME_REQUESTED,new Map().set("offset",A))}else this.basePlayer_.isLive()&&e.resumeOffset!=null&&e.resumeOffset!=0&&(this.baseVideo_.currentTime+=e.resumeOffset);this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll(),this.playingAd_=!1,this.usingBaseVideo_?this.cuepointsChanged_():(this.video_.style.display="none",b||c(),this.isEnded_||this.baseVideo_.play())}E&&this.usingBaseVideo_&&this.isSmartTV_()?(await this.player_.detach(),this.determineIfUsingBaseVideo_(!0)):this.determineIfUsingBaseVideo_(),E&&(this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll(),this.setupAd_(E,t,++i,r,s)),this.playingAd_||(this.sendEvent_(G.AD_BREAK_ENDED,new Map().set("timeOffset",a)),(C=this.playoutLimitTimer_)==null||C.stop(),this.playoutLimitTimer_=null)},u=async(S,b)=>{if(o)return;o=!0;let E=b&&S.code===h.Code.BAD_HTTP_STATUS;this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",S)),await d(!1,E)},m=async()=>{o||(o=!0,await d(!1,!1),this.sendEvent_(G.AD_COMPLETE))};this.lastOnSkip_=async()=>{o||(o=!0,this.sendEvent_(G.AD_SKIPPED),await d(!0,!1))};let f=new bn(this.video_,e,this.lastOnSkip_,t,i,!this.usingBaseVideo_);this.usingBaseVideo_||(f.setMuted(this.baseVideo_.muted),f.setVolume(this.baseVideo_.volume)),this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",f));let g=f.canSkipNow();if(g&&this.sendEvent_(G.AD_SKIP_STATE_CHANGED),this.preloadTasks_.has(e)){let b=this.preloadTasks_.get(e).getInitialError();if(b){this.preloadTasks_.delete(e),u(b,!0);return}}this.adEventManager_.listenOnce(this.player_,"error",S=>{u(S.detail,!1)}),this.adEventManager_.listen(this.video_,"timeupdate",()=>{if(!this.video_.duration)return;let b=f.canSkipNow();g!=b&&f.getRemainingTime()>0&&f.getDuration()>0&&this.sendEvent_(G.AD_SKIP_STATE_CHANGED),g=b,!this.usingBaseVideo_&&!e.overlay&&e.resumeOffset==null&&e.timelineRange&&e.endTime&&e.endTime!=1/0&&this.baseVideo_.currentTime!=e.endTime&&this.basePlayer_.seekRange().end>=e.endTime&&(this.baseVideo_.currentTime=e.endTime)}),this.adEventManager_.listenOnce(this.player_,"firstquartile",()=>{c(),this.sendEvent_(G.AD_FIRST_QUARTILE)}),this.adEventManager_.listenOnce(this.player_,"midpoint",()=>{c(),this.sendEvent_(G.AD_MIDPOINT)}),this.adEventManager_.listenOnce(this.player_,"thirdquartile",()=>{c(),this.sendEvent_(G.AD_THIRD_QUARTILE)}),this.adEventManager_.listenOnce(this.player_,"complete",m);let _=!1;if(this.adEventManager_.listen(this.video_,"play",()=>{_?this.sendEvent_(G.AD_RESUMED):(_=!0,this.sendEvent_(G.AD_PLAYING,new Map().set("ad",f)))}),this.adEventManager_.listen(this.video_,"pause",()=>{let S=this.player_.getConfiguration();if(this.video_.currentTime>=S.playRangeEnd){m();return}this.sendEvent_(G.AD_PAUSED)}),this.adEventManager_.listen(this.video_,"volumechange",()=>{this.video_.muted?this.sendEvent_(G.AD_MUTED):this.sendEvent_(G.AD_VOLUME_CHANGED),this.usingBaseVideo_||(this.baseVideo_.volume=this.video_.volume,this.baseVideo_.muted=this.video_.muted)}),e.clickThroughUrl){let S=this.adContainer_||this.video_;this.adEventManager_.listen(S,"click",b=>{e.clickThroughUrl&&(f.isPaused()||f.pause(),window.open(e.clickThroughUrl,"_blank"))})}if(this.usingBaseVideo_&&i==1){this.sendEvent_(G.AD_CONTENT_PAUSE_REQUESTED,new Map().set("saveLivePosition",!0));let S=Promise.withResolvers(),b=async E=>{E.state=="detach"&&(this.isSmartTV_()&&await it.delay(.1),S.resolve(),this.adEventManager_.unlisten(this.basePlayer_,"onstatechange",b))};this.adEventManager_.listen(this.basePlayer_,"onstatechange",b),await S.promise}this.setBaseStyles_(e),this.usingBaseVideo_||(this.video_.style.display="",e.overlay?(this.video_.loop=e.loop,this.applyOverlayPosition_(this.video_,e.overlay)):(this.baseVideo_.pause(),this.basePlayer_.isLive()||e.resumeOffset!=null&&e.resumeOffset!=0&&(this.baseVideo_.currentTime+=e.resumeOffset),this.video_.loop=!1,this.video_.style.height="100%",this.video_.style.left="0",this.video_.style.top="0",this.video_.style.width="100%"));try{if(this.updatePlayerConfig_(),e.startTime&&e.endTime&&e.endTime!=1/0&&e.startTime!=e.endTime){let C=e.endTime-e.startTime;C>0&&this.player_.configure("playRangeEnd",C)}let S=null;if(i==1&&!e.pre&&!e.post&&this.config_.allowStartInMiddleOfInterstitial&&this.lastTime_!=null&&e.startTime<=this.lastTime_&&(!e.endTime||e.endTime>this.lastTime_))if(e.id&&this.assetStartOffsets_.has(e.id)){let C=this.assetStartOffsets_.get(e.id);this.assetStartOffsets_.delete(e.id),Math.abs(C)>.25&&(S=C)}else{let C=this.lastTime_-e.startTime;Math.abs(C)>.25&&(S=C)}i==1&&((T=this.playoutLimitTimer_)==null||T.stop(),this.playoutLimitTimer_=null);let b=e.playoutLimit;if(b&&!this.playoutLimitTimer_&&(S&&(b-=S),this.playoutLimitTimer_=new ae(()=>{this.lastOnSkip_()}).tickAfter(b),this.player_.configure("playRangeEnd",b)),this.player_.getMediaElement()!==this.video_&&await this.player_.attach(this.video_),this.preloadTasks_.has(e)){let C=this.preloadTasks_.get(e);this.preloadTasks_.delete(e);let A=C.getInitialError();if(A)throw A;let w=C.getPreloadManager();w?await this.player_.load(w,S):await this.player_.load(e.uri,S,e.mimeType||void 0)}else await this.player_.load(e.uri,S,e.mimeType||void 0);!e.overlay||!this.baseVideo_.paused?this.video_.play():this.video_.pause();let E=(Date.now()-n)/1e3;if(this.sendEvent_(G.ADS_LOADED,new Map().set("loadTime",E)),this.usingBaseVideo_&&this.baseVideo_.play(),e.overlay){if(!e.pre&&!e.post&&(!this.basePlayer_.isLive()||e.startTime>0)){let C=()=>{let A=this.baseVideo_.currentTime-e.startTime;Math.abs(A-this.video_.currentTime)>.1&&(this.video_.currentTime=A)};this.adEventManager_.listenOnce(this.video_,"playing",C),this.adEventManager_.listen(this.baseVideo_,"seeking",C)}this.adEventManager_.listen(this.baseVideo_,"seeked",()=>{let C=this.baseVideo_.currentTime;(C<e.startTime||e.endTime&&C>e.endTime)&&this.lastOnSkip_()})}}catch(S){if(!this.playingAd_)return;u(S,!0)}}applyOverlayPosition_(e,t){let i=t.viewport,r=t.topLeft,s=t.size;e.style.height=s.y/i.y*100+"%",e.style.left=r.x/i.x*100+"%",e.style.top=r.y/i.y*100+"%",e.style.width=s.x/i.x*100+"%"}setBaseStyles_(e){if(e.displayOnBackground&&(this.baseVideo_.style.zIndex="1"),e.currentVideo!=null){let t=e.currentVideo;this.baseVideo_.style.transformOrigin="top left";let i=!0,r=[],s=t.topLeft.x/t.viewport.x*100;s>0&&s<=100&&(r.push(`translateX(${s}%)`),i=!1);let n=t.topLeft.y/t.viewport.y*100;n>0&&n<=100&&(r.push(`translateY(${n}%)`),i=!1);let a=t.size.x/t.viewport.x;a<1&&r.push(`scaleX(${a})`);let o=t.size.y/t.viewport.y;a<1&&r.push(`scaleY(${o})`),r.length&&(this.baseVideo_.style.transform=r.join(" ")),i&&(this.baseVideo_.style.transition="transform 250ms")}this.adContainer_&&(e.clickThroughUrl?(this.adContainer_.setAttribute("ad-active","true"),this.adContainer_.style.pointerEvents=""):this.adContainer_.style.pointerEvents="none",e.background&&(this.adContainer_.style.background=e.background)),this.adVideo_&&(e.overlay?this.adVideo_.style.background="":this.adVideo_.style.background="rgb(0, 0, 0)")}removeBaseStyles_(e){(!e||e.displayOnBackground)&&(this.baseVideo_.style.zIndex=""),(!e||e.currentVideo!=null)&&(this.baseVideo_.style.transformOrigin="",this.baseVideo_.style.transition="",this.baseVideo_.style.transform=""),this.adContainer_&&(this.adContainer_.removeAttribute("ad-active"),this.adContainer_.style.pointerEvents="",(!e||e.background)&&(this.adContainer_.style.background="")),this.adVideo_&&(this.adVideo_.style.background="")}async getInterstitialsInfo_(e){let t=[];if(!e)return t;let i=this.getMetadataValue_(e,"X-ASSET-URI"),r=this.getMetadataValue_(e,"X-ASSET-LIST");if(!i&&!r)return t;let s=this.getMetadataValue_(e,"ID"),{startTime:n,endTime:a}=this.getInterstitialTimes_(e,s),o=this.getMetadataValue_(e,"X-RESTRICT"),c=!0,d=!0;o!=null&&(c=!o.includes("SKIP"),d=!o.includes("JUMP"));let u=c?0:null,m=this.getMetadataValue_(e,"X-SKIP-CONTROL-OFFSET");m!=null&&(u=parseFloat(m),isNaN(u)&&(u=c?0:null));let f=null,g=this.getMetadataValue_(e,"X-SKIP-CONTROL-DURATION");g!=null&&(f=parseFloat(g),isNaN(u)&&(f=null));let _=null,T=this.getMetadataValue_(e,"X-RESUME-OFFSET");T!=null&&(_=parseFloat(T),isNaN(_)&&(_=null)),_!=null&&_!=0&&a&&a!=1/0&&jt.isFloatEqual(n+_,a)&&(_=null);let S=null,b=this.getMetadataValue_(e,"X-PLAYOUT-LIMIT");b!=null&&(S=parseFloat(b),isNaN(S)&&(S=null));let{once:E,pre:C,post:A}=this.parseCue_(e),w=!1,M=this.getMetadataValue_(e,"X-TIMELINE-OCCUPIES");if(M!=null?w=M.includes("RANGE"):T==null&&this.basePlayer_.isLive()&&(w=!C&&!A),i!=null){if(!i)return t;t.push({id:s,groupId:null,startTime:n,endTime:a,uri:this.getUriWithHlsParams_(i),mimeType:null,isSkippable:c,skipOffset:u,skipFor:f,canJump:d,resumeOffset:_,playoutLimit:S,once:E,pre:C,post:A,timelineRange:w,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null})}else if(r!=null){if(!r)return t;let x={id:s,groupId:null,startTime:n,endTime:a,assetListUri:r,isSkippable:c,skipOffset:u,skipFor:f,canJump:d,resumeOffset:_,playoutLimit:S,once:E,pre:C,post:A,timelineRange:w,resolving:!1,resolved:!1};if(this.applyPreloadOffset_(x),this.shouldResolveAssetListNow_(x)){let k=await this.resolveAssetList_(x);return k.length&&this.maybeRetainResolvedAssetList_(x),k}this.addUnresolvedAssetList_(x)}return t}async resolveAssetList_(e){var s;let t=[],i=e.skipOffset,r=e.skipFor;try{let n={type:K.AdvancedRequestType.INTERSTITIAL_ASSET_LIST},a=0;!e.pre&&!e.post&&this.config_.allowStartInMiddleOfInterstitial&&this.basePlayer_.isLive()&&(a=((s=this.lastTime_)!=null?s:this.baseVideo_.currentTime)-e.startTime);let o=this.getUriWithHlsParams_(e.assetListUri,a),c=await this.makeAdRequest_(o,n).promise,d=q.fromUTF8(c.data),u=JSON.parse(d),m=u["SKIP-CONTROL"];if(m){let g=m.OFFSET;typeof g=="number"&&(i=parseFloat(g),isNaN(g)&&(i=e.isSkippable?0:null));let _=m.DURATION;typeof _=="number"&&(r=parseFloat(_),isNaN(r)&&(r=null))}let f=0;for(let g=0;g<u.ASSETS.length;g++){let _=u.ASSETS[g],T=_.URI,S=parseFloat(_.DURATION)||0;if(a>0&&S>0){let b=f+S;if(b<=a){f=b;continue}}if(T){let b=fe.resolve(c.uri,T),E={id:e.id+"_shaka_asset_"+g,groupId:e.id,startTime:e.startTime,endTime:e.endTime,uri:this.getUriWithHlsParams_(b),mimeType:null,isSkippable:e.isSkippable,skipOffset:i,skipFor:r,canJump:e.canJump,resumeOffset:e.resumeOffset,playoutLimit:e.playoutLimit,once:e.once,pre:e.pre,post:e.post,timelineRange:e.timelineRange,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null},C=_["X-AD-CREATIVE-SIGNALING"];if(C){let A=C.payload&&C.payload[0];A&&(E.clickThroughUrl=A.clickThrough,A.tracking&&(E.tracking=G.createTrackingFromEvents(A.tracking)))}if(a>0&&f<a){let A=a-f;this.assetStartOffsets_.set(E.id,A)}t.push(E)}f+=S}}catch(n){p.warning("Failed to resolve interstitial asset list",e.assetListUri,n)}return t}addUnresolvedAssetList_(e){this.unresolvedAssetLists_.add(e),this.cuepointsChanged_(),this.addEventListeners_()}async resolveAssetListDescriptor_(e){let t=await this.resolveAssetList_(e);e.resolving=!1,t.length?(this.maybeRetainResolvedAssetList_(e),await this.addInterstitials(t)):(this.unresolvedAssetLists_.delete(e),this.cuepointsChanged_(),this.removeEventListeners_())}maybeRetainResolvedAssetList_(e){this.shouldRetainAssetList_()?(e.resolved=!0,this.unresolvedAssetLists_.add(e)):this.unresolvedAssetLists_.delete(e)}shouldRetainAssetList_(){return!!this.config_&&this.config_.allowStartInMiddleOfInterstitial&&this.basePlayer_.isLive()}maybeResetAssetListsOnSeek_(e){if(this.shouldRetainAssetList_())for(let t of this.unresolvedAssetLists_){if(!t.resolved)continue;let i=t.endTime;e>=t.startTime&&(i==null||i==1/0||e<i)&&(t.resolved=!1,this.removeResolvedAssetListGroup_(t.id))}}removeResolvedAssetListGroup_(e){if(e!=null)for(let t of Array.from(this.interstitials_))t.groupId===e&&this.removeInterstitial_(t)}removeInterstitial_(e){this.preloadTasks_.has(e)&&(this.preloadTasks_.get(e).release(),this.preloadTasks_.delete(e)),this.removePreloadOnDomElements_(e);let t=this.interstitialId_(e);this.interstitialIds_.delete(t),this.interstitials_.delete(e),this.sortedInterstitials_=null,this.lastPlayedAd_===e&&(this.lastPlayedAd_=null)}resolutionAheadTime_(e){return e.resolutionTimeOffset||this.config_.interstitialPreloadAheadTime}shouldResolveAssetListNow_(e){if(e.pre||e.post||e.startTime==0&&!e.canJump)return!0;let t=this.lastTime_!=null?this.lastTime_:this.baseVideo_.currentTime,i=1/0;if(!this.playingAd_&&this.baseVideo_.duration&&(i=this.baseVideo_.duration),Math.min(e.startTime,i)-t>this.resolutionAheadTime_(e))return!1;let s=e.endTime;return!(s!=null&&s!=1/0&&t>=s)}getOverlaysInfo_(e){let t=[];if(!e)return t;let i=this.getMetadataValue_(e,"X-ASSET-URI");if(!i)return t;let r=this.getMetadataValue_(e,"X-OVERLAY-ID"),{startTime:s,endTime:n}=this.getInterstitialTimes_(e,r),{once:a,pre:o,post:c}=this.parseCue_(e),d=this.getMetadataValue_(e,"X-ASSET-MIMETYPE"),u=this.getMetadataValue_(e,"X-LOOP")=="YES",m=1,f=this.getMetadataValue_(e,"X-DEPTH");f!=null&&(m=parseFloat(f),isNaN(m)&&(m=1));let g=this.getMetadataValue_(e,"X-BACKGROUND"),_={x:1920,y:1080},T=this.getMetadataValue_(e,"X-VIEWPORT");if(T!=null){let w=T.split("x");if(w.length!=2)return t;_.x=parseFloat(w[0]),_.y=parseFloat(w[1])}let S={viewport:{x:_.x,y:_.y},topLeft:{x:0,y:0},size:{x:_.x,y:_.y}},b=this.getMetadataValue_(e,"X-OVERLAY-POSITION");if(b!=null){let w=b.split("x");if(w.length!=2)return t;S.topLeft.x=parseFloat(w[0]),S.topLeft.y=parseFloat(w[1])}let E=this.getMetadataValue_(e,"X-OVERLAY-SIZE");if(E!=null){let w=E.split("x");if(w.length!=2)return t;S.size.x=parseFloat(w[0]),S.size.y=parseFloat(w[1])}let C=null,A=this.getMetadataValue_(e,"X-SQUEEZECURRENT");if(A!=null){let w=parseFloat(A);isNaN(w)&&(w=1),C={viewport:{x:1920,y:1080},topLeft:{x:0,y:0},size:{x:1920*w,y:1080*w}};let M=this.getMetadataValue_(e,"X-SQUEEZECURRENT-POSITION");if(M!=null){let x=M.split("x");if(x.length!=2)return t;C.topLeft.x=parseFloat(x[0]),C.topLeft.y=parseFloat(x[1])}}return t.push({id:r,groupId:null,startTime:s,endTime:n,uri:this.getUriWithHlsParams_(i),mimeType:d,isSkippable:!1,skipOffset:null,skipFor:null,canJump:!0,resumeOffset:null,playoutLimit:null,once:a,pre:o,post:c,timelineRange:!0,loop:u,overlay:S,displayOnBackground:m==-1,currentVideo:C,background:g,clickThroughUrl:null,tracking:null}),t}getUriWithHlsParams_(e,t=0){if(e.startsWith("data:"))return e;this.sessionId_||(this.sessionId_=window.crypto.randomUUID());let i=new Map;if(i.set("_HLS_primary_id",this.sessionId_),t>0){let r=Math.round(t*1e3)/1e3;i.set("_HLS_start_offset",String(r))}return fe.appendParams(e,i)}cuepointsChanged_(){let e=[],t=(i,r)=>{!e.find(n=>i==n.start&&r==n.end)&&e.push({start:i,end:r})};for(let i of this.interstitials_)i.overlay||(i.pre?t(0,null):i.post?t(-1,null):i.timelineRange?t(i.startTime,i.endTime):t(i.startTime,null));for(let i of this.unresolvedAssetLists_)i.pre?t(0,null):i.post?t(-1,null):i.timelineRange?t(i.startTime,i.endTime):t(i.startTime,null);this.sendEvent_(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",e))}updatePlayerConfig_(){v.assert(this.player_,"Must have player"),v.assert(this.basePlayer_,"Must have base player"),this.player_.configure(this.basePlayer_.getNonDefaultConfiguration()),this.player_.configure("ads.disableHLSInterstitial",!0),this.player_.configure("ads.disableDASHInterstitial",!0),this.player_.configure("playRangeEnd",1/0);let e=this.player_.getNetworkingEngine();v.assert(e,"Need networking engine"),this.basePlayer_.getNetworkingEngine().copyFiltersInto(e)}makeAdRequest_(e,t){let i=K.RequestType.ADS,r=K.makeRequest([e],K.defaultRetryParameters());return this.basePlayer_.getNetworkingEngine().request(i,r,t)}getMetadataValue_(e,t){let i=e.values.find(r=>r.key==t);return i?i.data:null}getInterstitialTimes_(e,t){let i=t==null?Math.floor(e.startTime*10)/10:e.startTime,r=e.endTime;return e.endTime&&e.endTime!=1/0&&typeof e.endTime=="number"&&(r=t==null?Math.floor(e.endTime*10)/10:e.endTime),{startTime:i,endTime:r}}parseCue_(e){let t=this.getMetadataValue_(e,"CUE");return{once:t!=null&&t.includes("ONCE"),pre:t!=null&&t.includes("PRE"),post:t!=null&&t.includes("POST")}}interstitialId_(e){return e.id||JSON.stringify(e)}getTimeOffset_(e){return e.pre?0:e.post?-1:e.startTime}isPreloadAllowed_(e){let t=e.mimeType;return t?!t.startsWith("image/")&&t!=="text/html":!0}getInterstitials(){return Array.from(this.interstitials_)}isSmartTV_(){let t=j.getDevice().getDeviceType();return t==ie.DeviceType.TV||t==ie.DeviceType.CONSOLE||t==ie.DeviceType.CAST}checkPreloadOnDomElements_(e){if(this.preloadOnDomElements_.has(e)||this.config_&&!this.config_.allowPreloadOnDomElements)return;let t=r=>{let s=document.createElement("link");return s.rel="preload",s.href=r,s.as="image",document.head.appendChild(s),s},i=[];if(e.background){let r=/url\(('|")?([^'"()]+)('|")\)?/,s=e.background.match(r);s&&i.push(t(s[2]))}e.mimeType&&e.mimeType.startsWith("image/")&&i.push(t(e.uri)),this.preloadOnDomElements_.set(e,i)}removePreloadOnDomElements_(e){if(!this.preloadOnDomElements_.has(e))return;let t=this.preloadOnDomElements_.get(e);for(let i of t)i.parentNode.removeChild(i);this.preloadOnDomElements_.delete(e)}sendEvent_(e,t){p.info("Interstitial event",e,t),this.onEvent_(new U(e,t)),this.processTrackingEvent_(e)}processTrackingEvent_(e){if(this.config_.disableTrackingEvents)return;let t=this.lastPlayedAd_&&this.lastPlayedAd_.tracking;G.fireTrackingEvents(t,e,this.basePlayer_.getNetworkingEngine())}isWithinPreloadWindow_(e){if(e.pre&&this.lastTime_==null)return!0;if(e.startTime==0&&!e.canJump)return!0;if(this.lastTime_!=null){let t=1/0;!this.playingAd_&&this.baseVideo_.duration&&(t=this.baseVideo_.duration);let i=Math.min(e.startTime,t)-this.lastTime_;if(i>0&&i<=this.resolutionAheadTime_(e))return!0}return!1}},In=class{constructor(e,t,i=null){l(this,"player_");l(this,"preloadManager_");l(this,"initialError_");l(this,"released_");l(this,"sendEvent_");this.player_=e,this.preloadManager_=null,this.initialError_=null,this.released_=!1,this.sendEvent_=i,this.start_(t)}async start_(e){try{this.sendEvent_&&this.sendEvent_(G.AD_INTERSTITIAL_PRELOAD,new Map().set("interstitial",e));let t=await this.player_.preload(e.uri,null,e.mimeType||void 0);if(this.released_){if(t)try{await t.destroy()}catch(i){p.error("Error destroying preloadManager",i)}return}this.preloadManager_=t,t&&this.sendEvent_&&this.sendEvent_(G.AD_INTERSTITIAL_PRELOADED,new Map().set("interstitial",e))}catch(t){this.initialError_=t instanceof h?t:null}}getPreloadManager(){return this.preloadManager_}getInitialError(){return this.initialError_}release(){this.released_=!0,this.preloadManager_&&(this.preloadManager_.destroy(),this.preloadManager_=null)}};/*! @license
530
+ */var An=class y{constructor(e,t,i){l(this,"config_");l(this,"adContainer_");l(this,"basePlayer_");l(this,"baseVideo_");l(this,"adVideo_");l(this,"usingBaseVideo_");l(this,"video_");l(this,"onEvent_");l(this,"hlsMetadataIds_");l(this,"interstitialIds_");l(this,"interstitials_");l(this,"sortedInterstitials_");l(this,"unresolvedAssetLists_");l(this,"preloadOffsets_");l(this,"preloadTasks_");l(this,"preloadOnDomElements_");l(this,"player_");l(this,"eventManager_");l(this,"adEventManager_");l(this,"isEnded_");l(this,"playingAd_");l(this,"lastTime_");l(this,"lastPlayedAd_");l(this,"playingAdStartTime_");l(this,"playoutLimitTimer_");l(this,"lastOnSkip_");l(this,"usingListeners_");l(this,"videoCallbackId_");l(this,"videoFrameCallbackHandler_");l(this,"sessionId_");l(this,"assetStartOffsets_");l(this,"checkForInterstitials_");l(this,"onTimeUpdate_");l(this,"onSeeked_");l(this,"timeUpdateTimer_");l(this,"pollTimer_");this.config_=null,this.adContainer_=e,this.basePlayer_=t,this.baseVideo_=t.getMediaElement(),this.adVideo_=null,this.usingBaseVideo_=!0,this.video_=this.baseVideo_,this.onEvent_=i,this.hlsMetadataIds_=new Set,this.interstitialIds_=new Set,this.interstitials_=new Set,this.sortedInterstitials_=null,this.unresolvedAssetLists_=new Set,this.preloadOffsets_=new Map,this.preloadTasks_=new Map,this.preloadOnDomElements_=new Map,this.player_=new dt,this.updatePlayerConfig_(),this.eventManager_=new ue,this.adEventManager_=new ue,this.isEnded_=!1,this.playingAd_=!1,this.lastTime_=null,this.lastPlayedAd_=null,this.playingAdStartTime_=null,this.playoutLimitTimer_=null,this.lastOnSkip_=null,this.usingListeners_=!1,this.videoCallbackId_=-1,this.videoFrameCallbackHandler_=null,this.sessionId_=null,this.assetStartOffsets_=new Map;let r=s=>s?s.overlay?!0:this.isEnded_?s.post:!this.baseVideo_.paused:!1;this.checkForInterstitials_=()=>{if(this.playingAd_||!this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended,this.lastTime_=this.baseVideo_.currentTime;let s=this.getCurrentInterstitial_();s&&r(s)&&this.setupAd_(s,1,1,Date.now())},this.onTimeUpdate_=()=>{if(this.playingAd_||this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended,this.baseVideo_.paused||(this.lastTime_=this.baseVideo_.currentTime);let s;this.lastPlayedAd_||(s=this.getCurrentInterstitial_(!0)),s||(s=this.getCurrentInterstitial_()),s&&r(s)&&this.setupAd_(s,1,1,Date.now())},this.onSeeked_=()=>{if(this.playingAd_||!this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended;let s=this.baseVideo_.currentTime;this.lastPlayedAd_&&!this.lastPlayedAd_.pre&&!this.lastPlayedAd_.post&&s<this.lastPlayedAd_.startTime&&(this.lastPlayedAd_=null),this.maybeResetAssetListsOnSeek_(s)},this.timeUpdateTimer_=new ae(this.checkForInterstitials_),this.pollTimer_=new ae(()=>{if(!this.playingAd_&&this.lastTime_!=null&&(this.interstitials_.size||this.unresolvedAssetLists_.size)){let s=this.basePlayer_.getLoadMode();if(s==dt.LoadMode.DESTROYED||s==dt.LoadMode.NOT_LOADED)return;let n=!1,a=this.basePlayer_.seekRange();for(let c of Array.from(this.unresolvedAssetLists_)){let d=c.endTime||c.startTime;a.start-d>=1?(this.unresolvedAssetLists_.delete(c),this.removeEventListeners_(),n=!0):!c.resolving&&!c.resolved&&this.shouldResolveAssetListNow_(c)&&(c.resolving=!0,this.resolveAssetListDescriptor_(c))}let o=Array.from(this.interstitials_);for(let c of o){if(c==this.lastPlayedAd_)continue;let d=c.endTime||c.startTime;if(a.start-d>=1)this.removeInterstitial_(c),this.removeEventListeners_(),c.overlay||(n=!0);else if(this.isWithinPreloadWindow_(c)){if(!this.preloadTasks_.has(c)&&this.isPreloadAllowed_(c)){v.assert(this.player_,"Need a player");let u=new In(this.player_,c,(m,f)=>{this.sendEvent_(m,f)});this.preloadTasks_.set(c,u)}this.checkPreloadOnDomElements_(c)}}n&&this.cuepointsChanged_()}}),this.configure(this.basePlayer_.getConfiguration().ads)}configure(e){this.config_=e,this.playingAd_||this.determineIfUsingBaseVideo_()}addEventListeners_(){var t;if(this.usingListeners_||!this.interstitials_.size&&!this.unresolvedAssetLists_.size)return;this.eventManager_.listenMulti(this.baseVideo_,["playing","timeupdate"],this.onTimeUpdate_),this.eventManager_.listen(this.baseVideo_,"seeked",this.onSeeked_),this.eventManager_.listen(this.baseVideo_,"ended",this.checkForInterstitials_);let e=!0;if(!this.isSmartTV_()){(t=this.videoFrameCallbackHandler_)==null||t.release();let i=this.baseVideo_;this.videoFrameCallbackHandler_=new es(i),e=!this.videoFrameCallbackHandler_.start(()=>{this.checkForInterstitials_()})}e&&this.timeUpdateTimer_.tickEvery(.025),this.pollTimer_&&this.pollTimer_.tickEvery(1),this.usingListeners_=!0}removeEventListeners_(){var e,t,i;!this.usingListeners_||this.interstitials_.size||this.unresolvedAssetLists_.size||(this.eventManager_.unlisten(this.baseVideo_,"playing",this.onTimeUpdate_),this.eventManager_.unlisten(this.baseVideo_,"timeupdate",this.onTimeUpdate_),this.eventManager_.unlisten(this.baseVideo_,"seeked",this.onSeeked_),this.eventManager_.unlisten(this.baseVideo_,"ended",this.checkForInterstitials_),(e=this.videoFrameCallbackHandler_)==null||e.release(),this.videoFrameCallbackHandler_=null,(t=this.timeUpdateTimer_)==null||t.stop(),(i=this.pollTimer_)==null||i.stop(),this.usingListeners_=!1)}determineIfUsingBaseVideo_(e=!1){if(!this.adContainer_||!this.config_){this.usingBaseVideo_=!0;return}let t=this.config_.supportsMultipleMediaElements,i=this.baseVideo_;(i.controls||i.webkitPresentationMode&&i.webkitPresentationMode!=="inline"||i.webkitDisplayingFullscreen)&&(t=!1),!(!e&&this.usingBaseVideo_!=t)&&(this.usingBaseVideo_=!t,this.usingBaseVideo_?(this.video_=this.baseVideo_,this.adVideo_&&(this.adVideo_.parentElement&&this.adContainer_.removeChild(this.adVideo_),this.adVideo_=null)):(e&&this.adVideo_&&(this.adVideo_.parentElement&&this.adContainer_.removeChild(this.adVideo_),this.adVideo_=null),this.adVideo_||(this.adVideo_=this.createMediaElement_()),this.video_=this.adVideo_))}stop(){this.adEventManager_&&this.adEventManager_.removeAll(),this.hlsMetadataIds_.clear(),this.interstitialIds_.clear(),this.interstitials_.clear(),this.sortedInterstitials_=null,this.unresolvedAssetLists_.clear(),this.preloadOffsets_.clear(),this.player_.destroyAllPreloads();let e=Array.from(this.preloadTasks_.values());for(let t of e)t.release();if(this.preloadTasks_.clear(),this.preloadOnDomElements_.size){let t=Array.from(this.preloadOnDomElements_.keys());for(let i of t)this.removePreloadOnDomElements_(i)}this.preloadOnDomElements_.clear(),this.assetStartOffsets_.clear(),this.player_.detach(),this.isEnded_=!1,this.playingAd_=!1,this.lastTime_=null,this.lastPlayedAd_=null,this.playingAdStartTime_=null,this.usingBaseVideo_=!0,this.video_=this.baseVideo_,this.adVideo_=null,this.sessionId_=null,this.removeBaseStyles_(),this.removeEventListeners_(),this.adContainer_&&Ge.removeAllChildren(this.adContainer_),this.playoutLimitTimer_&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null)}release(){this.stop(),this.eventManager_&&this.eventManager_.release(),this.adEventManager_&&this.adEventManager_.release(),this.timeUpdateTimer_&&(this.timeUpdateTimer_.stop(),this.timeUpdateTimer_=null),this.pollTimer_&&(this.pollTimer_.stop(),this.pollTimer_=null),this.player_.destroy()}getPlayer(){return this.player_}async addMetadata(e){let t=this.getMetadataValue_(e,"ID");if(t){if(this.hlsMetadataIds_.has(t)){this.updateInterstitials_(e,t);return}this.hlsMetadataIds_.add(t)}this.updatePlayerConfig_();let i=[];this.getMetadataValue_(e,"X-OVERLAY-ID")!=null?i=this.getOverlaysInfo_(e):i=await this.getInterstitialsInfo_(e),i.length&&await this.addInterstitials(i)}updateInterstitials_(e,t){let i=this.getMetadataValue_(e,"X-PLAYOUT-LIMIT");if(i==null)return;let r=parseFloat(i);if(!isNaN(r)){for(let s of this.interstitials_)(s.id===t||s.groupId===t)&&this.applyUpdatedPlayoutLimit_(s,r);for(let s of this.unresolvedAssetLists_)s.id===t&&s.playoutLimit==null&&(s.playoutLimit=r)}}applyUpdatedPlayoutLimit_(e,t){var a;if(e.playoutLimit!=null)return;e.playoutLimit=t;let i=this.playingAd_&&this.lastPlayedAd_!=null&&(this.lastPlayedAd_===e||e.groupId!=null&&this.lastPlayedAd_.groupId===e.groupId),r=!e.overlay&&!(e.mimeType&&(e.mimeType.startsWith("image/")||e.mimeType==="text/html"));if(!i||!r||this.playingAdStartTime_==null)return;let s=(Date.now()-this.playingAdStartTime_)/1e3,n=t-s;(a=this.playoutLimitTimer_)==null||a.stop(),this.playoutLimitTimer_=null,n<=0?this.lastOnSkip_&&this.lastOnSkip_():(this.playoutLimitTimer_=new ae(()=>{this.lastOnSkip_&&this.lastOnSkip_()}).tickAfter(n),this.player_.configure("playRangeEnd",t))}addPreloadMetadata(e){let t=this.getMetadataValue_(e,"ID");if(t){if(this.hlsMetadataIds_.has(t))return;this.hlsMetadataIds_.add(t)}let i=this.getMetadataValue_(e,"X-TARGET-ID");if(i){this.preloadOffsets_.set(i,e.startTime);for(let r of this.interstitials_)this.applyPreloadOffset_(r);for(let r of this.unresolvedAssetLists_)this.applyPreloadOffset_(r)}}applyPreloadOffset_(e){let t=null;e.id!=null&&this.preloadOffsets_.has(e.id)?t=this.preloadOffsets_.get(e.id):e.groupId!=null&&this.preloadOffsets_.has(e.groupId)&&(t=this.preloadOffsets_.get(e.groupId)),t!=null&&(e.resolutionTimeOffset=Math.max(0,e.startTime-t))}async addAdUrlInterstitial(e){let t={type:K.AdvancedRequestType.INTERSTITIAL_AD_URL},i=await this.makeAdRequest_(e,t).promise,r=I.parseXml(i.data,"VAST,vmap:VMAP");if(!r)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.VAST_INVALID_XML);let s=[];if(r.tagName=="VAST")s=ts.parseVastToInterstitials(r,this.lastTime_);else if(r.tagName=="vmap:VMAP"){let n=async o=>{let c=await this.makeAdRequest_(o.uri,t).promise,d=I.parseXml(c.data,"VAST");if(!d)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.VAST_INVALID_XML);s.push(...ts.parseVastToInterstitials(d,o.time))},a=[];for(let o of ts.parseVMAP(r))a.push(n(o));a.length&&await Promise.all(a)}this.addInterstitials(s)}async addInterstitials(e){let t=!1;for(let i of e){if(!i.uri){p.alwaysWarn("Missing URL in interstitial",i);continue}if(!i.mimeType)try{let s=this.player_.getNetworkingEngine();v.assert(s,"Need networking engine"),i.mimeType=await ct.getMimeType(i.uri,s,this.basePlayer_.getConfiguration().streaming.retryParameters)}catch(s){}let r=this.interstitialId_(i);if(!this.interstitialIds_.has(r)&&(i.loop&&!i.overlay&&p.alwaysWarn("Loop is only supported in overlay interstitials",i),i.overlay||(t=!0),this.interstitialIds_.add(r),this.interstitials_.add(i),this.sortedInterstitials_=null,this.applyPreloadOffset_(i),this.isWithinPreloadWindow_(i))){if(!this.preloadTasks_.has(i)&&this.isPreloadAllowed_(i)){v.assert(this.player_,"Need a player");let s=new In(this.player_,i,(n,a)=>{this.sendEvent_(n,a)});this.preloadTasks_.set(i,s)}this.checkPreloadOnDomElements_(i)}}t&&this.cuepointsChanged_(),this.addEventListeners_()}createMediaElement_(){let e=document.createElement(this.baseVideo_.tagName);return e.autoplay=!0,e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.display="none",e.setAttribute("playsinline",""),e}getSortedInterstitials_(){return this.sortedInterstitials_||(this.sortedInterstitials_=Array.from(this.interstitials_).sort((e,t)=>t.startTime-e.startTime)),this.sortedInterstitials_}getCurrentInterstitial_(e=!1,t=null){let i=0,r=null;if(this.interstitials_.size&&this.lastTime_!=null){let s=this.getSortedInterstitials_(),n=o=>Math.round(o*1e3)/1e3,a=s;e?a=s.filter(o=>o.pre):this.isEnded_?a=s.filter(o=>o.post):a=s.filter(o=>!o.pre&&!o.post);for(let o of a){let c=!1;if(e)c=o.pre;else if(this.isEnded_)c=o.post;else if(!o.pre&&!o.post){let d=this.lastTime_-n(o.startTime),u=1;this.config_.allowStartInMiddleOfInterstitial&&o.endTime&&o.endTime!=1/0&&(u=o.endTime-o.startTime),(d>0||d==0&&this.lastTime_==0)&&(d<=u||!o.canJump)&&(t==null&&this.lastPlayedAd_&&!this.lastPlayedAd_.pre&&!this.lastPlayedAd_.post&&this.lastPlayedAd_.startTime>=o.startTime?c=!1:c=!0)}if(c&&(!this.lastPlayedAd_||o.startTime>=this.lastPlayedAd_.startTime)){if(i==(t||0))r=o;else if(r&&!o.canJump){let d=n(r.startTime);n(o.startTime)-d>.001&&(r=o,i=0)}i++}}}return r}setupAd_(e,t,i,r,s=0){if(p.info("Starting interstitial",e.startTime,"at",this.lastTime_),this.lastPlayedAd_=e,this.determineIfUsingBaseVideo_(),v.assert(this.video_,"Must have video"),!this.usingBaseVideo_&&this.adContainer_&&!this.video_.parentElement&&this.adContainer_.appendChild(this.video_),i==1&&t==1&&(t=Array.from(this.interstitials_).filter(n=>e.pre?n.pre==e.pre:e.post?n.post==e.post:Math.abs(n.startTime-e.startTime)<.001).length),e.once&&(s++,this.interstitials_.delete(e),this.sortedInterstitials_=null,this.removeEventListeners_(),e.overlay||this.cuepointsChanged_()),e.mimeType&&(e.mimeType.startsWith("image/")||e.mimeType==="text/html")){if(!e.overlay){p.alwaysWarn("Unsupported interstitial",e);return}p.info("Starting interstitial",e),this.setupStaticAd_(e,t,i,s);return}if(this.usingBaseVideo_&&e.overlay){p.alwaysWarn("Unsupported interstitial",e);return}p.info("Starting interstitial",e),this.setupVideoAd_(e,t,i,r,s)}setupStaticAd_(e,t,i,r){let s=this.getTimeOffset_(e);if(!this.playingAd_){this.playingAdStartTime_=Date.now();let m=new Map().set("timeOffset",s).set("startedAt",this.lastTime_);this.sendEvent_(G.AD_BREAK_STARTED,m)}this.playingAd_=!0;let n=e.overlay;v.assert(n,"Must have overlay");let a=e.mimeType=="text/html"?"iframe":"img",o=document.createElement(a);o.style.objectFit="contain",o.style.position="absolute",o.style.border="none",this.setBaseStyles_(e);let c=()=>{this.playoutLimitTimer_&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null),this.adContainer_.removeChild(o),this.removeBaseStyles_(e),this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll();let m=this.getCurrentInterstitial_(e.pre,i-r);m?this.setupAd_(m,t,++i,Date.now(),r):this.playingAd_=!1,this.playingAd_||this.sendEvent_(G.AD_BREAK_ENDED,new Map().set("timeOffset",s))},d=new En(e,t,i);this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",d)),a=="iframe"?o.src=e.uri:(o.src=e.uri,o.onerror=m=>{this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",m)),c()}),n.viewport.x==0&&n.viewport.y==0?(o.width=n.size.x,o.height=n.size.y,o.style.bottom="10%",o.style.left="0",o.style.right="0",o.style.width="100%",!n.size.y&&a=="iframe"&&(o.style.height="auto")):this.applyOverlayPosition_(o,n),this.adContainer_.appendChild(o);let u=Date.now();this.playoutLimitTimer_&&this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=new ae(()=>{e.playoutLimit&&(Date.now()-u)/1e3>e.playoutLimit?(this.sendEvent_(G.AD_COMPLETE),c()):e.endTime&&this.baseVideo_.currentTime>e.endTime?(this.sendEvent_(G.AD_COMPLETE),c()):this.baseVideo_.currentTime<e.startTime&&(this.sendEvent_(G.AD_SKIPPED),c())}),e.playoutLimit&&!e.endTime?this.playoutLimitTimer_.tickAfter(e.playoutLimit):e.endTime&&this.playoutLimitTimer_.tickEvery(.025),this.adEventManager_.listen(this.baseVideo_,"seeked",()=>{let m=this.baseVideo_.currentTime;(m<e.startTime||e.endTime&&m>e.endTime)&&(this.playoutLimitTimer_&&this.playoutLimitTimer_.stop(),this.sendEvent_(G.AD_SKIPPED),c())}),e.clickThroughUrl&&this.adEventManager_.listen(o,"click",m=>{if(e.clickThroughUrl){if(this.sendEvent_(G.AD_CLICKED),!y.isSafeClickThroughUri_(e.clickThroughUrl)){p.warning("Ignoring click-through with unsupported URI scheme:",e.clickThroughUrl);return}window.open(e.clickThroughUrl,"_blank")}})}async setupVideoAd_(e,t,i,r,s){var T;v.assert(this.video_,"Must have video");let n=Date.now(),a=this.getTimeOffset_(e);if(!this.playingAd_){this.playingAdStartTime_=Date.now();let S=new Map().set("timeOffset",a).set("startedAt",this.lastTime_);this.sendEvent_(G.AD_BREAK_STARTED,S)}this.playingAd_=!0;let o=!1,c=()=>{if(!this.usingBaseVideo_&&!e.overlay&&e.resumeOffset==null)if(e.timelineRange&&e.endTime&&e.endTime!=1/0)this.baseVideo_.currentTime!=e.endTime&&(this.baseVideo_.currentTime=e.endTime);else{let S=Date.now();this.baseVideo_.currentTime+=(S-r)/1e3,r=S}},d=async(S,b)=>{var C;b||c();let E=this.getCurrentInterstitial_(e.pre,i-s);if(S&&e.groupId)for(;E&&E.groupId==e.groupId;)i++,E=this.getCurrentInterstitial_(e.pre,i-s);if(this.playoutLimitTimer_&&(!e.groupId||E&&E.groupId!=e.groupId)&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null),this.removeBaseStyles_(e),!E||E.overlay){if(e.post&&(this.lastTime_=null,this.lastPlayedAd_=null),this.usingBaseVideo_?await this.player_.detach():await this.player_.unload(),this.usingBaseVideo_){let A=e.resumeOffset;A==null&&(e.timelineRange&&e.endTime&&e.endTime!=1/0?A=e.endTime-(this.lastTime_||0):A=(Date.now()-r)/1e3),this.sendEvent_(G.AD_CONTENT_RESUME_REQUESTED,new Map().set("offset",A))}else this.basePlayer_.isLive()&&e.resumeOffset!=null&&e.resumeOffset!=0&&(this.baseVideo_.currentTime+=e.resumeOffset);this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll(),this.playingAd_=!1,this.usingBaseVideo_?this.cuepointsChanged_():(this.video_.style.display="none",b||c(),this.isEnded_||this.baseVideo_.play())}E&&this.usingBaseVideo_&&this.isSmartTV_()?(await this.player_.detach(),this.determineIfUsingBaseVideo_(!0)):this.determineIfUsingBaseVideo_(),E&&(this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll(),this.setupAd_(E,t,++i,r,s)),this.playingAd_||(this.sendEvent_(G.AD_BREAK_ENDED,new Map().set("timeOffset",a)),(C=this.playoutLimitTimer_)==null||C.stop(),this.playoutLimitTimer_=null)},u=async(S,b)=>{if(o)return;o=!0;let E=b&&S.code===h.Code.BAD_HTTP_STATUS;this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",S)),await d(!1,E)},m=async()=>{o||(o=!0,await d(!1,!1),this.sendEvent_(G.AD_COMPLETE))};this.lastOnSkip_=async()=>{o||(o=!0,this.sendEvent_(G.AD_SKIPPED),await d(!0,!1))};let f=new bn(this.video_,e,this.lastOnSkip_,t,i,!this.usingBaseVideo_);this.usingBaseVideo_||(f.setMuted(this.baseVideo_.muted),f.setVolume(this.baseVideo_.volume)),this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",f));let g=f.canSkipNow();if(g&&this.sendEvent_(G.AD_SKIP_STATE_CHANGED),this.preloadTasks_.has(e)){let b=this.preloadTasks_.get(e).getInitialError();if(b){this.preloadTasks_.delete(e),u(b,!0);return}}this.adEventManager_.listenOnce(this.player_,"error",S=>{u(S.detail,!1)}),this.adEventManager_.listen(this.video_,"timeupdate",()=>{if(!this.video_.duration)return;let b=f.canSkipNow();g!=b&&f.getRemainingTime()>0&&f.getDuration()>0&&this.sendEvent_(G.AD_SKIP_STATE_CHANGED),g=b,!this.usingBaseVideo_&&!e.overlay&&e.resumeOffset==null&&e.timelineRange&&e.endTime&&e.endTime!=1/0&&this.baseVideo_.currentTime!=e.endTime&&this.basePlayer_.seekRange().end>=e.endTime&&(this.baseVideo_.currentTime=e.endTime)}),this.adEventManager_.listenOnce(this.player_,"firstquartile",()=>{c(),this.sendEvent_(G.AD_FIRST_QUARTILE)}),this.adEventManager_.listenOnce(this.player_,"midpoint",()=>{c(),this.sendEvent_(G.AD_MIDPOINT)}),this.adEventManager_.listenOnce(this.player_,"thirdquartile",()=>{c(),this.sendEvent_(G.AD_THIRD_QUARTILE)}),this.adEventManager_.listenOnce(this.player_,"complete",m);let _=!1;if(this.adEventManager_.listen(this.video_,"play",()=>{_?this.sendEvent_(G.AD_RESUMED):(_=!0,this.sendEvent_(G.AD_PLAYING,new Map().set("ad",f)))}),this.adEventManager_.listen(this.video_,"pause",()=>{let S=this.player_.getConfiguration();if(this.video_.currentTime>=S.playRangeEnd){m();return}this.sendEvent_(G.AD_PAUSED)}),this.adEventManager_.listen(this.video_,"volumechange",()=>{this.video_.muted?this.sendEvent_(G.AD_MUTED):this.sendEvent_(G.AD_VOLUME_CHANGED),this.usingBaseVideo_||(this.baseVideo_.volume=this.video_.volume,this.baseVideo_.muted=this.video_.muted)}),e.clickThroughUrl){let S=this.adContainer_||this.video_;this.adEventManager_.listen(S,"click",b=>{if(e.clickThroughUrl){if(f.isPaused()||f.pause(),!y.isSafeClickThroughUri_(e.clickThroughUrl)){p.warning("Ignoring click-through with unsupported URI scheme:",e.clickThroughUrl);return}window.open(e.clickThroughUrl,"_blank")}})}if(this.usingBaseVideo_&&i==1){this.sendEvent_(G.AD_CONTENT_PAUSE_REQUESTED,new Map().set("saveLivePosition",!0));let S=Promise.withResolvers(),b=async E=>{E.state=="detach"&&(this.isSmartTV_()&&await it.delay(.1),S.resolve(),this.adEventManager_.unlisten(this.basePlayer_,"onstatechange",b))};this.adEventManager_.listen(this.basePlayer_,"onstatechange",b),await S.promise}this.setBaseStyles_(e),this.usingBaseVideo_||(this.video_.style.display="",e.overlay?(this.video_.loop=e.loop,this.applyOverlayPosition_(this.video_,e.overlay)):(this.baseVideo_.pause(),this.basePlayer_.isLive()||e.resumeOffset!=null&&e.resumeOffset!=0&&(this.baseVideo_.currentTime+=e.resumeOffset),this.video_.loop=!1,this.video_.style.height="100%",this.video_.style.left="0",this.video_.style.top="0",this.video_.style.width="100%"));try{if(this.updatePlayerConfig_(),e.startTime&&e.endTime&&e.endTime!=1/0&&e.startTime!=e.endTime){let C=e.endTime-e.startTime;C>0&&this.player_.configure("playRangeEnd",C)}let S=null;if(i==1&&!e.pre&&!e.post&&this.config_.allowStartInMiddleOfInterstitial&&this.lastTime_!=null&&e.startTime<=this.lastTime_&&(!e.endTime||e.endTime>this.lastTime_))if(e.id&&this.assetStartOffsets_.has(e.id)){let C=this.assetStartOffsets_.get(e.id);this.assetStartOffsets_.delete(e.id),Math.abs(C)>.25&&(S=C)}else{let C=this.lastTime_-e.startTime;Math.abs(C)>.25&&(S=C)}i==1&&((T=this.playoutLimitTimer_)==null||T.stop(),this.playoutLimitTimer_=null);let b=e.playoutLimit;if(b&&!this.playoutLimitTimer_&&(S&&(b-=S),this.playoutLimitTimer_=new ae(()=>{this.lastOnSkip_()}).tickAfter(b),this.player_.configure("playRangeEnd",b)),this.player_.getMediaElement()!==this.video_&&await this.player_.attach(this.video_),this.preloadTasks_.has(e)){let C=this.preloadTasks_.get(e);this.preloadTasks_.delete(e);let A=C.getInitialError();if(A)throw A;let w=C.getPreloadManager();w?await this.player_.load(w,S):await this.player_.load(e.uri,S,e.mimeType||void 0)}else await this.player_.load(e.uri,S,e.mimeType||void 0);!e.overlay||!this.baseVideo_.paused?this.video_.play():this.video_.pause();let E=(Date.now()-n)/1e3;if(this.sendEvent_(G.ADS_LOADED,new Map().set("loadTime",E)),this.usingBaseVideo_&&this.baseVideo_.play(),e.overlay){if(!e.pre&&!e.post&&(!this.basePlayer_.isLive()||e.startTime>0)){let C=()=>{let A=this.baseVideo_.currentTime-e.startTime;Math.abs(A-this.video_.currentTime)>.1&&(this.video_.currentTime=A)};this.adEventManager_.listenOnce(this.video_,"playing",C),this.adEventManager_.listen(this.baseVideo_,"seeking",C)}this.adEventManager_.listen(this.baseVideo_,"seeked",()=>{let C=this.baseVideo_.currentTime;(C<e.startTime||e.endTime&&C>e.endTime)&&this.lastOnSkip_()})}}catch(S){if(!this.playingAd_)return;u(S,!0)}}applyOverlayPosition_(e,t){let i=t.viewport,r=t.topLeft,s=t.size;e.style.height=s.y/i.y*100+"%",e.style.left=r.x/i.x*100+"%",e.style.top=r.y/i.y*100+"%",e.style.width=s.x/i.x*100+"%"}setBaseStyles_(e){if(e.displayOnBackground&&(this.baseVideo_.style.zIndex="1"),e.currentVideo!=null){let t=e.currentVideo;this.baseVideo_.style.transformOrigin="top left";let i=!0,r=[],s=t.topLeft.x/t.viewport.x*100;s>0&&s<=100&&(r.push(`translateX(${s}%)`),i=!1);let n=t.topLeft.y/t.viewport.y*100;n>0&&n<=100&&(r.push(`translateY(${n}%)`),i=!1);let a=t.size.x/t.viewport.x;a<1&&r.push(`scaleX(${a})`);let o=t.size.y/t.viewport.y;a<1&&r.push(`scaleY(${o})`),r.length&&(this.baseVideo_.style.transform=r.join(" ")),i&&(this.baseVideo_.style.transition="transform 250ms")}this.adContainer_&&(e.clickThroughUrl?(this.adContainer_.setAttribute("ad-active","true"),this.adContainer_.style.pointerEvents=""):this.adContainer_.style.pointerEvents="none",e.background&&(this.adContainer_.style.background=e.background)),this.adVideo_&&(e.overlay?this.adVideo_.style.background="":this.adVideo_.style.background="rgb(0, 0, 0)")}removeBaseStyles_(e){(!e||e.displayOnBackground)&&(this.baseVideo_.style.zIndex=""),(!e||e.currentVideo!=null)&&(this.baseVideo_.style.transformOrigin="",this.baseVideo_.style.transition="",this.baseVideo_.style.transform=""),this.adContainer_&&(this.adContainer_.removeAttribute("ad-active"),this.adContainer_.style.pointerEvents="",(!e||e.background)&&(this.adContainer_.style.background="")),this.adVideo_&&(this.adVideo_.style.background="")}async getInterstitialsInfo_(e){let t=[];if(!e)return t;let i=this.getMetadataValue_(e,"X-ASSET-URI"),r=this.getMetadataValue_(e,"X-ASSET-LIST");if(!i&&!r)return t;let s=this.getMetadataValue_(e,"ID"),{startTime:n,endTime:a}=this.getInterstitialTimes_(e,s),o=this.getMetadataValue_(e,"X-RESTRICT"),c=!0,d=!0;o!=null&&(c=!o.includes("SKIP"),d=!o.includes("JUMP"));let u=c?0:null,m=this.getMetadataValue_(e,"X-SKIP-CONTROL-OFFSET");m!=null&&(u=parseFloat(m),isNaN(u)&&(u=c?0:null));let f=null,g=this.getMetadataValue_(e,"X-SKIP-CONTROL-DURATION");g!=null&&(f=parseFloat(g),isNaN(u)&&(f=null));let _=null,T=this.getMetadataValue_(e,"X-RESUME-OFFSET");T!=null&&(_=parseFloat(T),isNaN(_)&&(_=null)),_!=null&&_!=0&&a&&a!=1/0&&jt.isFloatEqual(n+_,a)&&(_=null);let S=null,b=this.getMetadataValue_(e,"X-PLAYOUT-LIMIT");b!=null&&(S=parseFloat(b),isNaN(S)&&(S=null));let{once:E,pre:C,post:A}=this.parseCue_(e),w=!1,M=this.getMetadataValue_(e,"X-TIMELINE-OCCUPIES");if(M!=null?w=M.includes("RANGE"):T==null&&this.basePlayer_.isLive()&&(w=!C&&!A),i!=null){if(!i)return t;t.push({id:s,groupId:null,startTime:n,endTime:a,uri:this.getUriWithHlsParams_(i),mimeType:null,isSkippable:c,skipOffset:u,skipFor:f,canJump:d,resumeOffset:_,playoutLimit:S,once:E,pre:C,post:A,timelineRange:w,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null})}else if(r!=null){if(!r)return t;let x={id:s,groupId:null,startTime:n,endTime:a,assetListUri:r,isSkippable:c,skipOffset:u,skipFor:f,canJump:d,resumeOffset:_,playoutLimit:S,once:E,pre:C,post:A,timelineRange:w,resolving:!1,resolved:!1};if(this.applyPreloadOffset_(x),this.shouldResolveAssetListNow_(x)){let k=await this.resolveAssetList_(x);return k.length&&this.maybeRetainResolvedAssetList_(x),k}this.addUnresolvedAssetList_(x)}return t}async resolveAssetList_(e){var s;let t=[],i=e.skipOffset,r=e.skipFor;try{let n={type:K.AdvancedRequestType.INTERSTITIAL_ASSET_LIST},a=0;!e.pre&&!e.post&&this.config_.allowStartInMiddleOfInterstitial&&this.basePlayer_.isLive()&&(a=((s=this.lastTime_)!=null?s:this.baseVideo_.currentTime)-e.startTime);let o=this.getUriWithHlsParams_(e.assetListUri,a),c=await this.makeAdRequest_(o,n).promise,d=q.fromUTF8(c.data),u=JSON.parse(d),m=u["SKIP-CONTROL"];if(m){let g=m.OFFSET;typeof g=="number"&&(i=parseFloat(g),isNaN(g)&&(i=e.isSkippable?0:null));let _=m.DURATION;typeof _=="number"&&(r=parseFloat(_),isNaN(r)&&(r=null))}let f=0;for(let g=0;g<u.ASSETS.length;g++){let _=u.ASSETS[g],T=_.URI,S=parseFloat(_.DURATION)||0;if(a>0&&S>0){let b=f+S;if(b<=a){f=b;continue}}if(T){let b=fe.resolve(c.uri,T),E={id:e.id+"_shaka_asset_"+g,groupId:e.id,startTime:e.startTime,endTime:e.endTime,uri:this.getUriWithHlsParams_(b),mimeType:null,isSkippable:e.isSkippable,skipOffset:i,skipFor:r,canJump:e.canJump,resumeOffset:e.resumeOffset,playoutLimit:e.playoutLimit,once:e.once,pre:e.pre,post:e.post,timelineRange:e.timelineRange,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null},C=_["X-AD-CREATIVE-SIGNALING"];if(C){let A=C.payload&&C.payload[0];A&&(E.clickThroughUrl=A.clickThrough,A.tracking&&(E.tracking=G.createTrackingFromEvents(A.tracking)))}if(a>0&&f<a){let A=a-f;this.assetStartOffsets_.set(E.id,A)}t.push(E)}f+=S}}catch(n){p.warning("Failed to resolve interstitial asset list",e.assetListUri,n)}return t}addUnresolvedAssetList_(e){this.unresolvedAssetLists_.add(e),this.cuepointsChanged_(),this.addEventListeners_()}async resolveAssetListDescriptor_(e){let t=await this.resolveAssetList_(e);e.resolving=!1,t.length?(this.maybeRetainResolvedAssetList_(e),await this.addInterstitials(t)):(this.unresolvedAssetLists_.delete(e),this.cuepointsChanged_(),this.removeEventListeners_())}maybeRetainResolvedAssetList_(e){this.shouldRetainAssetList_()?(e.resolved=!0,this.unresolvedAssetLists_.add(e)):this.unresolvedAssetLists_.delete(e)}shouldRetainAssetList_(){return!!this.config_&&this.config_.allowStartInMiddleOfInterstitial&&this.basePlayer_.isLive()}maybeResetAssetListsOnSeek_(e){if(this.shouldRetainAssetList_())for(let t of this.unresolvedAssetLists_){if(!t.resolved)continue;let i=t.endTime;e>=t.startTime&&(i==null||i==1/0||e<i)&&(t.resolved=!1,this.removeResolvedAssetListGroup_(t.id))}}removeResolvedAssetListGroup_(e){if(e!=null)for(let t of Array.from(this.interstitials_))t.groupId===e&&this.removeInterstitial_(t)}removeInterstitial_(e){this.preloadTasks_.has(e)&&(this.preloadTasks_.get(e).release(),this.preloadTasks_.delete(e)),this.removePreloadOnDomElements_(e);let t=this.interstitialId_(e);this.interstitialIds_.delete(t),this.interstitials_.delete(e),this.sortedInterstitials_=null,this.lastPlayedAd_===e&&(this.lastPlayedAd_=null)}resolutionAheadTime_(e){return e.resolutionTimeOffset||this.config_.interstitialPreloadAheadTime}shouldResolveAssetListNow_(e){if(e.pre||e.post||e.startTime==0&&!e.canJump)return!0;let t=this.lastTime_!=null?this.lastTime_:this.baseVideo_.currentTime,i=1/0;if(!this.playingAd_&&this.baseVideo_.duration&&(i=this.baseVideo_.duration),Math.min(e.startTime,i)-t>this.resolutionAheadTime_(e))return!1;let s=e.endTime;return!(s!=null&&s!=1/0&&t>=s)}getOverlaysInfo_(e){let t=[];if(!e)return t;let i=this.getMetadataValue_(e,"X-ASSET-URI");if(!i)return t;let r=this.getMetadataValue_(e,"X-OVERLAY-ID"),{startTime:s,endTime:n}=this.getInterstitialTimes_(e,r),{once:a,pre:o,post:c}=this.parseCue_(e),d=this.getMetadataValue_(e,"X-ASSET-MIMETYPE"),u=this.getMetadataValue_(e,"X-LOOP")=="YES",m=1,f=this.getMetadataValue_(e,"X-DEPTH");f!=null&&(m=parseFloat(f),isNaN(m)&&(m=1));let g=this.getMetadataValue_(e,"X-BACKGROUND"),_={x:1920,y:1080},T=this.getMetadataValue_(e,"X-VIEWPORT");if(T!=null){let w=T.split("x");if(w.length!=2)return t;_.x=parseFloat(w[0]),_.y=parseFloat(w[1])}let S={viewport:{x:_.x,y:_.y},topLeft:{x:0,y:0},size:{x:_.x,y:_.y}},b=this.getMetadataValue_(e,"X-OVERLAY-POSITION");if(b!=null){let w=b.split("x");if(w.length!=2)return t;S.topLeft.x=parseFloat(w[0]),S.topLeft.y=parseFloat(w[1])}let E=this.getMetadataValue_(e,"X-OVERLAY-SIZE");if(E!=null){let w=E.split("x");if(w.length!=2)return t;S.size.x=parseFloat(w[0]),S.size.y=parseFloat(w[1])}let C=null,A=this.getMetadataValue_(e,"X-SQUEEZECURRENT");if(A!=null){let w=parseFloat(A);isNaN(w)&&(w=1),C={viewport:{x:1920,y:1080},topLeft:{x:0,y:0},size:{x:1920*w,y:1080*w}};let M=this.getMetadataValue_(e,"X-SQUEEZECURRENT-POSITION");if(M!=null){let x=M.split("x");if(x.length!=2)return t;C.topLeft.x=parseFloat(x[0]),C.topLeft.y=parseFloat(x[1])}}return t.push({id:r,groupId:null,startTime:s,endTime:n,uri:this.getUriWithHlsParams_(i),mimeType:d,isSkippable:!1,skipOffset:null,skipFor:null,canJump:!0,resumeOffset:null,playoutLimit:null,once:a,pre:o,post:c,timelineRange:!0,loop:u,overlay:S,displayOnBackground:m==-1,currentVideo:C,background:g,clickThroughUrl:null,tracking:null}),t}getUriWithHlsParams_(e,t=0){if(e.startsWith("data:"))return e;this.sessionId_||(this.sessionId_=window.crypto.randomUUID());let i=new Map;if(i.set("_HLS_primary_id",this.sessionId_),t>0){let r=Math.round(t*1e3)/1e3;i.set("_HLS_start_offset",String(r))}return fe.appendParams(e,i)}cuepointsChanged_(){let e=[],t=(i,r)=>{!e.find(n=>i==n.start&&r==n.end)&&e.push({start:i,end:r})};for(let i of this.interstitials_)i.overlay||(i.pre?t(0,null):i.post?t(-1,null):i.timelineRange?t(i.startTime,i.endTime):t(i.startTime,null));for(let i of this.unresolvedAssetLists_)i.pre?t(0,null):i.post?t(-1,null):i.timelineRange?t(i.startTime,i.endTime):t(i.startTime,null);this.sendEvent_(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",e))}updatePlayerConfig_(){v.assert(this.player_,"Must have player"),v.assert(this.basePlayer_,"Must have base player"),this.player_.configure(this.basePlayer_.getNonDefaultConfiguration()),this.player_.configure("ads.disableHLSInterstitial",!0),this.player_.configure("ads.disableDASHInterstitial",!0),this.player_.configure("playRangeEnd",1/0);let e=this.player_.getNetworkingEngine();v.assert(e,"Need networking engine"),this.basePlayer_.getNetworkingEngine().copyFiltersInto(e)}makeAdRequest_(e,t){let i=K.RequestType.ADS,r=K.makeRequest([e],K.defaultRetryParameters());return this.basePlayer_.getNetworkingEngine().request(i,r,t)}getMetadataValue_(e,t){let i=e.values.find(r=>r.key==t);return i?i.data:null}getInterstitialTimes_(e,t){let i=t==null?Math.floor(e.startTime*10)/10:e.startTime,r=e.endTime;return e.endTime&&e.endTime!=1/0&&typeof e.endTime=="number"&&(r=t==null?Math.floor(e.endTime*10)/10:e.endTime),{startTime:i,endTime:r}}parseCue_(e){let t=this.getMetadataValue_(e,"CUE");return{once:t!=null&&t.includes("ONCE"),pre:t!=null&&t.includes("PRE"),post:t!=null&&t.includes("POST")}}interstitialId_(e){return e.id||JSON.stringify(e)}getTimeOffset_(e){return e.pre?0:e.post?-1:e.startTime}isPreloadAllowed_(e){let t=e.mimeType;return t?!t.startsWith("image/")&&t!=="text/html":!0}getInterstitials(){return Array.from(this.interstitials_)}isSmartTV_(){let t=j.getDevice().getDeviceType();return t==ie.DeviceType.TV||t==ie.DeviceType.CONSOLE||t==ie.DeviceType.CAST}checkPreloadOnDomElements_(e){if(this.preloadOnDomElements_.has(e)||this.config_&&!this.config_.allowPreloadOnDomElements)return;let t=r=>{let s=document.createElement("link");return s.rel="preload",s.href=r,s.as="image",document.head.appendChild(s),s},i=[];if(e.background){let r=/url\(('|")?([^'"()]+)('|")\)?/,s=e.background.match(r);s&&i.push(t(s[2]))}e.mimeType&&e.mimeType.startsWith("image/")&&i.push(t(e.uri)),this.preloadOnDomElements_.set(e,i)}removePreloadOnDomElements_(e){if(!this.preloadOnDomElements_.has(e))return;let t=this.preloadOnDomElements_.get(e);for(let i of t)i.parentNode.removeChild(i);this.preloadOnDomElements_.delete(e)}sendEvent_(e,t){p.info("Interstitial event",e,t),this.onEvent_(new U(e,t)),this.processTrackingEvent_(e)}processTrackingEvent_(e){if(this.config_.disableTrackingEvents)return;let t=this.lastPlayedAd_&&this.lastPlayedAd_.tracking;G.fireTrackingEvents(t,e,this.basePlayer_.getNetworkingEngine())}isWithinPreloadWindow_(e){if(e.pre&&this.lastTime_==null)return!0;if(e.startTime==0&&!e.canJump)return!0;if(this.lastTime_!=null){let t=1/0;!this.playingAd_&&this.baseVideo_.duration&&(t=this.baseVideo_.duration);let i=Math.min(e.startTime,t)-this.lastTime_;if(i>0&&i<=this.resolutionAheadTime_(e))return!0}return!1}static isSafeClickThroughUri_(e){let t=e.replace(/[\u0000-\u0020]+/g,""),i=/^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(t);if(!i)return!0;let r=i[1].toLowerCase();return r=="http"||r=="https"}},In=class{constructor(e,t,i=null){l(this,"player_");l(this,"preloadManager_");l(this,"initialError_");l(this,"released_");l(this,"sendEvent_");this.player_=e,this.preloadManager_=null,this.initialError_=null,this.released_=!1,this.sendEvent_=i,this.start_(t)}async start_(e){try{this.sendEvent_&&this.sendEvent_(G.AD_INTERSTITIAL_PRELOAD,new Map().set("interstitial",e));let t=await this.player_.preload(e.uri,null,e.mimeType||void 0);if(this.released_){if(t)try{await t.destroy()}catch(i){p.error("Error destroying preloadManager",i)}return}this.preloadManager_=t,t&&this.sendEvent_&&this.sendEvent_(G.AD_INTERSTITIAL_PRELOADED,new Map().set("interstitial",e))}catch(t){this.initialError_=t instanceof h?t:null}}getPreloadManager(){return this.preloadManager_}getInitialError(){return this.initialError_}release(){this.released_=!0,this.preloadManager_&&(this.preloadManager_.destroy(),this.preloadManager_=null)}};/*! @license
531
531
  * Shaka Player
532
532
  * Copyright 2016 Google LLC
533
533
  * SPDX-License-Identifier: Apache-2.0
534
- */var Os=class extends Wt{constructor(t,i,r,s,n){super(n);l(this,"ad_");l(this,"skipOffset_");l(this,"adPosition_");l(this,"totalAds_");l(this,"isLinear_");l(this,"isSkipped_");this.ad_=t,this.skipOffset_=Gt.parseTime(this.ad_.skipOffset),this.adPosition_=i,this.totalAds_=r,this.isLinear_=s,this.isSkipped_=!1}isClientRendering(){return!1}getDuration(){return this.ad_.durationInSeconds}getRemainingTime(){return this.ad_.startTimeInSeconds+this.ad_.durationInSeconds-this.video.currentTime}isSkippable(){return typeof this.skipOffset_=="number"}getTimeUntilSkippable(){if(typeof this.skipOffset_!="number")return this.getRemainingTime();let t=this.getRemainingTime()+this.skipOffset_-this.getDuration();return Math.max(t,0)}canSkipNow(){return this.getTimeUntilSkippable()==0}skip(){this.isSkipped_=!0,this.video.currentTime+=this.getRemainingTime()}isLinear(){return this.isLinear_}getSequenceLength(){return this.totalAds_?this.totalAds_:1}getPositionInSequence(){return this.adPosition_?this.adPosition_:1}getTitle(){return this.ad_.adTitle}getVastAdId(){return this.ad_.vastAdId||""}getAdId(){return this.ad_.adId}getCreativeAdId(){return this.ad_.creativeId}getTimeOffset(){return this.ad_.startTimeInSeconds}release(){this.ad_=null,this.adPosition_=null,this.totalAds_=null}isSkipped(){return this.isSkipped_}};/*! @license
534
+ */var Ns=class extends Wt{constructor(t,i,r,s,n){super(n);l(this,"ad_");l(this,"skipOffset_");l(this,"adPosition_");l(this,"totalAds_");l(this,"isLinear_");l(this,"isSkipped_");this.ad_=t,this.skipOffset_=Gt.parseTime(this.ad_.skipOffset),this.adPosition_=i,this.totalAds_=r,this.isLinear_=s,this.isSkipped_=!1}isClientRendering(){return!1}getDuration(){return this.ad_.durationInSeconds}getRemainingTime(){return this.ad_.startTimeInSeconds+this.ad_.durationInSeconds-this.video.currentTime}isSkippable(){return typeof this.skipOffset_=="number"}getTimeUntilSkippable(){if(typeof this.skipOffset_!="number")return this.getRemainingTime();let t=this.getRemainingTime()+this.skipOffset_-this.getDuration();return Math.max(t,0)}canSkipNow(){return this.getTimeUntilSkippable()==0}skip(){this.isSkipped_=!0,this.video.currentTime+=this.getRemainingTime()}isLinear(){return this.isLinear_}getSequenceLength(){return this.totalAds_?this.totalAds_:1}getPositionInSequence(){return this.adPosition_?this.adPosition_:1}getTitle(){return this.ad_.adTitle}getVastAdId(){return this.ad_.vastAdId||""}getAdId(){return this.ad_.adId}getCreativeAdId(){return this.ad_.creativeId}getTimeOffset(){return this.ad_.startTimeInSeconds}release(){this.ad_=null,this.adPosition_=null,this.totalAds_=null}isSkipped(){return this.isSkipped_}};/*! @license
535
535
  * Shaka Player
536
536
  * Copyright 2016 Google LLC
537
537
  * SPDX-License-Identifier: Apache-2.0
538
- */var be=class be{constructor(e,t,i,r){l(this,"adContainer_");l(this,"networkingEngine_");l(this,"config_");l(this,"video_");l(this,"streamPromise_");l(this,"streamRequestStartTime_");l(this,"onEvent_");l(this,"isLive_");l(this,"snapForwardTime_");l(this,"adBreaks_");l(this,"playedAds_");l(this,"ad_");l(this,"mediaTailorAd_");l(this,"mediaTailorAdBreak_");l(this,"staticResources_");l(this,"adListeners_");l(this,"eventsSent_");l(this,"trackingUrl_");l(this,"firstTrackingRequest_");l(this,"backupUrl_");l(this,"currentCuePoints_");l(this,"eventManager_");l(this,"adBreakListenersAttached_");this.adContainer_=e,this.networkingEngine_=t,this.config_=null,this.video_=i,this.streamPromise_=null,this.streamRequestStartTime_=NaN,this.onEvent_=r,this.isLive_=!1,this.snapForwardTime_=null,this.adBreaks_=[],this.playedAds_=new Set,this.ad_=null,this.mediaTailorAd_=null,this.mediaTailorAdBreak_=null,this.staticResources_=new Map,this.adListeners_=[],this.eventsSent_=new Set,this.trackingUrl_="",this.firstTrackingRequest_=!0,this.backupUrl_="",this.currentCuePoints_=[],this.eventManager_=new ue,this.adBreakListenersAttached_=!1}configure(e){this.config_=e}streamRequest(e,t,i){return this.streamPromise_?Promise.reject(new h(h.Severity.RECOVERABLE,h.Category.ADS,h.Code.CURRENT_DAI_REQUEST_NOT_FINISHED)):(this.streamPromise_=Promise.withResolvers(),this.requestSessionInfo_(e,t),this.backupUrl_=i||"",this.streamRequestStartTime_=Date.now()/1e3,this.streamPromise_.promise)}addTrackingUrl(e){this.trackingUrl_=e,this.onEvent_(new U(G.ADS_LOADED,new Map().set("loadTime",0)))}stop(){for(let e of this.adListeners_)this.eventManager_.unlisten(e.target,e.type,e.listener);this.onEnded_(),this.adListeners_=[],this.eventsSent_.clear(),this.trackingUrl_="",this.firstTrackingRequest_=!0,this.backupUrl_="",this.snapForwardTime_=null,this.adBreaks_=[],this.playedAds_.clear(),this.staticResources_.clear(),this.streamPromise_=null,this.adBreakListenersAttached_=!1}release(){this.stop(),this.eventManager_&&this.eventManager_.release()}onManifestUpdated(e){this.isLive_=e,this.trackingUrl_!=""&&(this.requestTrackingInfo_(this.trackingUrl_,this.firstTrackingRequest_),this.firstTrackingRequest_=!1)}getCuePoints(){let e=new Map;for(let t of this.adBreaks_)for(let i of t.ads){let r=i.startTimeInSeconds,s=r+i.durationInSeconds;if(!isFinite(r)||!isFinite(s)||s<=r)continue;let n=`${r.toFixed(1)}|${s.toFixed(1)}`;e.has(n)||e.set(n,{start:r,end:s})}return Array.from(e.values()).sort((t,i)=>t.start-i.start)}async requestSessionInfo_(e,t){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_SESSION_INFO},s=K.makeRequest([e],K.defaultRetryParameters());if(s.method="POST",t){let a=JSON.stringify(t);s.body=q.toUTF8(a)}let n=this.networkingEngine_.request(i,s,r);try{let a=await n.promise,o=q.fromUTF8(a.data),c=JSON.parse(o);if(c.manifestUrl&&c.trackingUrl){this.trackingUrl_=fe.resolve(e,c.trackingUrl);let u=Date.now()/1e3-this.streamRequestStartTime_;this.onEvent_(new U(G.ADS_LOADED,new Map().set("loadTime",u)));let m=fe.resolve(e,c.manifestUrl);this.streamPromise_.resolve(m),this.streamPromise_=null}else throw new Error("Insufficient data from MediaTailor.")}catch(a){if(!this.backupUrl_.length){this.streamPromise_.reject(new h(h.Severity.RECOVERABLE,h.Category.ADS,h.Code.MEDIATAILOR_REQUEST_FAILED)),this.streamPromise_=null;return}p.warning("MediaTailor request returned an error. Falling back to the backup asset uri."),this.streamPromise_.resolve(this.backupUrl_),this.streamPromise_=null}}async requestTrackingInfo_(e,t){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_TRACKING_INFO},s=K.makeRequest([e],K.defaultRetryParameters()),n=this.networkingEngine_.request(i,s,r);try{let a=await n.promise,o=[],c=q.fromUTF8(a.data),d=JSON.parse(c);if(d.avails.length>0){if(Ne.alphabeticalKeyOrderStringify(this.adBreaks_)!=Ne.alphabeticalKeyOrderStringify(d.avails)){this.adBreaks_=d.avails;for(let u of this.adBreaks_)for(let m of u.nonLinearAdsList)for(let f of m.nonLinearAdList)this.requestStaticResource_(f);o=this.getCuePoints(),this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",o)))}}else this.adBreaks_.length&&this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",o))),this.onEnded_(),this.adBreaks_=[];t&&(this.isLive_||o.length>0)&&this.setupAdBreakListeners_()}catch(a){p.warning("Error fetching tracking info",a)}}async requestStaticResource_(e){if(!e.staticResource)return;let t=this.getCacheKeyForNonLinear_(e);if(this.staticResources_.has(t))return;let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_STATIC_RESOURCE},s=K.makeRequest([e.staticResource],K.defaultRetryParameters()),n=this.networkingEngine_.request(i,s,r);try{this.staticResources_.set(t,[]);let a=await n.promise,o=q.fromUTF8(a.data),d=JSON.parse(o).apps;this.staticResources_.set(t,d)}catch(a){this.staticResources_.delete(t)}}getCacheKeyForNonLinear_(e){return[e.adId,e.adParameters,e.adSystem,e.adTitle,e.creativeAdId,e.creativeId,e.creativeSequence,e.height,e.width,e.staticResource].join("|")}setupAdBreakListeners_(){this.adBreakListenersAttached_||(this.adBreakListenersAttached_=!0,this.onTimeupdate_(),this.isLive_||(this.checkForSnapback_(),this.eventManager_.listen(this.video_,"seeked",()=>{this.checkForSnapback_()}),this.eventManager_.listen(this.video_,"ended",()=>{this.onEnded_()})),this.eventManager_.listen(this.video_,"timeupdate",()=>{this.onTimeupdate_()}))}checkForSnapback_(){let e=this.video_.currentTime;if(this.config_&&this.config_.disableSnapback||e==0||this.snapForwardTime_!=null)return;let t,i;for(let r of this.adBreaks_)for(let s of r.ads)if(!i)s.startTimeInSeconds<e&&(i=s,t=r);else if(i.durationInSeconds>0&&s.startTimeInSeconds<e&&s.startTimeInSeconds>i.startTimeInSeconds+i.durationInSeconds){i=s,t=r;break}t&&i&&!this.playedAds_.has(i.adId)&&(p.info("Seeking back to the start of the ad break at "+t.startTimeInSeconds+" and will return to "+e),this.snapForwardTime_=e,this.video_.currentTime=t.startTimeInSeconds)}onAdBreakEnded_(){let e=this.video_.currentTime;this.snapForwardTime_&&this.snapForwardTime_>e&&(this.video_.currentTime=this.snapForwardTime_),this.snapForwardTime_=null}onTimeupdate_(){if(!this.video_.duration||!this.ad_&&!this.adBreaks_.length)return;let e=this.video_.currentTime,t=!1;if(this.ad_){t=!0,v.assert(this.mediaTailorAd_,"Ad should be defined"),this.sendInProgressEvents_(e,this.mediaTailorAd_);let i=this.ad_.getRemainingTime(),r=this.ad_.getDuration();this.ad_.canSkipNow()&&i>0&&r>0&&this.sendTrackingEvent_(be.SKIP_STATE_CHANGED_),r>0&&(i<=0||i>r)&&this.onEnded_()}(!this.ad_||!this.ad_.isLinear())&&(this.checkLinearAds_(e),!this.ad_&&this.adContainer_&&this.checkNonLinearAds_(e),t&&!this.ad_&&this.onAdBreakEnded_())}sendInProgressEvents_(e,t){let i=t.startTimeInSeconds+.25*t.durationInSeconds,r=t.startTimeInSeconds+.5*t.durationInSeconds,s=t.startTimeInSeconds+.75*t.durationInSeconds;e>=i&&!this.eventsSent_.has(be.FIRSTQUARTILE_)?(this.eventsSent_.add(be.FIRSTQUARTILE_),this.sendTrackingEvent_(be.FIRSTQUARTILE_)):e>=r&&!this.eventsSent_.has(be.MIDPOINT_)?(this.eventsSent_.add(be.MIDPOINT_),this.sendTrackingEvent_(be.MIDPOINT_)):e>=s&&!this.eventsSent_.has(be.THIRDQUARTILE_)&&(this.eventsSent_.add(be.THIRDQUARTILE_),this.sendTrackingEvent_(be.THIRDQUARTILE_))}checkLinearAds_(e){for(let t of this.adBreaks_){if(this.ad_&&this.ad_.isLinear())break;for(let i=0;i<t.ads.length;i++){let r=t.ads[i],s=r.startTimeInSeconds,n=r.startTimeInSeconds+r.durationInSeconds;if(s<=e&&n>e){if(!(this.config_&&this.config_.disablePlayedLinearAdSkip)&&this.playedAds_.has(r.adId)){if(this.video_.ended)continue;this.video_.currentTime=n;return}this.onEnded_(),this.mediaTailorAdBreak_=t,this.ad_=new Os(r,i+1,t.ads.length,!0,this.video_),this.mediaTailorAd_=r,i===0&&this.sendTrackingEvent_(be.BREAK_START_),this.setupCurrentAdListeners_();break}}}}checkNonLinearAds_(e){for(let t of this.adBreaks_){if(this.ad_)break;for(let i=0;i<t.nonLinearAdsList.length;i++){let r=t.nonLinearAdsList[i];if(!r.nonLinearAdList.length)continue;let s=t.startTimeInSeconds,n=this.getCacheKeyForNonLinear_(r.nonLinearAdList[0]),a=this.staticResources_.get(n);if(s<=e&&a&&a.length){this.onEnded_(),this.displayNonLinearAd_(a),this.mediaTailorAdBreak_=t,this.ad_=new Os(r,i+1,t.ads.length,!1,this.video_),this.mediaTailorAd_=r,i===0&&this.sendTrackingEvent_(be.BREAK_START_),this.setupCurrentAdListeners_();break}}}}displayNonLinearAd_(e){for(let t of e){if(!t.data.source.length)continue;let i=document.createElement("img");i.src=t.data.source[0].url,i.style.top=(t.placeholder.top||0)+"%",i.style.height=100-(t.placeholder.top||0)+"%",i.style.left=(t.placeholder.left||0)+"%",i.style.maxWidth=100-(t.placeholder.left||0)+"%",i.style.objectFit="contain",i.style.position="absolute",this.adContainer_.appendChild(i)}}onEnded_(){if(this.ad_&&this.mediaTailorAd_){this.adContainer_&&Ge.removeAllChildren(this.adContainer_),this.isLive_||this.playedAds_.add(this.mediaTailorAd_.adId),this.removeCurrentAdListeners_(this.ad_.isSkipped());let e=this.ad_.getPositionInSequence(),t=this.ad_.getSequenceLength();e===t&&this.sendTrackingEvent_(be.BREAK_END_),this.ad_=null,this.mediaTailorAd_=null,this.mediaTailorAdBreak_=null}}setupCurrentAdListeners_(){let e=!1;this.video_.paused?e=!0:(this.sendTrackingEvent_(be.IMPRESSION_),this.sendTrackingEvent_(be.START_)),this.adListeners_.push({target:this.video_,type:"volumechange",listener:()=>{this.sendTrackingEvent_(this.video_.muted?be.MUTE_:be.UNMUTE_)}}),this.adListeners_.push({target:this.video_,type:"play",listener:()=>{e?(this.sendTrackingEvent_(be.IMPRESSION_),this.sendTrackingEvent_(be.START_),e=!1):this.sendTrackingEvent_(be.RESUME_)}}),this.adListeners_.push({target:this.video_,type:"pause",listener:()=>{this.sendTrackingEvent_(be.PAUSE_)}});for(let t of this.adListeners_)this.eventManager_.listen(t.target,t.type,t.listener)}removeCurrentAdListeners_(e=!1){e?this.sendTrackingEvent_(be.SKIPPED_):this.sendTrackingEvent_(be.COMPLETE_);for(let t of this.adListeners_)this.eventManager_.unlisten(t.target,t.type,t.listener);this.adListeners_=[],this.eventsSent_.clear()}sendTrackingEvent_(e){if(!this.mediaTailorAd_||!this.mediaTailorAdBreak_)return;let t=this.mediaTailorAd_.trackingEvents.find(i=>i.eventType==e);if(t||(t=this.mediaTailorAdBreak_.adBreakTrackingEvents.find(i=>i.eventType==e)),t&&this.config_&&!this.config_.disableTrackingEvents&&!(this.config_.disableTrackingForPlayedLinearAds&&this.mediaTailorAd_&&this.playedAds_.has(this.mediaTailorAd_.adId))){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_TRACKING_EVENT};for(let s of t.beaconUrls){if(!s||s=="")continue;let n=K.makeRequest([s],K.defaultRetryParameters());n.method="POST",this.networkingEngine_.request(i,n,r)}}switch(e){case be.IMPRESSION_:this.onEvent_(new U(G.AD_IMPRESSION));break;case be.START_:this.onEvent_(new U(G.AD_STARTED,new Map().set("ad",this.ad_)));break;case be.MUTE_:this.onEvent_(new U(G.AD_MUTED));break;case be.UNMUTE_:this.onEvent_(new U(G.AD_VOLUME_CHANGED));break;case be.RESUME_:this.onEvent_(new U(G.AD_RESUMED));break;case be.PAUSE_:this.onEvent_(new U(G.AD_PAUSED));break;case be.FIRSTQUARTILE_:this.onEvent_(new U(G.AD_FIRST_QUARTILE));break;case be.MIDPOINT_:this.onEvent_(new U(G.AD_MIDPOINT));break;case be.THIRDQUARTILE_:this.onEvent_(new U(G.AD_THIRD_QUARTILE));break;case be.COMPLETE_:this.onEvent_(new U(G.AD_COMPLETE)),this.onEvent_(new U(G.AD_STOPPED));break;case be.SKIPPED_:this.onEvent_(new U(G.AD_SKIPPED)),this.onEvent_(new U(G.AD_STOPPED));break;case be.BREAK_START_:this.adContainer_&&this.adContainer_.setAttribute("ad-active","true");break;case be.BREAK_END_:this.adContainer_&&this.adContainer_.removeAttribute("ad-active");break;case be.SKIP_STATE_CHANGED_:this.onEvent_(new U(G.AD_SKIP_STATE_CHANGED));break}}};l(be,"IMPRESSION_","impression"),l(be,"START_","start"),l(be,"MUTE_","mute"),l(be,"UNMUTE_","unmute"),l(be,"RESUME_","resume"),l(be,"PAUSE_","pause"),l(be,"FIRSTQUARTILE_","firstQuartile"),l(be,"MIDPOINT_","midpoint"),l(be,"THIRDQUARTILE_","thirdQuartile"),l(be,"COMPLETE_","complete"),l(be,"SKIPPED_","skip"),l(be,"BREAK_START_","breakStart"),l(be,"BREAK_END_","breakEnd"),l(be,"SKIP_STATE_CHANGED_","skipStateChanged");var Cn=be;/*! @license
538
+ */var be=class be{constructor(e,t,i,r){l(this,"adContainer_");l(this,"networkingEngine_");l(this,"config_");l(this,"video_");l(this,"streamPromise_");l(this,"streamRequestStartTime_");l(this,"onEvent_");l(this,"isLive_");l(this,"snapForwardTime_");l(this,"adBreaks_");l(this,"playedAds_");l(this,"ad_");l(this,"mediaTailorAd_");l(this,"mediaTailorAdBreak_");l(this,"staticResources_");l(this,"adListeners_");l(this,"eventsSent_");l(this,"trackingUrl_");l(this,"firstTrackingRequest_");l(this,"backupUrl_");l(this,"currentCuePoints_");l(this,"eventManager_");l(this,"adBreakListenersAttached_");this.adContainer_=e,this.networkingEngine_=t,this.config_=null,this.video_=i,this.streamPromise_=null,this.streamRequestStartTime_=NaN,this.onEvent_=r,this.isLive_=!1,this.snapForwardTime_=null,this.adBreaks_=[],this.playedAds_=new Set,this.ad_=null,this.mediaTailorAd_=null,this.mediaTailorAdBreak_=null,this.staticResources_=new Map,this.adListeners_=[],this.eventsSent_=new Set,this.trackingUrl_="",this.firstTrackingRequest_=!0,this.backupUrl_="",this.currentCuePoints_=[],this.eventManager_=new ue,this.adBreakListenersAttached_=!1}configure(e){this.config_=e}streamRequest(e,t,i){return this.streamPromise_?Promise.reject(new h(h.Severity.RECOVERABLE,h.Category.ADS,h.Code.CURRENT_DAI_REQUEST_NOT_FINISHED)):(this.streamPromise_=Promise.withResolvers(),this.requestSessionInfo_(e,t),this.backupUrl_=i||"",this.streamRequestStartTime_=Date.now()/1e3,this.streamPromise_.promise)}addTrackingUrl(e){this.trackingUrl_=e,this.onEvent_(new U(G.ADS_LOADED,new Map().set("loadTime",0)))}stop(){for(let e of this.adListeners_)this.eventManager_.unlisten(e.target,e.type,e.listener);this.onEnded_(),this.adListeners_=[],this.eventsSent_.clear(),this.trackingUrl_="",this.firstTrackingRequest_=!0,this.backupUrl_="",this.snapForwardTime_=null,this.adBreaks_=[],this.playedAds_.clear(),this.staticResources_.clear(),this.streamPromise_=null,this.adBreakListenersAttached_=!1}release(){this.stop(),this.eventManager_&&this.eventManager_.release()}onManifestUpdated(e){this.isLive_=e,this.trackingUrl_!=""&&(this.requestTrackingInfo_(this.trackingUrl_,this.firstTrackingRequest_),this.firstTrackingRequest_=!1)}getCuePoints(){let e=new Map;for(let t of this.adBreaks_)for(let i of t.ads){let r=i.startTimeInSeconds,s=r+i.durationInSeconds;if(!isFinite(r)||!isFinite(s)||s<=r)continue;let n=`${r.toFixed(1)}|${s.toFixed(1)}`;e.has(n)||e.set(n,{start:r,end:s})}return Array.from(e.values()).sort((t,i)=>t.start-i.start)}async requestSessionInfo_(e,t){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_SESSION_INFO},s=K.makeRequest([e],K.defaultRetryParameters());if(s.method="POST",t){let a=JSON.stringify(t);s.body=q.toUTF8(a)}let n=this.networkingEngine_.request(i,s,r);try{let a=await n.promise,o=q.fromUTF8(a.data),c=JSON.parse(o);if(c.manifestUrl&&c.trackingUrl){this.trackingUrl_=fe.resolve(e,c.trackingUrl);let u=Date.now()/1e3-this.streamRequestStartTime_;this.onEvent_(new U(G.ADS_LOADED,new Map().set("loadTime",u)));let m=fe.resolve(e,c.manifestUrl);this.streamPromise_.resolve(m),this.streamPromise_=null}else throw new Error("Insufficient data from MediaTailor.")}catch(a){if(!this.backupUrl_.length){this.streamPromise_.reject(new h(h.Severity.RECOVERABLE,h.Category.ADS,h.Code.MEDIATAILOR_REQUEST_FAILED)),this.streamPromise_=null;return}p.warning("MediaTailor request returned an error. Falling back to the backup asset uri."),this.streamPromise_.resolve(this.backupUrl_),this.streamPromise_=null}}async requestTrackingInfo_(e,t){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_TRACKING_INFO},s=K.makeRequest([e],K.defaultRetryParameters()),n=this.networkingEngine_.request(i,s,r);try{let a=await n.promise,o=[],c=q.fromUTF8(a.data),d=JSON.parse(c);if(d.avails.length>0){if(Oe.alphabeticalKeyOrderStringify(this.adBreaks_)!=Oe.alphabeticalKeyOrderStringify(d.avails)){this.adBreaks_=d.avails;for(let u of this.adBreaks_)for(let m of u.nonLinearAdsList)for(let f of m.nonLinearAdList)this.requestStaticResource_(f);o=this.getCuePoints(),this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",o)))}}else this.adBreaks_.length&&this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",o))),this.onEnded_(),this.adBreaks_=[];t&&(this.isLive_||o.length>0)&&this.setupAdBreakListeners_()}catch(a){p.warning("Error fetching tracking info",a)}}async requestStaticResource_(e){if(!e.staticResource)return;let t=this.getCacheKeyForNonLinear_(e);if(this.staticResources_.has(t))return;let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_STATIC_RESOURCE},s=K.makeRequest([e.staticResource],K.defaultRetryParameters()),n=this.networkingEngine_.request(i,s,r);try{this.staticResources_.set(t,[]);let a=await n.promise,o=q.fromUTF8(a.data),d=JSON.parse(o).apps;this.staticResources_.set(t,d)}catch(a){this.staticResources_.delete(t)}}getCacheKeyForNonLinear_(e){return[e.adId,e.adParameters,e.adSystem,e.adTitle,e.creativeAdId,e.creativeId,e.creativeSequence,e.height,e.width,e.staticResource].join("|")}setupAdBreakListeners_(){this.adBreakListenersAttached_||(this.adBreakListenersAttached_=!0,this.onTimeupdate_(),this.isLive_||(this.checkForSnapback_(),this.eventManager_.listen(this.video_,"seeked",()=>{this.checkForSnapback_()}),this.eventManager_.listen(this.video_,"ended",()=>{this.onEnded_()})),this.eventManager_.listen(this.video_,"timeupdate",()=>{this.onTimeupdate_()}))}checkForSnapback_(){let e=this.video_.currentTime;if(this.config_&&this.config_.disableSnapback||e==0||this.snapForwardTime_!=null)return;let t,i;for(let r of this.adBreaks_)for(let s of r.ads)if(!i)s.startTimeInSeconds<e&&(i=s,t=r);else if(i.durationInSeconds>0&&s.startTimeInSeconds<e&&s.startTimeInSeconds>i.startTimeInSeconds+i.durationInSeconds){i=s,t=r;break}t&&i&&!this.playedAds_.has(i.adId)&&(p.info("Seeking back to the start of the ad break at "+t.startTimeInSeconds+" and will return to "+e),this.snapForwardTime_=e,this.video_.currentTime=t.startTimeInSeconds)}onAdBreakEnded_(){let e=this.video_.currentTime;this.snapForwardTime_&&this.snapForwardTime_>e&&(this.video_.currentTime=this.snapForwardTime_),this.snapForwardTime_=null}onTimeupdate_(){if(!this.video_.duration||!this.ad_&&!this.adBreaks_.length)return;let e=this.video_.currentTime,t=!1;if(this.ad_){t=!0,v.assert(this.mediaTailorAd_,"Ad should be defined"),this.sendInProgressEvents_(e,this.mediaTailorAd_);let i=this.ad_.getRemainingTime(),r=this.ad_.getDuration();this.ad_.canSkipNow()&&i>0&&r>0&&this.sendTrackingEvent_(be.SKIP_STATE_CHANGED_),r>0&&(i<=0||i>r)&&this.onEnded_()}(!this.ad_||!this.ad_.isLinear())&&(this.checkLinearAds_(e),!this.ad_&&this.adContainer_&&this.checkNonLinearAds_(e),t&&!this.ad_&&this.onAdBreakEnded_())}sendInProgressEvents_(e,t){let i=t.startTimeInSeconds+.25*t.durationInSeconds,r=t.startTimeInSeconds+.5*t.durationInSeconds,s=t.startTimeInSeconds+.75*t.durationInSeconds;e>=i&&!this.eventsSent_.has(be.FIRSTQUARTILE_)?(this.eventsSent_.add(be.FIRSTQUARTILE_),this.sendTrackingEvent_(be.FIRSTQUARTILE_)):e>=r&&!this.eventsSent_.has(be.MIDPOINT_)?(this.eventsSent_.add(be.MIDPOINT_),this.sendTrackingEvent_(be.MIDPOINT_)):e>=s&&!this.eventsSent_.has(be.THIRDQUARTILE_)&&(this.eventsSent_.add(be.THIRDQUARTILE_),this.sendTrackingEvent_(be.THIRDQUARTILE_))}checkLinearAds_(e){for(let t of this.adBreaks_){if(this.ad_&&this.ad_.isLinear())break;for(let i=0;i<t.ads.length;i++){let r=t.ads[i],s=r.startTimeInSeconds,n=r.startTimeInSeconds+r.durationInSeconds;if(s<=e&&n>e){if(!(this.config_&&this.config_.disablePlayedLinearAdSkip)&&this.playedAds_.has(r.adId)){if(this.video_.ended)continue;this.video_.currentTime=n;return}this.onEnded_(),this.mediaTailorAdBreak_=t,this.ad_=new Ns(r,i+1,t.ads.length,!0,this.video_),this.mediaTailorAd_=r,i===0&&this.sendTrackingEvent_(be.BREAK_START_),this.setupCurrentAdListeners_();break}}}}checkNonLinearAds_(e){for(let t of this.adBreaks_){if(this.ad_)break;for(let i=0;i<t.nonLinearAdsList.length;i++){let r=t.nonLinearAdsList[i];if(!r.nonLinearAdList.length)continue;let s=t.startTimeInSeconds,n=this.getCacheKeyForNonLinear_(r.nonLinearAdList[0]),a=this.staticResources_.get(n);if(s<=e&&a&&a.length){this.onEnded_(),this.displayNonLinearAd_(a),this.mediaTailorAdBreak_=t,this.ad_=new Ns(r,i+1,t.ads.length,!1,this.video_),this.mediaTailorAd_=r,i===0&&this.sendTrackingEvent_(be.BREAK_START_),this.setupCurrentAdListeners_();break}}}}displayNonLinearAd_(e){for(let t of e){if(!t.data.source.length)continue;let i=document.createElement("img");i.src=t.data.source[0].url,i.style.top=(t.placeholder.top||0)+"%",i.style.height=100-(t.placeholder.top||0)+"%",i.style.left=(t.placeholder.left||0)+"%",i.style.maxWidth=100-(t.placeholder.left||0)+"%",i.style.objectFit="contain",i.style.position="absolute",this.adContainer_.appendChild(i)}}onEnded_(){if(this.ad_&&this.mediaTailorAd_){this.adContainer_&&Ge.removeAllChildren(this.adContainer_),this.isLive_||this.playedAds_.add(this.mediaTailorAd_.adId),this.removeCurrentAdListeners_(this.ad_.isSkipped());let e=this.ad_.getPositionInSequence(),t=this.ad_.getSequenceLength();e===t&&this.sendTrackingEvent_(be.BREAK_END_),this.ad_=null,this.mediaTailorAd_=null,this.mediaTailorAdBreak_=null}}setupCurrentAdListeners_(){let e=!1;this.video_.paused?e=!0:(this.sendTrackingEvent_(be.IMPRESSION_),this.sendTrackingEvent_(be.START_)),this.adListeners_.push({target:this.video_,type:"volumechange",listener:()=>{this.sendTrackingEvent_(this.video_.muted?be.MUTE_:be.UNMUTE_)}}),this.adListeners_.push({target:this.video_,type:"play",listener:()=>{e?(this.sendTrackingEvent_(be.IMPRESSION_),this.sendTrackingEvent_(be.START_),e=!1):this.sendTrackingEvent_(be.RESUME_)}}),this.adListeners_.push({target:this.video_,type:"pause",listener:()=>{this.sendTrackingEvent_(be.PAUSE_)}});for(let t of this.adListeners_)this.eventManager_.listen(t.target,t.type,t.listener)}removeCurrentAdListeners_(e=!1){e?this.sendTrackingEvent_(be.SKIPPED_):this.sendTrackingEvent_(be.COMPLETE_);for(let t of this.adListeners_)this.eventManager_.unlisten(t.target,t.type,t.listener);this.adListeners_=[],this.eventsSent_.clear()}sendTrackingEvent_(e){if(!this.mediaTailorAd_||!this.mediaTailorAdBreak_)return;let t=this.mediaTailorAd_.trackingEvents.find(i=>i.eventType==e);if(t||(t=this.mediaTailorAdBreak_.adBreakTrackingEvents.find(i=>i.eventType==e)),t&&this.config_&&!this.config_.disableTrackingEvents&&!(this.config_.disableTrackingForPlayedLinearAds&&this.mediaTailorAd_&&this.playedAds_.has(this.mediaTailorAd_.adId))){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_TRACKING_EVENT};for(let s of t.beaconUrls){if(!s||s=="")continue;let n=K.makeRequest([s],K.defaultRetryParameters());n.method="POST",this.networkingEngine_.request(i,n,r)}}switch(e){case be.IMPRESSION_:this.onEvent_(new U(G.AD_IMPRESSION));break;case be.START_:this.onEvent_(new U(G.AD_STARTED,new Map().set("ad",this.ad_)));break;case be.MUTE_:this.onEvent_(new U(G.AD_MUTED));break;case be.UNMUTE_:this.onEvent_(new U(G.AD_VOLUME_CHANGED));break;case be.RESUME_:this.onEvent_(new U(G.AD_RESUMED));break;case be.PAUSE_:this.onEvent_(new U(G.AD_PAUSED));break;case be.FIRSTQUARTILE_:this.onEvent_(new U(G.AD_FIRST_QUARTILE));break;case be.MIDPOINT_:this.onEvent_(new U(G.AD_MIDPOINT));break;case be.THIRDQUARTILE_:this.onEvent_(new U(G.AD_THIRD_QUARTILE));break;case be.COMPLETE_:this.onEvent_(new U(G.AD_COMPLETE)),this.onEvent_(new U(G.AD_STOPPED));break;case be.SKIPPED_:this.onEvent_(new U(G.AD_SKIPPED)),this.onEvent_(new U(G.AD_STOPPED));break;case be.BREAK_START_:this.adContainer_&&this.adContainer_.setAttribute("ad-active","true");break;case be.BREAK_END_:this.adContainer_&&this.adContainer_.removeAttribute("ad-active");break;case be.SKIP_STATE_CHANGED_:this.onEvent_(new U(G.AD_SKIP_STATE_CHANGED));break}}};l(be,"IMPRESSION_","impression"),l(be,"START_","start"),l(be,"MUTE_","mute"),l(be,"UNMUTE_","unmute"),l(be,"RESUME_","resume"),l(be,"PAUSE_","pause"),l(be,"FIRSTQUARTILE_","firstQuartile"),l(be,"MIDPOINT_","midpoint"),l(be,"THIRDQUARTILE_","thirdQuartile"),l(be,"COMPLETE_","complete"),l(be,"SKIPPED_","skip"),l(be,"BREAK_START_","breakStart"),l(be,"BREAK_END_","breakEnd"),l(be,"SKIP_STATE_CHANGED_","skipStateChanged");var Cn=be;/*! @license
539
539
  * Shaka Player
540
540
  * Copyright 2016 Google LLC
541
541
  * SPDX-License-Identifier: Apache-2.0
@@ -551,11 +551,11 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
551
551
  * Shaka Player
552
552
  * Copyright 2016 Google LLC
553
553
  * SPDX-License-Identifier: Apache-2.0
554
- */var Or=class y{constructor(e,t){l(this,"config_");l(this,"player_");l(this,"onEvent_");l(this,"video_");l(this,"playbackStarted_");l(this,"trackings_");l(this,"currentTracking_");l(this,"eventManager_");l(this,"playbackEventManager_");l(this,"trackingEventManager_");l(this,"pollTimer_");this.config_=null,this.player_=e,this.onEvent_=t,this.video_=null,this.playbackStarted_=!1,this.trackings_=new Map,this.currentTracking_=null,this.eventManager_=new ue,this.playbackEventManager_=new ue,this.trackingEventManager_=new ue,this.eventManager_.listen(this.player_,"loading",()=>{this.playbackStart_()}),this.eventManager_.listen(this.player_,"unloading",()=>{this.playbackEnd_()}),this.pollTimer_=new ae(()=>{if(this.trackings_.size){let i=this.player_.getLoadMode();if(i==dt.LoadMode.DESTROYED||i==dt.LoadMode.NOT_LOADED)return;let r=!1,s=Array.from(this.trackings_.values()),n=this.player_.seekRange();for(let a of s){if(a==this.currentTracking_)continue;let o=a.endTime||a.startTime;if(n.start-o>=1){let c=JSON.stringify(a);this.trackings_.delete(c),r=!0}}r&&this.cuepointsChanged_()}}),this.player_.getAssetUri()&&this.playbackStart_()}configure(e){this.config_=e}stop(){this.playbackEnd_()}release(){this.stop(),this.player_=null,this.eventManager_&&this.eventManager_.release(),this.playbackEventManager_&&this.playbackEventManager_.release(),this.trackingEventManager_&&this.trackingEventManager_.release(),this.pollTimer_&&(this.pollTimer_.stop(),this.pollTimer_=null)}addMetadata(e){if(!this.playbackStarted_||!y.validSchemes_.has(e.type))return;let t=e.values.find(n=>n.key=="X-AD-CREATIVE-SIGNALING");if(!t)return;let i=t.data,r;try{r=JSON.parse(window.atob(i))}catch(n){return}if(!r.payload)return;let s=[];for(let n=0;n<r.payload.length;n++){let a=r.payload[n];v.assert(typeof e.startTime=="number","startTime must not be null!");let o=e.startTime+a.start||0,c=a.duration?e.startTime+a.duration:e.endTime;if(a&&a.tracking){let d={startTime:o,endTime:c,tracking:G.createTrackingFromEvents(a.tracking),position:n+1,sequenceLength:r.payload.length};s.push(d)}}this.addTracking_(s)}addRegion(e){if(!this.playbackStarted_||!y.validSchemes_.has(e.schemeIdUri)||!e.eventNode)return;let t=I.getTextContents(e.eventNode);if(!t)return;let i;try{i=JSON.parse(t)}catch(s){return}if(!i.payload)return;let r=[];for(let s=0;s<i.payload.length;s++){let n=i.payload[s],a=e.startTime+n.start||0,o=n.duration?e.startTime+n.duration:e.endTime;if(n&&n.tracking){let c={startTime:a,endTime:o,tracking:G.createTrackingFromEvents(n.tracking),position:s+1,sequenceLength:i.payload.length};r.push(c)}}this.addTracking_(r)}addTracking_(e){if(!this.playbackStarted_||!e.length)return;if(!this.player_.isFullyLoaded()){this.playbackEventManager_.listenOnce(this.player_,"loaded",()=>{this.addTracking_(e)});return}let t=!1;for(let i of e){let r=JSON.stringify(i);this.trackings_.getOrInsert(r,i)===i&&(t=!0)}t&&this.cuepointsChanged_(),this.setupCurrentTracking_(),this.playbackEventManager_.listen(this.video_,"timeupdate",()=>this.setupCurrentTracking_()),this.pollTimer_&&this.player_.isLive()&&this.pollTimer_.tickEvery(1)}playbackStart_(){this.playbackStarted_||(this.playbackStarted_=!0,this.video_=this.player_.getMediaElement())}playbackEnd_(){this.playbackStarted_&&(this.playbackStarted_=!1,this.video_=null,this.playbackEventManager_.removeAll(),this.trackings_.clear(),this.unSetupCurrentTracking_(),this.trackingEventManager_.removeAll(),this.pollTimer_&&this.pollTimer_.stop())}setupCurrentTracking_(){if(!this.trackings_.size||this.currentTracking_||!this.video_.duration)return;let e=this.video_.currentTime;for(let i of this.trackings_.values())if(i.startTime<=e&&i.endTime&&e<=i.endTime&&!this.player_.isEnded()){this.currentTracking_=i;break}if(!this.currentTracking_)return;p.info("Found tracking",this.currentTracking_);let t=!1;if(!this.player_.isLive()){let i=this.player_.seekRange();t=i.start===this.currentTracking_.startTime&&i.end===this.currentTracking_.endTime}this.createBaseSetupTracking_(),t?this.createSingleSetupTracking_():this.createSlidingSetupTracking_()}unSetupCurrentTracking_(e=!1){this.currentTracking_&&(e||(this.sendEvent_(G.AD_SKIPPED),this.sendEvent_(G.AD_STOPPED)),this.trackingEventManager_.removeAll(),this.currentTracking_=null)}createBaseSetupTracking_(){v.assert(this.currentTracking_,"AdTrackingInfo must not be null!");let e=new Mn(this.video_,this.currentTracking_);this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",e)),this.trackingEventManager_.listen(this.player_,"error",t=>{this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",t))}),this.trackingEventManager_.listen(this.video_,"play",()=>{this.sendEvent_(G.AD_RESUMED)}),this.trackingEventManager_.listen(this.video_,"pause",()=>{this.sendEvent_(G.AD_PAUSED)}),this.trackingEventManager_.listen(this.video_,"volumechange",()=>{this.video_.muted?this.sendEvent_(G.AD_MUTED):this.sendEvent_(G.AD_VOLUME_CHANGED)})}createSingleSetupTracking_(){this.trackingEventManager_.listenOnce(this.player_,"firstquartile",()=>{this.sendEvent_(G.AD_FIRST_QUARTILE)}),this.trackingEventManager_.listenOnce(this.player_,"midpoint",()=>{this.sendEvent_(G.AD_MIDPOINT)}),this.trackingEventManager_.listenOnce(this.player_,"thirdquartile",()=>{this.sendEvent_(G.AD_THIRD_QUARTILE)}),this.trackingEventManager_.listenOnce(this.player_,"complete",()=>{this.sendEvent_(G.AD_STOPPED),this.sendEvent_(G.AD_COMPLETE),this.unSetupCurrentTracking_(!0)})}createSlidingSetupTracking_(){let e=this.currentTracking_.endTime;if(!this.player_.isLive()||!e){let s=this.player_.seekRange();e=Math.min(s.end,this.currentTracking_.endTime||1/0)}let t=e-this.currentTracking_.startTime,i=-1,r=(s,n)=>(jt.isFloatEqual(s,n)||n>s)&&i<s?(i=s,!0):!1;this.trackingEventManager_.listen(this.video_,"timeupdate",()=>{let n=(this.video_.currentTime-this.currentTracking_.startTime)/t;if(isNaN(n))return;let a=n*100;r(25,a)?this.sendEvent_(G.AD_FIRST_QUARTILE):r(50,a)?this.sendEvent_(G.AD_MIDPOINT):r(75,a)?this.sendEvent_(G.AD_THIRD_QUARTILE):(r(100,a)||a>100)&&(this.sendEvent_(G.AD_STOPPED),this.sendEvent_(G.AD_COMPLETE),this.unSetupCurrentTracking_(!0))})}sendEvent_(e,t){p.info("SVTA event",e),this.onEvent_(new U(e,t)),this.processTrackingEvent_(e)}processTrackingEvent_(e){if(this.config_.disableTrackingEvents)return;let t=this.currentTracking_&&this.currentTracking_.tracking;G.fireTrackingEvents(t,e,this.player_.getNetworkingEngine())}cuepointsChanged_(){let e=[];if(this.trackings_.size)for(let t of this.trackings_.values()){let i={start:t.startTime,end:t.endTime};!e.find(s=>i.start==s.start&&i.end==s.end)&&e.push(i)}this.sendEvent_(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",e))}static isValidRegion(e){return!(!y.validSchemes_.has(e.schemeIdUri)||!e.eventNode)}static isValidMetadata(e){return!!y.validSchemes_.has(e.type)}};Or.validSchemes_=new Set().add("urn:svta:advertising-wg:ad-id-signaling").add("urn:svta:advertising-wg:ad-creative-signaling");/*! @license
554
+ */var Nr=class y{constructor(e,t){l(this,"config_");l(this,"player_");l(this,"onEvent_");l(this,"video_");l(this,"playbackStarted_");l(this,"trackings_");l(this,"currentTracking_");l(this,"eventManager_");l(this,"playbackEventManager_");l(this,"trackingEventManager_");l(this,"pollTimer_");this.config_=null,this.player_=e,this.onEvent_=t,this.video_=null,this.playbackStarted_=!1,this.trackings_=new Map,this.currentTracking_=null,this.eventManager_=new ue,this.playbackEventManager_=new ue,this.trackingEventManager_=new ue,this.eventManager_.listen(this.player_,"loading",()=>{this.playbackStart_()}),this.eventManager_.listen(this.player_,"unloading",()=>{this.playbackEnd_()}),this.pollTimer_=new ae(()=>{if(this.trackings_.size){let i=this.player_.getLoadMode();if(i==dt.LoadMode.DESTROYED||i==dt.LoadMode.NOT_LOADED)return;let r=!1,s=Array.from(this.trackings_.values()),n=this.player_.seekRange();for(let a of s){if(a==this.currentTracking_)continue;let o=a.endTime||a.startTime;if(n.start-o>=1){let c=JSON.stringify(a);this.trackings_.delete(c),r=!0}}r&&this.cuepointsChanged_()}}),this.player_.getAssetUri()&&this.playbackStart_()}configure(e){this.config_=e}stop(){this.playbackEnd_()}release(){this.stop(),this.player_=null,this.eventManager_&&this.eventManager_.release(),this.playbackEventManager_&&this.playbackEventManager_.release(),this.trackingEventManager_&&this.trackingEventManager_.release(),this.pollTimer_&&(this.pollTimer_.stop(),this.pollTimer_=null)}addMetadata(e){if(!this.playbackStarted_||!y.validSchemes_.has(e.type))return;let t=e.values.find(n=>n.key=="X-AD-CREATIVE-SIGNALING");if(!t)return;let i=t.data,r;try{r=JSON.parse(window.atob(i))}catch(n){return}if(!r.payload)return;let s=[];for(let n=0;n<r.payload.length;n++){let a=r.payload[n];v.assert(typeof e.startTime=="number","startTime must not be null!");let o=e.startTime+a.start||0,c=a.duration?e.startTime+a.duration:e.endTime;if(a&&a.tracking){let d={startTime:o,endTime:c,tracking:G.createTrackingFromEvents(a.tracking),position:n+1,sequenceLength:r.payload.length};s.push(d)}}this.addTracking_(s)}addRegion(e){if(!this.playbackStarted_||!y.validSchemes_.has(e.schemeIdUri)||!e.eventNode)return;let t=I.getTextContents(e.eventNode);if(!t)return;let i;try{i=JSON.parse(t)}catch(s){return}if(!i.payload)return;let r=[];for(let s=0;s<i.payload.length;s++){let n=i.payload[s],a=e.startTime+n.start||0,o=n.duration?e.startTime+n.duration:e.endTime;if(n&&n.tracking){let c={startTime:a,endTime:o,tracking:G.createTrackingFromEvents(n.tracking),position:s+1,sequenceLength:i.payload.length};r.push(c)}}this.addTracking_(r)}addTracking_(e){if(!this.playbackStarted_||!e.length)return;if(!this.player_.isFullyLoaded()){this.playbackEventManager_.listenOnce(this.player_,"loaded",()=>{this.addTracking_(e)});return}let t=!1;for(let i of e){let r=JSON.stringify(i);this.trackings_.getOrInsert(r,i)===i&&(t=!0)}t&&this.cuepointsChanged_(),this.setupCurrentTracking_(),this.playbackEventManager_.listen(this.video_,"timeupdate",()=>this.setupCurrentTracking_()),this.pollTimer_&&this.player_.isLive()&&this.pollTimer_.tickEvery(1)}playbackStart_(){this.playbackStarted_||(this.playbackStarted_=!0,this.video_=this.player_.getMediaElement())}playbackEnd_(){this.playbackStarted_&&(this.playbackStarted_=!1,this.video_=null,this.playbackEventManager_.removeAll(),this.trackings_.clear(),this.unSetupCurrentTracking_(),this.trackingEventManager_.removeAll(),this.pollTimer_&&this.pollTimer_.stop())}setupCurrentTracking_(){if(!this.trackings_.size||this.currentTracking_||!this.video_.duration)return;let e=this.video_.currentTime;for(let i of this.trackings_.values())if(i.startTime<=e&&i.endTime&&e<=i.endTime&&!this.player_.isEnded()){this.currentTracking_=i;break}if(!this.currentTracking_)return;p.info("Found tracking",this.currentTracking_);let t=!1;if(!this.player_.isLive()){let i=this.player_.seekRange();t=i.start===this.currentTracking_.startTime&&i.end===this.currentTracking_.endTime}this.createBaseSetupTracking_(),t?this.createSingleSetupTracking_():this.createSlidingSetupTracking_()}unSetupCurrentTracking_(e=!1){this.currentTracking_&&(e||(this.sendEvent_(G.AD_SKIPPED),this.sendEvent_(G.AD_STOPPED)),this.trackingEventManager_.removeAll(),this.currentTracking_=null)}createBaseSetupTracking_(){v.assert(this.currentTracking_,"AdTrackingInfo must not be null!");let e=new Mn(this.video_,this.currentTracking_);this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",e)),this.trackingEventManager_.listen(this.player_,"error",t=>{this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",t))}),this.trackingEventManager_.listen(this.video_,"play",()=>{this.sendEvent_(G.AD_RESUMED)}),this.trackingEventManager_.listen(this.video_,"pause",()=>{this.sendEvent_(G.AD_PAUSED)}),this.trackingEventManager_.listen(this.video_,"volumechange",()=>{this.video_.muted?this.sendEvent_(G.AD_MUTED):this.sendEvent_(G.AD_VOLUME_CHANGED)})}createSingleSetupTracking_(){this.trackingEventManager_.listenOnce(this.player_,"firstquartile",()=>{this.sendEvent_(G.AD_FIRST_QUARTILE)}),this.trackingEventManager_.listenOnce(this.player_,"midpoint",()=>{this.sendEvent_(G.AD_MIDPOINT)}),this.trackingEventManager_.listenOnce(this.player_,"thirdquartile",()=>{this.sendEvent_(G.AD_THIRD_QUARTILE)}),this.trackingEventManager_.listenOnce(this.player_,"complete",()=>{this.sendEvent_(G.AD_STOPPED),this.sendEvent_(G.AD_COMPLETE),this.unSetupCurrentTracking_(!0)})}createSlidingSetupTracking_(){let e=this.currentTracking_.endTime;if(!this.player_.isLive()||!e){let s=this.player_.seekRange();e=Math.min(s.end,this.currentTracking_.endTime||1/0)}let t=e-this.currentTracking_.startTime,i=-1,r=(s,n)=>(jt.isFloatEqual(s,n)||n>s)&&i<s?(i=s,!0):!1;this.trackingEventManager_.listen(this.video_,"timeupdate",()=>{let n=(this.video_.currentTime-this.currentTracking_.startTime)/t;if(isNaN(n))return;let a=n*100;r(25,a)?this.sendEvent_(G.AD_FIRST_QUARTILE):r(50,a)?this.sendEvent_(G.AD_MIDPOINT):r(75,a)?this.sendEvent_(G.AD_THIRD_QUARTILE):(r(100,a)||a>100)&&(this.sendEvent_(G.AD_STOPPED),this.sendEvent_(G.AD_COMPLETE),this.unSetupCurrentTracking_(!0))})}sendEvent_(e,t){p.info("SVTA event",e),this.onEvent_(new U(e,t)),this.processTrackingEvent_(e)}processTrackingEvent_(e){if(this.config_.disableTrackingEvents)return;let t=this.currentTracking_&&this.currentTracking_.tracking;G.fireTrackingEvents(t,e,this.player_.getNetworkingEngine())}cuepointsChanged_(){let e=[];if(this.trackings_.size)for(let t of this.trackings_.values()){let i={start:t.startTime,end:t.endTime};!e.find(s=>i.start==s.start&&i.end==s.end)&&e.push(i)}this.sendEvent_(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",e))}static isValidRegion(e){return!(!y.validSchemes_.has(e.schemeIdUri)||!e.eventNode)}static isValidMetadata(e){return!!y.validSchemes_.has(e.type)}};Nr.validSchemes_=new Set().add("urn:svta:advertising-wg:ad-id-signaling").add("urn:svta:advertising-wg:ad-creative-signaling");/*! @license
555
555
  * Shaka Player
556
556
  * Copyright 2016 Google LLC
557
557
  * SPDX-License-Identifier: Apache-2.0
558
- */var Rn=class extends Le{constructor(t){super();l(this,"player_");l(this,"interstitialAdManager_");l(this,"csAdManager_");l(this,"mtAdManager_");l(this,"ssAdManager_");l(this,"svtaAdManager_");l(this,"stats_");l(this,"locale_");l(this,"config_");l(this,"currentAd_");l(this,"clientSideAdContainer_");l(this,"serverSideAdContainer_");this.player_=t,this.interstitialAdManager_=null,this.csAdManager_=null,this.mtAdManager_=null,this.ssAdManager_=null,this.svtaAdManager_=null,this.stats_=new Ls,this.locale_=navigator.language,this.config_=null,this.currentAd_=null,this.clientSideAdContainer_=null,this.serverSideAdContainer_=null}setLocale(t){this.locale_=t}setContainers(t,i){this.clientSideAdContainer_=t,this.serverSideAdContainer_=i}configure(t){this.config_=t,this.interstitialAdManager_&&this.interstitialAdManager_.configure(this.config_),this.csAdManager_&&this.csAdManager_.configure(this.config_),this.ssAdManager_&&this.ssAdManager_.configure(this.config_),this.svtaAdManager_&&this.svtaAdManager_.configure(this.config_),this.mtAdManager_&&this.mtAdManager_.configure(this.config_)}release(){this.csAdManager_&&(this.csAdManager_.release(),this.csAdManager_=null),this.ssAdManager_&&(this.ssAdManager_.release(),this.ssAdManager_=null),this.mtAdManager_&&(this.mtAdManager_.release(),this.mtAdManager_=null),this.interstitialAdManager_&&(this.interstitialAdManager_.release(),this.interstitialAdManager_=null),this.svtaAdManager_&&(this.svtaAdManager_.release(),this.svtaAdManager_=null),super.release()}onAssetUnload(){this.csAdManager_&&(this.csAdManager_.release(),this.csAdManager_=null),this.ssAdManager_&&this.ssAdManager_.stop(),this.mtAdManager_&&this.mtAdManager_.stop(),this.interstitialAdManager_&&this.interstitialAdManager_.stop(),this.svtaAdManager_&&this.svtaAdManager_.stop(),this.currentAd_&&(this.processAndDispatchEvent_(new U(G.AD_STOPPED)),this.processAndDispatchEvent_(new U(G.AD_CONTENT_ATTACH_REQUESTED))),this.stats_=new Ls}initClientSide_(t){if(!window.google||!google.ima||!google.ima.AdsLoader)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.CS_IMA_SDK_MISSING);if(this.csAdManager_&&this.csAdManager_.release(),!this.clientSideAdContainer_)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.CS_AD_CONTAINER_MISSING);let i=this.player_.getMediaElement();v.assert(i,"Video must not be null!"),this.csAdManager_=new Sn(this.clientSideAdContainer_,i,this.locale_,t,r=>this.processAndDispatchEvent_(r)),v.assert(this.config_,"Config must not be null!"),this.csAdManager_.configure(this.config_)}requestClientSideAds(t,i){this.csAdManager_||this.initClientSide_(i),this.csAdManager_.requestAds(t)}updateClientSideAdsRenderingSettings(t){this.csAdManager_||this.initClientSide_(t),this.csAdManager_.updateAdsRenderingSettings(t)}initServerSide_(){if(!window.google||!google.ima||!google.ima.dai)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.SS_IMA_SDK_MISSING);if(this.ssAdManager_&&this.ssAdManager_.release(),!this.serverSideAdContainer_)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.SS_AD_CONTAINER_MISSING);let t=this.player_.getMediaElement();v.assert(t,"Video must not be null!"),this.ssAdManager_=new wn(this.serverSideAdContainer_,t,this.locale_,i=>this.processAndDispatchEvent_(i)),v.assert(this.config_,"Config must not be null!"),this.ssAdManager_.configure(this.config_)}requestServerSideStream(t,i=""){this.ssAdManager_||this.initServerSide_(),t.adTagParameters||(t.adTagParameters={});let r=t.adTagParameters;return(r.mpt||r.mpv)&&p.alwaysWarn('You have attempted to set "mpt" and/or "mpv" parameters of the ad tag. Please note that those parameters are used for Shaka adoption tracking and will be overridden.'),t.adTagParameters.mpt="shaka-player",t.adTagParameters.mpv=dt.version,this.ssAdManager_.streamRequest(t,i)}replaceServerSideAdTagParameters(t){this.ssAdManager_||this.initServerSide_(),(t.mpt||t.mpv)&&p.alwaysWarn('You have attempted to set "mpt" and/or "mpv" parameters of the ad tag. Please note that those parameters are used for Shaka adoption tracking and will be overridden.'),t.mpt="Shaka Player",t.mpv=dt.version,this.ssAdManager_.replaceAdTagParameters(t)}initMediaTailor_(){this.mtAdManager_&&this.mtAdManager_.release();let t=this.serverSideAdContainer_;t||p.warning("Init Media Tailor without a container causes overlays to not be displayed.");let i=this.player_.getMediaElement();v.assert(i,"Video must not be null!");let r=this.player_.getNetworkingEngine();v.assert(r,"There should be a net engine."),this.mtAdManager_=new Cn(t,r,i,s=>this.processAndDispatchEvent_(s)),v.assert(this.config_,"Config must not be null!"),this.mtAdManager_.configure(this.config_)}requestMediaTailorStream(t,i,r=""){return this.mtAdManager_||this.initMediaTailor_(),this.mtAdManager_.streamRequest(t,i,r)}addMediaTailorTrackingUrl(t){this.mtAdManager_||this.initMediaTailor_(),this.mtAdManager_.addTrackingUrl(t)}initInterstitial_(){let t=this.clientSideAdContainer_;t||p.info("Initializing interstitials without ad container"),this.interstitialAdManager_&&this.interstitialAdManager_.release(),this.interstitialAdManager_=new An(t,this.player_,i=>this.processAndDispatchEvent_(i)),v.assert(this.config_,"Config must not be null!"),this.interstitialAdManager_.configure(this.config_)}addCustomInterstitial(t){this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.addInterstitials([t])}addAdUrlInterstitial(t){return this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.addAdUrlInterstitial(t)}getInterstitialPlayer(){return this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.getPlayer()}initSVTA_(){this.svtaAdManager_&&this.svtaAdManager_.release(),this.svtaAdManager_=new Or(this.player_,t=>this.processAndDispatchEvent_(t)),v.assert(this.config_,"Config must not be null!"),this.svtaAdManager_.configure(this.config_)}getCuePoints(){let t=[];return this.ssAdManager_&&(t=t.concat(this.ssAdManager_.getCuePoints())),this.mtAdManager_&&(t=t.concat(this.mtAdManager_.getCuePoints())),t}getStats(){return this.stats_.getBlob()}onManifestUpdated(t){this.mtAdManager_&&this.mtAdManager_.onManifestUpdated(t)}onHlsTimedMetadata(t,i){this.ssAdManager_&&this.ssAdManager_.onTimedMetadata("ID3",t.data,i)}onCueMetadataChange(t){this.ssAdManager_&&this.ssAdManager_.onCueMetadataChange(t)}async onHLSMetadata(t){if(t.type=="com.apple.quicktime.HLS"){if(this.config_&&this.config_.disableHLSInterstitial)return;this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_&&await this.interstitialAdManager_.addMetadata(t)}else if(t.type=="com.apple.hls.preload"){if(this.config_&&this.config_.disableHLSInterstitial)return;this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_&&this.interstitialAdManager_.addPreloadMetadata(t)}else Or.isValidMetadata(t)&&(this.svtaAdManager_||this.initSVTA_(),this.svtaAdManager_.addMetadata(t))}onDASHMetadata(t){if(t.schemeIdUri=="urn:google:dai:2018"){if(this.ssAdManager_){let r=t.schemeIdUri,s=t.eventNode?t.eventNode.attributes.messageData:null,n=t.startTime;this.ssAdManager_.onTimedMetadata(r,s,n)}}else if(Ns.isInterstitialRegion(t)){if(this.config_&&this.config_.disableDASHInterstitial)return;if(this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_){let r=Ns.parseRegion(t);r&&this.interstitialAdManager_.addInterstitials([r])}}else Or.isValidRegion(t)&&(this.svtaAdManager_||this.initSVTA_(),this.svtaAdManager_.addRegion(t))}getCurrentAd(){return this.currentAd_}processAndDispatchEvent_(t){if(t&&t.type)switch(t.type){case G.ADS_LOADED:{let i=t.loadTime;this.stats_.addLoadTime(i);break}case G.AD_STARTED:{this.stats_.incrementStarted(),this.currentAd_=t.ad,this.currentAd_&&!this.currentAd_.isLinear()&&this.stats_.incrementOverlayAds();break}case G.AD_STOPPED:this.currentAd_=null;break;case G.AD_COMPLETE:this.stats_.incrementPlayedCompletely();break;case G.AD_SKIPPED:this.stats_.incrementSkipped();break;case G.AD_ERROR:this.stats_.incrementErrors();break}this.dispatchEvent(t)}};dt.setAdManagerFactory(y=>new Rn(y));/*! @license
558
+ */var Rn=class extends Le{constructor(t){super();l(this,"player_");l(this,"interstitialAdManager_");l(this,"csAdManager_");l(this,"mtAdManager_");l(this,"ssAdManager_");l(this,"svtaAdManager_");l(this,"stats_");l(this,"locale_");l(this,"config_");l(this,"currentAd_");l(this,"clientSideAdContainer_");l(this,"serverSideAdContainer_");this.player_=t,this.interstitialAdManager_=null,this.csAdManager_=null,this.mtAdManager_=null,this.ssAdManager_=null,this.svtaAdManager_=null,this.stats_=new Ls,this.locale_=navigator.language,this.config_=null,this.currentAd_=null,this.clientSideAdContainer_=null,this.serverSideAdContainer_=null}setLocale(t){this.locale_=t}setContainers(t,i){this.clientSideAdContainer_=t,this.serverSideAdContainer_=i}configure(t){this.config_=t,this.interstitialAdManager_&&this.interstitialAdManager_.configure(this.config_),this.csAdManager_&&this.csAdManager_.configure(this.config_),this.ssAdManager_&&this.ssAdManager_.configure(this.config_),this.svtaAdManager_&&this.svtaAdManager_.configure(this.config_),this.mtAdManager_&&this.mtAdManager_.configure(this.config_)}release(){this.csAdManager_&&(this.csAdManager_.release(),this.csAdManager_=null),this.ssAdManager_&&(this.ssAdManager_.release(),this.ssAdManager_=null),this.mtAdManager_&&(this.mtAdManager_.release(),this.mtAdManager_=null),this.interstitialAdManager_&&(this.interstitialAdManager_.release(),this.interstitialAdManager_=null),this.svtaAdManager_&&(this.svtaAdManager_.release(),this.svtaAdManager_=null),super.release()}onAssetUnload(){this.csAdManager_&&(this.csAdManager_.release(),this.csAdManager_=null),this.ssAdManager_&&this.ssAdManager_.stop(),this.mtAdManager_&&this.mtAdManager_.stop(),this.interstitialAdManager_&&this.interstitialAdManager_.stop(),this.svtaAdManager_&&this.svtaAdManager_.stop(),this.currentAd_&&(this.processAndDispatchEvent_(new U(G.AD_STOPPED)),this.processAndDispatchEvent_(new U(G.AD_CONTENT_ATTACH_REQUESTED))),this.stats_=new Ls}initClientSide_(t){if(!window.google||!google.ima||!google.ima.AdsLoader)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.CS_IMA_SDK_MISSING);if(this.csAdManager_&&this.csAdManager_.release(),!this.clientSideAdContainer_)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.CS_AD_CONTAINER_MISSING);let i=this.player_.getMediaElement();v.assert(i,"Video must not be null!"),this.csAdManager_=new Sn(this.clientSideAdContainer_,i,this.locale_,t,r=>this.processAndDispatchEvent_(r)),v.assert(this.config_,"Config must not be null!"),this.csAdManager_.configure(this.config_)}requestClientSideAds(t,i){this.csAdManager_||this.initClientSide_(i),this.csAdManager_.requestAds(t)}updateClientSideAdsRenderingSettings(t){this.csAdManager_||this.initClientSide_(t),this.csAdManager_.updateAdsRenderingSettings(t)}initServerSide_(){if(!window.google||!google.ima||!google.ima.dai)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.SS_IMA_SDK_MISSING);if(this.ssAdManager_&&this.ssAdManager_.release(),!this.serverSideAdContainer_)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.SS_AD_CONTAINER_MISSING);let t=this.player_.getMediaElement();v.assert(t,"Video must not be null!"),this.ssAdManager_=new wn(this.serverSideAdContainer_,t,this.locale_,i=>this.processAndDispatchEvent_(i)),v.assert(this.config_,"Config must not be null!"),this.ssAdManager_.configure(this.config_)}requestServerSideStream(t,i=""){this.ssAdManager_||this.initServerSide_(),t.adTagParameters||(t.adTagParameters={});let r=t.adTagParameters;return(r.mpt||r.mpv)&&p.alwaysWarn('You have attempted to set "mpt" and/or "mpv" parameters of the ad tag. Please note that those parameters are used for Shaka adoption tracking and will be overridden.'),t.adTagParameters.mpt="shaka-player",t.adTagParameters.mpv=dt.version,this.ssAdManager_.streamRequest(t,i)}replaceServerSideAdTagParameters(t){this.ssAdManager_||this.initServerSide_(),(t.mpt||t.mpv)&&p.alwaysWarn('You have attempted to set "mpt" and/or "mpv" parameters of the ad tag. Please note that those parameters are used for Shaka adoption tracking and will be overridden.'),t.mpt="Shaka Player",t.mpv=dt.version,this.ssAdManager_.replaceAdTagParameters(t)}initMediaTailor_(){this.mtAdManager_&&this.mtAdManager_.release();let t=this.serverSideAdContainer_;t||p.warning("Init Media Tailor without a container causes overlays to not be displayed.");let i=this.player_.getMediaElement();v.assert(i,"Video must not be null!");let r=this.player_.getNetworkingEngine();v.assert(r,"There should be a net engine."),this.mtAdManager_=new Cn(t,r,i,s=>this.processAndDispatchEvent_(s)),v.assert(this.config_,"Config must not be null!"),this.mtAdManager_.configure(this.config_)}requestMediaTailorStream(t,i,r=""){return this.mtAdManager_||this.initMediaTailor_(),this.mtAdManager_.streamRequest(t,i,r)}addMediaTailorTrackingUrl(t){this.mtAdManager_||this.initMediaTailor_(),this.mtAdManager_.addTrackingUrl(t)}initInterstitial_(){let t=this.clientSideAdContainer_;t||p.info("Initializing interstitials without ad container"),this.interstitialAdManager_&&this.interstitialAdManager_.release(),this.interstitialAdManager_=new An(t,this.player_,i=>this.processAndDispatchEvent_(i)),v.assert(this.config_,"Config must not be null!"),this.interstitialAdManager_.configure(this.config_)}addCustomInterstitial(t){this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.addInterstitials([t])}addAdUrlInterstitial(t){return this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.addAdUrlInterstitial(t)}getInterstitialPlayer(){return this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.getPlayer()}initSVTA_(){this.svtaAdManager_&&this.svtaAdManager_.release(),this.svtaAdManager_=new Nr(this.player_,t=>this.processAndDispatchEvent_(t)),v.assert(this.config_,"Config must not be null!"),this.svtaAdManager_.configure(this.config_)}getCuePoints(){let t=[];return this.ssAdManager_&&(t=t.concat(this.ssAdManager_.getCuePoints())),this.mtAdManager_&&(t=t.concat(this.mtAdManager_.getCuePoints())),t}getStats(){return this.stats_.getBlob()}onManifestUpdated(t){this.mtAdManager_&&this.mtAdManager_.onManifestUpdated(t)}onHlsTimedMetadata(t,i){this.ssAdManager_&&this.ssAdManager_.onTimedMetadata("ID3",t.data,i)}onCueMetadataChange(t){this.ssAdManager_&&this.ssAdManager_.onCueMetadataChange(t)}async onHLSMetadata(t){if(t.type=="com.apple.quicktime.HLS"){if(this.config_&&this.config_.disableHLSInterstitial)return;this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_&&await this.interstitialAdManager_.addMetadata(t)}else if(t.type=="com.apple.hls.preload"){if(this.config_&&this.config_.disableHLSInterstitial)return;this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_&&this.interstitialAdManager_.addPreloadMetadata(t)}else Nr.isValidMetadata(t)&&(this.svtaAdManager_||this.initSVTA_(),this.svtaAdManager_.addMetadata(t))}onDASHMetadata(t){if(t.schemeIdUri=="urn:google:dai:2018"){if(this.ssAdManager_){let r=t.schemeIdUri,s=t.eventNode?t.eventNode.attributes.messageData:null,n=t.startTime;this.ssAdManager_.onTimedMetadata(r,s,n)}}else if(Os.isInterstitialRegion(t)){if(this.config_&&this.config_.disableDASHInterstitial)return;if(this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_){let r=Os.parseRegion(t);r&&this.interstitialAdManager_.addInterstitials([r])}}else Nr.isValidRegion(t)&&(this.svtaAdManager_||this.initSVTA_(),this.svtaAdManager_.addRegion(t))}getCurrentAd(){return this.currentAd_}processAndDispatchEvent_(t){if(t&&t.type)switch(t.type){case G.ADS_LOADED:{let i=t.loadTime;this.stats_.addLoadTime(i);break}case G.AD_STARTED:{this.stats_.incrementStarted(),this.currentAd_=t.ad,this.currentAd_&&!this.currentAd_.isLinear()&&this.stats_.incrementOverlayAds();break}case G.AD_STOPPED:this.currentAd_=null;break;case G.AD_COMPLETE:this.stats_.incrementPlayedCompletely();break;case G.AD_SKIPPED:this.stats_.incrementSkipped();break;case G.AD_ERROR:this.stats_.incrementErrors();break}this.dispatchEvent(t)}};dt.setAdManagerFactory(y=>new Rn(y));/*! @license
559
559
  * Shaka Player
560
560
  * Copyright 2016 Google LLC
561
561
  * SPDX-License-Identifier: Apache-2.0
@@ -575,7 +575,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
575
575
  * Shaka Player
576
576
  * Copyright 2016 Google LLC
577
577
  * SPDX-License-Identifier: Apache-2.0
578
- */var at=class at{constructor(){l(this,"psshToInitData_");this.psshToInitData_=new Map}release(){this.psshToInitData_.clear()}parseFromAdaptationSet(e,t,i){let r=this.parseElements_(e),s=null,n=[],a=[],o=null,c=new Set(r.map(m=>m.keyId));c.delete(null);let d="cenc";if(c.size>1)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_CONFLICTING_KEY_IDS);if(!t){let m=r.filter(g=>g.schemeUri==at.Aes128Protection_);if(m.length>1)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_CONFLICTING_AES_128);m.length&&(o=at.parseAes128_(m[0]));let f=r.find(g=>g.schemeUri==at.MP4Protection_);f&&f.encryptionScheme&&(d=f.encryptionScheme),a=r.filter(g=>g.schemeUri==at.MP4Protection_?(v.assert(!g.init||g.init.length,"Init data must be null or non-empty."),s=g.init||s,!1):g.schemeUri!=at.Aes128Protection_),a.length&&(n=at.convertElements_(s,d,a,i,c),n.length==0&&(n=[R.createDrmInfo("",d,s)]))}if(r.length&&!o&&(t||!a.length)){n=[];for(let m of Object.values(i))if(!de.isClearKeySystem(m)){let f=R.createDrmInfo(m,d,s);n.push(f)}}let u=Array.from(c)[0]||null;if(u)for(let m of n)for(let f of m.initData)f.keyId=u;return{defaultKeyId:u,defaultInit:s,drmInfos:n,aes128Info:o,firstRepresentation:!0}}parseFromRepresentation(e,t,i,r){let s=this.parseFromAdaptationSet(e,i,r);if(t.firstRepresentation){let n=t.drmInfos.length==1&&!t.drmInfos[0].keySystem,a=t.drmInfos.length==0,o=s.drmInfos.length==0;(a||n&&!o)&&(t.drmInfos=s.drmInfos),t.firstRepresentation=!1}else if(s.drmInfos.length>0&&(t.drmInfos=t.drmInfos.filter(n=>s.drmInfos.some(a=>a.keySystem==n.keySystem)),t.drmInfos.length==0))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_COMMON_KEY_SYSTEM);return s.defaultKeyId||t.defaultKeyId}static getFairPlayLicenseUrl(e){if(de.isMediaKeysPolyfilled("apple"))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED);let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let i=I.getTextContents(t);if(i)return i}return""}static getWidevineLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let r=I.getTextContents(t);if(r)return r}let i=I.findChildNS(e.node,"urn:microsoft","laurl");return i&&q.htmlUnescape(i.attributes.licenseUrl)||""}static getClearKeyLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let r=I.getTextContents(t);if(r)return r}let i=I.findChildNS(e.node,at.ClearKeyNamespaceUri_,"Laurl");if(i&&i.attributes.Lic_type==="EME-1.0"&&i){let r=I.getTextContents(i);if(r)return r}return""}static getPlayReadyLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let s=I.getTextContents(t);if(s)return s}let i=I.findChildNS(e.node,"urn:microsoft:playready","pro");if(i&&I.getTextContents(i))return Ri.getLicenseUrl(i);let r=I.findChildNS(e.node,at.CencNamespaceUri_,"pssh");if(r){let s=I.getTextContents(r);if(s){let n=ne.fromBase64(s);return Ri.getLicenseUrlFromPssh(n)}}return""}static getInitDataFromPro_(e){let t=I.findChildNS(e.node,"urn:microsoft:playready","pro");if(!t||!I.getTextContents(t))return null;let i=I.getTextContents(t),r=ne.fromBase64(i),s=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),n=new Set;return[{initData:ei.createPssh(r,s,n,0),initDataType:"cenc",keyId:e.keyId}]}static getInitDataClearKey_(e,t){if(t.size==0)return null;let i=new Uint8Array([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75]),r=new Uint8Array([]);return[{initData:ei.createPssh(r,i,t,1),initDataType:"cenc",keyId:e.keyId}]}static convertElements_(e,t,i,r,s){let n=at.licenseUrlParsers_,a=[];for(let o of i){let c=r[o.schemeUri];if(c){v.assert(!o.init||o.init.length,"Init data must be null or non-empty.");let d=at.getInitDataFromPro_(o),u=null;o.schemeUri===at.ClearKeySchemeUri_&&(u=at.getInitDataClearKey_(o,s));let m=o.init||e||d||u,f=R.createDrmInfo(c,t,m),g=n.get(c);g&&(f.licenseServerUri=g(o)),f.serverCertificateUri=at.getServerCertificateUri(o),a.push(f)}}return a}static getServerCertificateUri(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Certurl");if(t){let i=I.getTextContents(t);if(i)return i}return""}parseElements_(e){let t=[];for(let i of e){let r=this.parseElement_(i);r&&t.push(r)}return t}parseElement_(e){let t=at.CencNamespaceUri_,i=e.attributes.schemeIdUri,r=I.getAttributeNS(e,t,"default_KID"),s=I.findChildrenNS(e,t,"pssh").map(I.getContents),n=e.attributes.value;if(!i)return p.error("Missing required schemeIdUri attribute on","ContentProtection element",e),null;if(i=i.toLowerCase(),r&&(r=r.replace(/-/g,"").toLowerCase(),r.includes(" ")))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_MULTIPLE_KEY_IDS_NOT_SUPPORTED);let a=[];try{a=s.map(o=>({initDataType:"cenc",initData:this.psshToInitData_.getOrInsertComputed(o,()=>ne.fromBase64(o)),keyId:null}))}catch(o){throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_PSSH_BAD_ENCODING)}return{node:e,schemeUri:i,keyId:r,init:a.length>0?a:null,encryptionScheme:n}}static parseAes128_(e){if(!window.crypto||!window.crypto.subtle)throw p.alwaysWarn("Web Crypto API is not available to decrypt AES-128. (Web Crypto only exists in secure origins like https)"),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_WEB_CRYPTO_API);let t="urn:mpeg:dash:schema:sea:2012",i=I.findChildNS(e.node,t,"SegmentEncryption");if(!i)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);if(i.attributes.schemeIdUri!="urn:mpeg:dash:sea:aes128-cbc:2013")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let n=I.findChildNS(e.node,t,"CryptoPeriod");if(!n)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let a=n.attributes.IV,o=q.htmlUnescape(n.attributes.keyUriTemplate);if(!a||!o)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let c=ne.fromHex(a.substr(2));if(c.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_IV_LENGTH);return{keyUri:o,iv:c}}};l(at,"MP4Protection_","urn:mpeg:dash:mp4protection:2011"),l(at,"Aes128Protection_","urn:mpeg:dash:sea:2012"),l(at,"CencNamespaceUri_","urn:mpeg:cenc:2013"),l(at,"ClearKeyNamespaceUri_","http://dashif.org/guidelines/clearKey"),l(at,"ClearKeySchemeUri_","urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e"),l(at,"DashIfNamespaceUri_","https://dashif.org/CPS");var vi=at;vi.licenseUrlParsers_=new Map().set("com.apple.fps",vi.getFairPlayLicenseUrl).set("com.widevine.alpha",vi.getWidevineLicenseUrl).set("com.microsoft.playready",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.recommendation",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.software",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.hardware",vi.getPlayReadyLicenseUrl).set("org.w3.clearkey",vi.getClearKeyLicenseUrl);/*! @license
578
+ */var at=class at{constructor(){l(this,"psshToInitData_");this.psshToInitData_=new Map}release(){this.psshToInitData_.clear()}parseFromAdaptationSet(e,t,i){let r=this.parseElements_(e),s=null,n=[],a=[],o=null,c=new Set(r.map(m=>m.keyId));c.delete(null);let d="cenc";if(c.size>1)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_CONFLICTING_KEY_IDS);if(!t){let m=r.filter(g=>g.schemeUri==at.Aes128Protection_);if(m.length>1)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_CONFLICTING_AES_128);m.length&&(o=at.parseAes128_(m[0]));let f=r.find(g=>g.schemeUri==at.MP4Protection_);f&&f.encryptionScheme&&(d=f.encryptionScheme),a=r.filter(g=>g.schemeUri==at.MP4Protection_?(v.assert(!g.init||g.init.length,"Init data must be null or non-empty."),s=g.init||s,!1):g.schemeUri!=at.Aes128Protection_),a.length&&(n=at.convertElements_(s,d,a,i,c),n.length==0&&(n=[R.createDrmInfo("",d,s)]))}if(r.length&&!o&&(t||!a.length)){n=[];for(let m of Object.values(i))if(!de.isClearKeySystem(m)){let f=R.createDrmInfo(m,d,s);n.push(f)}}let u=Array.from(c)[0]||null;if(u)for(let m of n)for(let f of m.initData)f.keyId=u;return{defaultKeyId:u,defaultInit:s,drmInfos:n,aes128Info:o,firstRepresentation:!0}}parseFromRepresentation(e,t,i,r){let s=this.parseFromAdaptationSet(e,i,r);if(t.firstRepresentation){let n=t.drmInfos.length==1&&!t.drmInfos[0].keySystem,a=t.drmInfos.length==0,o=s.drmInfos.length==0;(a||n&&!o)&&(t.drmInfos=s.drmInfos),t.firstRepresentation=!1}else if(s.drmInfos.length>0&&(t.drmInfos=t.drmInfos.filter(n=>s.drmInfos.some(a=>a.keySystem==n.keySystem)),t.drmInfos.length==0))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_COMMON_KEY_SYSTEM);return s.defaultKeyId||t.defaultKeyId}static getFairPlayLicenseUrl(e){if(de.isMediaKeysPolyfilled("apple"))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED);let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let i=I.getTextContents(t);if(i)return i}return""}static getWidevineLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let r=I.getTextContents(t);if(r)return r}let i=I.findChildNS(e.node,"urn:microsoft","laurl");return i&&q.htmlUnescape(i.attributes.licenseUrl)||""}static getClearKeyLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let r=I.getTextContents(t);if(r)return r}let i=I.findChildNS(e.node,at.ClearKeyNamespaceUri_,"Laurl");if(i&&i.attributes.Lic_type==="EME-1.0"&&i){let r=I.getTextContents(i);if(r)return r}return""}static getPlayReadyLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let s=I.getTextContents(t);if(s)return s}let i=I.findChildNS(e.node,"urn:microsoft:playready","pro");if(i&&I.getTextContents(i))return Ri.getLicenseUrl(i);let r=I.findChildNS(e.node,at.CencNamespaceUri_,"pssh");if(r){let s=I.getTextContents(r);if(s){let n=ne.fromBase64(s);return Ri.getLicenseUrlFromPssh(n)}}return""}static getInitDataFromPro_(e){let t=I.findChildNS(e.node,"urn:microsoft:playready","pro");if(!t||!I.getTextContents(t))return null;let i=I.getTextContents(t),r=ne.fromBase64(i),s=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),n=new Set;return[{initData:ti.createPssh(r,s,n,0),initDataType:"cenc",keyId:e.keyId}]}static getInitDataClearKey_(e,t){if(t.size==0)return null;let i=new Uint8Array([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75]),r=new Uint8Array([]);return[{initData:ti.createPssh(r,i,t,1),initDataType:"cenc",keyId:e.keyId}]}static convertElements_(e,t,i,r,s){let n=at.licenseUrlParsers_,a=[];for(let o of i){let c=r[o.schemeUri];if(c){v.assert(!o.init||o.init.length,"Init data must be null or non-empty.");let d=at.getInitDataFromPro_(o),u=null;o.schemeUri===at.ClearKeySchemeUri_&&(u=at.getInitDataClearKey_(o,s));let m=o.init||e||d||u,f=R.createDrmInfo(c,t,m),g=n.get(c);g&&(f.licenseServerUri=g(o)),f.serverCertificateUri=at.getServerCertificateUri(o),a.push(f)}}return a}static getServerCertificateUri(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Certurl");if(t){let i=I.getTextContents(t);if(i)return i}return""}parseElements_(e){let t=[];for(let i of e){let r=this.parseElement_(i);r&&t.push(r)}return t}parseElement_(e){let t=at.CencNamespaceUri_,i=e.attributes.schemeIdUri,r=I.getAttributeNS(e,t,"default_KID"),s=I.findChildrenNS(e,t,"pssh").map(I.getContents),n=e.attributes.value;if(!i)return p.error("Missing required schemeIdUri attribute on","ContentProtection element",e),null;if(i=i.toLowerCase(),r&&(r=r.replace(/-/g,"").toLowerCase(),r.includes(" ")))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_MULTIPLE_KEY_IDS_NOT_SUPPORTED);let a=[];try{a=s.map(o=>({initDataType:"cenc",initData:this.psshToInitData_.getOrInsertComputed(o,()=>ne.fromBase64(o)),keyId:null}))}catch(o){throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_PSSH_BAD_ENCODING)}return{node:e,schemeUri:i,keyId:r,init:a.length>0?a:null,encryptionScheme:n}}static parseAes128_(e){if(!window.crypto||!window.crypto.subtle)throw p.alwaysWarn("Web Crypto API is not available to decrypt AES-128. (Web Crypto only exists in secure origins like https)"),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_WEB_CRYPTO_API);let t="urn:mpeg:dash:schema:sea:2012",i=I.findChildNS(e.node,t,"SegmentEncryption");if(!i)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);if(i.attributes.schemeIdUri!="urn:mpeg:dash:sea:aes128-cbc:2013")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let n=I.findChildNS(e.node,t,"CryptoPeriod");if(!n)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let a=n.attributes.IV,o=q.htmlUnescape(n.attributes.keyUriTemplate);if(!a||!o)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let c=ne.fromHex(a.substr(2));if(c.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_IV_LENGTH);return{keyUri:o,iv:c}}};l(at,"MP4Protection_","urn:mpeg:dash:mp4protection:2011"),l(at,"Aes128Protection_","urn:mpeg:dash:sea:2012"),l(at,"CencNamespaceUri_","urn:mpeg:cenc:2013"),l(at,"ClearKeyNamespaceUri_","http://dashif.org/guidelines/clearKey"),l(at,"ClearKeySchemeUri_","urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e"),l(at,"DashIfNamespaceUri_","https://dashif.org/CPS");var vi=at;vi.licenseUrlParsers_=new Map().set("com.apple.fps",vi.getFairPlayLicenseUrl).set("com.widevine.alpha",vi.getWidevineLicenseUrl).set("com.microsoft.playready",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.recommendation",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.software",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.hardware",vi.getPlayReadyLicenseUrl).set("org.w3.clearkey",vi.getClearKeyLicenseUrl);/*! @license
579
579
  * Shaka Player
580
580
  * Copyright 2016 Google LLC
581
581
  * SPDX-License-Identifier: Apache-2.0
@@ -595,7 +595,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
595
595
  * Shaka Player
596
596
  * Copyright 2016 Google LLC
597
597
  * SPDX-License-Identifier: Apache-2.0
598
- */var Hi=class y{static createInitSegment(e,t,i){let r=Me.inheritChild(e,t,"Initialization");if(!r)return null;let s=e.representation.getBaseUris(),n=r.attributes.sourceURL;n&&(s=fe.resolveUris(s,[q.htmlUnescape(n)],e.urlParams()));let a=0,o=null,c=I.parseAttr(r,"range",I.parseRange);c&&(a=c.start,o=c.end);let d=()=>s,u=y.createQualityInfo(e),m=e.adaptationSet.encrypted,f=new Tt(d,a,o,u,null,null,i,m);return f.codecs=e.representation.codecs,f.mimeType=e.representation.mimeType,e.periodInfo&&!e.periodInfo.isLastPeriod&&(f.boundaryEnd=e.periodInfo.start+e.periodInfo.duration),f}static createStreamInfo(e,t,i){v.assert(e.representation.segmentBase,"Should only be called with SegmentBase");let r=Number(Me.inheritAttribute(e,y.fromInheritance_,"presentationTimeOffset"))||0,s=Me.inheritAttribute(e,y.fromInheritance_,"timescale"),n=1;s&&(n=I.parsePositiveInt(s)||1);let a=r/n||0,o=y.createInitSegment(e,y.fromInheritance_,i);y.checkSegmentIndexRangeSupport_(e,o);let c=Ne.shallowCloneObject(e);return{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndex_(c,t,o,a),timescale:n}}static async generateSegmentIndexFromUris(e,t,i,r,s,n,a){let o=e.presentationTimeline,c=!e.dynamic||!e.periodInfo.isLastPeriod,d=e.periodInfo.start,u=e.periodInfo.duration,m=e.representation.mimeType.split("/")[1],f=t,g=null,_=[f(r,s,n,!1),m=="webm"?f(i.getUris(),i.startByte,i.endByte,!0):null];f=null;let T=await Promise.all(_),S=T[0],b=T[1]||null,E=null,C=d-a,A=d,w=u?d+u:1/0,M=e.representation.getBaseUris(),x=M.length!=r.length||M.some((k,L)=>k!=r[L]);m=="mp4"?E=Pn.parse(S,s,M,i,C,A,w,x):(v.assert(b,"WebM requires init data"),E=kn.parse(S,b,M,i,C,A,w));for(let k of E)k.codecs=e.representation.codecs,k.mimeType=e.representation.mimeType,k.bandwidth=e.bandwidth;return o.notifySegments(E),v.assert(!g,"Should not call generateSegmentIndex twice"),g=new Ze(E),c&&g.fit(A,w,!0),g}static fromInheritance_(e){return e.segmentBase}static computeIndexRange_(e){let t=Me.inheritChild(e,y.fromInheritance_,"RepresentationIndex"),i=Me.inheritAttribute(e,y.fromInheritance_,"indexRange"),r=I.parseRange(i||"");return t&&(r=I.parseAttr(t,"range",I.parseRange,r)),r}static computeIndexUris_(e){let t=Me.inheritChild(e,y.fromInheritance_,"RepresentationIndex"),i=e.representation.getBaseUris();if(t){let r=q.htmlUnescape(t.attributes.sourceURL);r&&(i=fe.resolveUris(i,[r],e.urlParams()))}return i}static checkSegmentIndexRangeSupport_(e,t){if(y.checkSegmentIndexSupport(e,t),!y.computeIndexRange_(e))throw p.error("SegmentBase does not contain sufficient segment information:","the SegmentBase does not contain @indexRange","or a RepresentationIndex element.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO)}static checkSegmentIndexSupport(e,t){let i=R.ContentType,r=e.representation.contentType,s=e.representation.mimeType.split("/")[1];if(r!=i.TEXT&&s!="mp4"&&s!="webm")throw p.error("SegmentBase specifies an unsupported container type.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_CONTAINER);if(s=="webm"&&!t)throw p.error("SegmentBase does not contain sufficient segment information:","the SegmentBase uses a WebM container,","but does not contain an Initialization element.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_WEBM_MISSING_INIT)}static generateSegmentIndex_(e,t,i,r){let s=y.computeIndexUris_(e),n=y.computeIndexRange_(e);return v.assert(n,"Index range should not be null!"),y.generateSegmentIndexFromUris(e,t,i,s,n.start,n.end,r)}static createQualityInfo(e){let t=e.representation;return{bandwidth:e.bandwidth,audioSamplingRate:t.audioSamplingRate,codecs:t.codecs,contentType:t.contentType,frameRate:t.frameRate||null,height:t.height||null,mimeType:t.mimeType,channelsCount:t.numChannels,pixelAspectRatio:t.pixelAspectRatio||null,width:t.width||null,label:e.adaptationSet.label||null,roles:e.roles||null,language:e.adaptationSet.language||null}}};/*! @license
598
+ */var Hi=class y{static createInitSegment(e,t,i){let r=Me.inheritChild(e,t,"Initialization");if(!r)return null;let s=e.representation.getBaseUris(),n=r.attributes.sourceURL;n&&(s=fe.resolveUris(s,[q.htmlUnescape(n)],e.urlParams()));let a=0,o=null,c=I.parseAttr(r,"range",I.parseRange);c&&(a=c.start,o=c.end);let d=()=>s,u=y.createQualityInfo(e),m=e.adaptationSet.encrypted,f=new Tt(d,a,o,u,null,null,i,m);return f.codecs=e.representation.codecs,f.mimeType=e.representation.mimeType,e.periodInfo&&!e.periodInfo.isLastPeriod&&(f.boundaryEnd=e.periodInfo.start+e.periodInfo.duration),f}static createStreamInfo(e,t,i){v.assert(e.representation.segmentBase,"Should only be called with SegmentBase");let r=Number(Me.inheritAttribute(e,y.fromInheritance_,"presentationTimeOffset"))||0,s=Me.inheritAttribute(e,y.fromInheritance_,"timescale"),n=1;s&&(n=I.parsePositiveInt(s)||1);let a=r/n||0,o=y.createInitSegment(e,y.fromInheritance_,i);y.checkSegmentIndexRangeSupport_(e,o);let c=Oe.shallowCloneObject(e);return{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndex_(c,t,o,a),timescale:n}}static async generateSegmentIndexFromUris(e,t,i,r,s,n,a){let o=e.presentationTimeline,c=!e.dynamic||!e.periodInfo.isLastPeriod,d=e.periodInfo.start,u=e.periodInfo.duration,m=e.representation.mimeType.split("/")[1],f=t,g=null,_=[f(r,s,n,!1),m=="webm"?f(i.getUris(),i.startByte,i.endByte,!0):null];f=null;let T=await Promise.all(_),S=T[0],b=T[1]||null,E=null,C=d-a,A=d,w=u?d+u:1/0,M=e.representation.getBaseUris(),x=M.length!=r.length||M.some((k,L)=>k!=r[L]);m=="mp4"?E=Pn.parse(S,s,M,i,C,A,w,x):(v.assert(b,"WebM requires init data"),E=kn.parse(S,b,M,i,C,A,w));for(let k of E)k.codecs=e.representation.codecs,k.mimeType=e.representation.mimeType,k.bandwidth=e.bandwidth;return o.notifySegments(E),v.assert(!g,"Should not call generateSegmentIndex twice"),g=new Ze(E),c&&g.fit(A,w,!0),g}static fromInheritance_(e){return e.segmentBase}static computeIndexRange_(e){let t=Me.inheritChild(e,y.fromInheritance_,"RepresentationIndex"),i=Me.inheritAttribute(e,y.fromInheritance_,"indexRange"),r=I.parseRange(i||"");return t&&(r=I.parseAttr(t,"range",I.parseRange,r)),r}static computeIndexUris_(e){let t=Me.inheritChild(e,y.fromInheritance_,"RepresentationIndex"),i=e.representation.getBaseUris();if(t){let r=q.htmlUnescape(t.attributes.sourceURL);r&&(i=fe.resolveUris(i,[r],e.urlParams()))}return i}static checkSegmentIndexRangeSupport_(e,t){if(y.checkSegmentIndexSupport(e,t),!y.computeIndexRange_(e))throw p.error("SegmentBase does not contain sufficient segment information:","the SegmentBase does not contain @indexRange","or a RepresentationIndex element.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO)}static checkSegmentIndexSupport(e,t){let i=R.ContentType,r=e.representation.contentType,s=e.representation.mimeType.split("/")[1];if(r!=i.TEXT&&s!="mp4"&&s!="webm")throw p.error("SegmentBase specifies an unsupported container type.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_CONTAINER);if(s=="webm"&&!t)throw p.error("SegmentBase does not contain sufficient segment information:","the SegmentBase uses a WebM container,","but does not contain an Initialization element.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_WEBM_MISSING_INIT)}static generateSegmentIndex_(e,t,i,r){let s=y.computeIndexUris_(e),n=y.computeIndexRange_(e);return v.assert(n,"Index range should not be null!"),y.generateSegmentIndexFromUris(e,t,i,s,n.start,n.end,r)}static createQualityInfo(e){let t=e.representation;return{bandwidth:e.bandwidth,audioSamplingRate:t.audioSamplingRate,codecs:t.codecs,contentType:t.contentType,frameRate:t.frameRate||null,height:t.height||null,mimeType:t.mimeType,channelsCount:t.numChannels,pixelAspectRatio:t.pixelAspectRatio||null,width:t.width||null,label:e.adaptationSet.label||null,roles:e.roles||null,language:e.adaptationSet.language||null}}};/*! @license
599
599
  * Shaka Player
600
600
  * Copyright 2016 Google LLC
601
601
  * SPDX-License-Identifier: Apache-2.0
@@ -603,7 +603,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
603
603
  * Shaka Player
604
604
  * Copyright 2016 Google LLC
605
605
  * SPDX-License-Identifier: Apache-2.0
606
- */var fr=class y{static createStreamInfo(e,t,i,r,s,n,a,o,c,d){v.assert(e.representation.segmentTemplate,"Should only be called with SegmentTemplate or segment info defined"),!c&&!e.representation.initialization&&(e.representation.initialization=Me.inheritAttribute(e,y.fromInheritance_,"initialization"));let u=e.representation.initialization?y.createInitSegment_(e,a):null,m=y.parseSegmentTemplateInfo_(e);y.checkSegmentTemplateInfo_(e,m);let f=Ne.shallowCloneObject(e);if(m.indexTemplate)return Hi.checkSegmentIndexSupport(e,u),{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndexFromIndexTemplate_(f,t,u,m),timescale:m.timescale};if(m.segmentDuration){if(!r&&e.adaptationSet.contentType!=="image"&&e.adaptationSet.contentType!=="text"){let g=e.periodInfo.start,_=e.period.id,T=e.periodInfo.duration,S=_!=null&&n.get(_)||T,b=S?g+S:1/0;e.presentationTimeline.notifyMaxSegmentDuration(m.segmentDuration),e.presentationTimeline.notifyPeriodDuration(g,b)}return{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndexFromDuration_(f,m,s,u,n,a,o,e.representation.segmentSequenceCadence),timescale:m.timescale}}else{let g=null,_=null,T=null;e.period.id&&e.representation.id&&(_=e.period.id+","+e.representation.id,T=i.get(_),T&&(g=T.segmentIndex));let S=e.periodInfo.start,b=e.periodInfo.duration?S+e.periodInfo.duration:1/0;if(p.debug(`New manifest ${S} - ${b}`),g){let M=g;M.appendTemplateInfo(m,S,b,u,e.dynamic);let x=e.presentationTimeline.getSegmentAvailabilityStart();M.evict(x)}else{let M=0,x=-1;if(e.period.id!=null&&e.representation.id!=null){let k=d.get(e.period.id);if(k)x=k.timeline;else for(let L of d.values()){let V=R.GAP_OVERLAP_TOLERANCE_SECONDS;if(Math.abs(m.scaledPresentationTimeOffset-L.endTime)<=V&&L.reps.includes(e.representation.id)){x=L.timeline;break}else L.timeline>=M&&(M=L.timeline+1)}}x==-1&&(x=M),p.debug(`Creating TSI with end ${b}`),g=new Fs(e.dynamic,m,e.representation.originalId,e.bandwidth,e.representation.getBaseUris,e.urlParams,S,b,u,a,e.representation.segmentSequenceCadence,x)}if(m.timeline&&e.adaptationSet.contentType!=="image"&&e.adaptationSet.contentType!=="text"){let x=g.getTimeline();e.presentationTimeline.notifyTimeRange(x,S)}T&&e.dynamic&&(T.segmentIndex=g);let E=m.timeline,C=E&&E[E.length-1],A=C?C.end+m.scaledPresentationTimeOffset:-1,w=-1;return g instanceof Fs&&(w=g.continuityTimeline()),{endTime:A,timeline:w,generateSegmentIndex:()=>(g instanceof Fs&&g.isEmpty()&&g.appendTemplateInfo(m,S,b,u,e.dynamic),Promise.resolve(g)),timescale:m.timescale}}}static modifyTimepoints(e,t){let i=Me.inheritChild(e,y.fromInheritance_,"SegmentTimeline");v.assert(i,"timeline node not found");let r=I.findChildren(i,"S");v.assert(r,"timepoints should exist"),I.modifyNodes(r,t),i.children=r}static removeTimepoints(e){let t=Me.inheritChild(e,y.fromInheritance_,"SegmentTimeline");v.assert(t,"timeline node not found"),t.children=[]}static fromInheritance_(e){return e.segmentTemplate}static parseSegmentTemplateInfo_(e){let t=Me.parseSegmentInfo(e,y.fromInheritance_),i=Me.inheritAttribute(e,y.fromInheritance_,"media"),r=Me.inheritAttribute(e,y.fromInheritance_,"index"),s=Me.inheritAttribute(e,y.fromInheritance_,"k"),n=0;return s&&(n=parseInt(s,10)),{unscaledSegmentDuration:t.unscaledSegmentDuration,segmentDuration:t.segmentDuration,timescale:t.timescale,startNumber:t.startNumber,scaledPresentationTimeOffset:t.scaledPresentationTimeOffset,unscaledPresentationTimeOffset:t.unscaledPresentationTimeOffset,timeline:t.timeline,mediaTemplate:i&&q.htmlUnescape(i),indexTemplate:r,mimeType:e.representation.mimeType,codecs:e.representation.codecs,bandwidth:e.bandwidth,numChunks:n}}static checkSegmentTemplateInfo_(e,t){let i=0;if(i+=t.indexTemplate?1:0,i+=t.timeline?1:0,i+=t.segmentDuration?1:0,i==0)throw p.error("SegmentTemplate does not contain any segment information:","the SegmentTemplate must contain either an index URL template","a SegmentTimeline, or a segment duration.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO);if(i!=1&&(p.warning("SegmentTemplate contains multiple segment information sources:","the SegmentTemplate should only contain an index URL template,","a SegmentTimeline or a segment duration.",e.representation),t.indexTemplate?(p.info("Using the index URL template by default."),t.timeline=null,t.unscaledSegmentDuration=null,t.segmentDuration=null):(v.assert(t.timeline,"There should be a timeline"),p.info("Using the SegmentTimeline by default."),t.unscaledSegmentDuration=null,t.segmentDuration=null)),!t.indexTemplate&&!t.mediaTemplate)throw p.error("SegmentTemplate does not contain sufficient segment information:","the SegmentTemplate's media URL template is missing.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO)}static generateSegmentIndexFromIndexTemplate_(e,t,i,r){v.assert(r.indexTemplate,"must be using index template");let s=Me.fillUriTemplate(r.indexTemplate,e.representation.originalId,null,null,e.bandwidth||null,null),n=fe.resolveUris(e.representation.getBaseUris(),[s]);return Hi.generateSegmentIndexFromUris(e,t,i,n,0,null,r.scaledPresentationTimeOffset)}static generateSegmentIndexFromDuration_(e,t,i,r,s,n,a,o){v.assert(t.mediaTemplate,"There should be a media template with duration");let c=e.presentationTimeline,d=e.periodInfo.start,u=e.period.id,m=e.periodInfo.duration,f=()=>{let H=u!=null&&s.get(u)||m;return H?d+H:1/0},g=t.segmentDuration;v.assert(g!=null,"Segment duration must not be null!");let _=t.startNumber,T=t.mediaTemplate,S=e.bandwidth||null,b=e.representation.originalId,E=e.representation.getBaseUris,C=e.urlParams,A=d-t.scaledPresentationTimeOffset,w=()=>[Math.max(c.getSegmentAvailabilityStart(),d),Math.min(c.getSegmentAvailabilityEnd(),f())],M=()=>{let H=w();v.assert(H.every(isFinite),"Available presentation times must be finite!"),v.assert(H.every(W=>W>=0),"Available presentation times must be positive!"),v.assert(g!=null,"Segment duration must not be null!");let J=H.map(W=>W-d),Z=[Math.ceil(J[0]/g),Math.ceil(J[1]/g)-1];return e.representation.availabilityTimeOffset&&Z[1]++,Z.map(W=>W+_)},x=M(),k=e.dynamic?Math.max(x[0],x[1]-i+1):x[0],L=a||x[1],V=H=>{v.assert(g!=null,"Segment duration must not be null!");let J=H-_,Z=J*g,ce=t.unscaledSegmentDuration;v.assert(ce!=null,"Segment duration must not be null!");let W=J*ce;"BigInt"in window&&W>Number.MAX_SAFE_INTEGER&&(W=BigInt(J)*BigInt(ce));let z=Z+d,ge=z+g,Y=Math.min(ge,f());v.assert(z<Y,"Generated a segment outside of the period!");let X=[],O=t.numChunks;if(O){let tt=(Y-z)/O;for(let _t=0;_t<O;_t++){let bt=z+tt*_t,yt=bt+tt,xt=_t,mt=()=>{let Ft=Me.fillUriTemplate(T,b,H,xt,S,W);return fe.resolveUris(E(),[Ft],C())},Qe=new Se(bt,yt,mt,0,null,r,A,d,f(),[],"",null,null,Se.Status.AVAILABLE,n);Qe.codecs=e.representation.codecs,Qe.mimeType=e.representation.mimeType,o==0?_t>0&&Qe.markAsNonIndependent():_t%o!=0&&Qe.markAsNonIndependent(),X.push(Qe)}}let $=()=>{if(O)return[];let tt=Me.fillUriTemplate(T,b,H,null,S,W);return fe.resolveUris(E(),[tt],C())},Ie=new Se(z,Y,$,0,null,r,A,d,f(),X,"",null,null,Se.Status.AVAILABLE,n,X.length>0);return Ie.codecs=e.representation.codecs,Ie.mimeType=e.representation.mimeType,Ie.bandwidth=e.bandwidth,Ie.trueEndTime=ge,Ie},ee=new y.FixedDurationSegmentIndex_(k,L,_,d,g,V),oe=c.getSegmentAvailabilityEnd()<f(),le=c.isLive();if(oe||le){let H=Math.max(k,L+1),J=g;e.representation.availabilityTimeOffset&&(J=.1),ee.updateEvery(J,()=>{let Z=c.getSegmentAvailabilityStart();ee.evict(Z);let[ce,W]=M(),z=[];for(;H<=W;){let ge=V(H);z.push(ge),H++}return Z>f()&&!z.length?null:z})}return Promise.resolve(ee)}static createInitSegment_(e,t){let i=e.representation.initialization;if(i||(i=Me.inheritAttribute(e,y.fromInheritance_,"initialization")),!i)return null;i=q.htmlUnescape(i);let r=e.representation.originalId,s=e.bandwidth||null,n=e.representation.getBaseUris,a=e.urlParams,o=()=>{v.assert(i,"Should have returned earlier");let m=Me.fillUriTemplate(i,r,null,null,s,null);return fe.resolveUris(n(),[m],a())},c=Hi.createQualityInfo(e),d=e.adaptationSet.encrypted,u=new Tt(o,0,null,c,null,null,t,d);return u.codecs=e.representation.codecs,u.mimeType=e.representation.mimeType,e.periodInfo&&!e.periodInfo.isLastPeriod&&(u.boundaryEnd=e.periodInfo.start+e.periodInfo.duration),u}};fr.FixedDurationSegmentIndex_=class extends Ze{constructor(y,e,t,i,r,s){let n=Math.max(0,e-y+1);super(new Array(n)),this.minPosition_=y,this.startNumber_=t,this.periodStart_=i,this.segmentDuration_=r,this.createReference_=s}find(y){let e=this.references.length-1;if(e<0)return null;let t=this.get(this.numEvicted_);if(!t)return null;if(y<t.startTime)return this.numEvicted_;let r=Math.floor((y-this.periodStart_)/this.segmentDuration_)+this.startNumber_-this.minPosition_;if(r<this.numEvicted_)return null;let s=this.get(r);if(!s)return null;let a=r-this.numEvicted_<e?this.get(r+1):null,o=a?a.startTime:s.endTime;return y>=s.startTime&&y<o?r:null}get(y){let e=y-this.numEvicted_;if(e<0||e>=this.references.length)return null;let t=this.references[e];return t||(t=this.createReference_(this.minPosition_+y),this.references[e]=t),t}earliestReference(){return this.get(this.numEvicted_)}forEachTopLevelReference(y){for(let e=0;e<this.references.length;e++){let t=this.get(e+this.numEvicted_);t&&y(t)}}evict(y){if(this.getIsImmutable())return;let e=this.references.length-1;if(e<0)return;let t=this.get(this.numEvicted_);if(!t||t.endTime>y)return;let i=this.numEvicted_+e,r=this.get(i),s=r&&r.endTime<=y?this.references.length:Math.max(0,Math.min(this.references.length,Math.floor((y-this.periodStart_)/this.segmentDuration_+this.startNumber_-1)-(this.minPosition_+this.numEvicted_)+1));s>0&&(this.numEvicted_+=s,this.references=this.references.slice(s))}};var Fs=class y extends Ze{constructor(t,i,r,s,n,a,o,c,d,u,m,f){super([]);l(this,"dynamic_");l(this,"templateInfo_");l(this,"representationId_");l(this,"bandwidth_");l(this,"getBaseUris_");l(this,"urlParams_");l(this,"periodStart_");l(this,"periodEnd_");l(this,"initSegmentReference_");l(this,"aesKey_");l(this,"segmentSequenceCadence_");l(this,"timeline_");l(this,"references");this.dynamic_=t,this.templateInfo_=i,this.representationId_=r,this.bandwidth_=s,this.getBaseUris_=n,this.urlParams_=a,this.periodStart_=o,this.periodEnd_=c,this.initSegmentReference_=d,this.aesKey_=u,this.segmentSequenceCadence_=m,this.timeline_=f,this.fitTimeline()}getNumReferences(){return this.templateInfo_?this.templateInfo_.timeline.length:0}release(){super.release(),this.templateInfo_=null}evict(t){if(!this.templateInfo_)return;p.debug(`${this.representationId_} Evicting at ${t}`);let i=this.templateInfo_.timeline;if(!i)return;let r=0;for(;r<i.length&&i[r].end+this.periodStart_<=t;)r++;r>0&&(this.templateInfo_.timeline=i.slice(r),this.references.length>=r&&(this.references=this.references.slice(r)),this.numEvicted_+=r,this.getNumReferences()===0&&this.release())}appendTemplateInfo(t,i,r,s,n){if(this.updateInitSegmentReference(s),this.dynamic_=n,!this.templateInfo_)this.templateInfo_=t,this.periodStart_=i,this.periodEnd_=r;else{if(this.templateInfo_.unscaledPresentationTimeOffset!==t.unscaledPresentationTimeOffset){let c=t.unscaledPresentationTimeOffset-this.templateInfo_.unscaledPresentationTimeOffset;p.error("Possibly suboptimal manifest detected!","presentationTimeOffset is "+t.unscaledPresentationTimeOffset,"which differs "+c+" from the cache template.");for(let d=0;d<t.timeline.length;d++){let u=t.timeline[d];u.unscaledStart+=c,u.unscaledEnd+=c,u.start=(u.unscaledStart+c)/t.timescale,u.end=(u.unscaledEnd+c)/t.timescale}}this.templateInfo_.mediaTemplate!==t.mediaTemplate&&(this.templateInfo_.mediaTemplate=t.mediaTemplate);let a=this.templateInfo_.timeline,o;if(a.length){let c=a[a.length-1];o=t.timeline.filter(d=>d.end>c.end)}else o=t.timeline.slice();o.length>0&&(p.debug(`Appending ${o.length} entries`),this.templateInfo_.timeline.push(...o)),this.periodEnd_!==r&&(this.periodEnd_=r)}this.fitTimeline()}updateInitSegmentReference(t){if(this.initSegmentReference_!==t){this.initSegmentReference_=t;for(let i of this.references)i&&i.updateInitSegmentReference(t)}}isBeforeFirstEntry(t){if(this.templateInfo_&&this.templateInfo_.timeline&&this.templateInfo_.timeline.length){let r=this.templateInfo_.timeline;return t<r[0].start+this.periodStart_}else return!1}fitTimeline(){if(!this.templateInfo_||this.getIsImmutable())return;let t=this.templateInfo_.timeline;v.assert(t,"Timeline should be non-null!");let i=[];for(let r of t)r.start>=this.periodEnd_||r.end<=0||i.push(r);this.templateInfo_.timeline=i,this.evict(this.periodStart_)}getTimeline(){if(!this.templateInfo_)return[];let t=this.templateInfo_.timeline;return v.assert(t,"Timeline should be non-null!"),t}find(t){if(p.debug(`Find ${t}`),this.isBeforeFirstEntry(t))return this.numEvicted_;if(!this.templateInfo_)return null;let i=this.templateInfo_.timeline;if(t<this.periodStart_||t>=this.periodEnd_)return null;let r=i.length-1,s=ye.binarySearch(i,c=>c.start+this.periodStart_<=t)-1;if(s<0)return null;let n=i[s],a=n.start+this.periodStart_,o;return s<r?o=i[s+1].start+this.periodStart_:this.periodEnd_===1/0?o=n.end+this.periodStart_:o=this.periodEnd_,t>=a&&t<o?s+this.numEvicted_:null}get(t){let i=t-this.numEvicted_;if(i<0||i>=this.getNumReferences()||!this.templateInfo_)return null;let r=this.references[i];if(!r){let s=this.templateInfo_.timeline[i],n=s.segmentPosition,a=s.unscaledStart+this.templateInfo_.unscaledPresentationTimeOffset,o=this.periodStart_-this.templateInfo_.scaledPresentationTimeOffset,c=this.periodStart_+s.end,d=c;i===this.getNumReferences()-1&&this.periodEnd_!==1/0&&(this.dynamic_&&Math.abs(d-this.periodEnd_)>.1?d=Math.min(d,this.periodEnd_):d=this.periodEnd_);let u=this.templateInfo_.codecs,m=this.templateInfo_.mimeType,f=this.templateInfo_.bandwidth,g=[],_=!1;if(s.partialSegments&&this.templateInfo_&&this.templateInfo_.mediaTemplate&&(_=this.templateInfo_.mediaTemplate.includes("$SubNumber$")),_){let S=(s.end-s.start)/s.partialSegments;for(let b=0;b<s.partialSegments;b++){let E=s.start+S*b,C=E+S,A=b,w=null,M=()=>this.templateInfo_?(w==null&&(w=y.createUris_(this.templateInfo_.mediaTemplate,this.representationId_,n,this.bandwidth_,a,A,this.getBaseUris_,this.urlParams_)),w):[],x=new Se(this.periodStart_+E,this.periodStart_+C,M,0,null,this.initSegmentReference_,o,this.periodStart_,this.periodEnd_,[],"",null,null,Se.Status.AVAILABLE,this.aesKey_);x.codecs=u,x.mimeType=m,x.bandwidth=f,this.segmentSequenceCadence_==0?b>0&&x.markAsNonIndependent():b%this.segmentSequenceCadence_!=0&&x.markAsNonIndependent(),g.push(x)}}let T=()=>g.length>0||!this.templateInfo_?[]:y.createUris_(this.templateInfo_.mediaTemplate,this.representationId_,n,this.bandwidth_,a,null,this.getBaseUris_,this.urlParams_);r=new Se(this.periodStart_+s.start,d,T,0,null,this.initSegmentReference_,o,this.periodStart_,this.periodEnd_,g,"",null,null,Se.Status.AVAILABLE,this.aesKey_,g.length>0),r.codecs=u,r.mimeType=m,r.trueEndTime=c,r.bandwidth=f,this.references[i]=r}return r}forEachTopLevelReference(t){this.fitTimeline();for(let i=0;i<this.getNumReferences();i++){let r=this.get(i+this.numEvicted_);r&&t(r)}}static createUris_(t,i,r,s,n,a,o,c){let d=Me.fillUriTemplate(t,i,r,a,s||null,n);return fe.resolveUris(o(),[d],c())}continuityTimeline(){return this.timeline_}};/*! @license
606
+ */var fr=class y{static createStreamInfo(e,t,i,r,s,n,a,o,c,d){v.assert(e.representation.segmentTemplate,"Should only be called with SegmentTemplate or segment info defined"),!c&&!e.representation.initialization&&(e.representation.initialization=Me.inheritAttribute(e,y.fromInheritance_,"initialization"));let u=e.representation.initialization?y.createInitSegment_(e,a):null,m=y.parseSegmentTemplateInfo_(e);y.checkSegmentTemplateInfo_(e,m);let f=Oe.shallowCloneObject(e);if(m.indexTemplate)return Hi.checkSegmentIndexSupport(e,u),{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndexFromIndexTemplate_(f,t,u,m),timescale:m.timescale};if(m.segmentDuration){if(!r&&e.adaptationSet.contentType!=="image"&&e.adaptationSet.contentType!=="text"){let g=e.periodInfo.start,_=e.period.id,T=e.periodInfo.duration,S=_!=null&&n.get(_)||T,b=S?g+S:1/0;e.presentationTimeline.notifyMaxSegmentDuration(m.segmentDuration),e.presentationTimeline.notifyPeriodDuration(g,b)}return{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndexFromDuration_(f,m,s,u,n,a,o,e.representation.segmentSequenceCadence),timescale:m.timescale}}else{let g=null,_=null,T=null;e.period.id&&e.representation.id&&(_=e.period.id+","+e.representation.id,T=i.get(_),T&&(g=T.segmentIndex));let S=e.periodInfo.start,b=e.periodInfo.duration?S+e.periodInfo.duration:1/0;if(p.debug(`New manifest ${S} - ${b}`),g){let M=g;M.appendTemplateInfo(m,S,b,u,e.dynamic);let x=e.presentationTimeline.getSegmentAvailabilityStart();M.evict(x)}else{let M=0,x=-1;if(e.period.id!=null&&e.representation.id!=null){let k=d.get(e.period.id);if(k)x=k.timeline;else for(let L of d.values()){let V=R.GAP_OVERLAP_TOLERANCE_SECONDS;if(Math.abs(m.scaledPresentationTimeOffset-L.endTime)<=V&&L.reps.includes(e.representation.id)){x=L.timeline;break}else L.timeline>=M&&(M=L.timeline+1)}}x==-1&&(x=M),p.debug(`Creating TSI with end ${b}`),g=new Fs(e.dynamic,m,e.representation.originalId,e.bandwidth,e.representation.getBaseUris,e.urlParams,S,b,u,a,e.representation.segmentSequenceCadence,x)}if(m.timeline&&e.adaptationSet.contentType!=="image"&&e.adaptationSet.contentType!=="text"){let x=g.getTimeline();e.presentationTimeline.notifyTimeRange(x,S)}T&&e.dynamic&&(T.segmentIndex=g);let E=m.timeline,C=E&&E[E.length-1],A=C?C.end+m.scaledPresentationTimeOffset:-1,w=-1;return g instanceof Fs&&(w=g.continuityTimeline()),{endTime:A,timeline:w,generateSegmentIndex:()=>(g instanceof Fs&&g.isEmpty()&&g.appendTemplateInfo(m,S,b,u,e.dynamic),Promise.resolve(g)),timescale:m.timescale}}}static modifyTimepoints(e,t){let i=Me.inheritChild(e,y.fromInheritance_,"SegmentTimeline");v.assert(i,"timeline node not found");let r=I.findChildren(i,"S");v.assert(r,"timepoints should exist"),I.modifyNodes(r,t),i.children=r}static removeTimepoints(e){let t=Me.inheritChild(e,y.fromInheritance_,"SegmentTimeline");v.assert(t,"timeline node not found"),t.children=[]}static fromInheritance_(e){return e.segmentTemplate}static parseSegmentTemplateInfo_(e){let t=Me.parseSegmentInfo(e,y.fromInheritance_),i=Me.inheritAttribute(e,y.fromInheritance_,"media"),r=Me.inheritAttribute(e,y.fromInheritance_,"index"),s=Me.inheritAttribute(e,y.fromInheritance_,"k"),n=0;return s&&(n=parseInt(s,10)),{unscaledSegmentDuration:t.unscaledSegmentDuration,segmentDuration:t.segmentDuration,timescale:t.timescale,startNumber:t.startNumber,scaledPresentationTimeOffset:t.scaledPresentationTimeOffset,unscaledPresentationTimeOffset:t.unscaledPresentationTimeOffset,timeline:t.timeline,mediaTemplate:i&&q.htmlUnescape(i),indexTemplate:r,mimeType:e.representation.mimeType,codecs:e.representation.codecs,bandwidth:e.bandwidth,numChunks:n}}static checkSegmentTemplateInfo_(e,t){let i=0;if(i+=t.indexTemplate?1:0,i+=t.timeline?1:0,i+=t.segmentDuration?1:0,i==0)throw p.error("SegmentTemplate does not contain any segment information:","the SegmentTemplate must contain either an index URL template","a SegmentTimeline, or a segment duration.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO);if(i!=1&&(p.warning("SegmentTemplate contains multiple segment information sources:","the SegmentTemplate should only contain an index URL template,","a SegmentTimeline or a segment duration.",e.representation),t.indexTemplate?(p.info("Using the index URL template by default."),t.timeline=null,t.unscaledSegmentDuration=null,t.segmentDuration=null):(v.assert(t.timeline,"There should be a timeline"),p.info("Using the SegmentTimeline by default."),t.unscaledSegmentDuration=null,t.segmentDuration=null)),!t.indexTemplate&&!t.mediaTemplate)throw p.error("SegmentTemplate does not contain sufficient segment information:","the SegmentTemplate's media URL template is missing.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO)}static generateSegmentIndexFromIndexTemplate_(e,t,i,r){v.assert(r.indexTemplate,"must be using index template");let s=Me.fillUriTemplate(r.indexTemplate,e.representation.originalId,null,null,e.bandwidth||null,null),n=fe.resolveUris(e.representation.getBaseUris(),[s]);return Hi.generateSegmentIndexFromUris(e,t,i,n,0,null,r.scaledPresentationTimeOffset)}static generateSegmentIndexFromDuration_(e,t,i,r,s,n,a,o){v.assert(t.mediaTemplate,"There should be a media template with duration");let c=e.presentationTimeline,d=e.periodInfo.start,u=e.period.id,m=e.periodInfo.duration,f=()=>{let H=u!=null&&s.get(u)||m;return H?d+H:1/0},g=t.segmentDuration;v.assert(g!=null,"Segment duration must not be null!");let _=t.startNumber,T=t.mediaTemplate,S=e.bandwidth||null,b=e.representation.originalId,E=e.representation.getBaseUris,C=e.urlParams,A=d-t.scaledPresentationTimeOffset,w=()=>[Math.max(c.getSegmentAvailabilityStart(),d),Math.min(c.getSegmentAvailabilityEnd(),f())],M=()=>{let H=w();v.assert(H.every(isFinite),"Available presentation times must be finite!"),v.assert(H.every(W=>W>=0),"Available presentation times must be positive!"),v.assert(g!=null,"Segment duration must not be null!");let J=H.map(W=>W-d),Z=[Math.ceil(J[0]/g),Math.ceil(J[1]/g)-1];return e.representation.availabilityTimeOffset&&Z[1]++,Z.map(W=>W+_)},x=M(),k=e.dynamic?Math.max(x[0],x[1]-i+1):x[0],L=a||x[1],V=H=>{v.assert(g!=null,"Segment duration must not be null!");let J=H-_,Z=J*g,ce=t.unscaledSegmentDuration;v.assert(ce!=null,"Segment duration must not be null!");let W=J*ce;"BigInt"in window&&W>Number.MAX_SAFE_INTEGER&&(W=BigInt(J)*BigInt(ce));let z=Z+d,ge=z+g,Y=Math.min(ge,f());v.assert(z<Y,"Generated a segment outside of the period!");let X=[],N=t.numChunks;if(N){let tt=(Y-z)/N;for(let _t=0;_t<N;_t++){let bt=z+tt*_t,yt=bt+tt,xt=_t,mt=()=>{let Ft=Me.fillUriTemplate(T,b,H,xt,S,W);return fe.resolveUris(E(),[Ft],C())},Qe=new Se(bt,yt,mt,0,null,r,A,d,f(),[],"",null,null,Se.Status.AVAILABLE,n);Qe.codecs=e.representation.codecs,Qe.mimeType=e.representation.mimeType,o==0?_t>0&&Qe.markAsNonIndependent():_t%o!=0&&Qe.markAsNonIndependent(),X.push(Qe)}}let $=()=>{if(N)return[];let tt=Me.fillUriTemplate(T,b,H,null,S,W);return fe.resolveUris(E(),[tt],C())},Ie=new Se(z,Y,$,0,null,r,A,d,f(),X,"",null,null,Se.Status.AVAILABLE,n,X.length>0);return Ie.codecs=e.representation.codecs,Ie.mimeType=e.representation.mimeType,Ie.bandwidth=e.bandwidth,Ie.trueEndTime=ge,Ie},ee=new y.FixedDurationSegmentIndex_(k,L,_,d,g,V),oe=c.getSegmentAvailabilityEnd()<f(),le=c.isLive();if(oe||le){let H=Math.max(k,L+1),J=g;e.representation.availabilityTimeOffset&&(J=.1),ee.updateEvery(J,()=>{let Z=c.getSegmentAvailabilityStart();ee.evict(Z);let[ce,W]=M(),z=[];for(;H<=W;){let ge=V(H);z.push(ge),H++}return Z>f()&&!z.length?null:z})}return Promise.resolve(ee)}static createInitSegment_(e,t){let i=e.representation.initialization;if(i||(i=Me.inheritAttribute(e,y.fromInheritance_,"initialization")),!i)return null;i=q.htmlUnescape(i);let r=e.representation.originalId,s=e.bandwidth||null,n=e.representation.getBaseUris,a=e.urlParams,o=()=>{v.assert(i,"Should have returned earlier");let m=Me.fillUriTemplate(i,r,null,null,s,null);return fe.resolveUris(n(),[m],a())},c=Hi.createQualityInfo(e),d=e.adaptationSet.encrypted,u=new Tt(o,0,null,c,null,null,t,d);return u.codecs=e.representation.codecs,u.mimeType=e.representation.mimeType,e.periodInfo&&!e.periodInfo.isLastPeriod&&(u.boundaryEnd=e.periodInfo.start+e.periodInfo.duration),u}};fr.FixedDurationSegmentIndex_=class extends Ze{constructor(y,e,t,i,r,s){let n=Math.max(0,e-y+1);super(new Array(n)),this.minPosition_=y,this.startNumber_=t,this.periodStart_=i,this.segmentDuration_=r,this.createReference_=s}find(y){let e=this.references.length-1;if(e<0)return null;let t=this.get(this.numEvicted_);if(!t)return null;if(y<t.startTime)return this.numEvicted_;let r=Math.floor((y-this.periodStart_)/this.segmentDuration_)+this.startNumber_-this.minPosition_;if(r<this.numEvicted_)return null;let s=this.get(r);if(!s)return null;let a=r-this.numEvicted_<e?this.get(r+1):null,o=a?a.startTime:s.endTime;return y>=s.startTime&&y<o?r:null}get(y){let e=y-this.numEvicted_;if(e<0||e>=this.references.length)return null;let t=this.references[e];return t||(t=this.createReference_(this.minPosition_+y),this.references[e]=t),t}earliestReference(){return this.get(this.numEvicted_)}forEachTopLevelReference(y){for(let e=0;e<this.references.length;e++){let t=this.get(e+this.numEvicted_);t&&y(t)}}evict(y){if(this.getIsImmutable())return;let e=this.references.length-1;if(e<0)return;let t=this.get(this.numEvicted_);if(!t||t.endTime>y)return;let i=this.numEvicted_+e,r=this.get(i),s=r&&r.endTime<=y?this.references.length:Math.max(0,Math.min(this.references.length,Math.floor((y-this.periodStart_)/this.segmentDuration_+this.startNumber_-1)-(this.minPosition_+this.numEvicted_)+1));s>0&&(this.numEvicted_+=s,this.references=this.references.slice(s))}};var Fs=class y extends Ze{constructor(t,i,r,s,n,a,o,c,d,u,m,f){super([]);l(this,"dynamic_");l(this,"templateInfo_");l(this,"representationId_");l(this,"bandwidth_");l(this,"getBaseUris_");l(this,"urlParams_");l(this,"periodStart_");l(this,"periodEnd_");l(this,"initSegmentReference_");l(this,"aesKey_");l(this,"segmentSequenceCadence_");l(this,"timeline_");l(this,"references");this.dynamic_=t,this.templateInfo_=i,this.representationId_=r,this.bandwidth_=s,this.getBaseUris_=n,this.urlParams_=a,this.periodStart_=o,this.periodEnd_=c,this.initSegmentReference_=d,this.aesKey_=u,this.segmentSequenceCadence_=m,this.timeline_=f,this.fitTimeline()}getNumReferences(){return this.templateInfo_?this.templateInfo_.timeline.length:0}release(){super.release(),this.templateInfo_=null}evict(t){if(!this.templateInfo_)return;p.debug(`${this.representationId_} Evicting at ${t}`);let i=this.templateInfo_.timeline;if(!i)return;let r=0;for(;r<i.length&&i[r].end+this.periodStart_<=t;)r++;r>0&&(this.templateInfo_.timeline=i.slice(r),this.references.length>=r&&(this.references=this.references.slice(r)),this.numEvicted_+=r,this.getNumReferences()===0&&this.release())}appendTemplateInfo(t,i,r,s,n){if(this.updateInitSegmentReference(s),this.dynamic_=n,!this.templateInfo_)this.templateInfo_=t,this.periodStart_=i,this.periodEnd_=r;else{if(this.templateInfo_.unscaledPresentationTimeOffset!==t.unscaledPresentationTimeOffset){let c=t.unscaledPresentationTimeOffset-this.templateInfo_.unscaledPresentationTimeOffset;p.error("Possibly suboptimal manifest detected!","presentationTimeOffset is "+t.unscaledPresentationTimeOffset,"which differs "+c+" from the cache template.");for(let d=0;d<t.timeline.length;d++){let u=t.timeline[d];u.unscaledStart+=c,u.unscaledEnd+=c,u.start=(u.unscaledStart+c)/t.timescale,u.end=(u.unscaledEnd+c)/t.timescale}}this.templateInfo_.mediaTemplate!==t.mediaTemplate&&(this.templateInfo_.mediaTemplate=t.mediaTemplate);let a=this.templateInfo_.timeline,o;if(a.length){let c=a[a.length-1];o=t.timeline.filter(d=>d.end>c.end)}else o=t.timeline.slice();o.length>0&&(p.debug(`Appending ${o.length} entries`),this.templateInfo_.timeline.push(...o)),this.periodEnd_!==r&&(this.periodEnd_=r)}this.fitTimeline()}updateInitSegmentReference(t){if(this.initSegmentReference_!==t){this.initSegmentReference_=t;for(let i of this.references)i&&i.updateInitSegmentReference(t)}}isBeforeFirstEntry(t){if(this.templateInfo_&&this.templateInfo_.timeline&&this.templateInfo_.timeline.length){let r=this.templateInfo_.timeline;return t<r[0].start+this.periodStart_}else return!1}fitTimeline(){if(!this.templateInfo_||this.getIsImmutable())return;let t=this.templateInfo_.timeline;v.assert(t,"Timeline should be non-null!");let i=[];for(let r of t)r.start>=this.periodEnd_||r.end<=0||i.push(r);this.templateInfo_.timeline=i,this.evict(this.periodStart_)}getTimeline(){if(!this.templateInfo_)return[];let t=this.templateInfo_.timeline;return v.assert(t,"Timeline should be non-null!"),t}find(t){if(p.debug(`Find ${t}`),this.isBeforeFirstEntry(t))return this.numEvicted_;if(!this.templateInfo_)return null;let i=this.templateInfo_.timeline;if(t<this.periodStart_||t>=this.periodEnd_)return null;let r=i.length-1,s=ye.binarySearch(i,c=>c.start+this.periodStart_<=t)-1;if(s<0)return null;let n=i[s],a=n.start+this.periodStart_,o;return s<r?o=i[s+1].start+this.periodStart_:this.periodEnd_===1/0?o=n.end+this.periodStart_:o=this.periodEnd_,t>=a&&t<o?s+this.numEvicted_:null}get(t){let i=t-this.numEvicted_;if(i<0||i>=this.getNumReferences()||!this.templateInfo_)return null;let r=this.references[i];if(!r){let s=this.templateInfo_.timeline[i],n=s.segmentPosition,a=s.unscaledStart+this.templateInfo_.unscaledPresentationTimeOffset,o=this.periodStart_-this.templateInfo_.scaledPresentationTimeOffset,c=this.periodStart_+s.end,d=c;i===this.getNumReferences()-1&&this.periodEnd_!==1/0&&(this.dynamic_&&Math.abs(d-this.periodEnd_)>.1?d=Math.min(d,this.periodEnd_):d=this.periodEnd_);let u=this.templateInfo_.codecs,m=this.templateInfo_.mimeType,f=this.templateInfo_.bandwidth,g=[],_=!1;if(s.partialSegments&&this.templateInfo_&&this.templateInfo_.mediaTemplate&&(_=this.templateInfo_.mediaTemplate.includes("$SubNumber$")),_){let S=(s.end-s.start)/s.partialSegments;for(let b=0;b<s.partialSegments;b++){let E=s.start+S*b,C=E+S,A=b,w=null,M=()=>this.templateInfo_?(w==null&&(w=y.createUris_(this.templateInfo_.mediaTemplate,this.representationId_,n,this.bandwidth_,a,A,this.getBaseUris_,this.urlParams_)),w):[],x=new Se(this.periodStart_+E,this.periodStart_+C,M,0,null,this.initSegmentReference_,o,this.periodStart_,this.periodEnd_,[],"",null,null,Se.Status.AVAILABLE,this.aesKey_);x.codecs=u,x.mimeType=m,x.bandwidth=f,this.segmentSequenceCadence_==0?b>0&&x.markAsNonIndependent():b%this.segmentSequenceCadence_!=0&&x.markAsNonIndependent(),g.push(x)}}let T=()=>g.length>0||!this.templateInfo_?[]:y.createUris_(this.templateInfo_.mediaTemplate,this.representationId_,n,this.bandwidth_,a,null,this.getBaseUris_,this.urlParams_);r=new Se(this.periodStart_+s.start,d,T,0,null,this.initSegmentReference_,o,this.periodStart_,this.periodEnd_,g,"",null,null,Se.Status.AVAILABLE,this.aesKey_,g.length>0),r.codecs=u,r.mimeType=m,r.trueEndTime=c,r.bandwidth=f,this.references[i]=r}return r}forEachTopLevelReference(t){this.fitTimeline();for(let i=0;i<this.getNumReferences();i++){let r=this.get(i+this.numEvicted_);r&&t(r)}}static createUris_(t,i,r,s,n,a,o,c){let d=Me.fillUriTemplate(t,i,r,a,s||null,n);return fe.resolveUris(o(),[d],c())}continuityTimeline(){return this.timeline_}};/*! @license
607
607
  * Shaka Player
608
608
  * Copyright 2016 Google LLC
609
609
  * SPDX-License-Identifier: Apache-2.0
@@ -611,11 +611,11 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
611
611
  * Shaka Player
612
612
  * Copyright 2016 Google LLC
613
613
  * SPDX-License-Identifier: Apache-2.0
614
- */var re=class re{constructor(){l(this,"variants_");l(this,"audioStreams_");l(this,"videoStreams_");l(this,"textStreams_");l(this,"imageStreams_");l(this,"useStreamOnce_");l(this,"usedPeriodIds_");l(this,"streamCollections_");this.variants_=[],this.audioStreams_=[],this.videoStreams_=[],this.textStreams_=[],this.imageStreams_=[],this.useStreamOnce_=!1,this.usedPeriodIds_=new Set;let e=R.ContentType;this.streamCollections_=new Map().set(e.AUDIO,this.audioStreams_).set(e.VIDEO,this.videoStreams_).set(e.TEXT,this.textStreams_).set(e.IMAGE,this.imageStreams_)}release(){let e=this.audioStreams_.concat(this.videoStreams_,this.textStreams_,this.imageStreams_);for(let t of e)t.segmentIndex&&t.segmentIndex.release();this.audioStreams_=[],this.videoStreams_=[],this.textStreams_=[],this.imageStreams_=[],this.variants_=[],this.useStreamOnce_=!1,this.usedPeriodIds_.clear(),this.streamCollections_.clear()}getVariants(){return this.variants_}getTextStreams(){return this.textStreams_.slice()}getImageStreams(){return this.imageStreams_}deleteStream(e,t){if(!e)return;let i=this.streamCollections_.get(e.type)||[];for(let r of i){re.removeFromMatchedStreams_(r,e);let s=re.getOptionalStreams(r);for(let n of s)re.removeFromMatchedStreams_(n,e)}e.segmentIndex&&e.closeSegmentIndex(),this.usedPeriodIds_.delete(t)}static removeFromMatchedStreams_(e,t){var i;e.matchedStreams=(i=e.matchedStreams)==null?void 0:i.filter(r=>r!==t)}static toStreamMap_(e,t){return new Map(e.map(i=>[t(i),i]))}getStreamsPerPeriod_(e,t){let i=R.ContentType,r=[],s=[],n=[],a=[];for(let o of e){let c=re.toStreamMap_(o.audioStreams,re.generateAudioKey_),d=re.toStreamMap_(o.videoStreams,re.generateVideoKey_),u=re.toStreamMap_(o.textStreams,re.generateTextKey_),m=re.toStreamMap_(o.imageStreams,re.generateImageKey_);if(t){let f=re.dummyStream_(i.TEXT);u.set(re.generateTextKey_(f),f);let g=re.dummyStream_(i.IMAGE);m.set(re.generateImageKey_(g),g)}r.push(c),s.push(d),n.push(u),a.push(m)}return{audioStreamsPerPeriod:r,videoStreamsPerPeriod:s,textStreamsPerPeriod:n,imageStreamsPerPeriod:a}}async combinePeriods(e,t,i=!1){let r=R.ContentType;if(!t&&e.length==1){let{audioStreamsPerPeriod:a,videoStreamsPerPeriod:o,textStreamsPerPeriod:c,imageStreamsPerPeriod:d}=this.getStreamsPerPeriod_(e,!1);this.audioStreams_=Array.from(a[0].values()),this.videoStreams_=Array.from(o[0].values()),this.textStreams_=Array.from(c[0].values()),this.imageStreams_=Array.from(d[0].values())}else{let a=i?this.usedPeriodIds_.size:0,o=-1;for(let f=0;f<e.length;f++){let g=e[f];this.usedPeriodIds_.has(g.id)||(this.usedPeriodIds_.add(g.id),o==-1&&(o=f))}if(o==-1)return;let{audioStreamsPerPeriod:c,videoStreamsPerPeriod:d,textStreamsPerPeriod:u,imageStreamsPerPeriod:m}=this.getStreamsPerPeriod_(e,!0);await Promise.all([this.combine_(this.audioStreams_,c,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.videoStreams_,d,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.textStreams_,u,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.imageStreams_,m,o,re.cloneStream_,re.concatenateStreams_,a)])}let s=0,n=[];if(!this.videoStreams_.length||!this.audioStreams_.length){let a=this.videoStreams_.length?this.videoStreams_:this.audioStreams_;for(let o of a){let c=s++,d=o.bandwidth||0;o.dependencyStream&&(d+=o.dependencyStream.bandwidth||0),n.push({id:c,language:o.language,disabledUntilTime:0,primary:o.primary,audio:o.type==r.AUDIO?o:null,video:o.type==r.VIDEO?o:null,bandwidth:d,drmInfos:o.drmInfos,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}}else for(let a of this.audioStreams_)for(let o of this.videoStreams_){let c=de.getCommonDrmInfos(a.drmInfos,o.drmInfos);if(a.drmInfos.length&&o.drmInfos.length&&!c.length){p.warning("Incompatible DRM in audio & video, skipping variant creation.",a,o);continue}let d=(a.bandwidth||0)+(o.bandwidth||0);a.dependencyStream&&(d+=a.dependencyStream.bandwidth||0),o.dependencyStream&&(d+=o.dependencyStream.bandwidth||0);let u=s++;n.push({id:u,language:a.language,disabledUntilTime:0,primary:a.primary,audio:a,video:o,bandwidth:d,drmInfos:c,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}this.variants_=n}static async combineDbStreams(e){let t=R.ContentType;if(e.length==1)return e[0];let i=e.map(f=>new Map(f.filter(g=>g.type===t.AUDIO).map(g=>[re.generateAudioKey_(g),g]))),r=e.map(f=>new Map(f.filter(g=>g.type===t.VIDEO).map(g=>[re.generateVideoKey_(g),g]))),s=e.map(f=>new Map(f.filter(g=>g.type===t.TEXT).map(g=>[re.generateTextKey_(g),g]))),n=e.map(f=>new Map(f.filter(g=>g.type===t.IMAGE).map(g=>[re.generateImageKey_(g),g])));for(let f of s){let g=re.dummyStreamDB_(t.TEXT);f.set(re.generateTextKey_(g),g)}for(let f of n){let g=re.dummyStreamDB_(t.IMAGE);f.set(re.generateImageKey_(g),g)}let a=new re,[o,c,d,u]=await Promise.all([i,r,s,n].map(f=>a.combine_([],f,0,re.cloneStreamDB_,re.concatenateStreamDBs_,0))),m=0;if(!c.length||!o.length){let f=c.concat(o);for(let g of f)g.variantIds=[m++]}else for(let f of o)for(let g of c){let _=m++;g.variantIds.push(_),f.variantIds.push(_)}return c.concat(o).concat(d).concat(u)}async combine_(e,t,i,r,s,n){let a=[];for(let o=0;o<t.length;o++)o>=i?a.push(new Set(t[o].values())):a.push(new Set);for(let o of e)if(!await this.extendExistingOutputStream_(o,t,i,s,a,n))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.PERIOD_FLATTENING_FAILED);for(let o of a)for(let c of o){let d=this.createNewOutputStream_(e,c,t,r,s,a);d&&e.push(d)}for(let o of a)for(let c of o)if(!(re.isDummy_(c)||!e.some(u=>this.areAVStreamsCompatible_(c,u))))throw p.error("Unused stream in period-flattening!",c,e),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.PERIOD_FLATTENING_FAILED);return e}async extendExistingOutputStream_(e,t,i,r,s,n){return this.findMatchesInAllPeriods_(t,e,n>0),v.assert(e.createSegmentIndex,"outputStream should be a Stream type!"),e.matchedStreams?(e.segmentIndex&&await re.extendOutputSegmentIndex_(e,i+n),re.extendOutputStream_(e,i,r,s,n),!0):(p.error("No matches extending output stream!",e,t),!1)}static async extendOutputSegmentIndex_(e,t){let i=[],r=e.matchedStreams;v.assert(r,"matched streams should be valid");for(let s=t;s<r.length;s++){let n=r[s];i.push(n.createSegmentIndex());let a=re.getOptionalStreams(n);for(let o of a)o.segmentIndex||i.push(o.createSegmentIndex())}if(await Promise.all(i),e.segmentIndex instanceof Mi)for(let s=t;s<r.length;s++){let n=r[s];v.assert(n.segmentIndex,"stream should have a segmentIndex."),n.segmentIndex&&e.segmentIndex.appendSegmentIndex(n.segmentIndex)}}createNewOutputStream_(e,t,i,r,s,n){if(re.isDummy_(t))return null;let a=r(t);return this.findMatchesInAllPeriods_(i,a),a.createSegmentIndex&&(a.createSegmentIndex=async()=>{a.segmentIndex||(a.segmentIndex=new Mi,await re.extendOutputSegmentIndex_(a,0))},a.closeSegmentIndex=()=>{if(a.segmentIndex&&(a.segmentIndex.release(),a.segmentIndex=null),a.matchedStreams)for(let o of a.matchedStreams)o.segmentIndex&&!re.isStreamActivelyUsed_(o,a,e)&&(o.segmentIndex.release(),o.segmentIndex=null)}),!a.matchedStreams||!a.matchedStreams.length?null:(re.extendOutputStream_(a,0,s,n,0),a)}static extendOutputStream_(e,t,i,r,s){let n=R.ContentType,a=e.matchedStreams;v.assert(e.matchedStreams,"matchedStreams should be non-null");let o=t+s;for(let c=o;c<a.length;c++){let d=a[c];i(e,d);let u=!0;if(e.type==n.AUDIO&&ve.relatedness(e.language,d.language)==0&&(u=!1),u){let m=r[c-s];if(m&&m.delete(d),d.fullMimeTypes)for(let f of d.fullMimeTypes.values())e.fullMimeTypes.add(f)}}}static cloneStream_(e){let t=Object.assign({},e);return t.originalId=null,t.createSegmentIndex=()=>Promise.resolve(),t.closeSegmentIndex=()=>{},t.roles=t.roles.slice(),t.segmentIndex=null,t.emsgSchemeIdUris=[],t.keyIds=new Set(e.keyIds),t.closedCaptions=e.closedCaptions?new Map(e.closedCaptions):null,t.trickModeVideo=null,t.dependencyStream=null,t}static cloneStreamDB_(e){let t=Object.assign({},e);return t.roles=t.roles.slice(),t.keyIds=new Set(e.keyIds),t.segments=[],t.variantIds=[],t.closedCaptions=e.closedCaptions?new Map(e.closedCaptions):null,t}static combineArrays_(e,t){e||(e=[]);for(let i of t)e.includes(i)||e.push(i);return e}static concatenateStreams_(e,t){e.roles=re.combineArrays_(e.roles,t.roles),t.emsgSchemeIdUris&&(e.emsgSchemeIdUris=re.combineArrays_(e.emsgSchemeIdUris,t.emsgSchemeIdUris));for(let r of t.keyIds)e.keyIds.add(r);if(e.originalId==null)e.originalId=t.originalId;else{let r=t.originalId||"";r&&!e.originalId.endsWith(r)&&(e.originalId+=","+r)}let i=de.getCommonDrmInfos(e.drmInfos,t.drmInfos);if(t.drmInfos.length&&e.drmInfos.length&&!i.length)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.INCONSISTENT_DRM_ACROSS_PERIODS);if(e.drmInfos=i,e.encrypted=e.encrypted||t.encrypted,t.closedCaptions){e.closedCaptions||(e.closedCaptions=new Map);for(let[r,s]of t.closedCaptions)e.closedCaptions.set(r,s)}e.bandwidth&&t.bandwidth&&(e.bandwidth=Math.max(e.bandwidth,t.bandwidth));for(let r of re.OptionalStreamTypes_)re.combineOptionalStream_(e,t,r)}static combineOptionalStream_(e,t,i){let r=t[i]||null,s=e[i]||null;r?(s||(s=re.cloneStream_(r),s.matchedStreams=[],s.createSegmentIndex=async()=>{if(s.segmentIndex)return;let n=new Mi;v.assert(s.matchedStreams,`${i} matched streams should exist`);for(let a of s.matchedStreams)a.segmentIndex||await a.createSegmentIndex(),v.assert(a.segmentIndex,`${i} segment index should exist`),n.appendSegmentIndex(a.segmentIndex);s.segmentIndex=n},e[i]=s),s.matchedStreams.push(r),re.concatenateStreams_(s,r)):s&&(s.matchedStreams.push(t),re.concatenateStreams_(s,t))}static concatenateStreamDBs_(e,t){e.roles=re.combineArrays_(e.roles,t.roles);for(let i of t.keyIds)e.keyIds.add(i);if(e.encrypted=e.encrypted&&t.encrypted,e.segments.push(...t.segments),t.closedCaptions){e.closedCaptions||(e.closedCaptions=new Map);for(let[i,r]of t.closedCaptions)e.closedCaptions.set(i,r)}}findMatchesInAllPeriods_(e,t,i=!1){let r=i?t.matchedStreams:[];for(let s of e){let n=this.findBestMatchInPeriod_(s,t);if(!n)return;r.push(n)}t.matchedStreams=r}findBestMatchInPeriod_(e,t){let i={audio:re.generateAudioKey_,video:re.generateVideoKey_,text:re.generateTextKey_,image:re.generateImageKey_}[t.type],r=null,s=i(t);if(e.has(s))r=e.get(s);else{let n={audio:(o,c)=>this.areAVStreamsCompatible_(o,c),video:(o,c)=>this.areAVStreamsCompatible_(o,c),text:re.areTextStreamsCompatible_,image:re.areImageStreamsCompatible_}[t.type],a={audio:re.isAudioStreamBetterMatch_,video:re.isVideoStreamBetterMatch_,text:re.isTextStreamBetterMatch_,image:re.isImageStreamBetterMatch_}[t.type];for(let o of e.values())n(t,o)&&t.fastSwitching==o.fastSwitching&&(!r||a(t,r,o))&&(r=o)}return this.useStreamOnce_&&!re.isDummy_(r)&&e.delete(i(r)),r}static areAVStreamsExactMatch_(e,t){return e.mimeType===t.mimeType&&e.codecs===t.codecs}static areAVStreamsCodecsCompatible_(e,t){return e.mimeType!=t.mimeType?!1:re.getCodec_(e.codecs)===re.getCodec_(t.codecs)}setUseStreamOnce(e){this.useStreamOnce_=e}areAVStreamsCompatible_(e,t){return!(e.drmInfos&&!de.areDrmCompatible(e.drmInfos,t.drmInfos))}static areTextStreamsCompatible_(e,t){return t.language?!(e.forced!==t.forced||ve.relatedness(e.language,t.language)==0||t.kind!=e.kind):!0}static areImageStreamsCompatible_(e,t){return!0}static isAudioStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareCodecs_(e,t,i);if(a===r)return!0;if(a===n)return!1;let o=ve.relatedness(e.language,t.language),c=ve.relatedness(e.language,i.language);if(c>o)return!0;if(c<o)return!1;if(t.label!==i.label){if(e.label===t.label)return!1;if(e.label===i.label)return!0}if(e.roles.length){let m=t.roles.filter(g=>e.roles.includes(g)),f=i.roles.filter(g=>e.roles.includes(g));if(f.length>m.length)return!0;if(f.length<m.length)return!1;if(i.roles.length!==t.roles.length)return i.roles.length<t.roles.length}else{if(!i.roles.length&&t.roles.length)return!0;if(i.roles.length&&!t.roles.length)return!1}if(!t.primary&&i.primary)return!0;if(t.primary&&!i.primary)return!1;let d=re.compareClosestPreferLower(e.channelsCount,t.channelsCount,i.channelsCount);if(d==r)return!0;if(d==n)return!1;let u=re.compareClosestPreferLower(e.audioSamplingRate,t.audioSamplingRate,i.audioSamplingRate);if(u==r)return!0;if(u==n)return!1;if(e.bandwidth){let m=re.compareClosestPreferMinimalAbsDiff_(e.bandwidth,t.bandwidth,i.bandwidth);if(m==r)return!0;if(m==n)return!1}return!1}static isVideoStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareCodecs_(e,t,i);if(a===r)return!0;if(a===n)return!1;let o=re.compareClosestPreferLower(e.width*e.height,t.width*t.height,i.width*i.height);if(o==r)return!0;if(o==n)return!1;if(e.frameRate){let c=re.compareClosestPreferLower(e.frameRate,t.frameRate,i.frameRate);if(c==r)return!0;if(c==n)return!1}if(e.bandwidth){let c=re.compareClosestPreferMinimalAbsDiff_(e.bandwidth,t.bandwidth,i.bandwidth);if(c==r)return!0;if(c==n)return!1}return!1}static isTextStreamBetterMatch_(e,t,i){let r=ve.relatedness(e.language,t.language),s=ve.relatedness(e.language,i.language);if(s>r)return!0;if(s<r)return!1;if(!t.primary&&i.primary)return!0;if(t.primary&&!i.primary)return!1;if(t.label!==i.label){if(e.label===t.label)return!1;if(e.label===i.label)return!0}if(e.roles.length){let n=t.roles.filter(o=>e.roles.includes(o)),a=i.roles.filter(o=>e.roles.includes(o));if(a.length>n.length)return!0;if(a.length<n.length)return!1}else{if(!i.roles.length&&t.roles.length)return!0;if(i.roles.length&&!t.roles.length)return!1}return i.mimeType==e.mimeType&&i.codecs==e.codecs&&(t.mimeType!=e.mimeType||t.codecs!=e.codecs)}static isImageStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareClosestPreferLower(e.width*e.height,t.width*t.height,i.width*i.height);return a==r?!0:(a==n,!1)}static dummyStreamDB_(e){return{id:0,originalId:"",groupId:null,primary:!1,type:e,mimeType:"",codecs:"",supplementalCodecs:"",language:"",originalLanguage:null,label:null,width:null,height:null,encrypted:!1,keyIds:new Set,segments:[],variantIds:[],roles:[],forced:!1,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,closedCaptions:null,external:!1,fastSwitching:!1,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1}}static dummyStream_(e){return se.createStream({originalId:"",segmentIndex:new Ze([]),type:e})}static compareClosestPreferLower(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse;if(t==e&&e!=i)return n;if(i==e&&e!=t)return r;if(t>e){if(i<=e||i-e<t-e)return r;if(i-e>t-e)return n}else{if(i>e)return n;if(e-i<e-t)return r;if(e-i>e-t)return n}return s}static compareCodecs_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.areAVStreamsExactMatch_(e,t),o=re.areAVStreamsExactMatch_(e,i);if(a&&!o)return n;if(!a&&o)return r;let c=re.areAVStreamsCodecsCompatible_(e,t),d=re.areAVStreamsCodecsCompatible_(e,i);return c&&!d?n:!c&&d?r:s}static compareClosestPreferMinimalAbsDiff_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=Math.abs(e-t),o=Math.abs(e-i);return o<a?r:a<o?n:s}static isDummy_(e){let t=R.ContentType;switch(e.type){case t.TEXT:return!e.language;case t.IMAGE:return!e.tilesLayout;default:return!1}}static generateVideoKey_(e){var t,i;return re.generateKey_([e.fastSwitching,e.width,e.frameRate,e.codecs,e.mimeType,e.label,e.roles,e.closedCaptions?Array.from(e.closedCaptions.entries()):null,e.bandwidth,(i=(t=e.dependencyStream)==null?void 0:t.baseOriginalId)!=null?i:e.baseOriginalId,Array.from(e.keyIds)])}static generateAudioKey_(e){var t,i;return re.generateKey_([e.fastSwitching,e.channelsCount,e.language,e.bandwidth,e.label,e.codecs,e.mimeType,e.roles,e.audioSamplingRate,e.primary,(i=(t=e.dependencyStream)==null?void 0:t.baseOriginalId)!=null?i:e.baseOriginalId,Array.from(e.keyIds)])}static generateTextKey_(e){return re.generateKey_([e.language,e.label,e.codecs,e.mimeType,e.bandwidth,e.roles])}static generateImageKey_(e){return re.generateKey_([e.width,e.codecs,e.mimeType])}static generateKey_(e){return JSON.stringify(e)}static getCodec_(e){return re.memoizedCodecs.getOrInsertComputed(e,()=>N.getNormalizedCodec(e))}static isStreamActivelyUsed_(e,t,i){for(let r of i)if(r!==t&&r.segmentIndex&&r.matchedStreams&&r.matchedStreams.includes(e))return p.v2(`Stream ${e.id} is already used in output stream ${r.id}, cannot close it now.`),!0;return p.v2(`Stream ${e.id} not used anywhere else besides ${t.id}, good to close.`),!1}static getOptionalStreams(e){let t=[];for(let i of re.OptionalStreamTypes_){let r=e[i];r&&t.push(r)}return t}};l(re,"OptionalStreamTypes_",["trickModeVideo","dependencyStream"]),l(re,"BetterOrWorse",{BETTER:1,EQUAL:0,WORSE:-1}),l(re,"memoizedCodecs",new Map);var gr=re;/*! @license
614
+ */var re=class re{constructor(){l(this,"variants_");l(this,"audioStreams_");l(this,"videoStreams_");l(this,"textStreams_");l(this,"imageStreams_");l(this,"useStreamOnce_");l(this,"usedPeriodIds_");l(this,"streamCollections_");this.variants_=[],this.audioStreams_=[],this.videoStreams_=[],this.textStreams_=[],this.imageStreams_=[],this.useStreamOnce_=!1,this.usedPeriodIds_=new Set;let e=R.ContentType;this.streamCollections_=new Map().set(e.AUDIO,this.audioStreams_).set(e.VIDEO,this.videoStreams_).set(e.TEXT,this.textStreams_).set(e.IMAGE,this.imageStreams_)}release(){let e=this.audioStreams_.concat(this.videoStreams_,this.textStreams_,this.imageStreams_);for(let t of e)t.segmentIndex&&t.segmentIndex.release();this.audioStreams_=[],this.videoStreams_=[],this.textStreams_=[],this.imageStreams_=[],this.variants_=[],this.useStreamOnce_=!1,this.usedPeriodIds_.clear(),this.streamCollections_.clear()}getVariants(){return this.variants_}getTextStreams(){return this.textStreams_.slice()}getImageStreams(){return this.imageStreams_}deleteStream(e,t){if(!e)return;let i=this.streamCollections_.get(e.type)||[];for(let r of i){re.removeFromMatchedStreams_(r,e);let s=re.getOptionalStreams(r);for(let n of s)re.removeFromMatchedStreams_(n,e)}e.segmentIndex&&e.closeSegmentIndex(),this.usedPeriodIds_.delete(t)}static removeFromMatchedStreams_(e,t){var i;e.matchedStreams=(i=e.matchedStreams)==null?void 0:i.filter(r=>r!==t)}static toStreamMap_(e,t){return new Map(e.map(i=>[t(i),i]))}getStreamsPerPeriod_(e,t){let i=R.ContentType,r=[],s=[],n=[],a=[];for(let o of e){let c=re.toStreamMap_(o.audioStreams,re.generateAudioKey_),d=re.toStreamMap_(o.videoStreams,re.generateVideoKey_),u=re.toStreamMap_(o.textStreams,re.generateTextKey_),m=re.toStreamMap_(o.imageStreams,re.generateImageKey_);if(t){let f=re.dummyStream_(i.TEXT);u.set(re.generateTextKey_(f),f);let g=re.dummyStream_(i.IMAGE);m.set(re.generateImageKey_(g),g)}r.push(c),s.push(d),n.push(u),a.push(m)}return{audioStreamsPerPeriod:r,videoStreamsPerPeriod:s,textStreamsPerPeriod:n,imageStreamsPerPeriod:a}}async combinePeriods(e,t,i=!1){let r=R.ContentType;if(!t&&e.length==1){let{audioStreamsPerPeriod:a,videoStreamsPerPeriod:o,textStreamsPerPeriod:c,imageStreamsPerPeriod:d}=this.getStreamsPerPeriod_(e,!1);this.audioStreams_=Array.from(a[0].values()),this.videoStreams_=Array.from(o[0].values()),this.textStreams_=Array.from(c[0].values()),this.imageStreams_=Array.from(d[0].values())}else{let a=i?this.usedPeriodIds_.size:0,o=-1;for(let f=0;f<e.length;f++){let g=e[f];this.usedPeriodIds_.has(g.id)||(this.usedPeriodIds_.add(g.id),o==-1&&(o=f))}if(o==-1)return;let{audioStreamsPerPeriod:c,videoStreamsPerPeriod:d,textStreamsPerPeriod:u,imageStreamsPerPeriod:m}=this.getStreamsPerPeriod_(e,!0);await Promise.all([this.combine_(this.audioStreams_,c,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.videoStreams_,d,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.textStreams_,u,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.imageStreams_,m,o,re.cloneStream_,re.concatenateStreams_,a)])}let s=0,n=[];if(!this.videoStreams_.length||!this.audioStreams_.length){let a=this.videoStreams_.length?this.videoStreams_:this.audioStreams_;for(let o of a){let c=s++,d=o.bandwidth||0;o.dependencyStream&&(d+=o.dependencyStream.bandwidth||0),n.push({id:c,language:o.language,disabledUntilTime:0,primary:o.primary,audio:o.type==r.AUDIO?o:null,video:o.type==r.VIDEO?o:null,bandwidth:d,drmInfos:o.drmInfos,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}}else for(let a of this.audioStreams_)for(let o of this.videoStreams_){let c=de.getCommonDrmInfos(a.drmInfos,o.drmInfos);if(a.drmInfos.length&&o.drmInfos.length&&!c.length){p.warning("Incompatible DRM in audio & video, skipping variant creation.",a,o);continue}let d=(a.bandwidth||0)+(o.bandwidth||0);a.dependencyStream&&(d+=a.dependencyStream.bandwidth||0),o.dependencyStream&&(d+=o.dependencyStream.bandwidth||0);let u=s++;n.push({id:u,language:a.language,disabledUntilTime:0,primary:a.primary,audio:a,video:o,bandwidth:d,drmInfos:c,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}this.variants_=n}static async combineDbStreams(e){let t=R.ContentType;if(e.length==1)return e[0];let i=e.map(f=>new Map(f.filter(g=>g.type===t.AUDIO).map(g=>[re.generateAudioKey_(g),g]))),r=e.map(f=>new Map(f.filter(g=>g.type===t.VIDEO).map(g=>[re.generateVideoKey_(g),g]))),s=e.map(f=>new Map(f.filter(g=>g.type===t.TEXT).map(g=>[re.generateTextKey_(g),g]))),n=e.map(f=>new Map(f.filter(g=>g.type===t.IMAGE).map(g=>[re.generateImageKey_(g),g])));for(let f of s){let g=re.dummyStreamDB_(t.TEXT);f.set(re.generateTextKey_(g),g)}for(let f of n){let g=re.dummyStreamDB_(t.IMAGE);f.set(re.generateImageKey_(g),g)}let a=new re,[o,c,d,u]=await Promise.all([i,r,s,n].map(f=>a.combine_([],f,0,re.cloneStreamDB_,re.concatenateStreamDBs_,0))),m=0;if(!c.length||!o.length){let f=c.concat(o);for(let g of f)g.variantIds=[m++]}else for(let f of o)for(let g of c){let _=m++;g.variantIds.push(_),f.variantIds.push(_)}return c.concat(o).concat(d).concat(u)}async combine_(e,t,i,r,s,n){let a=[];for(let o=0;o<t.length;o++)o>=i?a.push(new Set(t[o].values())):a.push(new Set);for(let o of e)if(!await this.extendExistingOutputStream_(o,t,i,s,a,n))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.PERIOD_FLATTENING_FAILED);for(let o of a)for(let c of o){let d=this.createNewOutputStream_(e,c,t,r,s,a);d&&e.push(d)}for(let o of a)for(let c of o)if(!(re.isDummy_(c)||!e.some(u=>this.areAVStreamsCompatible_(c,u))))throw p.error("Unused stream in period-flattening!",c,e),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.PERIOD_FLATTENING_FAILED);return e}async extendExistingOutputStream_(e,t,i,r,s,n){return this.findMatchesInAllPeriods_(t,e,n>0),v.assert(e.createSegmentIndex,"outputStream should be a Stream type!"),e.matchedStreams?(e.segmentIndex&&await re.extendOutputSegmentIndex_(e,i+n),re.extendOutputStream_(e,i,r,s,n),!0):(p.error("No matches extending output stream!",e,t),!1)}static async extendOutputSegmentIndex_(e,t){let i=[],r=e.matchedStreams;v.assert(r,"matched streams should be valid");for(let s=t;s<r.length;s++){let n=r[s];i.push(n.createSegmentIndex());let a=re.getOptionalStreams(n);for(let o of a)o.segmentIndex||i.push(o.createSegmentIndex())}if(await Promise.all(i),e.segmentIndex instanceof Mi)for(let s=t;s<r.length;s++){let n=r[s];v.assert(n.segmentIndex,"stream should have a segmentIndex."),n.segmentIndex&&e.segmentIndex.appendSegmentIndex(n.segmentIndex)}}createNewOutputStream_(e,t,i,r,s,n){if(re.isDummy_(t))return null;let a=r(t);return this.findMatchesInAllPeriods_(i,a),a.createSegmentIndex&&(a.createSegmentIndex=async()=>{a.segmentIndex||(a.segmentIndex=new Mi,await re.extendOutputSegmentIndex_(a,0))},a.closeSegmentIndex=()=>{if(a.segmentIndex&&(a.segmentIndex.release(),a.segmentIndex=null),a.matchedStreams)for(let o of a.matchedStreams)o.segmentIndex&&!re.isStreamActivelyUsed_(o,a,e)&&(o.segmentIndex.release(),o.segmentIndex=null)}),!a.matchedStreams||!a.matchedStreams.length?null:(re.extendOutputStream_(a,0,s,n,0),a)}static extendOutputStream_(e,t,i,r,s){let n=R.ContentType,a=e.matchedStreams;v.assert(e.matchedStreams,"matchedStreams should be non-null");let o=t+s;for(let c=o;c<a.length;c++){let d=a[c];i(e,d);let u=!0;if(e.type==n.AUDIO&&ve.relatedness(e.language,d.language)==0&&(u=!1),u){let m=r[c-s];if(m&&m.delete(d),d.fullMimeTypes)for(let f of d.fullMimeTypes.values())e.fullMimeTypes.add(f)}}}static cloneStream_(e){let t=Object.assign({},e);return t.originalId=null,t.createSegmentIndex=()=>Promise.resolve(),t.closeSegmentIndex=()=>{},t.roles=t.roles.slice(),t.segmentIndex=null,t.emsgSchemeIdUris=[],t.keyIds=new Set(e.keyIds),t.closedCaptions=e.closedCaptions?new Map(e.closedCaptions):null,t.trickModeVideo=null,t.dependencyStream=null,t}static cloneStreamDB_(e){let t=Object.assign({},e);return t.roles=t.roles.slice(),t.keyIds=new Set(e.keyIds),t.segments=[],t.variantIds=[],t.closedCaptions=e.closedCaptions?new Map(e.closedCaptions):null,t}static combineArrays_(e,t){e||(e=[]);for(let i of t)e.includes(i)||e.push(i);return e}static concatenateStreams_(e,t){e.roles=re.combineArrays_(e.roles,t.roles),t.emsgSchemeIdUris&&(e.emsgSchemeIdUris=re.combineArrays_(e.emsgSchemeIdUris,t.emsgSchemeIdUris));for(let r of t.keyIds)e.keyIds.add(r);if(e.originalId==null)e.originalId=t.originalId;else{let r=t.originalId||"";r&&!e.originalId.endsWith(r)&&(e.originalId+=","+r)}let i=de.getCommonDrmInfos(e.drmInfos,t.drmInfos);if(t.drmInfos.length&&e.drmInfos.length&&!i.length)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.INCONSISTENT_DRM_ACROSS_PERIODS);if(e.drmInfos=i,e.encrypted=e.encrypted||t.encrypted,t.closedCaptions){e.closedCaptions||(e.closedCaptions=new Map);for(let[r,s]of t.closedCaptions)e.closedCaptions.set(r,s)}e.bandwidth&&t.bandwidth&&(e.bandwidth=Math.max(e.bandwidth,t.bandwidth));for(let r of re.OptionalStreamTypes_)re.combineOptionalStream_(e,t,r)}static combineOptionalStream_(e,t,i){let r=t[i]||null,s=e[i]||null;r?(s||(s=re.cloneStream_(r),s.matchedStreams=[],s.createSegmentIndex=async()=>{if(s.segmentIndex)return;let n=new Mi;v.assert(s.matchedStreams,`${i} matched streams should exist`);for(let a of s.matchedStreams)a.segmentIndex||await a.createSegmentIndex(),v.assert(a.segmentIndex,`${i} segment index should exist`),n.appendSegmentIndex(a.segmentIndex);s.segmentIndex=n},e[i]=s),s.matchedStreams.push(r),re.concatenateStreams_(s,r)):s&&(s.matchedStreams.push(t),re.concatenateStreams_(s,t))}static concatenateStreamDBs_(e,t){e.roles=re.combineArrays_(e.roles,t.roles);for(let i of t.keyIds)e.keyIds.add(i);if(e.encrypted=e.encrypted&&t.encrypted,e.segments.push(...t.segments),t.closedCaptions){e.closedCaptions||(e.closedCaptions=new Map);for(let[i,r]of t.closedCaptions)e.closedCaptions.set(i,r)}}findMatchesInAllPeriods_(e,t,i=!1){let r=i?t.matchedStreams:[];for(let s of e){let n=this.findBestMatchInPeriod_(s,t);if(!n)return;r.push(n)}t.matchedStreams=r}findBestMatchInPeriod_(e,t){let i={audio:re.generateAudioKey_,video:re.generateVideoKey_,text:re.generateTextKey_,image:re.generateImageKey_}[t.type],r=null,s=i(t);if(e.has(s))r=e.get(s);else{let n={audio:(o,c)=>this.areAVStreamsCompatible_(o,c),video:(o,c)=>this.areAVStreamsCompatible_(o,c),text:re.areTextStreamsCompatible_,image:re.areImageStreamsCompatible_}[t.type],a={audio:re.isAudioStreamBetterMatch_,video:re.isVideoStreamBetterMatch_,text:re.isTextStreamBetterMatch_,image:re.isImageStreamBetterMatch_}[t.type];for(let o of e.values())n(t,o)&&t.fastSwitching==o.fastSwitching&&(!r||a(t,r,o))&&(r=o)}return this.useStreamOnce_&&!re.isDummy_(r)&&e.delete(i(r)),r}static areAVStreamsExactMatch_(e,t){return e.mimeType===t.mimeType&&e.codecs===t.codecs}static areAVStreamsCodecsCompatible_(e,t){return e.mimeType!=t.mimeType?!1:re.getCodec_(e.codecs)===re.getCodec_(t.codecs)}setUseStreamOnce(e){this.useStreamOnce_=e}areAVStreamsCompatible_(e,t){return!(e.drmInfos&&!de.areDrmCompatible(e.drmInfos,t.drmInfos))}static areTextStreamsCompatible_(e,t){return t.language?!(e.forced!==t.forced||ve.relatedness(e.language,t.language)==0||t.kind!=e.kind):!0}static areImageStreamsCompatible_(e,t){return!0}static isAudioStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareCodecs_(e,t,i);if(a===r)return!0;if(a===n)return!1;let o=ve.relatedness(e.language,t.language),c=ve.relatedness(e.language,i.language);if(c>o)return!0;if(c<o)return!1;if(t.label!==i.label){if(e.label===t.label)return!1;if(e.label===i.label)return!0}if(e.roles.length){let m=t.roles.filter(g=>e.roles.includes(g)),f=i.roles.filter(g=>e.roles.includes(g));if(f.length>m.length)return!0;if(f.length<m.length)return!1;if(i.roles.length!==t.roles.length)return i.roles.length<t.roles.length}else{if(!i.roles.length&&t.roles.length)return!0;if(i.roles.length&&!t.roles.length)return!1}if(!t.primary&&i.primary)return!0;if(t.primary&&!i.primary)return!1;let d=re.compareClosestPreferLower(e.channelsCount,t.channelsCount,i.channelsCount);if(d==r)return!0;if(d==n)return!1;let u=re.compareClosestPreferLower(e.audioSamplingRate,t.audioSamplingRate,i.audioSamplingRate);if(u==r)return!0;if(u==n)return!1;if(e.bandwidth){let m=re.compareClosestPreferMinimalAbsDiff_(e.bandwidth,t.bandwidth,i.bandwidth);if(m==r)return!0;if(m==n)return!1}return!1}static isVideoStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareCodecs_(e,t,i);if(a===r)return!0;if(a===n)return!1;let o=re.compareClosestPreferLower(e.width*e.height,t.width*t.height,i.width*i.height);if(o==r)return!0;if(o==n)return!1;if(e.frameRate){let c=re.compareClosestPreferLower(e.frameRate,t.frameRate,i.frameRate);if(c==r)return!0;if(c==n)return!1}if(e.bandwidth){let c=re.compareClosestPreferMinimalAbsDiff_(e.bandwidth,t.bandwidth,i.bandwidth);if(c==r)return!0;if(c==n)return!1}return!1}static isTextStreamBetterMatch_(e,t,i){let r=ve.relatedness(e.language,t.language),s=ve.relatedness(e.language,i.language);if(s>r)return!0;if(s<r)return!1;if(!t.primary&&i.primary)return!0;if(t.primary&&!i.primary)return!1;if(t.label!==i.label){if(e.label===t.label)return!1;if(e.label===i.label)return!0}if(e.roles.length){let n=t.roles.filter(o=>e.roles.includes(o)),a=i.roles.filter(o=>e.roles.includes(o));if(a.length>n.length)return!0;if(a.length<n.length)return!1}else{if(!i.roles.length&&t.roles.length)return!0;if(i.roles.length&&!t.roles.length)return!1}return i.mimeType==e.mimeType&&i.codecs==e.codecs&&(t.mimeType!=e.mimeType||t.codecs!=e.codecs)}static isImageStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareClosestPreferLower(e.width*e.height,t.width*t.height,i.width*i.height);return a==r?!0:(a==n,!1)}static dummyStreamDB_(e){return{id:0,originalId:"",groupId:null,primary:!1,type:e,mimeType:"",codecs:"",supplementalCodecs:"",language:"",originalLanguage:null,label:null,width:null,height:null,encrypted:!1,keyIds:new Set,segments:[],variantIds:[],roles:[],forced:!1,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,closedCaptions:null,external:!1,fastSwitching:!1,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1}}static dummyStream_(e){return se.createStream({originalId:"",segmentIndex:new Ze([]),type:e})}static compareClosestPreferLower(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse;if(t==e&&e!=i)return n;if(i==e&&e!=t)return r;if(t>e){if(i<=e||i-e<t-e)return r;if(i-e>t-e)return n}else{if(i>e)return n;if(e-i<e-t)return r;if(e-i>e-t)return n}return s}static compareCodecs_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.areAVStreamsExactMatch_(e,t),o=re.areAVStreamsExactMatch_(e,i);if(a&&!o)return n;if(!a&&o)return r;let c=re.areAVStreamsCodecsCompatible_(e,t),d=re.areAVStreamsCodecsCompatible_(e,i);return c&&!d?n:!c&&d?r:s}static compareClosestPreferMinimalAbsDiff_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=Math.abs(e-t),o=Math.abs(e-i);return o<a?r:a<o?n:s}static isDummy_(e){let t=R.ContentType;switch(e.type){case t.TEXT:return!e.language;case t.IMAGE:return!e.tilesLayout;default:return!1}}static generateVideoKey_(e){var t,i;return re.generateKey_([e.fastSwitching,e.width,e.frameRate,e.codecs,e.mimeType,e.label,e.roles,e.closedCaptions?Array.from(e.closedCaptions.entries()):null,e.bandwidth,(i=(t=e.dependencyStream)==null?void 0:t.baseOriginalId)!=null?i:e.baseOriginalId,Array.from(e.keyIds)])}static generateAudioKey_(e){var t,i;return re.generateKey_([e.fastSwitching,e.channelsCount,e.language,e.bandwidth,e.label,e.codecs,e.mimeType,e.roles,e.audioSamplingRate,e.primary,(i=(t=e.dependencyStream)==null?void 0:t.baseOriginalId)!=null?i:e.baseOriginalId,Array.from(e.keyIds)])}static generateTextKey_(e){return re.generateKey_([e.language,e.label,e.codecs,e.mimeType,e.bandwidth,e.roles])}static generateImageKey_(e){return re.generateKey_([e.width,e.codecs,e.mimeType])}static generateKey_(e){return JSON.stringify(e)}static getCodec_(e){return re.memoizedCodecs.getOrInsertComputed(e,()=>O.getNormalizedCodec(e))}static isStreamActivelyUsed_(e,t,i){for(let r of i)if(r!==t&&r.segmentIndex&&r.matchedStreams&&r.matchedStreams.includes(e))return p.v2(`Stream ${e.id} is already used in output stream ${r.id}, cannot close it now.`),!0;return p.v2(`Stream ${e.id} not used anywhere else besides ${t.id}, good to close.`),!1}static getOptionalStreams(e){let t=[];for(let i of re.OptionalStreamTypes_){let r=e[i];r&&t.push(r)}return t}};l(re,"OptionalStreamTypes_",["trickModeVideo","dependencyStream"]),l(re,"BetterOrWorse",{BETTER:1,EQUAL:0,WORSE:-1}),l(re,"memoizedCodecs",new Map);var gr=re;/*! @license
615
615
  * Shaka Player
616
616
  * Copyright 2016 Google LLC
617
617
  * SPDX-License-Identifier: Apache-2.0
618
- */var ft=class ft{constructor(){l(this,"config_");l(this,"playerInterface_");l(this,"manifestUris_");l(this,"manifest_");l(this,"globalId_");l(this,"patchLocationNodes_");l(this,"manifestPatchContext_");l(this,"contextCache_");l(this,"continuityCache_");l(this,"parsedPeriodCache_");l(this,"streamMap_");l(this,"indexStreamMap_");l(this,"periodDurations_");l(this,"periodCombiner_");l(this,"updatePeriod_");l(this,"averageUpdateDuration_");l(this,"updateTimer_");l(this,"operationManager_");l(this,"largestPeriodStartTime_");l(this,"lastManifestUpdatePeriodIds_");l(this,"minTotalAvailabilityTimeOffset_");l(this,"lowLatencyMode_");l(this,"contentSteeringManager_");l(this,"gapCount_");l(this,"isLowLatency_");l(this,"eventManager_");l(this,"mediaElement_");l(this,"isTransitionFromDynamicToStatic_");l(this,"lastManifestQueryParams_");l(this,"mpdpatchUrlParamsFn_");l(this,"mpdUrlParamsFn_");l(this,"isPreloadFn_");l(this,"lastCalculatedBaseUris_");l(this,"parsedPrftNodes_");l(this,"contentProtection_");this.config_=null,this.playerInterface_=null,this.manifestUris_=[],this.manifest_=null,this.globalId_=1,this.patchLocationNodes_=[],this.manifestPatchContext_={mpdId:"",type:"",profiles:[],mediaPresentationDuration:null,availabilityTimeOffset:0,getBaseUris:null,publishTime:0},this.contextCache_=new Map,this.continuityCache_=new Map,this.parsedPeriodCache_=new Map,this.streamMap_=new Map,this.indexStreamMap_=new Map,this.periodDurations_=new Map,this.periodCombiner_=new gr,this.updatePeriod_=0,this.averageUpdateDuration_=new er(5),this.updateTimer_=new ae(()=>{if(this.mediaElement_&&!this.config_.continueLoadingWhenPaused&&(this.eventManager_.unlisten(this.mediaElement_,"timeupdate"),this.mediaElement_.paused)){this.eventManager_.listenOnce(this.mediaElement_,"timeupdate",()=>this.onUpdate_());return}this.onUpdate_()}),this.operationManager_=new gi,this.largestPeriodStartTime_=null,this.lastManifestUpdatePeriodIds_=[],this.minTotalAvailabilityTimeOffset_=1/0,this.lowLatencyMode_=!1,this.contentSteeringManager_=null,this.gapCount_=0,this.isLowLatency_=!1,this.eventManager_=new ue,this.mediaElement_=null,this.isTransitionFromDynamicToStatic_=!1,this.lastManifestQueryParams_="",this.mpdpatchUrlParamsFn_=null,this.mpdUrlParamsFn_=null,this.isPreloadFn_=()=>!1,this.lastCalculatedBaseUris_=[],this.parsedPrftNodes_=new Set,this.contentProtection_=new vi}configure(e,t){v.assert(e.dash!=null,"DashManifestConfiguration should not be null!");let i=this.playerInterface_&&e.updatePeriod!=this.config_.updatePeriod&&e.updatePeriod>=0;this.config_=e,t&&(this.isPreloadFn_=t),i&&this.manifest_&&this.manifest_.presentationTimeline.isLive()&&this.updateNow_(),this.contentSteeringManager_&&this.contentSteeringManager_.configure(this.config_),this.periodCombiner_&&this.periodCombiner_.setUseStreamOnce(this.config_.dash.useStreamOnceInPeriodFlattening)}async start(e,t){v.assert(this.config_,"Must call configure() before start()!"),this.lowLatencyMode_=t.isLowLatencyMode(),this.manifestUris_=[e],this.playerInterface_=t;let i=await this.requestManifest_();if(this.playerInterface_&&this.setUpdateTimer_(i),!this.playerInterface_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);return v.assert(this.manifest_,"Manifest should be non-null!"),this.manifest_}stop(){for(let e of this.streamMap_.values())e.segmentIndex&&e.segmentIndex.release();return this.periodCombiner_&&this.periodCombiner_.release(),this.playerInterface_=null,this.config_=null,this.manifestUris_=[],this.manifest_=null,this.streamMap_.clear(),this.indexStreamMap_.clear(),this.contextCache_.clear(),this.continuityCache_.clear(),this.parsedPeriodCache_.clear(),this.manifestPatchContext_={mpdId:"",type:"",profiles:[],mediaPresentationDuration:null,availabilityTimeOffset:0,getBaseUris:null,publishTime:0},this.periodCombiner_=null,this.updateTimer_!=null&&(this.updateTimer_.stop(),this.updateTimer_=null),this.contentSteeringManager_&&this.contentSteeringManager_.destroy(),this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.parsedPrftNodes_.clear(),this.contentProtection_.release(),this.operationManager_.destroy()}async update(){try{await this.requestManifest_()}catch(e){if(!this.playerInterface_||!e)return;v.assert(e instanceof h,"Bad error type"),this.playerInterface_.onError(e)}}onExpirationUpdated(e,t){}onInitialVariantChosen(e){if(this.manifest_&&this.manifest_.presentationTimeline.isLive()){let t=e.video||e.audio;if(t&&t.segmentIndex){let i=this.manifest_.presentationTimeline.getSegmentAvailabilityEnd(),r=t.segmentIndex.find(i);if(r==null)return;let s=t.segmentIndex.get(r);if(!s)return;this.updatePeriod_=s.endTime-i,this.setUpdateTimer_(0)}}}banLocation(e){this.contentSteeringManager_&&this.contentSteeringManager_.banLocation(e)}setMediaElement(e){this.mediaElement_=e}async requestManifest_(){let e=K.RequestType.MANIFEST,t=K.AdvancedRequestType.MPD,i="MPD",r=this.getPatchLocationUris_(),s=this.manifestUris_;if(r.length)s=r.map(m=>fe.applyUrlParams(m,this.mpdpatchUrlParamsFn_)),i="Patch",t=K.AdvancedRequestType.MPD_PATCH;else{if(this.manifestUris_.length>1&&this.contentSteeringManager_){let m=this.contentSteeringManager_.getLocations("Location",!0);m.length&&(s=m)}this.mpdUrlParamsFn_&&(s=s.map(m=>fe.applyUrlParams(m,this.mpdUrlParamsFn_)))}let n=K.makeRequest(s,this.config_.retryParameters),a=Date.now(),o=await this.makeNetworkRequest_(n,e,{type:t});if(!this.playerInterface_)return 0;o.uri&&o.uri!=o.originalUri&&!this.manifestUris_.includes(o.uri)&&this.manifestUris_.unshift(o.uri);let c=new URL(o.uri);this.lastManifestQueryParams_=c.searchParams.toString(),await this.parseManifest(o.data,o.uri,i);let u=(Date.now()-a)/1e3;return this.averageUpdateDuration_.sample(1,u),this.parsedPrftNodes_.clear(),u}parseManifest(e,t,i){let r=I.parseXml(e,i);return this.processParsedMpd(r,t,i)}async processParsedMpd(e,t,i){if(!e)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_INVALID_XML,t);let r=this.config_.dash.manifestPreprocessorTXml,s=st.defaultManifestPreprocessorTXml;if(r!=s&&r(e),i==="Patch")return this.processPatchManifest_(e);let n=e;if(Me.hasLinkedPeriods(n)){let d=Me.processLinkedPeriods(n,t,this.config_.retryParameters,this.playerInterface_.networkingEngine);this.operationManager_.manage(d),n=await d.promise}if(!Me.hasXlinks(n))return this.processManifest_(n,t);let a=this.config_.dash.xlinkFailGracefully,o=Me.processXlinks(n,this.config_.retryParameters,a,t,this.playerInterface_.networkingEngine);this.operationManager_.manage(o);let c=await o.promise;return this.processManifest_(c,t)}async processManifest_(e,t){v.assert(this.config_,"Must call configure() before processManifest_()!"),this.contentSteeringManager_&&this.contentSteeringManager_.clearPreviousLocations(),this.checkMpdEssentialProperties_(e);let i=[t],r=[],s=new Map,n=I.findChildren(e,"Location");for(let z of n){let ge=z.attributes.serviceLocation,Y=I.getContents(z);if(!Y)continue;let X=fe.resolveUris(i,[Y])[0];ge&&(this.contentSteeringManager_?this.contentSteeringManager_.addLocation("Location",ge,X):s.set(ge,X)),r.push(X)}if(this.contentSteeringManager_){let z=this.contentSteeringManager_.getLocations("Location",!0);z.length>0&&(this.manifestUris_=z,i=z)}else r.length&&(this.manifestUris_=r,i=r);this.manifestPatchContext_.mpdId=e.attributes.id||"",this.manifestPatchContext_.publishTime=I.parseAttr(e,"publishTime",I.parseDate)||0,this.patchLocationNodes_=I.findChildren(e,"PatchLocation"),this.mpdpatchUrlParamsFn_=this.findRequestParamFn_(e,"mpdpatch")||null,this.mpdUrlParamsFn_=this.findRequestParamFn_(e,"mpd")||null;let a=Promise.resolve(),o=I.findChild(e,"ContentSteering");if(o&&this.playerInterface_){let z=o.attributes.defaultServiceLocation;if(this.contentSteeringManager_)this.contentSteeringManager_.setBaseUris(i),this.contentSteeringManager_.setDefaultPathwayId(z);else{this.contentSteeringManager_=new ss(this.playerInterface_),this.contentSteeringManager_.configure(this.config_),this.contentSteeringManager_.setManifestType(me.DASH),this.contentSteeringManager_.setBaseUris(i),this.contentSteeringManager_.setDefaultPathwayId(z);let ge=I.getContents(o);ge&&(ge=fe.applyUrlParams(ge,this.findRequestParamFn_(e,"steering")),I.parseAttr(o,"queryBeforeStart",I.parseBoolean,!1)?a=this.contentSteeringManager_.requestInfo(ge):this.contentSteeringManager_.requestInfo(ge))}for(let ge of s.keys()){let Y=s.get(ge);this.contentSteeringManager_.addLocation("Location",ge,Y)}}let c=I.findChildren(e,"BaseURL"),d=!1;if(this.contentSteeringManager_)for(let z of c){let ge=z.attributes.serviceLocation,Y=I.getContents(z);ge&&Y&&(this.contentSteeringManager_.addLocation("BaseURL",ge,Y),d=!0)}if(this.lastCalculatedBaseUris_.splice(0),!d||!this.contentSteeringManager_){let z=c.map(I.getContents);this.lastCalculatedBaseUris_.push(...fe.resolveUris(i,z))}let u=this.contentSteeringManager_,m=this.lastCalculatedBaseUris_,g=ft.makeBaseUriGetter_.call(ft,u,d,m);this.manifestPatchContext_.getBaseUris=g;let _=0;c&&c.length&&(_=I.parseAttr(c[0],"availabilityTimeOffset",I.parseFloat)||0),this.manifestPatchContext_.availabilityTimeOffset=_,this.updatePeriod_=I.parseAttr(e,"minimumUpdatePeriod",I.parseDuration,-1);let T=I.parseAttr(e,"availabilityStartTime",I.parseDate),S=I.parseAttr(e,"timeShiftBufferDepth",I.parseDuration),b=this.config_.dash.ignoreSuggestedPresentationDelay,E=null;b||(E=I.parseAttr(e,"suggestedPresentationDelay",I.parseDuration));let C=this.config_.dash.ignoreMaxSegmentDuration,A=null;C||(A=I.parseAttr(e,"maxSegmentDuration",I.parseDuration));let w=e.attributes.type||"static",M=w=="static"||w=="list";this.manifest_&&this.manifest_.presentationTimeline&&(this.isTransitionFromDynamicToStatic_=this.manifest_.presentationTimeline.isLive()&&M),this.manifestPatchContext_.type=w;let x;if(this.manifest_){x=this.manifest_.presentationTimeline;let z=x.getSegmentAvailabilityStart();for(let ge of this.streamMap_.values())ge.segmentIndex&&ge.segmentIndex.evict(z)}else{let z=this.config_.dash.ignoreMinBufferTime,ge=0;z||(ge=I.parseAttr(e,"minBufferTime",I.parseDuration)||0);let Y=0;E!=null?Y=Math.min(E,S||1/0):this.config_.defaultPresentationDelay>0?Y=this.config_.defaultPresentationDelay:Y=Math.min(ge*1.5,S||1/0),x=new wi(T,Y,this.config_.dash.autoCorrectDrift)}x.setStatic(M),x.isLive()&&!isNaN(this.config_.availabilityWindowOverride)&&(S=this.config_.availabilityWindowOverride),S==null&&(S=1/0),x.setSegmentAvailabilityDuration(S);let L=e.attributes.profiles||"";this.manifestPatchContext_.profiles=L.split(",");let V={dynamic:!M,presentationTimeline:x,period:null,periodInfo:null,adaptationSet:null,representation:null,bandwidth:0,indexRangeWarningGiven:!1,availabilityTimeOffset:_,mediaPresentationDuration:null,profiles:L.split(","),roles:null,urlParams:ft.defaultUrlParams_,name:""};await a;let ee=Me.parseEssentialProperties(e),oe=Me.parseSupplementalProperties(e),le=z=>ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(z.schemeIdUri),H=ee.find(le)||oe.find(le);if(H){let z=this.getURLParametersFunction_(H.element);z&&(V.urlParams=z)}let J=this.findRequestParamFn_(e,"segment");J&&(V.urlParams=J),this.gapCount_=0;let Z=this.parsePeriods_(V,g,e,!1),ce=Z.duration,W=Z.periods;if((M&&!this.isTransitionFromDynamicToStatic_||!Z.durationDerivedFromPeriods)&&x.setDuration(ce||1/0),this.isLowLatency_&&this.lowLatencyMode_&&x.setAvailabilityTimeOffset(this.minTotalAvailabilityTimeOffset_),x.notifyMaxSegmentDuration(A||1),Fe&&!this.isTransitionFromDynamicToStatic_&&x.assertIsValid(),this.isLowLatency_&&this.lowLatencyMode_){let z=E!=null?E:this.config_.defaultPresentationDelay;x.setDelay(z)}if(this.manifest_)this.manifest_.periodCount=W.length,this.manifest_.gapCount=this.gapCount_,await this.postPeriodProcessing_(W,!1);else{if(await this.periodCombiner_.combinePeriods(W,V.dynamic),this.manifest_={presentationTimeline:x,variants:this.periodCombiner_.getVariants(),textStreams:this.periodCombiner_.getTextStreams(),imageStreams:this.periodCombiner_.getImageStreams(),chapterStreams:[],offlineSessionIds:[],sequenceMode:this.config_.dash.sequenceMode,ignoreManifestTimestampsInSegmentsMode:!1,type:me.DASH,serviceDescription:this.parseServiceDescription_(e),nextUrl:this.parseMpdChaining_(e),periodCount:W.length,gapCount:this.gapCount_,isLowLatency:this.isLowLatency_,startTime:null},x.usingPresentationStartTime()){let ge=I.findChildren(e,"UTCTiming"),Y=await this.parseUtcTiming_(g,ge);if(!this.playerInterface_)return;x.setClockOffset(Y)}x.lockStartTime(),this.periodCombiner_&&!this.manifest_.presentationTimeline.isLive()&&this.periodCombiner_.release();let z=I.findChild(e,"ProgramInformation");if(z){let ge=U.EventName.ProgramInformation,Y=new Map().set("detail",z),X=new U(ge,Y);this.playerInterface_.onEvent(X)}}this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_),this.cleanStreamMap_(),this.cleanContinuityCache_(W)}async postPeriodProcessing_(e,t){await this.periodCombiner_.combinePeriods(e,!0,t),this.manifest_.variants=this.periodCombiner_.getVariants();let i=this.periodCombiner_.getTextStreams();i.length>0&&(this.manifest_.textStreams=i),this.manifest_.imageStreams=this.periodCombiner_.getImageStreams(),this.playerInterface_.filter(this.manifest_)}async processPatchManifest_(e){let t=e.attributes.mpdId,i=I.parseAttr(e,"originalPublishTime",I.parseDate);if(!t||t!==this.manifestPatchContext_.mpdId||i!==this.manifestPatchContext_.publishTime)throw this.patchLocationNodes_=[],new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.DASH_INVALID_PATCH);let r=[],s=[],n=new Set;for(let a of I.getChildNodes(e)){let o=!0,c=I.parseXpath(a.attributes.sel||""),d=c[c.length-1],u=I.getContents(a)||"";if(d.name==="MPD")if(d.attribute==="mediaPresentationDuration"){let m=I.getContents(a)||"";this.parsePatchMediaPresentationDurationChange_(m)}else d.attribute==="type"?this.parsePatchMpdTypeChange_(u):d.attribute==="publishTime"?this.manifestPatchContext_.publishTime=I.parseDate(u)||0:d.attribute===null&&a.tagName==="add"?s.push(a):o=!1;else if(d.name==="PatchLocation")this.updatePatchLocationNodes_(a);else if(d.name==="Period")a.tagName==="add"?s.push(a):a.tagName==="remove"&&d.id&&this.removePatchPeriod_(d.id);else if(d.name==="SegmentTemplate"){let m=this.modifySegmentTemplate_(a);for(let f of m)n.add(f)}else if(d.name==="SegmentTimeline"||d.name==="S"){let m=this.modifyTimepoints_(a);for(let f of m)n.add(f)}else o=!1;o||p.warning("Unhandled "+a.tagName+" operation",a.attributes.sel)}for(let a of n)this.parsePatchSegment_(a);for(let a of s)r.push(...this.parsePatchPeriod_(a));if(r.length&&(this.manifest_.periodCount+=r.length,this.manifest_.gapCount=this.gapCount_,await this.postPeriodProcessing_(r,!0)),this.manifestPatchContext_.type=="static"){let a=this.manifestPatchContext_.mediaPresentationDuration;this.manifest_.presentationTimeline.setDuration(a||1/0)}}parsePatchMpdTypeChange_(e){this.manifest_.presentationTimeline.setStatic(e=="static"),this.manifestPatchContext_.type=e;for(let t of this.contextCache_.values())t.dynamic=e=="dynamic";e=="static"&&(this.updatePeriod_=-1)}parsePatchMediaPresentationDurationChange_(e){let t=I.parseDuration(e);if(t!=null){this.manifestPatchContext_.mediaPresentationDuration=t;for(let i of this.contextCache_.values())i.mediaPresentationDuration=t}}parsePatchPeriod_(e){v.assert(this.manifestPatchContext_.getBaseUris,"Must provide getBaseUris on manifestPatchContext_");let t={dynamic:this.manifestPatchContext_.type=="dynamic",presentationTimeline:this.manifest_.presentationTimeline,period:null,periodInfo:null,adaptationSet:null,representation:null,bandwidth:0,indexRangeWarningGiven:!1,availabilityTimeOffset:this.manifestPatchContext_.availabilityTimeOffset,profiles:this.manifestPatchContext_.profiles,mediaPresentationDuration:this.manifestPatchContext_.mediaPresentationDuration,roles:null,urlParams:ft.defaultUrlParams_,name:""};return this.parsePeriods_(t,this.manifestPatchContext_.getBaseUris,e,!0).periods}removePatchPeriod_(e){this.manifest_.periodCount--;for(let i of this.contextCache_.keys())if(i.startsWith(e)){let r=this.contextCache_.get(i);fr.removeTimepoints(r),this.parsePatchSegment_(i),this.contextCache_.delete(i)}let t=this.lastManifestUpdatePeriodIds_.filter(i=>i!==e);this.lastManifestUpdatePeriodIds_=t,this.parsedPeriodCache_.delete(e)}getContextIdsFromPath_(e){let t="",i="",r=-1,s="";for(let a of e)a.name==="Period"?t=a.id:a.name==="AdaptationSet"?(i=a.id,a.position!==null&&(r=a.position)):a.name==="Representation"&&(s=a.id);let n=[];if(s)n.push(t+","+s);else if(i)for(let a of this.contextCache_.values())a.period.id===t&&a.adaptationSet.id===i&&a.representation.id&&n.push(t+","+a.representation.id);else if(r>-1)for(let a of this.contextCache_.values())a.period.id===t&&a.adaptationSet.position===r&&a.representation.id&&n.push(t+","+a.representation.id);return n}modifySegmentTemplate_(e){let t=I.parseXpath(e.attributes.sel||""),i=t[t.length-1];if(!i.attribute)return[];let r=this.getContextIdsFromPath_(t),s=I.getContents(e)||"";for(let n of r){let a=this.contextCache_.get(n);v.assert(a&&a.representation.segmentTemplate,"cannot modify segment template"),I.modifyNodeAttribute(a.representation.segmentTemplate,e.tagName,i.attribute,s)}return r}modifyTimepoints_(e){let t=I.parseXpath(e.attributes.sel||""),i=this.getContextIdsFromPath_(t);for(let r of i){let s=this.contextCache_.get(r);fr.modifyTimepoints(s,e)}return i}parsePatchSegment_(e){let t=this.contextCache_.get(e),i=this.streamMap_.get(e);v.assert(i,"stream should exist"),i.segmentIndex&&i.segmentIndex.evict(this.manifest_.presentationTimeline.getSegmentAvailabilityStart());try{let r=(n,a,o,c)=>this.requestSegment_(n,a,o,c),s=fr.createStreamInfo(t,r,this.streamMap_,!0,this.config_.dash.initialSegmentLimit,this.periodDurations_,t.representation.aesKey,null,!0,this.continuityCache_);i.createSegmentIndex=async()=>{i.segmentIndex||(i.segmentIndex=await s.generateSegmentIndex())}}catch(r){let s=R.ContentType,n=t.representation.contentType,a=n==s.TEXT||n==s.APPLICATION,o=n==s.IMAGE;if(!(a||o)||r.code!=h.Code.DASH_NO_SEGMENT_INFO)throw r}}parseServiceDescription_(e){let t=I.findChild(e,"ServiceDescription");if(!t)return null;let i=I.findChild(t,"Latency"),r=I.findChild(t,"PlaybackRate");if(!i&&!r)return null;let s={};return i&&("target"in i.attributes&&(s.targetLatency=parseInt(i.attributes.target,10)/1e3),"max"in i.attributes&&(s.maxLatency=parseInt(i.attributes.max,10)/1e3),"min"in i.attributes&&(s.minLatency=parseInt(i.attributes.min,10)/1e3)),r&&("max"in r.attributes&&(s.maxPlaybackRate=parseFloat(r.attributes.max)),"min"in r.attributes&&(s.minPlaybackRate=parseFloat(r.attributes.min))),s}checkMpdEssentialProperties_(e){let t=ft.SUPPORTED_ESSENTIAL_PROPERTIES_,i=Me.parseEssentialProperties(e);if(!i.length)return;let r=new Map,s=0;for(let n of i){let a=n.id!=null?"id:"+n.id:"no-id:"+s++;r.getOrInsert(a,[]).push(n)}for(let n of r.values())if(!n.some(o=>t.has(o.schemeIdUri)))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_ESSENTIAL_PROPERTY,n.map(o=>o.schemeIdUri))}parseMpdChaining_(e){let t=Me.parseSupplementalProperties(e),i=Me.getDescriptor(t,"urn:mpeg:dash:chaining:2016");return!i||!i.value?null:fe.applyUrlParams(i.value,this.findRequestParamFn_(e,"chaining"))}parsePeriods_(e,t,i,r){let s=e.mediaPresentationDuration;s||(s=I.parseAttr(i,"mediaPresentationDuration",I.parseDuration),this.manifestPatchContext_.mediaPresentationDuration=s);let n=0;this.manifest_&&this.manifest_.presentationTimeline&&this.isTransitionFromDynamicToStatic_&&(n=this.manifest_.presentationTimeline.getSeekRangeStart());let a=[],o=n,c=I.findChildren(i,"Period"),d=e.dynamic;d||this.parsedPeriodCache_.clear();let u=d&&!r?new Set(this.lastManifestUpdatePeriodIds_.slice(1,-1)):null;for(let m=0;m<c.length;m++){let f=c[m],g=c[m+1],_=I.parseAttr(f,"start",I.parseDuration,o),T=f.attributes.id,S=I.parseAttr(f,"duration",I.parseDuration);_=m==0&&_==0&&this.isTransitionFromDynamicToStatic_?n:_;let b=null;if(g){let M=I.parseAttr(g,"start",I.parseDuration);M!=null&&(b=M-_+n)}else s!=null&&(b=s-_+n);let E=R.GAP_OVERLAP_TOLERANCE_SECONDS;if(b&&S&&Math.abs(b-S)>E&&(p.warning("There is a gap/overlap between Periods",f),b>S&&this.gapCount_++),b==null&&(b=S),this.largestPeriodStartTime_!==null&&T!=null&&_!==null&&_<this.largestPeriodStartTime_&&!this.lastManifestUpdatePeriodIds_.includes(T)&&m+1!=c.length){p.debug(`Skipping Period with ID ${T} as its start time is smaller than the largest period start time that has been seen, and ID is unseen before`);continue}_!==null&&(this.largestPeriodStartTime_===null||_>this.largestPeriodStartTime_)&&(this.largestPeriodStartTime_=_);let C={start:_,duration:b,node:f,isLastPeriod:b==null||!g},A=null,w=m>0&&m<c.length-1;if(d&&u&&w&&!r&&(T!=null||(T=this.periodIdFallback_(_)),u.has(T))){let M=this.parsedPeriodCache_.get(T);M&&(A=M)}if(A||(A=this.parsePeriod_(e,t,C),d&&A.id&&this.parsedPeriodCache_.set(A.id,A)),a.push(A),A.id&&b&&this.periodDurations_.set(A.id,b),b==null){g&&p.warning("Skipping Period",m+1,"and any subsequent Periods:","Period",m+1,"does not have a valid start time.",g),o=null;break}o=_+b}if(d&&!r&&this.prunePeriodCache_(a),r)for(let m of a){let f=m.id;this.lastManifestUpdatePeriodIds_.includes(f)||this.lastManifestUpdatePeriodIds_.push(f)}else this.lastManifestUpdatePeriodIds_=a.map(m=>m.id);if(s!=null){if(o!=null){let m=R.GAP_OVERLAP_TOLERANCE_SECONDS,f=o-n-s;Math.abs(f)>m&&p.warning("@mediaPresentationDuration does not match the total duration ","of all Periods.")}return{periods:a,duration:s+n,durationDerivedFromPeriods:!1}}else return{periods:a,duration:o,durationDerivedFromPeriods:!0}}prunePeriodCache_(e){let t=new Set(e.map(i=>i.id));for(let i of Array.from(this.parsedPeriodCache_.keys()))t.has(i)||this.parsedPeriodCache_.delete(i)}periodIdFallback_(e){return"__shaka_period_"+e}cleanStreamMap_(){let t=Array.from(this.indexStreamMap_.keys()).filter(i=>!this.lastManifestUpdatePeriodIds_.includes(i));for(let i of t){let r=!0;for(let s of this.indexStreamMap_.get(i)){let n=this.streamMap_.get(s);if(n){if(n.segmentIndex&&!n.segmentIndex.isEmpty()){r=!1;continue}this.periodCombiner_&&this.periodCombiner_.deleteStream(n,i),this.streamMap_.delete(s)}}r&&this.indexStreamMap_.delete(i)}}cleanContinuityCache_(e){let t=new Set(e.map(i=>i.id));for(let i of this.continuityCache_.keys())t.has(i)||this.continuityCache_.delete(i)}parsePeriod_(e,t,i){let r=R.ContentType;v.assert(i.node,"periodInfo.node should exist"),e.period=this.createFrame_(i.node,null,t),e.periodInfo=i,e.period.availabilityTimeOffset=e.availabilityTimeOffset,e.period.id||(p.info("No Period ID given for Period with start time "+i.start+", Assigning a default"),e.period.id=this.periodIdFallback_(i.start));let s=I.findChildren(i.node,"EventStream"),n=e.presentationTimeline.getSegmentAvailabilityStart();for(let S of s)this.parseEventStream_(i.start,i.duration,S,n);let a=Me.parseSupplementalProperties(i.node);for(let S of a)if(ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(S.schemeIdUri)){let b=this.getURLParametersFunction_(S.element);b&&(e.urlParams=b)}let o=this.findRequestParamFn_(i.node,"segment");o&&(e.urlParams=o);let c=I.findChildren(i.node,"AdaptationSet").map((S,b)=>this.parseAdaptationSet_(e,b,S)).filter(it.isNotNull);if(e.dynamic){let S=new Set,b=0;for(let E=0;E<c.length;E++){let C=c[E].representationIds;for(let A=0;A<C.length;A++)S.add(C[A]),b++}if(b!=S.size)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_DUPLICATE_REPRESENTATION_ID)}let d=new Map;for(let S of c)for(let[b,E]of S.dependencyStreamMap)d.set(b,E);if(d.size){let S=new Map;for(let b=0;b<c.length;b++){let E=c[b].streams;for(let C=0;C<E.length;C++)d.has(E[C].originalId)&&(S.has(b)||S.set(b,[]),S.get(b).push(E[C].originalId))}if(S.size){let b=I.findChildren(i.node,"AdaptationSet"),E=e.name;e.name="dependencyStream",S.forEach((C,A)=>{let w=b[A];if(!w)return;let M=this.parseAdaptationSet_(e,A,w);if(!M)return;let x=[];for(let k=0;k<C.length;k++){let L=C[k],V=M.streams.find(ee=>ee.originalId==L);if(V){let ee=d.get(V.originalId||"");V.dependencyStream=ee,V.originalId+=ee.originalId,V.baseOriginalId=ee.baseOriginalId,x.push(V)}}x.length&&c[A].streams.push(...x)}),e.name=E}}let[u,m]=ye.partition(c,S=>!!S.trickModeFor);for(let S of u)for(let b of S.streams)b.isIframe=!0;if(!this.config_.disableIFrames)for(let S of u){let b=S.trickModeFor.split(" ");for(let E of m)if(b.includes(E.id))for(let C of E.streams)se.setBetterIFrameStream(C,S.streams)}let f=this.getStreamsFromSets_(this.config_.disableAudio,m,r.AUDIO),g=this.getStreamsFromSets_(this.config_.disableVideo,m,r.VIDEO),_=this.getStreamsFromSets_(this.config_.disableText,m,r.TEXT),T=this.getStreamsFromSets_(this.config_.disableThumbnails,m,r.IMAGE);if(g.length===0&&f.length===0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_EMPTY_PERIOD);return{id:e.period.id,audioStreams:f,videoStreams:g,textStreams:_,imageStreams:T}}getStreamsFromSets_(e,t,i){return e||!t.length?[]:t.reduce((r,s)=>(s.contentType!=i||r.push(...s.streams),r),[])}parseAdaptationSet_(e,t,i){let r=R.ContentType;e.adaptationSet=this.createFrame_(i,e.period,null),e.adaptationSet.position=t;let s=!1,n=I.findChildren(i,"Role"),a=n.map(Y=>Y.attributes.value).filter(it.isNotNull),o,c=e.adaptationSet.contentType==r.TEXT;c&&(o=R.TextStreamKind.SUBTITLE);for(let Y of n){let X=Y.attributes.schemeIdUri;if(X==null||X=="urn:mpeg:dash:role:2011"){let O=Y.attributes.value;switch(O){case"main":s=!0;break;case"caption":case"subtitle":o=O;break}}}let d,u,m="urn:mpeg:mpegB:cicp",f=`${m}:TransferCharacteristics`,g=`${m}:ColourPrimaries`,_=Y=>{switch(Y){case 1:case 6:case 13:case 14:case 15:return"SDR";case 16:return"PQ";case 18:return"HLG"}},T=Y=>{switch(Y){case 1:case 5:case 6:case 7:return"srgb";case 9:return"rec2020";case 11:case 12:return"p3"}},S=Y=>{let X=Y.attributes["dvb:fontFamily"],O=Y.attributes["dvb:url"];if(X&&O){let $=fe.resolveUris(e.adaptationSet.getBaseUris(),[O],e.urlParams());this.playerInterface_.addFont(X,$[0])}},b=Me.parseEssentialProperties(i),E=Me.parseSupplementalProperties(i),C=null,A=!1,w=null,M=!1;for(let Y of b){let X=Y.schemeIdUri;if(!ft.SUPPORTED_ESSENTIAL_PROPERTIES_.has(X)){M=!0;continue}X=="http://dashif.org/guidelines/trickmode"?C=Y.value:X==f?d=_(parseInt(Y.value,10)):X==g?u=T(parseInt(Y.value,10)):X=="urn:mpeg:dash:ssr:2023"?this.config_.dash.enableFastSwitching?A=!0:M=!0:X=="urn:dvb:dash:fontdownload:2014"?S(Y.element):ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(X)&&(w=this.getURLParametersFunction_(Y.element),w||(M=!0))}if(M)return null;let x=null;for(let Y of E){let X=Y.schemeIdUri;X=="http://dashif.org/guidelines/last-segment-number"?x=parseInt(Y.value,10)-1:X==f?d=_(parseInt(Y.value,10)):X==g?u=T(parseInt(Y.value,10)):X=="urn:dvb:dash:fontdownload:2014"?S(Y.element):ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(X)&&(w=this.getURLParametersFunction_(Y.element))}let k=this.findRequestParamFn_(i,"segment");k&&(w=k),w&&(e.urlParams=w);let L=I.findChildren(i,"Accessibility"),V=new Map,ee;for(let Y of L){let X=Y.attributes.schemeIdUri,O=Y.attributes.value;X=="urn:scte:dash:cc:cea-608:2015"&&!this.config_.disableText?R.parseCEA608Captions(O,V):X=="urn:scte:dash:cc:cea-708:2015"&&!this.config_.disableText?R.parseCEA708Captions(O,V):X=="urn:mpeg:dash:role:2011"?O!=null&&(a.push(O),O=="captions"&&(o=R.TextStreamKind.CLOSED_CAPTION)):X=="urn:tva:metadata:cs:AudioPurposeCS:2007"&&(O=="1"?ee=me.AccessibilityPurpose.VISUALLY_IMPAIRED:O=="2"?ee=me.AccessibilityPurpose.HARD_OF_HEARING:O=="9"&&(ee=me.AccessibilityPurpose.SPOKEN_SUBTITLES))}let oe=I.findChildren(i,"ContentProtection"),le=this.contentProtection_.parseFromAdaptationSet(oe,this.config_.ignoreDrmInfo,this.config_.dash.keySystemsByURI);e.adaptationSet.encrypted=oe.length>0;let H=ve.normalize(e.adaptationSet.language||"und"),J=e.adaptationSet.label,Z=new Map,ce=I.findChildren(i,"Representation");if(!this.config_.ignoreSupplementalCodecs){let Y=[];for(let X of ce){let O=I.getAttributeNS(X,ft.SCTE214_,"supplementalCodecs");if(O){let $=Ne.cloneObject(X);$.attributes.codecs=O.split(" ").join(","),$.attributes.id&&($.attributes.supplementalId=$.attributes.id+"_supplementalCodecs"),Y.push($)}}ce.push(...Y)}let W=ce.map(Y=>{let X=this.parseRepresentation_(e,le,o,H,J,s,a,V,Y,ee,x);if(X){X.hdr=X.hdr||d,X.colorGamut=X.colorGamut||u,X.fastSwitching=A;let O=Y.attributes.dependencyId;if(O)return X.baseOriginalId=O,Z.set(O,X),null}return X}).filter(Y=>!!Y);if(W.length==0&&Z.size==0){let Y=e.adaptationSet.contentType==r.IMAGE;if(this.config_.dash.ignoreEmptyAdaptationSet||c||Y)return null;throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_EMPTY_ADAPTATION_SET)}if(!e.adaptationSet.contentType||e.adaptationSet.contentType==r.APPLICATION){let Y=W[0].mimeType,X=W[0].codecs;e.adaptationSet.contentType=ft.guessContentType_(Y,X);for(let O of W)O.type=e.adaptationSet.contentType}let z=e.adaptationSet.id||"__fake__"+this.globalId_++;for(let Y of W){for(let X of le.drmInfos)X.keyIds=X.keyIds&&Y.keyIds?new Set([...X.keyIds,...Y.keyIds]):X.keyIds||Y.keyIds;this.config_.enableAudioGroups&&(Y.groupId=z)}let ge=ce.map(Y=>Y.attributes.supplementalId||Y.attributes.id).filter(it.isNotNull);return{id:z,contentType:e.adaptationSet.contentType,language:H,main:s,streams:W,drmInfos:le.drmInfos,trickModeFor:C,representationIds:ge,dependencyStreamMap:Z}}getURLParametersFunction_(e){let t=I.findChildNS(e,ft.UP_NAMESPACE_2014_,"UrlQueryInfo")||I.findChildNS(e,ft.UP_NAMESPACE_2016_,"ExtUrlQueryInfo");return t?this.buildUrlQueryFn_(t):null}findRequestParamFn_(e,t){let i;for(let r of I.findChildren(e,"RequestParam")){let s=(r.attributes.includeInRequests||"segment").split(/\s+/);if(s.includes(t)||s.includes("*")){let n=this.buildUrlQueryFn_(r);n&&(i=n)}}return i}buildUrlQueryFn_(e){let t=I.parseAttr(e,"useMPDUrlQuery",I.parseBoolean,!1),i=q.htmlUnescape(e.attributes.queryString||""),r=q.htmlUnescape(e.attributes.queryTemplate||"");return!r||!t&&!i?null:()=>{let s=[];t&&this.lastManifestQueryParams_&&s.push(this.lastManifestQueryParams_),i&&s.push(i);let n=s.join("&");if(r=="$querypart$")return n;let a;return r.split("&").map(c=>{if(c=="$querypart$")return n;let d=/\$query:(.*?)\$/.exec(c);if(d){let u=d[1];a||(a=new URLSearchParams(n));let m=a.get(u);return m?`${u}=${m}`:""}return c.replace(/\$\$|\$[^$]+\$/g,u=>u==="$$"?"$":"")}).filter(Boolean).join("&")}}parseRepresentation_(e,t,i,r,s,n,a,o,c,d,u){let m=R.ContentType,f=e.period.id;e.representation=this.createFrame_(c,e.adaptationSet,null);let g=e.representation.id;if(this.minTotalAvailabilityTimeOffset_=Math.min(this.minTotalAvailabilityTimeOffset_,e.representation.availabilityTimeOffset),this.isLowLatency_=this.minTotalAvailabilityTimeOffset_>0,!this.verifyRepresentation_(e.representation))return p.warning("Skipping Representation",e.representation),null;let _=e.periodInfo.start;e.bandwidth=I.parseAttr(c,"bandwidth",I.parsePositiveInt)||0,e.roles=a;let T=Me.parseEssentialProperties(c),S=Me.parseSupplementalProperties(c),b=I.findChildren(c,"ContentProtection"),E=O=>ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(O.schemeIdUri),C=null,A=T.find(E)||S.find(E);A&&(C=this.getURLParametersFunction_(A.element));let w=this.findRequestParamFn_(c,"segment");w&&(C=w),C&&(e.urlParams=C);let M,x=e.representation.contentType,k=x==m.TEXT||x==m.APPLICATION,L=x==m.IMAGE;b.length&&(e.adaptationSet.encrypted=!0);try{let O;if(t.aes128Info){let Ie=e.representation.getBaseUris,tt=e.urlParams,_t=fe.resolveUris(Ie(),[t.aes128Info.keyUri],tt()),bt=K.RequestType.KEY,yt=K.makeRequest(_t,this.config_.retryParameters);O={bitsKey:128,blockCipherMode:"CBC",iv:t.aes128Info.iv,firstMediaSequenceNumber:0},O.fetchKey=async()=>{let xt=await this.makeNetworkRequest_(yt,bt);if(!xt.data||xt.data.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_KEY_LENGTH);let mt={name:"AES-CBC"};O.cryptoKey=await window.crypto.subtle.importKey("raw",xt.data,mt,!0,["decrypt"]),O.fetchKey=void 0}}e.representation.aesKey=O;let $=(Ie,tt,_t,bt)=>this.requestSegment_(Ie,tt,_t,bt);if(e.representation.segmentBase)M=Hi.createStreamInfo(e,$,O);else if(e.representation.segmentList)M=Dn.createStreamInfo(e,this.streamMap_,O);else if(e.representation.segmentTemplate){let Ie=!!this.manifest_;M=fr.createStreamInfo(e,$,this.streamMap_,Ie,this.config_.dash.initialSegmentLimit,this.periodDurations_,O,u,!1,this.continuityCache_)}else{v.assert(k,"Must have Segment* with non-text streams.");let Ie=e.periodInfo.duration||0,tt=e.representation.getBaseUris,_t=e.representation.mimeType,bt=e.representation.codecs;M={endTime:-1,timeline:-1,generateSegmentIndex:()=>{let yt=Ze.forSingleSegment(_,Ie,tt());return yt.forEachTopLevelReference(xt=>{xt.mimeType=_t,xt.codecs=bt}),Promise.resolve(yt)},timescale:1}}}catch(O){if((k||L)&&O.code==h.Code.DASH_NO_SEGMENT_INFO)return null;throw O}let V=this.contentProtection_.parseFromRepresentation(b,t,this.config_.ignoreDrmInfo,this.config_.dash.keySystemsByURI),ee=new Set(V?[V]:[]),oe=Me.hasDescriptor(S,"tag:dolby.com,2018:dash:EC3_ExtensionType:2018","JOC"),le=Me.hasDescriptor(S,"tag:dolby.com,2016:dash:virtualized_content:2016","1"),H=oe||le,J=!1;k&&(J=a.includes("forced_subtitle")||a.includes("forced-subtitle"));let Z;if(L){let O=["http://dashif.org/thumbnail_tile","http://dashif.org/guidelines/thumbnail_tile"],$=T.find(Ie=>O.includes(Ie.schemeIdUri));if($&&(Z=$.value),!Z)return null}let ce,W=e.profiles,z=e.representation.codecs;W.includes("http://dashif.org/guidelines/dash-if-uhd#hevc-hdr-pq10")&&(z.includes("hvc1.2.4.L153.B0")||z.includes("hev1.2.4.L153.B0"))&&(ce="PQ");let Y=g?f+","+g:"";if(Y&&e.name&&(Y+=e.name),this.patchLocationNodes_.length&&Y&&this.contextCache_.set(Y,this.cloneContext_(e)),e.representation.producerReferenceTime&&this.parseProducerReferenceTime_(e.representation.producerReferenceTime,M,e.presentationTimeline),M.endTime!=-1&&f!=null&&g!=null){let O=this.continuityCache_.get(f);if(O)O.endTime=M.endTime,O.reps.includes(g)||O.reps.push(g),this.continuityCache_.set(f,O);else{let $={endTime:M.endTime,timeline:M.timeline,reps:[g]};this.continuityCache_.set(f,$)}}let X;return Y&&this.streamMap_.has(Y)?X=this.streamMap_.get(Y):X={id:this.globalId_++,originalId:g,groupId:null,createSegmentIndex:()=>Promise.resolve(),closeSegmentIndex:()=>{X.segmentIndex&&(X.segmentIndex.release(),X.segmentIndex=null)},segmentIndex:null,mimeType:e.representation.mimeType,codecs:z,supplementalCodecs:e.representation.supplementalCodecs,frameRate:e.representation.frameRate,pixelAspectRatio:e.representation.pixelAspectRatio,bandwidth:e.bandwidth,width:e.representation.width,height:e.representation.height,kind:i,encrypted:t.drmInfos.length>0,drmInfos:t.drmInfos,keyIds:ee,language:r,originalLanguage:e.adaptationSet.language,label:s,type:e.adaptationSet.contentType,primary:n,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:e.representation.emsgSchemeIdUris,roles:a,forced:J,channelsCount:e.representation.numChannels,audioSamplingRate:e.representation.audioSamplingRate,spatialAudio:H,closedCaptions:o,hdr:ce,colorGamut:void 0,videoLayout:void 0,tilesLayout:Z,accessibilityPurpose:d,external:!1,fastSwitching:!1,fullMimeTypes:new Set([N.getFullType(e.representation.mimeType,e.representation.codecs)]),isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1},X.createSegmentIndex=async()=>{X.segmentIndex||(X.segmentIndex=await M.generateSegmentIndex())},Y&&e.dynamic&&!this.streamMap_.has(Y)&&(this.streamMap_.set(Y,X),this.indexStreamMap_.getOrInsertComputed(f||"",()=>[]).push(Y)),X}parseProducerReferenceTime_(e,t,i){if(this.parsedPrftNodes_.has(e))return;this.parsedPrftNodes_.add(e);let r=I.parseAttr(e,"presentationTime",I.parseNonNegativeInt)||0,s=I.findChild(e,"UTCTiming"),n;if(!s||!s.attributes.schemeIdUri||ft.isNtpScheme_(s.attributes.schemeIdUri)){let d=I.parseAttr(e,"wallClockTime",I.parseNonNegativeInt)||0;n=Wr.convertNtp(d)}else n=(I.parseAttr(e,"wallClockTime",I.parseDate)||0)*1e3;let o=new Date(n-r/t.timescale*1e3),c=o.getTime()/1e3;if(!isNaN(c)){i.isStartTimeLocked()||i.setInitialProgramDateTime(c);let d={wallClockTime:n,programStartDate:o},u=U.EventName.Prft,m=new Map().set("detail",d),f=new U(u,m);this.playerInterface_.onEvent(f)}}cloneContext_(e){let t=r=>{if(!r)return null;let s=Ne.shallowCloneObject(r);return s.segmentBase=null,s.segmentList=null,s.segmentTemplate=I.cloneNode(s.segmentTemplate),s.producerReferenceTime=null,s},i=Ne.shallowCloneObject(e);return i.period=t(i.period),i.adaptationSet=t(i.adaptationSet),i.representation=t(i.representation),i.periodInfo&&(i.periodInfo=Ne.shallowCloneObject(i.periodInfo),i.periodInfo.node=null),i}async onUpdate_(){v.assert(this.updatePeriod_>=0,"There should be an update period"),p.info("Updating manifest...");let e=0;try{e=await this.requestManifest_()}catch(t){if(v.assert(t instanceof h,"Should only receive a Shaka error"),this.playerInterface_){if(this.config_.raiseFatalErrorOnManifestUpdateRequestFailure){this.playerInterface_.onError(t);return}t.severity=h.Severity.RECOVERABLE,this.playerInterface_.onError(t)}}this.playerInterface_&&(this.playerInterface_.onManifestUpdated(),this.setUpdateTimer_(e))}updateNow_(){this.updateTimer_.tickNow()}setUpdateTimer_(e){if(this.updatePeriod_<0)return;let t=this.updatePeriod_;this.config_.updatePeriod>=0&&(t=this.config_.updatePeriod);let i=Math.max(t-e,this.averageUpdateDuration_.getEstimate());this.updateTimer_.tickAfter(i)}createFrame_(e,t,i){v.assert(t||i,"Must provide either parent or getBaseUris"),t=t||{contentType:"",mimeType:"",codecs:"",supplementalCodecs:"",emsgSchemeIdUris:[],frameRate:void 0,pixelAspectRatio:void 0,numChannels:null,audioSamplingRate:null,availabilityTimeOffset:0,segmentSequenceCadence:1,encrypted:!1},i=i||t.getBaseUris;let r=I.parseNonNegativeInt,s=I.evalDivision,n=e.attributes.id,a=e.attributes.supplementalId,o=I.findChildren(e,"BaseURL"),c,d=!1;if(this.contentSteeringManager_)for(let W of o){let z=W.attributes.serviceLocation,ge=I.getContents(W);z&&ge&&(this.contentSteeringManager_.addLocation(n,z,ge),d=!0)}(!d||!this.contentSteeringManager_)&&(c=o.map(I.getContents));let u=this.contentSteeringManager_,m=()=>o.length?u&&d?u.getLocations(n):c||[]:[],f=e.attributes.contentType||t.contentType,g=e.attributes.mimeType||t.mimeType,_=[e.attributes.codecs||t.codecs],T=vt.codecsFiltering(_).join(","),S=[I.getAttributeNS(e,ft.SCTE214_,"supplementalCodecs")||t.supplementalCodecs],b=vt.codecsFiltering(S).join(","),E=I.parseAttr(e,"frameRate",s)||t.frameRate,C=e.attributes.sar||t.pixelAspectRatio,A=this.emsgSchemeIdUris_(I.findChildren(e,"InbandEventStream"),t.emsgSchemeIdUris),w=I.findChildren(e,"AudioChannelConfiguration"),M=this.parseAudioChannels_(w)||t.numChannels,x=I.parseAttr(e,"audioSamplingRate",r)||t.audioSamplingRate;f||(f=ft.guessContentType_(g,T));let k=I.findChild(e,"SegmentBase"),L=I.findChild(e,"SegmentTemplate"),V=k&&I.parseAttr(k,"availabilityTimeOffset",I.parseFloat)||0,ee=L&&I.parseAttr(L,"availabilityTimeOffset",I.parseFloat)||0,oe=o&&o.length&&I.parseAttr(o[0],"availabilityTimeOffset",I.parseFloat)||0,le=t.availabilityTimeOffset+oe+V+ee,H=null,J=I.findChild(e,"SegmentSequenceProperties");if(J){let W=I.parseAttr(J,"cadence",I.parsePositiveInt);W&&(H=W)}let Z=e.attributes.label,ce=I.findChildren(e,"Label");if(ce&&ce.length){let W=ce[0];I.getTextContents(W)&&(Z=I.getTextContents(W))}return{getBaseUris:()=>fe.resolveUris(i(),m()),segmentBase:k||t.segmentBase,segmentList:I.findChild(e,"SegmentList")||t.segmentList,segmentTemplate:L||t.segmentTemplate,producerReferenceTime:I.findChild(e,"ProducerReferenceTime")||t.producerReferenceTime,width:I.parseAttr(e,"width",r)||t.width,height:I.parseAttr(e,"height",r)||t.height,contentType:f,mimeType:g,codecs:T,supplementalCodecs:b.split(" ").join(","),frameRate:E,pixelAspectRatio:C,emsgSchemeIdUris:A,id:a||n,originalId:n,language:e.attributes.lang,numChannels:M,audioSamplingRate:x,availabilityTimeOffset:le,initialization:null,segmentSequenceCadence:H||t.segmentSequenceCadence,label:Z||null,encrypted:!1}}emsgSchemeIdUris_(e,t){let i=t.slice();for(let r of e){let s=r.attributes.schemeIdUri;i.includes(s)||i.push(s)}return i}parseAudioChannels_(e){for(let t of e){let i=t.attributes.schemeIdUri;if(!i)continue;let r=t.attributes.value;if(r)switch(i){case"urn:mpeg:dash:outputChannelPositionList:2012":return r.trim().split(/ +/).length;case"urn:mpeg:dash:23003:3:audio_channel_configuration:2011":case"urn:dts:dash:audio_channel_configuration:2012":{let s=parseInt(r,10);if(!s){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}return s}case"tag:dolby.com,2015:dash:audio_channel_configuration:2015":{let s=[2,1,2,2,2,2,1,2,2,1,1,1,1,2,1,1,2,2],n=parseInt(r,16);if(!n){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}let a=0;for(let o=0;o<s.length;o++)n&1<<o&&(a+=s[o]);if(a)return a;continue}case"tag:dolby.com,2014:dash:audio_channel_configuration:2011":case"urn:dolby:dash:audio_channel_configuration:2011":{let s=[1,1,1,1,1,2,2,1,1,2,2,2,1,2,1,1].reverse(),n=parseInt(r,16);if(!n){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}let a=0;for(let o=0;o<s.length;o++)n&1<<o&&(a+=s[o]);if(a)return a;continue}case"urn:mpeg:mpegB:cicp:ChannelConfiguration":{let n=[0,1,2,3,4,5,6,8,2,3,4,7,8,24,8,12,10,12,14,12,14],a=parseInt(r,10);if(!a){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}if(a>0&&a<n.length)return n[a];continue}default:p.warning("Unrecognized audio channel scheme:",i,r);continue}}return null}verifyRepresentation_(e){let t=R.ContentType,i=0;return i+=e.segmentBase?1:0,i+=e.segmentList?1:0,i+=e.segmentTemplate?1:0,i==0?e.contentType==t.TEXT||e.contentType==t.APPLICATION?!0:(p.warning("Representation does not contain a segment information source:","the Representation must contain one of SegmentBase, SegmentList,",'SegmentTemplate, or explicitly indicate that it is "text".',e),!1):(i!=1&&(p.warning("Representation contains multiple segment information sources:","the Representation should only contain one of SegmentBase,","SegmentList, or SegmentTemplate.",e),e.segmentBase?(p.info("Using SegmentBase by default."),e.segmentList=null,e.segmentTemplate=null):(v.assert(e.segmentList,"There should be a SegmentList"),p.info("Using SegmentList by default."),e.segmentTemplate=null)),!0)}async requestForTiming_(e,t,i){let r=[q.htmlUnescape(t)],s=fe.resolveUris(e(),r),n=K.makeRequest(s,this.config_.retryParameters);n.method=i;let a=K.RequestType.TIMING,o=this.playerInterface_.networkingEngine.request(a,n,{isPreload:this.isPreloadFn_()});this.operationManager_.manage(o);let c=await o.promise,d;if(i=="HEAD"){if(!c.headers||!c.headers.date)return p.warning("UTC timing response is missing","expected date header"),0;d=c.headers.date}else d=q.fromUTF8(c.data);let u=Date.parse(d);return isNaN(u)?(p.warning("Unable to parse date from UTC timing response"),0):u-Date.now()}async parseUtcTiming_(e,t){let i=t.map(s=>({scheme:s.attributes.schemeIdUri,value:s.attributes.value})),r=this.config_.dash.clockSyncUri;!i.length&&r&&i.push({scheme:"urn:mpeg:dash:utc:http-head:2014",value:r});for(let s of i)try{let n=s.scheme,a=s.value;switch(n){case"urn:mpeg:dash:utc:http-head:2014":case"urn:mpeg:dash:utc:http-head:2012":return await this.requestForTiming_(e,a,"HEAD");case"urn:mpeg:dash:utc:http-xsdate:2014":case"urn:mpeg:dash:utc:http-iso:2014":case"urn:mpeg:dash:utc:http-xsdate:2012":case"urn:mpeg:dash:utc:http-iso:2012":return await this.requestForTiming_(e,a,"GET");case"urn:mpeg:dash:utc:direct:2014":case"urn:mpeg:dash:utc:direct:2012":{let o=Date.parse(a);return isNaN(o)?0:o-Date.now()}case"urn:mpeg:dash:utc:http-ntp:2014":case"urn:mpeg:dash:utc:ntp:2014":case"urn:mpeg:dash:utc:sntp:2014":p.alwaysWarn("NTP UTCTiming scheme is not supported");break;default:p.alwaysWarn("Unrecognized scheme in UTCTiming element",n);break}}catch(n){p.warning("Error fetching time from UTCTiming elem",n.message)}return p.alwaysWarn("A UTCTiming element should always be given in live manifests! This content may not play on clients with bad clocks!"),0}parseEventStream_(e,t,i,r){let s=I.parseNonNegativeInt,n=i.attributes.schemeIdUri||"",a=i.attributes.value||"",o=I.parseAttr(i,"timescale",s)||1,c=I.parseAttr(i,"presentationTimeOffset",s)||0,d;n==="urn:mpeg:dash:event:alternativeMPD:insert:2025"||n==="urn:mpeg:dash:event:alternativeMPD:replace:2025"?d="altmpd":n==="urn:mpeg:dash:event:callback:2015"&&(d="callback");let u=d?this.findRequestParamFn_(i,d):void 0;for(let m of I.findChildren(i,"Event")){let f=I.parseAttr(m,"presentationTime",s)||0,g=I.parseAttr(m,"duration",s)||0,_=Math.max((f-c)/o+e,e),T=_+g/o;if(t!=null&&(_=Math.min(_,e+t),T=Math.min(T,e+t)),T<r)continue;let S={schemeIdUri:n,value:a,startTime:_,endTime:T,id:m.attributes.id||"",timescale:o,eventNode:I.cloneNode(m),urlParams:u};this.playerInterface_.onTimelineRegionAdded(S)}}async requestSegment_(e,t,i,r){let s=K.RequestType.SEGMENT,n=r?K.AdvancedRequestType.INIT_SEGMENT:K.AdvancedRequestType.MEDIA_SEGMENT,a=ct.createSegmentRequest(e,t,i,this.playerInterface_.getStreamingRetryParameters());return(await this.makeNetworkRequest_(a,s,{type:n})).data}static guessContentType_(e,t){let i=N.getFullType(e,t);return Ue.isTypeSupported(i)?R.ContentType.TEXT:e.split("/")[0]}makeNetworkRequest_(e,t,i){i||(i={}),i.isPreload=this.isPreloadFn_();let r=this.playerInterface_.networkingEngine.request(t,e,i);return this.operationManager_.manage(r),r.promise}updatePatchLocationNodes_(e){I.modifyNodes(this.patchLocationNodes_,e)}getPatchLocationUris_(){let e=this.manifestPatchContext_.mpdId,t=this.manifestPatchContext_.publishTime;if(!e||!t||!this.patchLocationNodes_.length)return[];let i=Date.now()/1e3,r=this.patchLocationNodes_.filter(s=>{let n=I.parseNonNegativeInt(s.attributes.ttl);return!n||t+n>i}).map(I.getContents).filter(it.isNotNull);return r.length?fe.resolveUris(this.manifestUris_,r):[]}static isNtpScheme_(e){return e==="urn:mpeg:dash:utc:http-ntp:2014"||e==="urn:mpeg:dash:utc:ntp:2014"||e==="urn:mpeg:dash:utc:sntp:2014"}static defaultUrlParams_(){return""}static makeBaseUriGetter_(e,t,i){return()=>e&&t?e.getLocations("BaseURL"):i.slice()}};l(ft,"SCTE214_","urn:scte:dash:scte214-extensions"),l(ft,"UP_NAMESPACE_2014_","urn:mpeg:dash:schema:urlparam:2014"),l(ft,"UP_NAMESPACE_2016_","urn:mpeg:dash:schema:urlparam:2016"),l(ft,"URL_PARAM_DESCRIPTOR_SCHEMES_",new Set(["urn:mpeg:dash:urlparam:2014","urn:mpeg:dash:urlparam:2016"])),l(ft,"SUPPORTED_ESSENTIAL_PROPERTIES_",new Set(["http://dashif.org/guidelines/trickmode","http://dashif.org/thumbnail_tile","http://dashif.org/guidelines/thumbnail_tile","urn:mpeg:mpegB:cicp:TransferCharacteristics","urn:mpeg:mpegB:cicp:ColourPrimaries","urn:mpeg:mpegB:cicp:MatrixCoefficients","urn:mpeg:dash:ssr:2023","urn:dvb:dash:fontdownload:2014","urn:mpeg:dash:urlparam:2014","urn:mpeg:dash:urlparam:2016","urn:mpeg:dash:urlparam:2025","urn:mpeg:dash:pattern:2024"]));var Br=ft;me.registerParserByMime("application/dash+xml",()=>new Br);me.registerParserByMime("video/vnd.mpeg.dash.mpd",()=>new Br);/*! @license
618
+ */var ft=class ft{constructor(){l(this,"config_");l(this,"playerInterface_");l(this,"manifestUris_");l(this,"manifest_");l(this,"globalId_");l(this,"patchLocationNodes_");l(this,"manifestPatchContext_");l(this,"contextCache_");l(this,"continuityCache_");l(this,"parsedPeriodCache_");l(this,"streamMap_");l(this,"indexStreamMap_");l(this,"periodDurations_");l(this,"periodCombiner_");l(this,"updatePeriod_");l(this,"averageUpdateDuration_");l(this,"updateTimer_");l(this,"operationManager_");l(this,"largestPeriodStartTime_");l(this,"lastManifestUpdatePeriodIds_");l(this,"minTotalAvailabilityTimeOffset_");l(this,"lowLatencyMode_");l(this,"contentSteeringManager_");l(this,"gapCount_");l(this,"isLowLatency_");l(this,"eventManager_");l(this,"mediaElement_");l(this,"isTransitionFromDynamicToStatic_");l(this,"lastManifestQueryParams_");l(this,"mpdpatchUrlParamsFn_");l(this,"mpdUrlParamsFn_");l(this,"isPreloadFn_");l(this,"lastCalculatedBaseUris_");l(this,"parsedPrftNodes_");l(this,"contentProtection_");this.config_=null,this.playerInterface_=null,this.manifestUris_=[],this.manifest_=null,this.globalId_=1,this.patchLocationNodes_=[],this.manifestPatchContext_={mpdId:"",type:"",profiles:[],mediaPresentationDuration:null,availabilityTimeOffset:0,getBaseUris:null,publishTime:0},this.contextCache_=new Map,this.continuityCache_=new Map,this.parsedPeriodCache_=new Map,this.streamMap_=new Map,this.indexStreamMap_=new Map,this.periodDurations_=new Map,this.periodCombiner_=new gr,this.updatePeriod_=0,this.averageUpdateDuration_=new er(5),this.updateTimer_=new ae(()=>{if(this.mediaElement_&&!this.config_.continueLoadingWhenPaused&&(this.eventManager_.unlisten(this.mediaElement_,"timeupdate"),this.mediaElement_.paused)){this.eventManager_.listenOnce(this.mediaElement_,"timeupdate",()=>this.onUpdate_());return}this.onUpdate_()}),this.operationManager_=new gi,this.largestPeriodStartTime_=null,this.lastManifestUpdatePeriodIds_=[],this.minTotalAvailabilityTimeOffset_=1/0,this.lowLatencyMode_=!1,this.contentSteeringManager_=null,this.gapCount_=0,this.isLowLatency_=!1,this.eventManager_=new ue,this.mediaElement_=null,this.isTransitionFromDynamicToStatic_=!1,this.lastManifestQueryParams_="",this.mpdpatchUrlParamsFn_=null,this.mpdUrlParamsFn_=null,this.isPreloadFn_=()=>!1,this.lastCalculatedBaseUris_=[],this.parsedPrftNodes_=new Set,this.contentProtection_=new vi}configure(e,t){v.assert(e.dash!=null,"DashManifestConfiguration should not be null!");let i=this.playerInterface_&&e.updatePeriod!=this.config_.updatePeriod&&e.updatePeriod>=0;this.config_=e,t&&(this.isPreloadFn_=t),i&&this.manifest_&&this.manifest_.presentationTimeline.isLive()&&this.updateNow_(),this.contentSteeringManager_&&this.contentSteeringManager_.configure(this.config_),this.periodCombiner_&&this.periodCombiner_.setUseStreamOnce(this.config_.dash.useStreamOnceInPeriodFlattening)}async start(e,t){v.assert(this.config_,"Must call configure() before start()!"),this.lowLatencyMode_=t.isLowLatencyMode(),this.manifestUris_=[e],this.playerInterface_=t;let i=await this.requestManifest_();if(this.playerInterface_&&this.setUpdateTimer_(i),!this.playerInterface_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);return v.assert(this.manifest_,"Manifest should be non-null!"),this.manifest_}stop(){for(let e of this.streamMap_.values())e.segmentIndex&&e.segmentIndex.release();return this.periodCombiner_&&this.periodCombiner_.release(),this.playerInterface_=null,this.config_=null,this.manifestUris_=[],this.manifest_=null,this.streamMap_.clear(),this.indexStreamMap_.clear(),this.contextCache_.clear(),this.continuityCache_.clear(),this.parsedPeriodCache_.clear(),this.manifestPatchContext_={mpdId:"",type:"",profiles:[],mediaPresentationDuration:null,availabilityTimeOffset:0,getBaseUris:null,publishTime:0},this.periodCombiner_=null,this.updateTimer_!=null&&(this.updateTimer_.stop(),this.updateTimer_=null),this.contentSteeringManager_&&this.contentSteeringManager_.destroy(),this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.parsedPrftNodes_.clear(),this.contentProtection_.release(),this.operationManager_.destroy()}async update(){try{await this.requestManifest_()}catch(e){if(!this.playerInterface_||!e)return;v.assert(e instanceof h,"Bad error type"),this.playerInterface_.onError(e)}}onExpirationUpdated(e,t){}onInitialVariantChosen(e){if(this.manifest_&&this.manifest_.presentationTimeline.isLive()){let t=e.video||e.audio;if(t&&t.segmentIndex){let i=this.manifest_.presentationTimeline.getSegmentAvailabilityEnd(),r=t.segmentIndex.find(i);if(r==null)return;let s=t.segmentIndex.get(r);if(!s)return;this.updatePeriod_=s.endTime-i,this.setUpdateTimer_(0)}}}banLocation(e){this.contentSteeringManager_&&this.contentSteeringManager_.banLocation(e)}setMediaElement(e){this.mediaElement_=e}async requestManifest_(){let e=K.RequestType.MANIFEST,t=K.AdvancedRequestType.MPD,i="MPD",r=this.getPatchLocationUris_(),s=this.manifestUris_;if(r.length)s=r.map(m=>fe.applyUrlParams(m,this.mpdpatchUrlParamsFn_)),i="Patch",t=K.AdvancedRequestType.MPD_PATCH;else{if(this.manifestUris_.length>1&&this.contentSteeringManager_){let m=this.contentSteeringManager_.getLocations("Location",!0);m.length&&(s=m)}this.mpdUrlParamsFn_&&(s=s.map(m=>fe.applyUrlParams(m,this.mpdUrlParamsFn_)))}let n=K.makeRequest(s,this.config_.retryParameters),a=Date.now(),o=await this.makeNetworkRequest_(n,e,{type:t});if(!this.playerInterface_)return 0;o.uri&&o.uri!=o.originalUri&&!this.manifestUris_.includes(o.uri)&&this.manifestUris_.unshift(o.uri);let c=new URL(o.uri);this.lastManifestQueryParams_=c.searchParams.toString(),await this.parseManifest(o.data,o.uri,i);let u=(Date.now()-a)/1e3;return this.averageUpdateDuration_.sample(1,u),this.parsedPrftNodes_.clear(),u}parseManifest(e,t,i){let r=I.parseXml(e,i);return this.processParsedMpd(r,t,i)}async processParsedMpd(e,t,i){if(!e)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_INVALID_XML,t);let r=this.config_.dash.manifestPreprocessorTXml,s=st.defaultManifestPreprocessorTXml;if(r!=s&&r(e),i==="Patch")return this.processPatchManifest_(e);let n=e;if(Me.hasLinkedPeriods(n)){let d=Me.processLinkedPeriods(n,t,this.config_.retryParameters,this.playerInterface_.networkingEngine);this.operationManager_.manage(d),n=await d.promise}if(!Me.hasXlinks(n))return this.processManifest_(n,t);let a=this.config_.dash.xlinkFailGracefully,o=Me.processXlinks(n,this.config_.retryParameters,a,t,this.playerInterface_.networkingEngine);this.operationManager_.manage(o);let c=await o.promise;return this.processManifest_(c,t)}async processManifest_(e,t){v.assert(this.config_,"Must call configure() before processManifest_()!"),this.contentSteeringManager_&&this.contentSteeringManager_.clearPreviousLocations(),this.checkMpdEssentialProperties_(e);let i=[t],r=[],s=new Map,n=I.findChildren(e,"Location");for(let z of n){let ge=z.attributes.serviceLocation,Y=I.getContents(z);if(!Y)continue;let X=fe.resolveUris(i,[Y])[0];ge&&(this.contentSteeringManager_?this.contentSteeringManager_.addLocation("Location",ge,X):s.set(ge,X)),r.push(X)}if(this.contentSteeringManager_){let z=this.contentSteeringManager_.getLocations("Location",!0);z.length>0&&(this.manifestUris_=z,i=z)}else r.length&&(this.manifestUris_=r,i=r);this.manifestPatchContext_.mpdId=e.attributes.id||"",this.manifestPatchContext_.publishTime=I.parseAttr(e,"publishTime",I.parseDate)||0,this.patchLocationNodes_=I.findChildren(e,"PatchLocation"),this.mpdpatchUrlParamsFn_=this.findRequestParamFn_(e,"mpdpatch")||null,this.mpdUrlParamsFn_=this.findRequestParamFn_(e,"mpd")||null;let a=Promise.resolve(),o=I.findChild(e,"ContentSteering");if(o&&this.playerInterface_){let z=o.attributes.defaultServiceLocation;if(this.contentSteeringManager_)this.contentSteeringManager_.setBaseUris(i),this.contentSteeringManager_.setDefaultPathwayId(z);else{this.contentSteeringManager_=new ss(this.playerInterface_),this.contentSteeringManager_.configure(this.config_),this.contentSteeringManager_.setManifestType(me.DASH),this.contentSteeringManager_.setBaseUris(i),this.contentSteeringManager_.setDefaultPathwayId(z);let ge=I.getContents(o);ge&&(ge=fe.applyUrlParams(ge,this.findRequestParamFn_(e,"steering")),I.parseAttr(o,"queryBeforeStart",I.parseBoolean,!1)?a=this.contentSteeringManager_.requestInfo(ge):this.contentSteeringManager_.requestInfo(ge))}for(let ge of s.keys()){let Y=s.get(ge);this.contentSteeringManager_.addLocation("Location",ge,Y)}}let c=I.findChildren(e,"BaseURL"),d=!1;if(this.contentSteeringManager_)for(let z of c){let ge=z.attributes.serviceLocation,Y=I.getContents(z);ge&&Y&&(this.contentSteeringManager_.addLocation("BaseURL",ge,Y),d=!0)}if(this.lastCalculatedBaseUris_.splice(0),!d||!this.contentSteeringManager_){let z=c.map(I.getContents);this.lastCalculatedBaseUris_.push(...fe.resolveUris(i,z))}let u=this.contentSteeringManager_,m=this.lastCalculatedBaseUris_,g=ft.makeBaseUriGetter_.call(ft,u,d,m);this.manifestPatchContext_.getBaseUris=g;let _=0;c&&c.length&&(_=I.parseAttr(c[0],"availabilityTimeOffset",I.parseFloat)||0),this.manifestPatchContext_.availabilityTimeOffset=_,this.updatePeriod_=I.parseAttr(e,"minimumUpdatePeriod",I.parseDuration,-1);let T=I.parseAttr(e,"availabilityStartTime",I.parseDate),S=I.parseAttr(e,"timeShiftBufferDepth",I.parseDuration),b=this.config_.dash.ignoreSuggestedPresentationDelay,E=null;b||(E=I.parseAttr(e,"suggestedPresentationDelay",I.parseDuration));let C=this.config_.dash.ignoreMaxSegmentDuration,A=null;C||(A=I.parseAttr(e,"maxSegmentDuration",I.parseDuration));let w=e.attributes.type||"static",M=w=="static"||w=="list";this.manifest_&&this.manifest_.presentationTimeline&&(this.isTransitionFromDynamicToStatic_=this.manifest_.presentationTimeline.isLive()&&M),this.manifestPatchContext_.type=w;let x;if(this.manifest_){x=this.manifest_.presentationTimeline;let z=x.getSegmentAvailabilityStart();for(let ge of this.streamMap_.values())ge.segmentIndex&&ge.segmentIndex.evict(z)}else{let z=this.config_.dash.ignoreMinBufferTime,ge=0;z||(ge=I.parseAttr(e,"minBufferTime",I.parseDuration)||0);let Y=0;E!=null?Y=Math.min(E,S||1/0):this.config_.defaultPresentationDelay>0?Y=this.config_.defaultPresentationDelay:Y=Math.min(ge*1.5,S||1/0),x=new wi(T,Y,this.config_.dash.autoCorrectDrift)}x.setStatic(M),x.isLive()&&!isNaN(this.config_.availabilityWindowOverride)&&(S=this.config_.availabilityWindowOverride),S==null&&(S=1/0),x.setSegmentAvailabilityDuration(S);let L=e.attributes.profiles||"";this.manifestPatchContext_.profiles=L.split(",");let V={dynamic:!M,presentationTimeline:x,period:null,periodInfo:null,adaptationSet:null,representation:null,bandwidth:0,indexRangeWarningGiven:!1,availabilityTimeOffset:_,mediaPresentationDuration:null,profiles:L.split(","),roles:null,urlParams:ft.defaultUrlParams_,name:""};await a;let ee=Me.parseEssentialProperties(e),oe=Me.parseSupplementalProperties(e),le=z=>ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(z.schemeIdUri),H=ee.find(le)||oe.find(le);if(H){let z=this.getURLParametersFunction_(H.element);z&&(V.urlParams=z)}let J=this.findRequestParamFn_(e,"segment");J&&(V.urlParams=J),this.gapCount_=0;let Z=this.parsePeriods_(V,g,e,!1),ce=Z.duration,W=Z.periods;if((M&&!this.isTransitionFromDynamicToStatic_||!Z.durationDerivedFromPeriods)&&x.setDuration(ce||1/0),this.isLowLatency_&&this.lowLatencyMode_&&x.setAvailabilityTimeOffset(this.minTotalAvailabilityTimeOffset_),x.notifyMaxSegmentDuration(A||1),Fe&&!this.isTransitionFromDynamicToStatic_&&x.assertIsValid(),this.isLowLatency_&&this.lowLatencyMode_){let z=E!=null?E:this.config_.defaultPresentationDelay;x.setDelay(z)}if(this.manifest_)this.manifest_.periodCount=W.length,this.manifest_.gapCount=this.gapCount_,await this.postPeriodProcessing_(W,!1);else{if(await this.periodCombiner_.combinePeriods(W,V.dynamic),this.manifest_={presentationTimeline:x,variants:this.periodCombiner_.getVariants(),textStreams:this.periodCombiner_.getTextStreams(),imageStreams:this.periodCombiner_.getImageStreams(),chapterStreams:[],offlineSessionIds:[],sequenceMode:this.config_.dash.sequenceMode,ignoreManifestTimestampsInSegmentsMode:!1,type:me.DASH,serviceDescription:this.parseServiceDescription_(e),nextUrl:this.parseMpdChaining_(e),periodCount:W.length,gapCount:this.gapCount_,isLowLatency:this.isLowLatency_,startTime:null},x.usingPresentationStartTime()){let ge=I.findChildren(e,"UTCTiming"),Y=await this.parseUtcTiming_(g,ge);if(!this.playerInterface_)return;x.setClockOffset(Y)}x.lockStartTime(),this.periodCombiner_&&!this.manifest_.presentationTimeline.isLive()&&this.periodCombiner_.release();let z=I.findChild(e,"ProgramInformation");if(z){let ge=U.EventName.ProgramInformation,Y=new Map().set("detail",z),X=new U(ge,Y);this.playerInterface_.onEvent(X)}}this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_),this.cleanStreamMap_(),this.cleanContinuityCache_(W)}async postPeriodProcessing_(e,t){await this.periodCombiner_.combinePeriods(e,!0,t),this.manifest_.variants=this.periodCombiner_.getVariants();let i=this.periodCombiner_.getTextStreams();i.length>0&&(this.manifest_.textStreams=i),this.manifest_.imageStreams=this.periodCombiner_.getImageStreams(),this.playerInterface_.filter(this.manifest_)}async processPatchManifest_(e){let t=e.attributes.mpdId,i=I.parseAttr(e,"originalPublishTime",I.parseDate);if(!t||t!==this.manifestPatchContext_.mpdId||i!==this.manifestPatchContext_.publishTime)throw this.patchLocationNodes_=[],new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.DASH_INVALID_PATCH);let r=[],s=[],n=new Set;for(let a of I.getChildNodes(e)){let o=!0,c=I.parseXpath(a.attributes.sel||""),d=c[c.length-1],u=I.getContents(a)||"";if(d.name==="MPD")if(d.attribute==="mediaPresentationDuration"){let m=I.getContents(a)||"";this.parsePatchMediaPresentationDurationChange_(m)}else d.attribute==="type"?this.parsePatchMpdTypeChange_(u):d.attribute==="publishTime"?this.manifestPatchContext_.publishTime=I.parseDate(u)||0:d.attribute===null&&a.tagName==="add"?s.push(a):o=!1;else if(d.name==="PatchLocation")this.updatePatchLocationNodes_(a);else if(d.name==="Period")a.tagName==="add"?s.push(a):a.tagName==="remove"&&d.id&&this.removePatchPeriod_(d.id);else if(d.name==="SegmentTemplate"){let m=this.modifySegmentTemplate_(a);for(let f of m)n.add(f)}else if(d.name==="SegmentTimeline"||d.name==="S"){let m=this.modifyTimepoints_(a);for(let f of m)n.add(f)}else o=!1;o||p.warning("Unhandled "+a.tagName+" operation",a.attributes.sel)}for(let a of n)this.parsePatchSegment_(a);for(let a of s)r.push(...this.parsePatchPeriod_(a));if(r.length&&(this.manifest_.periodCount+=r.length,this.manifest_.gapCount=this.gapCount_,await this.postPeriodProcessing_(r,!0)),this.manifestPatchContext_.type=="static"){let a=this.manifestPatchContext_.mediaPresentationDuration;this.manifest_.presentationTimeline.setDuration(a||1/0)}}parsePatchMpdTypeChange_(e){this.manifest_.presentationTimeline.setStatic(e=="static"),this.manifestPatchContext_.type=e;for(let t of this.contextCache_.values())t.dynamic=e=="dynamic";e=="static"&&(this.updatePeriod_=-1)}parsePatchMediaPresentationDurationChange_(e){let t=I.parseDuration(e);if(t!=null){this.manifestPatchContext_.mediaPresentationDuration=t;for(let i of this.contextCache_.values())i.mediaPresentationDuration=t}}parsePatchPeriod_(e){v.assert(this.manifestPatchContext_.getBaseUris,"Must provide getBaseUris on manifestPatchContext_");let t={dynamic:this.manifestPatchContext_.type=="dynamic",presentationTimeline:this.manifest_.presentationTimeline,period:null,periodInfo:null,adaptationSet:null,representation:null,bandwidth:0,indexRangeWarningGiven:!1,availabilityTimeOffset:this.manifestPatchContext_.availabilityTimeOffset,profiles:this.manifestPatchContext_.profiles,mediaPresentationDuration:this.manifestPatchContext_.mediaPresentationDuration,roles:null,urlParams:ft.defaultUrlParams_,name:""};return this.parsePeriods_(t,this.manifestPatchContext_.getBaseUris,e,!0).periods}removePatchPeriod_(e){this.manifest_.periodCount--;for(let i of this.contextCache_.keys())if(i.startsWith(e)){let r=this.contextCache_.get(i);fr.removeTimepoints(r),this.parsePatchSegment_(i),this.contextCache_.delete(i)}let t=this.lastManifestUpdatePeriodIds_.filter(i=>i!==e);this.lastManifestUpdatePeriodIds_=t,this.parsedPeriodCache_.delete(e)}getContextIdsFromPath_(e){let t="",i="",r=-1,s="";for(let a of e)a.name==="Period"?t=a.id:a.name==="AdaptationSet"?(i=a.id,a.position!==null&&(r=a.position)):a.name==="Representation"&&(s=a.id);let n=[];if(s)n.push(t+","+s);else if(i)for(let a of this.contextCache_.values())a.period.id===t&&a.adaptationSet.id===i&&a.representation.id&&n.push(t+","+a.representation.id);else if(r>-1)for(let a of this.contextCache_.values())a.period.id===t&&a.adaptationSet.position===r&&a.representation.id&&n.push(t+","+a.representation.id);return n}modifySegmentTemplate_(e){let t=I.parseXpath(e.attributes.sel||""),i=t[t.length-1];if(!i.attribute)return[];let r=this.getContextIdsFromPath_(t),s=I.getContents(e)||"";for(let n of r){let a=this.contextCache_.get(n);v.assert(a&&a.representation.segmentTemplate,"cannot modify segment template"),I.modifyNodeAttribute(a.representation.segmentTemplate,e.tagName,i.attribute,s)}return r}modifyTimepoints_(e){let t=I.parseXpath(e.attributes.sel||""),i=this.getContextIdsFromPath_(t);for(let r of i){let s=this.contextCache_.get(r);fr.modifyTimepoints(s,e)}return i}parsePatchSegment_(e){let t=this.contextCache_.get(e),i=this.streamMap_.get(e);v.assert(i,"stream should exist"),i.segmentIndex&&i.segmentIndex.evict(this.manifest_.presentationTimeline.getSegmentAvailabilityStart());try{let r=(n,a,o,c)=>this.requestSegment_(n,a,o,c),s=fr.createStreamInfo(t,r,this.streamMap_,!0,this.config_.dash.initialSegmentLimit,this.periodDurations_,t.representation.aesKey,null,!0,this.continuityCache_);i.createSegmentIndex=async()=>{i.segmentIndex||(i.segmentIndex=await s.generateSegmentIndex())}}catch(r){let s=R.ContentType,n=t.representation.contentType,a=n==s.TEXT||n==s.APPLICATION,o=n==s.IMAGE;if(!(a||o)||r.code!=h.Code.DASH_NO_SEGMENT_INFO)throw r}}parseServiceDescription_(e){let t=I.findChild(e,"ServiceDescription");if(!t)return null;let i=I.findChild(t,"Latency"),r=I.findChild(t,"PlaybackRate");if(!i&&!r)return null;let s={};return i&&("target"in i.attributes&&(s.targetLatency=parseInt(i.attributes.target,10)/1e3),"max"in i.attributes&&(s.maxLatency=parseInt(i.attributes.max,10)/1e3),"min"in i.attributes&&(s.minLatency=parseInt(i.attributes.min,10)/1e3)),r&&("max"in r.attributes&&(s.maxPlaybackRate=parseFloat(r.attributes.max)),"min"in r.attributes&&(s.minPlaybackRate=parseFloat(r.attributes.min))),s}checkMpdEssentialProperties_(e){let t=ft.SUPPORTED_ESSENTIAL_PROPERTIES_,i=Me.parseEssentialProperties(e);if(!i.length)return;let r=new Map,s=0;for(let n of i){let a=n.id!=null?"id:"+n.id:"no-id:"+s++;r.getOrInsert(a,[]).push(n)}for(let n of r.values())if(!n.some(o=>t.has(o.schemeIdUri)))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_ESSENTIAL_PROPERTY,n.map(o=>o.schemeIdUri))}parseMpdChaining_(e){let t=Me.parseSupplementalProperties(e),i=Me.getDescriptor(t,"urn:mpeg:dash:chaining:2016");return!i||!i.value?null:fe.applyUrlParams(i.value,this.findRequestParamFn_(e,"chaining"))}parsePeriods_(e,t,i,r){let s=e.mediaPresentationDuration;s||(s=I.parseAttr(i,"mediaPresentationDuration",I.parseDuration),this.manifestPatchContext_.mediaPresentationDuration=s);let n=0;this.manifest_&&this.manifest_.presentationTimeline&&this.isTransitionFromDynamicToStatic_&&(n=this.manifest_.presentationTimeline.getSeekRangeStart());let a=[],o=n,c=I.findChildren(i,"Period"),d=e.dynamic;d||this.parsedPeriodCache_.clear();let u=d&&!r?new Set(this.lastManifestUpdatePeriodIds_.slice(1,-1)):null;for(let m=0;m<c.length;m++){let f=c[m],g=c[m+1],_=I.parseAttr(f,"start",I.parseDuration,o),T=f.attributes.id,S=I.parseAttr(f,"duration",I.parseDuration);_=m==0&&_==0&&this.isTransitionFromDynamicToStatic_?n:_;let b=null;if(g){let M=I.parseAttr(g,"start",I.parseDuration);M!=null&&(b=M-_+n)}else s!=null&&(b=s-_+n);let E=R.GAP_OVERLAP_TOLERANCE_SECONDS;if(b&&S&&Math.abs(b-S)>E&&(p.warning("There is a gap/overlap between Periods",f),b>S&&this.gapCount_++),b==null&&(b=S),this.largestPeriodStartTime_!==null&&T!=null&&_!==null&&_<this.largestPeriodStartTime_&&!this.lastManifestUpdatePeriodIds_.includes(T)&&m+1!=c.length){p.debug(`Skipping Period with ID ${T} as its start time is smaller than the largest period start time that has been seen, and ID is unseen before`);continue}_!==null&&(this.largestPeriodStartTime_===null||_>this.largestPeriodStartTime_)&&(this.largestPeriodStartTime_=_);let C={start:_,duration:b,node:f,isLastPeriod:b==null||!g},A=null,w=m>0&&m<c.length-1;if(d&&u&&w&&!r&&(T!=null||(T=this.periodIdFallback_(_)),u.has(T))){let M=this.parsedPeriodCache_.get(T);M&&(A=M)}if(A||(A=this.parsePeriod_(e,t,C),d&&A.id&&this.parsedPeriodCache_.set(A.id,A)),a.push(A),A.id&&b&&this.periodDurations_.set(A.id,b),b==null){g&&p.warning("Skipping Period",m+1,"and any subsequent Periods:","Period",m+1,"does not have a valid start time.",g),o=null;break}o=_+b}if(d&&!r&&this.prunePeriodCache_(a),r)for(let m of a){let f=m.id;this.lastManifestUpdatePeriodIds_.includes(f)||this.lastManifestUpdatePeriodIds_.push(f)}else this.lastManifestUpdatePeriodIds_=a.map(m=>m.id);if(s!=null){if(o!=null){let m=R.GAP_OVERLAP_TOLERANCE_SECONDS,f=o-n-s;Math.abs(f)>m&&p.warning("@mediaPresentationDuration does not match the total duration ","of all Periods.")}return{periods:a,duration:s+n,durationDerivedFromPeriods:!1}}else return{periods:a,duration:o,durationDerivedFromPeriods:!0}}prunePeriodCache_(e){let t=new Set(e.map(i=>i.id));for(let i of Array.from(this.parsedPeriodCache_.keys()))t.has(i)||this.parsedPeriodCache_.delete(i)}periodIdFallback_(e){return"__shaka_period_"+e}cleanStreamMap_(){let t=Array.from(this.indexStreamMap_.keys()).filter(i=>!this.lastManifestUpdatePeriodIds_.includes(i));for(let i of t){let r=!0;for(let s of this.indexStreamMap_.get(i)){let n=this.streamMap_.get(s);if(n){if(n.segmentIndex&&!n.segmentIndex.isEmpty()){r=!1;continue}this.periodCombiner_&&this.periodCombiner_.deleteStream(n,i),this.streamMap_.delete(s)}}r&&this.indexStreamMap_.delete(i)}}cleanContinuityCache_(e){let t=new Set(e.map(i=>i.id));for(let i of this.continuityCache_.keys())t.has(i)||this.continuityCache_.delete(i)}parsePeriod_(e,t,i){let r=R.ContentType;v.assert(i.node,"periodInfo.node should exist"),e.period=this.createFrame_(i.node,null,t),e.periodInfo=i,e.period.availabilityTimeOffset=e.availabilityTimeOffset,e.period.id||(p.info("No Period ID given for Period with start time "+i.start+", Assigning a default"),e.period.id=this.periodIdFallback_(i.start));let s=I.findChildren(i.node,"EventStream"),n=e.presentationTimeline.getSegmentAvailabilityStart();for(let S of s)this.parseEventStream_(i.start,i.duration,S,n);let a=Me.parseSupplementalProperties(i.node);for(let S of a)if(ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(S.schemeIdUri)){let b=this.getURLParametersFunction_(S.element);b&&(e.urlParams=b)}let o=this.findRequestParamFn_(i.node,"segment");o&&(e.urlParams=o);let c=I.findChildren(i.node,"AdaptationSet").map((S,b)=>this.parseAdaptationSet_(e,b,S)).filter(it.isNotNull);if(e.dynamic){let S=new Set,b=0;for(let E=0;E<c.length;E++){let C=c[E].representationIds;for(let A=0;A<C.length;A++)S.add(C[A]),b++}if(b!=S.size)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_DUPLICATE_REPRESENTATION_ID)}let d=new Map;for(let S of c)for(let[b,E]of S.dependencyStreamMap)d.set(b,E);if(d.size){let S=new Map;for(let b=0;b<c.length;b++){let E=c[b].streams;for(let C=0;C<E.length;C++)d.has(E[C].originalId)&&(S.has(b)||S.set(b,[]),S.get(b).push(E[C].originalId))}if(S.size){let b=I.findChildren(i.node,"AdaptationSet"),E=e.name;e.name="dependencyStream",S.forEach((C,A)=>{let w=b[A];if(!w)return;let M=this.parseAdaptationSet_(e,A,w);if(!M)return;let x=[];for(let k=0;k<C.length;k++){let L=C[k],V=M.streams.find(ee=>ee.originalId==L);if(V){let ee=d.get(V.originalId||"");V.dependencyStream=ee,V.originalId+=ee.originalId,V.baseOriginalId=ee.baseOriginalId,x.push(V)}}x.length&&c[A].streams.push(...x)}),e.name=E}}let[u,m]=ye.partition(c,S=>!!S.trickModeFor);for(let S of u)for(let b of S.streams)b.isIframe=!0;if(!this.config_.disableIFrames)for(let S of u){let b=S.trickModeFor.split(" ");for(let E of m)if(b.includes(E.id))for(let C of E.streams)se.setBetterIFrameStream(C,S.streams)}let f=this.getStreamsFromSets_(this.config_.disableAudio,m,r.AUDIO),g=this.getStreamsFromSets_(this.config_.disableVideo,m,r.VIDEO),_=this.getStreamsFromSets_(this.config_.disableText,m,r.TEXT),T=this.getStreamsFromSets_(this.config_.disableThumbnails,m,r.IMAGE);if(g.length===0&&f.length===0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_EMPTY_PERIOD);return{id:e.period.id,audioStreams:f,videoStreams:g,textStreams:_,imageStreams:T}}getStreamsFromSets_(e,t,i){return e||!t.length?[]:t.reduce((r,s)=>(s.contentType!=i||r.push(...s.streams),r),[])}parseAdaptationSet_(e,t,i){let r=R.ContentType;e.adaptationSet=this.createFrame_(i,e.period,null),e.adaptationSet.position=t;let s=!1,n=I.findChildren(i,"Role"),a=n.map(Y=>Y.attributes.value).filter(it.isNotNull),o,c=e.adaptationSet.contentType==r.TEXT;c&&(o=R.TextStreamKind.SUBTITLE);for(let Y of n){let X=Y.attributes.schemeIdUri;if(X==null||X=="urn:mpeg:dash:role:2011"){let N=Y.attributes.value;switch(N){case"main":s=!0;break;case"caption":case"subtitle":o=N;break}}}let d,u,m="urn:mpeg:mpegB:cicp",f=`${m}:TransferCharacteristics`,g=`${m}:ColourPrimaries`,_=Y=>{switch(Y){case 1:case 6:case 13:case 14:case 15:return"SDR";case 16:return"PQ";case 18:return"HLG"}},T=Y=>{switch(Y){case 1:case 5:case 6:case 7:return"srgb";case 9:return"rec2020";case 11:case 12:return"p3"}},S=Y=>{let X=Y.attributes["dvb:fontFamily"],N=Y.attributes["dvb:url"];if(X&&N){let $=fe.resolveUris(e.adaptationSet.getBaseUris(),[N],e.urlParams());this.playerInterface_.addFont(X,$[0])}},b=Me.parseEssentialProperties(i),E=Me.parseSupplementalProperties(i),C=null,A=!1,w=null,M=!1;for(let Y of b){let X=Y.schemeIdUri;if(!ft.SUPPORTED_ESSENTIAL_PROPERTIES_.has(X)){M=!0;continue}X=="http://dashif.org/guidelines/trickmode"?C=Y.value:X==f?d=_(parseInt(Y.value,10)):X==g?u=T(parseInt(Y.value,10)):X=="urn:mpeg:dash:ssr:2023"?this.config_.dash.enableFastSwitching?A=!0:M=!0:X=="urn:dvb:dash:fontdownload:2014"?S(Y.element):ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(X)&&(w=this.getURLParametersFunction_(Y.element),w||(M=!0))}if(M)return null;let x=null;for(let Y of E){let X=Y.schemeIdUri;X=="http://dashif.org/guidelines/last-segment-number"?x=parseInt(Y.value,10)-1:X==f?d=_(parseInt(Y.value,10)):X==g?u=T(parseInt(Y.value,10)):X=="urn:dvb:dash:fontdownload:2014"?S(Y.element):ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(X)&&(w=this.getURLParametersFunction_(Y.element))}let k=this.findRequestParamFn_(i,"segment");k&&(w=k),w&&(e.urlParams=w);let L=I.findChildren(i,"Accessibility"),V=new Map,ee;for(let Y of L){let X=Y.attributes.schemeIdUri,N=Y.attributes.value;X=="urn:scte:dash:cc:cea-608:2015"&&!this.config_.disableText?R.parseCEA608Captions(N,V):X=="urn:scte:dash:cc:cea-708:2015"&&!this.config_.disableText?R.parseCEA708Captions(N,V):X=="urn:mpeg:dash:role:2011"?N!=null&&(a.push(N),N=="captions"&&(o=R.TextStreamKind.CLOSED_CAPTION)):X=="urn:tva:metadata:cs:AudioPurposeCS:2007"&&(N=="1"?ee=me.AccessibilityPurpose.VISUALLY_IMPAIRED:N=="2"?ee=me.AccessibilityPurpose.HARD_OF_HEARING:N=="9"&&(ee=me.AccessibilityPurpose.SPOKEN_SUBTITLES))}let oe=I.findChildren(i,"ContentProtection"),le=this.contentProtection_.parseFromAdaptationSet(oe,this.config_.ignoreDrmInfo,this.config_.dash.keySystemsByURI);e.adaptationSet.encrypted=oe.length>0;let H=ve.normalize(e.adaptationSet.language||"und"),J=e.adaptationSet.label,Z=new Map,ce=I.findChildren(i,"Representation");if(!this.config_.ignoreSupplementalCodecs){let Y=[];for(let X of ce){let N=I.getAttributeNS(X,ft.SCTE214_,"supplementalCodecs");if(N){let $=Oe.cloneObject(X);$.attributes.codecs=N.split(" ").join(","),$.attributes.id&&($.attributes.supplementalId=$.attributes.id+"_supplementalCodecs"),Y.push($)}}ce.push(...Y)}let W=ce.map(Y=>{let X=this.parseRepresentation_(e,le,o,H,J,s,a,V,Y,ee,x);if(X){X.hdr=X.hdr||d,X.colorGamut=X.colorGamut||u,X.fastSwitching=A;let N=Y.attributes.dependencyId;if(N)return X.baseOriginalId=N,Z.set(N,X),null}return X}).filter(Y=>!!Y);if(W.length==0&&Z.size==0){let Y=e.adaptationSet.contentType==r.IMAGE;if(this.config_.dash.ignoreEmptyAdaptationSet||c||Y)return null;throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_EMPTY_ADAPTATION_SET)}if(!e.adaptationSet.contentType||e.adaptationSet.contentType==r.APPLICATION){let Y=W[0].mimeType,X=W[0].codecs;e.adaptationSet.contentType=ft.guessContentType_(Y,X);for(let N of W)N.type=e.adaptationSet.contentType}let z=e.adaptationSet.id||"__fake__"+this.globalId_++;for(let Y of W){for(let X of le.drmInfos)X.keyIds=X.keyIds&&Y.keyIds?new Set([...X.keyIds,...Y.keyIds]):X.keyIds||Y.keyIds;this.config_.enableAudioGroups&&(Y.groupId=z)}let ge=ce.map(Y=>Y.attributes.supplementalId||Y.attributes.id).filter(it.isNotNull);return{id:z,contentType:e.adaptationSet.contentType,language:H,main:s,streams:W,drmInfos:le.drmInfos,trickModeFor:C,representationIds:ge,dependencyStreamMap:Z}}getURLParametersFunction_(e){let t=I.findChildNS(e,ft.UP_NAMESPACE_2014_,"UrlQueryInfo")||I.findChildNS(e,ft.UP_NAMESPACE_2016_,"ExtUrlQueryInfo");return t?this.buildUrlQueryFn_(t):null}findRequestParamFn_(e,t){let i;for(let r of I.findChildren(e,"RequestParam")){let s=(r.attributes.includeInRequests||"segment").split(/\s+/);if(s.includes(t)||s.includes("*")){let n=this.buildUrlQueryFn_(r);n&&(i=n)}}return i}buildUrlQueryFn_(e){let t=I.parseAttr(e,"useMPDUrlQuery",I.parseBoolean,!1),i=q.htmlUnescape(e.attributes.queryString||""),r=q.htmlUnescape(e.attributes.queryTemplate||"");return!r||!t&&!i?null:()=>{let s=[];t&&this.lastManifestQueryParams_&&s.push(this.lastManifestQueryParams_),i&&s.push(i);let n=s.join("&");if(r=="$querypart$")return n;let a;return r.split("&").map(c=>{if(c=="$querypart$")return n;let d=/\$query:(.*?)\$/.exec(c);if(d){let u=d[1];a||(a=new URLSearchParams(n));let m=a.get(u);return m?`${u}=${m}`:""}return c.replace(/\$\$|\$[^$]+\$/g,u=>u==="$$"?"$":"")}).filter(Boolean).join("&")}}parseRepresentation_(e,t,i,r,s,n,a,o,c,d,u){let m=R.ContentType,f=e.period.id;e.representation=this.createFrame_(c,e.adaptationSet,null);let g=e.representation.id;if(this.minTotalAvailabilityTimeOffset_=Math.min(this.minTotalAvailabilityTimeOffset_,e.representation.availabilityTimeOffset),this.isLowLatency_=this.minTotalAvailabilityTimeOffset_>0,!this.verifyRepresentation_(e.representation))return p.warning("Skipping Representation",e.representation),null;let _=e.periodInfo.start;e.bandwidth=I.parseAttr(c,"bandwidth",I.parsePositiveInt)||0,e.roles=a;let T=Me.parseEssentialProperties(c),S=Me.parseSupplementalProperties(c),b=I.findChildren(c,"ContentProtection"),E=N=>ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(N.schemeIdUri),C=null,A=T.find(E)||S.find(E);A&&(C=this.getURLParametersFunction_(A.element));let w=this.findRequestParamFn_(c,"segment");w&&(C=w),C&&(e.urlParams=C);let M,x=e.representation.contentType,k=x==m.TEXT||x==m.APPLICATION,L=x==m.IMAGE;b.length&&(e.adaptationSet.encrypted=!0);try{let N;if(t.aes128Info){let Ie=e.representation.getBaseUris,tt=e.urlParams,_t=fe.resolveUris(Ie(),[t.aes128Info.keyUri],tt()),bt=K.RequestType.KEY,yt=K.makeRequest(_t,this.config_.retryParameters);N={bitsKey:128,blockCipherMode:"CBC",iv:t.aes128Info.iv,firstMediaSequenceNumber:0},N.fetchKey=async()=>{let xt=await this.makeNetworkRequest_(yt,bt);if(!xt.data||xt.data.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_KEY_LENGTH);let mt={name:"AES-CBC"};N.cryptoKey=await window.crypto.subtle.importKey("raw",xt.data,mt,!0,["decrypt"]),N.fetchKey=void 0}}e.representation.aesKey=N;let $=(Ie,tt,_t,bt)=>this.requestSegment_(Ie,tt,_t,bt);if(e.representation.segmentBase)M=Hi.createStreamInfo(e,$,N);else if(e.representation.segmentList)M=Dn.createStreamInfo(e,this.streamMap_,N);else if(e.representation.segmentTemplate){let Ie=!!this.manifest_;M=fr.createStreamInfo(e,$,this.streamMap_,Ie,this.config_.dash.initialSegmentLimit,this.periodDurations_,N,u,!1,this.continuityCache_)}else{v.assert(k,"Must have Segment* with non-text streams.");let Ie=e.periodInfo.duration||0,tt=e.representation.getBaseUris,_t=e.representation.mimeType,bt=e.representation.codecs;M={endTime:-1,timeline:-1,generateSegmentIndex:()=>{let yt=Ze.forSingleSegment(_,Ie,tt());return yt.forEachTopLevelReference(xt=>{xt.mimeType=_t,xt.codecs=bt}),Promise.resolve(yt)},timescale:1}}}catch(N){if((k||L)&&N.code==h.Code.DASH_NO_SEGMENT_INFO)return null;throw N}let V=this.contentProtection_.parseFromRepresentation(b,t,this.config_.ignoreDrmInfo,this.config_.dash.keySystemsByURI),ee=new Set(V?[V]:[]),oe=Me.hasDescriptor(S,"tag:dolby.com,2018:dash:EC3_ExtensionType:2018","JOC"),le=Me.hasDescriptor(S,"tag:dolby.com,2016:dash:virtualized_content:2016","1"),H=oe||le,J=!1;k&&(J=a.includes("forced_subtitle")||a.includes("forced-subtitle"));let Z;if(L){let N=["http://dashif.org/thumbnail_tile","http://dashif.org/guidelines/thumbnail_tile"],$=T.find(Ie=>N.includes(Ie.schemeIdUri));if($&&(Z=$.value),!Z)return null}let ce,W=e.profiles,z=e.representation.codecs;W.includes("http://dashif.org/guidelines/dash-if-uhd#hevc-hdr-pq10")&&(z.includes("hvc1.2.4.L153.B0")||z.includes("hev1.2.4.L153.B0"))&&(ce="PQ");let Y=g?f+","+g:"";if(Y&&e.name&&(Y+=e.name),this.patchLocationNodes_.length&&Y&&this.contextCache_.set(Y,this.cloneContext_(e)),e.representation.producerReferenceTime&&this.parseProducerReferenceTime_(e.representation.producerReferenceTime,M,e.presentationTimeline),M.endTime!=-1&&f!=null&&g!=null){let N=this.continuityCache_.get(f);if(N)N.endTime=M.endTime,N.reps.includes(g)||N.reps.push(g),this.continuityCache_.set(f,N);else{let $={endTime:M.endTime,timeline:M.timeline,reps:[g]};this.continuityCache_.set(f,$)}}let X;return Y&&this.streamMap_.has(Y)?X=this.streamMap_.get(Y):X={id:this.globalId_++,originalId:g,groupId:null,createSegmentIndex:()=>Promise.resolve(),closeSegmentIndex:()=>{X.segmentIndex&&(X.segmentIndex.release(),X.segmentIndex=null)},segmentIndex:null,mimeType:e.representation.mimeType,codecs:z,supplementalCodecs:e.representation.supplementalCodecs,frameRate:e.representation.frameRate,pixelAspectRatio:e.representation.pixelAspectRatio,bandwidth:e.bandwidth,width:e.representation.width,height:e.representation.height,kind:i,encrypted:t.drmInfos.length>0,drmInfos:t.drmInfos,keyIds:ee,language:r,originalLanguage:e.adaptationSet.language,label:s,type:e.adaptationSet.contentType,primary:n,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:e.representation.emsgSchemeIdUris,roles:a,forced:J,channelsCount:e.representation.numChannels,audioSamplingRate:e.representation.audioSamplingRate,spatialAudio:H,closedCaptions:o,hdr:ce,colorGamut:void 0,videoLayout:void 0,tilesLayout:Z,accessibilityPurpose:d,external:!1,fastSwitching:!1,fullMimeTypes:new Set([O.getFullType(e.representation.mimeType,e.representation.codecs)]),isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1},X.createSegmentIndex=async()=>{X.segmentIndex||(X.segmentIndex=await M.generateSegmentIndex())},Y&&e.dynamic&&!this.streamMap_.has(Y)&&(this.streamMap_.set(Y,X),this.indexStreamMap_.getOrInsertComputed(f||"",()=>[]).push(Y)),X}parseProducerReferenceTime_(e,t,i){if(this.parsedPrftNodes_.has(e))return;this.parsedPrftNodes_.add(e);let r=I.parseAttr(e,"presentationTime",I.parseNonNegativeInt)||0,s=I.findChild(e,"UTCTiming"),n;if(!s||!s.attributes.schemeIdUri||ft.isNtpScheme_(s.attributes.schemeIdUri)){let d=I.parseAttr(e,"wallClockTime",I.parseNonNegativeInt)||0;n=Wr.convertNtp(d)}else n=(I.parseAttr(e,"wallClockTime",I.parseDate)||0)*1e3;let o=new Date(n-r/t.timescale*1e3),c=o.getTime()/1e3;if(!isNaN(c)){i.isStartTimeLocked()||i.setInitialProgramDateTime(c);let d={wallClockTime:n,programStartDate:o},u=U.EventName.Prft,m=new Map().set("detail",d),f=new U(u,m);this.playerInterface_.onEvent(f)}}cloneContext_(e){let t=r=>{if(!r)return null;let s=Oe.shallowCloneObject(r);return s.segmentBase=null,s.segmentList=null,s.segmentTemplate=I.cloneNode(s.segmentTemplate),s.producerReferenceTime=null,s},i=Oe.shallowCloneObject(e);return i.period=t(i.period),i.adaptationSet=t(i.adaptationSet),i.representation=t(i.representation),i.periodInfo&&(i.periodInfo=Oe.shallowCloneObject(i.periodInfo),i.periodInfo.node=null),i}async onUpdate_(){v.assert(this.updatePeriod_>=0,"There should be an update period"),p.info("Updating manifest...");let e=0;try{e=await this.requestManifest_()}catch(t){if(v.assert(t instanceof h,"Should only receive a Shaka error"),this.playerInterface_){if(this.config_.raiseFatalErrorOnManifestUpdateRequestFailure){this.playerInterface_.onError(t);return}t.severity=h.Severity.RECOVERABLE,this.playerInterface_.onError(t)}}this.playerInterface_&&(this.playerInterface_.onManifestUpdated(),this.setUpdateTimer_(e))}updateNow_(){this.updateTimer_.tickNow()}setUpdateTimer_(e){if(this.updatePeriod_<0)return;let t=this.updatePeriod_;this.config_.updatePeriod>=0&&(t=this.config_.updatePeriod);let i=Math.max(t-e,this.averageUpdateDuration_.getEstimate());this.updateTimer_.tickAfter(i)}createFrame_(e,t,i){v.assert(t||i,"Must provide either parent or getBaseUris"),t=t||{contentType:"",mimeType:"",codecs:"",supplementalCodecs:"",emsgSchemeIdUris:[],frameRate:void 0,pixelAspectRatio:void 0,numChannels:null,audioSamplingRate:null,availabilityTimeOffset:0,segmentSequenceCadence:1,encrypted:!1},i=i||t.getBaseUris;let r=I.parseNonNegativeInt,s=I.evalDivision,n=e.attributes.id,a=e.attributes.supplementalId,o=I.findChildren(e,"BaseURL"),c,d=!1;if(this.contentSteeringManager_)for(let W of o){let z=W.attributes.serviceLocation,ge=I.getContents(W);z&&ge&&(this.contentSteeringManager_.addLocation(n,z,ge),d=!0)}(!d||!this.contentSteeringManager_)&&(c=o.map(I.getContents));let u=this.contentSteeringManager_,m=()=>o.length?u&&d?u.getLocations(n):c||[]:[],f=e.attributes.contentType||t.contentType,g=e.attributes.mimeType||t.mimeType,_=[e.attributes.codecs||t.codecs],T=vt.codecsFiltering(_).join(","),S=[I.getAttributeNS(e,ft.SCTE214_,"supplementalCodecs")||t.supplementalCodecs],b=vt.codecsFiltering(S).join(","),E=I.parseAttr(e,"frameRate",s)||t.frameRate,C=e.attributes.sar||t.pixelAspectRatio,A=this.emsgSchemeIdUris_(I.findChildren(e,"InbandEventStream"),t.emsgSchemeIdUris),w=I.findChildren(e,"AudioChannelConfiguration"),M=this.parseAudioChannels_(w)||t.numChannels,x=I.parseAttr(e,"audioSamplingRate",r)||t.audioSamplingRate;f||(f=ft.guessContentType_(g,T));let k=I.findChild(e,"SegmentBase"),L=I.findChild(e,"SegmentTemplate"),V=k&&I.parseAttr(k,"availabilityTimeOffset",I.parseFloat)||0,ee=L&&I.parseAttr(L,"availabilityTimeOffset",I.parseFloat)||0,oe=o&&o.length&&I.parseAttr(o[0],"availabilityTimeOffset",I.parseFloat)||0,le=t.availabilityTimeOffset+oe+V+ee,H=null,J=I.findChild(e,"SegmentSequenceProperties");if(J){let W=I.parseAttr(J,"cadence",I.parsePositiveInt);W&&(H=W)}let Z=e.attributes.label,ce=I.findChildren(e,"Label");if(ce&&ce.length){let W=ce[0];I.getTextContents(W)&&(Z=I.getTextContents(W))}return{getBaseUris:()=>fe.resolveUris(i(),m()),segmentBase:k||t.segmentBase,segmentList:I.findChild(e,"SegmentList")||t.segmentList,segmentTemplate:L||t.segmentTemplate,producerReferenceTime:I.findChild(e,"ProducerReferenceTime")||t.producerReferenceTime,width:I.parseAttr(e,"width",r)||t.width,height:I.parseAttr(e,"height",r)||t.height,contentType:f,mimeType:g,codecs:T,supplementalCodecs:b.split(" ").join(","),frameRate:E,pixelAspectRatio:C,emsgSchemeIdUris:A,id:a||n,originalId:n,language:e.attributes.lang,numChannels:M,audioSamplingRate:x,availabilityTimeOffset:le,initialization:null,segmentSequenceCadence:H||t.segmentSequenceCadence,label:Z||null,encrypted:!1}}emsgSchemeIdUris_(e,t){let i=t.slice();for(let r of e){let s=r.attributes.schemeIdUri;i.includes(s)||i.push(s)}return i}parseAudioChannels_(e){for(let t of e){let i=t.attributes.schemeIdUri;if(!i)continue;let r=t.attributes.value;if(r)switch(i){case"urn:mpeg:dash:outputChannelPositionList:2012":return r.trim().split(/ +/).length;case"urn:mpeg:dash:23003:3:audio_channel_configuration:2011":case"urn:dts:dash:audio_channel_configuration:2012":{let s=parseInt(r,10);if(!s){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}return s}case"tag:dolby.com,2015:dash:audio_channel_configuration:2015":{let s=[2,1,2,2,2,2,1,2,2,1,1,1,1,2,1,1,2,2],n=parseInt(r,16);if(!n){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}let a=0;for(let o=0;o<s.length;o++)n&1<<o&&(a+=s[o]);if(a)return a;continue}case"tag:dolby.com,2014:dash:audio_channel_configuration:2011":case"urn:dolby:dash:audio_channel_configuration:2011":{let s=[1,1,1,1,1,2,2,1,1,2,2,2,1,2,1,1].reverse(),n=parseInt(r,16);if(!n){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}let a=0;for(let o=0;o<s.length;o++)n&1<<o&&(a+=s[o]);if(a)return a;continue}case"urn:mpeg:mpegB:cicp:ChannelConfiguration":{let n=[0,1,2,3,4,5,6,8,2,3,4,7,8,24,8,12,10,12,14,12,14],a=parseInt(r,10);if(!a){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}if(a>0&&a<n.length)return n[a];continue}default:p.warning("Unrecognized audio channel scheme:",i,r);continue}}return null}verifyRepresentation_(e){let t=R.ContentType,i=0;return i+=e.segmentBase?1:0,i+=e.segmentList?1:0,i+=e.segmentTemplate?1:0,i==0?e.contentType==t.TEXT||e.contentType==t.APPLICATION?!0:(p.warning("Representation does not contain a segment information source:","the Representation must contain one of SegmentBase, SegmentList,",'SegmentTemplate, or explicitly indicate that it is "text".',e),!1):(i!=1&&(p.warning("Representation contains multiple segment information sources:","the Representation should only contain one of SegmentBase,","SegmentList, or SegmentTemplate.",e),e.segmentBase?(p.info("Using SegmentBase by default."),e.segmentList=null,e.segmentTemplate=null):(v.assert(e.segmentList,"There should be a SegmentList"),p.info("Using SegmentList by default."),e.segmentTemplate=null)),!0)}async requestForTiming_(e,t,i){let r=[q.htmlUnescape(t)],s=fe.resolveUris(e(),r),n=K.makeRequest(s,this.config_.retryParameters);n.method=i;let a=K.RequestType.TIMING,o=this.playerInterface_.networkingEngine.request(a,n,{isPreload:this.isPreloadFn_()});this.operationManager_.manage(o);let c=await o.promise,d;if(i=="HEAD"){if(!c.headers||!c.headers.date)return p.warning("UTC timing response is missing","expected date header"),0;d=c.headers.date}else d=q.fromUTF8(c.data);let u=Date.parse(d);return isNaN(u)?(p.warning("Unable to parse date from UTC timing response"),0):u-Date.now()}async parseUtcTiming_(e,t){let i=t.map(s=>({scheme:s.attributes.schemeIdUri,value:s.attributes.value})),r=this.config_.dash.clockSyncUri;!i.length&&r&&i.push({scheme:"urn:mpeg:dash:utc:http-head:2014",value:r});for(let s of i)try{let n=s.scheme,a=s.value;switch(n){case"urn:mpeg:dash:utc:http-head:2014":case"urn:mpeg:dash:utc:http-head:2012":return await this.requestForTiming_(e,a,"HEAD");case"urn:mpeg:dash:utc:http-xsdate:2014":case"urn:mpeg:dash:utc:http-iso:2014":case"urn:mpeg:dash:utc:http-xsdate:2012":case"urn:mpeg:dash:utc:http-iso:2012":return await this.requestForTiming_(e,a,"GET");case"urn:mpeg:dash:utc:direct:2014":case"urn:mpeg:dash:utc:direct:2012":{let o=Date.parse(a);return isNaN(o)?0:o-Date.now()}case"urn:mpeg:dash:utc:http-ntp:2014":case"urn:mpeg:dash:utc:ntp:2014":case"urn:mpeg:dash:utc:sntp:2014":p.alwaysWarn("NTP UTCTiming scheme is not supported");break;default:p.alwaysWarn("Unrecognized scheme in UTCTiming element",n);break}}catch(n){p.warning("Error fetching time from UTCTiming elem",n.message)}return p.alwaysWarn("A UTCTiming element should always be given in live manifests! This content may not play on clients with bad clocks!"),0}parseEventStream_(e,t,i,r){let s=I.parseNonNegativeInt,n=i.attributes.schemeIdUri||"",a=i.attributes.value||"",o=I.parseAttr(i,"timescale",s)||1,c=I.parseAttr(i,"presentationTimeOffset",s)||0,d;n==="urn:mpeg:dash:event:alternativeMPD:insert:2025"||n==="urn:mpeg:dash:event:alternativeMPD:replace:2025"?d="altmpd":n==="urn:mpeg:dash:event:callback:2015"&&(d="callback");let u=d?this.findRequestParamFn_(i,d):void 0;for(let m of I.findChildren(i,"Event")){let f=I.parseAttr(m,"presentationTime",s)||0,g=I.parseAttr(m,"duration",s)||0,_=Math.max((f-c)/o+e,e),T=_+g/o;if(t!=null&&(_=Math.min(_,e+t),T=Math.min(T,e+t)),T<r)continue;let S={schemeIdUri:n,value:a,startTime:_,endTime:T,id:m.attributes.id||"",timescale:o,eventNode:I.cloneNode(m),urlParams:u};this.playerInterface_.onTimelineRegionAdded(S)}}async requestSegment_(e,t,i,r){let s=K.RequestType.SEGMENT,n=r?K.AdvancedRequestType.INIT_SEGMENT:K.AdvancedRequestType.MEDIA_SEGMENT,a=ct.createSegmentRequest(e,t,i,this.playerInterface_.getStreamingRetryParameters());return(await this.makeNetworkRequest_(a,s,{type:n})).data}static guessContentType_(e,t){let i=O.getFullType(e,t);return Ue.isTypeSupported(i)?R.ContentType.TEXT:e.split("/")[0]}makeNetworkRequest_(e,t,i){i||(i={}),i.isPreload=this.isPreloadFn_();let r=this.playerInterface_.networkingEngine.request(t,e,i);return this.operationManager_.manage(r),r.promise}updatePatchLocationNodes_(e){I.modifyNodes(this.patchLocationNodes_,e)}getPatchLocationUris_(){let e=this.manifestPatchContext_.mpdId,t=this.manifestPatchContext_.publishTime;if(!e||!t||!this.patchLocationNodes_.length)return[];let i=Date.now()/1e3,r=this.patchLocationNodes_.filter(s=>{let n=I.parseNonNegativeInt(s.attributes.ttl);return!n||t+n>i}).map(I.getContents).filter(it.isNotNull);return r.length?fe.resolveUris(this.manifestUris_,r):[]}static isNtpScheme_(e){return e==="urn:mpeg:dash:utc:http-ntp:2014"||e==="urn:mpeg:dash:utc:ntp:2014"||e==="urn:mpeg:dash:utc:sntp:2014"}static defaultUrlParams_(){return""}static makeBaseUriGetter_(e,t,i){return()=>e&&t?e.getLocations("BaseURL"):i.slice()}};l(ft,"SCTE214_","urn:scte:dash:scte214-extensions"),l(ft,"UP_NAMESPACE_2014_","urn:mpeg:dash:schema:urlparam:2014"),l(ft,"UP_NAMESPACE_2016_","urn:mpeg:dash:schema:urlparam:2016"),l(ft,"URL_PARAM_DESCRIPTOR_SCHEMES_",new Set(["urn:mpeg:dash:urlparam:2014","urn:mpeg:dash:urlparam:2016"])),l(ft,"SUPPORTED_ESSENTIAL_PROPERTIES_",new Set(["http://dashif.org/guidelines/trickmode","http://dashif.org/thumbnail_tile","http://dashif.org/guidelines/thumbnail_tile","urn:mpeg:mpegB:cicp:TransferCharacteristics","urn:mpeg:mpegB:cicp:ColourPrimaries","urn:mpeg:mpegB:cicp:MatrixCoefficients","urn:mpeg:dash:ssr:2023","urn:dvb:dash:fontdownload:2014","urn:mpeg:dash:urlparam:2014","urn:mpeg:dash:urlparam:2016","urn:mpeg:dash:urlparam:2025","urn:mpeg:dash:pattern:2024"]));var Br=ft;me.registerParserByMime("application/dash+xml",()=>new Br);me.registerParserByMime("video/vnd.mpeg.dash.mpd",()=>new Br);/*! @license
619
619
  * Shaka Player
620
620
  * Copyright 2016 Google LLC
621
621
  * SPDX-License-Identifier: Apache-2.0
@@ -631,11 +631,11 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
631
631
  * Shaka Player
632
632
  * Copyright 2016 Google LLC
633
633
  * SPDX-License-Identifier: Apache-2.0
634
- */var Nn=class extends ut{constructor(){super();l(this,"version_");l(this,"deviceType_");this.version_=new _e(()=>{let t=navigator.userAgent.match(/Version\/(\d+)(?:\.(\d+))?/);return t||(t=navigator.userAgent.match(/OS (\d+)(?:_(\d+))?/)),t?[parseInt(t[1],10),parseInt(t[2]||"0",10)]:[0,0]}),this.deviceType_=new _e(()=>/(?:iPhone|iPad|iPod)/.test(navigator.userAgent)||navigator.maxTouchPoints>1?"xr"in navigator?ie.DeviceType.APPLE_VR:ie.DeviceType.MOBILE:"xr"in navigator?ie.DeviceType.APPLE_VR:ie.DeviceType.DESKTOP)}getVersion(){return this.version_.value()[0]}getDeviceName(){return"Apple Browser"}getDeviceType(){return this.deviceType_.value()}getBrowserEngine(){return ie.BrowserEngine.WEBKIT}supportsMediaCapabilities(){return!1}requiresEncryptionInfoInAllInitSegments(t,i){return!this.supportsMixedClearEncryptedContent_()&&i==="audio"}insertEncryptionDataBeforeClear(){return!this.supportsMixedClearEncryptedContent_()}requiresTfhdFix(t){return!this.supportsMixedClearEncryptedContent_()&&t==="audio"}adjustConfig(t){return super.adjustConfig(t),t.abr.minTimeToSwitch=.5,t}supportsAirPlay(){return!0}supportsContainerChangeType(){return!1}hasWorkingClearKeySupport(){return!1}supportsMixedClearEncryptedContent_(){let t=this.version_.value();return t[0]>=27?!0:t[0]===26&&t[1]>=4}static isAppleBrowser_(){return(navigator.vendor||"").includes("Apple")?/(?:iPhone|iPad|iPod)/.test(navigator.userAgent)||navigator.maxTouchPoints>1||navigator.userAgentData&&navigator.userAgentData.platform&&navigator.userAgentData.platform.toLowerCase()=="macos"?!0:!!(navigator.platform&&navigator.platform.toLowerCase().includes("mac")):!1}};Nn.isAppleBrowser_()&&j.registerDeviceFactory(()=>new Nn);/*! @license
634
+ */var On=class extends ut{constructor(){super();l(this,"version_");l(this,"deviceType_");this.version_=new _e(()=>{let t=navigator.userAgent.match(/Version\/(\d+)(?:\.(\d+))?/);return t||(t=navigator.userAgent.match(/OS (\d+)(?:_(\d+))?/)),t?[parseInt(t[1],10),parseInt(t[2]||"0",10)]:[0,0]}),this.deviceType_=new _e(()=>/(?:iPhone|iPad|iPod)/.test(navigator.userAgent)||navigator.maxTouchPoints>1?"xr"in navigator?ie.DeviceType.APPLE_VR:ie.DeviceType.MOBILE:"xr"in navigator?ie.DeviceType.APPLE_VR:ie.DeviceType.DESKTOP)}getVersion(){return this.version_.value()[0]}getDeviceName(){return"Apple Browser"}getDeviceType(){return this.deviceType_.value()}getBrowserEngine(){return ie.BrowserEngine.WEBKIT}supportsMediaCapabilities(){return!1}requiresEncryptionInfoInAllInitSegments(t,i){return!this.supportsMixedClearEncryptedContent_()&&i==="audio"}insertEncryptionDataBeforeClear(){return!this.supportsMixedClearEncryptedContent_()}requiresTfhdFix(t){return!this.supportsMixedClearEncryptedContent_()&&t==="audio"}adjustConfig(t){return super.adjustConfig(t),t.abr.minTimeToSwitch=.5,t}supportsAirPlay(){return!0}supportsContainerChangeType(){return!1}hasWorkingClearKeySupport(){return!1}supportsMixedClearEncryptedContent_(){let t=this.version_.value();return t[0]>=27?!0:t[0]===26&&t[1]>=4}static isAppleBrowser_(){return(navigator.vendor||"").includes("Apple")?/(?:iPhone|iPad|iPod)/.test(navigator.userAgent)||navigator.maxTouchPoints>1||navigator.userAgentData&&navigator.userAgentData.platform&&navigator.userAgentData.platform.toLowerCase()=="macos"?!0:!!(navigator.platform&&navigator.platform.toLowerCase().includes("mac")):!1}};On.isAppleBrowser_()&&j.registerDeviceFactory(()=>new On);/*! @license
635
635
  * Shaka Player
636
636
  * Copyright 2016 Google LLC
637
637
  * SPDX-License-Identifier: Apache-2.0
638
- */var ki=class ki extends ut{constructor(){if(!ki.isChromecast_())throw new Error("Not a Chromecast device!");super();l(this,"version_");l(this,"osType_");this.version_=new _e(()=>{let t=navigator.userAgent.match(/Chrome\/(\d+)/);return t?parseInt(t[1],10):null}),this.osType_=new _e(()=>{let t=navigator.userAgentData&&navigator.userAgentData.platform||navigator.userAgent;return t=t.toLowerCase(),t.includes("android")?ki.OsType_.ANDROID:t.includes("fuchsia")?ki.OsType_.FUCHSIA:ki.OsType_.LINUX})}getVersion(){return this.version_.value()}getDeviceName(){return"Chromecast with "+this.osType_.value()}getDeviceType(){return ie.DeviceType.CAST}getBrowserEngine(){return ie.BrowserEngine.CHROMIUM}supportsMediaCapabilities(){return super.supportsMediaCapabilities()&&this.osType_.value()!==ki.OsType_.LINUX}supportsSmoothCodecSwitching(t){return super.supportsSmoothCodecSwitching(t)&&this.osType_.value()!==ki.OsType_.LINUX}seekDelay(){switch(this.osType_.value()){case ki.OsType_.ANDROID:return 0;case ki.OsType_.FUCHSIA:return 3;default:return 1}}async detectMaxHardwareResolution(){let t=window.cast&&cast.__platform__&&cast.__platform__.canDisplayType,i={width:1280,height:720};try{t&&await cast.__platform__.canDisplayType('video/mp4; codecs="avc1.640028"; width=3840; height=2160')?(i.width=3840,i.height=2160):t&&await cast.__platform__.canDisplayType('video/mp4; codecs="avc1.640028"; width=1920; height=1080')&&(i.width=1920,i.height=1080)}catch(r){p.alwaysError("Failed to check canDisplayType:",r)}return i}adjustConfig(t){return super.adjustConfig(t),t.streaming.stallSkip=0,t}supportsOfflineStorage(){return!1}supportsCbcsWithoutEncryptionSchemeSupport(){return!0}static isChromecast_(){return navigator.userAgent.includes("CrKey")&&!navigator.userAgent.includes("VIZIO SmartCast")}};l(ki,"OsType_",{ANDROID:"Android",FUCHSIA:"Fuchsia",LINUX:"Linux"});var On=ki;On.isChromecast_()&&j.registerDeviceFactory(()=>new On);/*! @license
638
+ */var ki=class ki extends ut{constructor(){if(!ki.isChromecast_())throw new Error("Not a Chromecast device!");super();l(this,"version_");l(this,"osType_");this.version_=new _e(()=>{let t=navigator.userAgent.match(/Chrome\/(\d+)/);return t?parseInt(t[1],10):null}),this.osType_=new _e(()=>{let t=navigator.userAgentData&&navigator.userAgentData.platform||navigator.userAgent;return t=t.toLowerCase(),t.includes("android")?ki.OsType_.ANDROID:t.includes("fuchsia")?ki.OsType_.FUCHSIA:ki.OsType_.LINUX})}getVersion(){return this.version_.value()}getDeviceName(){return"Chromecast with "+this.osType_.value()}getDeviceType(){return ie.DeviceType.CAST}getBrowserEngine(){return ie.BrowserEngine.CHROMIUM}supportsMediaCapabilities(){return super.supportsMediaCapabilities()&&this.osType_.value()!==ki.OsType_.LINUX}supportsSmoothCodecSwitching(t){return super.supportsSmoothCodecSwitching(t)&&this.osType_.value()!==ki.OsType_.LINUX}seekDelay(){switch(this.osType_.value()){case ki.OsType_.ANDROID:return 0;case ki.OsType_.FUCHSIA:return 3;default:return 1}}async detectMaxHardwareResolution(){let t=window.cast&&cast.__platform__&&cast.__platform__.canDisplayType,i={width:1280,height:720};try{t&&await cast.__platform__.canDisplayType('video/mp4; codecs="avc1.640028"; width=3840; height=2160')?(i.width=3840,i.height=2160):t&&await cast.__platform__.canDisplayType('video/mp4; codecs="avc1.640028"; width=1920; height=1080')&&(i.width=1920,i.height=1080)}catch(r){p.alwaysError("Failed to check canDisplayType:",r)}return i}adjustConfig(t){return super.adjustConfig(t),t.streaming.stallSkip=0,t}supportsOfflineStorage(){return!1}supportsCbcsWithoutEncryptionSchemeSupport(){return!0}static isChromecast_(){return navigator.userAgent.includes("CrKey")&&!navigator.userAgent.includes("VIZIO SmartCast")}};l(ki,"OsType_",{ANDROID:"Android",FUCHSIA:"Fuchsia",LINUX:"Linux"});var Nn=ki;Nn.isChromecast_()&&j.registerDeviceFactory(()=>new Nn);/*! @license
639
639
  * Shaka Player
640
640
  * Copyright 2016 Google LLC
641
641
  * SPDX-License-Identifier: Apache-2.0
@@ -703,12 +703,12 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
703
703
  * Shaka Player
704
704
  * Copyright 2016 Google LLC
705
705
  * SPDX-License-Identifier: Apache-2.0
706
- */var St=class St{constructor(){l(this,"playerInterface_");l(this,"config_");l(this,"globalId_");l(this,"globalVariables_");l(this,"groupIdToStreamInfosMap_");l(this,"mediaSequenceToStartTimeByType_");l(this,"keyFormatsToDrmParsers_");l(this,"variantUriSet_");l(this,"uriToStreamInfosMap_");l(this,"presentationTimeline_");l(this,"masterPlaylistUri_");l(this,"manifestTextParser_");l(this,"minSequenceNumber_");l(this,"lowestSyncTime_");l(this,"realProgramDateTimeByReference_");l(this,"usesProgramDateTime_");l(this,"streamsFinalized_");l(this,"codecInfoInManifest_");l(this,"updatePlaylistTimer_");l(this,"presentationType_");l(this,"manifest_");l(this,"maxTargetDuration_");l(this,"lastTargetDuration_");l(this,"partialTargetDuration_");l(this,"presentationDelay_");l(this,"lowLatencyPresentationDelay_");l(this,"operationManager_");l(this,"groupIdToClosedCaptionsMap_");l(this,"groupIdToCodecsMap_");l(this,"mapTagToInitSegmentRefMap_");l(this,"aesKeyInfoMap_");l(this,"aesKeyMap_");l(this,"identityKeyMap_");l(this,"initSegmentToKidMap_");l(this,"lowLatencyMode_");l(this,"lowLatencyByterangeOptimization_");l(this,"averageUpdateDuration_");l(this,"contentSteeringManager_");l(this,"needsClosedCaptionsDetection_");l(this,"eventManager_");l(this,"mediaElement_");l(this,"startTime_");l(this,"isPreloadFn_");l(this,"psshToInitData_");l(this,"chapterUris_");l(this,"chapterStreamsMap_");this.playerInterface_=null,this.config_=null,this.globalId_=1,this.globalVariables_=new Map,this.groupIdToStreamInfosMap_=new Map,this.mediaSequenceToStartTimeByType_=new Map;let e=R.ContentType;this.mediaSequenceToStartTimeByType_.set(e.VIDEO,new Map),this.mediaSequenceToStartTimeByType_.set(e.AUDIO,new Map),this.mediaSequenceToStartTimeByType_.set(e.TEXT,new Map),this.mediaSequenceToStartTimeByType_.set(e.IMAGE,new Map),this.keyFormatsToDrmParsers_=new Map().set("com.apple.streamingkeydelivery",(t,i,r)=>this.fairplayDrmParser_(t,i,r)).set("urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",(t,i,r)=>this.widevineDrmParser_(t,i,r)).set("com.microsoft.playready",(t,i,r)=>this.playreadyDrmParser_(t,i,r)).set("urn:uuid:3d5e6d35-9b9a-41e8-b843-dd3c6e72c42c",(t,i,r)=>this.wiseplayDrmParser_(t,i,r)),this.variantUriSet_=new Set,this.uriToStreamInfosMap_=new Map,this.presentationTimeline_=null,this.masterPlaylistUri_="",this.manifestTextParser_=new Xn,this.minSequenceNumber_=-1,this.lowestSyncTime_=1/0,this.realProgramDateTimeByReference_=new WeakMap,this.usesProgramDateTime_=!1,this.streamsFinalized_=!1,this.codecInfoInManifest_=!1,this.updatePlaylistTimer_=new ae(()=>{if(this.mediaElement_&&!this.config_.continueLoadingWhenPaused&&(this.eventManager_.unlisten(this.mediaElement_,"timeupdate"),this.mediaElement_.paused)){this.eventManager_.listenOnce(this.mediaElement_,"timeupdate",()=>this.onUpdate_());return}this.onUpdate_()}),this.presentationType_=St.PresentationType_.VOD,this.manifest_=null,this.maxTargetDuration_=0,this.lastTargetDuration_=1/0,this.partialTargetDuration_=0,this.presentationDelay_=0,this.lowLatencyPresentationDelay_=0,this.operationManager_=new gi,this.groupIdToClosedCaptionsMap_=new Map,this.groupIdToCodecsMap_=new Map,this.mapTagToInitSegmentRefMap_=new Map,this.aesKeyInfoMap_=new Map,this.aesKeyMap_=new Map,this.identityKeyMap_=new Map,this.initSegmentToKidMap_=new Map,this.lowLatencyMode_=!1,this.lowLatencyByterangeOptimization_=!1,this.averageUpdateDuration_=new er(5),this.contentSteeringManager_=null,this.needsClosedCaptionsDetection_=!0,this.eventManager_=new ue,this.mediaElement_=null,this.startTime_=null,this.isPreloadFn_=()=>!1,this.psshToInitData_=new Map,this.chapterUris_=[],this.chapterStreamsMap_=new Map}configure(e,t){let i=this.playerInterface_&&e.updatePeriod!=this.config_.updatePeriod&&e.updatePeriod>=0;this.config_=e,t&&(this.isPreloadFn_=t),this.contentSteeringManager_&&this.contentSteeringManager_.configure(this.config_),i&&this.manifest_&&this.manifest_.presentationTimeline.isDynamic()&&this.updatePlaylistTimer_.tickNow()}async start(e,t){v.assert(this.config_,"Must call configure() before start()!"),this.playerInterface_=t,this.lowLatencyMode_=t.isLowLatencyMode();let i=await this.requestManifest_([e]).promise;return this.masterPlaylistUri_=i.uri,v.assert(i.data,"Response data should be non-null!"),await this.parseManifest_(i.data),v.assert(this.manifest_,"Manifest should be non-null"),this.manifest_}stop(){this.updatePlaylistTimer_&&(this.updatePlaylistTimer_.stop(),this.updatePlaylistTimer_=null);let e=[];return this.operationManager_&&(e.push(this.operationManager_.destroy()),this.operationManager_=null),this.playerInterface_=null,this.config_=null,this.variantUriSet_.clear(),this.manifest_=null,this.uriToStreamInfosMap_.clear(),this.groupIdToStreamInfosMap_.clear(),this.groupIdToCodecsMap_.clear(),this.globalVariables_.clear(),this.mapTagToInitSegmentRefMap_.clear(),this.aesKeyInfoMap_.clear(),this.aesKeyMap_.clear(),this.identityKeyMap_.clear(),this.initSegmentToKidMap_.clear(),this.psshToInitData_.clear(),this.contentSteeringManager_&&this.contentSteeringManager_.destroy(),this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),Promise.all(e)}async update(){if(!this.isDynamic_())return;let e=[],i=Array.from(this.uriToStreamInfosMap_.values()).filter(n=>!n.stream.isAudioMuxedInVideo&&n.stream.segmentIndex);if(i.length===0){p.warning("No active streams found during update");return}this.lastTargetDuration_=1/0,this.manifest_.gapCount=0;for(let n of i)e.push(this.updateStream_(n));e.push(this.parseChapters_()),await Promise.all(e);let r=Array.from(this.chapterStreamsMap_.values());for(let n of r)this.manifest_.chapterStreams.includes(n)||this.manifest_.chapterStreams.push(n);this.notifySegmentsForStreams_(i.map(n=>n.stream));let s=i.some(n=>n.hasEndList==!1);i.length&&!s&&(this.setPresentationType_(St.PresentationType_.VOD),this.determineDuration_()),s&&this.determineDuration_();for(let n of i)!n.stream.isAudioMuxedInVideo&&n.stream.segmentIndex&&!n.stream.segmentIndex.earliestReference()&&this.playerInterface_.disableStream(n.stream)}getMediaSequenceToStartTimeFor_(e){return this.isLive_()?this.mediaSequenceToStartTimeByType_.get(e.type):e.mediaSequenceToStartTime}async updateStream_(e){if(e.stream.isAudioMuxedInVideo)return;let t=[];for(let w of e.getUris()){let M=new Map;e.canBlockReload&&(e.nextMediaSequence>=0&&M.set("_HLS_msn",String(e.nextMediaSequence)),e.nextPart>=0&&M.set("_HLS_part",String(e.nextPart))),e.canSkipDateRanges?M.set("_HLS_skip","v2"):e.canSkipSegments&&M.set("_HLS_skip","YES"),t.push(fe.appendParams(w,M))}let i;try{i=await this.requestManifest_(t,!0).promise}catch(w){throw this.playerInterface_&&this.playerInterface_.disableStream(e.stream),w}if(!e.stream.segmentIndex)return;let r=this.manifestTextParser_.parsePlaylist(i.data);if(r.type!=Gi.MEDIA)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_PLAYLIST_HIERARCHY);let s=i.uri;s!=i.originalUri&&!e.getUris().includes(s)&&e.redirectUris.push(s);let n=he.filterTagsByName(r.tags,"EXT-X-DEFINE"),a=this.parseMediaVariables_(n,s),o=e.stream,c=this.getMediaSequenceToStartTimeFor_(e),{keyIds:d,drmInfos:u,encrypted:m,aesEncrypted:f}=await this.parseDrmInfo_(r,o.mimeType,e.getUris,a);!o.encrypted&&m&&!f&&(o.encrypted=!0),((w,M)=>w.size===M.size&&[...w].every(x=>M.has(x)))(o.keyIds,d)||(o.keyIds=d,o.drmInfos=u,this.playerInterface_.newDrmInfo(o));let _=i.uri!==i.originalUri,{segments:T,totalCount:S,bandwidth:b}=this.createSegments_(r,c,a,e.getUris,e.type,_,o.segmentIndex);b&&(o.bandwidth=b);let E=ur.createQualityInfo(o);for(let w of T)w.initSegmentReference&&(w.initSegmentReference.mediaQuality=E);if(T.length&&o.segmentIndex.mergeAndEvict(T,this.presentationTimeline_.getSegmentAvailabilityStart()),S){let w=he.getFirstTagWithNameAsNumber(r.tags,"EXT-X-MEDIA-SEQUENCE",0),M=he.getFirstTagWithName(r.tags,"EXT-X-SKIP"),x=M?Number(M.getAttributeValue("SKIPPED-SEGMENTS")):0,{nextMediaSequence:k,nextPart:L}=this.getNextMediaSequenceAndPart_(w,T,S);e.nextMediaSequence=k+x,e.nextPart=L;let V=c.get(w);o.segmentIndex.evict(V)}this.setProgramDateTimeRegionsFromIndex_(o,e.type);let C=o.segmentIndex.earliestReference();C&&(e.minTimestamp=C.startTime,T.length&&(e.maxTimestamp=T[T.length-1].endTime)),he.getFirstTagWithName(r.tags,"EXT-X-ENDLIST")&&(e.hasEndList=!0),this.determineLastTargetDuration_(r),this.processDateRangeTags_(r.tags,o.type,a,e.getUris)}onExpirationUpdated(e,t){}onInitialVariantChosen(e){}banLocation(e){this.contentSteeringManager_&&this.contentSteeringManager_.banLocation(e)}setMediaElement(e){this.mediaElement_=e}syncStreamsWithSequenceNumber_(e,t=!1){let i=this.minSequenceNumber_==-1;for(let r of e){let s=r.stream.segmentIndex;v.assert(s,"Only loaded streams should be synced");let n=this.getMediaSequenceToStartTimeFor_(r),a=s.earliestReference();if(a){Fe&&n.values().next().value!=a.startTime&&p.warning("Sequence number map is not ordered as expected!");for(let[o,c]of n)if(c==a.startTime){i&&(this.minSequenceNumber_=Math.max(this.minSequenceNumber_,o)),r.firstSequenceNumber=o;break}}}if(!(this.minSequenceNumber_<0)){p.debug("Syncing HLS streams against base sequence number:",this.minSequenceNumber_);for(let r of e){if(!this.ignoreManifestProgramDateTimeFor_(r.type)&&!t)continue;let s=r.stream.segmentIndex;if(s){let n=this.minSequenceNumber_-r.firstSequenceNumber;if(n>0){s.dropFirstReferences(n);let a=s.earliestReference();if(a){let o=-a.startTime;r.stream.segmentIndex.offset(o),this.offsetStreamInfo_(r,o)}}}}}}syncStreamsWithProgramDateTime_(e){if(this.lowestSyncTime_==1/0)for(let i of e){let r=i.stream.segmentIndex;v.assert(r,"Only loaded streams should be synced");let s=r.earliestReference();s!=null&&s.syncTime!=null&&(this.lowestSyncTime_=Math.min(this.lowestSyncTime_,s.syncTime))}let t=this.lowestSyncTime_;if(t!=1/0){p.debug("Syncing HLS streams against base time:",t);for(let i of this.uriToStreamInfosMap_.values()){if(this.ignoreManifestProgramDateTimeFor_(i.type))continue;let r=i.stream.segmentIndex;if(r!=null){let s=r.earliestReference();if(!s)continue;if(s.syncTime==null)p.alwaysError("Missing EXT-X-PROGRAM-DATE-TIME for stream",i.getUris(),"Expect AV sync issues!");else{let a=s.syncTime-t-s.startTime;this.offsetStreamInfo_(i,a);for(let o of r)o.syncAgainst(t)}}}}}offsetStreamInfo_(e,t){if(Math.abs(t)<.001)return;e.minTimestamp+=t,e.maxTimestamp+=t,v.assert(e.maxTimestamp>=0,"Negative maxTimestamp after adjustment!");let i=this.getMediaSequenceToStartTimeFor_(e);for(let[r,s]of i)i.set(r,s+t);p.debug("Offset",t,"applied to",e.getUris())}async parseManifest_(e){let t=R.ContentType;v.assert(this.masterPlaylistUri_,"Master playlist URI must be set before calling parseManifest_!");let i=this.manifestTextParser_.parsePlaylist(e),r=he.filterTagsByName(i.tags,"EXT-X-DEFINE"),s=[],n=[],a=[];v.assert(this.presentationTimeline_==null,"Presentation timeline created early!"),this.presentationTimeline_=new wi(null,0),this.presentationTimeline_.setStatic(!0);let o=()=>[this.masterPlaylistUri_],c=null,d=new Map;if(this.manifest_={presentationTimeline:this.presentationTimeline_,variants:s,textStreams:n,imageStreams:a,chapterStreams:[],offlineSessionIds:[],sequenceMode:this.config_.hls.sequenceMode,ignoreManifestTimestampsInSegmentsMode:this.config_.hls.ignoreManifestTimestampsInSegmentsMode,type:me.HLS,serviceDescription:null,nextUrl:null,periodCount:1,gapCount:0,isLowLatency:!1,startTime:this.startTime_},i.type==Gi.MEDIA){this.needsClosedCaptionsDetection_=!1;let u=he.filterTagsByName(i.tags,"EXT-X-DEFINE");d=this.parseMediaVariables_(u,this.masterPlaylistUri_),c=t.VIDEO;let m="",f="",g="",_=null,T=null,S=new Map,b=!1,E=null,C=!1,A=!0,w="Media Playlist",M=this.masterPlaylistUri_,x=await this.convertParsedPlaylistIntoStreamInfo_(this.globalId_++,d,i,o,m,c,g,A,w,_,S,E,C,T,b,f,M);if(this.uriToStreamInfosMap_.set(this.masterPlaylistUri_,x),x.stream){let L=ur.createQualityInfo(x.stream);x.stream.segmentIndex.forEachTopLevelReference(V=>{V.initSegmentReference&&(V.initSegmentReference.mediaQuality=L)})}c=x.stream.type;let k=!0;(this.config_.disableAudio&&x.type=="audio"||this.config_.disableVideo&&x.type=="video"&&!x.stream.codecs.includes(","))&&(k=!1),k&&s.push({id:0,language:this.getLanguage_(g),disabledUntilTime:0,primary:!0,audio:x.type=="audio"?x.stream:null,video:x.type=="video"?x.stream:null,bandwidth:x.stream.bandwidth||0,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]}),this.config_.hls.chaptersUri&&!this.chapterUris_.includes(this.config_.hls.chaptersUri)&&this.chapterUris_.push(this.config_.hls.chaptersUri),await this.parseChapters_()}else{this.parseMasterVariables_(r);let u=he.filterTagsByName(i.tags,"EXT-X-MEDIA"),m=he.filterTagsByName(i.tags,"EXT-X-STREAM-INF"),f=he.filterTagsByName(i.tags,"EXT-X-IMAGE-STREAM-INF"),g=he.filterTagsByName(i.tags,"EXT-X-I-FRAME-STREAM-INF"),_=he.filterTagsByName(i.tags,"EXT-X-SESSION-KEY"),T=he.filterTagsByName(i.tags,"EXT-X-SESSION-DATA"),S=he.filterTagsByName(i.tags,"EXT-X-CONTENT-STEERING");this.chapterUris_=this.processSessionData_(T),this.config_.hls.chaptersUri&&!this.chapterUris_.includes(this.config_.hls.chaptersUri)&&this.chapterUris_.push(this.config_.hls.chaptersUri),await this.processContentSteering_(S),this.config_.ignoreSupplementalCodecs||(m.push(...this.createTagsWithSupplementalCodecs_(m,!0)),g.push(...this.createTagsWithSupplementalCodecs_(g,!1))),this.parseCodecs_(m),this.parseClosedCaptions_(u);let b=this.parseIFrames_(g);s=await this.createVariantsForTags_(m,_,u,o,this.globalVariables_,b),n=this.parseTexts_(u),[a]=await Promise.all([this.parseImages_(f,g),this.parseChapters_()])}if(!this.playerInterface_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);if(this.determineStartTime_(i),i.type==Gi.MEDIA){if(this.isDynamic_()){this.changePresentationTimelineToLive_(i);let m=this.getUpdatePlaylistDelay_();this.updatePlaylistTimer_.tickAfter(m)}let u=Array.from(this.uriToStreamInfosMap_.values());this.finalizeStreams_(u),this.determineDuration_(),v.assert(c,"mediaPlaylistType should be non-null"),await this.processDateRangeTags_(i.tags,c,d,o)}if(this.manifest_.variants=s,this.manifest_.textStreams=n,this.manifest_.imageStreams=a,this.manifest_.chapterStreams=Array.from(this.chapterStreamsMap_.values()),this.manifest_.startTime=this.startTime_,!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing){let u=[];for(let m of this.manifest_.variants)m.audio&&m.audio.codecs===""&&u.push(m.audio.createSegmentIndex()),m.video&&m.video.codecs===""&&u.push(m.video.createSegmentIndex());await Promise.all(u)}this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_)}async getBasicInfoFromSegments_(e){let t=vt.getBasicInfoFromMimeType(this.config_.hls.mediaPlaylistFullMimeType);if(!e.length)return t;let{segment:i,segmentIndex:r}=this.getAvailableSegment_(e),s=i.getUris(),n=ct.getExtension(s[0]);if(n){let g=St.RAW_FORMATS_TO_MIME_TYPES_.get(n);if(g)return vt.getBasicInfoFromMimeType(g)}let a=await Promise.all([this.getInfoFromSegment_(i.initSegmentReference,0),this.getInfoFromSegment_(i,r)]),o=a[1].mimeType,c=a[0].data,d=a[1].data,u=["mp4","mp4a","m4s","m4i","m4a","m4f","cmfa","mp4v","m4v","cmfv","fmp4"],m=["audio/mp4","video/mp4","video/iso.segment"],f=i.initSegmentReference||m.includes(o);if(!f&&pt.probe(D.toUint8(d))){let g=vt.getBasicInfoFromTs(d,this.config_.disableAudio,this.config_.disableVideo,this.config_.disableText);if(g)return g}else if(f||u.includes(n)){let g=vt.getBasicInfoFromMp4(c,d,this.config_.disableText);if(g)return g}return o?vt.getBasicInfoFromMimeType(o):t}async getInfoFromSegment_(e,t){if(!e)return{mimeType:null,data:null};let i=K.RequestType.SEGMENT,r=ct.createSegmentRequest(e.getUris(),e.getStartByte(),e.getEndByte(),this.playerInterface_.getStreamingRetryParameters()),s=e instanceof Se?K.AdvancedRequestType.MEDIA_SEGMENT:K.AdvancedRequestType.INIT_SEGMENT,n=await this.makeNetworkRequest_(r,i,{type:s}).promise,a=n.data;e.aesKey&&(a=await vt.aesDecrypt(a,e.aesKey,t)),e instanceof Se?e.setSegmentData(a,!0):e.setSegmentData(a);let o=n.headers["content-type"];return o&&(o=o.split(";")[0].toLowerCase()),{mimeType:o,data:a}}determineDuration_(){if(v.assert(this.presentationTimeline_,"Presentation timeline not created!"),this.isLive_()){let e=this.getLiveDuration_()||0;isNaN(this.config_.availabilityWindowOverride)||(e=this.config_.availabilityWindowOverride),this.presentationTimeline_.setSegmentAvailabilityDuration(e)}else this.presentationTimeline_.setDuration(this.getMinDuration_());if(!this.presentationTimeline_.isStartTimeLocked())for(let e of this.uriToStreamInfosMap_.values()){if(!e.stream.segmentIndex||e.type!="audio"&&e.type!="video")continue;let t=e.stream.segmentIndex.earliestReference();if(t&&t.syncTime!=null){let i=t.syncTime;this.presentationTimeline_.setInitialProgramDateTime(i)}}this.presentationTimeline_.lockStartTime(),v.assert(!this.presentationTimeline_.usingPresentationStartTime(),"We should not be using the presentation start time in HLS!")}parseMasterVariables_(e){this.parseVariablesFromTags_(e,this.globalVariables_,this.masterPlaylistUri_)}parseMediaVariables_(e,t){let i=new Map;return this.parseVariablesFromTags_(e,i,t,!0),i}parseVariablesFromTags_(e,t,i,r=!1){let s;for(let n of e){let a=n.getAttributeValue("NAME"),o=n.getAttributeValue("VALUE"),c=n.getAttributeValue("QUERYPARAM");if(a&&o&&t.getOrInsert(a,o),c){s||(s=new URL(i).searchParams);let d=s.get(c);d&&!t.has(d)&&t.set(c,d)}if(r){let d=n.getAttributeValue("IMPORT");if(d){let u=this.globalVariables_.get(d);u&&t.set(d,u)}}}}groupTagsByKey_(e){let t={};for(let i of e){let r=i.getTagKey(!this.contentSteeringManager_);t[r]?t[r].push(i):t[r]=[i]}return t}createTagsWithSupplementalCodecs_(e,t){let i=[];for(let r of e){let s=he.getSupplementalCodecs(r);if(!s)continue;let n=r.attributes.map(a=>{let o=a.name,c=a.value;if(o=="CODECS"&&(c=s,t)){let d=a.value.split(",");if(d.length>1){let u=R.guessCodecsSafe(R.ContentType.AUDIO,d);u&&(c+=","+u)}}return new Fr(o,c)});i.push(new _r(r.id,r.name,n,null))}return i}parseCodecs_(e){let t=R.ContentType;for(let i of e){let r=i.getAttributeValue("AUDIO"),s=i.getAttributeValue("VIDEO"),n=i.getAttributeValue("SUBTITLES"),a=this.getCodecsForVariantTag_(i);if(n){let o=R.guessCodecsSafe(t.TEXT,a);v.assert(o!=null,"Text codecs should be valid."),this.groupIdToCodecsMap_.set(n,o),ye.remove(a,o)}if(r){let o=R.guessCodecsSafe(t.AUDIO,a);o||(o=this.config_.hls.defaultAudioCodec),this.groupIdToCodecsMap_.set(r,o)}if(s){let o=R.guessCodecsSafe(t.VIDEO,a);o||(o=this.config_.hls.defaultVideoCodec),this.groupIdToCodecsMap_.set(s,o)}}}processSessionData_(e){let t=[];for(let i of e){let r=i.getAttributeValue("DATA-ID"),s=i.getAttributeValue("URI"),n=i.getAttributeValue("LANGUAGE"),a=i.getAttributeValue("VALUE"),o=new Map().set("id",r);s&&o.set("uri",he.constructSegmentUris([this.masterPlaylistUri_],s,this.globalVariables_)[0]),n&&o.set("language",n),a&&o.set("value",a),r=="com.apple.hls.chapters"&&s&&t.push(o.get("uri"));let c=new U("sessiondata",o);this.playerInterface_&&this.playerInterface_.onEvent(c)}return t}async processContentSteering_(e){if(!this.playerInterface_||!this.config_)return;let t;for(let i of e){let r=i.getAttributeValue("PATHWAY-ID"),s=i.getAttributeValue("SERVER-URI");if(!(!r||!s)){this.contentSteeringManager_=new ss(this.playerInterface_),this.contentSteeringManager_.configure(this.config_),this.contentSteeringManager_.setBaseUris([this.masterPlaylistUri_]),this.contentSteeringManager_.setManifestType(me.HLS),this.contentSteeringManager_.setDefaultPathwayId(r),t=this.contentSteeringManager_.requestInfo(s);break}}await t}parseTexts_(e){let t=he.filterTagsByType(e,"SUBTITLES"),i=this.groupTagsByKey_(t),r=[];if(!this.config_.disableText)for(let n in i)try{r.push(this.createStreamInfoFromMediaTags_(i[n],new Map).stream)}catch(a){if(this.config_.hls.ignoreTextStreamFailures)continue;throw a}let s=R.ContentType.TEXT;for(let n of t){let a=n.getRequiredAttrValue("GROUP-ID"),o=this.groupIdToCodecsMap_.get(a);if(o){let c=this.groupIdToStreamInfosMap_.get(a);if(c)for(let d of c)d.stream.codecs=o,d.stream.mimeType=this.guessMimeTypeBeforeLoading_(s,o)||this.guessMimeTypeFallback_(s),this.setFullTypeForStream_(d.stream)}}return r.filter(n=>n)}setFullTypeForStream_(e){let t=new Set([N.getFullType(e.mimeType,e.codecs)]);e.segmentIndex&&e.segmentIndex.forEachTopLevelReference(i=>{i.mimeType&&t.add(N.getFullType(i.mimeType,e.codecs))}),e.fullMimeTypes=t}async parseImages_(e,t){let i=e.map(async s=>{if(this.config_.disableThumbnails)return null;try{return(await this.createStreamInfoFromImageTag_(s)).stream}catch(a){if(this.config_.hls.ignoreImageStreamFailures)return null;throw a}}).concat(t.map(s=>{if(this.config_.disableThumbnails)return null;try{let a=this.createStreamInfoFromIframeTag_(s),o=R.ContentType;return a.stream.type!==o.IMAGE?null:a.stream}catch(a){if(this.config_.hls.ignoreImageStreamFailures)return null;throw a}}));return(await Promise.all(i)).filter(s=>s)}async parseChapters_(){if(this.config_.disableChapters)return;let e=[];for(let t of this.chapterUris_)e.push(this.processChapters_(t));await Promise.all(e)}async processChapters_(e){let t=K.RequestType.SESSION_DATA,i=K.makeRequest([e],this.config_.retryParameters),r=await this.makeNetworkRequest_(i,t).promise,s=q.fromUTF8(r.data),n=JSON.parse(s),a=new Map;for(let o=0;o<n.length;o++){let c=n[o];if(!c.titles)continue;let d=[];if(c.images){for(let u of c.images)if(u.url){let m=he.constructSegmentUris([r.uri],u.url);for(let f of m){let g={type:u["image-category"],width:u["pixel-width"],height:u["pixel-height"],url:f};d.push(g)}}}for(let u of c.titles){let m={id:"",title:u.title,startTime:c["start-time"],endTime:c["start-time"],images:d};c.duration?m.endTime+=c.duration:o+1<n.length&&(m.endTime=n[o+1]["start-time"]),a.getOrInsertComputed(u.language,()=>[]).push(m)}}a.forEach((o,c)=>{let d=[];for(let f of o){let g=new Se(f.startTime,f.endTime,()=>[],0,null,null,0,0,1/0),_={title:f.title,images:f.images};g.setMetadata(_),d.push(g)}let u="text/plain",m=this.chapterStreamsMap_.getOrInsertComputed(c,()=>se.createStream({id:this.globalId_++,mimeType:u,kind:"",language:c,originalLanguage:c,type:R.ContentType.CHAPTER,external:!0}));m.segmentIndex?m.segmentIndex.mergeAndEvict(d,this.presentationTimeline_.getSegmentAvailabilityStart()):m.segmentIndex=new Ze(d)})}createStreamInfosFromMediaTags_(e,t){e=e.filter(r=>{let s=r.getAttributeValue("URI")||"",n=r.getAttributeValue("TYPE");return n!="SUBTITLES"&&(s!=""||n=="AUDIO"||n=="VIDEO")});let i=this.groupTagsByKey_(e);for(let r in i)this.createStreamInfoFromMediaTags_(i[r],t,!1)}parseIFrames_(e){return e.map(i=>{let r=this.createStreamInfoFromIframeTag_(i),s=R.ContentType;return r.stream.type!==s.VIDEO?null:r.stream}).filter(i=>i)}async createVariantsForTags_(e,t,i,r,s,n){let a=[],o=new Set;if(!this.config_.ignoreDrmInfo&&t.length>0)for(let u of t){let m=u.getRequiredAttrValue("METHOD"),f=u.getAttributeValue("KEYFORMAT")||"identity",g=null;if(m!="NONE"){if(this.isAesMethod_(m)){let _=he.constructSegmentUris(r(),u.getRequiredAttrValue("URI"),s),T=_.sort().join("");this.aesKeyMap_.getOrInsertComputed(T,()=>{let S=K.RequestType.KEY,b=K.makeRequest(_,this.config_.retryParameters);return this.makeNetworkRequest_(b,S).promise});continue}else if(f=="identity")g=await this.identityDrmParser_(u,"",r,null,s);else{let _=this.keyFormatsToDrmParsers_.get(f);g=_?await _(u,"",null):null}if(g){if(g.keyIds)for(let _ of g.keyIds)o.add(_);a.push(g)}else p.warning("Unsupported HLS KEYFORMAT",f)}}let c=this.groupTagsByKey_(e),d=[];for(let u in c){let m=c[u],f=m[0],g=this.getFrameRate_(f),_=Number(f.getRequiredAttrValue("BANDWIDTH"))||Number(f.getAttributeValue("AVERAGE-BANDWIDTH")),T=f.getAttributeValue("RESOLUTION"),[S,b]=T?T.split("x"):[null,null],E=f.getAttributeValue("VIDEO-RANGE"),C=f.getAttributeValue("REQ-VIDEO-LAYOUT");C&&C.includes(",")&&(C=C.split(",").filter(M=>M=="CH-STEREO"||M=="CH-MONO")[0]),C=C||"CH-MONO";let A=this.createStreamInfosForVariantTags_(m,i,T);v.assert(A.audio.length||A.video.length,"We should have created a stream!"),d.push(...this.createVariants_(A.audio,A.video,_,S,b,g,E,C,a,o,n))}return d.filter(u=>u!=null)}createStreamInfosForVariantTags_(e,t,i){let r=R.ContentType,s={audio:[],video:[]},n=new Map,a=new Set,o=new Set;for(let E of e){let C=E.getAttributeValue("AUDIO"),A=E.getAttributeValue("VIDEO");if(!C&&!A)continue;let w=E.getAttributeValue("PATHWAY-ID");C&&!a.has(C)&&(a.add(C),w&&n.set(C,w)),A&&!o.has(A)&&(o.add(A),w&&n.set(A,w)),p.debug("Guessing stream type for",E.toString())}let c=[...a,...o];if(c.length&&t.length){let E=t.filter(C=>c.includes(C.getRequiredAttrValue("GROUP-ID")));this.createStreamInfosFromMediaTags_(E,n)}s.audio.push(...this.getGroupStreamInfos_(a)),s.video.push(...this.getGroupStreamInfos_(o));let d=s.video.find(E=>E.stream.isAudioMuxedInVideo),u,m=!1,f=e.map(E=>E.getRequiredAttrValue("URI")),g=s.audio.find(E=>E&&E.getUris().find(C=>f.includes(C))),_=this.getCodecsForVariantTag_(e[0]),T=R.guessCodecsSafe(r.VIDEO,_),S=R.guessCodecsSafe(r.AUDIO,_),b=he.getSupplementalCodecs(e[0]);if(d?(p.debug("Guessing video (URI-less VIDEO Rendition)."),u=r.VIDEO,S&&T&&!s.audio.length&&(_=[[T,S].join(",")])):S&&!T?(u=r.AUDIO,p.debug("Guessing audio-only."),m=s.audio.length>0&&!s.audio.some(E=>E.stream.isAudioMuxedInVideo)):!s.audio.length&&!s.video.length&&S&&T?(p.debug("Guessing multiplexed audio+video."),u=r.VIDEO,_=[[T,S].join(",")]):s.audio.length&&g?(p.debug("Guessing audio-only."),u=r.AUDIO,m=!0):s.video.length&&!s.audio.length?(p.debug("Guessing audio-only."),u=r.AUDIO):(p.debug("Guessing video-only."),u=r.VIDEO),!m){let E=this.createStreamInfoFromVariantTags_(e,_,u,b),C=E.stream,A=u==r.AUDIO?s.audio:s.video,w=A.find(M=>M.stream.isAudioMuxedInVideo);if(C.type==u&&w){let M=w.stream;C.language=M.language,C.originalLanguage=M.originalLanguage,C.label=M.label,C.channelsCount=M.channelsCount,C.audioSamplingRate=M.audioSamplingRate,C.originalId=M.originalId,C.primary=M.primary,C.roles=M.roles,A.splice(A.indexOf(w),1,E)}else(C.type==r.AUDIO?s.audio:s.video).push(E)}return s.video=s.video.filter(E=>!E.stream.isAudioMuxedInVideo),s}getGroupStreamInfos_(e){if(!e.size)return[];let t=[...e].sort().join(",");return this.groupIdToStreamInfosMap_.get(t)||[]}getCodecsForVariantTag_(e){let t=e.getAttributeValue("CODECS")||"";if(this.codecInfoInManifest_=t.length>0,!this.codecInfoInManifest_&&!this.config_.hls.disableCodecGuessing){let r=[];this.config_.disableVideo||r.push(this.config_.hls.defaultVideoCodec),this.config_.disableAudio||r.push(this.config_.hls.defaultAudioCodec),t=r.join(",")}let i=t.split(/\s*,\s*/);return vt.codecsFiltering(i)}getChannelsCount_(e){let t=e.getAttributeValue("CHANNELS");if(!t)return null;let i=t.split("/")[0];return parseInt(i,10)}getSampleRate_(e){let t=e.getAttributeValue("SAMPLE-RATE");return t?parseInt(t,10):null}getFrameRate_(e){let t=e.getAttributeValue("FRAME-RATE");return t?parseFloat(t):null}isSpatialAudio_(e){let t=e.getAttributeValue("CHANNELS");if(!t)return!1;let i=t.split("/");return i.length!=2?!1:i[1]==="JOC"||i[1].includes("ATMOS")||i[1].includes("IMSA")}getClosedCaptions_(e,t){let i=R.ContentType,r=e.getAttributeValue("CLOSED-CAPTIONS");if(t==i.VIDEO){if(this.config_.disableText)return this.needsClosedCaptionsDetection_=!1,null;if(r){if(r!="NONE")return this.groupIdToClosedCaptionsMap_.get(r);this.needsClosedCaptionsDetection_=!1}else if(!r&&this.groupIdToClosedCaptionsMap_.size)for(let s of this.groupIdToClosedCaptionsMap_.keys())return this.groupIdToClosedCaptionsMap_.get(s)}return null}getLanguage_(e){return ve.normalize(e||"und")}getType_(e){let t=e.getRequiredAttrValue("TYPE").toLowerCase();return t=="subtitles"&&(t=R.ContentType.TEXT),t}createVariants_(e,t,i,r,s,n,a,o,c,d,u){let m=R.ContentType;for(let T of t)this.addVideoAttributes_(T.stream,r,s,n,a,o,null);let f=this.config_.disableVideo;(!t.length||f)&&(t=[null]),f&&(e=e.filter(T=>!T.stream.isAudioMuxedInVideo));let g=this.config_.disableAudio;(!e.length||g)&&(e=[null]);let _=[];for(let T of e)for(let S of t){let b=T?T.stream:null;b&&(b.drmInfos=c,b.keyIds=d);let E=S?S.stream:null;E&&(E.drmInfos=c,E.keyIds=d,this.config_.disableIFrames||se.setBetterIFrameStream(E,u)),E&&!b&&(E.bandwidth=i),!E&&b&&(b.bandwidth=i);let C=T?T.stream.drmInfos:null,A=S?S.stream.drmInfos:null,w=S?S.getUris().sort().join(","):"",M=T?T.getUris().sort().join(","):"",x=[];b&&b.codecs&&x.push(b.codecs),E&&E.codecs&&x.push(E.codecs);let k=[w,M,x.sort()].join("-");if(b&&E&&!de.areDrmCompatible(C,A)){p.warning("Incompatible DRM info in HLS variant. Skipping.");continue}if(this.variantUriSet_.has(k)){p.debug("Skipping variant which only differs in text streams.");continue}v.assert(!b||b.type==m.AUDIO,"Audio parameter mismatch!"),v.assert(!E||E.type==m.VIDEO,"Video parameter mismatch!");let L={id:this.globalId_++,language:b?b.language:"und",disabledUntilTime:0,primary:!!b&&b.primary||!!E&&E.primary,audio:b,video:E,bandwidth:i,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]};_.push(L),this.variantUriSet_.add(k)}return _}parseClosedCaptions_(e){let t=he.filterTagsByType(e,"CLOSED-CAPTIONS");this.needsClosedCaptionsDetection_=t.length==0;for(let i of t){v.assert(i.name=="EXT-X-MEDIA","Should only be called on media tags!");let r=i.getAttributeValue("LANGUAGE"),s=this.getLanguage_(r);if(!r){let o=i.getAttributeValue("NAME");o&&(s=o)}let n=i.getRequiredAttrValue("GROUP-ID"),a=i.getRequiredAttrValue("INSTREAM-ID").replace("SERVICE","svc");this.groupIdToClosedCaptionsMap_.get(n)||this.groupIdToClosedCaptionsMap_.set(n,new Map),this.groupIdToClosedCaptionsMap_.get(n).set(a,s)}}createStreamInfoFromMediaTags_(e,t,i=!0){let r=[],s=[],n=new Map;for(let L of e){v.assert(L.name=="EXT-X-MEDIA","Should only be called on media tags!");let V=++this.globalId_,ee=()=>St.FAKE_MUXED_URL_+V,oe=i?L.getRequiredAttrValue("URI"):L.getAttributeValue("URI")||ee(),le=L.getRequiredAttrValue("GROUP-ID");r.push(oe),s.push(le),n.set(le,oe);let H=L.getAttributeValue("PATHWAY-ID");H&&t.set(le,H)}let a=s.sort().join(","),o=e[0],c="",d=this.getType_(o);if(d==R.ContentType.TEXT&&(c=o.getAttributeValue("CODECS")||""),!c){for(let L of s)if(this.groupIdToCodecsMap_.has(L)){c=this.groupIdToCodecsMap_.get(L);break}}let u=he.getSupplementalCodecs(o),m=r.sort().join(","),f=m;if(d=="audio"&&a&&(f+=a),this.uriToStreamInfosMap_.has(f))return this.uriToStreamInfosMap_.get(f);let g=this.globalId_++;if(this.contentSteeringManager_)for(let[L,V]of n){let ee=t.get(L);ee&&this.contentSteeringManager_.addLocation(g,ee,V)}let _=o.getAttributeValue("LANGUAGE"),T=o.getAttributeValue("NAME"),b=o.getAttributeValue("DEFAULT")=="YES",E=d=="audio"?this.getChannelsCount_(o):null,C=d=="audio"?this.isSpatialAudio_(o):!1,A=o.getAttributeValue("CHARACTERISTICS"),M=o.getAttributeValue("FORCED")=="YES",x=d=="audio"?this.getSampleRate_(o):null,k=this.createStreamInfo_(g,r,c,d,_,b,T,E,null,A,M,x,C,u,m);return this.groupIdToStreamInfosMap_.has(a)?this.groupIdToStreamInfosMap_.get(a).push(k):this.groupIdToStreamInfosMap_.set(a,[k]),this.uriToStreamInfosMap_.set(f,k),k}async createStreamInfoFromImageTag_(e){v.assert(e.name=="EXT-X-IMAGE-STREAM-INF","Should only be called on image tags!");let t=R.ContentType.IMAGE,i=e.getRequiredAttrValue("URI"),r=e.getAttributeValue("CODECS","jpeg")||"",s=he.getSupplementalCodecs(e);if(this.uriToStreamInfosMap_.has(i))return this.uriToStreamInfosMap_.get(i);let n=e.getAttributeValue("LANGUAGE"),a=e.getAttributeValue("NAME"),o=e.getAttributeValue("CHARACTERISTICS"),c=i,d=this.createStreamInfo_(this.globalId_++,[i],r,t,n,!1,a,null,null,o,!1,null,!1,s,c),u=e.getAttributeValue("RESOLUTION");if(u){await d.stream.createSegmentIndex();let g=d.stream.segmentIndex.earliestReference().getTilesLayout();g&&(d.stream.width=Number(u.split("x")[0])*Number(g.split("x")[0]),d.stream.height=Number(u.split("x")[1])*Number(g.split("x")[1])),d.stream.closeSegmentIndex()}let m=e.getAttributeValue("BANDWIDTH");return m&&(d.stream.bandwidth=Number(m)),this.uriToStreamInfosMap_.set(i,d),d}createStreamInfoFromIframeTag_(e){v.assert(e.name=="EXT-X-I-FRAME-STREAM-INF","Should only be called on iframe tags!");let t=R.ContentType.VIDEO,i=e.getRequiredAttrValue("URI"),r=e.getAttributeValue("CODECS")||"",s=he.getSupplementalCodecs(e);if(r=="mjpg"&&(t=R.ContentType.IMAGE),this.uriToStreamInfosMap_.has(i))return this.uriToStreamInfosMap_.get(i);let n=e.getAttributeValue("LANGUAGE"),a=e.getAttributeValue("NAME"),o=e.getAttributeValue("CHARACTERISTICS"),c=i,d=this.createStreamInfo_(this.globalId_++,[i],r,t,n,!1,a,null,null,o,!1,null,!1,s,c);d.stream.isIframe=!0;let u=e.getAttributeValue("RESOLUTION"),[m,f]=u?u.split("x"):[null,null];d.stream.width=Number(m)||void 0,d.stream.height=Number(f)||void 0;let g=e.getAttributeValue("BANDWIDTH");return g&&(d.stream.bandwidth=Number(g)),this.uriToStreamInfosMap_.set(i,d),d}createStreamInfoFromVariantTags_(e,t,i,r){let s=this.globalId_++,n=[];for(let m of e){v.assert(m.name=="EXT-X-STREAM-INF","Should only be called on variant tags!");let f=m.getRequiredAttrValue("URI"),g=m.getAttributeValue("PATHWAY-ID");this.contentSteeringManager_&&g&&this.contentSteeringManager_.addLocation(s,g,f),n.push(f)}let a=n.sort().join(",")+t.sort().join(",");if(this.uriToStreamInfosMap_.has(a))return this.uriToStreamInfosMap_.get(a);let o=n.join(","),c=this.getClosedCaptions_(e[0],i),d=R.guessCodecs(i,t),u=this.createStreamInfo_(s,n,d,i,null,!1,null,null,c,null,!1,null,!1,r,o);return this.uriToStreamInfosMap_.set(a,u),u}createStreamInfo_(e,t,i,r,s,n,a,o,c,d,u,m,f,g,_){let T=this.makeStreamObject_(e,i,r,s,n,a,o,c,d,u,m,f,g,_);t.some(x=>x.startsWith(St.FAKE_MUXED_URL_))&&(T.isAudioMuxedInVideo=!0,r==R.ContentType.AUDIO&&(T.mimeType="video/mp2t",this.setFullTypeForStream_(T)));let b={stream:T,type:r,redirectUris:[],getUris:()=>{},minTimestamp:0,maxTimestamp:0,mediaSequenceToStartTime:new Map,canSkipSegments:!1,canSkipDateRanges:!1,canBlockReload:!1,hasEndList:!1,firstSequenceNumber:-1,nextMediaSequence:-1,nextPart:-1},E=()=>this.contentSteeringManager_&&t.length>1?this.contentSteeringManager_.getLocations(e):b.redirectUris.concat(he.constructUris([this.masterPlaylistUri_],t,this.globalVariables_));b.getUris=E;let C=async x=>{let k=R.ContentType;try{let L=await x.promise;if(x.aborted)return;let V=L.uri;V!=L.originalUri&&(b.getUris().includes(V)||b.redirectUris.push(V));let ee=this.manifestTextParser_.parsePlaylist(L.data);if(ee.type!=Gi.MEDIA)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_PLAYLIST_HIERARCHY);let oe=he.filterTagsByName(ee.tags,"EXT-X-DEFINE"),le=this.parseMediaVariables_(oe,V),H=void 0,J=!1;(!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing||this.needsClosedCaptionsDetection_&&r==k.VIDEO&&!this.config_.hls.disableClosedCaptionsDetection)&&ee.segments.length>0&&(this.needsClosedCaptionsDetection_=!1,J=!0);let Z=!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing,ce=this.isDynamic_(),W=await this.convertParsedPlaylistIntoStreamInfo_(e,le,ee,E,i,r,s,n,a,o,c,d,u,m,f,g,_,H,J,Z);if(x.aborted)return;let z=W.stream;this.determineStartTime_(ee),this.isDynamic_()&&!ce&&this.changePresentationTimelineToLive_(ee),b.minTimestamp=W.minTimestamp,b.maxTimestamp=W.maxTimestamp,b.canSkipSegments=W.canSkipSegments,b.canSkipDateRanges=W.canSkipDateRanges,b.canBlockReload=W.canBlockReload,b.hasEndList=W.hasEndList,b.mediaSequenceToStartTime=W.mediaSequenceToStartTime,b.nextMediaSequence=W.nextMediaSequence,b.nextPart=W.nextPart,T.segmentIndex=z.segmentIndex,T.encrypted=z.encrypted,T.drmInfos=z.drmInfos,T.keyIds=z.keyIds,T.mimeType=z.mimeType,T.bandwidth=T.bandwidth||z.bandwidth,T.codecs=T.codecs||z.codecs,T.closedCaptions=T.closedCaptions||z.closedCaptions,T.width=T.width||z.width,T.height=T.height||z.height,T.hdr=T.hdr||z.hdr,T.colorGamut=T.colorGamut||z.colorGamut,T.frameRate=T.frameRate||z.frameRate,T.language=="und"&&z.language!="und"&&(T.language=z.language),T.language=T.language||z.language,T.channelsCount=T.channelsCount||z.channelsCount,T.audioSamplingRate=T.audioSamplingRate||z.audioSamplingRate,this.setFullTypeForStream_(T),b.type==k.VIDEO&&W.type==k.AUDIO&&(!this.codecInfoInManifest_||N.RAW_FORMATS.includes(T.mimeType))&&this.reclassifyStreamInfo_(b,z),T.drmInfos.length&&this.playerInterface_.newDrmInfo(T);let ge=!1;if((!c&&T.closedCaptions||c&&T.closedCaptions&&c.size!=T.closedCaptions.size)&&(ge=!0),this.manifest_&&ge&&this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_),r==k.TEXT){let X=z.segmentIndex.earliestReference();X&&X.initSegmentReference&&(T.mimeType="application/mp4",this.setFullTypeForStream_(T))}let Y=ur.createQualityInfo(T);if(T.segmentIndex.forEachTopLevelReference(X=>{X.initSegmentReference&&(X.initSegmentReference.mediaQuality=Y)}),this.hasEnoughInfoToFinalizeStreams_())if(this.streamsFinalized_)this.finalizeStreams_([b]);else{this.streamsFinalized_=!0;let O=Array.from(this.uriToStreamInfosMap_.values()).filter(Ie=>Ie.stream.segmentIndex);this.finalizeStreams_(O),this.determineDuration_();let $=this.getUpdatePlaylistDelay_();$>0&&this.updatePlaylistTimer_.tickAfter($)}this.manifest_&&(this.manifest_.startTime=this.startTime_),await this.processDateRangeTags_(ee.tags,T.type,le,E)}catch(L){if(T.closeSegmentIndex(),L.code===h.Code.OPERATION_ABORTED)return;if(!this.playerInterface_.disableStream(T))throw L}},A=null,w,M=()=>{if(A)return A;if(T.isAudioMuxedInVideo){let x=new Ze([]);return T.segmentIndex=x,Promise.resolve()}return w=this.requestManifest_(b.getUris(),!0),A=new Promise(x=>{x(C(w))}),A};return T.createSegmentIndex=M,T.closeSegmentIndex=()=>{A&&!T.segmentIndex&&w.abort(),T.segmentIndex&&(T.segmentIndex.release(),T.segmentIndex=null),A=null},b}reclassifyStreamInfo_(e,t){let i=R.ContentType,r=e.stream,s=t.type,n=e.type;if(p.debug("Reclassifying HLS stream",r.id,"from",r.type,"to",s),this.isLive_()&&(this.mediaSequenceToStartTimeByType_.set(s,this.mediaSequenceToStartTimeByType_.get(n)),this.mediaSequenceToStartTimeByType_.set(n,new Map)),e.type=s,r.type=s,r.codecs=R.guessCodecsSafe(s,t.codecs.split(/\s*,\s*/))||"",this.setFullTypeForStream_(r),!!this.manifest_){for(let a of this.manifest_.variants)s==i.AUDIO&&a.video==r&&(a.video=null,a.audio||(a.audio=r,a.language=r.language));this.manifest_.variants=this.manifest_.variants.filter(a=>a.audio||a.video)}}getMinDuration_(){let e=1/0;for(let t of this.uriToStreamInfosMap_.values())t.stream.segmentIndex&&t.stream.type!="text"&&!t.stream.isAudioMuxedInVideo&&(e=Math.min(e,t.maxTimestamp));return e}getLiveDuration_(){let e=1/0,t=1/0;for(let i of this.uriToStreamInfosMap_.values())i.stream.segmentIndex&&i.stream.type!="text"&&!i.stream.isAudioMuxedInVideo&&(e=Math.min(e,i.maxTimestamp),t=Math.min(t,i.minTimestamp));return e-t}notifySegmentsForStreams_(e){let t=[];for(let i of e)i.segmentIndex&&i.segmentIndex.forEachTopLevelReference(r=>{t.push(r)});this.presentationTimeline_.notifySegments(t)}finalizeStreams_(e){if(!this.isDynamic_()){let o=this.getMinDuration_();for(let c of e)c.stream.segmentIndex.fit(0,o)}this.notifySegmentsForStreams_(e.map(o=>o.stream));let t=Array.from(this.uriToStreamInfosMap_.values()).filter(o=>o.stream.segmentIndex),i=R.ContentType,r=t.some(o=>o.stream.type==i.AUDIO),s=t.some(o=>o.stream.type==i.VIDEO),n=this.isLive_()&&!this.usesProgramDateTime_,a=!this.isDynamic_()&&this.usesProgramDateTime_&&!(r&&s);this.config_.hls.ignoreManifestProgramDateTime||n||a?this.syncStreamsWithSequenceNumber_(e,n):(this.syncStreamsWithProgramDateTime_(e),this.config_.hls.ignoreManifestProgramDateTimeForTypes.length>0&&this.syncStreamsWithSequenceNumber_(e))}ignoreManifestProgramDateTimeFor_(e){return this.config_.hls.ignoreManifestProgramDateTime?!0:this.config_.hls.ignoreManifestProgramDateTimeForTypes.includes(e)}hasEnoughInfoToFinalizeStreams_(){if(!this.manifest_||!this.manifest_.variants.length)return!1;let e=[],t=[];for(let i of this.manifest_.variants)i.video&&e.push(i.video),i.audio&&t.push(i.audio);return!(e.length>0&&!e.some(i=>i.segmentIndex)||t.length>0&&!t.some(i=>i.segmentIndex))}async convertParsedPlaylistIntoStreamInfo_(e,t,i,r,s,n,a,o,c,d,u,m,f,g,_,T,S,b=void 0,E=!0,C=!0){let A=n,w=i.segments||[],M=w.every(mt=>!!he.getFirstTagWithName(mt.tags,"EXT-X-GAP"));if(!w.length||M)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_EMPTY_MEDIA_PLAYLIST);this.determinePresentationType_(i),this.isDynamic_()&&this.determineLastTargetDuration_(i);let x=this.isLive_()?this.mediaSequenceToStartTimeByType_.get(n):new Map,{segments:k,bandwidth:L}=this.createSegments_(i,x,t,r,n,!0,null);!b&&n==R.ContentType.TEXT&&(b=await this.guessMimeType_(n,s,k),!s&&b=="application/mp4"&&k[0]&&!k[0].initSegmentReference&&(b="text/vtt"),!s&&b=="application/mp4"&&(E=!0,C=!0));let V=null,ee=null,oe=null,le=null,H=null;if(k.length>0&&E){let mt=await this.getBasicInfoFromSegments_(k);n!=mt.type&&this.isLive_()&&(this.mediaSequenceToStartTimeByType_.set(mt.type,this.mediaSequenceToStartTimeByType_.get(n)),this.mediaSequenceToStartTimeByType_.set(n,new Map)),n=mt.type,mt.type!=R.ContentType.VIDEO&&(a=mt.language),d=mt.channelCount,g=mt.sampleRate,this.config_.disableText||(u=mt.closedCaptions),ee=mt.height,V=mt.width,oe=mt.videoRange,le=mt.colorGamut,H=mt.frameRate,C&&(b=mt.mimeType,s=mt.codecs)}b||(b=await this.guessMimeType_(n,s,k)),A==R.ContentType.VIDEO&&N.RAW_FORMATS.includes(b)&&(p.debug("Raw format",b,"is audio-only, not video."),n=R.ContentType.AUDIO);let{drmInfos:J,keyIds:Z,encrypted:ce,aesEncrypted:W}=await this.parseDrmInfo_(i,b,r,t);if(ce&&!J.length&&!W)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_KEYFORMATS_NOT_SUPPORTED);let z=this.makeStreamObject_(e,s,n,a,o,c,d,u,m,f,g,_,T,S);z.encrypted=ce&&!W,z.drmInfos=J,z.keyIds=Z,z.mimeType=b,L&&(z.bandwidth=L),he.getFirstTagWithName(i.tags,"EXT-X-I-FRAMES-ONLY")&&(z.isIframe=!0),this.setFullTypeForStream_(z),n==R.ContentType.VIDEO&&(V||ee||oe||le)&&this.addVideoAttributes_(z,V,ee,H,oe,null,le),this.isDynamic_()&&this.determineLastTargetDuration_(i);let ge=k[0].startTime,X=k[k.length-1].endTime,O=new Ze(k);z.segmentIndex=O,this.setProgramDateTimeRegionsFromIndex_(z,n);let $=he.getFirstTagWithName(i.tags,"EXT-X-SERVER-CONTROL"),Ie=$?$.getAttribute("CAN-SKIP-UNTIL")!=null:!1,tt=!1;Ie&&(tt=$?$.getAttribute("CAN-SKIP-DATERANGES")!=null:!1);let _t=$?$.getAttribute("CAN-BLOCK-RELOAD")!=null:!1,bt=he.getFirstTagWithNameAsNumber(i.tags,"EXT-X-MEDIA-SEQUENCE",0),{nextMediaSequence:yt,nextPart:xt}=this.getNextMediaSequenceAndPart_(bt,k);return{stream:z,type:n,redirectUris:[],getUris:r,minTimestamp:ge,maxTimestamp:X,canSkipSegments:Ie,canSkipDateRanges:tt,canBlockReload:_t,hasEndList:!1,firstSequenceNumber:-1,nextMediaSequence:yt,nextPart:xt,mediaSequenceToStartTime:x}}getNextMediaSequenceAndPart_(e,t,i=t.length){let s=e+i-1,n=-1;if(!t.length)return s++,{nextMediaSequence:s,nextPart:n};let a=t[t.length-1],o=a.partialReferences;return a.partialReferences.length?(n=o.length-1,o[o.length-1].isPreload()||(s++,n=0),{nextMediaSequence:s,nextPart:n}):(s++,a.hasByterangeOptimization()&&(n=0),{nextMediaSequence:s,nextPart:n})}getReferenceForMediaSequence_(e,t,i){if(!e||!t.has(i))return null;let r=t.get(i),s=e.find(r);if(s==null)return null;let n=e.get(s);return n&&n.startTime==r?n:null}makeStreamObject_(e,t,i,r,s,n,a,o,c,d,u,m,f,g){let _=this.guessMimeTypeBeforeLoading_(i,t)||this.guessMimeTypeFallback_(i),T=[];if(c)for(let C of c.split(","))T.push(C);let S,b=null;i==R.ContentType.TEXT?T.includes("public.accessibility.transcribes-spoken-dialog")&&T.includes("public.accessibility.describes-music-and-sound")?S=R.TextStreamKind.CLOSED_CAPTION:S=R.TextStreamKind.SUBTITLE:T.includes("public.accessibility.describes-video")&&(b=me.AccessibilityPurpose.VISUALLY_IMPAIRED),!T.length&&S===R.TextStreamKind.SUBTITLE&&T.push(R.TextStreamKind.SUBTITLE);let E={id:this.globalId_++,originalId:g,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:_,codecs:t,supplementalCodecs:f,kind:i==R.ContentType.TEXT?R.TextStreamKind.SUBTITLE:void 0,encrypted:!1,drmInfos:[],keyIds:new Set,language:this.getLanguage_(r),originalLanguage:r,label:n,type:i,primary:s,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,frameRate:void 0,pixelAspectRatio:void 0,width:void 0,height:void 0,bandwidth:void 0,roles:T,forced:d,channelsCount:a,audioSamplingRate:u,spatialAudio:m,closedCaptions:o,hdr:void 0,colorGamut:void 0,videoLayout:void 0,tilesLayout:void 0,accessibilityPurpose:b,external:!1,fastSwitching:!1,fullMimeTypes:new Set,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1};return this.setFullTypeForStream_(E),E}async parseDrmInfo_(e,t,i,r){let s=new Map;if(!this.config_.ignoreDrmInfo&&e.segments)for(let d of e.segments){let u=he.filterTagsByName(d.tags,"EXT-X-KEY"),m=null;if(u.length){m=this.getInitSegmentReference_(e,d.tags,i,r);for(let f of u)s.set(f,m)}}let n=!1,a=!1,o=[],c=new Set;for(let[d,u]of s){let m=d,f=u,g=m.getRequiredAttrValue("METHOD");if(g!="NONE"){n=!0;let _=m.getAttributeValue("KEYFORMAT")||"identity",T=null;if(this.isAesMethod_(g)){a=!0;continue}else if(_=="identity")T=await this.identityDrmParser_(m,t,i,f,r);else{let S=this.keyFormatsToDrmParsers_.get(_);T=S?await S(m,t,f):null}if(T){if(T.keyIds)for(let S of T.keyIds)c.add(S);o.push(T)}else p.warning("Unsupported HLS KEYFORMAT",_)}}return{drmInfos:o,keyIds:c,encrypted:n,aesEncrypted:a}}parseAESDrmTag_(e,t,i,r){if(!window.crypto||!window.crypto.subtle)throw p.alwaysWarn("Web Crypto API is not available to decrypt AES. (Web Crypto only exists in secure origins like https)"),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_WEB_CRYPTO_API);let s=e.getRequiredAttrValue("METHOD"),n=0,a,o=e.getAttributeValue("IV","");if(s==="AES-256-GCM"){if(o)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_KEY_IV_FOR_GCM)}else if(!o)n=he.getFirstTagWithNameAsNumber(t.tags,"EXT-X-MEDIA-SEQUENCE",0);else if(a=ne.fromHex(o.substr(2)),a.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_IV_LENGTH);let c=he.constructSegmentUris(i(),e.getRequiredAttrValue("URI"),r),d=c.sort().join(""),u=`${e.toString()}-${n}-${d}`;return this.aesKeyInfoMap_.getOrInsertComputed(u,()=>{let m={bitsKey:128,blockCipherMode:"CBC",iv:a,firstMediaSequenceNumber:n};switch(s){case"AES-256":m.bitsKey=256;break;case"AES-256-CTR":m.bitsKey=256,m.blockCipherMode="CTR";break;case"AES-256-GCM":m.bitsKey=256,m.blockCipherMode="GCM";break}return m.fetchKey=async()=>{let f=await this.aesKeyMap_.getOrInsertComputed(d,()=>{let _=K.RequestType.KEY,T=K.makeRequest(c,this.config_.retryParameters);return this.makeNetworkRequest_(T,_).promise});if(!f.data||f.data.byteLength!=m.bitsKey/8)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_KEY_LENGTH);let g={name:m.blockCipherMode==="CBC"?"AES-CBC":m.blockCipherMode==="GCM"?"AES-GCM":"AES-CTR",length:m.bitsKey};m.cryptoKey=await window.crypto.subtle.importKey("raw",f.data,g,!0,["decrypt"]),m.fetchKey=void 0},m})}determineStartTime_(e){if(this.startTime_!=null)return;let t=he.getFirstTagWithName(e.tags,"EXT-X-START");t&&(this.startTime_=Number(t.getRequiredAttrValue("TIME-OFFSET")))}determinePresentationType_(e){let t=St.PresentationType_,i=he.getFirstTagWithName(e.tags,"EXT-X-PLAYLIST-TYPE"),r=he.getFirstTagWithName(e.tags,"EXT-X-ENDLIST"),s=i&&i.value=="VOD"||r,n=i&&i.value=="EVENT"&&!s;s?this.setPresentationType_(t.VOD):!s&&!n?this.setPresentationType_(t.LIVE):this.setPresentationType_(t.EVENT)}determineLastTargetDuration_(e){let t=1/0,i=e.segments;if(i.length){let o=i.length-1;for(;o>=0;){let c=i[o],d=he.getFirstTagWithName(c.tags,"EXTINF");if(d){t=he.getExtinfDuration(d);break}o--}}let r=this.getRequiredTag_(e.tags,"EXT-X-TARGETDURATION"),s=Number(r.value),n=he.getFirstTagWithName(e.tags,"EXT-X-PART-INF");n&&(this.partialTargetDuration_=Number(n.getRequiredAttrValue("PART-TARGET")));let a=he.getFirstTagWithName(e.tags,"EXT-X-SERVER-CONTROL");if(this.lowLatencyMode_&&this.partialTargetDuration_)this.lowLatencyByterangeOptimization_?this.partialTargetDuration_*5<=t?this.lastTargetDuration_=Math.min(this.partialTargetDuration_,this.lastTargetDuration_):this.lastTargetDuration_=Math.min(t,this.lastTargetDuration_):this.lastTargetDuration_=Math.min(this.partialTargetDuration_,this.lastTargetDuration_),this.lowLatencyPresentationDelay_=a?Number(a.getRequiredAttrValue("PART-HOLD-BACK")):0;else{this.lastTargetDuration_=Math.min(t,this.lastTargetDuration_);let o=a?a.getAttribute("HOLD-BACK"):null;this.presentationDelay_=o?Number(o.value):0}this.maxTargetDuration_=Math.max(s,this.maxTargetDuration_)}changePresentationTimelineToLive_(e){let t=0;if(this.config_.defaultPresentationDelay)t=this.config_.defaultPresentationDelay;else if(this.lowLatencyPresentationDelay_)t=this.lowLatencyPresentationDelay_;else if(this.presentationDelay_)t=this.presentationDelay_;else{let i=e.segments.length,r=Math.min(i,this.config_.hls.liveSegmentsDelay);for(let s=i-r;s<i;s++){let n=he.getFirstTagWithName(e.segments[s].tags,"EXTINF");n?t+=he.getExtinfDuration(n):t+=this.maxTargetDuration_}}this.startTime_&&this.startTime_<0&&(t=Math.min(-this.startTime_,t),this.startTime_+=t),this.presentationTimeline_.setPresentationStartTime(0),this.presentationTimeline_.setDelay(t),this.presentationTimeline_.setStatic(!1)}getInitSegmentReference_(e,t,i,r){let s=he.getFirstTagWithName(t,"EXT-X-MAP");if(!s)return null;let n=s.getRequiredAttrValue("URI"),a=he.constructSegmentUris(i(),n,r),o=[a.toString(),s.getAttributeValue("BYTERANGE","")].join("-");return this.mapTagToInitSegmentRefMap_.getOrInsertComputed(o,()=>{v.assert(s,"mapTag should be non-null");let c,d,u=!1;for(let m of t)if(m.name=="EXT-X-KEY"){let f=m.getRequiredAttrValue("METHOD");this.isAesMethod_(f)&&m.id<s.id?(u=!1,c=this.parseAESDrmTag_(m,e,i,r)):u=f!="NONE"}else m.name=="EXT-X-BYTERANGE"&&m.id<s.id&&(d=m);return this.createInitSegmentReference_(a,s,d,c,u)})}createInitSegmentReference_(e,t,i,r,s){let n=0,a=null,o=t.getAttributeValue("BYTERANGE");if(!o&&i&&(o=i.value),o){let d=o.split("@"),u=Number(d[0]);if(n=Number(d[1]),a=n+u-1,r){let m=a+1-n;m%16&&(a+=16-m%16)}}return new Tt(()=>e,n,a,null,null,null,r,s)}createSegmentReference_(e,t,i,r,s,n,a,o,c,d){let u=i.tags,m=he.getFirstTagWithName(u,"EXTINF"),f=0,g=0,_=null;i.partialSegments.length&&(this.manifest_.isLowLatency=!0);let T=null;if(!this.config_.hls.ignoreManifestProgramDateTime){let le=he.getFirstTagWithName(u,"EXT-X-PROGRAM-DATE-TIME");le&&le.value&&(T=I.parseDate(le.value),v.assert(T!=null,"EXT-X-PROGRAM-DATE-TIME format not valid"),this.usesProgramDateTime_=!0)}let S=Se.Status.AVAILABLE;if(he.getFirstTagWithName(u,"EXT-X-GAP")&&(this.manifest_.gapCount++,S=Se.Status.MISSING),!m){if(i.partialSegments.length==0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_REQUIRED_TAG_MISSING,"EXTINF");if(!this.lowLatencyMode_)return null}let b=[],E=!1,C=null,A=!1,w=!1;if(this.lowLatencyMode_&&i.partialSegments.length){let le=e&&window.ReadableStream&&this.config_.hls.allowLowLatencyByteRangeOptimization,H=T;for(let J=0;J<i.partialSegments.length;J++){let Z=i.partialSegments[J],ce=J==0?t:b[b.length-1],W=J==0?r:ce.endTime,z=Number(Z.getAttributeValue("DURATION"))||this.partialTargetDuration_;if(!z)continue;let ge=W+z,Y=0,X=null;if(Z.name=="EXT-X-PRELOAD-HINT"){let yt=Z.getAttributeValue("BYTERANGE-START");Y=yt?Number(yt):0;let xt=Z.getAttributeValue("BYTERANGE-LENGTH");xt?X=Y+Number(xt)-1:Y&&(X=Number.MAX_SAFE_INTEGER)}else{let yt=Z.getAttributeValue("BYTERANGE");[Y,X]=this.parseByteRange_(ce,yt)}let O=Z.getAttributeValue("URI");if(!O)continue;let $=Se.Status.AVAILABLE;Z.getAttributeValue("GAP")=="YES"&&(this.manifest_.gapCount++,$=Se.Status.MISSING,A=!0);let Ie=null,tt=()=>(Ie==null&&(v.assert(O,"Partial uri should be defined!"),Ie=he.constructSegmentUris(o(),O,s)),Ie);le&&Y>=0&&X!=null&&(C=tt,E=!0);let _t=new Se(W,ge,tt,Y,X,e,0,0,1/0,[],"",null,H,$,d);Z.name=="EXT-X-PRELOAD-HINT"&&(_t.markAsPreload(),w=!0),Z.getAttributeValue("INDEPENDENT")!="YES"&&J>0&&_t.markAsNonIndependent();let bt=c;if(!bt){if(b.length&&b[0].mimeType)bt=b[0].mimeType;else if(O){let yt=ct.getExtension(O);bt=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(a).get(yt)||null}}bt&&(_t.mimeType=bt,St.MIME_TYPES_WITHOUT_INIT_SEGMENT_.has(bt)&&(_t.initSegmentReference=null)),b.push(_t),H&&(H+=z)}}if(m){let le=he.getExtinfDuration(m);if(le==0)return null;f=r+le}else if(b.length)f=b[b.length-1].endTime;else return null;E&&(A||b[0].startByte!=0?(E=!1,C=null):b=[]);let M=he.getFirstTagWithName(u,"EXT-X-BYTERANGE");M?[g,_]=this.parseByteRange_(t,M.value):b.length&&(g=b[0].startByte,_=b[b.length-1].endByte);let x="",k=null;if(a==R.ContentType.IMAGE){x="1x1";let le=he.getFirstTagWithName(u,"EXT-X-TILES");if(le){x=le.getRequiredAttrValue("LAYOUT");let H=le.getAttributeValue("DURATION");H&&(k=Number(H))}}let L=null,V=()=>C?C():(L==null&&(L=he.constructSegmentUris(o(),i.verbatimSegmentUri,s)),L||[]),ee=b.length>0&&!!i.verbatimSegmentUri,oe=new Se(r,f,V,g,_,e,0,0,1/0,b,x,k,T,S,d,ee);return c&&(oe.mimeType=c,St.MIME_TYPES_WITHOUT_INIT_SEGMENT_.has(c)&&(oe.initSegmentReference=null)),E&&(this.lowLatencyByterangeOptimization_=!0,oe.markAsByterangeOptimization(),w&&oe.markAsPreload()),oe}parseByteRange_(e,t){let i=0,r=null;if(t){let s=t.split("@"),n=Number(s[0]);s[1]?i=Number(s[1]):(v.assert(e,"Cannot refer back to previous HLS segment!"),i=e.endByte+1),r=i+n-1}return[i,r]}async processDateRangeTags_(e,t,i,r){let s=R.ContentType;if(t!=s.VIDEO&&t!=s.AUDIO)return;let n=this.presentationTimeline_.getInitialProgramDateTime();if(n==null||this.ignoreManifestProgramDateTimeFor_(t))return;let a=he.filterTagsByName(e,"EXT-X-DATERANGE");a=a.filter(c=>c.getAttribute("START-DATE")!=null).sort((c,d)=>{let u=c.getRequiredAttrValue("START-DATE"),m=d.getRequiredAttrValue("START-DATE");return u<m?-1:u>m?1:0});let o=[];for(let c=0;c<a.length;c++){let d=a[c];try{let u=d.getRequiredAttrValue("START-DATE"),m=I.parseDate(u);if(isNaN(m))continue;v.assert(m!=null,"Start date should not be null!");let f=Math.max(0,m-n),g=null,_=d.getAttributeValue("END-DATE");if(_){let A=I.parseDate(_);if(!isNaN(A)&&(v.assert(A!=null,"End date should not be null!"),g=A-n,g<0))continue}if(g==null){let A=d.getAttributeValue("DURATION")||d.getAttributeValue("PLANNED-DURATION");if(A){let w=parseFloat(A);if(isNaN(w)||(g=f+w),m-n+w<0)continue}}let T=d.getAttributeValue("CLASS")||"com.apple.quicktime.HLS",S=d.getAttributeValue("END-ON-NEXT")=="YES";if(g==null&&S){for(let A=c+1;A<a.length;A++){let w=a[A].getAttributeValue("CLASS")||"com.apple.quicktime.HLS";if(T!=w)continue;let M=a[A].getRequiredAttrValue("START-DATE"),x=I.parseDate(M);if(!isNaN(x)&&x&&x>m){g=Math.max(0,x-n);break}}if(g==null)continue}let b=["CLASS","START-DATE","END-DATE","DURATION","END-ON-NEXT"],E=[];for(let A of d.attributes){if(b.includes(A.name))continue;let w=he.variableSubstitution(A.value,i);(A.name=="X-ASSET-URI"||A.name=="X-ASSET-LIST")&&(w=he.constructSegmentUris(r(),A.value,i)[0]);let M={key:A.name,description:"",data:w,mimeType:null,pictureType:null};E.push(M)}let C={schemeIdUri:T,value:"",startTime:f,endTime:g!=null?g:1/0,id:d.getRequiredAttrValue("ID"),timescale:1,eventNode:null,urlParams:void 0,values:E};if(this.playerInterface_.onTimelineRegionAdded(C),E.length>1){let A=this.playerInterface_.onMetadata(T,f,g,E),w=!1,M=E.find(x=>x.key=="CUE");if(M&&M.data.includes("PRE")&&(w=!0),g!=null&&!w){let x;this.manifest_.startTime!=null?x=this.manifest_.startTime:this.isDynamic_()?x=this.manifest_.presentationTimeline.getSeekRangeEnd():x=this.manifest_.presentationTimeline.getSeekRangeStart(),w=f<=x&&g>=x}w&&o.push(A)}}catch(u){p.warning("Ignoring DATERANGE with errors",d.toString())}}o.length&&await Promise.all(o)}createSegments_(e,t,i,r,s,n,a){let o=e.segments;v.assert(o.length,"Playlist should have segments!");let c=null,d=null,u=null,m=null,f,g=he.getFirstTagWithNameAsNumber(e.tags,"EXT-X-DISCONTINUITY-SEQUENCE",-1),_=he.getFirstTagWithNameAsNumber(e.tags,"EXT-X-MEDIA-SEQUENCE",0),T=he.getFirstTagWithName(e.tags,"EXT-X-SKIP"),S=T?Number(T.getAttributeValue("SKIPPED-SEGMENTS")):0,b=_+S,E=0;this.isLive_()&&t.has(b)&&(E=t.get(b)),E===0&&this.isLive_()&&t.size>0&&!t.has(b)&&this.presentationTimeline_.getPresentationStartTime()!=null&&(E=this.presentationTimeline_.getSegmentAvailabilityStart());let C=[],A=[],w=null,M=null,x=[],k=0;if(!n&&a){k=o.length;for(let H=0;H<o.length;H++){let J=_+S+H;if(!t.has(J)){k=H;break}if(o[H].partialSegments.length){k=H;break}if(this.lowLatencyMode_){let Z=he.getFirstTagWithName(o[H].tags,"EXTINF");if(Z){let ce=he.getExtinfDuration(Z),W=this.getReferenceForMediaSequence_(a,t,J);if(W&&Math.abs(W.endTime-W.startTime-ce)>.001){k=H;break}}}}if(k>0){let H=_+S+k-1;w=this.getReferenceForMediaSequence_(a,t,H),w?(M=w,p.debug("HLS live update: reusing",k,"known segment references and building only the new tail.")):(p.debug("HLS live update: full playlist rebuild selected for overlap recovery."),k=0)}}let L=M;!L&&a&&(L=this.getReferenceForMediaSequence_(a,t,_+S)||a.get(a.getNumEvicted()+a.getNumReferences()-1));let V=H=>{let J=ct.getExtension(H);if(!J)return null;let ce=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(s).get(J);return ce||(ce=St.RAW_FORMATS_TO_MIME_TYPES_.get(J)),ce};for(let H=0;H<o.length;H++){let J=o[H],Z=he.getFirstTagWithName(J.tags,"EXT-X-MAP");Z&&Z.id!==d&&(c=this.getInitSegmentReference_(e,J.tags,r,i),d=Z.id);let ce=J.verbatimSegmentUri,W="";ce&&(W=ct.getExtension(ce)),W!==m&&(u=V(ce),m=W);let z=H==0?E:w.endTime;b=_+S+H,he.getFirstTagWithName(J.tags,"EXT-X-DISCONTINUITY")&&(g++,H>=k&&w&&w.initSegmentReference&&(w.initSegmentReference.boundaryEnd=z));for(let O of J.tags)O.name=="EXT-X-KEY"&&(this.isAesMethod_(O.getRequiredAttrValue("METHOD"))?f=this.parseAESDrmTag_(O,e,r,i):f=void 0);if(H<k)continue;let Y=n||!t.has(b);t.set(b,z);let X=this.createSegmentReference_(c,w,J,z,i,e,s,r,u,f);if(X){let O=he.getFirstTagWithNameAsNumber(J.tags,"EXT-X-BITRATE");if(O)x.push({bitrate:O,duration:X.endTime-X.startTime}),X.bandwidth=O;else if(X.endByte){let $=X.getSize();if($){let Ie=X.endTime-X.startTime,tt=$*8/Ie/1e3;x.push({bitrate:tt,duration:Ie}),X.bandwidth=tt}}else if(x.length){let $=x[x.length-1];$.duration+=X.endTime-X.startTime,X.bandwidth=$.bitrate}if(X.bandwidth)for(let $ of X.partialReferences)$.bandwidth=X.bandwidth;w=X,X.discontinuitySequence=g,this.ignoreManifestProgramDateTimeFor_(s)&&this.minSequenceNumber_!=null&&b<this.minSequenceNumber_||(C.push(X),(Y||!n)&&A.push(X))}}let ee;if(x.length){let H=x.reduce((J,Z)=>J+Z.duration,0);ee=Math.round(x.reduce((J,Z)=>J+Z.bitrate*Z.duration,0)/H*1e3)}let oe=!!(M!=null&&M.syncTime)||C.some(H=>H.syncTime!=null);if(oe)for(let H=0;H<C.length;H++){let J=C[H];if(J.syncTime!=null)continue;let Z=0,ce=H,W=()=>{let X=C[ce];if(X){if(X.syncTime!=null)return X.syncTime+Z;Z-=X.endTime-X.startTime,ce+=1}return null},z=0,ge=H,Y=()=>{let X=C[ge];if(X){if(X!=J&&(z+=X.endTime-X.startTime),X.syncTime!=null)return X.syncTime+z;ge-=1}else if(M&&M.syncTime!=null)return M.syncTime+(M.endTime-M.startTime)+z;return null};for(;J.syncTime==null;)J.syncTime=Y(),J.syncTime==null&&(J.syncTime=W())}if(oe){let H=0,J=M;if(L&&L.syncTime!=null){let Z=this.realProgramDateTimeByReference_.get(L);Z!=null&&(H=Z-L.syncTime)}for(let Z of C){if(Z.syncTime!=null){if(this.realProgramDateTimeByReference_.set(Z,Z.syncTime),J&&J.syncTime!=null&&J.discontinuitySequence!=Z.discontinuitySequence){let W=J.syncTime+(J.endTime-J.startTime),ge=Z.syncTime-W-H;Math.abs(ge)>1&&(H+=ge)}Z.syncTime-=H}let ce=Z.syncTime;for(let W of Z.partialReferences)W.syncTime=ce,ce+=W.endTime-W.startTime;J=Z}}let le=this.lowestSyncTime_;if(oe&&le!=1/0&&!this.ignoreManifestProgramDateTimeFor_(s))for(let H of C)H.syncAgainst(le);return{segments:n?C:A,totalCount:k+C.length,bandwidth:ee}}setProgramDateTimeRegionsFromIndex_(e,t){if(t!=R.ContentType.VIDEO||this.ignoreManifestProgramDateTimeFor_(t)||!e.segmentIndex)return;let i=[],r=null;for(let s of e.segmentIndex){if(!s||s.syncTime==null)continue;let n=this.realProgramDateTimeByReference_.get(s);if(n==null)continue;let a=n-s.syncTime;(r==null||Math.abs(a-r)>.001)&&i.push({start:s.startTime,pdt:n}),r=a}this.presentationTimeline_.setProgramDateTimeRegions(i)}guessMimeTypeBeforeLoading_(e,t){if(e==R.ContentType.TEXT){if(t=="vtt"||t=="wvtt")return"text/vtt";if(t&&t!=="")return"application/mp4"}return e==R.ContentType.IMAGE&&(!t||t=="jpeg")?"image/jpeg":e==R.ContentType.AUDIO&&t=="mp4a.40.34"?"audio/mpeg":t=="mjpg"?"application/mp4":null}guessMimeTypeFallback_(e){return e==R.ContentType.TEXT?"text/vtt":St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(e).get("mp4")}getAvailableSegment_(e){v.assert(e.length,"Should have segments!");let t=this.isLive_()?Math.trunc((e.length-1)/2):0,i=e[t];for(;i.getStatus()==Se.Status.MISSING&&t+1<e.length;)t++,i=e[t];return{segment:i,segmentIndex:t}}async guessMimeType_(e,t,i){let r=K.RequestType.SEGMENT,{segment:s}=this.getAvailableSegment_(i);if(s.status==Se.Status.MISSING)return this.guessMimeTypeFallback_(e);let n,a=s.getUris(),o=ct.getExtension(a[0]);if(o){let g=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(e).get(o);if(g||(g=St.RAW_FORMATS_TO_MIME_TYPES_.get(o),g))return g}if(n=this.guessMimeTypeBeforeLoading_(e,t),n)return n;let c,d=K.AdvancedRequestType.MEDIA_SEGMENT,u=K.makeRequest(a,this.playerInterface_.getStreamingRetryParameters()),m;try{u.method="HEAD",m=await this.makeNetworkRequest_(u,r,{type:d}).promise,c=m.headers["content-type"]}catch(f){f&&(f.code==h.Code.HTTP_ERROR||f.code==h.Code.BAD_HTTP_STATUS)&&(u.method="GET",this.config_.hls.allowRangeRequestsToGuessMimeType&&(u.headers.Range="bytes=0-0"),m=await this.makeNetworkRequest_(u,r,{type:d}).promise,c=m.headers["content-type"])}return c&&(n=c.toLowerCase().split(";")[0],this.isGenericBinaryMimeType_(n)&&(m.data.byteLength||(u.method="GET",m=await this.makeNetworkRequest_(u,r,{type:d}).promise),pt.probe(D.toUint8(m.data))&&(n="video/mp2t")),!this.isGenericBinaryMimeType_(n))?n:this.guessMimeTypeFallback_(e)}isGenericBinaryMimeType_(e){return St.GENERIC_BINARY_MIME_TYPES_.includes(e)}getRequiredTag_(e,t){let i=he.getFirstTagWithName(e,t);if(!i)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_REQUIRED_TAG_MISSING,t);return i}addVideoAttributes_(e,t,i,r,s,n,a){e&&(e.width=Number(t)||void 0,e.height=Number(i)||void 0,e.frameRate=r||void 0,e.hdr=s||void 0,e.videoLayout=n||void 0,e.colorGamut=a||void 0)}requestManifest_(e,t){let i=K.RequestType.MANIFEST,r=K.makeRequest(e,this.config_.retryParameters),s=t?K.AdvancedRequestType.MEDIA_PLAYLIST:K.AdvancedRequestType.MASTER_PLAYLIST;return this.makeNetworkRequest_(r,i,{type:s})}async onUpdate_(){if(p.info("Updating manifest..."),v.assert(this.getUpdatePlaylistDelay_()>0,"We should only call |onUpdate_| when we are suppose to be updating."),!!this.playerInterface_){try{let e=Date.now();await this.update();let t=Date.now();if(this.isDynamic_()){let i=(t-e)/1e3;this.averageUpdateDuration_.sample(1,i);let r=this.config_.updatePeriod>0?this.config_.updatePeriod:this.getUpdatePlaylistDelay_(),s=Math.max(0,r-this.averageUpdateDuration_.getEstimate());isFinite(s)?this.updatePlaylistTimer_.tickAfter(s):this.updatePlaylistTimer_.tickAfter(1)}}catch(e){if(!this.playerInterface_)return;if(v.assert(e instanceof h,"Should only receive a Shaka error"),this.config_.raiseFatalErrorOnManifestUpdateRequestFailure){this.playerInterface_.onError(e);return}e.severity=h.Severity.RECOVERABLE,this.playerInterface_.onError(e),this.updatePlaylistTimer_.tickAfter(.1)}this.playerInterface_&&this.playerInterface_.onManifestUpdated()}}isDynamic_(){let e=St.PresentationType_;return this.presentationType_!=e.VOD}isLive_(){let e=St.PresentationType_;return this.presentationType_==e.LIVE}getUpdatePlaylistDelay_(){return this.lastTargetDuration_}setPresentationType_(e){this.presentationType_=e,this.presentationTimeline_&&this.presentationTimeline_.setStatic(!this.isDynamic_()),this.isDynamic_()||this.updatePlaylistTimer_.stop()}makeNetworkRequest_(e,t,i){if(!this.operationManager_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);i||(i={}),i.isPreload=this.isPreloadFn_();let r=this.playerInterface_.networkingEngine.request(t,e,i);return this.operationManager_.manage(r),r}isAesMethod_(e){return e=="AES-128"||e=="AES-256"||e=="AES-256-CTR"||e=="AES-256-GCM"}async fairplayDrmParser_(e,t,i){if(t=="video/mp2t")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED);if(de.isMediaKeysPolyfilled("apple"))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED);let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("FairPlay in HLS is only supported with [",s.join(", "),"], not",r),null;let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=R.createDrmInfo("com.apple.fps",n,null,a),c=hr.defaultGetKeyId(a);return!c&&i&&(c=await this.getKeyIdFromInitSegment_(i)),c&&o.keyIds.add(c),o}widevineDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("Widevine in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=a.split("?")[0],d=this.psshToInitData_.getOrInsertComputed(c,()=>D.toUint8(o.data)),u=R.createDrmInfo("com.widevine.alpha",n,[{initDataType:"cenc",initData:d}],void 0,o.typeInfoList),m=e.getAttributeValue("KEYID");if(m){let f=m.toLowerCase();v.assert(f.startsWith("0x"),"Incorrect KEYID format!"),u.keyIds.add(f.substr(2))}return Promise.resolve(u)}playreadyDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("PlayReady in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=D.toUint8(o.data),d=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),u=new Set,f=ei.createPssh(c,d,u,0),g=R.createDrmInfo("com.microsoft.playready",n,[{initDataType:"cenc",initData:f}],void 0,o.typeInfoList),_=I.parseXmlString(["<PLAYREADY>",ne.toBase64(c),"</PLAYREADY>"].join(`
707
- `));return _&&(g.licenseServerUri=Ri.getLicenseUrl(_)),Promise.resolve(g)}wiseplayDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("WisePlay in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=a.split("?")[0],d=this.psshToInitData_.getOrInsertComputed(c,()=>D.toUint8(o.data)),u=R.createDrmInfo("com.huawei.wiseplay",n,[{initDataType:"cenc",initData:d}],void 0,o.typeInfoList),m=e.getAttributeValue("KEYID");if(m){let f=m.toLowerCase();v.assert(f.startsWith("0x"),"Incorrect KEYID format!"),u.keyIds.add(f.substr(2))}return Promise.resolve(u)}async identityDrmParser_(e,t,i,r,s){if(t=="video/mp2t")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED);let n=e.getRequiredAttrValue("METHOD"),a=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!a.includes(n))return p.error("Identity (ClearKey) in HLS is only supported with [",a.join(", "),"], not",n),null;let o=he.constructSegmentUris(i(),e.getRequiredAttrValue("URI"),s),c;if(o[0].startsWith("data:text/plain;base64,"))c=ne.toHex(ne.fromBase64(o[0].split("data:text/plain;base64,").pop()));else{let f=o.sort().join(""),g=await this.identityKeyMap_.getOrInsertComputed(f,()=>{let _=K.RequestType.KEY,T=K.makeRequest(o,this.config_.retryParameters);return this.makeNetworkRequest_(T,_).promise});c=ne.toHex(g.data)}let d="00000000000000000000000000000000";if(r){let f=await this.getKeyIdFromInitSegment_(r);f&&(d=f)}let u=new Map;u.set(d,c);let m="cenc";return n=="SAMPLE-AES"&&(m="cbcs"),R.createDrmInfoFromClearKeys(u,m)}async getKeyIdFromInitSegment_(e){let t=null;if(this.initSegmentToKidMap_.has(e))t=this.initSegmentToKidMap_.get(e);else{let i=ct.createSegmentRequest(e.getUris(),e.getStartByte(),e.getEndByte(),this.playerInterface_.getStreamingRetryParameters()),r=K.RequestType.SEGMENT,s=K.AdvancedRequestType.INIT_SEGMENT,n=await this.makeNetworkRequest_(i,r,{type:s}).promise;e.setSegmentData(n.data),t=vt.getDefaultKID(n.data),this.initSegmentToKidMap_.set(e,t)}return t}};l(St,"GENERIC_BINARY_MIME_TYPES_",["application/octet-stream","binary/octet-stream"]),l(St,"PresentationType_",{VOD:"VOD",EVENT:"EVENT",LIVE:"LIVE"}),l(St,"FAKE_MUXED_URL_","shaka://hls-muxed");var Ut=St;Ut.RAW_FORMATS_TO_MIME_TYPES_=new Map().set("aac","audio/aac").set("ac3","audio/ac3").set("ec3","audio/ec3").set("mp3","audio/mpeg");Ut.AUDIO_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","audio/mp4").set("mp4a","audio/mp4").set("m4s","audio/mp4").set("m4i","audio/mp4").set("m4a","audio/mp4").set("m4f","audio/mp4").set("cmfa","audio/mp4").set("ts","video/mp2t").set("tsa","video/mp2t");Ut.VIDEO_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","video/mp4").set("mp4v","video/mp4").set("m4s","video/mp4").set("m4i","video/mp4").set("m4v","video/mp4").set("m4f","video/mp4").set("cmfv","video/mp4").set("ts","video/mp2t").set("tsv","video/mp2t");Ut.TEXT_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","application/mp4").set("m4s","application/mp4").set("m4i","application/mp4").set("m4f","application/mp4").set("cmft","application/mp4").set("vtt","text/vtt").set("webvtt","text/vtt").set("ttml","application/ttml+xml");Ut.IMAGE_EXTENSIONS_TO_MIME_TYPES_=new Map().set("jpg","image/jpeg").set("png","image/png").set("svg","image/svg+xml").set("webp","image/webp").set("avif","image/avif");Ut.EXTENSION_MAP_BY_CONTENT_TYPE_=new Map().set("audio",Ut.AUDIO_EXTENSIONS_TO_MIME_TYPES_).set("video",Ut.VIDEO_EXTENSIONS_TO_MIME_TYPES_).set("text",Ut.TEXT_EXTENSIONS_TO_MIME_TYPES_).set("image",Ut.IMAGE_EXTENSIONS_TO_MIME_TYPES_);Ut.MIME_TYPES_WITHOUT_INIT_SEGMENT_=new Set(["video/mp2t",...N.RAW_FORMATS]);me.registerParserByMime("application/x-mpegurl",()=>new Ut);me.registerParserByMime("application/vnd.apple.mpegurl",()=>new Ut);me.registerParserByMime("audio/x-mpegurl",()=>new Ut);/*! @license
706
+ */var St=class St{constructor(){l(this,"playerInterface_");l(this,"config_");l(this,"globalId_");l(this,"globalVariables_");l(this,"groupIdToStreamInfosMap_");l(this,"mediaSequenceToStartTimeByType_");l(this,"keyFormatsToDrmParsers_");l(this,"variantUriSet_");l(this,"uriToStreamInfosMap_");l(this,"presentationTimeline_");l(this,"masterPlaylistUri_");l(this,"manifestTextParser_");l(this,"minSequenceNumber_");l(this,"lowestSyncTime_");l(this,"realProgramDateTimeByReference_");l(this,"usesProgramDateTime_");l(this,"streamsFinalized_");l(this,"codecInfoInManifest_");l(this,"updatePlaylistTimer_");l(this,"presentationType_");l(this,"manifest_");l(this,"maxTargetDuration_");l(this,"lastTargetDuration_");l(this,"partialTargetDuration_");l(this,"presentationDelay_");l(this,"lowLatencyPresentationDelay_");l(this,"operationManager_");l(this,"groupIdToClosedCaptionsMap_");l(this,"groupIdToCodecsMap_");l(this,"mapTagToInitSegmentRefMap_");l(this,"aesKeyInfoMap_");l(this,"aesKeyMap_");l(this,"identityKeyMap_");l(this,"initSegmentToKidMap_");l(this,"lowLatencyMode_");l(this,"lowLatencyByterangeOptimization_");l(this,"averageUpdateDuration_");l(this,"contentSteeringManager_");l(this,"needsClosedCaptionsDetection_");l(this,"eventManager_");l(this,"mediaElement_");l(this,"startTime_");l(this,"isPreloadFn_");l(this,"psshToInitData_");l(this,"chapterUris_");l(this,"chapterStreamsMap_");this.playerInterface_=null,this.config_=null,this.globalId_=1,this.globalVariables_=new Map,this.groupIdToStreamInfosMap_=new Map,this.mediaSequenceToStartTimeByType_=new Map;let e=R.ContentType;this.mediaSequenceToStartTimeByType_.set(e.VIDEO,new Map),this.mediaSequenceToStartTimeByType_.set(e.AUDIO,new Map),this.mediaSequenceToStartTimeByType_.set(e.TEXT,new Map),this.mediaSequenceToStartTimeByType_.set(e.IMAGE,new Map),this.keyFormatsToDrmParsers_=new Map().set("com.apple.streamingkeydelivery",(t,i,r)=>this.fairplayDrmParser_(t,i,r)).set("urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",(t,i,r)=>this.widevineDrmParser_(t,i,r)).set("com.microsoft.playready",(t,i,r)=>this.playreadyDrmParser_(t,i,r)).set("urn:uuid:3d5e6d35-9b9a-41e8-b843-dd3c6e72c42c",(t,i,r)=>this.wiseplayDrmParser_(t,i,r)),this.variantUriSet_=new Set,this.uriToStreamInfosMap_=new Map,this.presentationTimeline_=null,this.masterPlaylistUri_="",this.manifestTextParser_=new Xn,this.minSequenceNumber_=-1,this.lowestSyncTime_=1/0,this.realProgramDateTimeByReference_=new WeakMap,this.usesProgramDateTime_=!1,this.streamsFinalized_=!1,this.codecInfoInManifest_=!1,this.updatePlaylistTimer_=new ae(()=>{if(this.mediaElement_&&!this.config_.continueLoadingWhenPaused&&(this.eventManager_.unlisten(this.mediaElement_,"timeupdate"),this.mediaElement_.paused)){this.eventManager_.listenOnce(this.mediaElement_,"timeupdate",()=>this.onUpdate_());return}this.onUpdate_()}),this.presentationType_=St.PresentationType_.VOD,this.manifest_=null,this.maxTargetDuration_=0,this.lastTargetDuration_=1/0,this.partialTargetDuration_=0,this.presentationDelay_=0,this.lowLatencyPresentationDelay_=0,this.operationManager_=new gi,this.groupIdToClosedCaptionsMap_=new Map,this.groupIdToCodecsMap_=new Map,this.mapTagToInitSegmentRefMap_=new Map,this.aesKeyInfoMap_=new Map,this.aesKeyMap_=new Map,this.identityKeyMap_=new Map,this.initSegmentToKidMap_=new Map,this.lowLatencyMode_=!1,this.lowLatencyByterangeOptimization_=!1,this.averageUpdateDuration_=new er(5),this.contentSteeringManager_=null,this.needsClosedCaptionsDetection_=!0,this.eventManager_=new ue,this.mediaElement_=null,this.startTime_=null,this.isPreloadFn_=()=>!1,this.psshToInitData_=new Map,this.chapterUris_=[],this.chapterStreamsMap_=new Map}configure(e,t){let i=this.playerInterface_&&e.updatePeriod!=this.config_.updatePeriod&&e.updatePeriod>=0;this.config_=e,t&&(this.isPreloadFn_=t),this.contentSteeringManager_&&this.contentSteeringManager_.configure(this.config_),i&&this.manifest_&&this.manifest_.presentationTimeline.isDynamic()&&this.updatePlaylistTimer_.tickNow()}async start(e,t){v.assert(this.config_,"Must call configure() before start()!"),this.playerInterface_=t,this.lowLatencyMode_=t.isLowLatencyMode();let i=await this.requestManifest_([e]).promise;return this.masterPlaylistUri_=i.uri,v.assert(i.data,"Response data should be non-null!"),await this.parseManifest_(i.data),v.assert(this.manifest_,"Manifest should be non-null"),this.manifest_}stop(){this.updatePlaylistTimer_&&(this.updatePlaylistTimer_.stop(),this.updatePlaylistTimer_=null);let e=[];return this.operationManager_&&(e.push(this.operationManager_.destroy()),this.operationManager_=null),this.playerInterface_=null,this.config_=null,this.variantUriSet_.clear(),this.manifest_=null,this.uriToStreamInfosMap_.clear(),this.groupIdToStreamInfosMap_.clear(),this.groupIdToCodecsMap_.clear(),this.globalVariables_.clear(),this.mapTagToInitSegmentRefMap_.clear(),this.aesKeyInfoMap_.clear(),this.aesKeyMap_.clear(),this.identityKeyMap_.clear(),this.initSegmentToKidMap_.clear(),this.psshToInitData_.clear(),this.contentSteeringManager_&&this.contentSteeringManager_.destroy(),this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),Promise.all(e)}async update(){if(!this.isDynamic_())return;let e=[],i=Array.from(this.uriToStreamInfosMap_.values()).filter(n=>!n.stream.isAudioMuxedInVideo&&n.stream.segmentIndex);if(i.length===0){p.warning("No active streams found during update");return}this.lastTargetDuration_=1/0,this.manifest_.gapCount=0;for(let n of i)e.push(this.updateStream_(n));e.push(this.parseChapters_()),await Promise.all(e);let r=Array.from(this.chapterStreamsMap_.values());for(let n of r)this.manifest_.chapterStreams.includes(n)||this.manifest_.chapterStreams.push(n);this.notifySegmentsForStreams_(i.map(n=>n.stream));let s=i.some(n=>n.hasEndList==!1);i.length&&!s&&(this.setPresentationType_(St.PresentationType_.VOD),this.determineDuration_()),s&&this.determineDuration_();for(let n of i)!n.stream.isAudioMuxedInVideo&&n.stream.segmentIndex&&!n.stream.segmentIndex.earliestReference()&&this.playerInterface_.disableStream(n.stream)}getMediaSequenceToStartTimeFor_(e){return this.isLive_()?this.mediaSequenceToStartTimeByType_.get(e.type):e.mediaSequenceToStartTime}async updateStream_(e){if(e.stream.isAudioMuxedInVideo)return;let t=[];for(let w of e.getUris()){let M=new Map;e.canBlockReload&&(e.nextMediaSequence>=0&&M.set("_HLS_msn",String(e.nextMediaSequence)),e.nextPart>=0&&M.set("_HLS_part",String(e.nextPart))),e.canSkipDateRanges?M.set("_HLS_skip","v2"):e.canSkipSegments&&M.set("_HLS_skip","YES"),t.push(fe.appendParams(w,M))}let i;try{i=await this.requestManifest_(t,!0).promise}catch(w){throw this.playerInterface_&&this.playerInterface_.disableStream(e.stream),w}if(!e.stream.segmentIndex)return;let r=this.manifestTextParser_.parsePlaylist(i.data);if(r.type!=Gi.MEDIA)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_PLAYLIST_HIERARCHY);let s=i.uri;s!=i.originalUri&&!e.getUris().includes(s)&&e.redirectUris.push(s);let n=he.filterTagsByName(r.tags,"EXT-X-DEFINE"),a=this.parseMediaVariables_(n,s),o=e.stream,c=this.getMediaSequenceToStartTimeFor_(e),{keyIds:d,drmInfos:u,encrypted:m,aesEncrypted:f}=await this.parseDrmInfo_(r,o.mimeType,e.getUris,a);!o.encrypted&&m&&!f&&(o.encrypted=!0),((w,M)=>w.size===M.size&&[...w].every(x=>M.has(x)))(o.keyIds,d)||(o.keyIds=d,o.drmInfos=u,this.playerInterface_.newDrmInfo(o));let _=i.uri!==i.originalUri,{segments:T,totalCount:S,bandwidth:b}=this.createSegments_(r,c,a,e.getUris,e.type,_,o.segmentIndex);b&&(o.bandwidth=b);let E=ur.createQualityInfo(o);for(let w of T)w.initSegmentReference&&(w.initSegmentReference.mediaQuality=E);if(T.length&&o.segmentIndex.mergeAndEvict(T,this.presentationTimeline_.getSegmentAvailabilityStart()),S){let w=he.getFirstTagWithNameAsNumber(r.tags,"EXT-X-MEDIA-SEQUENCE",0),M=he.getFirstTagWithName(r.tags,"EXT-X-SKIP"),x=M?Number(M.getAttributeValue("SKIPPED-SEGMENTS")):0,{nextMediaSequence:k,nextPart:L}=this.getNextMediaSequenceAndPart_(w,T,S);e.nextMediaSequence=k+x,e.nextPart=L;let V=c.get(w);o.segmentIndex.evict(V)}this.setProgramDateTimeRegionsFromIndex_(o,e.type);let C=o.segmentIndex.earliestReference();C&&(e.minTimestamp=C.startTime,T.length&&(e.maxTimestamp=T[T.length-1].endTime)),he.getFirstTagWithName(r.tags,"EXT-X-ENDLIST")&&(e.hasEndList=!0),this.determineLastTargetDuration_(r),this.processDateRangeTags_(r.tags,o.type,a,e.getUris)}onExpirationUpdated(e,t){}onInitialVariantChosen(e){}banLocation(e){this.contentSteeringManager_&&this.contentSteeringManager_.banLocation(e)}setMediaElement(e){this.mediaElement_=e}syncStreamsWithSequenceNumber_(e,t=!1){let i=this.minSequenceNumber_==-1;for(let r of e){let s=r.stream.segmentIndex;v.assert(s,"Only loaded streams should be synced");let n=this.getMediaSequenceToStartTimeFor_(r),a=s.earliestReference();if(a){Fe&&n.values().next().value!=a.startTime&&p.warning("Sequence number map is not ordered as expected!");for(let[o,c]of n)if(c==a.startTime){i&&(this.minSequenceNumber_=Math.max(this.minSequenceNumber_,o)),r.firstSequenceNumber=o;break}}}if(!(this.minSequenceNumber_<0)){p.debug("Syncing HLS streams against base sequence number:",this.minSequenceNumber_);for(let r of e){if(!this.ignoreManifestProgramDateTimeFor_(r.type)&&!t)continue;let s=r.stream.segmentIndex;if(s){let n=this.minSequenceNumber_-r.firstSequenceNumber;if(n>0){s.dropFirstReferences(n);let a=s.earliestReference();if(a){let o=-a.startTime;r.stream.segmentIndex.offset(o),this.offsetStreamInfo_(r,o)}}}}}}syncStreamsWithProgramDateTime_(e){if(this.lowestSyncTime_==1/0)for(let i of e){let r=i.stream.segmentIndex;v.assert(r,"Only loaded streams should be synced");let s=r.earliestReference();s!=null&&s.syncTime!=null&&(this.lowestSyncTime_=Math.min(this.lowestSyncTime_,s.syncTime))}let t=this.lowestSyncTime_;if(t!=1/0){p.debug("Syncing HLS streams against base time:",t);for(let i of this.uriToStreamInfosMap_.values()){if(this.ignoreManifestProgramDateTimeFor_(i.type))continue;let r=i.stream.segmentIndex;if(r!=null){let s=r.earliestReference();if(!s)continue;if(s.syncTime==null)p.alwaysError("Missing EXT-X-PROGRAM-DATE-TIME for stream",i.getUris(),"Expect AV sync issues!");else{let a=s.syncTime-t-s.startTime;this.offsetStreamInfo_(i,a);for(let o of r)o.syncAgainst(t)}}}}}offsetStreamInfo_(e,t){if(Math.abs(t)<.001)return;e.minTimestamp+=t,e.maxTimestamp+=t,v.assert(e.maxTimestamp>=0,"Negative maxTimestamp after adjustment!");let i=this.getMediaSequenceToStartTimeFor_(e);for(let[r,s]of i)i.set(r,s+t);p.debug("Offset",t,"applied to",e.getUris())}async parseManifest_(e){let t=R.ContentType;v.assert(this.masterPlaylistUri_,"Master playlist URI must be set before calling parseManifest_!");let i=this.manifestTextParser_.parsePlaylist(e),r=he.filterTagsByName(i.tags,"EXT-X-DEFINE"),s=[],n=[],a=[];v.assert(this.presentationTimeline_==null,"Presentation timeline created early!"),this.presentationTimeline_=new wi(null,0),this.presentationTimeline_.setStatic(!0);let o=()=>[this.masterPlaylistUri_],c=null,d=new Map;if(this.manifest_={presentationTimeline:this.presentationTimeline_,variants:s,textStreams:n,imageStreams:a,chapterStreams:[],offlineSessionIds:[],sequenceMode:this.config_.hls.sequenceMode,ignoreManifestTimestampsInSegmentsMode:this.config_.hls.ignoreManifestTimestampsInSegmentsMode,type:me.HLS,serviceDescription:null,nextUrl:null,periodCount:1,gapCount:0,isLowLatency:!1,startTime:this.startTime_},i.type==Gi.MEDIA){this.needsClosedCaptionsDetection_=!1;let u=he.filterTagsByName(i.tags,"EXT-X-DEFINE");d=this.parseMediaVariables_(u,this.masterPlaylistUri_),c=t.VIDEO;let m="",f="",g="",_=null,T=null,S=new Map,b=!1,E=null,C=!1,A=!0,w="Media Playlist",M=this.masterPlaylistUri_,x=await this.convertParsedPlaylistIntoStreamInfo_(this.globalId_++,d,i,o,m,c,g,A,w,_,S,E,C,T,b,f,M);if(this.uriToStreamInfosMap_.set(this.masterPlaylistUri_,x),x.stream){let L=ur.createQualityInfo(x.stream);x.stream.segmentIndex.forEachTopLevelReference(V=>{V.initSegmentReference&&(V.initSegmentReference.mediaQuality=L)})}c=x.stream.type;let k=!0;(this.config_.disableAudio&&x.type=="audio"||this.config_.disableVideo&&x.type=="video"&&!x.stream.codecs.includes(","))&&(k=!1),k&&s.push({id:0,language:this.getLanguage_(g),disabledUntilTime:0,primary:!0,audio:x.type=="audio"?x.stream:null,video:x.type=="video"?x.stream:null,bandwidth:x.stream.bandwidth||0,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]}),this.config_.hls.chaptersUri&&!this.chapterUris_.includes(this.config_.hls.chaptersUri)&&this.chapterUris_.push(this.config_.hls.chaptersUri),await this.parseChapters_()}else{this.parseMasterVariables_(r);let u=he.filterTagsByName(i.tags,"EXT-X-MEDIA"),m=he.filterTagsByName(i.tags,"EXT-X-STREAM-INF"),f=he.filterTagsByName(i.tags,"EXT-X-IMAGE-STREAM-INF"),g=he.filterTagsByName(i.tags,"EXT-X-I-FRAME-STREAM-INF"),_=he.filterTagsByName(i.tags,"EXT-X-SESSION-KEY"),T=he.filterTagsByName(i.tags,"EXT-X-SESSION-DATA"),S=he.filterTagsByName(i.tags,"EXT-X-CONTENT-STEERING");this.chapterUris_=this.processSessionData_(T),this.config_.hls.chaptersUri&&!this.chapterUris_.includes(this.config_.hls.chaptersUri)&&this.chapterUris_.push(this.config_.hls.chaptersUri),await this.processContentSteering_(S),this.config_.ignoreSupplementalCodecs||(m.push(...this.createTagsWithSupplementalCodecs_(m,!0)),g.push(...this.createTagsWithSupplementalCodecs_(g,!1))),this.parseCodecs_(m),this.parseClosedCaptions_(u);let b=this.parseIFrames_(g);s=await this.createVariantsForTags_(m,_,u,o,this.globalVariables_,b),n=this.parseTexts_(u),[a]=await Promise.all([this.parseImages_(f,g),this.parseChapters_()])}if(!this.playerInterface_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);if(this.determineStartTime_(i),i.type==Gi.MEDIA){if(this.isDynamic_()){this.changePresentationTimelineToLive_(i);let m=this.getUpdatePlaylistDelay_();this.updatePlaylistTimer_.tickAfter(m)}let u=Array.from(this.uriToStreamInfosMap_.values());this.finalizeStreams_(u),this.determineDuration_(),v.assert(c,"mediaPlaylistType should be non-null"),await this.processDateRangeTags_(i.tags,c,d,o)}if(this.manifest_.variants=s,this.manifest_.textStreams=n,this.manifest_.imageStreams=a,this.manifest_.chapterStreams=Array.from(this.chapterStreamsMap_.values()),this.manifest_.startTime=this.startTime_,!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing){let u=[];for(let m of this.manifest_.variants)m.audio&&m.audio.codecs===""&&u.push(m.audio.createSegmentIndex()),m.video&&m.video.codecs===""&&u.push(m.video.createSegmentIndex());await Promise.all(u)}this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_)}async getBasicInfoFromSegments_(e){let t=vt.getBasicInfoFromMimeType(this.config_.hls.mediaPlaylistFullMimeType);if(!e.length)return t;let{segment:i,segmentIndex:r}=this.getAvailableSegment_(e),s=i.getUris(),n=ct.getExtension(s[0]);if(n){let g=St.RAW_FORMATS_TO_MIME_TYPES_.get(n);if(g)return vt.getBasicInfoFromMimeType(g)}let a=await Promise.all([this.getInfoFromSegment_(i.initSegmentReference,0),this.getInfoFromSegment_(i,r)]),o=a[1].mimeType,c=a[0].data,d=a[1].data,u=["mp4","mp4a","m4s","m4i","m4a","m4f","cmfa","mp4v","m4v","cmfv","fmp4"],m=["audio/mp4","video/mp4","video/iso.segment"],f=i.initSegmentReference||m.includes(o);if(!f&&pt.probe(D.toUint8(d))){let g=vt.getBasicInfoFromTs(d,this.config_.disableAudio,this.config_.disableVideo,this.config_.disableText);if(g)return g}else if(f||u.includes(n)){let g=vt.getBasicInfoFromMp4(c,d,this.config_.disableText);if(g)return g}return o?vt.getBasicInfoFromMimeType(o):t}async getInfoFromSegment_(e,t){if(!e)return{mimeType:null,data:null};let i=K.RequestType.SEGMENT,r=ct.createSegmentRequest(e.getUris(),e.getStartByte(),e.getEndByte(),this.playerInterface_.getStreamingRetryParameters()),s=e instanceof Se?K.AdvancedRequestType.MEDIA_SEGMENT:K.AdvancedRequestType.INIT_SEGMENT,n=await this.makeNetworkRequest_(r,i,{type:s}).promise,a=n.data;e.aesKey&&(a=await vt.aesDecrypt(a,e.aesKey,t)),e instanceof Se?e.setSegmentData(a,!0):e.setSegmentData(a);let o=n.headers["content-type"];return o&&(o=o.split(";")[0].toLowerCase()),{mimeType:o,data:a}}determineDuration_(){if(v.assert(this.presentationTimeline_,"Presentation timeline not created!"),this.isLive_()){let e=this.getLiveDuration_()||0;isNaN(this.config_.availabilityWindowOverride)||(e=this.config_.availabilityWindowOverride),this.presentationTimeline_.setSegmentAvailabilityDuration(e)}else this.presentationTimeline_.setDuration(this.getMinDuration_());if(!this.presentationTimeline_.isStartTimeLocked())for(let e of this.uriToStreamInfosMap_.values()){if(!e.stream.segmentIndex||e.type!="audio"&&e.type!="video")continue;let t=e.stream.segmentIndex.earliestReference();if(t&&t.syncTime!=null){let i=t.syncTime;this.presentationTimeline_.setInitialProgramDateTime(i)}}this.presentationTimeline_.lockStartTime(),v.assert(!this.presentationTimeline_.usingPresentationStartTime(),"We should not be using the presentation start time in HLS!")}parseMasterVariables_(e){this.parseVariablesFromTags_(e,this.globalVariables_,this.masterPlaylistUri_)}parseMediaVariables_(e,t){let i=new Map;return this.parseVariablesFromTags_(e,i,t,!0),i}parseVariablesFromTags_(e,t,i,r=!1){let s;for(let n of e){let a=n.getAttributeValue("NAME"),o=n.getAttributeValue("VALUE"),c=n.getAttributeValue("QUERYPARAM");if(a&&o&&t.getOrInsert(a,o),c){s||(s=new URL(i).searchParams);let d=s.get(c);d&&!t.has(d)&&t.set(c,d)}if(r){let d=n.getAttributeValue("IMPORT");if(d){let u=this.globalVariables_.get(d);u&&t.set(d,u)}}}}groupTagsByKey_(e){let t={};for(let i of e){let r=i.getTagKey(!this.contentSteeringManager_);t[r]?t[r].push(i):t[r]=[i]}return t}createTagsWithSupplementalCodecs_(e,t){let i=[];for(let r of e){let s=he.getSupplementalCodecs(r);if(!s)continue;let n=r.attributes.map(a=>{let o=a.name,c=a.value;if(o=="CODECS"&&(c=s,t)){let d=a.value.split(",");if(d.length>1){let u=R.guessCodecsSafe(R.ContentType.AUDIO,d);u&&(c+=","+u)}}return new Fr(o,c)});i.push(new _r(r.id,r.name,n,null))}return i}parseCodecs_(e){let t=R.ContentType;for(let i of e){let r=i.getAttributeValue("AUDIO"),s=i.getAttributeValue("VIDEO"),n=i.getAttributeValue("SUBTITLES"),a=this.getCodecsForVariantTag_(i);if(n){let o=R.guessCodecsSafe(t.TEXT,a);v.assert(o!=null,"Text codecs should be valid."),this.groupIdToCodecsMap_.set(n,o),ye.remove(a,o)}if(r){let o=R.guessCodecsSafe(t.AUDIO,a);o||(o=this.config_.hls.defaultAudioCodec),this.groupIdToCodecsMap_.set(r,o)}if(s){let o=R.guessCodecsSafe(t.VIDEO,a);o||(o=this.config_.hls.defaultVideoCodec),this.groupIdToCodecsMap_.set(s,o)}}}processSessionData_(e){let t=[];for(let i of e){let r=i.getAttributeValue("DATA-ID"),s=i.getAttributeValue("URI"),n=i.getAttributeValue("LANGUAGE"),a=i.getAttributeValue("VALUE"),o=new Map().set("id",r);s&&o.set("uri",he.constructSegmentUris([this.masterPlaylistUri_],s,this.globalVariables_)[0]),n&&o.set("language",n),a&&o.set("value",a),r=="com.apple.hls.chapters"&&s&&t.push(o.get("uri"));let c=new U("sessiondata",o);this.playerInterface_&&this.playerInterface_.onEvent(c)}return t}async processContentSteering_(e){if(!this.playerInterface_||!this.config_)return;let t;for(let i of e){let r=i.getAttributeValue("PATHWAY-ID"),s=i.getAttributeValue("SERVER-URI");if(!(!r||!s)){this.contentSteeringManager_=new ss(this.playerInterface_),this.contentSteeringManager_.configure(this.config_),this.contentSteeringManager_.setBaseUris([this.masterPlaylistUri_]),this.contentSteeringManager_.setManifestType(me.HLS),this.contentSteeringManager_.setDefaultPathwayId(r),t=this.contentSteeringManager_.requestInfo(s);break}}await t}parseTexts_(e){let t=he.filterTagsByType(e,"SUBTITLES"),i=this.groupTagsByKey_(t),r=[];if(!this.config_.disableText)for(let n in i)try{r.push(this.createStreamInfoFromMediaTags_(i[n],new Map).stream)}catch(a){if(this.config_.hls.ignoreTextStreamFailures)continue;throw a}let s=R.ContentType.TEXT;for(let n of t){let a=n.getRequiredAttrValue("GROUP-ID"),o=this.groupIdToCodecsMap_.get(a);if(o){let c=this.groupIdToStreamInfosMap_.get(a);if(c)for(let d of c)d.stream.codecs=o,d.stream.mimeType=this.guessMimeTypeBeforeLoading_(s,o)||this.guessMimeTypeFallback_(s),this.setFullTypeForStream_(d.stream)}}return r.filter(n=>n)}setFullTypeForStream_(e){let t=new Set([O.getFullType(e.mimeType,e.codecs)]);e.segmentIndex&&e.segmentIndex.forEachTopLevelReference(i=>{i.mimeType&&t.add(O.getFullType(i.mimeType,e.codecs))}),e.fullMimeTypes=t}async parseImages_(e,t){let i=e.map(async s=>{if(this.config_.disableThumbnails)return null;try{return(await this.createStreamInfoFromImageTag_(s)).stream}catch(a){if(this.config_.hls.ignoreImageStreamFailures)return null;throw a}}).concat(t.map(s=>{if(this.config_.disableThumbnails)return null;try{let a=this.createStreamInfoFromIframeTag_(s),o=R.ContentType;return a.stream.type!==o.IMAGE?null:a.stream}catch(a){if(this.config_.hls.ignoreImageStreamFailures)return null;throw a}}));return(await Promise.all(i)).filter(s=>s)}async parseChapters_(){if(this.config_.disableChapters)return;let e=[];for(let t of this.chapterUris_)e.push(this.processChapters_(t));await Promise.all(e)}async processChapters_(e){let t=K.RequestType.SESSION_DATA,i=K.makeRequest([e],this.config_.retryParameters),r=await this.makeNetworkRequest_(i,t).promise,s=q.fromUTF8(r.data),n=JSON.parse(s),a=new Map;for(let o=0;o<n.length;o++){let c=n[o];if(!c.titles)continue;let d=[];if(c.images){for(let u of c.images)if(u.url){let m=he.constructSegmentUris([r.uri],u.url);for(let f of m){let g={type:u["image-category"],width:u["pixel-width"],height:u["pixel-height"],url:f};d.push(g)}}}for(let u of c.titles){let m={id:"",title:u.title,startTime:c["start-time"],endTime:c["start-time"],images:d};c.duration?m.endTime+=c.duration:o+1<n.length&&(m.endTime=n[o+1]["start-time"]),a.getOrInsertComputed(u.language,()=>[]).push(m)}}a.forEach((o,c)=>{let d=[];for(let f of o){let g=new Se(f.startTime,f.endTime,()=>[],0,null,null,0,0,1/0),_={title:f.title,images:f.images};g.setMetadata(_),d.push(g)}let u="text/plain",m=this.chapterStreamsMap_.getOrInsertComputed(c,()=>se.createStream({id:this.globalId_++,mimeType:u,kind:"",language:c,originalLanguage:c,type:R.ContentType.CHAPTER,external:!0}));m.segmentIndex?m.segmentIndex.mergeAndEvict(d,this.presentationTimeline_.getSegmentAvailabilityStart()):m.segmentIndex=new Ze(d)})}createStreamInfosFromMediaTags_(e,t){e=e.filter(r=>{let s=r.getAttributeValue("URI")||"",n=r.getAttributeValue("TYPE");return n!="SUBTITLES"&&(s!=""||n=="AUDIO"||n=="VIDEO")});let i=this.groupTagsByKey_(e);for(let r in i)this.createStreamInfoFromMediaTags_(i[r],t,!1)}parseIFrames_(e){return e.map(i=>{let r=this.createStreamInfoFromIframeTag_(i),s=R.ContentType;return r.stream.type!==s.VIDEO?null:r.stream}).filter(i=>i)}async createVariantsForTags_(e,t,i,r,s,n){let a=[],o=new Set;if(!this.config_.ignoreDrmInfo&&t.length>0)for(let u of t){let m=u.getRequiredAttrValue("METHOD"),f=u.getAttributeValue("KEYFORMAT")||"identity",g=null;if(m!="NONE"){if(this.isAesMethod_(m)){let _=he.constructSegmentUris(r(),u.getRequiredAttrValue("URI"),s),T=_.sort().join("");this.aesKeyMap_.getOrInsertComputed(T,()=>{let S=K.RequestType.KEY,b=K.makeRequest(_,this.config_.retryParameters);return this.makeNetworkRequest_(b,S).promise});continue}else if(f=="identity")g=await this.identityDrmParser_(u,"",r,null,s);else{let _=this.keyFormatsToDrmParsers_.get(f);g=_?await _(u,"",null):null}if(g){if(g.keyIds)for(let _ of g.keyIds)o.add(_);a.push(g)}else p.warning("Unsupported HLS KEYFORMAT",f)}}let c=this.groupTagsByKey_(e),d=[];for(let u in c){let m=c[u],f=m[0],g=this.getFrameRate_(f),_=Number(f.getRequiredAttrValue("BANDWIDTH"))||Number(f.getAttributeValue("AVERAGE-BANDWIDTH")),T=f.getAttributeValue("RESOLUTION"),[S,b]=T?T.split("x"):[null,null],E=f.getAttributeValue("VIDEO-RANGE"),C=f.getAttributeValue("REQ-VIDEO-LAYOUT");C&&C.includes(",")&&(C=C.split(",").filter(M=>M=="CH-STEREO"||M=="CH-MONO")[0]),C=C||"CH-MONO";let A=this.createStreamInfosForVariantTags_(m,i,T);v.assert(A.audio.length||A.video.length,"We should have created a stream!"),d.push(...this.createVariants_(A.audio,A.video,_,S,b,g,E,C,a,o,n))}return d.filter(u=>u!=null)}createStreamInfosForVariantTags_(e,t,i){let r=R.ContentType,s={audio:[],video:[]},n=new Map,a=new Set,o=new Set;for(let E of e){let C=E.getAttributeValue("AUDIO"),A=E.getAttributeValue("VIDEO");if(!C&&!A)continue;let w=E.getAttributeValue("PATHWAY-ID");C&&!a.has(C)&&(a.add(C),w&&n.set(C,w)),A&&!o.has(A)&&(o.add(A),w&&n.set(A,w)),p.debug("Guessing stream type for",E.toString())}let c=[...a,...o];if(c.length&&t.length){let E=t.filter(C=>c.includes(C.getRequiredAttrValue("GROUP-ID")));this.createStreamInfosFromMediaTags_(E,n)}s.audio.push(...this.getGroupStreamInfos_(a)),s.video.push(...this.getGroupStreamInfos_(o));let d=s.video.find(E=>E.stream.isAudioMuxedInVideo),u,m=!1,f=e.map(E=>E.getRequiredAttrValue("URI")),g=s.audio.find(E=>E&&E.getUris().find(C=>f.includes(C))),_=this.getCodecsForVariantTag_(e[0]),T=R.guessCodecsSafe(r.VIDEO,_),S=R.guessCodecsSafe(r.AUDIO,_),b=he.getSupplementalCodecs(e[0]);if(d?(p.debug("Guessing video (URI-less VIDEO Rendition)."),u=r.VIDEO,S&&T&&!s.audio.length&&(_=[[T,S].join(",")])):S&&!T?(u=r.AUDIO,p.debug("Guessing audio-only."),m=s.audio.length>0&&!s.audio.some(E=>E.stream.isAudioMuxedInVideo)):!s.audio.length&&!s.video.length&&S&&T?(p.debug("Guessing multiplexed audio+video."),u=r.VIDEO,_=[[T,S].join(",")]):s.audio.length&&g?(p.debug("Guessing audio-only."),u=r.AUDIO,m=!0):s.video.length&&!s.audio.length?(p.debug("Guessing audio-only."),u=r.AUDIO):(p.debug("Guessing video-only."),u=r.VIDEO),!m){let E=this.createStreamInfoFromVariantTags_(e,_,u,b),C=E.stream,A=u==r.AUDIO?s.audio:s.video,w=A.find(M=>M.stream.isAudioMuxedInVideo);if(C.type==u&&w){let M=w.stream;C.language=M.language,C.originalLanguage=M.originalLanguage,C.label=M.label,C.channelsCount=M.channelsCount,C.audioSamplingRate=M.audioSamplingRate,C.originalId=M.originalId,C.primary=M.primary,C.roles=M.roles,A.splice(A.indexOf(w),1,E)}else(C.type==r.AUDIO?s.audio:s.video).push(E)}return s.video=s.video.filter(E=>!E.stream.isAudioMuxedInVideo),s}getGroupStreamInfos_(e){if(!e.size)return[];let t=[...e].sort().join(",");return this.groupIdToStreamInfosMap_.get(t)||[]}getCodecsForVariantTag_(e){let t=e.getAttributeValue("CODECS")||"";if(this.codecInfoInManifest_=t.length>0,!this.codecInfoInManifest_&&!this.config_.hls.disableCodecGuessing){let r=[];this.config_.disableVideo||r.push(this.config_.hls.defaultVideoCodec),this.config_.disableAudio||r.push(this.config_.hls.defaultAudioCodec),t=r.join(",")}let i=t.split(/\s*,\s*/);return vt.codecsFiltering(i)}getChannelsCount_(e){let t=e.getAttributeValue("CHANNELS");if(!t)return null;let i=t.split("/")[0];return parseInt(i,10)}getSampleRate_(e){let t=e.getAttributeValue("SAMPLE-RATE");return t?parseInt(t,10):null}getFrameRate_(e){let t=e.getAttributeValue("FRAME-RATE");return t?parseFloat(t):null}isSpatialAudio_(e){let t=e.getAttributeValue("CHANNELS");if(!t)return!1;let i=t.split("/");return i.length!=2?!1:i[1]==="JOC"||i[1].includes("ATMOS")||i[1].includes("IMSA")}getClosedCaptions_(e,t){let i=R.ContentType,r=e.getAttributeValue("CLOSED-CAPTIONS");if(t==i.VIDEO){if(this.config_.disableText)return this.needsClosedCaptionsDetection_=!1,null;if(r){if(r!="NONE")return this.groupIdToClosedCaptionsMap_.get(r);this.needsClosedCaptionsDetection_=!1}else if(!r&&this.groupIdToClosedCaptionsMap_.size)for(let s of this.groupIdToClosedCaptionsMap_.keys())return this.groupIdToClosedCaptionsMap_.get(s)}return null}getLanguage_(e){return ve.normalize(e||"und")}getType_(e){let t=e.getRequiredAttrValue("TYPE").toLowerCase();return t=="subtitles"&&(t=R.ContentType.TEXT),t}createVariants_(e,t,i,r,s,n,a,o,c,d,u){let m=R.ContentType;for(let T of t)this.addVideoAttributes_(T.stream,r,s,n,a,o,null);let f=this.config_.disableVideo;(!t.length||f)&&(t=[null]),f&&(e=e.filter(T=>!T.stream.isAudioMuxedInVideo));let g=this.config_.disableAudio;(!e.length||g)&&(e=[null]);let _=[];for(let T of e)for(let S of t){let b=T?T.stream:null;b&&(b.drmInfos=c,b.keyIds=d);let E=S?S.stream:null;E&&(E.drmInfos=c,E.keyIds=d,this.config_.disableIFrames||se.setBetterIFrameStream(E,u)),E&&!b&&(E.bandwidth=i),!E&&b&&(b.bandwidth=i);let C=T?T.stream.drmInfos:null,A=S?S.stream.drmInfos:null,w=S?S.getUris().sort().join(","):"",M=T?T.getUris().sort().join(","):"",x=[];b&&b.codecs&&x.push(b.codecs),E&&E.codecs&&x.push(E.codecs);let k=[w,M,x.sort()].join("-");if(b&&E&&!de.areDrmCompatible(C,A)){p.warning("Incompatible DRM info in HLS variant. Skipping.");continue}if(this.variantUriSet_.has(k)){p.debug("Skipping variant which only differs in text streams.");continue}v.assert(!b||b.type==m.AUDIO,"Audio parameter mismatch!"),v.assert(!E||E.type==m.VIDEO,"Video parameter mismatch!");let L={id:this.globalId_++,language:b?b.language:"und",disabledUntilTime:0,primary:!!b&&b.primary||!!E&&E.primary,audio:b,video:E,bandwidth:i,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]};_.push(L),this.variantUriSet_.add(k)}return _}parseClosedCaptions_(e){let t=he.filterTagsByType(e,"CLOSED-CAPTIONS");this.needsClosedCaptionsDetection_=t.length==0;for(let i of t){v.assert(i.name=="EXT-X-MEDIA","Should only be called on media tags!");let r=i.getAttributeValue("LANGUAGE"),s=this.getLanguage_(r);if(!r){let o=i.getAttributeValue("NAME");o&&(s=o)}let n=i.getRequiredAttrValue("GROUP-ID"),a=i.getRequiredAttrValue("INSTREAM-ID").replace("SERVICE","svc");this.groupIdToClosedCaptionsMap_.get(n)||this.groupIdToClosedCaptionsMap_.set(n,new Map),this.groupIdToClosedCaptionsMap_.get(n).set(a,s)}}createStreamInfoFromMediaTags_(e,t,i=!0){let r=[],s=[],n=new Map;for(let L of e){v.assert(L.name=="EXT-X-MEDIA","Should only be called on media tags!");let V=++this.globalId_,ee=()=>St.FAKE_MUXED_URL_+V,oe=i?L.getRequiredAttrValue("URI"):L.getAttributeValue("URI")||ee(),le=L.getRequiredAttrValue("GROUP-ID");r.push(oe),s.push(le),n.set(le,oe);let H=L.getAttributeValue("PATHWAY-ID");H&&t.set(le,H)}let a=s.sort().join(","),o=e[0],c="",d=this.getType_(o);if(d==R.ContentType.TEXT&&(c=o.getAttributeValue("CODECS")||""),!c){for(let L of s)if(this.groupIdToCodecsMap_.has(L)){c=this.groupIdToCodecsMap_.get(L);break}}let u=he.getSupplementalCodecs(o),m=r.sort().join(","),f=m;if(d=="audio"&&a&&(f+=a),this.uriToStreamInfosMap_.has(f))return this.uriToStreamInfosMap_.get(f);let g=this.globalId_++;if(this.contentSteeringManager_)for(let[L,V]of n){let ee=t.get(L);ee&&this.contentSteeringManager_.addLocation(g,ee,V)}let _=o.getAttributeValue("LANGUAGE"),T=o.getAttributeValue("NAME"),b=o.getAttributeValue("DEFAULT")=="YES",E=d=="audio"?this.getChannelsCount_(o):null,C=d=="audio"?this.isSpatialAudio_(o):!1,A=o.getAttributeValue("CHARACTERISTICS"),M=o.getAttributeValue("FORCED")=="YES",x=d=="audio"?this.getSampleRate_(o):null,k=this.createStreamInfo_(g,r,c,d,_,b,T,E,null,A,M,x,C,u,m);return this.groupIdToStreamInfosMap_.has(a)?this.groupIdToStreamInfosMap_.get(a).push(k):this.groupIdToStreamInfosMap_.set(a,[k]),this.uriToStreamInfosMap_.set(f,k),k}async createStreamInfoFromImageTag_(e){v.assert(e.name=="EXT-X-IMAGE-STREAM-INF","Should only be called on image tags!");let t=R.ContentType.IMAGE,i=e.getRequiredAttrValue("URI"),r=e.getAttributeValue("CODECS","jpeg")||"",s=he.getSupplementalCodecs(e);if(this.uriToStreamInfosMap_.has(i))return this.uriToStreamInfosMap_.get(i);let n=e.getAttributeValue("LANGUAGE"),a=e.getAttributeValue("NAME"),o=e.getAttributeValue("CHARACTERISTICS"),c=i,d=this.createStreamInfo_(this.globalId_++,[i],r,t,n,!1,a,null,null,o,!1,null,!1,s,c),u=e.getAttributeValue("RESOLUTION");if(u){await d.stream.createSegmentIndex();let g=d.stream.segmentIndex.earliestReference().getTilesLayout();g&&(d.stream.width=Number(u.split("x")[0])*Number(g.split("x")[0]),d.stream.height=Number(u.split("x")[1])*Number(g.split("x")[1])),d.stream.closeSegmentIndex()}let m=e.getAttributeValue("BANDWIDTH");return m&&(d.stream.bandwidth=Number(m)),this.uriToStreamInfosMap_.set(i,d),d}createStreamInfoFromIframeTag_(e){v.assert(e.name=="EXT-X-I-FRAME-STREAM-INF","Should only be called on iframe tags!");let t=R.ContentType.VIDEO,i=e.getRequiredAttrValue("URI"),r=e.getAttributeValue("CODECS")||"",s=he.getSupplementalCodecs(e);if(r=="mjpg"&&(t=R.ContentType.IMAGE),this.uriToStreamInfosMap_.has(i))return this.uriToStreamInfosMap_.get(i);let n=e.getAttributeValue("LANGUAGE"),a=e.getAttributeValue("NAME"),o=e.getAttributeValue("CHARACTERISTICS"),c=i,d=this.createStreamInfo_(this.globalId_++,[i],r,t,n,!1,a,null,null,o,!1,null,!1,s,c);d.stream.isIframe=!0;let u=e.getAttributeValue("RESOLUTION"),[m,f]=u?u.split("x"):[null,null];d.stream.width=Number(m)||void 0,d.stream.height=Number(f)||void 0;let g=e.getAttributeValue("BANDWIDTH");return g&&(d.stream.bandwidth=Number(g)),this.uriToStreamInfosMap_.set(i,d),d}createStreamInfoFromVariantTags_(e,t,i,r){let s=this.globalId_++,n=[];for(let m of e){v.assert(m.name=="EXT-X-STREAM-INF","Should only be called on variant tags!");let f=m.getRequiredAttrValue("URI"),g=m.getAttributeValue("PATHWAY-ID");this.contentSteeringManager_&&g&&this.contentSteeringManager_.addLocation(s,g,f),n.push(f)}let a=n.sort().join(",")+t.sort().join(",");if(this.uriToStreamInfosMap_.has(a))return this.uriToStreamInfosMap_.get(a);let o=n.join(","),c=this.getClosedCaptions_(e[0],i),d=R.guessCodecs(i,t),u=this.createStreamInfo_(s,n,d,i,null,!1,null,null,c,null,!1,null,!1,r,o);return this.uriToStreamInfosMap_.set(a,u),u}createStreamInfo_(e,t,i,r,s,n,a,o,c,d,u,m,f,g,_){let T=this.makeStreamObject_(e,i,r,s,n,a,o,c,d,u,m,f,g,_);t.some(x=>x.startsWith(St.FAKE_MUXED_URL_))&&(T.isAudioMuxedInVideo=!0,r==R.ContentType.AUDIO&&(T.mimeType="video/mp2t",this.setFullTypeForStream_(T)));let b={stream:T,type:r,redirectUris:[],getUris:()=>{},minTimestamp:0,maxTimestamp:0,mediaSequenceToStartTime:new Map,canSkipSegments:!1,canSkipDateRanges:!1,canBlockReload:!1,hasEndList:!1,firstSequenceNumber:-1,nextMediaSequence:-1,nextPart:-1},E=()=>this.contentSteeringManager_&&t.length>1?this.contentSteeringManager_.getLocations(e):b.redirectUris.concat(he.constructUris([this.masterPlaylistUri_],t,this.globalVariables_));b.getUris=E;let C=async x=>{let k=R.ContentType;try{let L=await x.promise;if(x.aborted)return;let V=L.uri;V!=L.originalUri&&(b.getUris().includes(V)||b.redirectUris.push(V));let ee=this.manifestTextParser_.parsePlaylist(L.data);if(ee.type!=Gi.MEDIA)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_PLAYLIST_HIERARCHY);let oe=he.filterTagsByName(ee.tags,"EXT-X-DEFINE"),le=this.parseMediaVariables_(oe,V),H=void 0,J=!1;(!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing||this.needsClosedCaptionsDetection_&&r==k.VIDEO&&!this.config_.hls.disableClosedCaptionsDetection)&&ee.segments.length>0&&(this.needsClosedCaptionsDetection_=!1,J=!0);let Z=!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing,ce=this.isDynamic_(),W=await this.convertParsedPlaylistIntoStreamInfo_(e,le,ee,E,i,r,s,n,a,o,c,d,u,m,f,g,_,H,J,Z);if(x.aborted)return;let z=W.stream;this.determineStartTime_(ee),this.isDynamic_()&&!ce&&this.changePresentationTimelineToLive_(ee),b.minTimestamp=W.minTimestamp,b.maxTimestamp=W.maxTimestamp,b.canSkipSegments=W.canSkipSegments,b.canSkipDateRanges=W.canSkipDateRanges,b.canBlockReload=W.canBlockReload,b.hasEndList=W.hasEndList,b.mediaSequenceToStartTime=W.mediaSequenceToStartTime,b.nextMediaSequence=W.nextMediaSequence,b.nextPart=W.nextPart,T.segmentIndex=z.segmentIndex,T.encrypted=z.encrypted,T.drmInfos=z.drmInfos,T.keyIds=z.keyIds,T.mimeType=z.mimeType,T.bandwidth=T.bandwidth||z.bandwidth,T.codecs=T.codecs||z.codecs,T.closedCaptions=T.closedCaptions||z.closedCaptions,T.width=T.width||z.width,T.height=T.height||z.height,T.hdr=T.hdr||z.hdr,T.colorGamut=T.colorGamut||z.colorGamut,T.frameRate=T.frameRate||z.frameRate,T.language=="und"&&z.language!="und"&&(T.language=z.language),T.language=T.language||z.language,T.channelsCount=T.channelsCount||z.channelsCount,T.audioSamplingRate=T.audioSamplingRate||z.audioSamplingRate,this.setFullTypeForStream_(T),b.type==k.VIDEO&&W.type==k.AUDIO&&(!this.codecInfoInManifest_||O.RAW_FORMATS.includes(T.mimeType))&&this.reclassifyStreamInfo_(b,z),T.drmInfos.length&&this.playerInterface_.newDrmInfo(T);let ge=!1;if((!c&&T.closedCaptions||c&&T.closedCaptions&&c.size!=T.closedCaptions.size)&&(ge=!0),this.manifest_&&ge&&this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_),r==k.TEXT){let X=z.segmentIndex.earliestReference();X&&X.initSegmentReference&&(T.mimeType="application/mp4",this.setFullTypeForStream_(T))}let Y=ur.createQualityInfo(T);if(T.segmentIndex.forEachTopLevelReference(X=>{X.initSegmentReference&&(X.initSegmentReference.mediaQuality=Y)}),this.hasEnoughInfoToFinalizeStreams_())if(this.streamsFinalized_)this.finalizeStreams_([b]);else{this.streamsFinalized_=!0;let N=Array.from(this.uriToStreamInfosMap_.values()).filter(Ie=>Ie.stream.segmentIndex);this.finalizeStreams_(N),this.determineDuration_();let $=this.getUpdatePlaylistDelay_();$>0&&this.updatePlaylistTimer_.tickAfter($)}this.manifest_&&(this.manifest_.startTime=this.startTime_),await this.processDateRangeTags_(ee.tags,T.type,le,E)}catch(L){if(T.closeSegmentIndex(),L.code===h.Code.OPERATION_ABORTED)return;if(!this.playerInterface_.disableStream(T))throw L}},A=null,w,M=()=>{if(A)return A;if(T.isAudioMuxedInVideo){let x=new Ze([]);return T.segmentIndex=x,Promise.resolve()}return w=this.requestManifest_(b.getUris(),!0),A=new Promise(x=>{x(C(w))}),A};return T.createSegmentIndex=M,T.closeSegmentIndex=()=>{A&&!T.segmentIndex&&w.abort(),T.segmentIndex&&(T.segmentIndex.release(),T.segmentIndex=null),A=null},b}reclassifyStreamInfo_(e,t){let i=R.ContentType,r=e.stream,s=t.type,n=e.type;if(p.debug("Reclassifying HLS stream",r.id,"from",r.type,"to",s),this.isLive_()&&(this.mediaSequenceToStartTimeByType_.set(s,this.mediaSequenceToStartTimeByType_.get(n)),this.mediaSequenceToStartTimeByType_.set(n,new Map)),e.type=s,r.type=s,r.codecs=R.guessCodecsSafe(s,t.codecs.split(/\s*,\s*/))||"",this.setFullTypeForStream_(r),!!this.manifest_){for(let a of this.manifest_.variants)s==i.AUDIO&&a.video==r&&(a.video=null,a.audio||(a.audio=r,a.language=r.language));this.manifest_.variants=this.manifest_.variants.filter(a=>a.audio||a.video)}}getMinDuration_(){let e=1/0;for(let t of this.uriToStreamInfosMap_.values())t.stream.segmentIndex&&t.stream.type!="text"&&!t.stream.isAudioMuxedInVideo&&(e=Math.min(e,t.maxTimestamp));return e}getLiveDuration_(){let e=1/0,t=1/0;for(let i of this.uriToStreamInfosMap_.values())i.stream.segmentIndex&&i.stream.type!="text"&&!i.stream.isAudioMuxedInVideo&&(e=Math.min(e,i.maxTimestamp),t=Math.min(t,i.minTimestamp));return e-t}notifySegmentsForStreams_(e){let t=[];for(let i of e)i.segmentIndex&&i.segmentIndex.forEachTopLevelReference(r=>{t.push(r)});this.presentationTimeline_.notifySegments(t)}finalizeStreams_(e){if(!this.isDynamic_()){let o=this.getMinDuration_();for(let c of e)c.stream.segmentIndex.fit(0,o)}this.notifySegmentsForStreams_(e.map(o=>o.stream));let t=Array.from(this.uriToStreamInfosMap_.values()).filter(o=>o.stream.segmentIndex),i=R.ContentType,r=t.some(o=>o.stream.type==i.AUDIO),s=t.some(o=>o.stream.type==i.VIDEO),n=this.isLive_()&&!this.usesProgramDateTime_,a=!this.isDynamic_()&&this.usesProgramDateTime_&&!(r&&s);this.config_.hls.ignoreManifestProgramDateTime||n||a?this.syncStreamsWithSequenceNumber_(e,n):(this.syncStreamsWithProgramDateTime_(e),this.config_.hls.ignoreManifestProgramDateTimeForTypes.length>0&&this.syncStreamsWithSequenceNumber_(e))}ignoreManifestProgramDateTimeFor_(e){return this.config_.hls.ignoreManifestProgramDateTime?!0:this.config_.hls.ignoreManifestProgramDateTimeForTypes.includes(e)}hasEnoughInfoToFinalizeStreams_(){if(!this.manifest_||!this.manifest_.variants.length)return!1;let e=[],t=[];for(let i of this.manifest_.variants)i.video&&e.push(i.video),i.audio&&t.push(i.audio);return!(e.length>0&&!e.some(i=>i.segmentIndex)||t.length>0&&!t.some(i=>i.segmentIndex))}async convertParsedPlaylistIntoStreamInfo_(e,t,i,r,s,n,a,o,c,d,u,m,f,g,_,T,S,b=void 0,E=!0,C=!0){let A=n,w=i.segments||[],M=w.every(mt=>!!he.getFirstTagWithName(mt.tags,"EXT-X-GAP"));if(!w.length||M)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_EMPTY_MEDIA_PLAYLIST);this.determinePresentationType_(i),this.isDynamic_()&&this.determineLastTargetDuration_(i);let x=this.isLive_()?this.mediaSequenceToStartTimeByType_.get(n):new Map,{segments:k,bandwidth:L}=this.createSegments_(i,x,t,r,n,!0,null);!b&&n==R.ContentType.TEXT&&(b=await this.guessMimeType_(n,s,k),!s&&b=="application/mp4"&&k[0]&&!k[0].initSegmentReference&&(b="text/vtt"),!s&&b=="application/mp4"&&(E=!0,C=!0));let V=null,ee=null,oe=null,le=null,H=null;if(k.length>0&&E){let mt=await this.getBasicInfoFromSegments_(k);n!=mt.type&&this.isLive_()&&(this.mediaSequenceToStartTimeByType_.set(mt.type,this.mediaSequenceToStartTimeByType_.get(n)),this.mediaSequenceToStartTimeByType_.set(n,new Map)),n=mt.type,mt.type!=R.ContentType.VIDEO&&(a=mt.language),d=mt.channelCount,g=mt.sampleRate,this.config_.disableText||(u=mt.closedCaptions),ee=mt.height,V=mt.width,oe=mt.videoRange,le=mt.colorGamut,H=mt.frameRate,C&&(b=mt.mimeType,s=mt.codecs)}b||(b=await this.guessMimeType_(n,s,k)),A==R.ContentType.VIDEO&&O.RAW_FORMATS.includes(b)&&(p.debug("Raw format",b,"is audio-only, not video."),n=R.ContentType.AUDIO);let{drmInfos:J,keyIds:Z,encrypted:ce,aesEncrypted:W}=await this.parseDrmInfo_(i,b,r,t);if(ce&&!J.length&&!W)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_KEYFORMATS_NOT_SUPPORTED);let z=this.makeStreamObject_(e,s,n,a,o,c,d,u,m,f,g,_,T,S);z.encrypted=ce&&!W,z.drmInfos=J,z.keyIds=Z,z.mimeType=b,L&&(z.bandwidth=L),he.getFirstTagWithName(i.tags,"EXT-X-I-FRAMES-ONLY")&&(z.isIframe=!0),this.setFullTypeForStream_(z),n==R.ContentType.VIDEO&&(V||ee||oe||le)&&this.addVideoAttributes_(z,V,ee,H,oe,null,le),this.isDynamic_()&&this.determineLastTargetDuration_(i);let ge=k[0].startTime,X=k[k.length-1].endTime,N=new Ze(k);z.segmentIndex=N,this.setProgramDateTimeRegionsFromIndex_(z,n);let $=he.getFirstTagWithName(i.tags,"EXT-X-SERVER-CONTROL"),Ie=$?$.getAttribute("CAN-SKIP-UNTIL")!=null:!1,tt=!1;Ie&&(tt=$?$.getAttribute("CAN-SKIP-DATERANGES")!=null:!1);let _t=$?$.getAttribute("CAN-BLOCK-RELOAD")!=null:!1,bt=he.getFirstTagWithNameAsNumber(i.tags,"EXT-X-MEDIA-SEQUENCE",0),{nextMediaSequence:yt,nextPart:xt}=this.getNextMediaSequenceAndPart_(bt,k);return{stream:z,type:n,redirectUris:[],getUris:r,minTimestamp:ge,maxTimestamp:X,canSkipSegments:Ie,canSkipDateRanges:tt,canBlockReload:_t,hasEndList:!1,firstSequenceNumber:-1,nextMediaSequence:yt,nextPart:xt,mediaSequenceToStartTime:x}}getNextMediaSequenceAndPart_(e,t,i=t.length){let s=e+i-1,n=-1;if(!t.length)return s++,{nextMediaSequence:s,nextPart:n};let a=t[t.length-1],o=a.partialReferences;return a.partialReferences.length?(n=o.length-1,o[o.length-1].isPreload()||(s++,n=0),{nextMediaSequence:s,nextPart:n}):(s++,a.hasByterangeOptimization()&&(n=0),{nextMediaSequence:s,nextPart:n})}getReferenceForMediaSequence_(e,t,i){if(!e||!t.has(i))return null;let r=t.get(i),s=e.find(r);if(s==null)return null;let n=e.get(s);return n&&n.startTime==r?n:null}makeStreamObject_(e,t,i,r,s,n,a,o,c,d,u,m,f,g){let _=this.guessMimeTypeBeforeLoading_(i,t)||this.guessMimeTypeFallback_(i),T=[];if(c)for(let C of c.split(","))T.push(C);let S,b=null;i==R.ContentType.TEXT?T.includes("public.accessibility.transcribes-spoken-dialog")&&T.includes("public.accessibility.describes-music-and-sound")?S=R.TextStreamKind.CLOSED_CAPTION:S=R.TextStreamKind.SUBTITLE:T.includes("public.accessibility.describes-video")&&(b=me.AccessibilityPurpose.VISUALLY_IMPAIRED),!T.length&&S===R.TextStreamKind.SUBTITLE&&T.push(R.TextStreamKind.SUBTITLE);let E={id:this.globalId_++,originalId:g,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:_,codecs:t,supplementalCodecs:f,kind:i==R.ContentType.TEXT?R.TextStreamKind.SUBTITLE:void 0,encrypted:!1,drmInfos:[],keyIds:new Set,language:this.getLanguage_(r),originalLanguage:r,label:n,type:i,primary:s,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,frameRate:void 0,pixelAspectRatio:void 0,width:void 0,height:void 0,bandwidth:void 0,roles:T,forced:d,channelsCount:a,audioSamplingRate:u,spatialAudio:m,closedCaptions:o,hdr:void 0,colorGamut:void 0,videoLayout:void 0,tilesLayout:void 0,accessibilityPurpose:b,external:!1,fastSwitching:!1,fullMimeTypes:new Set,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1};return this.setFullTypeForStream_(E),E}async parseDrmInfo_(e,t,i,r){let s=new Map;if(!this.config_.ignoreDrmInfo&&e.segments)for(let d of e.segments){let u=he.filterTagsByName(d.tags,"EXT-X-KEY"),m=null;if(u.length){m=this.getInitSegmentReference_(e,d.tags,i,r);for(let f of u)s.set(f,m)}}let n=!1,a=!1,o=[],c=new Set;for(let[d,u]of s){let m=d,f=u,g=m.getRequiredAttrValue("METHOD");if(g!="NONE"){n=!0;let _=m.getAttributeValue("KEYFORMAT")||"identity",T=null;if(this.isAesMethod_(g)){a=!0;continue}else if(_=="identity")T=await this.identityDrmParser_(m,t,i,f,r);else{let S=this.keyFormatsToDrmParsers_.get(_);T=S?await S(m,t,f):null}if(T){if(T.keyIds)for(let S of T.keyIds)c.add(S);o.push(T)}else p.warning("Unsupported HLS KEYFORMAT",_)}}return{drmInfos:o,keyIds:c,encrypted:n,aesEncrypted:a}}parseAESDrmTag_(e,t,i,r){if(!window.crypto||!window.crypto.subtle)throw p.alwaysWarn("Web Crypto API is not available to decrypt AES. (Web Crypto only exists in secure origins like https)"),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_WEB_CRYPTO_API);let s=e.getRequiredAttrValue("METHOD"),n=0,a,o=e.getAttributeValue("IV","");if(s==="AES-256-GCM"){if(o)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_KEY_IV_FOR_GCM)}else if(!o)n=he.getFirstTagWithNameAsNumber(t.tags,"EXT-X-MEDIA-SEQUENCE",0);else if(a=ne.fromHex(o.substr(2)),a.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_IV_LENGTH);let c=he.constructSegmentUris(i(),e.getRequiredAttrValue("URI"),r),d=c.sort().join(""),u=`${e.toString()}-${n}-${d}`;return this.aesKeyInfoMap_.getOrInsertComputed(u,()=>{let m={bitsKey:128,blockCipherMode:"CBC",iv:a,firstMediaSequenceNumber:n};switch(s){case"AES-256":m.bitsKey=256;break;case"AES-256-CTR":m.bitsKey=256,m.blockCipherMode="CTR";break;case"AES-256-GCM":m.bitsKey=256,m.blockCipherMode="GCM";break}return m.fetchKey=async()=>{let f=await this.aesKeyMap_.getOrInsertComputed(d,()=>{let _=K.RequestType.KEY,T=K.makeRequest(c,this.config_.retryParameters);return this.makeNetworkRequest_(T,_).promise});if(!f.data||f.data.byteLength!=m.bitsKey/8)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_KEY_LENGTH);let g={name:m.blockCipherMode==="CBC"?"AES-CBC":m.blockCipherMode==="GCM"?"AES-GCM":"AES-CTR",length:m.bitsKey};m.cryptoKey=await window.crypto.subtle.importKey("raw",f.data,g,!0,["decrypt"]),m.fetchKey=void 0},m})}determineStartTime_(e){if(this.startTime_!=null)return;let t=he.getFirstTagWithName(e.tags,"EXT-X-START");t&&(this.startTime_=Number(t.getRequiredAttrValue("TIME-OFFSET")))}determinePresentationType_(e){let t=St.PresentationType_,i=he.getFirstTagWithName(e.tags,"EXT-X-PLAYLIST-TYPE"),r=he.getFirstTagWithName(e.tags,"EXT-X-ENDLIST"),s=i&&i.value=="VOD"||r,n=i&&i.value=="EVENT"&&!s;s?this.setPresentationType_(t.VOD):!s&&!n?this.setPresentationType_(t.LIVE):this.setPresentationType_(t.EVENT)}determineLastTargetDuration_(e){let t=1/0,i=e.segments;if(i.length){let o=i.length-1;for(;o>=0;){let c=i[o],d=he.getFirstTagWithName(c.tags,"EXTINF");if(d){t=he.getExtinfDuration(d);break}o--}}let r=this.getRequiredTag_(e.tags,"EXT-X-TARGETDURATION"),s=Number(r.value),n=he.getFirstTagWithName(e.tags,"EXT-X-PART-INF");n&&(this.partialTargetDuration_=Number(n.getRequiredAttrValue("PART-TARGET")));let a=he.getFirstTagWithName(e.tags,"EXT-X-SERVER-CONTROL");if(this.lowLatencyMode_&&this.partialTargetDuration_)this.lowLatencyByterangeOptimization_?this.partialTargetDuration_*5<=t?this.lastTargetDuration_=Math.min(this.partialTargetDuration_,this.lastTargetDuration_):this.lastTargetDuration_=Math.min(t,this.lastTargetDuration_):this.lastTargetDuration_=Math.min(this.partialTargetDuration_,this.lastTargetDuration_),this.lowLatencyPresentationDelay_=a?Number(a.getRequiredAttrValue("PART-HOLD-BACK")):0;else{this.lastTargetDuration_=Math.min(t,this.lastTargetDuration_);let o=a?a.getAttribute("HOLD-BACK"):null;this.presentationDelay_=o?Number(o.value):0}this.maxTargetDuration_=Math.max(s,this.maxTargetDuration_)}changePresentationTimelineToLive_(e){let t=0;if(this.config_.defaultPresentationDelay)t=this.config_.defaultPresentationDelay;else if(this.lowLatencyPresentationDelay_)t=this.lowLatencyPresentationDelay_;else if(this.presentationDelay_)t=this.presentationDelay_;else{let i=e.segments.length,r=Math.min(i,this.config_.hls.liveSegmentsDelay);for(let s=i-r;s<i;s++){let n=he.getFirstTagWithName(e.segments[s].tags,"EXTINF");n?t+=he.getExtinfDuration(n):t+=this.maxTargetDuration_}}this.startTime_&&this.startTime_<0&&(t=Math.min(-this.startTime_,t),this.startTime_+=t),this.presentationTimeline_.setPresentationStartTime(0),this.presentationTimeline_.setDelay(t),this.presentationTimeline_.setStatic(!1)}getInitSegmentReference_(e,t,i,r){let s=he.getFirstTagWithName(t,"EXT-X-MAP");if(!s)return null;let n=s.getRequiredAttrValue("URI"),a=he.constructSegmentUris(i(),n,r),o=[a.toString(),s.getAttributeValue("BYTERANGE","")].join("-");return this.mapTagToInitSegmentRefMap_.getOrInsertComputed(o,()=>{v.assert(s,"mapTag should be non-null");let c,d,u=!1;for(let m of t)if(m.name=="EXT-X-KEY"){let f=m.getRequiredAttrValue("METHOD");this.isAesMethod_(f)&&m.id<s.id?(u=!1,c=this.parseAESDrmTag_(m,e,i,r)):u=f!="NONE"}else m.name=="EXT-X-BYTERANGE"&&m.id<s.id&&(d=m);return this.createInitSegmentReference_(a,s,d,c,u)})}createInitSegmentReference_(e,t,i,r,s){let n=0,a=null,o=t.getAttributeValue("BYTERANGE");if(!o&&i&&(o=i.value),o){let d=o.split("@"),u=Number(d[0]);if(n=Number(d[1]),a=n+u-1,r){let m=a+1-n;m%16&&(a+=16-m%16)}}return new Tt(()=>e,n,a,null,null,null,r,s)}createSegmentReference_(e,t,i,r,s,n,a,o,c,d){let u=i.tags,m=he.getFirstTagWithName(u,"EXTINF"),f=0,g=0,_=null;i.partialSegments.length&&(this.manifest_.isLowLatency=!0);let T=null;if(!this.config_.hls.ignoreManifestProgramDateTime){let le=he.getFirstTagWithName(u,"EXT-X-PROGRAM-DATE-TIME");le&&le.value&&(T=I.parseDate(le.value),v.assert(T!=null,"EXT-X-PROGRAM-DATE-TIME format not valid"),this.usesProgramDateTime_=!0)}let S=Se.Status.AVAILABLE;if(he.getFirstTagWithName(u,"EXT-X-GAP")&&(this.manifest_.gapCount++,S=Se.Status.MISSING),!m){if(i.partialSegments.length==0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_REQUIRED_TAG_MISSING,"EXTINF");if(!this.lowLatencyMode_)return null}let b=[],E=!1,C=null,A=!1,w=!1;if(this.lowLatencyMode_&&i.partialSegments.length){let le=e&&window.ReadableStream&&this.config_.hls.allowLowLatencyByteRangeOptimization,H=T;for(let J=0;J<i.partialSegments.length;J++){let Z=i.partialSegments[J],ce=J==0?t:b[b.length-1],W=J==0?r:ce.endTime,z=Number(Z.getAttributeValue("DURATION"))||this.partialTargetDuration_;if(!z)continue;let ge=W+z,Y=0,X=null;if(Z.name=="EXT-X-PRELOAD-HINT"){let yt=Z.getAttributeValue("BYTERANGE-START");Y=yt?Number(yt):0;let xt=Z.getAttributeValue("BYTERANGE-LENGTH");xt?X=Y+Number(xt)-1:Y&&(X=Number.MAX_SAFE_INTEGER)}else{let yt=Z.getAttributeValue("BYTERANGE");[Y,X]=this.parseByteRange_(ce,yt)}let N=Z.getAttributeValue("URI");if(!N)continue;let $=Se.Status.AVAILABLE;Z.getAttributeValue("GAP")=="YES"&&(this.manifest_.gapCount++,$=Se.Status.MISSING,A=!0);let Ie=null,tt=()=>(Ie==null&&(v.assert(N,"Partial uri should be defined!"),Ie=he.constructSegmentUris(o(),N,s)),Ie);le&&Y>=0&&X!=null&&(C=tt,E=!0);let _t=new Se(W,ge,tt,Y,X,e,0,0,1/0,[],"",null,H,$,d);Z.name=="EXT-X-PRELOAD-HINT"&&(_t.markAsPreload(),w=!0),Z.getAttributeValue("INDEPENDENT")!="YES"&&J>0&&_t.markAsNonIndependent();let bt=c;if(!bt){if(b.length&&b[0].mimeType)bt=b[0].mimeType;else if(N){let yt=ct.getExtension(N);bt=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(a).get(yt)||null}}bt&&(_t.mimeType=bt,St.MIME_TYPES_WITHOUT_INIT_SEGMENT_.has(bt)&&(_t.initSegmentReference=null)),b.push(_t),H&&(H+=z)}}if(m){let le=he.getExtinfDuration(m);if(le==0)return null;f=r+le}else if(b.length)f=b[b.length-1].endTime;else return null;E&&(A||b[0].startByte!=0?(E=!1,C=null):b=[]);let M=he.getFirstTagWithName(u,"EXT-X-BYTERANGE");M?[g,_]=this.parseByteRange_(t,M.value):b.length&&(g=b[0].startByte,_=b[b.length-1].endByte);let x="",k=null;if(a==R.ContentType.IMAGE){x="1x1";let le=he.getFirstTagWithName(u,"EXT-X-TILES");if(le){x=le.getRequiredAttrValue("LAYOUT");let H=le.getAttributeValue("DURATION");H&&(k=Number(H))}}let L=null,V=()=>C?C():(L==null&&(L=he.constructSegmentUris(o(),i.verbatimSegmentUri,s)),L||[]),ee=b.length>0&&!!i.verbatimSegmentUri,oe=new Se(r,f,V,g,_,e,0,0,1/0,b,x,k,T,S,d,ee);return c&&(oe.mimeType=c,St.MIME_TYPES_WITHOUT_INIT_SEGMENT_.has(c)&&(oe.initSegmentReference=null)),E&&(this.lowLatencyByterangeOptimization_=!0,oe.markAsByterangeOptimization(),w&&oe.markAsPreload()),oe}parseByteRange_(e,t){let i=0,r=null;if(t){let s=t.split("@"),n=Number(s[0]);s[1]?i=Number(s[1]):(v.assert(e,"Cannot refer back to previous HLS segment!"),i=e.endByte+1),r=i+n-1}return[i,r]}async processDateRangeTags_(e,t,i,r){let s=R.ContentType;if(t!=s.VIDEO&&t!=s.AUDIO)return;let n=this.presentationTimeline_.getInitialProgramDateTime();if(n==null||this.ignoreManifestProgramDateTimeFor_(t))return;let a=he.filterTagsByName(e,"EXT-X-DATERANGE");a=a.filter(c=>c.getAttribute("START-DATE")!=null).sort((c,d)=>{let u=c.getRequiredAttrValue("START-DATE"),m=d.getRequiredAttrValue("START-DATE");return u<m?-1:u>m?1:0});let o=[];for(let c=0;c<a.length;c++){let d=a[c];try{let u=d.getRequiredAttrValue("START-DATE"),m=I.parseDate(u);if(isNaN(m))continue;v.assert(m!=null,"Start date should not be null!");let f=Math.max(0,m-n),g=null,_=d.getAttributeValue("END-DATE");if(_){let A=I.parseDate(_);if(!isNaN(A)&&(v.assert(A!=null,"End date should not be null!"),g=A-n,g<0))continue}if(g==null){let A=d.getAttributeValue("DURATION")||d.getAttributeValue("PLANNED-DURATION");if(A){let w=parseFloat(A);if(isNaN(w)||(g=f+w),m-n+w<0)continue}}let T=d.getAttributeValue("CLASS")||"com.apple.quicktime.HLS",S=d.getAttributeValue("END-ON-NEXT")=="YES";if(g==null&&S){for(let A=c+1;A<a.length;A++){let w=a[A].getAttributeValue("CLASS")||"com.apple.quicktime.HLS";if(T!=w)continue;let M=a[A].getRequiredAttrValue("START-DATE"),x=I.parseDate(M);if(!isNaN(x)&&x&&x>m){g=Math.max(0,x-n);break}}if(g==null)continue}let b=["CLASS","START-DATE","END-DATE","DURATION","END-ON-NEXT"],E=[];for(let A of d.attributes){if(b.includes(A.name))continue;let w=he.variableSubstitution(A.value,i);(A.name=="X-ASSET-URI"||A.name=="X-ASSET-LIST")&&(w=he.constructSegmentUris(r(),A.value,i)[0]);let M={key:A.name,description:"",data:w,mimeType:null,pictureType:null};E.push(M)}let C={schemeIdUri:T,value:"",startTime:f,endTime:g!=null?g:1/0,id:d.getRequiredAttrValue("ID"),timescale:1,eventNode:null,urlParams:void 0,values:E};if(this.playerInterface_.onTimelineRegionAdded(C),E.length>1){let A=this.playerInterface_.onMetadata(T,f,g,E),w=!1,M=E.find(x=>x.key=="CUE");if(M&&M.data.includes("PRE")&&(w=!0),g!=null&&!w){let x;this.manifest_.startTime!=null?x=this.manifest_.startTime:this.isDynamic_()?x=this.manifest_.presentationTimeline.getSeekRangeEnd():x=this.manifest_.presentationTimeline.getSeekRangeStart(),w=f<=x&&g>=x}w&&o.push(A)}}catch(u){p.warning("Ignoring DATERANGE with errors",d.toString())}}o.length&&await Promise.all(o)}createSegments_(e,t,i,r,s,n,a){let o=e.segments;v.assert(o.length,"Playlist should have segments!");let c=null,d=null,u=null,m=null,f,g=he.getFirstTagWithNameAsNumber(e.tags,"EXT-X-DISCONTINUITY-SEQUENCE",-1),_=he.getFirstTagWithNameAsNumber(e.tags,"EXT-X-MEDIA-SEQUENCE",0),T=he.getFirstTagWithName(e.tags,"EXT-X-SKIP"),S=T?Number(T.getAttributeValue("SKIPPED-SEGMENTS")):0,b=_+S,E=0;this.isLive_()&&t.has(b)&&(E=t.get(b)),E===0&&this.isLive_()&&t.size>0&&!t.has(b)&&this.presentationTimeline_.getPresentationStartTime()!=null&&(E=this.presentationTimeline_.getSegmentAvailabilityStart());let C=[],A=[],w=null,M=null,x=[],k=0;if(!n&&a){k=o.length;for(let H=0;H<o.length;H++){let J=_+S+H;if(!t.has(J)){k=H;break}if(o[H].partialSegments.length){k=H;break}if(this.lowLatencyMode_){let Z=he.getFirstTagWithName(o[H].tags,"EXTINF");if(Z){let ce=he.getExtinfDuration(Z),W=this.getReferenceForMediaSequence_(a,t,J);if(W&&Math.abs(W.endTime-W.startTime-ce)>.001){k=H;break}}}}if(k>0){let H=_+S+k-1;w=this.getReferenceForMediaSequence_(a,t,H),w?(M=w,p.debug("HLS live update: reusing",k,"known segment references and building only the new tail.")):(p.debug("HLS live update: full playlist rebuild selected for overlap recovery."),k=0)}}let L=M;!L&&a&&(L=this.getReferenceForMediaSequence_(a,t,_+S)||a.get(a.getNumEvicted()+a.getNumReferences()-1));let V=H=>{let J=ct.getExtension(H);if(!J)return null;let ce=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(s).get(J);return ce||(ce=St.RAW_FORMATS_TO_MIME_TYPES_.get(J)),ce};for(let H=0;H<o.length;H++){let J=o[H],Z=he.getFirstTagWithName(J.tags,"EXT-X-MAP");Z&&Z.id!==d&&(c=this.getInitSegmentReference_(e,J.tags,r,i),d=Z.id);let ce=J.verbatimSegmentUri,W="";ce&&(W=ct.getExtension(ce)),W!==m&&(u=V(ce),m=W);let z=H==0?E:w.endTime;b=_+S+H,he.getFirstTagWithName(J.tags,"EXT-X-DISCONTINUITY")&&(g++,H>=k&&w&&w.initSegmentReference&&(w.initSegmentReference.boundaryEnd=z));for(let N of J.tags)N.name=="EXT-X-KEY"&&(this.isAesMethod_(N.getRequiredAttrValue("METHOD"))?f=this.parseAESDrmTag_(N,e,r,i):f=void 0);if(H<k)continue;let Y=n||!t.has(b);t.set(b,z);let X=this.createSegmentReference_(c,w,J,z,i,e,s,r,u,f);if(X){let N=he.getFirstTagWithNameAsNumber(J.tags,"EXT-X-BITRATE");if(N)x.push({bitrate:N,duration:X.endTime-X.startTime}),X.bandwidth=N;else if(X.endByte){let $=X.getSize();if($){let Ie=X.endTime-X.startTime,tt=$*8/Ie/1e3;x.push({bitrate:tt,duration:Ie}),X.bandwidth=tt}}else if(x.length){let $=x[x.length-1];$.duration+=X.endTime-X.startTime,X.bandwidth=$.bitrate}if(X.bandwidth)for(let $ of X.partialReferences)$.bandwidth=X.bandwidth;w=X,X.discontinuitySequence=g,this.ignoreManifestProgramDateTimeFor_(s)&&this.minSequenceNumber_!=null&&b<this.minSequenceNumber_||(C.push(X),(Y||!n)&&A.push(X))}}let ee;if(x.length){let H=x.reduce((J,Z)=>J+Z.duration,0);ee=Math.round(x.reduce((J,Z)=>J+Z.bitrate*Z.duration,0)/H*1e3)}let oe=!!(M!=null&&M.syncTime)||C.some(H=>H.syncTime!=null);if(oe)for(let H=0;H<C.length;H++){let J=C[H];if(J.syncTime!=null)continue;let Z=0,ce=H,W=()=>{let X=C[ce];if(X){if(X.syncTime!=null)return X.syncTime+Z;Z-=X.endTime-X.startTime,ce+=1}return null},z=0,ge=H,Y=()=>{let X=C[ge];if(X){if(X!=J&&(z+=X.endTime-X.startTime),X.syncTime!=null)return X.syncTime+z;ge-=1}else if(M&&M.syncTime!=null)return M.syncTime+(M.endTime-M.startTime)+z;return null};for(;J.syncTime==null;)J.syncTime=Y(),J.syncTime==null&&(J.syncTime=W())}if(oe){let H=0,J=M;if(L&&L.syncTime!=null){let Z=this.realProgramDateTimeByReference_.get(L);Z!=null&&(H=Z-L.syncTime)}for(let Z of C){if(Z.syncTime!=null){if(this.realProgramDateTimeByReference_.set(Z,Z.syncTime),J&&J.syncTime!=null&&J.discontinuitySequence!=Z.discontinuitySequence){let W=J.syncTime+(J.endTime-J.startTime),ge=Z.syncTime-W-H;Math.abs(ge)>1&&(H+=ge)}Z.syncTime-=H}let ce=Z.syncTime;for(let W of Z.partialReferences)W.syncTime=ce,ce+=W.endTime-W.startTime;J=Z}}let le=this.lowestSyncTime_;if(oe&&le!=1/0&&!this.ignoreManifestProgramDateTimeFor_(s))for(let H of C)H.syncAgainst(le);return{segments:n?C:A,totalCount:k+C.length,bandwidth:ee}}setProgramDateTimeRegionsFromIndex_(e,t){if(t!=R.ContentType.VIDEO||this.ignoreManifestProgramDateTimeFor_(t)||!e.segmentIndex)return;let i=[],r=null;for(let s of e.segmentIndex){if(!s||s.syncTime==null)continue;let n=this.realProgramDateTimeByReference_.get(s);if(n==null)continue;let a=n-s.syncTime;(r==null||Math.abs(a-r)>.001)&&i.push({start:s.startTime,pdt:n}),r=a}this.presentationTimeline_.setProgramDateTimeRegions(i)}guessMimeTypeBeforeLoading_(e,t){if(e==R.ContentType.TEXT){if(t=="vtt"||t=="wvtt")return"text/vtt";if(t&&t!=="")return"application/mp4"}return e==R.ContentType.IMAGE&&(!t||t=="jpeg")?"image/jpeg":e==R.ContentType.AUDIO&&t=="mp4a.40.34"?"audio/mpeg":t=="mjpg"?"application/mp4":null}guessMimeTypeFallback_(e){return e==R.ContentType.TEXT?"text/vtt":St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(e).get("mp4")}getAvailableSegment_(e){v.assert(e.length,"Should have segments!");let t=this.isLive_()?Math.trunc((e.length-1)/2):0,i=e[t];for(;i.getStatus()==Se.Status.MISSING&&t+1<e.length;)t++,i=e[t];return{segment:i,segmentIndex:t}}async guessMimeType_(e,t,i){let r=K.RequestType.SEGMENT,{segment:s}=this.getAvailableSegment_(i);if(s.status==Se.Status.MISSING)return this.guessMimeTypeFallback_(e);let n,a=s.getUris(),o=ct.getExtension(a[0]);if(o){let g=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(e).get(o);if(g||(g=St.RAW_FORMATS_TO_MIME_TYPES_.get(o),g))return g}if(n=this.guessMimeTypeBeforeLoading_(e,t),n)return n;let c,d=K.AdvancedRequestType.MEDIA_SEGMENT,u=K.makeRequest(a,this.playerInterface_.getStreamingRetryParameters()),m;try{u.method="HEAD",m=await this.makeNetworkRequest_(u,r,{type:d}).promise,c=m.headers["content-type"]}catch(f){f&&(f.code==h.Code.HTTP_ERROR||f.code==h.Code.BAD_HTTP_STATUS)&&(u.method="GET",this.config_.hls.allowRangeRequestsToGuessMimeType&&(u.headers.Range="bytes=0-0"),m=await this.makeNetworkRequest_(u,r,{type:d}).promise,c=m.headers["content-type"])}return c&&(n=c.toLowerCase().split(";")[0],this.isGenericBinaryMimeType_(n)&&(m.data.byteLength||(u.method="GET",m=await this.makeNetworkRequest_(u,r,{type:d}).promise),pt.probe(D.toUint8(m.data))&&(n="video/mp2t")),!this.isGenericBinaryMimeType_(n))?n:this.guessMimeTypeFallback_(e)}isGenericBinaryMimeType_(e){return St.GENERIC_BINARY_MIME_TYPES_.includes(e)}getRequiredTag_(e,t){let i=he.getFirstTagWithName(e,t);if(!i)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_REQUIRED_TAG_MISSING,t);return i}addVideoAttributes_(e,t,i,r,s,n,a){e&&(e.width=Number(t)||void 0,e.height=Number(i)||void 0,e.frameRate=r||void 0,e.hdr=s||void 0,e.videoLayout=n||void 0,e.colorGamut=a||void 0)}requestManifest_(e,t){let i=K.RequestType.MANIFEST,r=K.makeRequest(e,this.config_.retryParameters),s=t?K.AdvancedRequestType.MEDIA_PLAYLIST:K.AdvancedRequestType.MASTER_PLAYLIST;return this.makeNetworkRequest_(r,i,{type:s})}async onUpdate_(){if(p.info("Updating manifest..."),v.assert(this.getUpdatePlaylistDelay_()>0,"We should only call |onUpdate_| when we are suppose to be updating."),!!this.playerInterface_){try{let e=Date.now();await this.update();let t=Date.now();if(this.isDynamic_()){let i=(t-e)/1e3;this.averageUpdateDuration_.sample(1,i);let r=this.config_.updatePeriod>0?this.config_.updatePeriod:this.getUpdatePlaylistDelay_(),s=Math.max(0,r-this.averageUpdateDuration_.getEstimate());isFinite(s)?this.updatePlaylistTimer_.tickAfter(s):this.updatePlaylistTimer_.tickAfter(1)}}catch(e){if(!this.playerInterface_)return;if(v.assert(e instanceof h,"Should only receive a Shaka error"),this.config_.raiseFatalErrorOnManifestUpdateRequestFailure){this.playerInterface_.onError(e);return}e.severity=h.Severity.RECOVERABLE,this.playerInterface_.onError(e),this.updatePlaylistTimer_.tickAfter(.1)}this.playerInterface_&&this.playerInterface_.onManifestUpdated()}}isDynamic_(){let e=St.PresentationType_;return this.presentationType_!=e.VOD}isLive_(){let e=St.PresentationType_;return this.presentationType_==e.LIVE}getUpdatePlaylistDelay_(){return this.lastTargetDuration_}setPresentationType_(e){this.presentationType_=e,this.presentationTimeline_&&this.presentationTimeline_.setStatic(!this.isDynamic_()),this.isDynamic_()||this.updatePlaylistTimer_.stop()}makeNetworkRequest_(e,t,i){if(!this.operationManager_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);i||(i={}),i.isPreload=this.isPreloadFn_();let r=this.playerInterface_.networkingEngine.request(t,e,i);return this.operationManager_.manage(r),r}isAesMethod_(e){return e=="AES-128"||e=="AES-256"||e=="AES-256-CTR"||e=="AES-256-GCM"}async fairplayDrmParser_(e,t,i){if(t=="video/mp2t")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED);if(de.isMediaKeysPolyfilled("apple"))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED);let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("FairPlay in HLS is only supported with [",s.join(", "),"], not",r),null;let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=R.createDrmInfo("com.apple.fps",n,null,a),c=hr.defaultGetKeyId(a);return!c&&i&&(c=await this.getKeyIdFromInitSegment_(i)),c&&o.keyIds.add(c),o}widevineDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("Widevine in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=a.split("?")[0],d=this.psshToInitData_.getOrInsertComputed(c,()=>D.toUint8(o.data)),u=R.createDrmInfo("com.widevine.alpha",n,[{initDataType:"cenc",initData:d}],void 0,o.typeInfoList),m=e.getAttributeValue("KEYID");if(m){let f=m.toLowerCase();v.assert(f.startsWith("0x"),"Incorrect KEYID format!"),u.keyIds.add(f.substr(2))}return Promise.resolve(u)}playreadyDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("PlayReady in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=D.toUint8(o.data),d=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),u=new Set,f=ti.createPssh(c,d,u,0),g=R.createDrmInfo("com.microsoft.playready",n,[{initDataType:"cenc",initData:f}],void 0,o.typeInfoList),_=I.parseXmlString(["<PLAYREADY>",ne.toBase64(c),"</PLAYREADY>"].join(`
707
+ `));return _&&(g.licenseServerUri=Ri.getLicenseUrl(_)),Promise.resolve(g)}wiseplayDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("WisePlay in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=a.split("?")[0],d=this.psshToInitData_.getOrInsertComputed(c,()=>D.toUint8(o.data)),u=R.createDrmInfo("com.huawei.wiseplay",n,[{initDataType:"cenc",initData:d}],void 0,o.typeInfoList),m=e.getAttributeValue("KEYID");if(m){let f=m.toLowerCase();v.assert(f.startsWith("0x"),"Incorrect KEYID format!"),u.keyIds.add(f.substr(2))}return Promise.resolve(u)}async identityDrmParser_(e,t,i,r,s){if(t=="video/mp2t")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED);let n=e.getRequiredAttrValue("METHOD"),a=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!a.includes(n))return p.error("Identity (ClearKey) in HLS is only supported with [",a.join(", "),"], not",n),null;let o=he.constructSegmentUris(i(),e.getRequiredAttrValue("URI"),s),c;if(o[0].startsWith("data:text/plain;base64,"))c=ne.toHex(ne.fromBase64(o[0].split("data:text/plain;base64,").pop()));else{let f=o.sort().join(""),g=await this.identityKeyMap_.getOrInsertComputed(f,()=>{let _=K.RequestType.KEY,T=K.makeRequest(o,this.config_.retryParameters);return this.makeNetworkRequest_(T,_).promise});c=ne.toHex(g.data)}let d="00000000000000000000000000000000";if(r){let f=await this.getKeyIdFromInitSegment_(r);f&&(d=f)}let u=new Map;u.set(d,c);let m="cenc";return n=="SAMPLE-AES"&&(m="cbcs"),R.createDrmInfoFromClearKeys(u,m)}async getKeyIdFromInitSegment_(e){let t=null;if(this.initSegmentToKidMap_.has(e))t=this.initSegmentToKidMap_.get(e);else{let i=ct.createSegmentRequest(e.getUris(),e.getStartByte(),e.getEndByte(),this.playerInterface_.getStreamingRetryParameters()),r=K.RequestType.SEGMENT,s=K.AdvancedRequestType.INIT_SEGMENT,n=await this.makeNetworkRequest_(i,r,{type:s}).promise;e.setSegmentData(n.data),t=vt.getDefaultKID(n.data),this.initSegmentToKidMap_.set(e,t)}return t}};l(St,"GENERIC_BINARY_MIME_TYPES_",["application/octet-stream","binary/octet-stream"]),l(St,"PresentationType_",{VOD:"VOD",EVENT:"EVENT",LIVE:"LIVE"}),l(St,"FAKE_MUXED_URL_","shaka://hls-muxed");var Ut=St;Ut.RAW_FORMATS_TO_MIME_TYPES_=new Map().set("aac","audio/aac").set("ac3","audio/ac3").set("ec3","audio/ec3").set("mp3","audio/mpeg");Ut.AUDIO_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","audio/mp4").set("mp4a","audio/mp4").set("m4s","audio/mp4").set("m4i","audio/mp4").set("m4a","audio/mp4").set("m4f","audio/mp4").set("cmfa","audio/mp4").set("ts","video/mp2t").set("tsa","video/mp2t");Ut.VIDEO_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","video/mp4").set("mp4v","video/mp4").set("m4s","video/mp4").set("m4i","video/mp4").set("m4v","video/mp4").set("m4f","video/mp4").set("cmfv","video/mp4").set("ts","video/mp2t").set("tsv","video/mp2t");Ut.TEXT_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","application/mp4").set("m4s","application/mp4").set("m4i","application/mp4").set("m4f","application/mp4").set("cmft","application/mp4").set("vtt","text/vtt").set("webvtt","text/vtt").set("ttml","application/ttml+xml");Ut.IMAGE_EXTENSIONS_TO_MIME_TYPES_=new Map().set("jpg","image/jpeg").set("png","image/png").set("svg","image/svg+xml").set("webp","image/webp").set("avif","image/avif");Ut.EXTENSION_MAP_BY_CONTENT_TYPE_=new Map().set("audio",Ut.AUDIO_EXTENSIONS_TO_MIME_TYPES_).set("video",Ut.VIDEO_EXTENSIONS_TO_MIME_TYPES_).set("text",Ut.TEXT_EXTENSIONS_TO_MIME_TYPES_).set("image",Ut.IMAGE_EXTENSIONS_TO_MIME_TYPES_);Ut.MIME_TYPES_WITHOUT_INIT_SEGMENT_=new Set(["video/mp2t",...O.RAW_FORMATS]);me.registerParserByMime("application/x-mpegurl",()=>new Ut);me.registerParserByMime("application/vnd.apple.mpegurl",()=>new Ut);me.registerParserByMime("audio/x-mpegurl",()=>new Ut);/*! @license
708
708
  * Shaka Player
709
709
  * Copyright 2016 Google LLC
710
710
  * SPDX-License-Identifier: Apache-2.0
711
- */var jn=class{parse(e){let t=[],i=e.length-128;if(i<0||e[i]!==84||e[i+1]!==65||e[i+2]!==71)return t;let r=(o,c)=>q.fromUTF8(e.subarray(i+o,i+o+c)).replace(/\0/g,"").trim(),s=(o,c)=>{c&&t.push({key:o,description:"",data:c,mimeType:null,pictureType:null})};s("TIT2",r(3,30)),s("TPE1",r(33,30)),s("TALB",r(63,30)),s("TYER",r(93,4));let n="",a=null;return e[i+125]===0?(n=r(97,28),a=e[i+126]):n=r(97,30),s("COMM",n),a!==null&&s("TRCK",String(a)),s("TCON",String(e[i+127])),t}};for(let y of N.RAW_FORMATS)kt.registerParserByMime(y,()=>new jn);/*! @license
711
+ */var jn=class{parse(e){let t=[],i=e.length-128;if(i<0||e[i]!==84||e[i+1]!==65||e[i+2]!==71)return t;let r=(o,c)=>q.fromUTF8(e.subarray(i+o,i+o+c)).replace(/\0/g,"").trim(),s=(o,c)=>{c&&t.push({key:o,description:"",data:c,mimeType:null,pictureType:null})};s("TIT2",r(3,30)),s("TPE1",r(33,30)),s("TALB",r(63,30)),s("TYER",r(93,4));let n="",a=null;return e[i+125]===0?(n=r(97,28),a=e[i+126]):n=r(97,30),s("COMM",n),a!==null&&s("TRCK",String(a)),s("TCON",String(e[i+127])),t}};for(let y of O.RAW_FORMATS)kt.registerParserByMime(y,()=>new jn);/*! @license
712
712
  * Shaka Player
713
713
  * Copyright 2016 Google LLC
714
714
  * SPDX-License-Identifier: Apache-2.0
@@ -831,7 +831,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
831
831
  ${i}`),this.msfTransport_.unsubscribeTrack(i).catch(s=>{p.error(`Failed to unsubscribe from catalog: ${s}`)})};this.unregisterCatalogCallback_&&(p.debug("Unregistering previous catalog callback"),this.unregisterCatalogCallback_()),this.unregisterCatalogCallback_=r,p.debug(`Successfully subscribed to catalog in namespace:
832
832
  ${t} with track alias: ${i}`)}catch(t){p.error("Error subscribing to catalog:",t),t&&t.kind==P.MessageType.SUBSCRIBE_ERROR?this.catalogPromise_.reject(new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.MSF_NO_CATALOG,t.code,t.reason)):this.catalogPromise_.reject(t)}}recordBandwidthSample_(e,t,i,r){let s=this.bandwidthSamples_.getOrInsert(e,{bytes:0,readMs:0,group:t.group});t.group!==s.group&&(s.bytes>0&&this.playerInterface_.onSegmentReceived(Math.max(s.readMs,1),s.bytes),s.bytes=0,s.readMs=0,s.group=t.group),s.bytes+=i,s.readMs+=r}async subscribeToTrack(e,t,i){try{let r=[];e.namespace&&r.push(e.namespace),r.length||(this.config_.msf.namespaces.length?r=this.config_.msf.namespaces:this.publishNamespaces_.length?r=this.publishNamespaces_[0]:r=[]);let s=e.name;p.debug(`Subscribing to track: ${t}`);let n=await this.msfTransport_.subscribeTrack(r,s,o=>{p.v1(`Received object for track ${t} with`,o),i(o)}),a=()=>{if(!this.playerInterface_){p.debug("Skipping catalog unsubscribe during disconnect");return}p.debug(`Unsubscribing from catalog track with alias
833
833
  ${n}`),this.msfTransport_.unsubscribeTrack(n).catch(o=>{p.error(`Failed to unsubscribe from catalog: ${o}`)})};this.unregisterTracksCallback_.set(t,a),p.debug(`Subscribed to track ${t} with alias ${n}`)}catch(r){p.debug(`Error subscribing to track:
834
- ${r instanceof Error?r.message:String(r)}`)}}processCatalog_(e){p.info("MSF Catalog:",e);let t=this.config_.msf.catalogPreprocessor,i=st.defaultCatalogPreprocessor;t!=i&&(t(e),p.info("MSF Catalog after preprocessor:",e));let r=[],s=!0,n=1/0,a=0,o=this.getContentProtections_(e),c=new Map;for(let d of e.initDataList||[])c.set(d.id,d.data);for(let d of e.tracks)"isLive"in d&&(s=d.isLive),d.targetLatency&&(a=Math.max(a,d.targetLatency)),d.trackDuration&&(n=Math.min(n,d.trackDuration)),r.push(this.processTrack_(d,o,c));if(a){let d={maxLatency:null,maxPlaybackRate:null,minLatency:null,minPlaybackRate:null,targetLatency:a/1e3};this.manifest_.serviceDescription=d}return s&&this.presentationTimeline_.setStatic(!1),this.presentationTimeline_.setDuration(n),Promise.all(r)}getContentProtections_(e){var s,n;let t=de.getUuidMap(),i=new Map,r=e.contentProtections||[];for(let a of r){let o=a.refID,c=a.drmSystem;if(!c)continue;let d=t[c.systemID.toLowerCase()];if(!d)continue;let u=a.scheme||"cenc",m=null;c.pssh&&(m=[{initDataType:"cenc",initData:ne.fromBase64(c.pssh)}]);let f=R.createDrmInfo(d,u,m);if((s=c.laURL)!=null&&s.url?f.licenseServerUri=c.laURL.url:m&&de.isPlayReadyKeySystem(d)&&(f.licenseServerUri=Ri.getLicenseUrlFromPssh(m[0].initData)),(n=c.certURL)!=null&&n.url&&(f.serverCertificateUri=c.certURL.url),c.robustness&&(f.videoRobustness=c.robustness,f.audioRobustness=c.robustness),a.defaultKID)for(let g of a.defaultKID){let _=g.replace(/-/g,"").toLowerCase();f.keyIds.add(_)}i.set(o,f)}return i}processTrack_(e,t,i){let r=R.ContentType,s=new Uint8Array([]);e.initData?s=ne.fromBase64(e.initData):e.initRef&&i.has(e.initRef)&&(s=ne.fromBase64(i.get(e.initRef)));let n=e.codec&&e.packaging==="loc",a=null;if(["cmaf","chunk-per-object"].includes(e.packaging))a=vt.getBasicInfoFromMp4(s,s,!1);else if(n){let H=`moq/loc; codecs="${e.codec}"`;a=vt.getBasicInfoFromMimeType(H)}if(!a){p.info("Skipping incompatible track",e);return}let c=a.timescale||e.timescale;if(!c&&!n){p.info("Skipping incompatible track due missing timescale",e);return}let d=a.mimeType||e.mimeType||"",u=a.codecs,m=e.lang;(!e.lang||e.lang=="und")&&(m=a.language||e.lang);let f=Number(a.frameRate)||e.framerate,g=Number(a.width)||e.width,_=Number(a.height)||e.height,T=a.channelCount;!T&&e.channelConfig&&(T=parseInt(e.channelConfig,10));let S=a.sampleRate||e.samplerate||null,b=a.videoRange||void 0,E=a.colorGamut||void 0,C=r.TEXT;for(let H of R.VIDEO_CODEC_REGEXPS)H.test(u.trim())&&(C=r.VIDEO);if(C==r.TEXT)for(let H of R.AUDIO_CODEC_REGEXPS)H.test(u.trim())&&(C=r.AUDIO);let A,w=null,M=[];if(e.role)switch(M.push(e.role),e.role){case"audiodescription":C==r.AUDIO&&(w=me.AccessibilityPurpose.VISUALLY_IMPAIRED);break;case"caption":C==r.TEXT&&(A=R.TextStreamKind.CLOSED_CAPTION);break;case"subtitle":C==r.TEXT&&(A=R.TextStreamKind.SUBTITLE);break}let x=[],k=e.contentProtectionRefIDs;if(k)for(let H of k){let J=t.get(H);if(J)x.push(J);else{p.alwaysWarn("Unrecognized contentProtectionRefID",H);return}}else x=a.drmInfos;let L=new Map;if(!this.config_.disableText)for(let H of e.accessibility||[]){let J=H.schemeId,Z=H.value;J=="urn:scte:dash:cc:cea-608:2015"?R.parseCEA608Captions(Z,L):J=="urn:scte:dash:cc:cea-708:2015"&&R.parseCEA708Captions(Z,L)}let V={id:this.globalId_++,originalId:e.name,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:d,codecs:u,supplementalCodecs:"",kind:A,encrypted:!1,drmInfos:x,keyIds:new Set,language:ve.normalize(m||"und"),originalLanguage:m||null,label:e.label||null,type:C,primary:!1,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,frameRate:f,pixelAspectRatio:void 0,width:g,height:_,bandwidth:e.bitrate,roles:M,forced:!1,channelsCount:T,audioSamplingRate:S,spatialAudio:!1,closedCaptions:L,hdr:b,colorGamut:E,videoLayout:void 0,tilesLayout:void 0,accessibilityPurpose:w,external:!1,fastSwitching:!1,fullMimeTypes:new Set([N.getFullType(d,u)]),isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1},ee=`${e.namespace||""}/${e.name}`,oe=null;c&&(oe=new Tt(()=>[],0,null,null,c,s));let le=null;if(n){let H=Ks.frameDurationFromTrack(e);if(H===null){p.warning(`LOC track "${e.name}" has no usable frame duration; skipping.`);return}le=new Ks(H)}switch(V.createSegmentIndex=()=>{let H=Promise.withResolvers();return this.subscribeToTrack(e,ee,J=>{let Z=J.data;if(!V.segmentIndex||!Z.byteLength)return;this.recordBandwidthSample_(ee,J.location,Z.byteLength,J.receiveTimestampMs-J.payloadReadStartMs);let ce,W;if(n){v.assert(le,"locParser must be non-null");let Y=le.parse(J);W=Y.duration,ce=Y.startTime,Z=Y.payload}else{v.assert(typeof c=="number","Timescale should be a number!");let Y=vt.getStartTimeAndDurationFromMp4(Z,c);ce=Y.startTime,W=Y.duration}if(!W||!Z.byteLength)return;let z=new Se(ce,ce+W,()=>[],0,null,oe,0,0,1/0);z.setSegmentData(Z),this.receivedFirstSegment_.add(C);let ge=this.presentationTimeline_.isStartTimeLocked();if(ge){let Y=Math.min(z.startTime-2,this.presentationTimeline_.getSegmentAvailabilityStart());V.segmentIndex.mergeAndEvict([z],Y)}else V.segmentIndex.merge([z]);if(this.presentationTimeline_.notifySegments([z]),this.presentationTimeline_.notifyMaxSegmentDuration(W),this.presentationTimeline_.isDynamic()){let Y=this.presentationTimeline_.getMaxSegmentDuration();Y>0&&this.presentationTimeline_.setSegmentAvailabilityDuration(Y)}!ge&&(!this.audioStreams_.length||this.receivedFirstSegment_.has(r.AUDIO))&&(!this.videoStreams_.length||this.receivedFirstSegment_.has(r.VIDEO))&&this.presentationTimeline_.lockStartTime(),H==null||H.resolve(),H=null}),V.segmentIndex=new Ze([]),H==null?void 0:H.promise},V.closeSegmentIndex=()=>{var H;this.unregisterTracksCallback_.has(ee)&&(this.unregisterTracksCallback_.get(ee)(),this.unregisterTracksCallback_.delete(ee)),this.bandwidthSamples_.delete(ee),(H=V.segmentIndex)==null||H.release(),V.segmentIndex=null},C){case r.AUDIO:this.config_.disableAudio||this.audioStreams_.push(V);break;case r.VIDEO:this.config_.disableVideo||this.videoStreams_.push(V);break;case r.TEXT:this.config_.disableText||this.textStreams_.push(V);break}}createVariants_(){let e=R.ContentType,t=0,i=[];if(!this.videoStreams_.length||!this.audioStreams_.length){let r=this.videoStreams_.length?this.videoStreams_:this.audioStreams_;for(let s of r){let n=t++,a=s.bandwidth||0;s.dependencyStream&&(a+=s.dependencyStream.bandwidth||0),i.push({id:n,language:s.language,disabledUntilTime:0,primary:s.primary,audio:s.type==e.AUDIO?s:null,video:s.type==e.VIDEO?s:null,bandwidth:a,drmInfos:s.drmInfos,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}}else for(let r of this.audioStreams_)for(let s of this.videoStreams_){let n=de.getCommonDrmInfos(r.drmInfos,s.drmInfos);if(r.drmInfos.length&&s.drmInfos.length&&!n.length){p.warning("Incompatible DRM in audio & video, skipping variant creation.",r,s);continue}let a=(r.bandwidth||0)+(s.bandwidth||0);r.dependencyStream&&(a+=r.dependencyStream.bandwidth||0),s.dependencyStream&&(a+=s.dependencyStream.bandwidth||0);let o=t++;i.push({id:o,language:r.language,disabledUntilTime:0,primary:r.primary,audio:r,video:s,bandwidth:a,drmInfos:n,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}this.variants_=i}};me.registerParserByMime("application/msf",()=>new sa);/*! @license
834
+ ${r instanceof Error?r.message:String(r)}`)}}processCatalog_(e){p.info("MSF Catalog:",e);let t=this.config_.msf.catalogPreprocessor,i=st.defaultCatalogPreprocessor;t!=i&&(t(e),p.info("MSF Catalog after preprocessor:",e));let r=[],s=!0,n=1/0,a=0,o=this.getContentProtections_(e),c=new Map;for(let d of e.initDataList||[])c.set(d.id,d.data);for(let d of e.tracks)"isLive"in d&&(s=d.isLive),d.targetLatency&&(a=Math.max(a,d.targetLatency)),d.trackDuration&&(n=Math.min(n,d.trackDuration)),r.push(this.processTrack_(d,o,c));if(a){let d={maxLatency:null,maxPlaybackRate:null,minLatency:null,minPlaybackRate:null,targetLatency:a/1e3};this.manifest_.serviceDescription=d}return s&&this.presentationTimeline_.setStatic(!1),this.presentationTimeline_.setDuration(n),Promise.all(r)}getContentProtections_(e){var s,n;let t=de.getUuidMap(),i=new Map,r=e.contentProtections||[];for(let a of r){let o=a.refID,c=a.drmSystem;if(!c)continue;let d=t[c.systemID.toLowerCase()];if(!d)continue;let u=a.scheme||"cenc",m=null;c.pssh&&(m=[{initDataType:"cenc",initData:ne.fromBase64(c.pssh)}]);let f=R.createDrmInfo(d,u,m);if((s=c.laURL)!=null&&s.url?f.licenseServerUri=c.laURL.url:m&&de.isPlayReadyKeySystem(d)&&(f.licenseServerUri=Ri.getLicenseUrlFromPssh(m[0].initData)),(n=c.certURL)!=null&&n.url&&(f.serverCertificateUri=c.certURL.url),c.robustness&&(f.videoRobustness=c.robustness,f.audioRobustness=c.robustness),a.defaultKID)for(let g of a.defaultKID){let _=g.replace(/-/g,"").toLowerCase();f.keyIds.add(_)}i.set(o,f)}return i}processTrack_(e,t,i){let r=R.ContentType,s=new Uint8Array([]);e.initData?s=ne.fromBase64(e.initData):e.initRef&&i.has(e.initRef)&&(s=ne.fromBase64(i.get(e.initRef)));let n=e.codec&&e.packaging==="loc",a=null;if(["cmaf","chunk-per-object"].includes(e.packaging))a=vt.getBasicInfoFromMp4(s,s,!1);else if(n){let H=`moq/loc; codecs="${e.codec}"`;a=vt.getBasicInfoFromMimeType(H)}if(!a){p.info("Skipping incompatible track",e);return}let c=a.timescale||e.timescale;if(!c&&!n){p.info("Skipping incompatible track due missing timescale",e);return}let d=a.mimeType||e.mimeType||"",u=a.codecs,m=e.lang;(!e.lang||e.lang=="und")&&(m=a.language||e.lang);let f=Number(a.frameRate)||e.framerate,g=Number(a.width)||e.width,_=Number(a.height)||e.height,T=a.channelCount;!T&&e.channelConfig&&(T=parseInt(e.channelConfig,10));let S=a.sampleRate||e.samplerate||null,b=a.videoRange||void 0,E=a.colorGamut||void 0,C=r.TEXT;for(let H of R.VIDEO_CODEC_REGEXPS)H.test(u.trim())&&(C=r.VIDEO);if(C==r.TEXT)for(let H of R.AUDIO_CODEC_REGEXPS)H.test(u.trim())&&(C=r.AUDIO);let A,w=null,M=[];if(e.role)switch(M.push(e.role),e.role){case"audiodescription":C==r.AUDIO&&(w=me.AccessibilityPurpose.VISUALLY_IMPAIRED);break;case"caption":C==r.TEXT&&(A=R.TextStreamKind.CLOSED_CAPTION);break;case"subtitle":C==r.TEXT&&(A=R.TextStreamKind.SUBTITLE);break}let x=[],k=e.contentProtectionRefIDs;if(k)for(let H of k){let J=t.get(H);if(J)x.push(J);else{p.alwaysWarn("Unrecognized contentProtectionRefID",H);return}}else x=a.drmInfos;let L=new Map;if(!this.config_.disableText)for(let H of e.accessibility||[]){let J=H.schemeId,Z=H.value;J=="urn:scte:dash:cc:cea-608:2015"?R.parseCEA608Captions(Z,L):J=="urn:scte:dash:cc:cea-708:2015"&&R.parseCEA708Captions(Z,L)}let V={id:this.globalId_++,originalId:e.name,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:d,codecs:u,supplementalCodecs:"",kind:A,encrypted:!1,drmInfos:x,keyIds:new Set,language:ve.normalize(m||"und"),originalLanguage:m||null,label:e.label||null,type:C,primary:!1,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,frameRate:f,pixelAspectRatio:void 0,width:g,height:_,bandwidth:e.bitrate,roles:M,forced:!1,channelsCount:T,audioSamplingRate:S,spatialAudio:!1,closedCaptions:L,hdr:b,colorGamut:E,videoLayout:void 0,tilesLayout:void 0,accessibilityPurpose:w,external:!1,fastSwitching:!1,fullMimeTypes:new Set([O.getFullType(d,u)]),isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1},ee=`${e.namespace||""}/${e.name}`,oe=null;c&&(oe=new Tt(()=>[],0,null,null,c,s));let le=null;if(n){let H=Ks.frameDurationFromTrack(e);if(H===null){p.warning(`LOC track "${e.name}" has no usable frame duration; skipping.`);return}le=new Ks(H)}switch(V.createSegmentIndex=()=>{let H=Promise.withResolvers();return this.subscribeToTrack(e,ee,J=>{let Z=J.data;if(!V.segmentIndex||!Z.byteLength)return;this.recordBandwidthSample_(ee,J.location,Z.byteLength,J.receiveTimestampMs-J.payloadReadStartMs);let ce,W;if(n){v.assert(le,"locParser must be non-null");let Y=le.parse(J);W=Y.duration,ce=Y.startTime,Z=Y.payload}else{v.assert(typeof c=="number","Timescale should be a number!");let Y=vt.getStartTimeAndDurationFromMp4(Z,c);ce=Y.startTime,W=Y.duration}if(!W||!Z.byteLength)return;let z=new Se(ce,ce+W,()=>[],0,null,oe,0,0,1/0);z.setSegmentData(Z),this.receivedFirstSegment_.add(C);let ge=this.presentationTimeline_.isStartTimeLocked();if(ge){let Y=Math.min(z.startTime-2,this.presentationTimeline_.getSegmentAvailabilityStart());V.segmentIndex.mergeAndEvict([z],Y)}else V.segmentIndex.merge([z]);if(this.presentationTimeline_.notifySegments([z]),this.presentationTimeline_.notifyMaxSegmentDuration(W),this.presentationTimeline_.isDynamic()){let Y=this.presentationTimeline_.getMaxSegmentDuration();Y>0&&this.presentationTimeline_.setSegmentAvailabilityDuration(Y)}!ge&&(!this.audioStreams_.length||this.receivedFirstSegment_.has(r.AUDIO))&&(!this.videoStreams_.length||this.receivedFirstSegment_.has(r.VIDEO))&&this.presentationTimeline_.lockStartTime(),H==null||H.resolve(),H=null}),V.segmentIndex=new Ze([]),H==null?void 0:H.promise},V.closeSegmentIndex=()=>{var H;this.unregisterTracksCallback_.has(ee)&&(this.unregisterTracksCallback_.get(ee)(),this.unregisterTracksCallback_.delete(ee)),this.bandwidthSamples_.delete(ee),(H=V.segmentIndex)==null||H.release(),V.segmentIndex=null},C){case r.AUDIO:this.config_.disableAudio||this.audioStreams_.push(V);break;case r.VIDEO:this.config_.disableVideo||this.videoStreams_.push(V);break;case r.TEXT:this.config_.disableText||this.textStreams_.push(V);break}}createVariants_(){let e=R.ContentType,t=0,i=[];if(!this.videoStreams_.length||!this.audioStreams_.length){let r=this.videoStreams_.length?this.videoStreams_:this.audioStreams_;for(let s of r){let n=t++,a=s.bandwidth||0;s.dependencyStream&&(a+=s.dependencyStream.bandwidth||0),i.push({id:n,language:s.language,disabledUntilTime:0,primary:s.primary,audio:s.type==e.AUDIO?s:null,video:s.type==e.VIDEO?s:null,bandwidth:a,drmInfos:s.drmInfos,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}}else for(let r of this.audioStreams_)for(let s of this.videoStreams_){let n=de.getCommonDrmInfos(r.drmInfos,s.drmInfos);if(r.drmInfos.length&&s.drmInfos.length&&!n.length){p.warning("Incompatible DRM in audio & video, skipping variant creation.",r,s);continue}let a=(r.bandwidth||0)+(s.bandwidth||0);r.dependencyStream&&(a+=r.dependencyStream.bandwidth||0),s.dependencyStream&&(a+=s.dependencyStream.bandwidth||0);let o=t++;i.push({id:o,language:r.language,disabledUntilTime:0,primary:r.primary,audio:r,video:s,bandwidth:a,drmInfos:n,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}this.variants_=i}};me.registerParserByMime("application/msf",()=>new sa);/*! @license
835
835
  * Shaka Player
836
836
  * Copyright 2016 Google LLC
837
837
  * SPDX-License-Identifier: Apache-2.0
@@ -839,7 +839,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
839
839
  * Shaka Player
840
840
  * Copyright 2016 Google LLC
841
841
  * SPDX-License-Identifier: Apache-2.0
842
- */var Ui=class y{static parse(e,t,i,r,s,n){let a=new y.Headers_;try{Zt.asMap(t.headers).forEach((_,T)=>{a.append(T,_)})}catch(_){return p.debug("Failed to create headers:",_),je.failed(new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.HTTP_ERROR,e,_,i))}let o=new y.AbortController_,c={body:t.body||void 0,headers:a,method:t.method,signal:o.signal,credentials:t.allowCrossSiteCredentials?"include":void 0},d={canceled:!1,timedOut:!1},u=n.minBytesForProgressEvents||0,m=y.request_(e,t,i,c,d,r,s,t.streamDataCallback,u),f=new je(m,()=>(d.canceled=!0,o.abort(),Promise.resolve())),g=t.retryParameters.timeout;if(g){let _=new ae(()=>{d.timedOut=!0,o.abort()});_.tickAfter(g/1e3),f.finally(()=>{_.stop()})}return f}static async request_(e,t,i,r,s,n,a,o,c){let d=y.fetch_,u=y.ReadableStream_,m,f=new ArrayBuffer(0),g=0,_=0,T={},S=Date.now();try{if(m=await d(e,r),T=y.headersToGenericObject_(m.headers),a(T),r.method!="HEAD"){v.assert(m.body,"non-HEAD responses should have a body");let b=m.headers.get("Content-Length"),E=b?parseInt(b,10):0;if(m.body){let C=m.clone().body.getReader(),A=w=>{let M=async()=>{let x;try{x=await C.read()}catch(V){p.v1("error reading from stream",V.message);return}x.done||(g+=x.value.byteLength,o&&await o(x.value));let k=Date.now(),L=g-_;if(k-S>100&&L>=c||x.done){let V=x.done?0:E-g;n(k-S,L,V),_=g,S=k}x.done?(v.assert(!x.value,'readObj should be unset when "done" is true.'),w.close()):(w.enqueue(x.value),M())};M()};new u({start:A}),f=await m.arrayBuffer()}else{f=await m.arrayBuffer();let C=Date.now();n(C-S,f.byteLength,0)}}if(t.headers.Range){let b=t.headers.Range.replace("bytes=","").split("-").filter(E=>E).map(E=>parseInt(E,10));b.length==2&&f.byteLength!=b[1]-b[0]+1&&p.alwaysWarn("Payload length does not match range requested bytes",t,m)}}catch(b){throw s.canceled?new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.OPERATION_ABORTED,e,i):s.timedOut?new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.TIMEOUT,e,i):new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.HTTP_ERROR,e,b,i)}return os.makeResponse(T,f,m.status,e,m.url,t,i)}static headersToGenericObject_(e){let t={};return e.forEach((i,r)=>{t[r.trim()]=i}),t}static isSupported(){if(window.ReadableStream)try{new ReadableStream({})}catch(e){return!1}else return!1;if(window.Response){if(!new Response("").body)return!1}else return!1;return!!(window.fetch&&!("polyfill"in window.fetch)&&window.AbortController)}};Ui.fetch_=window.fetch;Ui.AbortController_=window.AbortController;Ui.ReadableStream_=window.ReadableStream;Ui.Headers_=window.Headers;Ui.isSupported()&&(K.registerScheme("http",Ui.parse,K.PluginPriority.PREFERRED,!0),K.registerScheme("https",Ui.parse,K.PluginPriority.PREFERRED,!0),K.registerScheme("blob",Ui.parse,K.PluginPriority.PREFERRED,!0));/*! @license
842
+ */var Ui=class y{static parse(e,t,i,r,s,n){let a=new y.Headers_;try{ei.asMap(t.headers).forEach((_,T)=>{a.append(T,_)})}catch(_){return p.debug("Failed to create headers:",_),je.failed(new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.HTTP_ERROR,e,_,i))}let o=new y.AbortController_,c={body:t.body||void 0,headers:a,method:t.method,signal:o.signal,credentials:t.allowCrossSiteCredentials?"include":void 0},d={canceled:!1,timedOut:!1},u=n.minBytesForProgressEvents||0,m=y.request_(e,t,i,c,d,r,s,t.streamDataCallback,u),f=new je(m,()=>(d.canceled=!0,o.abort(),Promise.resolve())),g=t.retryParameters.timeout;if(g){let _=new ae(()=>{d.timedOut=!0,o.abort()});_.tickAfter(g/1e3),f.finally(()=>{_.stop()})}return f}static async request_(e,t,i,r,s,n,a,o,c){let d=y.fetch_,u=y.ReadableStream_,m,f=new ArrayBuffer(0),g=0,_=0,T={},S=Date.now();try{if(m=await d(e,r),T=y.headersToGenericObject_(m.headers),a(T),r.method!="HEAD"){v.assert(m.body,"non-HEAD responses should have a body");let b=m.headers.get("Content-Length"),E=b?parseInt(b,10):0;if(m.body){let C=m.clone().body.getReader(),A=w=>{let M=async()=>{let x;try{x=await C.read()}catch(V){p.v1("error reading from stream",V.message);return}x.done||(g+=x.value.byteLength,o&&await o(x.value));let k=Date.now(),L=g-_;if(k-S>100&&L>=c||x.done){let V=x.done?0:E-g;n(k-S,L,V),_=g,S=k}x.done?(v.assert(!x.value,'readObj should be unset when "done" is true.'),w.close()):(w.enqueue(x.value),M())};M()};new u({start:A}),f=await m.arrayBuffer()}else{f=await m.arrayBuffer();let C=Date.now();n(C-S,f.byteLength,0)}}if(t.headers.Range){let b=t.headers.Range.replace("bytes=","").split("-").filter(E=>E).map(E=>parseInt(E,10));b.length==2&&f.byteLength!=b[1]-b[0]+1&&p.alwaysWarn("Payload length does not match range requested bytes",t,m)}}catch(b){throw s.canceled?new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.OPERATION_ABORTED,e,i):s.timedOut?new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.TIMEOUT,e,i):new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.HTTP_ERROR,e,b,i)}return os.makeResponse(T,f,m.status,e,m.url,t,i)}static headersToGenericObject_(e){let t={};return e.forEach((i,r)=>{t[r.trim()]=i}),t}static isSupported(){if(window.ReadableStream)try{new ReadableStream({})}catch(e){return!1}else return!1;if(window.Response){if(!new Response("").body)return!1}else return!1;return!!(window.fetch&&!("polyfill"in window.fetch)&&window.AbortController)}};Ui.fetch_=window.fetch;Ui.AbortController_=window.AbortController;Ui.ReadableStream_=window.ReadableStream;Ui.Headers_=window.Headers;Ui.isSupported()&&(K.registerScheme("http",Ui.parse,K.PluginPriority.PREFERRED,!0),K.registerScheme("https",Ui.parse,K.PluginPriority.PREFERRED,!0),K.registerScheme("blob",Ui.parse,K.PluginPriority.PREFERRED,!0));/*! @license
843
843
  * Shaka Player
844
844
  * Copyright 2016 Google LLC
845
845
  * SPDX-License-Identifier: Apache-2.0
@@ -856,7 +856,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
856
856
  * Shaka Player
857
857
  * Copyright 2016 Google LLC
858
858
  * SPDX-License-Identifier: Apache-2.0
859
- */var ls=class{constructor(e,t){l(this,"mechanism_");l(this,"cell_");this.mechanism_=e,this.cell_=t}fromManifestDB(e){let t=new wi(null,0);t.setDuration(e.duration);let i=e.streams.filter(d=>this.isAudio_(d)),r=e.streams.filter(d=>this.isVideo_(d)),s=this.createVariants(i,r,t),n=e.streams.filter(d=>this.isText_(d)).map(d=>this.fromStreamDB_(d,t)),a=e.streams.filter(d=>this.isImage_(d)).map(d=>this.fromStreamDB_(d,t)),o=e.streams.filter(d=>this.isChapter_(d)).map(d=>this.fromStreamDB_(d,t)),c=e.drmInfo?[e.drmInfo]:[];if(e.drmInfo)for(let d of s.values())d.audio&&d.audio.encrypted&&(d.audio.drmInfos=c),d.video&&d.video.encrypted&&(d.video.drmInfos=c);return{presentationTimeline:t,offlineSessionIds:e.sessionIds,variants:Array.from(s.values()),textStreams:n,imageStreams:a,chapterStreams:o,sequenceMode:e.sequenceMode||!1,ignoreManifestTimestampsInSegmentsMode:!1,type:e.type||me.UNKNOWN,serviceDescription:null,nextUrl:null,periodCount:1,gapCount:0,isLowLatency:!1,startTime:null}}createVariants(e,t,i){let r=new Set;for(let n of e)for(let a of n.variantIds)r.add(a);for(let n of t)for(let a of n.variantIds)r.add(a);let s=new Map;for(let n of r)s.set(n,this.createEmptyVariant_(n));for(let n of e){let a=this.fromStreamDB_(n,i);for(let o of n.variantIds){let c=s.get(o);v.assert(!c.audio,"A variant should only have one audio stream"),c.language=a.language,c.primary=c.primary||a.primary,c.audio=a}}for(let n of t){let a=this.fromStreamDB_(n,i);for(let o of n.variantIds){let c=s.get(o);v.assert(!c.video,"A variant should only have one video stream"),c.primary=c.primary||a.primary,c.video=a}}return s}fromStreamDB_(e,t){let i=e.segments.map((n,a)=>this.fromSegmentDB_(a,n,e));t.notifySegments(i);let r=new Ze(i);return{id:e.id,originalId:e.originalId,groupId:e.groupId,createSegmentIndex:()=>Promise.resolve(),segmentIndex:r,mimeType:e.mimeType,codecs:e.codecs,supplementalCodecs:"",width:e.width||void 0,height:e.height||void 0,frameRate:e.frameRate,pixelAspectRatio:e.pixelAspectRatio,hdr:e.hdr,colorGamut:e.colorGamut,videoLayout:e.videoLayout,kind:e.kind,encrypted:e.encrypted,drmInfos:[],keyIds:e.keyIds,language:e.language,originalLanguage:e.originalLanguage||null,label:e.label,type:e.type,primary:e.primary,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,roles:e.roles,forced:e.forced,channelsCount:e.channelsCount,audioSamplingRate:e.audioSamplingRate,spatialAudio:e.spatialAudio,closedCaptions:e.closedCaptions,tilesLayout:e.tilesLayout,accessibilityPurpose:null,external:e.external,fastSwitching:e.fastSwitching,fullMimeTypes:new Set([N.getFullType(e.mimeType,e.codecs)]),isAudioMuxedInVideo:e.isAudioMuxedInVideo||!1,baseOriginalId:null,isIframe:e.isIframe||!1}}fromSegmentDB_(e,t,i){let r=this.isChapter_(i)?"":ni.segment(this.mechanism_,this.cell_,t.dataKey),s=t.initSegmentKey!=null?this.fromInitSegmentDB_(t.initSegmentKey):null,n=new Se(t.startTime,t.endTime,()=>[r.toString()],0,null,s,t.timestampOffset,t.appendWindowStart,t.appendWindowEnd,[],t.tilesLayout||"");if(n.mimeType=t.mimeType||i.mimeType||"",n.codecs=t.codecs||i.codecs||"",t.thumbnailSprite&&n.setThumbnailSprite(t.thumbnailSprite),t.chapterTitle){let a={title:t.chapterTitle,images:[]};n.setMetadata(a)}return n}fromInitSegmentDB_(e){let t=ni.segment(this.mechanism_,this.cell_,e);return new Tt(()=>[t.toString()],0,null)}isAudio_(e){let t=R.ContentType;return e.type==t.AUDIO}isVideo_(e){let t=R.ContentType;return e.type==t.VIDEO}isText_(e){let t=R.ContentType;return e.type==t.TEXT}isImage_(e){let t=R.ContentType;return e.type==t.IMAGE}isChapter_(e){let t=R.ContentType;return e.type==t.CHAPTER}createEmptyVariant_(e){return{id:e,language:"",disabledUntilTime:0,primary:!1,audio:null,video:null,bandwidth:0,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]}}};/*! @license
859
+ */var ls=class{constructor(e,t){l(this,"mechanism_");l(this,"cell_");this.mechanism_=e,this.cell_=t}fromManifestDB(e){let t=new wi(null,0);t.setDuration(e.duration);let i=e.streams.filter(d=>this.isAudio_(d)),r=e.streams.filter(d=>this.isVideo_(d)),s=this.createVariants(i,r,t),n=e.streams.filter(d=>this.isText_(d)).map(d=>this.fromStreamDB_(d,t)),a=e.streams.filter(d=>this.isImage_(d)).map(d=>this.fromStreamDB_(d,t)),o=e.streams.filter(d=>this.isChapter_(d)).map(d=>this.fromStreamDB_(d,t)),c=e.drmInfo?[e.drmInfo]:[];if(e.drmInfo)for(let d of s.values())d.audio&&d.audio.encrypted&&(d.audio.drmInfos=c),d.video&&d.video.encrypted&&(d.video.drmInfos=c);return{presentationTimeline:t,offlineSessionIds:e.sessionIds,variants:Array.from(s.values()),textStreams:n,imageStreams:a,chapterStreams:o,sequenceMode:e.sequenceMode||!1,ignoreManifestTimestampsInSegmentsMode:!1,type:e.type||me.UNKNOWN,serviceDescription:null,nextUrl:null,periodCount:1,gapCount:0,isLowLatency:!1,startTime:null}}createVariants(e,t,i){let r=new Set;for(let n of e)for(let a of n.variantIds)r.add(a);for(let n of t)for(let a of n.variantIds)r.add(a);let s=new Map;for(let n of r)s.set(n,this.createEmptyVariant_(n));for(let n of e){let a=this.fromStreamDB_(n,i);for(let o of n.variantIds){let c=s.get(o);v.assert(!c.audio,"A variant should only have one audio stream"),c.language=a.language,c.primary=c.primary||a.primary,c.audio=a}}for(let n of t){let a=this.fromStreamDB_(n,i);for(let o of n.variantIds){let c=s.get(o);v.assert(!c.video,"A variant should only have one video stream"),c.primary=c.primary||a.primary,c.video=a}}return s}fromStreamDB_(e,t){let i=e.segments.map((n,a)=>this.fromSegmentDB_(a,n,e));t.notifySegments(i);let r=new Ze(i);return{id:e.id,originalId:e.originalId,groupId:e.groupId,createSegmentIndex:()=>Promise.resolve(),segmentIndex:r,mimeType:e.mimeType,codecs:e.codecs,supplementalCodecs:"",width:e.width||void 0,height:e.height||void 0,frameRate:e.frameRate,pixelAspectRatio:e.pixelAspectRatio,hdr:e.hdr,colorGamut:e.colorGamut,videoLayout:e.videoLayout,kind:e.kind,encrypted:e.encrypted,drmInfos:[],keyIds:e.keyIds,language:e.language,originalLanguage:e.originalLanguage||null,label:e.label,type:e.type,primary:e.primary,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,roles:e.roles,forced:e.forced,channelsCount:e.channelsCount,audioSamplingRate:e.audioSamplingRate,spatialAudio:e.spatialAudio,closedCaptions:e.closedCaptions,tilesLayout:e.tilesLayout,accessibilityPurpose:null,external:e.external,fastSwitching:e.fastSwitching,fullMimeTypes:new Set([O.getFullType(e.mimeType,e.codecs)]),isAudioMuxedInVideo:e.isAudioMuxedInVideo||!1,baseOriginalId:null,isIframe:e.isIframe||!1}}fromSegmentDB_(e,t,i){let r=this.isChapter_(i)?"":ni.segment(this.mechanism_,this.cell_,t.dataKey),s=t.initSegmentKey!=null?this.fromInitSegmentDB_(t.initSegmentKey):null,n=new Se(t.startTime,t.endTime,()=>[r.toString()],0,null,s,t.timestampOffset,t.appendWindowStart,t.appendWindowEnd,[],t.tilesLayout||"");if(n.mimeType=t.mimeType||i.mimeType||"",n.codecs=t.codecs||i.codecs||"",t.thumbnailSprite&&n.setThumbnailSprite(t.thumbnailSprite),t.chapterTitle){let a={title:t.chapterTitle,images:[]};n.setMetadata(a)}return n}fromInitSegmentDB_(e){let t=ni.segment(this.mechanism_,this.cell_,e);return new Tt(()=>[t.toString()],0,null)}isAudio_(e){let t=R.ContentType;return e.type==t.AUDIO}isVideo_(e){let t=R.ContentType;return e.type==t.VIDEO}isText_(e){let t=R.ContentType;return e.type==t.TEXT}isImage_(e){let t=R.ContentType;return e.type==t.IMAGE}isChapter_(e){let t=R.ContentType;return e.type==t.CHAPTER}createEmptyVariant_(e){return{id:e,language:"",disabledUntilTime:0,primary:!1,audio:null,video:null,bandwidth:0,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]}}};/*! @license
860
860
  * Shaka Player
861
861
  * Copyright 2016 Google LLC
862
862
  * SPDX-License-Identifier: Apache-2.0
@@ -880,7 +880,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
880
880
  * Shaka Player
881
881
  * Copyright 2016 Google LLC
882
882
  * SPDX-License-Identifier: Apache-2.0
883
- */var ca=class{constructor(e){l(this,"networkingEngine_");l(this,"groups_");l(this,"destroyer_");l(this,"abortCallbacks_");l(this,"onProgress_");l(this,"onInitData_");l(this,"estimator_");l(this,"aborted_");this.networkingEngine_=e,this.groups_=new Map,this.destroyer_=new ci(()=>this.abortAll().catch(()=>{})),this.abortCallbacks_=[],this.onProgress_=(t,i)=>{},this.onInitData_=(t,i)=>{},this.estimator_=new la,this.aborted_=!1}destroy(){return this.destroyer_.destroy()}setCallbacks(e,t){this.onProgress_=e,this.onInitData_=t}abortAll(){this.aborted_=!0;let e=this.abortCallbacks_.map(t=>t());return this.abortCallbacks_=[],Promise.all(e)}isAborted(){return this.aborted_}addDownloadEstimate(e){return this.estimator_.open(e)}queue(e,t,i,r,s){this.destroyer_.ensureNotDestroyed();let a=(this.groups_.get(e)||Promise.resolve()).then(async()=>{let o=await this.fetchSegment_(t);if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED);if(r){let c=D.toUint8(o),d=new ei(c);for(let u in d.data){let m=Number(u),f=d.data[m],g=d.systemIds[m];this.onInitData_(f,g)}}return this.estimator_.close(i,o.byteLength),this.onProgress_(this.estimator_.getEstimatedProgress(),this.estimator_.getTotalDownloaded()),s(o)});return this.groups_.set(e,a),a}queueData(e,t,i,r,s){this.destroyer_.ensureNotDestroyed();let a=(this.groups_.get(e)||Promise.resolve()).then(()=>{if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED);if(r){let o=D.toUint8(t),c=new ei(o);for(let d in c.data){let u=Number(d),m=c.data[u],f=c.systemIds[u];this.onInitData_(m,f)}}return this.estimator_.close(i,t.byteLength),this.onProgress_(this.estimator_.getEstimatedProgress(),this.estimator_.getTotalDownloaded()),s(t)});return this.groups_.set(e,a),a}queueWork(e,t){this.destroyer_.ensureNotDestroyed();let r=(this.groups_.get(e)||Promise.resolve()).then(async()=>{await t()});return this.groups_.set(e,r),r}async waitToFinish(){return await Promise.all(this.groups_.values()),this.estimator_.getTotalDownloaded()}async fetchSegment_(e){let t=K.RequestType.SEGMENT,i=this.networkingEngine_.request(t,e),r=()=>i.abort();this.abortCallbacks_.push(r);let s=await i.promise;return ye.remove(this.abortCallbacks_,r),s.data}};/*! @license
883
+ */var ca=class{constructor(e){l(this,"networkingEngine_");l(this,"groups_");l(this,"destroyer_");l(this,"abortCallbacks_");l(this,"onProgress_");l(this,"onInitData_");l(this,"estimator_");l(this,"aborted_");this.networkingEngine_=e,this.groups_=new Map,this.destroyer_=new ci(()=>this.abortAll().catch(()=>{})),this.abortCallbacks_=[],this.onProgress_=(t,i)=>{},this.onInitData_=(t,i)=>{},this.estimator_=new la,this.aborted_=!1}destroy(){return this.destroyer_.destroy()}setCallbacks(e,t){this.onProgress_=e,this.onInitData_=t}abortAll(){this.aborted_=!0;let e=this.abortCallbacks_.map(t=>t());return this.abortCallbacks_=[],Promise.all(e)}isAborted(){return this.aborted_}addDownloadEstimate(e){return this.estimator_.open(e)}queue(e,t,i,r,s){this.destroyer_.ensureNotDestroyed();let a=(this.groups_.get(e)||Promise.resolve()).then(async()=>{let o=await this.fetchSegment_(t);if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED);if(r){let c=D.toUint8(o),d=new ti(c);for(let u in d.data){let m=Number(u),f=d.data[m],g=d.systemIds[m];this.onInitData_(f,g)}}return this.estimator_.close(i,o.byteLength),this.onProgress_(this.estimator_.getEstimatedProgress(),this.estimator_.getTotalDownloaded()),s(o)});return this.groups_.set(e,a),a}queueData(e,t,i,r,s){this.destroyer_.ensureNotDestroyed();let a=(this.groups_.get(e)||Promise.resolve()).then(()=>{if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED);if(r){let o=D.toUint8(t),c=new ti(o);for(let d in c.data){let u=Number(d),m=c.data[u],f=c.systemIds[u];this.onInitData_(m,f)}}return this.estimator_.close(i,t.byteLength),this.onProgress_(this.estimator_.getEstimatedProgress(),this.estimator_.getTotalDownloaded()),s(t)});return this.groups_.set(e,a),a}queueWork(e,t){this.destroyer_.ensureNotDestroyed();let r=(this.groups_.get(e)||Promise.resolve()).then(async()=>{await t()});return this.groups_.set(e,r),r}async waitToFinish(){return await Promise.all(this.groups_.values()),this.estimator_.getTotalDownloaded()}async fetchSegment_(e){let t=K.RequestType.SEGMENT,i=this.networkingEngine_.request(t,e),r=()=>i.abort();this.abortCallbacks_.push(r);let s=await i.promise;return ye.remove(this.abortCallbacks_,r),s.data}};/*! @license
884
884
  * Shaka Player
885
885
  * Copyright 2016 Google LLC
886
886
  * SPDX-License-Identifier: Apache-2.0
@@ -896,7 +896,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
896
896
  * Shaka Player
897
897
  * Copyright 2016 Google LLC
898
898
  * SPDX-License-Identifier: Apache-2.0
899
- */var Ws=class y{constructor(e){l(this,"config_");l(this,"networkingEngine_");l(this,"openOperations_");l(this,"openDownloadManagers_");l(this,"destroyer_");l(this,"nextExternalStreamId_");if(e&&e.constructor!=dt)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.LOCAL_PLAYER_INSTANCE_REQUIRED);this.config_=null,this.networkingEngine_=null,e?(this.config_=e.getSharedConfiguration(),this.networkingEngine_=e.getNetworkingEngine(),v.assert(this.networkingEngine_,"Storage should not be initialized with a player that had |destroy| called on it.")):(this.config_=st.createDefault(),this.networkingEngine_=new K,this.networkingEngine_.configure(this.config_.networking)),this.openOperations_=[],this.openDownloadManagers_=[];let t=!e;this.destroyer_=new ci(async()=>{await Promise.all(this.openDownloadManagers_.map(s=>s.abortAll()));let i=()=>{},r=[];for(let s of this.openOperations_)r.push(s.then(i,i));await Promise.all(r),t&&await this.networkingEngine_.destroy(),this.config_=null,this.networkingEngine_=null}),this.nextExternalStreamId_=1e9}static support(){return j.getDevice().supportsMediaSource()?Lt.support():!1}destroy(){return this.destroyer_.destroy()}configure(e,t){return v.assert(typeof e=="object"||arguments.length==2,"String configs should have values!"),arguments.length==2&&typeof e=="string"&&(e=Pt.convertToConfigObject(e,t)),v.assert(typeof e=="object","Should be an object!"),v.assert(this.config_,"Cannot reconfigure storage after calling destroy."),st.mergeConfigObjects(this.config_,e)}getConfiguration(){v.assert(this.config_,"Config must not be null!");let e=st.createDefault();return st.mergeConfigObjects(e,this.config_,st.createDefault()),e}getNetworkingEngine(){return this.networkingEngine_}store(e,t,i,r,s){v.assert(this.networkingEngine_,"Cannot call |store| after calling |destroy|.");let n=this.getConfiguration(),a=async()=>(v.assert(this.networkingEngine_,"Should not call |store| after |destroy|"),i||(i=await ct.getMimeType(e,this.networkingEngine_,n.manifest.retryParameters)),me.getFactory(e,i||null)()),o=new ca(this.networkingEngine_);this.openDownloadManagers_.push(o);let c=this.store_(e,t||{},r||[],s||[],a,n,o),d=new je(c,()=>o.abortAll());return d.finally(()=>{ye.remove(this.openDownloadManagers_,o)}),this.startAbortableOperation_(d)}async store_(e,t,i,r,s,n,a){this.requireSupport_();let o=null,c=null,d=new Lt,u=null,m=null,f=null;try{o=await s();let g=await this.parseManifest(e,o,n);if(this.ensureNotDestroyed_(),!!g.presentationTimeline.isDynamic())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.CANNOT_STORE_LIVE_OFFLINE,e);for(let w of i){let M=await this.createExternalImageStream_(w,g);g.imageStreams.push(M),this.ensureNotDestroyed_()}for(let w of r){let M=await this.createExternalTextStream_(g,w.uri,w.language,w.kind,w.mime,w.codecs);g.textStreams.push(M),this.ensureNotDestroyed_()}Bi.configureClearKey(n.drm.clearKeys,g.variants);let T=g.variants.some(w=>{if(w.audio){for(let M of w.audio.drmInfos)if(M.licenseServerUri.startsWith("data:"))return!0}if(w.video){for(let M of w.video.drmInfos)if(M.licenseServerUri.startsWith("data:"))return!0}return!1}),S=n.offline.usePersistentLicense;if(T&&(S=!1),c=await this.createDrmEngine(g,w=>{f=f||w},n,S),this.ensureNotDestroyed_(),f)throw f;await this.filterManifest_(g,c,n,S),await d.init(),this.ensureNotDestroyed_(),u=await d.getActive(),this.ensureNotDestroyed_(),v.assert(c,"drmEngine should be non-null here.");let{manifestDB:b,toDownload:E}=this.makeManifestDB_(c,g,e,t,n,a,S),C=await u.cell.addManifests([b]);if(this.ensureNotDestroyed_(),m=C[0],v.assert(c,"drmEngine should be non-null here."),this.ensureNotDestroyed_(),f)throw f;await this.downloadSegments_(E,m,b,a,n,u.cell,g,c,S),this.ensureNotDestroyed_(),this.setManifestDrmFields_(g,b,c,S),await u.cell.updateManifest(m,b),this.ensureNotDestroyed_();let A=ni.manifest(u.path.mechanism,u.path.cell,m);return Gr.fromManifestDB(A,b)}catch(g){throw m!=null&&await y.cleanStoredManifest(m),f||g}finally{await d.destroy(),o&&await o.stop(),c&&await c.destroy()}}async downloadSegments_(e,t,i,r,s,n,a,o,c){let d={},u=0,m=()=>{if(this.destroyer_.destroyed()||r.isAborted())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED)},f=async(_,T)=>{for(let S of _){m();let b=S.makeSegmentRequest(s),E=S.estimateId,C=S.isInitSegment,A=async x=>{let k=S.ref,L=k.getSegmentData(!1);k.aesKey&&!L&&(x=await vt.aesDecrypt(x,k.aesKey,S.refPosition));let V=Tr.idForSegmentRef(k),ee=await n.addSegments([{data:x}]);m(),d[V]=ee[0],u+=x.byteLength},M=S.ref.getSegmentData(!1);M?r.queueData(S.groupId,M,E,C,A):r.queue(S.groupId,b,E,C,A)}await r.waitToFinish(),m(),T&&!r.isAborted()&&(this.setManifestDrmFields_(a,i,o,c),await n.updateManifest(t,i))},g=!1;try{if(this.getManifestIsEncrypted_(a)&&g&&!this.getManifestIncludesInitData_(a)){await f(e.filter(S=>S.isInitSegment),!0),m(),e=e.filter(S=>!S.isInitSegment);let _=d,T=u;d={},u=0,await y.assignSegmentsToManifest(n,t,i,_,T,()=>this.ensureNotDestroyed_()),m()}if(!g){await f(e,!1),m();let _=d,T=u;d={},u=0,await y.assignSegmentsToManifest(n,t,i,_,T,()=>m()),m(),v.assert(!i.isIncomplete,"The manifest should be complete by now")}}catch(_){let T=Object.values(d);throw await n.removeSegments(T,S=>{}),_}}static async cleanStoredManifest(e){let t=new Lt;await t.init();let i=await t.getActive(),r=ni.manifest(i.path.mechanism,i.path.cell,e);await t.destroy(),await new y().remove(r.toString())}static async assignSegmentsToManifest(e,t,i,r,s,n){let a=!1;try{let o=!0;for(let c of i.streams)if(c.type!=R.ContentType.CHAPTER)for(let d of c.segments){let u=d.pendingSegmentRefId?r[d.pendingSegmentRefId]:null;u!=null&&(d.dataKey=u,d.pendingSegmentRefId=void 0),u=d.pendingInitSegmentRefId?r[d.pendingInitSegmentRefId]:null,u!=null&&(d.initSegmentKey=u,d.pendingInitSegmentRefId=void 0),d.pendingSegmentRefId&&(o=!1),d.pendingInitSegmentRefId&&(o=!1)}i.size+=s,o&&(i.isIncomplete=!1),await e.updateManifest(t,i),a=!0,n()}catch(o){if(await y.cleanStoredManifest(t),!a){let c=Object.values(r);await e.removeSegments(c,d=>{})}throw o}}async filterManifest_(e,t,i,r){let s={width:1/0,height:1/0};se.filterByRestrictions(e,i.restrictions,s),await se.filterManifestByMediaCapabilities(t,e,r,i.drm.preferredKeySystems,i.drm.keySystemsMapping);let n=[],a=i.preferredDecodingAttributes,o=i.preferredVideo.map(b=>b.codec).filter(Boolean),c=i.preferredAudio.map(b=>b.codec).filter(Boolean),d=i.preferredText.map(b=>b.format).filter(Boolean);se.chooseCodecsAndFilterManifest(e,o,c,a,d);for(let b of e.variants)v.assert(se.isPlayable(b),'We should have already filtered by "is playable"'),n.push(se.variantToTrack(b));for(let b of e.textStreams)n.push(se.textStreamToTrack(b));for(let b of e.imageStreams)n.push(se.imageStreamToTrack(b));for(let b of e.chapterStreams)n.push(se.chapterStreamToTrack(b));let u=await i.offline.trackSelectionCallback(n),m=e.presentationTimeline.getDuration(),f=0;for(let b of u){let E=b.bandwidth*m/8;f+=E}try{if(!await i.offline.downloadSizeCallback(f))throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.STORAGE_LIMIT_REACHED)}catch(b){throw b instanceof h?b:(p.warning("downloadSizeCallback has produced an unexpected error",b),new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.DOWNLOAD_SIZE_CALLBACK_ERROR))}let g=new Set,_=new Set,T=new Set,S=new Set;for(let b of u)b.type=="variant"&&g.add(b.id),b.type=="text"&&_.add(b.id),b.type=="image"&&T.add(b.id),b.type=="chapter"&&S.add(b.id);e.variants=e.variants.filter(b=>g.has(b.id)),e.textStreams=e.textStreams.filter(b=>_.has(b.id)),e.imageStreams=e.imageStreams.filter(b=>T.has(b.id)),e.chapterStreams=e.chapterStreams.filter(b=>S.has(b.id)),y.validateManifest_(e)}makeManifestDB_(e,t,i,r,s,n,a){let o=Gr.fromManifest(i,t,0,r),c=s.offline.progressCallback,d=(E,C)=>{o.size=C,c(o,E)},u=(E,C)=>{m&&a&&f==C&&e.newInitData("cenc",E)};n.setCallbacks(d,u);let m=this.getManifestIsEncrypted_(t)&&!this.getManifestIncludesInitData_(t),f=null;if(m){let E=e.getDrmInfo();f=y.defaultSystemIds_.get(E.keySystem)}let g=new da;for(let E of t.textStreams)g.addText(E);for(let E of t.imageStreams)g.addImage(E);for(let E of t.chapterStreams)g.addImage(E);for(let E of t.variants)g.addVariant(E);let{streams:_,toDownload:T}=this.createStreams_(n,g,e,t,s),S=e.getDrmInfo();return S&&a&&(S.initData=[]),{manifestDB:{creationTime:Date.now(),originalManifestUri:i,duration:t.presentationTimeline.getDuration(),size:0,expiration:e.getExpiration(),streams:_,sessionIds:a?e.getSessionIds():[],drmInfo:S,appMetadata:r,isIncomplete:!0,sequenceMode:t.sequenceMode,type:t.type},toDownload:T}}getManifestIsEncrypted_(e){return e.variants.some(t=>{let i=t.video&&t.video.encrypted,r=t.audio&&t.audio.encrypted;return i||r})}getManifestIncludesInitData_(e){return e.variants.some(t=>{let i=t.video?t.video.drmInfos:[],r=t.audio?t.audio.drmInfos:[];return i.concat(r).some(n=>n.initData&&n.initData.length)})}setManifestDrmFields_(e,t,i,r){t.expiration=i.getExpiration();let s=i.getSessionIds();if(t.sessionIds=r?s:[],this.getManifestIsEncrypted_(e)&&r&&!s.length)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.NO_INIT_DATA_FOR_OFFLINE)}remove(e){return this.startOperation_(this.remove_(e))}async remove_(e){this.requireSupport_();let t=ni.parse(e);if(t==null||!t.isManifest())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.MALFORMED_OFFLINE_URI,e);let i=t,r=new Lt;try{await r.init();let s=await r.getCell(i.mechanism(),i.cell()),a=(await s.getManifests([i.key()]))[0];await Promise.all([this.removeFromDRM_(i,a,r),this.removeFromStorage_(s,i,a)])}finally{await r.destroy()}}static getCapabilities_(e,t){let i=[];for(let r of e.streams)t&&r.type=="video"?i.push({contentType:N.getFullType(r.mimeType,r.codecs),robustness:e.drmInfo.videoRobustness}):!t&&r.type=="audio"&&i.push({contentType:N.getFullType(r.mimeType,r.codecs),robustness:e.drmInfo.audioRobustness});return i}async removeFromDRM_(e,t,i){v.assert(this.networkingEngine_,"Cannot be destroyed"),await y.deleteLicenseFor_(this.networkingEngine_,this.config_.drm,i,t)}removeFromStorage_(e,t,i){let r=y.getAllSegmentIds_(i),s=r.length+1,n=0,a=Gr.fromManifestDB(t,i),o=c=>{n+=1,this.config_.offline.progressCallback(a,n/s)};return Promise.all([e.removeSegments(r,o),e.removeManifests([t.key()],o)])}removeEmeSessions(){return this.startOperation_(this.removeEmeSessions_())}async removeEmeSessions_(){this.requireSupport_(),v.assert(this.networkingEngine_,"Cannot be destroyed");let e=this.networkingEngine_,t=this.config_.drm,i=new Lt,r=new qs,s=!1;try{await i.init();let n=[];i.forEachEmeSessionCell(a=>n.push(a));for(let a of n){let o=await a.getAll(),c=await r.delete(t,e,o);await a.remove(c),c.length!=o.length&&(s=!0)}}finally{await i.destroy()}return!s}list(){return this.startOperation_(this.list_())}async list_(){this.requireSupport_();let e=[],t=new Lt;try{await t.init();let i=Promise.resolve();t.forEachCell((r,s)=>{i=i.then(async()=>{(await s.getAllManifests()).forEach((a,o)=>{let c=ni.manifest(r.mechanism,r.cell,o),d=Gr.fromManifestDB(c,a);e.push(d)})})}),await i}finally{await t.destroy()}return e}async parseManifest(e,t,i){let r=null,s=this.networkingEngine_;v.assert(s,"Should be initialized!");let n={networkingEngine:s,filter:()=>Promise.resolve(),makeTextStreamsForClosedCaptions:c=>{},onTimelineRegionAdded:()=>{},onEvent:()=>{},onError:c=>{r=c},isLowLatencyMode:()=>!1,updateDuration:()=>{},newDrmInfo:c=>{},onManifestUpdated:()=>{},getBandwidthEstimate:()=>i.abr.defaultBandwidthEstimate,onMetadata:()=>Promise.resolve(),disableStream:c=>{},addFont:(c,d)=>{},getStreamingRetryParameters:()=>i.streaming.retryParameters,onSegmentReceived:(c,d)=>{}};t.configure(i.manifest),this.ensureNotDestroyed_();let a=await t.start(e,n);this.ensureNotDestroyed_();let o=y.getAllStreamsFromManifest_(a);if(await Promise.all(Qi.map(o,c=>c.createSegmentIndex())),this.ensureNotDestroyed_(),r)throw r;return a}async createExternalImageStream_(e,t){let i=await this.getTextMimetype_(e);if(i!="text/vtt")throw new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.UNSUPPORTED_EXTERNAL_THUMBNAILS_URI,e);v.assert(this.networkingEngine_,"Need networking engine.");let r=await this.getTextData_(e,this.networkingEngine_,this.config_.streaming.retryParameters),s=Ue.findParser(i);if(!s)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i);let n=s(),a={periodStart:0,segmentStart:0,segmentEnd:t.presentationTimeline.getDuration(),vttOffset:0,isMpegTs:!1},o=D.toUint8(r),c=n.parseMedia(o,a,e,[]),d=[];for(let m of c){let f=null,g=()=>(f==null&&(f=fe.resolveUris([e],[m.payload])),f||[]),_=new Se(m.startTime,m.endTime,g,0,null,null,0,0,1/0);if(m.payload.includes("#xywh")){let T=m.payload.split("#xywh=")[1].split(",");T.length===4&&_.setThumbnailSprite({height:parseInt(T[3],10),positionX:parseInt(T[0],10),positionY:parseInt(T[1],10),width:parseInt(T[2],10)})}d.push(_)}let u=i;return d.length&&(u=await ct.getMimeType(d[0].getUris()[0],this.networkingEngine_,this.config_.manifest.retryParameters)),se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(d),mimeType:u||"",kind:"",language:"und",type:R.ContentType.IMAGE,tilesLayout:"1x1",external:!0})}async createExternalTextStream_(e,t,i,r,s,n){s||(s=await this.getTextMimetype_(t));let a=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:Ze.forSingleSegment(0,e.presentationTimeline.getDuration(),[t]),mimeType:s||"",codecs:n||"",kind:r,language:i,originalLanguage:i,type:R.ContentType.TEXT,external:!0}),o=N.getFullType(a.mimeType,a.codecs);if(!Ue.isTypeSupported(o))throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,s);return a}async getTextMimetype_(e){let t;try{v.assert(this.networkingEngine_,"Need networking engine."),t=await ct.getMimeType(e,this.networkingEngine_,this.config_.streaming.retryParameters)}catch(i){}if(t)return t;throw p.error("The mimeType has not been provided and it could not be deduced from its uri."),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.TEXT_COULD_NOT_GUESS_MIME_TYPE,e)}async getTextData_(e,t,i){let r=K.RequestType.SEGMENT,s=K.makeRequest([e],i);return s.method="GET",(await t.request(r,s).promise).data}async createDrmEngine(e,t,i,r){v.assert(this.networkingEngine_,"Cannot call |createDrmEngine| after |destroy|");let s=new Bi({netEngine:this.networkingEngine_,onError:t,onKeyStatus:()=>{},onExpirationUpdated:()=>{},onEvent:()=>{}});return s.configure(i.drm),await s.initForStorage(e.variants,r),r&&await s.createOrLoad(),s}createStreams_(e,t,i,r,s){let n=new Map,a=y.getAllStreamsFromManifest_(r),o=new Map;for(let c of a){let d=this.createStream_(e,t,r,c,s,n);o.set(c.id,d)}for(let c of r.variants)c.audio&&o.get(c.audio.id).variantIds.push(c.id),c.video&&o.get(c.video.id).variantIds.push(c.id);return{streams:Array.from(o.values()),toDownload:Array.from(n.values())}}createStream_(e,t,i,r,s,n){let a={id:r.id,originalId:r.originalId,groupId:r.groupId,primary:r.primary,type:r.type,mimeType:r.mimeType,codecs:r.codecs,supplementalCodecs:"",frameRate:r.frameRate,pixelAspectRatio:r.pixelAspectRatio,hdr:r.hdr,colorGamut:r.colorGamut,videoLayout:r.videoLayout,kind:r.kind,language:r.language,originalLanguage:r.originalLanguage,label:r.label,width:r.width||null,height:r.height||null,encrypted:r.encrypted,keyIds:r.keyIds,segments:[],variantIds:[],roles:r.roles,forced:r.forced,channelsCount:r.channelsCount,audioSamplingRate:r.audioSamplingRate,spatialAudio:r.spatialAudio,closedCaptions:r.closedCaptions,tilesLayout:r.tilesLayout,external:r.external,fastSwitching:r.fastSwitching,isAudioMuxedInVideo:r.isAudioMuxedInVideo,isIframe:r.isIframe},o=i.presentationTimeline.getSegmentAvailabilityStart(),c=s.offline.numberOfParallelDownloads,d=c===0?r.id:0;return y.forEachSegment_(r,o,(u,m)=>{let f=Tr.idForSegmentRef(u),g,_=null;if(r.type==R.ContentType.CHAPTER){let S=u.getMetadata();S&&(_=S.title)}if(!_&&!n.has(f)){let S=e.addDownloadEstimate(t.getSegmentEstimate(r.id,u)),b=new Tr(u,S,d,!1,m);n.set(f,b)}if(u.initSegmentReference&&(g=Tr.idForSegmentRef(u.initSegmentReference),!n.has(g))){let S=e.addDownloadEstimate(t.getInitSegmentEstimate(r.id)),b=new Tr(u.initSegmentReference,S,d,!0,m);n.set(g,b)}let T={pendingInitSegmentRefId:g,initSegmentKey:g?0:null,startTime:u.startTime,endTime:u.endTime,appendWindowStart:u.appendWindowStart,appendWindowEnd:u.appendWindowEnd,timestampOffset:u.timestampOffset,tilesLayout:u.tilesLayout,pendingSegmentRefId:f,dataKey:0,mimeType:u.mimeType,codecs:u.codecs,thumbnailSprite:u.thumbnailSprite,chapterTitle:_};a.segments.push(T),c!==0&&(d=(d+1)%c)}),a}static forEachSegment_(e,t,i){let r=e.segmentIndex.find(t);if(r==null)return;let s=e.segmentIndex.get(r);for(;s;)i(s,r),s=e.segmentIndex.get(++r)}ensureNotDestroyed_(){if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED)}requireSupport_(){if(!y.support())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.STORAGE_NOT_SUPPORTED)}async startOperation_(e){this.openOperations_.push(e);try{return await e}finally{ye.remove(this.openOperations_,e)}}startAbortableOperation_(e){let t=e.promise;return this.openOperations_.push(t),e.finally(()=>{ye.remove(this.openOperations_,t)})}static getAllSegmentIds_(e){let t=new Set;for(let i of e.streams)for(let r of i.segments)r.initSegmentKey!=null&&t.add(r.initSegmentKey),t.add(r.dataKey);return Array.from(t)}static async deleteAll(){let e=new Lt;try{await e.erase()}finally{await e.destroy()}}static async deleteLicenseFor_(e,t,i,r){if(!r.drmInfo)return;let s=i.getEmeSessionCell(),n=r.sessionIds.map(c=>({sessionId:c,keySystem:r.drmInfo.keySystem,licenseUri:r.drmInfo.licenseServerUri,serverCertificate:r.drmInfo.serverCertificate,audioCapabilities:y.getCapabilities_(r,!1),videoCapabilities:y.getCapabilities_(r,!0)})),o=await new qs().delete(t,e,n);await s.remove(o),await s.add(n.filter(c=>!o.includes(c.sessionId)))}static getAllStreamsFromManifest_(e){let t=new Set;for(let i of e.variants)i.audio&&t.add(i.audio),i.video&&t.add(i.video);for(let i of e.textStreams)t.add(i);for(let i of e.imageStreams)t.add(i);for(let i of e.chapterStreams)t.add(i);return t}static validateManifest_(e){let t=new Set(e.variants.map(s=>s.video)),i=new Set(e.variants.map(s=>s.audio)),r=e.textStreams;t.size>1&&p.warning("Multiple video tracks selected to be stored");for(let s of i)for(let n of i)s!=n&&s.language==n.language&&p.warning("Similar audio tracks were selected to be stored",s.id,n.id);for(let s of r)for(let n of r)s!=n&&s.language==n.language&&p.warning("Similar text tracks were selected to be stored",s.id,n.id)}};Ws.defaultSystemIds_=new Map().set("org.w3.clearkey","1077efecc0b24d02ace33c1e52e2fb4b").set("com.widevine.alpha","edef8ba979d64acea3c827dcd51d21ed").set("com.microsoft.playready","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.recommendation","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.software","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.hardware","9a04f07998404286ab92e65be0885f95").set("com.huawei.wiseplay","3d5e6d359b9a41e8b843dd3c6e72c42c");dt.registerSupportPlugin("offline",Ws.support);/*! @license
899
+ */var Ws=class y{constructor(e){l(this,"config_");l(this,"networkingEngine_");l(this,"openOperations_");l(this,"openDownloadManagers_");l(this,"destroyer_");l(this,"nextExternalStreamId_");if(e&&e.constructor!=dt)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.LOCAL_PLAYER_INSTANCE_REQUIRED);this.config_=null,this.networkingEngine_=null,e?(this.config_=e.getSharedConfiguration(),this.networkingEngine_=e.getNetworkingEngine(),v.assert(this.networkingEngine_,"Storage should not be initialized with a player that had |destroy| called on it.")):(this.config_=st.createDefault(),this.networkingEngine_=new K,this.networkingEngine_.configure(this.config_.networking)),this.openOperations_=[],this.openDownloadManagers_=[];let t=!e;this.destroyer_=new ci(async()=>{await Promise.all(this.openDownloadManagers_.map(s=>s.abortAll()));let i=()=>{},r=[];for(let s of this.openOperations_)r.push(s.then(i,i));await Promise.all(r),t&&await this.networkingEngine_.destroy(),this.config_=null,this.networkingEngine_=null}),this.nextExternalStreamId_=1e9}static support(){return j.getDevice().supportsMediaSource()?Lt.support():!1}destroy(){return this.destroyer_.destroy()}configure(e,t){return v.assert(typeof e=="object"||arguments.length==2,"String configs should have values!"),arguments.length==2&&typeof e=="string"&&(e=Pt.convertToConfigObject(e,t)),v.assert(typeof e=="object","Should be an object!"),v.assert(this.config_,"Cannot reconfigure storage after calling destroy."),st.mergeConfigObjects(this.config_,e)}getConfiguration(){v.assert(this.config_,"Config must not be null!");let e=st.createDefault();return st.mergeConfigObjects(e,this.config_,st.createDefault()),e}getNetworkingEngine(){return this.networkingEngine_}store(e,t,i,r,s){v.assert(this.networkingEngine_,"Cannot call |store| after calling |destroy|.");let n=this.getConfiguration(),a=async()=>(v.assert(this.networkingEngine_,"Should not call |store| after |destroy|"),i||(i=await ct.getMimeType(e,this.networkingEngine_,n.manifest.retryParameters)),me.getFactory(e,i||null)()),o=new ca(this.networkingEngine_);this.openDownloadManagers_.push(o);let c=this.store_(e,t||{},r||[],s||[],a,n,o),d=new je(c,()=>o.abortAll());return d.finally(()=>{ye.remove(this.openDownloadManagers_,o)}),this.startAbortableOperation_(d)}async store_(e,t,i,r,s,n,a){this.requireSupport_();let o=null,c=null,d=new Lt,u=null,m=null,f=null;try{o=await s();let g=await this.parseManifest(e,o,n);if(this.ensureNotDestroyed_(),!!g.presentationTimeline.isDynamic())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.CANNOT_STORE_LIVE_OFFLINE,e);for(let w of i){let M=await this.createExternalImageStream_(w,g);g.imageStreams.push(M),this.ensureNotDestroyed_()}for(let w of r){let M=await this.createExternalTextStream_(g,w.uri,w.language,w.kind,w.mime,w.codecs);g.textStreams.push(M),this.ensureNotDestroyed_()}Bi.configureClearKey(n.drm.clearKeys,g.variants);let T=g.variants.some(w=>{if(w.audio){for(let M of w.audio.drmInfos)if(M.licenseServerUri.startsWith("data:"))return!0}if(w.video){for(let M of w.video.drmInfos)if(M.licenseServerUri.startsWith("data:"))return!0}return!1}),S=n.offline.usePersistentLicense;if(T&&(S=!1),c=await this.createDrmEngine(g,w=>{f=f||w},n,S),this.ensureNotDestroyed_(),f)throw f;await this.filterManifest_(g,c,n,S),await d.init(),this.ensureNotDestroyed_(),u=await d.getActive(),this.ensureNotDestroyed_(),v.assert(c,"drmEngine should be non-null here.");let{manifestDB:b,toDownload:E}=this.makeManifestDB_(c,g,e,t,n,a,S),C=await u.cell.addManifests([b]);if(this.ensureNotDestroyed_(),m=C[0],v.assert(c,"drmEngine should be non-null here."),this.ensureNotDestroyed_(),f)throw f;await this.downloadSegments_(E,m,b,a,n,u.cell,g,c,S),this.ensureNotDestroyed_(),this.setManifestDrmFields_(g,b,c,S),await u.cell.updateManifest(m,b),this.ensureNotDestroyed_();let A=ni.manifest(u.path.mechanism,u.path.cell,m);return Gr.fromManifestDB(A,b)}catch(g){throw m!=null&&await y.cleanStoredManifest(m),f||g}finally{await d.destroy(),o&&await o.stop(),c&&await c.destroy()}}async downloadSegments_(e,t,i,r,s,n,a,o,c){let d={},u=0,m=()=>{if(this.destroyer_.destroyed()||r.isAborted())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED)},f=async(_,T)=>{for(let S of _){m();let b=S.makeSegmentRequest(s),E=S.estimateId,C=S.isInitSegment,A=async x=>{let k=S.ref,L=k.getSegmentData(!1);k.aesKey&&!L&&(x=await vt.aesDecrypt(x,k.aesKey,S.refPosition));let V=Tr.idForSegmentRef(k),ee=await n.addSegments([{data:x}]);m(),d[V]=ee[0],u+=x.byteLength},M=S.ref.getSegmentData(!1);M?r.queueData(S.groupId,M,E,C,A):r.queue(S.groupId,b,E,C,A)}await r.waitToFinish(),m(),T&&!r.isAborted()&&(this.setManifestDrmFields_(a,i,o,c),await n.updateManifest(t,i))},g=!1;try{if(this.getManifestIsEncrypted_(a)&&g&&!this.getManifestIncludesInitData_(a)){await f(e.filter(S=>S.isInitSegment),!0),m(),e=e.filter(S=>!S.isInitSegment);let _=d,T=u;d={},u=0,await y.assignSegmentsToManifest(n,t,i,_,T,()=>this.ensureNotDestroyed_()),m()}if(!g){await f(e,!1),m();let _=d,T=u;d={},u=0,await y.assignSegmentsToManifest(n,t,i,_,T,()=>m()),m(),v.assert(!i.isIncomplete,"The manifest should be complete by now")}}catch(_){let T=Object.values(d);throw await n.removeSegments(T,S=>{}),_}}static async cleanStoredManifest(e){let t=new Lt;await t.init();let i=await t.getActive(),r=ni.manifest(i.path.mechanism,i.path.cell,e);await t.destroy(),await new y().remove(r.toString())}static async assignSegmentsToManifest(e,t,i,r,s,n){let a=!1;try{let o=!0;for(let c of i.streams)if(c.type!=R.ContentType.CHAPTER)for(let d of c.segments){let u=d.pendingSegmentRefId?r[d.pendingSegmentRefId]:null;u!=null&&(d.dataKey=u,d.pendingSegmentRefId=void 0),u=d.pendingInitSegmentRefId?r[d.pendingInitSegmentRefId]:null,u!=null&&(d.initSegmentKey=u,d.pendingInitSegmentRefId=void 0),d.pendingSegmentRefId&&(o=!1),d.pendingInitSegmentRefId&&(o=!1)}i.size+=s,o&&(i.isIncomplete=!1),await e.updateManifest(t,i),a=!0,n()}catch(o){if(await y.cleanStoredManifest(t),!a){let c=Object.values(r);await e.removeSegments(c,d=>{})}throw o}}async filterManifest_(e,t,i,r){let s={width:1/0,height:1/0};se.filterByRestrictions(e,i.restrictions,s),await se.filterManifestByMediaCapabilities(t,e,r,i.drm.preferredKeySystems,i.drm.keySystemsMapping);let n=[],a=i.preferredDecodingAttributes,o=i.preferredVideo.map(b=>b.codec).filter(Boolean),c=i.preferredAudio.map(b=>b.codec).filter(Boolean),d=i.preferredText.map(b=>b.format).filter(Boolean);se.chooseCodecsAndFilterManifest(e,o,c,a,d);for(let b of e.variants)v.assert(se.isPlayable(b),'We should have already filtered by "is playable"'),n.push(se.variantToTrack(b));for(let b of e.textStreams)n.push(se.textStreamToTrack(b));for(let b of e.imageStreams)n.push(se.imageStreamToTrack(b));for(let b of e.chapterStreams)n.push(se.chapterStreamToTrack(b));let u=await i.offline.trackSelectionCallback(n),m=e.presentationTimeline.getDuration(),f=0;for(let b of u){let E=b.bandwidth*m/8;f+=E}try{if(!await i.offline.downloadSizeCallback(f))throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.STORAGE_LIMIT_REACHED)}catch(b){throw b instanceof h?b:(p.warning("downloadSizeCallback has produced an unexpected error",b),new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.DOWNLOAD_SIZE_CALLBACK_ERROR))}let g=new Set,_=new Set,T=new Set,S=new Set;for(let b of u)b.type=="variant"&&g.add(b.id),b.type=="text"&&_.add(b.id),b.type=="image"&&T.add(b.id),b.type=="chapter"&&S.add(b.id);e.variants=e.variants.filter(b=>g.has(b.id)),e.textStreams=e.textStreams.filter(b=>_.has(b.id)),e.imageStreams=e.imageStreams.filter(b=>T.has(b.id)),e.chapterStreams=e.chapterStreams.filter(b=>S.has(b.id)),y.validateManifest_(e)}makeManifestDB_(e,t,i,r,s,n,a){let o=Gr.fromManifest(i,t,0,r),c=s.offline.progressCallback,d=(E,C)=>{o.size=C,c(o,E)},u=(E,C)=>{m&&a&&f==C&&e.newInitData("cenc",E)};n.setCallbacks(d,u);let m=this.getManifestIsEncrypted_(t)&&!this.getManifestIncludesInitData_(t),f=null;if(m){let E=e.getDrmInfo();f=y.defaultSystemIds_.get(E.keySystem)}let g=new da;for(let E of t.textStreams)g.addText(E);for(let E of t.imageStreams)g.addImage(E);for(let E of t.chapterStreams)g.addImage(E);for(let E of t.variants)g.addVariant(E);let{streams:_,toDownload:T}=this.createStreams_(n,g,e,t,s),S=e.getDrmInfo();return S&&a&&(S.initData=[]),{manifestDB:{creationTime:Date.now(),originalManifestUri:i,duration:t.presentationTimeline.getDuration(),size:0,expiration:e.getExpiration(),streams:_,sessionIds:a?e.getSessionIds():[],drmInfo:S,appMetadata:r,isIncomplete:!0,sequenceMode:t.sequenceMode,type:t.type},toDownload:T}}getManifestIsEncrypted_(e){return e.variants.some(t=>{let i=t.video&&t.video.encrypted,r=t.audio&&t.audio.encrypted;return i||r})}getManifestIncludesInitData_(e){return e.variants.some(t=>{let i=t.video?t.video.drmInfos:[],r=t.audio?t.audio.drmInfos:[];return i.concat(r).some(n=>n.initData&&n.initData.length)})}setManifestDrmFields_(e,t,i,r){t.expiration=i.getExpiration();let s=i.getSessionIds();if(t.sessionIds=r?s:[],this.getManifestIsEncrypted_(e)&&r&&!s.length)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.NO_INIT_DATA_FOR_OFFLINE)}remove(e){return this.startOperation_(this.remove_(e))}async remove_(e){this.requireSupport_();let t=ni.parse(e);if(t==null||!t.isManifest())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.MALFORMED_OFFLINE_URI,e);let i=t,r=new Lt;try{await r.init();let s=await r.getCell(i.mechanism(),i.cell()),a=(await s.getManifests([i.key()]))[0];await Promise.all([this.removeFromDRM_(i,a,r),this.removeFromStorage_(s,i,a)])}finally{await r.destroy()}}static getCapabilities_(e,t){let i=[];for(let r of e.streams)t&&r.type=="video"?i.push({contentType:O.getFullType(r.mimeType,r.codecs),robustness:e.drmInfo.videoRobustness}):!t&&r.type=="audio"&&i.push({contentType:O.getFullType(r.mimeType,r.codecs),robustness:e.drmInfo.audioRobustness});return i}async removeFromDRM_(e,t,i){v.assert(this.networkingEngine_,"Cannot be destroyed"),await y.deleteLicenseFor_(this.networkingEngine_,this.config_.drm,i,t)}removeFromStorage_(e,t,i){let r=y.getAllSegmentIds_(i),s=r.length+1,n=0,a=Gr.fromManifestDB(t,i),o=c=>{n+=1,this.config_.offline.progressCallback(a,n/s)};return Promise.all([e.removeSegments(r,o),e.removeManifests([t.key()],o)])}removeEmeSessions(){return this.startOperation_(this.removeEmeSessions_())}async removeEmeSessions_(){this.requireSupport_(),v.assert(this.networkingEngine_,"Cannot be destroyed");let e=this.networkingEngine_,t=this.config_.drm,i=new Lt,r=new qs,s=!1;try{await i.init();let n=[];i.forEachEmeSessionCell(a=>n.push(a));for(let a of n){let o=await a.getAll(),c=await r.delete(t,e,o);await a.remove(c),c.length!=o.length&&(s=!0)}}finally{await i.destroy()}return!s}list(){return this.startOperation_(this.list_())}async list_(){this.requireSupport_();let e=[],t=new Lt;try{await t.init();let i=Promise.resolve();t.forEachCell((r,s)=>{i=i.then(async()=>{(await s.getAllManifests()).forEach((a,o)=>{let c=ni.manifest(r.mechanism,r.cell,o),d=Gr.fromManifestDB(c,a);e.push(d)})})}),await i}finally{await t.destroy()}return e}async parseManifest(e,t,i){let r=null,s=this.networkingEngine_;v.assert(s,"Should be initialized!");let n={networkingEngine:s,filter:()=>Promise.resolve(),makeTextStreamsForClosedCaptions:c=>{},onTimelineRegionAdded:()=>{},onEvent:()=>{},onError:c=>{r=c},isLowLatencyMode:()=>!1,updateDuration:()=>{},newDrmInfo:c=>{},onManifestUpdated:()=>{},getBandwidthEstimate:()=>i.abr.defaultBandwidthEstimate,onMetadata:()=>Promise.resolve(),disableStream:c=>{},addFont:(c,d)=>{},getStreamingRetryParameters:()=>i.streaming.retryParameters,onSegmentReceived:(c,d)=>{}};t.configure(i.manifest),this.ensureNotDestroyed_();let a=await t.start(e,n);this.ensureNotDestroyed_();let o=y.getAllStreamsFromManifest_(a);if(await Promise.all(Qi.map(o,c=>c.createSegmentIndex())),this.ensureNotDestroyed_(),r)throw r;return a}async createExternalImageStream_(e,t){let i=await this.getTextMimetype_(e);if(i!="text/vtt")throw new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.UNSUPPORTED_EXTERNAL_THUMBNAILS_URI,e);v.assert(this.networkingEngine_,"Need networking engine.");let r=await this.getTextData_(e,this.networkingEngine_,this.config_.streaming.retryParameters),s=Ue.findParser(i);if(!s)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i);let n=s(),a={periodStart:0,segmentStart:0,segmentEnd:t.presentationTimeline.getDuration(),vttOffset:0,isMpegTs:!1},o=D.toUint8(r),c=n.parseMedia(o,a,e,[]),d=[];for(let m of c){let f=null,g=()=>(f==null&&(f=fe.resolveUris([e],[m.payload])),f||[]),_=new Se(m.startTime,m.endTime,g,0,null,null,0,0,1/0);if(m.payload.includes("#xywh")){let T=m.payload.split("#xywh=")[1].split(",");T.length===4&&_.setThumbnailSprite({height:parseInt(T[3],10),positionX:parseInt(T[0],10),positionY:parseInt(T[1],10),width:parseInt(T[2],10)})}d.push(_)}let u=i;return d.length&&(u=await ct.getMimeType(d[0].getUris()[0],this.networkingEngine_,this.config_.manifest.retryParameters)),se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(d),mimeType:u||"",kind:"",language:"und",type:R.ContentType.IMAGE,tilesLayout:"1x1",external:!0})}async createExternalTextStream_(e,t,i,r,s,n){s||(s=await this.getTextMimetype_(t));let a=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:Ze.forSingleSegment(0,e.presentationTimeline.getDuration(),[t]),mimeType:s||"",codecs:n||"",kind:r,language:i,originalLanguage:i,type:R.ContentType.TEXT,external:!0}),o=O.getFullType(a.mimeType,a.codecs);if(!Ue.isTypeSupported(o))throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,s);return a}async getTextMimetype_(e){let t;try{v.assert(this.networkingEngine_,"Need networking engine."),t=await ct.getMimeType(e,this.networkingEngine_,this.config_.streaming.retryParameters)}catch(i){}if(t)return t;throw p.error("The mimeType has not been provided and it could not be deduced from its uri."),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.TEXT_COULD_NOT_GUESS_MIME_TYPE,e)}async getTextData_(e,t,i){let r=K.RequestType.SEGMENT,s=K.makeRequest([e],i);return s.method="GET",(await t.request(r,s).promise).data}async createDrmEngine(e,t,i,r){v.assert(this.networkingEngine_,"Cannot call |createDrmEngine| after |destroy|");let s=new Bi({netEngine:this.networkingEngine_,onError:t,onKeyStatus:()=>{},onExpirationUpdated:()=>{},onEvent:()=>{}});return s.configure(i.drm),await s.initForStorage(e.variants,r),r&&await s.createOrLoad(),s}createStreams_(e,t,i,r,s){let n=new Map,a=y.getAllStreamsFromManifest_(r),o=new Map;for(let c of a){let d=this.createStream_(e,t,r,c,s,n);o.set(c.id,d)}for(let c of r.variants)c.audio&&o.get(c.audio.id).variantIds.push(c.id),c.video&&o.get(c.video.id).variantIds.push(c.id);return{streams:Array.from(o.values()),toDownload:Array.from(n.values())}}createStream_(e,t,i,r,s,n){let a={id:r.id,originalId:r.originalId,groupId:r.groupId,primary:r.primary,type:r.type,mimeType:r.mimeType,codecs:r.codecs,supplementalCodecs:"",frameRate:r.frameRate,pixelAspectRatio:r.pixelAspectRatio,hdr:r.hdr,colorGamut:r.colorGamut,videoLayout:r.videoLayout,kind:r.kind,language:r.language,originalLanguage:r.originalLanguage,label:r.label,width:r.width||null,height:r.height||null,encrypted:r.encrypted,keyIds:r.keyIds,segments:[],variantIds:[],roles:r.roles,forced:r.forced,channelsCount:r.channelsCount,audioSamplingRate:r.audioSamplingRate,spatialAudio:r.spatialAudio,closedCaptions:r.closedCaptions,tilesLayout:r.tilesLayout,external:r.external,fastSwitching:r.fastSwitching,isAudioMuxedInVideo:r.isAudioMuxedInVideo,isIframe:r.isIframe},o=i.presentationTimeline.getSegmentAvailabilityStart(),c=s.offline.numberOfParallelDownloads,d=c===0?r.id:0;return y.forEachSegment_(r,o,(u,m)=>{let f=Tr.idForSegmentRef(u),g,_=null;if(r.type==R.ContentType.CHAPTER){let S=u.getMetadata();S&&(_=S.title)}if(!_&&!n.has(f)){let S=e.addDownloadEstimate(t.getSegmentEstimate(r.id,u)),b=new Tr(u,S,d,!1,m);n.set(f,b)}if(u.initSegmentReference&&(g=Tr.idForSegmentRef(u.initSegmentReference),!n.has(g))){let S=e.addDownloadEstimate(t.getInitSegmentEstimate(r.id)),b=new Tr(u.initSegmentReference,S,d,!0,m);n.set(g,b)}let T={pendingInitSegmentRefId:g,initSegmentKey:g?0:null,startTime:u.startTime,endTime:u.endTime,appendWindowStart:u.appendWindowStart,appendWindowEnd:u.appendWindowEnd,timestampOffset:u.timestampOffset,tilesLayout:u.tilesLayout,pendingSegmentRefId:f,dataKey:0,mimeType:u.mimeType,codecs:u.codecs,thumbnailSprite:u.thumbnailSprite,chapterTitle:_};a.segments.push(T),c!==0&&(d=(d+1)%c)}),a}static forEachSegment_(e,t,i){let r=e.segmentIndex.find(t);if(r==null)return;let s=e.segmentIndex.get(r);for(;s;)i(s,r),s=e.segmentIndex.get(++r)}ensureNotDestroyed_(){if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED)}requireSupport_(){if(!y.support())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.STORAGE_NOT_SUPPORTED)}async startOperation_(e){this.openOperations_.push(e);try{return await e}finally{ye.remove(this.openOperations_,e)}}startAbortableOperation_(e){let t=e.promise;return this.openOperations_.push(t),e.finally(()=>{ye.remove(this.openOperations_,t)})}static getAllSegmentIds_(e){let t=new Set;for(let i of e.streams)for(let r of i.segments)r.initSegmentKey!=null&&t.add(r.initSegmentKey),t.add(r.dataKey);return Array.from(t)}static async deleteAll(){let e=new Lt;try{await e.erase()}finally{await e.destroy()}}static async deleteLicenseFor_(e,t,i,r){if(!r.drmInfo)return;let s=i.getEmeSessionCell(),n=r.sessionIds.map(c=>({sessionId:c,keySystem:r.drmInfo.keySystem,licenseUri:r.drmInfo.licenseServerUri,serverCertificate:r.drmInfo.serverCertificate,audioCapabilities:y.getCapabilities_(r,!1),videoCapabilities:y.getCapabilities_(r,!0)})),o=await new qs().delete(t,e,n);await s.remove(o),await s.add(n.filter(c=>!o.includes(c.sessionId)))}static getAllStreamsFromManifest_(e){let t=new Set;for(let i of e.variants)i.audio&&t.add(i.audio),i.video&&t.add(i.video);for(let i of e.textStreams)t.add(i);for(let i of e.imageStreams)t.add(i);for(let i of e.chapterStreams)t.add(i);return t}static validateManifest_(e){let t=new Set(e.variants.map(s=>s.video)),i=new Set(e.variants.map(s=>s.audio)),r=e.textStreams;t.size>1&&p.warning("Multiple video tracks selected to be stored");for(let s of i)for(let n of i)s!=n&&s.language==n.language&&p.warning("Similar audio tracks were selected to be stored",s.id,n.id);for(let s of r)for(let n of r)s!=n&&s.language==n.language&&p.warning("Similar text tracks were selected to be stored",s.id,n.id)}};Ws.defaultSystemIds_=new Map().set("org.w3.clearkey","1077efecc0b24d02ace33c1e52e2fb4b").set("com.widevine.alpha","edef8ba979d64acea3c827dcd51d21ed").set("com.microsoft.playready","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.recommendation","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.software","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.hardware","9a04f07998404286ab92e65be0885f95").set("com.huawei.wiseplay","3d5e6d359b9a41e8b843dd3c6e72c42c");dt.registerSupportPlugin("offline",Ws.support);/*! @license
900
900
  * Shaka Player
901
901
  * Copyright 2016 Google LLC
902
902
  * SPDX-License-Identifier: Apache-2.0
@@ -964,11 +964,11 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
964
964
  * Shaka Player
965
965
  * Copyright 2016 Google LLC
966
966
  * SPDX-License-Identifier: Apache-2.0
967
- */var Sa=class y{static install(){p.debug("MediaSource.install");let e=ie.BrowserEngine,t=j.getDevice(),i=t.getBrowserEngine()===e.WEBKIT?t.getVersion():null;!window.MediaSource&&!window.ManagedMediaSource?p.info("No MSE implementation available."):i&&window.MediaSource?i<=12?(p.info("Patching Safari 8-12 MSE bugs."),y.stubAbort_(),y.patchRemovalRange_()):i<=15&&(p.info("Patching Safari 13 & 14 & 15 MSE bugs."),y.stubAbort_()):p.info("Using native MSE as-is.");for(let r of t.rejectCodecs())p.info(`Rejecting ${r}.`),y.rejectCodec_(r);(window.MediaSource||window.ManagedMediaSource)&&y.rejectContainer_("mp2t"),window.MediaSource&&y.isTypeSupported('video/webm; codecs="vp9"')&&!y.isTypeSupported('video/webm; codecs="vp09.00.10.08"')&&(p.info("Patching vp09 support queries."),y.patchVp09_())}static stubAbort_(){let e=y.prototype.addSourceBuffer;y.prototype.addSourceBuffer=function(...t){let i=e.apply(this,t);return i.abort=function(){},i}}static patchRemovalRange_(){let e=SourceBuffer.prototype.remove;SourceBuffer.prototype.remove=function(t,i){return e.call(this,t,i-.001)}}static rejectContainer_(e){if(window.MediaSource){let t=y.isTypeSupported.bind(y);y.isTypeSupported=i=>N.getContainerType(i)!=e&&t(i)}if(window.ManagedMediaSource){let t=ManagedMediaSource.isTypeSupported.bind(ManagedMediaSource);window.ManagedMediaSource.isTypeSupported=i=>N.getContainerType(i)!=e&&t(i)}}static rejectCodec_(e){let t=y.isTypeSupported.bind(y);if(y.isTypeSupported=i=>N.getCodecBase(i)!=e&&t(i),window.ManagedMediaSource){let i=ManagedMediaSource.isTypeSupported.bind(ManagedMediaSource);window.ManagedMediaSource.isTypeSupported=r=>N.getCodecBase(r)!=e&&i(r)}}static patchVp09_(){let e=y.isTypeSupported;j.getDevice().supportStandardVP9Checking()&&(y.isTypeSupported=t=>{let i=t.split(/ *; */),r=i.findIndex(o=>o.startsWith("codecs="));if(r<0)return e(t);let n=i[r].replace("codecs=","").replace(/"/g,"").split(/\s*,\s*/),a=n.findIndex(o=>o.startsWith("vp09"));return a>=0&&(n[a]="vp9",i[r]='codecs="'+n.join(",")+'"',t=i.join("; ")),e(t)})}};Re.register(Sa.install);/*! @license
967
+ */var Sa=class y{static install(){p.debug("MediaSource.install");let e=ie.BrowserEngine,t=j.getDevice(),i=t.getBrowserEngine()===e.WEBKIT?t.getVersion():null;!window.MediaSource&&!window.ManagedMediaSource?p.info("No MSE implementation available."):i&&window.MediaSource?i<=12?(p.info("Patching Safari 8-12 MSE bugs."),y.stubAbort_(),y.patchRemovalRange_()):i<=15&&(p.info("Patching Safari 13 & 14 & 15 MSE bugs."),y.stubAbort_()):p.info("Using native MSE as-is.");for(let r of t.rejectCodecs())p.info(`Rejecting ${r}.`),y.rejectCodec_(r);(window.MediaSource||window.ManagedMediaSource)&&y.rejectContainer_("mp2t"),window.MediaSource&&y.isTypeSupported('video/webm; codecs="vp9"')&&!y.isTypeSupported('video/webm; codecs="vp09.00.10.08"')&&(p.info("Patching vp09 support queries."),y.patchVp09_())}static stubAbort_(){let e=y.prototype.addSourceBuffer;y.prototype.addSourceBuffer=function(...t){let i=e.apply(this,t);return i.abort=function(){},i}}static patchRemovalRange_(){let e=SourceBuffer.prototype.remove;SourceBuffer.prototype.remove=function(t,i){return e.call(this,t,i-.001)}}static rejectContainer_(e){if(window.MediaSource){let t=y.isTypeSupported.bind(y);y.isTypeSupported=i=>O.getContainerType(i)!=e&&t(i)}if(window.ManagedMediaSource){let t=ManagedMediaSource.isTypeSupported.bind(ManagedMediaSource);window.ManagedMediaSource.isTypeSupported=i=>O.getContainerType(i)!=e&&t(i)}}static rejectCodec_(e){let t=y.isTypeSupported.bind(y);if(y.isTypeSupported=i=>O.getCodecBase(i)!=e&&t(i),window.ManagedMediaSource){let i=ManagedMediaSource.isTypeSupported.bind(ManagedMediaSource);window.ManagedMediaSource.isTypeSupported=r=>O.getCodecBase(r)!=e&&i(r)}}static patchVp09_(){let e=y.isTypeSupported;j.getDevice().supportStandardVP9Checking()&&(y.isTypeSupported=t=>{let i=t.split(/ *; */),r=i.findIndex(o=>o.startsWith("codecs="));if(r<0)return e(t);let n=i[r].replace("codecs=","").replace(/"/g,"").split(/\s*,\s*/),a=n.findIndex(o=>o.startsWith("vp09"));return a>=0&&(n[a]="vp9",i[r]='codecs="'+n.join(",")+'"',t=i.join("; ")),e(t)})}};Re.register(Sa.install);/*! @license
968
968
  * Shaka Player
969
969
  * Copyright 2016 Google LLC
970
970
  * SPDX-License-Identifier: Apache-2.0
971
- */var Si=class Si{static install(){if(j.getDevice().supportsMediaCapabilities()){p.info("MediaCapabilities: Native mediaCapabilities support found.");return}p.info("MediaCapabilities: install"),navigator.mediaCapabilities||(navigator.mediaCapabilities={}),Si.originalMcap=navigator.mediaCapabilities,navigator.mediaCapabilities.decodingInfo=Si.decodingInfo_}static async decodingInfo_(e){let t={supported:!1,powerEfficient:!0,smooth:!0,keySystemAccess:null,configuration:e},i=j.getDevice(),r=e.video,s=e.audio;if(e.type=="media-source"){if(!i.supportsMediaSource()||r&&!await Si.checkVideoSupport_(r)||s&&!await Si.checkAudioSupport_(s))return t}else if(e.type=="file"){if(r){let n=r.contentType;if(!i.supportsMediaType(n))return t}if(s){let n=s.contentType;if(!i.supportsMediaType(n))return t}}else return t;if(e.keySystemConfiguration){let n=e.keySystemConfiguration,a=await Si.checkDrmSupport_(r,s,n);a&&(t.supported=!0,t.keySystemAccess=a)}else return t.supported=!0,t;return t}static async checkVideoSupport_(e){return j.getDevice().getDeviceType()===ie.DeviceType.CAST?await Si.canCastDisplayType_(e):Ke.isTypeSupported(e.contentType)}static async checkAudioSupport_(e){let i=j.getDevice().getDeviceType(),r=e.contentType;if(i===ie.DeviceType.CAST&&e.spatialRendering&&(r+="; spatialRendering=true",window.cast&&cast.__platform__&&cast.__platform__.canDisplayType)){let s=!1,n=Si.memoizedCanDisplayTypeRequests_;return n.has(r)?s=n.get(r):(s=await cast.__platform__.canDisplayType(r),n.set(r,s)),s}return Ke.isTypeSupported(r)}static async checkDrmSupport_(e,t,i){let r=[],s=[],n=[];if(i.audio){let g={robustness:i.audio.robustness||"",contentType:t.contentType};j.getDevice().misreportAC3UsingDrm()&&t.contentType.includes('codecs="ac-3"')&&(g.contentType='audio/mp4; codecs="ec-3"'),i.audio.encryptionScheme&&(g.encryptionScheme=i.audio.encryptionScheme,n.push(i.audio.encryptionScheme)),r.push(g)}if(i.video){let g={robustness:i.video.robustness||"",contentType:e.contentType};i.video.encryptionScheme&&(g.encryptionScheme=i.video.encryptionScheme,n.push(i.video.encryptionScheme)),s.push(g)}let a={initDataTypes:[i.initDataType],distinctiveIdentifier:i.distinctiveIdentifier,persistentState:i.persistentState,sessionTypes:i.sessionTypes};r.length&&(a.audioCapabilities=r),s.length&&(a.videoCapabilities=s);let o=e?e.contentType:"",c=t?t.contentType:"",d=N.getBasicType(o)+";"+N.getCodecBase(o),u=N.getBasicType(c)+";"+N.getCodecBase(c),m=i.keySystem,f=null;try{de.hasMediaKeySystemAccess(d,u,m,n)?f=de.getMediaKeySystemAccess(d,u,m,n):(f=await navigator.requestMediaKeySystemAccess(i.keySystem,[a]),de.setMediaKeySystemAccess(d,u,m,n,f))}catch(g){p.info("navigator.requestMediaKeySystemAccess failed.")}return f}static async canCastDisplayType_(e){if(!(window.cast&&cast.__platform__&&cast.__platform__.canDisplayType))return p.warning("Expected cast APIs to be available! Falling back to shaka.media.Capabilities.isTypeSupported() for type support."),Ke.isTypeSupported(e.contentType);let t=e.contentType;if(e.width&&e.height&&e.width>1280&&e.height>720&&(t+=`; width=${e.width}; height=${e.height}`),e.framerate){let n=Math.round(e.framerate);(n<24||n>30)&&(t+=`; framerate=${e.framerate}`)}switch(e.transferFunction||""){case"":case"srgb":break;case"pq":t+="; eotf=smpte2084";break;case"hlg":t+="; eotf=arib-std-b67";break;default:return!1}let r=!1,s=Si.memoizedCanDisplayTypeRequests_;return s.has(t)?r=s.get(t):(r=await cast.__platform__.canDisplayType(t),s.set(t,r)),r}};l(Si,"originalMcap",null),l(Si,"memoizedCanDisplayTypeRequests_",new Map);var ba=Si;Re.register(ba.install,-1);/*! @license
971
+ */var Si=class Si{static install(){if(j.getDevice().supportsMediaCapabilities()){p.info("MediaCapabilities: Native mediaCapabilities support found.");return}p.info("MediaCapabilities: install"),navigator.mediaCapabilities||(navigator.mediaCapabilities={}),Si.originalMcap=navigator.mediaCapabilities,navigator.mediaCapabilities.decodingInfo=Si.decodingInfo_}static async decodingInfo_(e){let t={supported:!1,powerEfficient:!0,smooth:!0,keySystemAccess:null,configuration:e},i=j.getDevice(),r=e.video,s=e.audio;if(e.type=="media-source"){if(!i.supportsMediaSource()||r&&!await Si.checkVideoSupport_(r)||s&&!await Si.checkAudioSupport_(s))return t}else if(e.type=="file"){if(r){let n=r.contentType;if(!i.supportsMediaType(n))return t}if(s){let n=s.contentType;if(!i.supportsMediaType(n))return t}}else return t;if(e.keySystemConfiguration){let n=e.keySystemConfiguration,a=await Si.checkDrmSupport_(r,s,n);a&&(t.supported=!0,t.keySystemAccess=a)}else return t.supported=!0,t;return t}static async checkVideoSupport_(e){return j.getDevice().getDeviceType()===ie.DeviceType.CAST?await Si.canCastDisplayType_(e):Ke.isTypeSupported(e.contentType)}static async checkAudioSupport_(e){let i=j.getDevice().getDeviceType(),r=e.contentType;if(i===ie.DeviceType.CAST&&e.spatialRendering&&(r+="; spatialRendering=true",window.cast&&cast.__platform__&&cast.__platform__.canDisplayType)){let s=!1,n=Si.memoizedCanDisplayTypeRequests_;return n.has(r)?s=n.get(r):(s=await cast.__platform__.canDisplayType(r),n.set(r,s)),s}return Ke.isTypeSupported(r)}static async checkDrmSupport_(e,t,i){let r=[],s=[],n=[];if(i.audio){let g={robustness:i.audio.robustness||"",contentType:t.contentType};j.getDevice().misreportAC3UsingDrm()&&t.contentType.includes('codecs="ac-3"')&&(g.contentType='audio/mp4; codecs="ec-3"'),i.audio.encryptionScheme&&(g.encryptionScheme=i.audio.encryptionScheme,n.push(i.audio.encryptionScheme)),r.push(g)}if(i.video){let g={robustness:i.video.robustness||"",contentType:e.contentType};i.video.encryptionScheme&&(g.encryptionScheme=i.video.encryptionScheme,n.push(i.video.encryptionScheme)),s.push(g)}let a={initDataTypes:[i.initDataType],distinctiveIdentifier:i.distinctiveIdentifier,persistentState:i.persistentState,sessionTypes:i.sessionTypes};r.length&&(a.audioCapabilities=r),s.length&&(a.videoCapabilities=s);let o=e?e.contentType:"",c=t?t.contentType:"",d=O.getBasicType(o)+";"+O.getCodecBase(o),u=O.getBasicType(c)+";"+O.getCodecBase(c),m=i.keySystem,f=null;try{de.hasMediaKeySystemAccess(d,u,m,n)?f=de.getMediaKeySystemAccess(d,u,m,n):(f=await navigator.requestMediaKeySystemAccess(i.keySystem,[a]),de.setMediaKeySystemAccess(d,u,m,n,f))}catch(g){p.info("navigator.requestMediaKeySystemAccess failed.")}return f}static async canCastDisplayType_(e){if(!(window.cast&&cast.__platform__&&cast.__platform__.canDisplayType))return p.warning("Expected cast APIs to be available! Falling back to shaka.media.Capabilities.isTypeSupported() for type support."),Ke.isTypeSupported(e.contentType);let t=e.contentType;if(e.width&&e.height&&e.width>1280&&e.height>720&&(t+=`; width=${e.width}; height=${e.height}`),e.framerate){let n=Math.round(e.framerate);(n<24||n>30)&&(t+=`; framerate=${e.framerate}`)}switch(e.transferFunction||""){case"":case"srgb":break;case"pq":t+="; eotf=smpte2084";break;case"hlg":t+="; eotf=arib-std-b67";break;default:return!1}let r=!1,s=Si.memoizedCanDisplayTypeRequests_;return s.has(t)?r=s.get(t):(r=await cast.__platform__.canDisplayType(t),s.set(t,r)),r}};l(Si,"originalMcap",null),l(Si,"memoizedCanDisplayTypeRequests_",new Map);var ba=Si;Re.register(ba.install,-1);/*! @license
972
972
  * Shaka Player
973
973
  * Copyright 2016 Google LLC
974
974
  * SPDX-License-Identifier: Apache-2.0
@@ -984,7 +984,7 @@ Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeA
984
984
  * Shaka Player
985
985
  * Copyright 2016 Google LLC
986
986
  * SPDX-License-Identifier: Apache-2.0
987
- */var $t=class $t{static install(){if(!(!window.HTMLVideoElement||navigator.requestMediaKeySystemAccess&&MediaKeySystemAccess.prototype.getConfiguration)){if(HTMLMediaElement.prototype.webkitGenerateKeyRequest)p.info("Using webkit-prefixed EME v0.1b"),$t.prefix_="webkit";else if(HTMLMediaElement.prototype.generateKeyRequest)p.info("Using nonprefixed EME v0.1b");else return;v.assert(HTMLMediaElement.prototype[$t.prefixApi_("generateKeyRequest")],"PatchedMediaKeysWebkit APIs not available!"),navigator.requestMediaKeySystemAccess=$t.requestMediaKeySystemAccess,delete HTMLMediaElement.prototype.mediaKeys,HTMLMediaElement.prototype.mediaKeys=null,HTMLMediaElement.prototype.setMediaKeys=$t.setMediaKeys,window.MediaKeys=$t.MediaKeys,window.MediaKeySystemAccess=$t.MediaKeySystemAccess,window.shakaMediaKeysPolyfill=$t.apiName_}}static prefixApi_(e){let t=$t.prefix_;return t?t+e.charAt(0).toUpperCase()+e.slice(1):e}static requestMediaKeySystemAccess(e,t){p.debug("PatchedMediaKeysWebkit.requestMediaKeySystemAccess"),v.assert(this==navigator,'bad "this" for requestMediaKeySystemAccess');try{let i=new $t.MediaKeySystemAccess(e,t);return Promise.resolve(i)}catch(i){return Promise.reject(i)}}static setMediaKeys(e){p.debug("PatchedMediaKeysWebkit.setMediaKeys"),v.assert(this instanceof HTMLMediaElement,'bad "this" for setMediaKeys');let t=e,i=this.mediaKeys;return i&&i!=t&&(v.assert(i instanceof $t.MediaKeys,"non-polyfill instance of oldMediaKeys"),i.setMedia(null)),delete this.mediaKeys,this.mediaKeys=e,t&&(v.assert(t instanceof $t.MediaKeys,"non-polyfill instance of newMediaKeys"),t.setMedia(this)),Promise.resolve()}static getVideoElement_(){let e=document.getElementsByTagName("video");return e.length?e[0]:document.createElement("video")}};l($t,"prefix_",""),l($t,"apiName_","webkit");var ai=$t;ai.MediaKeySystemAccess=class{constructor(y,e){p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess"),this.keySystem=y,this.internalKeySystem_=y,this.configuration_;let t=!1;y=="org.w3.clearkey"&&(this.internalKeySystem_="webkit-org.w3.clearkey",t=!1);let i=!1,r=ai.getVideoElement_();for(let a of e){let o={audioCapabilities:[],videoCapabilities:[],persistentState:"optional",distinctiveIdentifier:"optional",initDataTypes:a.initDataTypes,sessionTypes:["temporary"],label:a.label},c=!1;if(a.audioCapabilities){for(let d of a.audioCapabilities)if(d.contentType){c=!0;let u=d.contentType.split(";")[0];r.canPlayType(u,this.internalKeySystem_)&&(o.audioCapabilities.push(d),i=!0)}}if(a.videoCapabilities)for(let d of a.videoCapabilities)d.contentType&&(c=!0,r.canPlayType(d.contentType,this.internalKeySystem_)&&(o.videoCapabilities.push(d),i=!0));if(c||(i=r.canPlayType("video/mp4",this.internalKeySystem_)||r.canPlayType("video/webm",this.internalKeySystem_)),a.persistentState=="required"&&(t?(o.persistentState="required",o.sessionTypes=["persistent-license"]):i=!1),i){this.configuration_=o;return}}let s="Unsupported keySystem";(y=="org.w3.clearkey"||y=="com.widevine.alpha")&&(s="None of the requested configurations were supported.");let n=new Error(s);throw n.name="NotSupportedError",n.code=DOMException.NOT_SUPPORTED_ERR,n}createMediaKeys(){p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess.createMediaKeys");let y=new ai.MediaKeys(this.internalKeySystem_);return Promise.resolve(y)}getConfiguration(){return p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess.getConfiguration"),this.configuration_}};ai.MediaKeys=class{constructor(y){p.debug("PatchedMediaKeysWebkit.MediaKeys"),this.keySystem_=y,this.media_=null,this.eventManager_=new ue,this.newSessions_=[],this.sessionMap_=new Map}setMedia(y){this.media_=y,this.eventManager_.removeAll();let e=ai.prefix_;y&&(this.eventManager_.listen(y,e+"needkey",(t=>this.onWebkitNeedKey_(t))),this.eventManager_.listen(y,e+"keymessage",(t=>this.onWebkitKeyMessage_(t))),this.eventManager_.listen(y,e+"keyadded",(t=>this.onWebkitKeyAdded_(t))),this.eventManager_.listen(y,e+"keyerror",(t=>this.onWebkitKeyError_(t))))}createSession(y){if(p.debug("PatchedMediaKeysWebkit.MediaKeys.createSession"),y=y||"temporary",y!="temporary"&&y!="persistent-license")throw new TypeError("Session type "+y+" is unsupported on this platform.");let e=this.media_||document.createElement("video");e.src||(e.src="about:blank");let t=new ai.MediaKeySession(e,this.keySystem_,y);return this.newSessions_.push(t),t}setServerCertificate(y){return p.debug("PatchedMediaKeysWebkit.MediaKeys.setServerCertificate"),Promise.resolve(!1)}getStatusForPolicy(y){return Promise.resolve("usable")}onWebkitNeedKey_(y){p.debug("PatchedMediaKeysWebkit.onWebkitNeedKey_",y),v.assert(this.media_,"media_ not set in onWebkitNeedKey_");let e=new CustomEvent("encrypted"),t=e;t.initDataType="cenc",t.initData=D.toArrayBuffer(y.initData),this.media_.dispatchEvent(e)}onWebkitKeyMessage_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyMessage_",y);let e=this.findSession_(y.sessionId);if(!e){p.error("Session not found",y.sessionId);return}let t=e.keyStatuses.getStatus()==null,i=new Map().set("messageType",t?"licenserequest":"licenserenewal").set("message",y.message),r=new U("message",i);e.generated(),e.dispatchEvent(r)}onWebkitKeyAdded_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyAdded_",y);let e=this.findSession_(y.sessionId);v.assert(e,"unable to find session in onWebkitKeyAdded_"),e&&e.ready()}onWebkitKeyError_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyError_",y);let e=this.findSession_(y.sessionId);v.assert(e,"unable to find session in onWebkitKeyError_"),e&&e.handleError(y)}findSession_(y){let e=this.sessionMap_.get(y);return e?(p.debug("PatchedMediaKeysWebkit.MediaKeys.findSession_",e),e):(e=this.newSessions_.shift(),e?(e.sessionId=y,this.sessionMap_.set(y,e),p.debug("PatchedMediaKeysWebkit.MediaKeys.findSession_",e),e):null)}};ai.MediaKeySession=class extends Le{constructor(y,e,t){p.debug("PatchedMediaKeysWebkit.MediaKeySession"),super(),this.media_=y,this.initialized_=!1,this.generatePromise_=null,this.updatePromise_=null,this.keySystem_=e,this.type_=t,this.closed_=Promise.withResolvers(),this.sessionId="",this.expiration=NaN,this.keyStatuses=new us,this.onkeystatuseschange=null}get closed(){return this.closed_.promise}generated(){p.debug("PatchedMediaKeysWebkit.MediaKeySession.generated"),this.generatePromise_&&(this.generatePromise_.resolve(),this.generatePromise_=null)}ready(){p.debug("PatchedMediaKeysWebkit.MediaKeySession.ready"),this.updateKeyStatus_("usable"),this.updatePromise_&&this.updatePromise_.resolve(),this.updatePromise_=null}handleError(y){p.debug("PatchedMediaKeysWebkit.MediaKeySession.handleError",y);let e=new Error("EME v0.1b key error"),t=y.errorCode;if(t.systemCode=y.systemCode,e.errorCode=t,!y.sessionId&&this.generatePromise_)y.systemCode==45&&(e.message="Unsupported session type."),this.generatePromise_.reject(e),this.generatePromise_=null;else if(y.sessionId&&this.updatePromise_)this.updatePromise_.reject(e),this.updatePromise_=null;else{let i=y.errorCode.code,r=y.systemCode;i==MediaKeyError.MEDIA_KEYERR_OUTPUT?this.updateKeyStatus_("output-restricted"):r==1?this.updateKeyStatus_("expired"):this.updateKeyStatus_("internal-error")}}generate_(y,e){if(this.initialized_){let r=new Error("The session is already initialized.");return Promise.reject(r)}this.initialized_=!0;let t;try{if(this.type_=="persistent-license")if(e)t=D.toUint8(q.toUTF8("LOAD_SESSION|"+e));else{v.assert(y,"expecting init data");let r=q.toUTF8("PERSISTENT|");t=ne.concat(r,y)}else v.assert(this.type_=="temporary","expected temporary session"),v.assert(!e,"unexpected offline session ID"),v.assert(y,"expecting init data"),t=D.toUint8(y);v.assert(t,"init data not set!")}catch(r){return Promise.reject(r)}v.assert(this.generatePromise_==null,"generatePromise_ should be null"),this.generatePromise_=Promise.withResolvers();let i=ai.prefixApi_("generateKeyRequest");try{this.media_[i](this.keySystem_,t)}catch(r){if(r.name!="InvalidStateError")return this.generatePromise_=null,Promise.reject(r);new ae(()=>{try{this.media_[i](this.keySystem_,t)}catch(n){this.generatePromise_.reject(n),this.generatePromise_=null}}).tickAfter(.01)}return this.generatePromise_.promise}update_(y,e){if(this.updatePromise_){this.updatePromise_.promise.then(()=>this.update_(y,e)).catch(()=>this.update_(y,e));return}this.updatePromise_=y;let t,i;if(this.keySystem_=="webkit-org.w3.clearkey"){let s=q.fromUTF8(e),n=JSON.parse(s);n.keys[0].kty!="oct"&&(this.updatePromise_.reject(new Error("Response is not a valid JSON Web Key Set.")),this.updatePromise_=null),t=ne.fromBase64(n.keys[0].k),i=ne.fromBase64(n.keys[0].kid)}else t=D.toUint8(e),i=null;let r=ai.prefixApi_("addKey");try{this.media_[r](this.keySystem_,t,i,this.sessionId)}catch(s){this.updatePromise_.reject(s),this.updatePromise_=null}}updateKeyStatus_(y){this.keyStatuses.setStatus(y);let e=new U("keystatuseschange");this.dispatchEvent(e),this.onkeystatuseschange&&this.onkeystatuseschange(e)}generateRequest(y,e){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.generateRequest"),this.generate_(e,null)}load(y){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.load"),this.type_=="persistent-license"?this.generate_(null,y):Promise.reject(new Error("Not a persistent session."))}update(y){p.debug("PatchedMediaKeysWebkit.MediaKeySession.update",y),v.assert(this.sessionId,"update without session ID");let e=Promise.withResolvers();return this.update_(e,y),e.promise}close(){if(p.debug("PatchedMediaKeysWebkit.MediaKeySession.close"),this.type_!="persistent-license"){if(!this.sessionId)return this.closed_.reject(new Error("The session is not callable.")),this.closed_.promise;let y=ai.prefixApi_("cancelKeyRequest");try{this.media_[y](this.keySystem_,this.sessionId)}catch(e){p.debug(`${y} exception`,e)}}return this.closed_.resolve(),this.closed_.promise}remove(){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.remove"),this.type_!="persistent-license"?Promise.reject(new Error("Not a persistent session.")):this.close()}};Re.register(ai.install);/*! @license
987
+ */var Qt=class Qt{static install(){if(!(!window.HTMLVideoElement||navigator.requestMediaKeySystemAccess&&MediaKeySystemAccess.prototype.getConfiguration)){if(HTMLMediaElement.prototype.webkitGenerateKeyRequest)p.info("Using webkit-prefixed EME v0.1b"),Qt.prefix_="webkit";else if(HTMLMediaElement.prototype.generateKeyRequest)p.info("Using nonprefixed EME v0.1b");else return;v.assert(HTMLMediaElement.prototype[Qt.prefixApi_("generateKeyRequest")],"PatchedMediaKeysWebkit APIs not available!"),navigator.requestMediaKeySystemAccess=Qt.requestMediaKeySystemAccess,delete HTMLMediaElement.prototype.mediaKeys,HTMLMediaElement.prototype.mediaKeys=null,HTMLMediaElement.prototype.setMediaKeys=Qt.setMediaKeys,window.MediaKeys=Qt.MediaKeys,window.MediaKeySystemAccess=Qt.MediaKeySystemAccess,window.shakaMediaKeysPolyfill=Qt.apiName_}}static prefixApi_(e){let t=Qt.prefix_;return t?t+e.charAt(0).toUpperCase()+e.slice(1):e}static requestMediaKeySystemAccess(e,t){p.debug("PatchedMediaKeysWebkit.requestMediaKeySystemAccess"),v.assert(this==navigator,'bad "this" for requestMediaKeySystemAccess');try{let i=new Qt.MediaKeySystemAccess(e,t);return Promise.resolve(i)}catch(i){return Promise.reject(i)}}static setMediaKeys(e){p.debug("PatchedMediaKeysWebkit.setMediaKeys"),v.assert(this instanceof HTMLMediaElement,'bad "this" for setMediaKeys');let t=e,i=this.mediaKeys;return i&&i!=t&&(v.assert(i instanceof Qt.MediaKeys,"non-polyfill instance of oldMediaKeys"),i.setMedia(null)),delete this.mediaKeys,this.mediaKeys=e,t&&(v.assert(t instanceof Qt.MediaKeys,"non-polyfill instance of newMediaKeys"),t.setMedia(this)),Promise.resolve()}static getVideoElement_(){let e=document.getElementsByTagName("video");return e.length?e[0]:document.createElement("video")}};l(Qt,"prefix_",""),l(Qt,"apiName_","webkit");var ai=Qt;ai.MediaKeySystemAccess=class{constructor(y,e){p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess"),this.keySystem=y,this.internalKeySystem_=y,this.configuration_;let t=!1;y=="org.w3.clearkey"&&(this.internalKeySystem_="webkit-org.w3.clearkey",t=!1);let i=!1,r=ai.getVideoElement_();for(let a of e){let o={audioCapabilities:[],videoCapabilities:[],persistentState:"optional",distinctiveIdentifier:"optional",initDataTypes:a.initDataTypes,sessionTypes:["temporary"],label:a.label},c=!1;if(a.audioCapabilities){for(let d of a.audioCapabilities)if(d.contentType){c=!0;let u=d.contentType.split(";")[0];r.canPlayType(u,this.internalKeySystem_)&&(o.audioCapabilities.push(d),i=!0)}}if(a.videoCapabilities)for(let d of a.videoCapabilities)d.contentType&&(c=!0,r.canPlayType(d.contentType,this.internalKeySystem_)&&(o.videoCapabilities.push(d),i=!0));if(c||(i=r.canPlayType("video/mp4",this.internalKeySystem_)||r.canPlayType("video/webm",this.internalKeySystem_)),a.persistentState=="required"&&(t?(o.persistentState="required",o.sessionTypes=["persistent-license"]):i=!1),i){this.configuration_=o;return}}let s="Unsupported keySystem";(y=="org.w3.clearkey"||y=="com.widevine.alpha")&&(s="None of the requested configurations were supported.");let n=new Error(s);throw n.name="NotSupportedError",n.code=DOMException.NOT_SUPPORTED_ERR,n}createMediaKeys(){p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess.createMediaKeys");let y=new ai.MediaKeys(this.internalKeySystem_);return Promise.resolve(y)}getConfiguration(){return p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess.getConfiguration"),this.configuration_}};ai.MediaKeys=class{constructor(y){p.debug("PatchedMediaKeysWebkit.MediaKeys"),this.keySystem_=y,this.media_=null,this.eventManager_=new ue,this.newSessions_=[],this.sessionMap_=new Map}setMedia(y){this.media_=y,this.eventManager_.removeAll();let e=ai.prefix_;y&&(this.eventManager_.listen(y,e+"needkey",(t=>this.onWebkitNeedKey_(t))),this.eventManager_.listen(y,e+"keymessage",(t=>this.onWebkitKeyMessage_(t))),this.eventManager_.listen(y,e+"keyadded",(t=>this.onWebkitKeyAdded_(t))),this.eventManager_.listen(y,e+"keyerror",(t=>this.onWebkitKeyError_(t))))}createSession(y){if(p.debug("PatchedMediaKeysWebkit.MediaKeys.createSession"),y=y||"temporary",y!="temporary"&&y!="persistent-license")throw new TypeError("Session type "+y+" is unsupported on this platform.");let e=this.media_||document.createElement("video");e.src||(e.src="about:blank");let t=new ai.MediaKeySession(e,this.keySystem_,y);return this.newSessions_.push(t),t}setServerCertificate(y){return p.debug("PatchedMediaKeysWebkit.MediaKeys.setServerCertificate"),Promise.resolve(!1)}getStatusForPolicy(y){return Promise.resolve("usable")}onWebkitNeedKey_(y){p.debug("PatchedMediaKeysWebkit.onWebkitNeedKey_",y),v.assert(this.media_,"media_ not set in onWebkitNeedKey_");let e=new CustomEvent("encrypted"),t=e;t.initDataType="cenc",t.initData=D.toArrayBuffer(y.initData),this.media_.dispatchEvent(e)}onWebkitKeyMessage_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyMessage_",y);let e=this.findSession_(y.sessionId);if(!e){p.error("Session not found",y.sessionId);return}let t=e.keyStatuses.getStatus()==null,i=new Map().set("messageType",t?"licenserequest":"licenserenewal").set("message",y.message),r=new U("message",i);e.generated(),e.dispatchEvent(r)}onWebkitKeyAdded_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyAdded_",y);let e=this.findSession_(y.sessionId);v.assert(e,"unable to find session in onWebkitKeyAdded_"),e&&e.ready()}onWebkitKeyError_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyError_",y);let e=this.findSession_(y.sessionId);v.assert(e,"unable to find session in onWebkitKeyError_"),e&&e.handleError(y)}findSession_(y){let e=this.sessionMap_.get(y);return e?(p.debug("PatchedMediaKeysWebkit.MediaKeys.findSession_",e),e):(e=this.newSessions_.shift(),e?(e.sessionId=y,this.sessionMap_.set(y,e),p.debug("PatchedMediaKeysWebkit.MediaKeys.findSession_",e),e):null)}};ai.MediaKeySession=class extends Le{constructor(y,e,t){p.debug("PatchedMediaKeysWebkit.MediaKeySession"),super(),this.media_=y,this.initialized_=!1,this.generatePromise_=null,this.updatePromise_=null,this.keySystem_=e,this.type_=t,this.closed_=Promise.withResolvers(),this.sessionId="",this.expiration=NaN,this.keyStatuses=new us,this.onkeystatuseschange=null}get closed(){return this.closed_.promise}generated(){p.debug("PatchedMediaKeysWebkit.MediaKeySession.generated"),this.generatePromise_&&(this.generatePromise_.resolve(),this.generatePromise_=null)}ready(){p.debug("PatchedMediaKeysWebkit.MediaKeySession.ready"),this.updateKeyStatus_("usable"),this.updatePromise_&&this.updatePromise_.resolve(),this.updatePromise_=null}handleError(y){p.debug("PatchedMediaKeysWebkit.MediaKeySession.handleError",y);let e=new Error("EME v0.1b key error"),t=y.errorCode;if(t.systemCode=y.systemCode,e.errorCode=t,!y.sessionId&&this.generatePromise_)y.systemCode==45&&(e.message="Unsupported session type."),this.generatePromise_.reject(e),this.generatePromise_=null;else if(y.sessionId&&this.updatePromise_)this.updatePromise_.reject(e),this.updatePromise_=null;else{let i=y.errorCode.code,r=y.systemCode;i==MediaKeyError.MEDIA_KEYERR_OUTPUT?this.updateKeyStatus_("output-restricted"):r==1?this.updateKeyStatus_("expired"):this.updateKeyStatus_("internal-error")}}generate_(y,e){if(this.initialized_){let r=new Error("The session is already initialized.");return Promise.reject(r)}this.initialized_=!0;let t;try{if(this.type_=="persistent-license")if(e)t=D.toUint8(q.toUTF8("LOAD_SESSION|"+e));else{v.assert(y,"expecting init data");let r=q.toUTF8("PERSISTENT|");t=ne.concat(r,y)}else v.assert(this.type_=="temporary","expected temporary session"),v.assert(!e,"unexpected offline session ID"),v.assert(y,"expecting init data"),t=D.toUint8(y);v.assert(t,"init data not set!")}catch(r){return Promise.reject(r)}v.assert(this.generatePromise_==null,"generatePromise_ should be null"),this.generatePromise_=Promise.withResolvers();let i=ai.prefixApi_("generateKeyRequest");try{this.media_[i](this.keySystem_,t)}catch(r){if(r.name!="InvalidStateError")return this.generatePromise_=null,Promise.reject(r);new ae(()=>{try{this.media_[i](this.keySystem_,t)}catch(n){this.generatePromise_.reject(n),this.generatePromise_=null}}).tickAfter(.01)}return this.generatePromise_.promise}update_(y,e){if(this.updatePromise_){this.updatePromise_.promise.then(()=>this.update_(y,e)).catch(()=>this.update_(y,e));return}this.updatePromise_=y;let t,i;if(this.keySystem_=="webkit-org.w3.clearkey"){let s=q.fromUTF8(e),n=JSON.parse(s);n.keys[0].kty!="oct"&&(this.updatePromise_.reject(new Error("Response is not a valid JSON Web Key Set.")),this.updatePromise_=null),t=ne.fromBase64(n.keys[0].k),i=ne.fromBase64(n.keys[0].kid)}else t=D.toUint8(e),i=null;let r=ai.prefixApi_("addKey");try{this.media_[r](this.keySystem_,t,i,this.sessionId)}catch(s){this.updatePromise_.reject(s),this.updatePromise_=null}}updateKeyStatus_(y){this.keyStatuses.setStatus(y);let e=new U("keystatuseschange");this.dispatchEvent(e),this.onkeystatuseschange&&this.onkeystatuseschange(e)}generateRequest(y,e){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.generateRequest"),this.generate_(e,null)}load(y){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.load"),this.type_=="persistent-license"?this.generate_(null,y):Promise.reject(new Error("Not a persistent session."))}update(y){p.debug("PatchedMediaKeysWebkit.MediaKeySession.update",y),v.assert(this.sessionId,"update without session ID");let e=Promise.withResolvers();return this.update_(e,y),e.promise}close(){if(p.debug("PatchedMediaKeysWebkit.MediaKeySession.close"),this.type_!="persistent-license"){if(!this.sessionId)return this.closed_.reject(new Error("The session is not callable.")),this.closed_.promise;let y=ai.prefixApi_("cancelKeyRequest");try{this.media_[y](this.keySystem_,this.sessionId)}catch(e){p.debug(`${y} exception`,e)}}return this.closed_.resolve(),this.closed_.promise}remove(){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.remove"),this.type_!="persistent-license"?Promise.reject(new Error("Not a persistent session.")):this.close()}};Re.register(ai.install);/*! @license
988
988
  * Shaka Player
989
989
  * Copyright 2016 Google LLC
990
990
  * SPDX-License-Identifier: Apache-2.0
@@ -1078,11 +1078,11 @@ ${o}
1078
1078
  * Shaka Player
1079
1079
  * Copyright 2016 Google LLC
1080
1080
  * SPDX-License-Identifier: Apache-2.0
1081
- */var Nt=class Nt{constructor(e){l(this,"serviceNumber_");l(this,"windows_");l(this,"currentWindow_");this.serviceNumber_=e,this.windows_=[null,null,null,null,null,null,null,null],this.currentWindow_=null}handleCea708ControlCode(e){let t=e.readByte(),i=t.value,r=t.pts;if(i===Nt.EXT_CEA708_CTRL_CODE_BYTE1){let s=e.readByte();i=i<<16|s.value}return i>=0&&i<=31?this.handleC0_(e,i,r):i>=128&&i<=159?this.handleC1_(e,i,r):(i>=4096&&i<=4127?this.handleC2_(e,i&255):i>=4224&&i<=4255?this.handleC3_(e,i&255):i>=32&&i<=127?this.handleG0_(i):i>=160&&i<=255?this.handleG1_(i):i>=4128&&i<=4223?this.handleG2_(i&255):i>=4256&&i<=4351&&this.handleG3_(i&255),[])}handleG0_(e){if(this.currentWindow_){if(e===127){this.currentWindow_.setCharacter("\u266A");return}this.currentWindow_.setCharacter(String.fromCharCode(e))}}handleG1_(e){this.currentWindow_&&this.currentWindow_.setCharacter(String.fromCharCode(e))}handleG2_(e){if(!this.currentWindow_)return;if(!Nt.G2Charset.has(e)){this.currentWindow_.setCharacter("_");return}let t=Nt.G2Charset.get(e);this.currentWindow_.setCharacter(t)}handleG3_(e){if(this.currentWindow_){if(e!=160){this.currentWindow_.setCharacter("_");return}this.currentWindow_.setCharacter("[CC]")}}handleC0_(e,t,i){if(t==24){let n=e.readByte().value,a=e.readByte().value;if(!this.currentWindow_)return[];let o=String.fromCharCode(n<<8|a);return this.currentWindow_.setCharacter(o),[]}if(!this.currentWindow_)return[];let r=this.currentWindow_,s=null;switch(t){case Nt.ASCII_BACKSPACE:r.backspace();break;case Nt.ASCII_CARRIAGE_RETURN:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.carriageReturn();break;case Nt.ASCII_HOR_CARRIAGE_RETURN:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.horizontalCarriageReturn();break;case Nt.ASCII_FORM_FEED:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.resetMemory(),r.setPenLocation(0,0);break}return s?[s]:[]}handleC1_(e,t,i){if(t>=128&&t<=135){let r=t&7;this.setCurrentWindow_(r)}else if(t===136){let r=e.readByte().value;return this.clearWindows_(r,i)}else if(t===137){let r=e.readByte().value;this.displayWindows_(r,i)}else if(t===138){let r=e.readByte().value;return this.hideWindows_(r,i)}else if(t===139){let r=e.readByte().value;return this.toggleWindows_(r,i)}else if(t===140){let r=e.readByte().value;return this.deleteWindows_(r,i)}else{if(t===143)return this.reset_(i);if(t===144)this.setPenAttributes_(e);else if(t===145)this.setPenColor_(e);else if(t===146)this.setPenLocation_(e);else if(t===151)this.setWindowAttributes_(e);else if(t>=152&&t<=159){let r=(t&15)-8;this.defineWindow_(e,r,i)}}return[]}handleC2_(e,t){t>=8&&t<=15?e.skip(1):t>=16&&t<=23?e.skip(2):t>=24&&t<=31&&e.skip(3)}handleC3_(e,t){t>=128&&t<=135?e.skip(4):t>=136&&t<=143&&e.skip(5)}setCurrentWindow_(e){this.windows_[e]&&(this.currentWindow_=this.windows_[e])}getSpecifiedWindowIds_(e){let t=[];for(let i=0;i<8;i++)(e&1)===1&&this.windows_[i]&&t.push(i),e>>=1;return t}clearWindows_(e,t){let i=[];for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];if(s.isVisible()){let n=s.forceEmit(t,this.serviceNumber_);n&&i.push(n)}s.resetMemory()}return i}displayWindows_(e,t){for(let i of this.getSpecifiedWindowIds_(e)){let r=this.windows_[i];r.isVisible()||r.setStartTime(t),r.display()}}hideWindows_(e,t){let i=null;for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];s.isVisible()&&(i=s.forceEmit(t,this.serviceNumber_)),s.hide()}return i?[i]:[]}toggleWindows_(e,t){let i=null;for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];s.isVisible()?i=s.forceEmit(t,this.serviceNumber_):s.setStartTime(t),s.toggle()}return i?[i]:[]}deleteWindows_(e,t){let i=[];for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];if(s.isVisible()){let n=s.forceEmit(t,this.serviceNumber_);n&&i.push(n)}this.windows_[r]=null}return i}reset_(e){let i=this.deleteWindows_(255,e);return this.clear(),i}clear(){this.currentWindow_=null,this.windows_=[null,null,null,null,null,null,null,null]}setPenAttributes_(e){e.skip(1);let t=e.readByte().value;if(!this.currentWindow_)return;let i=(t&128)>0,r=(t&64)>0;this.currentWindow_.setPenItalics(i),this.currentWindow_.setPenUnderline(r)}setPenColor_(e){let t=e.readByte().value,i=e.readByte().value;if(e.skip(1),!this.currentWindow_)return;let r=t&3,s=(t&12)>>2,n=(t&48)>>4,a=i&3,o=(i&12)>>2,c=(i&48)>>4,d=this.rgbColorToCssColor_(n,s,r),u=this.rgbColorToCssColor_(c,o,a);this.currentWindow_.setPenTextColor(d),this.currentWindow_.setPenBackgroundColor(u)}setPenLocation_(e){let t=e.readByte().value,i=e.readByte().value;if(!this.currentWindow_)return;let r=t&15,s=i&63;this.currentWindow_.setPenLocation(r,s)}setWindowAttributes_(e){e.skip(1),e.skip(1);let t=e.readByte().value;if(e.skip(1),!this.currentWindow_)return;let i=t&3;this.currentWindow_.setJustification(i)}defineWindow_(e,t,i){let r=this.windows_[t]!==null;if(!r){let E=new Ua(t,this.serviceNumber_);E.setStartTime(i),this.windows_[t]=E}let s=e.readByte().value,n=e.readByte().value,a=e.readByte().value,o=e.readByte().value,c=e.readByte().value,d=e.readByte().value,u=(s&32)>0,m=n&127,f=(n&128)>0,g=a,_=(o&15)+1,T=(o&240)>>4,S=(c&63)+1,b=d&7;(!r||b!==0)&&this.windows_[t].resetPen(),this.windows_[t].defineWindow(u,m,g,T,f,_,S),this.currentWindow_=this.windows_[t]}rgbColorToCssColor_(e,t,i){let r=e>>1<<2|t>>1<<1|i>>1;return Nt.Colors[r]}};l(Nt,"ASCII_BACKSPACE",8),l(Nt,"ASCII_FORM_FEED",12),l(Nt,"ASCII_CARRIAGE_RETURN",13),l(Nt,"ASCII_HOR_CARRIAGE_RETURN",14),l(Nt,"EXT_CEA708_CTRL_CODE_BYTE1",16),l(Nt,"G2Charset",new Map([[32," "],[33,"\xA0"],[37,"\u2026"],[42,"\u0160"],[44,"\u0152"],[48,"\u2588"],[49,"\u2018"],[50,"\u2019"],[51,"\u201C"],[52,"\u201D"],[53,"\u2022"],[57,"\u2122"],[58,"\u0161"],[60,"\u0153"],[61,"\u2120"],[63,"\u0178"],[118,"\u215B"],[119,"\u215C"],[120,"\u215D"],[121,"\u215E"],[122,"\u2502"],[123,"\u2510"],[124,"\u2514"],[125,"\u2500"],[126,"\u2518"],[127,"\u250C"]])),l(Nt,"Colors",["black","blue","green","cyan","red","magenta","yellow","white"]);var La=Nt;/*! @license
1081
+ */var Ot=class Ot{constructor(e){l(this,"serviceNumber_");l(this,"windows_");l(this,"currentWindow_");this.serviceNumber_=e,this.windows_=[null,null,null,null,null,null,null,null],this.currentWindow_=null}handleCea708ControlCode(e){let t=e.readByte(),i=t.value,r=t.pts;if(i===Ot.EXT_CEA708_CTRL_CODE_BYTE1){let s=e.readByte();i=i<<16|s.value}return i>=0&&i<=31?this.handleC0_(e,i,r):i>=128&&i<=159?this.handleC1_(e,i,r):(i>=4096&&i<=4127?this.handleC2_(e,i&255):i>=4224&&i<=4255?this.handleC3_(e,i&255):i>=32&&i<=127?this.handleG0_(i):i>=160&&i<=255?this.handleG1_(i):i>=4128&&i<=4223?this.handleG2_(i&255):i>=4256&&i<=4351&&this.handleG3_(i&255),[])}handleG0_(e){if(this.currentWindow_){if(e===127){this.currentWindow_.setCharacter("\u266A");return}this.currentWindow_.setCharacter(String.fromCharCode(e))}}handleG1_(e){this.currentWindow_&&this.currentWindow_.setCharacter(String.fromCharCode(e))}handleG2_(e){if(!this.currentWindow_)return;if(!Ot.G2Charset.has(e)){this.currentWindow_.setCharacter("_");return}let t=Ot.G2Charset.get(e);this.currentWindow_.setCharacter(t)}handleG3_(e){if(this.currentWindow_){if(e!=160){this.currentWindow_.setCharacter("_");return}this.currentWindow_.setCharacter("[CC]")}}handleC0_(e,t,i){if(t==24){let n=e.readByte().value,a=e.readByte().value;if(!this.currentWindow_)return[];let o=String.fromCharCode(n<<8|a);return this.currentWindow_.setCharacter(o),[]}if(!this.currentWindow_)return[];let r=this.currentWindow_,s=null;switch(t){case Ot.ASCII_BACKSPACE:r.backspace();break;case Ot.ASCII_CARRIAGE_RETURN:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.carriageReturn();break;case Ot.ASCII_HOR_CARRIAGE_RETURN:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.horizontalCarriageReturn();break;case Ot.ASCII_FORM_FEED:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.resetMemory(),r.setPenLocation(0,0);break}return s?[s]:[]}handleC1_(e,t,i){if(t>=128&&t<=135){let r=t&7;this.setCurrentWindow_(r)}else if(t===136){let r=e.readByte().value;return this.clearWindows_(r,i)}else if(t===137){let r=e.readByte().value;this.displayWindows_(r,i)}else if(t===138){let r=e.readByte().value;return this.hideWindows_(r,i)}else if(t===139){let r=e.readByte().value;return this.toggleWindows_(r,i)}else if(t===140){let r=e.readByte().value;return this.deleteWindows_(r,i)}else{if(t===143)return this.reset_(i);if(t===144)this.setPenAttributes_(e);else if(t===145)this.setPenColor_(e);else if(t===146)this.setPenLocation_(e);else if(t===151)this.setWindowAttributes_(e);else if(t>=152&&t<=159){let r=(t&15)-8;this.defineWindow_(e,r,i)}}return[]}handleC2_(e,t){t>=8&&t<=15?e.skip(1):t>=16&&t<=23?e.skip(2):t>=24&&t<=31&&e.skip(3)}handleC3_(e,t){t>=128&&t<=135?e.skip(4):t>=136&&t<=143&&e.skip(5)}setCurrentWindow_(e){this.windows_[e]&&(this.currentWindow_=this.windows_[e])}getSpecifiedWindowIds_(e){let t=[];for(let i=0;i<8;i++)(e&1)===1&&this.windows_[i]&&t.push(i),e>>=1;return t}clearWindows_(e,t){let i=[];for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];if(s.isVisible()){let n=s.forceEmit(t,this.serviceNumber_);n&&i.push(n)}s.resetMemory()}return i}displayWindows_(e,t){for(let i of this.getSpecifiedWindowIds_(e)){let r=this.windows_[i];r.isVisible()||r.setStartTime(t),r.display()}}hideWindows_(e,t){let i=null;for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];s.isVisible()&&(i=s.forceEmit(t,this.serviceNumber_)),s.hide()}return i?[i]:[]}toggleWindows_(e,t){let i=null;for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];s.isVisible()?i=s.forceEmit(t,this.serviceNumber_):s.setStartTime(t),s.toggle()}return i?[i]:[]}deleteWindows_(e,t){let i=[];for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];if(s.isVisible()){let n=s.forceEmit(t,this.serviceNumber_);n&&i.push(n)}this.windows_[r]=null}return i}reset_(e){let i=this.deleteWindows_(255,e);return this.clear(),i}clear(){this.currentWindow_=null,this.windows_=[null,null,null,null,null,null,null,null]}setPenAttributes_(e){e.skip(1);let t=e.readByte().value;if(!this.currentWindow_)return;let i=(t&128)>0,r=(t&64)>0;this.currentWindow_.setPenItalics(i),this.currentWindow_.setPenUnderline(r)}setPenColor_(e){let t=e.readByte().value,i=e.readByte().value;if(e.skip(1),!this.currentWindow_)return;let r=t&3,s=(t&12)>>2,n=(t&48)>>4,a=i&3,o=(i&12)>>2,c=(i&48)>>4,d=this.rgbColorToCssColor_(n,s,r),u=this.rgbColorToCssColor_(c,o,a);this.currentWindow_.setPenTextColor(d),this.currentWindow_.setPenBackgroundColor(u)}setPenLocation_(e){let t=e.readByte().value,i=e.readByte().value;if(!this.currentWindow_)return;let r=t&15,s=i&63;this.currentWindow_.setPenLocation(r,s)}setWindowAttributes_(e){e.skip(1),e.skip(1);let t=e.readByte().value;if(e.skip(1),!this.currentWindow_)return;let i=t&3;this.currentWindow_.setJustification(i)}defineWindow_(e,t,i){let r=this.windows_[t]!==null;if(!r){let E=new Ua(t,this.serviceNumber_);E.setStartTime(i),this.windows_[t]=E}let s=e.readByte().value,n=e.readByte().value,a=e.readByte().value,o=e.readByte().value,c=e.readByte().value,d=e.readByte().value,u=(s&32)>0,m=n&127,f=(n&128)>0,g=a,_=(o&15)+1,T=(o&240)>>4,S=(c&63)+1,b=d&7;(!r||b!==0)&&this.windows_[t].resetPen(),this.windows_[t].defineWindow(u,m,g,T,f,_,S),this.currentWindow_=this.windows_[t]}rgbColorToCssColor_(e,t,i){let r=e>>1<<2|t>>1<<1|i>>1;return Ot.Colors[r]}};l(Ot,"ASCII_BACKSPACE",8),l(Ot,"ASCII_FORM_FEED",12),l(Ot,"ASCII_CARRIAGE_RETURN",13),l(Ot,"ASCII_HOR_CARRIAGE_RETURN",14),l(Ot,"EXT_CEA708_CTRL_CODE_BYTE1",16),l(Ot,"G2Charset",new Map([[32," "],[33,"\xA0"],[37,"\u2026"],[42,"\u0160"],[44,"\u0152"],[48,"\u2588"],[49,"\u2018"],[50,"\u2019"],[51,"\u201C"],[52,"\u201D"],[53,"\u2022"],[57,"\u2122"],[58,"\u0161"],[60,"\u0153"],[61,"\u2120"],[63,"\u0178"],[118,"\u215B"],[119,"\u215C"],[120,"\u215D"],[121,"\u215E"],[122,"\u2502"],[123,"\u2510"],[124,"\u2514"],[125,"\u2500"],[126,"\u2518"],[127,"\u250C"]])),l(Ot,"Colors",["black","blue","green","cyan","red","magenta","yellow","white"]);var La=Ot;/*! @license
1082
1082
  * Shaka Player
1083
1083
  * Copyright 2016 Google LLC
1084
1084
  * SPDX-License-Identifier: Apache-2.0
1085
- */var Qt=class Qt{constructor(){l(this,"cea608DataArray_");l(this,"cea708DataArray_");l(this,"dtvccPacketBuilder_");l(this,"badFrames_");l(this,"cea608ModeToStream_");l(this,"currentField1Channel_");l(this,"currentField2Channel_");l(this,"serviceNumberToService_");l(this,"waitingForFirstPacket_");l(this,"streams_");this.cea608DataArray_=[],this.cea708DataArray_=[],this.dtvccPacketBuilder_=new $s,this.badFrames_=0,this.cea608ModeToStream_=new Map([["CC1",new ji(0,0)],["CC2",new ji(0,1)],["CC3",new ji(1,0)],["CC4",new ji(1,1)]]),this.currentField1Channel_=0,this.currentField2Channel_=0,this.serviceNumberToService_=new Map,this.waitingForFirstPacket_=!0,this.streams_=new Set,this.reset()}clear(){p.debug("Clearing CEA decoder"),this.badFrames_=0,this.cea608DataArray_=[],this.cea708DataArray_=[],this.dtvccPacketBuilder_.clear(),this.reset();for(let e of this.serviceNumberToService_.values())e.clear()}reset(){p.debug("Resetting CEA decoder"),this.currentField1Channel_=0,this.currentField2Channel_=0;for(let e of this.cea608ModeToStream_.values())e.reset();this.waitingForFirstPacket_=!0}extract(e,t){if(this.waitingForFirstPacket_){p.debug("Setting first pts value to",t);for(let n of this.cea608ModeToStream_.values())n.firstPts(t);this.waitingForFirstPacket_=!1}let i=new Et(e,Et.Endianness.BIG_ENDIAN);if(i.getLength()<Qt.MIN_LENGTH||i.readUint8()!==Qt.USA_COUNTRY_CODE||i.readUint16()!==Qt.ATSC_PROVIDER_CODE||i.readUint32()!==Qt.ATSC1_USER_IDENTIFIER||i.readUint8()!==3)return;let r=i.readUint8();if((r&64)===0)return;let s=r&31;i.skip(1);for(let n=0;n<s;n++){let a=i.readUint8(),o=(a&4)>>2,c=i.readUint8(),d=i.readUint8();if(o){let u=a&3;u===Qt.NTSC_CC_FIELD_1||u===Qt.NTSC_CC_FIELD_2?this.cea608DataArray_.push({pts:t,type:u,ccData1:c,ccData2:d,order:this.cea608DataArray_.length}):(this.cea708DataArray_.push({pts:t,type:u,value:c,order:this.cea708DataArray_.length}),this.cea708DataArray_.push({pts:t,type:$s.DTVCC_PACKET_DATA,value:d,order:this.cea708DataArray_.length}))}}}extractRaw608(e,t){for(let i=0;i+1<e.length;i+=2){let r=e[i],s=e[i+1];this.cea608DataArray_.push({pts:t,type:Qt.NTSC_CC_FIELD_1,ccData1:r,ccData2:s,order:this.cea608DataArray_.length})}}decode(){let e=[],t=(r,s)=>r.pts-s.pts||r.order-s.order;this.cea608DataArray_.sort(t),this.cea708DataArray_.sort(t);for(let r of this.cea608DataArray_){let s=this.decodeCea608_(r);s&&e.push(s)}for(let r of this.cea708DataArray_)this.dtvccPacketBuilder_.addByte(r);let i=this.dtvccPacketBuilder_.getBuiltPackets();for(let r of i){let s=this.decodeCea708_(r);e.push(...s)}return this.dtvccPacketBuilder_.clearBuiltPackets(),this.cea608DataArray_=[],this.cea708DataArray_=[],e}decodeCea608_(e){let t=e.type;if(ji.isControlCode(e.ccData1)){let a=e.ccData1>>3&1;t===0?this.currentField1Channel_=a:this.currentField2Channel_=a}let i=t?this.currentField2Channel_:this.currentField1Channel_,r=Ye.getCea608StreamName(t,i),s=this.cea608ModeToStream_.get(r);if(e.ccData1===255&&e.ccData2===255||!e.ccData1&&!e.ccData2||!this.isOddParity_(e.ccData1)||!this.isOddParity_(e.ccData2))return++this.badFrames_>=45&&this.reset(),null;if(this.badFrames_=0,e.ccData1&=127,e.ccData2&=127,ji.isXdsControlCode(e.ccData1)||!e.ccData1&&!e.ccData2)return null;let n=null;return ji.isControlCode(e.ccData1)?(this.streams_.add(r),n=s.handleControlCode(e)):s.handleBasicNorthAmericanChar(e.ccData1,e.ccData2,e.pts),n}decodeCea708_(e){let t=[];try{for(;e.hasMoreData();){let i=e.readByte().value,r=(i&224)>>5,s=i&31;if(r===7&&s!=0&&(r=e.readByte().value&63),r!=0){this.streams_.add("svc"+r);let n=this.serviceNumberToService_.getOrInsertComputed(r,o=>new La(o)),a=e.getPosition();for(;e.getPosition()-a<s;){let o=n.handleCea708ControlCode(e);t.push(...o)}}}}catch(i){if(i instanceof h&&i.code===h.Code.BUFFER_READ_OUT_OF_BOUNDS)p.warnOnce("CEA708_INVALID_DATA","Buffer read out of bounds / invalid CEA-708 Data.");else throw i}return t}isOddParity_(e){let t=0;for(;e;)t^=e&1,e>>=1;return t===1}getStreams(){return Array.from(this.streams_)}};l(Qt,"ATSC_PROVIDER_CODE",49),l(Qt,"ATSC1_USER_IDENTIFIER",1195456820),l(Qt,"NTSC_CC_FIELD_1",0),l(Qt,"NTSC_CC_FIELD_2",1),l(Qt,"USA_COUNTRY_CODE",181),l(Qt,"MIN_LENGTH",8);var Na=Qt;Rt.registerDecoder(()=>new Na);/*! @license
1085
+ */var Jt=class Jt{constructor(){l(this,"cea608DataArray_");l(this,"cea708DataArray_");l(this,"dtvccPacketBuilder_");l(this,"badFrames_");l(this,"cea608ModeToStream_");l(this,"currentField1Channel_");l(this,"currentField2Channel_");l(this,"serviceNumberToService_");l(this,"waitingForFirstPacket_");l(this,"streams_");this.cea608DataArray_=[],this.cea708DataArray_=[],this.dtvccPacketBuilder_=new $s,this.badFrames_=0,this.cea608ModeToStream_=new Map([["CC1",new ji(0,0)],["CC2",new ji(0,1)],["CC3",new ji(1,0)],["CC4",new ji(1,1)]]),this.currentField1Channel_=0,this.currentField2Channel_=0,this.serviceNumberToService_=new Map,this.waitingForFirstPacket_=!0,this.streams_=new Set,this.reset()}clear(){p.debug("Clearing CEA decoder"),this.badFrames_=0,this.cea608DataArray_=[],this.cea708DataArray_=[],this.dtvccPacketBuilder_.clear(),this.reset();for(let e of this.serviceNumberToService_.values())e.clear()}reset(){p.debug("Resetting CEA decoder"),this.currentField1Channel_=0,this.currentField2Channel_=0;for(let e of this.cea608ModeToStream_.values())e.reset();this.waitingForFirstPacket_=!0}extract(e,t){if(this.waitingForFirstPacket_){p.debug("Setting first pts value to",t);for(let n of this.cea608ModeToStream_.values())n.firstPts(t);this.waitingForFirstPacket_=!1}let i=new Et(e,Et.Endianness.BIG_ENDIAN);if(i.getLength()<Jt.MIN_LENGTH||i.readUint8()!==Jt.USA_COUNTRY_CODE||i.readUint16()!==Jt.ATSC_PROVIDER_CODE||i.readUint32()!==Jt.ATSC1_USER_IDENTIFIER||i.readUint8()!==3)return;let r=i.readUint8();if((r&64)===0)return;let s=r&31;i.skip(1);for(let n=0;n<s;n++){let a=i.readUint8(),o=(a&4)>>2,c=i.readUint8(),d=i.readUint8();if(o){let u=a&3;u===Jt.NTSC_CC_FIELD_1||u===Jt.NTSC_CC_FIELD_2?this.cea608DataArray_.push({pts:t,type:u,ccData1:c,ccData2:d,order:this.cea608DataArray_.length}):(this.cea708DataArray_.push({pts:t,type:u,value:c,order:this.cea708DataArray_.length}),this.cea708DataArray_.push({pts:t,type:$s.DTVCC_PACKET_DATA,value:d,order:this.cea708DataArray_.length}))}}}extractRaw608(e,t){for(let i=0;i+1<e.length;i+=2){let r=e[i],s=e[i+1];this.cea608DataArray_.push({pts:t,type:Jt.NTSC_CC_FIELD_1,ccData1:r,ccData2:s,order:this.cea608DataArray_.length})}}decode(){let e=[],t=(r,s)=>r.pts-s.pts||r.order-s.order;this.cea608DataArray_.sort(t),this.cea708DataArray_.sort(t);for(let r of this.cea608DataArray_){let s=this.decodeCea608_(r);s&&e.push(s)}for(let r of this.cea708DataArray_)this.dtvccPacketBuilder_.addByte(r);let i=this.dtvccPacketBuilder_.getBuiltPackets();for(let r of i){let s=this.decodeCea708_(r);e.push(...s)}return this.dtvccPacketBuilder_.clearBuiltPackets(),this.cea608DataArray_=[],this.cea708DataArray_=[],e}decodeCea608_(e){let t=e.type;if(ji.isControlCode(e.ccData1)){let a=e.ccData1>>3&1;t===0?this.currentField1Channel_=a:this.currentField2Channel_=a}let i=t?this.currentField2Channel_:this.currentField1Channel_,r=Ye.getCea608StreamName(t,i),s=this.cea608ModeToStream_.get(r);if(e.ccData1===255&&e.ccData2===255||!e.ccData1&&!e.ccData2||!this.isOddParity_(e.ccData1)||!this.isOddParity_(e.ccData2))return++this.badFrames_>=45&&this.reset(),null;if(this.badFrames_=0,e.ccData1&=127,e.ccData2&=127,ji.isXdsControlCode(e.ccData1)||!e.ccData1&&!e.ccData2)return null;let n=null;return ji.isControlCode(e.ccData1)?(this.streams_.add(r),n=s.handleControlCode(e)):s.handleBasicNorthAmericanChar(e.ccData1,e.ccData2,e.pts),n}decodeCea708_(e){let t=[];try{for(;e.hasMoreData();){let i=e.readByte().value,r=(i&224)>>5,s=i&31;if(r===7&&s!=0&&(r=e.readByte().value&63),r!=0){this.streams_.add("svc"+r);let n=this.serviceNumberToService_.getOrInsertComputed(r,o=>new La(o)),a=e.getPosition();for(;e.getPosition()-a<s;){let o=n.handleCea708ControlCode(e);t.push(...o)}}}}catch(i){if(i instanceof h&&i.code===h.Code.BUFFER_READ_OUT_OF_BOUNDS)p.warnOnce("CEA708_INVALID_DATA","Buffer read out of bounds / invalid CEA-708 Data.");else throw i}return t}isOddParity_(e){let t=0;for(;e;)t^=e&1,e>>=1;return t===1}getStreams(){return Array.from(this.streams_)}};l(Jt,"ATSC_PROVIDER_CODE",49),l(Jt,"ATSC1_USER_IDENTIFIER",1195456820),l(Jt,"NTSC_CC_FIELD_1",0),l(Jt,"NTSC_CC_FIELD_2",1),l(Jt,"USA_COUNTRY_CODE",181),l(Jt,"MIN_LENGTH",8);var Oa=Jt;Rt.registerDecoder(()=>new Oa);/*! @license
1086
1086
  * Shaka Player
1087
1087
  * Copyright 2016 Google LLC
1088
1088
  * SPDX-License-Identifier: Apache-2.0
@@ -1090,15 +1090,15 @@ ${o}
1090
1090
  * Shaka Player
1091
1091
  * Copyright 2016 Google LLC
1092
1092
  * SPDX-License-Identifier: Apache-2.0
1093
- */var Yi=class Yi{constructor(){l(this,"seiProcessor_");l(this,"trackIdToTimescale_");l(this,"defaultSampleDuration_");l(this,"defaultSampleSize_");l(this,"c608TrackId_");l(this,"bitstreamFormat_");this.seiProcessor_=new hs,this.trackIdToTimescale_=new Map,this.defaultSampleDuration_=0,this.defaultSampleSize_=0,this.c608TrackId_=null,this.bitstreamFormat_=Yi.BitstreamFormat.UNKNOWN}init(e){let t=Yi.BitstreamFormat,i=[],r=[],s=null,n=a=>this.setBitstreamFormat_(a.name);if(new F().boxes([...F.SAMPLE_TABLE_PATH,"mvex"],F.children).fullBox("trex",a=>{let o=pe.parseTREX(a.reader);this.defaultSampleDuration_=o.defaultSampleDuration,this.defaultSampleSize_=o.defaultSampleSize}).fullBox("tkhd",a=>{v.assert(a.version!=null,"TKHD is a full box and should have a valid version.");let o=pe.parseTKHD(a.reader,a.version);s=o.trackId,i.push(o.trackId)}).fullBox("mdhd",a=>{v.assert(a.version!=null,"MDHD is a full box and should have a valid version.");let o=pe.parseMDHD(a.reader,a.version);r.push(o.timescale)}).fullBox("stsd",F.sampleDescription).boxes(F.AVC_HEVC_VVC_DV,n).box("encv",F.visualSampleEntry).box("sinf",F.children).box("frma",a=>{let{codec:o}=pe.parseFRMA(a.reader);this.setBitstreamFormat_(o)}).box("c608",a=>{this.bitstreamFormat_=Yi.BitstreamFormat.C608_TRACK,this.c608TrackId_=s}).parse(e,!0,!0),!i.length||!r.length||i.length!=r.length)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_CEA);this.bitstreamFormat_==t.UNKNOWN&&p.alwaysWarn("Unable to determine bitstream format for CEA parsing!"),i.forEach((a,o)=>{this.trackIdToTimescale_.set(a,r[o])})}parse(e){let t=Yi.BitstreamFormat;if(this.bitstreamFormat_==t.UNKNOWN)return[];let i=[],r=0,s=[];return new F().box("moof",n=>{r=n.start,s=[],F.children(n)}).box("traf",n=>{s.push({trackId:null,baseMediaDecodeTime:null,defaultSampleDuration:this.defaultSampleDuration_,defaultSampleSize:this.defaultSampleSize_,parsedTRUNs:[],timescale:Ye.DEFAULT_TIMESCALE_VALUE}),F.children(n)}).fullBox("trun",n=>{v.assert(n.version!=null&&n.flags!=null,"TRUN is a full box and should have a valid version & flags.");let a=s[s.length-1],o=pe.parseTRUN(n.reader,n.version,n.flags);a.parsedTRUNs.push(o)}).fullBox("tfhd",n=>{v.assert(n.flags!=null,"TFHD is a full box and should have valid flags.");let a=s[s.length-1],o=pe.parseTFHD(n.reader,n.flags);a.trackId=o.trackId,a.defaultSampleDuration=o.defaultSampleDuration||this.defaultSampleDuration_,a.defaultSampleSize=o.defaultSampleSize||this.defaultSampleSize_;let c=o.trackId;this.trackIdToTimescale_.has(c)&&(a.timescale=this.trackIdToTimescale_.get(c))}).fullBox("tfdt",n=>{v.assert(n.version!=null,"TFDT is a full box and should have a valid version.");let a=s[s.length-1],o=pe.parseTFDTInaccurate(n.reader,n.version);a.baseMediaDecodeTime=o.baseMediaDecodeTime}).box("mdat",n=>{let a=r-n.start-8,o=n.reader.getPosition();for(let c of s)if(!(this.bitstreamFormat_==t.C608_TRACK&&c.trackId!==this.c608TrackId_)){if(c.baseMediaDecodeTime===null){p.alwaysWarn("Unable to find base media decode time for CEA captions!");continue}n.reader.seek(o),this.bitstreamFormat_===t.C608_TRACK?this.parseC608Mdat_(n.reader,c.baseMediaDecodeTime,c.timescale,c.defaultSampleDuration,c.defaultSampleSize,a,c.parsedTRUNs,i):this.parseMdat_(n.reader,c.baseMediaDecodeTime,c.timescale,c.defaultSampleDuration,c.defaultSampleSize,a,c.parsedTRUNs,i)}}).parse(e,!1,!0),i}parseMdat_(e,t,i,r,s,n,a,o){let c=Yi.BitstreamFormat;v.assert(this.bitstreamFormat_!=c.UNKNOWN,"Bitstream format should have been checked before now!");let d=t;for(let u of a){u.dataOffset!=null&&e.seek(n+u.dataOffset);for(let m of u.sampleData){let f=m.sampleCompositionTimeOffset||0,g=(d+f)/i,_=m.sampleSize||s;for(;_>0&&e.hasMoreData();){let T=e.readUint32(),S=e.readUint8(),b=null,E=!1,C=1;switch(this.bitstreamFormat_){case c.H264:b=S&31,E=Ye.isSeiNaluType(Ye.CodecFamily.H264,b);break;case c.H265:case c.H266:{C=2,e.skip(1),b=S>>1&63;let A=this.bitstreamFormat_===c.H265?Ye.CodecFamily.H265:Ye.CodecFamily.H266;E=Ye.isSeiNaluType(A,b);break}default:return}if(E){let A=e.readBytes(T-C,!1);for(let w of this.seiProcessor_.process(A))o.push({packet:w,pts:g,format:Rt.CaptionPacketFormat.SEI})}else try{e.skip(T-C)}catch(A){return}_-=T+4}d+=m.sampleDuration||r}}}parseC608Mdat_(e,t,i,r,s,n,a,o){let c=t;for(let d of a){d.dataOffset!=null&&e.seek(n+d.dataOffset);for(let u of d.sampleData){let m=u.sampleSize||s,f=c/i,g=e.readBytes(m,!1);o.push({packet:g,pts:f,format:Rt.CaptionPacketFormat.RAW608}),c+=u.sampleDuration||r}}}setBitstreamFormat_(e){Yi.CodecBitstreamMap_.has(e)&&(this.bitstreamFormat_=Yi.CodecBitstreamMap_.get(e))}};l(Yi,"BitstreamFormat",{UNKNOWN:0,H264:1,H265:2,H266:3,C608_TRACK:4});var Ot=Yi;Ot.CodecBitstreamMap_=new Map().set("avc1",Ot.BitstreamFormat.H264).set("avc3",Ot.BitstreamFormat.H264).set("dvav",Ot.BitstreamFormat.H264).set("dva1",Ot.BitstreamFormat.H264).set("hev1",Ot.BitstreamFormat.H265).set("hvc1",Ot.BitstreamFormat.H265).set("dvh1",Ot.BitstreamFormat.H265).set("dvhe",Ot.BitstreamFormat.H265).set("vvc1",Ot.BitstreamFormat.H266).set("vvi1",Ot.BitstreamFormat.H266).set("dvc1",Ot.BitstreamFormat.H266).set("dvi1",Ot.BitstreamFormat.H266);Rt.registerParser("video/mp4",()=>new Ot);/*! @license
1093
+ */var Yi=class Yi{constructor(){l(this,"seiProcessor_");l(this,"trackIdToTimescale_");l(this,"defaultSampleDuration_");l(this,"defaultSampleSize_");l(this,"c608TrackId_");l(this,"bitstreamFormat_");this.seiProcessor_=new hs,this.trackIdToTimescale_=new Map,this.defaultSampleDuration_=0,this.defaultSampleSize_=0,this.c608TrackId_=null,this.bitstreamFormat_=Yi.BitstreamFormat.UNKNOWN}init(e){let t=Yi.BitstreamFormat,i=[],r=[],s=null,n=a=>this.setBitstreamFormat_(a.name);if(new F().boxes([...F.SAMPLE_TABLE_PATH,"mvex"],F.children).fullBox("trex",a=>{let o=pe.parseTREX(a.reader);this.defaultSampleDuration_=o.defaultSampleDuration,this.defaultSampleSize_=o.defaultSampleSize}).fullBox("tkhd",a=>{v.assert(a.version!=null,"TKHD is a full box and should have a valid version.");let o=pe.parseTKHD(a.reader,a.version);s=o.trackId,i.push(o.trackId)}).fullBox("mdhd",a=>{v.assert(a.version!=null,"MDHD is a full box and should have a valid version.");let o=pe.parseMDHD(a.reader,a.version);r.push(o.timescale)}).fullBox("stsd",F.sampleDescription).boxes(F.AVC_HEVC_VVC_DV,n).box("encv",F.visualSampleEntry).box("sinf",F.children).box("frma",a=>{let{codec:o}=pe.parseFRMA(a.reader);this.setBitstreamFormat_(o)}).box("c608",a=>{this.bitstreamFormat_=Yi.BitstreamFormat.C608_TRACK,this.c608TrackId_=s}).parse(e,!0,!0),!i.length||!r.length||i.length!=r.length)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_CEA);this.bitstreamFormat_==t.UNKNOWN&&p.alwaysWarn("Unable to determine bitstream format for CEA parsing!"),i.forEach((a,o)=>{this.trackIdToTimescale_.set(a,r[o])})}parse(e){let t=Yi.BitstreamFormat;if(this.bitstreamFormat_==t.UNKNOWN)return[];let i=[],r=0,s=[];return new F().box("moof",n=>{r=n.start,s=[],F.children(n)}).box("traf",n=>{s.push({trackId:null,baseMediaDecodeTime:null,defaultSampleDuration:this.defaultSampleDuration_,defaultSampleSize:this.defaultSampleSize_,parsedTRUNs:[],timescale:Ye.DEFAULT_TIMESCALE_VALUE}),F.children(n)}).fullBox("trun",n=>{v.assert(n.version!=null&&n.flags!=null,"TRUN is a full box and should have a valid version & flags.");let a=s[s.length-1],o=pe.parseTRUN(n.reader,n.version,n.flags);a.parsedTRUNs.push(o)}).fullBox("tfhd",n=>{v.assert(n.flags!=null,"TFHD is a full box and should have valid flags.");let a=s[s.length-1],o=pe.parseTFHD(n.reader,n.flags);a.trackId=o.trackId,a.defaultSampleDuration=o.defaultSampleDuration||this.defaultSampleDuration_,a.defaultSampleSize=o.defaultSampleSize||this.defaultSampleSize_;let c=o.trackId;this.trackIdToTimescale_.has(c)&&(a.timescale=this.trackIdToTimescale_.get(c))}).fullBox("tfdt",n=>{v.assert(n.version!=null,"TFDT is a full box and should have a valid version.");let a=s[s.length-1],o=pe.parseTFDTInaccurate(n.reader,n.version);a.baseMediaDecodeTime=o.baseMediaDecodeTime}).box("mdat",n=>{let a=r-n.start-8,o=n.reader.getPosition();for(let c of s)if(!(this.bitstreamFormat_==t.C608_TRACK&&c.trackId!==this.c608TrackId_)){if(c.baseMediaDecodeTime===null){p.alwaysWarn("Unable to find base media decode time for CEA captions!");continue}n.reader.seek(o),this.bitstreamFormat_===t.C608_TRACK?this.parseC608Mdat_(n.reader,c.baseMediaDecodeTime,c.timescale,c.defaultSampleDuration,c.defaultSampleSize,a,c.parsedTRUNs,i):this.parseMdat_(n.reader,c.baseMediaDecodeTime,c.timescale,c.defaultSampleDuration,c.defaultSampleSize,a,c.parsedTRUNs,i)}}).parse(e,!1,!0),i}parseMdat_(e,t,i,r,s,n,a,o){let c=Yi.BitstreamFormat;v.assert(this.bitstreamFormat_!=c.UNKNOWN,"Bitstream format should have been checked before now!");let d=t;for(let u of a){u.dataOffset!=null&&e.seek(n+u.dataOffset);for(let m of u.sampleData){let f=m.sampleCompositionTimeOffset||0,g=(d+f)/i,_=m.sampleSize||s;for(;_>0&&e.hasMoreData();){let T=e.readUint32(),S=e.readUint8(),b=null,E=!1,C=1;switch(this.bitstreamFormat_){case c.H264:b=S&31,E=Ye.isSeiNaluType(Ye.CodecFamily.H264,b);break;case c.H265:case c.H266:{C=2,e.skip(1),b=S>>1&63;let A=this.bitstreamFormat_===c.H265?Ye.CodecFamily.H265:Ye.CodecFamily.H266;E=Ye.isSeiNaluType(A,b);break}default:return}if(E){let A=e.readBytes(T-C,!1);for(let w of this.seiProcessor_.process(A))o.push({packet:w,pts:g,format:Rt.CaptionPacketFormat.SEI})}else try{e.skip(T-C)}catch(A){return}_-=T+4}d+=m.sampleDuration||r}}}parseC608Mdat_(e,t,i,r,s,n,a,o){let c=t;for(let d of a){d.dataOffset!=null&&e.seek(n+d.dataOffset);for(let u of d.sampleData){let m=u.sampleSize||s,f=c/i,g=e.readBytes(m,!1);o.push({packet:g,pts:f,format:Rt.CaptionPacketFormat.RAW608}),c+=u.sampleDuration||r}}}setBitstreamFormat_(e){Yi.CodecBitstreamMap_.has(e)&&(this.bitstreamFormat_=Yi.CodecBitstreamMap_.get(e))}};l(Yi,"BitstreamFormat",{UNKNOWN:0,H264:1,H265:2,H266:3,C608_TRACK:4});var Nt=Yi;Nt.CodecBitstreamMap_=new Map().set("avc1",Nt.BitstreamFormat.H264).set("avc3",Nt.BitstreamFormat.H264).set("dvav",Nt.BitstreamFormat.H264).set("dva1",Nt.BitstreamFormat.H264).set("hev1",Nt.BitstreamFormat.H265).set("hvc1",Nt.BitstreamFormat.H265).set("dvh1",Nt.BitstreamFormat.H265).set("dvhe",Nt.BitstreamFormat.H265).set("vvc1",Nt.BitstreamFormat.H266).set("vvi1",Nt.BitstreamFormat.H266).set("dvc1",Nt.BitstreamFormat.H266).set("dvi1",Nt.BitstreamFormat.H266);Rt.registerParser("video/mp4",()=>new Nt);/*! @license
1094
1094
  * Shaka Player
1095
1095
  * Copyright 2016 Google LLC
1096
1096
  * SPDX-License-Identifier: Apache-2.0
1097
- */var Oa=class{constructor(){l(this,"seiProcessor_");l(this,"tsParser_");this.seiProcessor_=new hs,this.tsParser_=null}init(e){}parse(e){this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt;let t=[],i=D.toUint8(e);if(!pt.probe(i))return t;let r=this.tsParser_.parse(i),s=r.getCodecs(),n=r.getVideoNalus(),a=null;switch(s.video){case"avc":a=Ye.CodecFamily.H264;break;case"hvc":a=Ye.CodecFamily.H265;break}if(a==null)return t;for(let o of n)if(o.time!=null&&Ye.isSeiNaluType(a,o.type))for(let c of this.seiProcessor_.process(o.data))t.push({packet:c,pts:o.time,format:Rt.CaptionPacketFormat.SEI});return t}};Rt.registerParser("video/mp2t",()=>new Oa);/*! @license
1097
+ */var Na=class{constructor(){l(this,"seiProcessor_");l(this,"tsParser_");this.seiProcessor_=new hs,this.tsParser_=null}init(e){}parse(e){this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt;let t=[],i=D.toUint8(e);if(!pt.probe(i))return t;let r=this.tsParser_.parse(i),s=r.getCodecs(),n=r.getVideoNalus(),a=null;switch(s.video){case"avc":a=Ye.CodecFamily.H264;break;case"hvc":a=Ye.CodecFamily.H265;break}if(a==null)return t;for(let o of n)if(o.time!=null&&Ye.isSeiNaluType(a,o.type))for(let c of this.seiProcessor_.process(o.data))t.push({packet:c,pts:o.time,format:Rt.CaptionPacketFormat.SEI});return t}};Rt.registerParser("video/mp2t",()=>new Na);/*! @license
1098
1098
  * Shaka Player
1099
1099
  * Copyright 2016 Google LLC
1100
1100
  * SPDX-License-Identifier: Apache-2.0
1101
- */var Ni=class Ni{static parseHeader(e,t){let i=Ni.getHeaderLength(e,t);if(t+i<=e.length){let r=Ni.getFullFrameLength(e,t)-i;if(r>0)return{headerLength:i,frameLength:r}}return null}static parseInfo(e,t){let i=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],r=(e[t+2]&60)>>>2;if(r>i.length-1)return null;let s=((e[t+2]&192)>>>6)+1,n=(e[t+2]&1)<<2;return n|=(e[t+3]&192)>>>6,{sampleRate:i[r],channelCount:n,codec:"mp4a.40."+s}}static isHeaderPattern(e,t){return e[t]===255&&(e[t+1]&246)===240}static getHeaderLength(e,t){return e[t+1]&1?7:9}static getFullFrameLength(e,t){return(e[t+3]&3)<<11|e[t+4]<<3|(e[t+5]&224)>>>5}static isHeader(e,t){return t+1<e.length&&Ni.isHeaderPattern(e,t)}static probe(e,t){if(Ni.isHeader(e,t)){let i=Ni.getHeaderLength(e,t);if(t+i>=e.length)return!1;let r=Ni.getFullFrameLength(e,t);if(r<=i)return!1;let s=t+r;return s===e.length||Ni.isHeader(e,s)}return!1}static getFrameDuration(e){return Ni.AAC_SAMPLES_PER_FRAME*9e4/e}static getSilentFrame(e,t){switch(e){case"mp4a.40.2":if(t===1)return new Uint8Array([0,200,0,128,35,128]);if(t===2)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(t===3)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(t===4)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(t===5)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(t===6)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(t===1)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===2)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===3)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);break}return null}};l(Ni,"AAC_SAMPLES_PER_FRAME",1024);var Bt=Ni;/*! @license
1101
+ */var Oi=class Oi{static parseHeader(e,t){let i=Oi.getHeaderLength(e,t);if(t+i<=e.length){let r=Oi.getFullFrameLength(e,t)-i;if(r>0)return{headerLength:i,frameLength:r}}return null}static parseInfo(e,t){let i=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],r=(e[t+2]&60)>>>2;if(r>i.length-1)return null;let s=((e[t+2]&192)>>>6)+1,n=(e[t+2]&1)<<2;return n|=(e[t+3]&192)>>>6,{sampleRate:i[r],channelCount:n,codec:"mp4a.40."+s}}static isHeaderPattern(e,t){return e[t]===255&&(e[t+1]&246)===240}static getHeaderLength(e,t){return e[t+1]&1?7:9}static getFullFrameLength(e,t){return(e[t+3]&3)<<11|e[t+4]<<3|(e[t+5]&224)>>>5}static isHeader(e,t){return t+1<e.length&&Oi.isHeaderPattern(e,t)}static probe(e,t){if(Oi.isHeader(e,t)){let i=Oi.getHeaderLength(e,t);if(t+i>=e.length)return!1;let r=Oi.getFullFrameLength(e,t);if(r<=i)return!1;let s=t+r;return s===e.length||Oi.isHeader(e,s)}return!1}static getFrameDuration(e){return Oi.AAC_SAMPLES_PER_FRAME*9e4/e}static getSilentFrame(e,t){switch(e){case"mp4a.40.2":if(t===1)return new Uint8Array([0,200,0,128,35,128]);if(t===2)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(t===3)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(t===4)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(t===5)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(t===6)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(t===1)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===2)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===3)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);break}return null}};l(Oi,"AAC_SAMPLES_PER_FRAME",1024);var Bt=Oi;/*! @license
1102
1102
  * Shaka Player
1103
1103
  * Copyright 2016 Google LLC
1104
1104
  * SPDX-License-Identifier: Apache-2.0
@@ -1110,31 +1110,31 @@ ${o}
1110
1110
  * Shaka Player
1111
1111
  * Copyright 2016 Google LLC
1112
1112
  * SPDX-License-Identifier: Apache-2.0
1113
- */var ms=class extends li{isSupported(e,t){if(!this.isAacContainer_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isAacContainer_(e){return e.toLowerCase().split(";")[0]=="audio/aac"}convertCodecs(e,t){return this.isAacContainer_(t)?`audio/mp4; codecs="${N.getCodecs(t)||"mp4a.40.2"}"`:t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!Bt.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=Bt.parseInfo(s,a);if(!c)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=c.sampleRate,t.channelsCount=c.channelCount;let d=[];for(;a<s.length;){let _=Bt.parseHeader(s,a);if(!_)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let T=_.headerLength+_.frameLength;if(a+T<=s.length){let S=s.subarray(a+_.headerLength,a+T);d.push({data:S,size:_.frameLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS})}a+=T}let u=c.sampleRate,m=Math.floor(o*u/1e3),f={id:t.id,type:R.ContentType.AUDIO,codecs:c.codec,timescale:u,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:d},stream:t},g=new xe([f]);return Promise.resolve(this.packageSegment(g,t,i))}};Oe.registerTransmuxer("audio/aac",()=>new ms("audio/aac"),Oe.PluginPriority.FALLBACK);/*! @license
1113
+ */var ms=class extends li{isSupported(e,t){if(!this.isAacContainer_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isAacContainer_(e){return e.toLowerCase().split(";")[0]=="audio/aac"}convertCodecs(e,t){return this.isAacContainer_(t)?`audio/mp4; codecs="${O.getCodecs(t)||"mp4a.40.2"}"`:t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!Bt.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=Bt.parseInfo(s,a);if(!c)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=c.sampleRate,t.channelsCount=c.channelCount;let d=[];for(;a<s.length;){let _=Bt.parseHeader(s,a);if(!_)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let T=_.headerLength+_.frameLength;if(a+T<=s.length){let S=s.subarray(a+_.headerLength,a+T);d.push({data:S,size:_.frameLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS})}a+=T}let u=c.sampleRate,m=Math.floor(o*u/1e3),f={id:t.id,type:R.ContentType.AUDIO,codecs:c.codec,timescale:u,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:d},stream:t},g=new xe([f]);return Promise.resolve(this.packageSegment(g,t,i))}};Ne.registerTransmuxer("audio/aac",()=>new ms("audio/aac"),Ne.PluginPriority.FALLBACK);/*! @license
1114
1114
  * Shaka Player
1115
1115
  * Copyright 2016 Google LLC
1116
1116
  * SPDX-License-Identifier: Apache-2.0
1117
- */var Oi=class{static parseFrame(e,t,i){if(t+8>e.length||e[t]!==11||e[t+1]!==119)return!1;let r=e[t+4]>>6;if(r>=3)return!1;let s=[48e3,44100,32e3],n=e[t+4]&63,o=[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][n*3+r]*2;if(t+o>e.length)return!1;let c=e[t+6]>>5,d=0;c===2?d+=2:(c&1&&c!==1&&(d+=2),c&4&&(d+=2));let u=(e[t+6]<<8|e[t+7])>>12-d&1,m=[2,1,2,3,3,4,4,5],f=e[t+5]>>3,g=e[t+5]&7,_=new Uint8Array([r<<6|f<<1|g>>2,(g&3)<<6|c<<3|u<<2|n>>4,n<<4&224]);return i.sampleRate=s[r],i.channelCount=m[c]+u,i.audioConfig=_,i.frameLength=o,!0}static probe(e,t){if(e[t]===11&&e[t+1]===119){let i=0,r=5;t+=r;let s=null,n=null,a=null;for(;r>0;){a=e[t];let o=Math.min(r,8),c=8-o;n=4278190080>>>24+c<<c,s=(a&n)>>c,i=i?i<<o|s:s,t+=1,r-=o}if(i<16)return!0}return!1}};l(Oi,"AC3_SAMPLES_PER_FRAME",1536);/*! @license
1117
+ */var Ni=class{static parseFrame(e,t,i){if(t+8>e.length||e[t]!==11||e[t+1]!==119)return!1;let r=e[t+4]>>6;if(r>=3)return!1;let s=[48e3,44100,32e3],n=e[t+4]&63,o=[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][n*3+r]*2;if(t+o>e.length)return!1;let c=e[t+6]>>5,d=0;c===2?d+=2:(c&1&&c!==1&&(d+=2),c&4&&(d+=2));let u=(e[t+6]<<8|e[t+7])>>12-d&1,m=[2,1,2,3,3,4,4,5],f=e[t+5]>>3,g=e[t+5]&7,_=new Uint8Array([r<<6|f<<1|g>>2,(g&3)<<6|c<<3|u<<2|n>>4,n<<4&224]);return i.sampleRate=s[r],i.channelCount=m[c]+u,i.audioConfig=_,i.frameLength=o,!0}static probe(e,t){if(e[t]===11&&e[t+1]===119){let i=0,r=5;t+=r;let s=null,n=null,a=null;for(;r>0;){a=e[t];let o=Math.min(r,8),c=8-o;n=4278190080>>>24+c<<c,s=(a&n)>>c,i=i?i<<o|s:s,t+=1,r-=o}if(i<16)return!0}return!1}};l(Ni,"AC3_SAMPLES_PER_FRAME",1536);/*! @license
1118
1118
  * Shaka Player
1119
1119
  * Copyright 2016 Google LLC
1120
1120
  * SPDX-License-Identifier: Apache-2.0
1121
- */var Ba=class extends li{isSupported(e,t){if(!this.isAc3Container_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isAc3Container_(e){return e.toLowerCase().split(";")[0]=="audio/ac3"}convertCodecs(e,t){return this.isAc3Container_(t)?j.getDevice().requiresEC3InitSegments()?'audio/mp4; codecs="ec-3"':'audio/mp4; codecs="ac-3"':t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!Oi.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=0,d=new Uint8Array([]),u=[],m={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(;a<s.length;){if(!Oi.parseFrame(s,a,m))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=m.sampleRate,t.channelsCount=m.channelCount,c=m.sampleRate,d=m.audioConfig;let S=s.subarray(a,a+m.frameLength);u.push({data:S,size:m.frameLength,duration:Oi.AC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=m.frameLength}let f=Math.floor(o*c/1e3),g={id:t.id,type:R.ContentType.AUDIO,codecs:"ac-3",timescale:c,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:u},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Oe.registerTransmuxer("audio/ac3",()=>new Ba("audio/ac3"),Oe.PluginPriority.FALLBACK);/*! @license
1121
+ */var Ba=class extends li{isSupported(e,t){if(!this.isAc3Container_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isAc3Container_(e){return e.toLowerCase().split(";")[0]=="audio/ac3"}convertCodecs(e,t){return this.isAc3Container_(t)?j.getDevice().requiresEC3InitSegments()?'audio/mp4; codecs="ec-3"':'audio/mp4; codecs="ac-3"':t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!Ni.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=0,d=new Uint8Array([]),u=[],m={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(;a<s.length;){if(!Ni.parseFrame(s,a,m))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=m.sampleRate,t.channelsCount=m.channelCount,c=m.sampleRate,d=m.audioConfig;let S=s.subarray(a,a+m.frameLength);u.push({data:S,size:m.frameLength,duration:Ni.AC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=m.frameLength}let f=Math.floor(o*c/1e3),g={id:t.id,type:R.ContentType.AUDIO,codecs:"ac-3",timescale:c,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:u},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Ne.registerTransmuxer("audio/ac3",()=>new Ba("audio/ac3"),Ne.PluginPriority.FALLBACK);/*! @license
1122
1122
  * Shaka Player
1123
1123
  * Copyright 2016 Google LLC
1124
1124
  * SPDX-License-Identifier: Apache-2.0
1125
- */var Fa=class Fa{static parseFrame(e,t,i){if(t+8>e.length||!Fa.probe(e,t))return!1;let r=new ii(e.subarray(t+2));r.skipBits(2),r.skipBits(3);let s=r.readBits(11)+1<<1,n=r.readBits(2),a=null,o=null;n==3?(n=r.readBits(2),a=[24e3,22060,16e3][n],o=3):(a=[48e3,44100,32e3][n],o=r.readBits(2));let c=r.readBits(3),d=r.readBits(1),u=r.readBits(5);if(t+s>e.byteLength)return!1;let m=[2,1,2,3,3,4,4,5],g=[1,2,3,6][o],_=Math.floor(s*a/(g*16)),T=new Uint8Array([(_&8160)>>5,(_&31)<<3,a<<6|u<<1|0,0|c<<1|d<<0,0]);return i.sampleRate=a,i.channelCount=m[c]+d,i.audioConfig=T,i.frameLength=s,!0}static probe(e,t){return(e[t]<<8|e[t+1]<<0)===2935}};l(Fa,"EC3_SAMPLES_PER_FRAME",1536);var $i=Fa;/*! @license
1125
+ */var Fa=class Fa{static parseFrame(e,t,i){if(t+8>e.length||!Fa.probe(e,t))return!1;let r=new ri(e.subarray(t+2));r.skipBits(2),r.skipBits(3);let s=r.readBits(11)+1<<1,n=r.readBits(2),a=null,o=null;n==3?(n=r.readBits(2),a=[24e3,22060,16e3][n],o=3):(a=[48e3,44100,32e3][n],o=r.readBits(2));let c=r.readBits(3),d=r.readBits(1),u=r.readBits(5);if(t+s>e.byteLength)return!1;let m=[2,1,2,3,3,4,4,5],g=[1,2,3,6][o],_=Math.floor(s*a/(g*16)),T=new Uint8Array([(_&8160)>>5,(_&31)<<3,a<<6|u<<1|0,0|c<<1|d<<0,0]);return i.sampleRate=a,i.channelCount=m[c]+d,i.audioConfig=T,i.frameLength=s,!0}static probe(e,t){return(e[t]<<8|e[t+1]<<0)===2935}};l(Fa,"EC3_SAMPLES_PER_FRAME",1536);var $i=Fa;/*! @license
1126
1126
  * Shaka Player
1127
1127
  * Copyright 2016 Google LLC
1128
1128
  * SPDX-License-Identifier: Apache-2.0
1129
- */var Va=class extends li{isSupported(e,t){if(!this.isEc3Container_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isEc3Container_(e){return e.toLowerCase().split(";")[0]=="audio/ec3"}convertCodecs(e,t){return this.isEc3Container_(t)?'audio/mp4; codecs="ec-3"':t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!$i.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=0,d=new Uint8Array([]),u=[],m={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(;a<s.length;){if(!$i.parseFrame(s,a,m))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=m.sampleRate,t.channelsCount=m.channelCount,c=m.sampleRate,d=m.audioConfig;let S=s.subarray(a,a+m.frameLength);u.push({data:S,size:m.frameLength,duration:$i.EC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=m.frameLength}let f=Math.floor(o*c/1e3),g={id:t.id,type:R.ContentType.AUDIO,codecs:"ec-3",timescale:c,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:u},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Oe.registerTransmuxer("audio/ec3",()=>new Va("audio/ec3"),Oe.PluginPriority.FALLBACK);/*! @license
1129
+ */var Va=class extends li{isSupported(e,t){if(!this.isEc3Container_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isEc3Container_(e){return e.toLowerCase().split(";")[0]=="audio/ec3"}convertCodecs(e,t){return this.isEc3Container_(t)?'audio/mp4; codecs="ec-3"':t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!$i.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=0,d=new Uint8Array([]),u=[],m={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(;a<s.length;){if(!$i.parseFrame(s,a,m))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=m.sampleRate,t.channelsCount=m.channelCount,c=m.sampleRate,d=m.audioConfig;let S=s.subarray(a,a+m.frameLength);u.push({data:S,size:m.frameLength,duration:$i.EC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=m.frameLength}let f=Math.floor(o*c/1e3),g={id:t.id,type:R.ContentType.AUDIO,codecs:"ec-3",timescale:c,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:u},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Ne.registerTransmuxer("audio/ec3",()=>new Va("audio/ec3"),Ne.PluginPriority.FALLBACK);/*! @license
1130
1130
  * Shaka Player
1131
1131
  * Copyright 2016 Google LLC
1132
1132
  * SPDX-License-Identifier: Apache-2.0
1133
- */var Ct=class Ct{static parseInfo(e){if(!e.length)return null;let t=e.find(x=>x.type==Ct.NALU_TYPE_SPS_),i=e.find(x=>x.type==Ct.NALU_TYPE_PPS_);if(!t||!i)return null;let r=new ii(t.data),s=r.readUnsignedByte();if(r.readUnsignedByte(),r.readUnsignedByte(),r.skipExpGolomb(),Ct.PROFILES_WITH_OPTIONAL_SPS_DATA_.includes(s)){let x=r.readUnsignedExpGolomb();if(x===3&&r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb(),r.skipBits(1),r.readBoolean()){let k=x!==3?8:12;for(let L=0;L<k;L++)r.readBoolean()&&(L<6?r.skipScalingList(16):r.skipScalingList(64))}}r.skipExpGolomb();let n=r.readUnsignedExpGolomb();if(n===0)r.readUnsignedExpGolomb();else if(n===1){r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb();let x=r.readUnsignedExpGolomb();for(let k=0;k<x;k++)r.skipExpGolomb()}r.skipExpGolomb(),r.skipBits(1);let a=r.readUnsignedExpGolomb(),o=r.readUnsignedExpGolomb(),c=r.readBits(1);c===0&&r.skipBits(1),r.skipBits(1);let d=0,u=0,m=0,f=0;r.readBoolean()&&(d=r.readUnsignedExpGolomb(),u=r.readUnsignedExpGolomb(),m=r.readUnsignedExpGolomb(),f=r.readUnsignedExpGolomb());let g=1,_=1;if(r.readBoolean()&&r.readBoolean()){let x=r.readUnsignedByte(),k=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];x>0&&x<=16?(g=k[x-1],_=L[x-1]):x===255&&(g=r.readBits(16),_=r.readBits(16))}let T=(2-c)*(o+1)*16-m*2-f*2,S=(a+1)*16-d*2-u*2,b=t.fullData,E=b.byteLength,C=i.fullData,A=C.byteLength,w=0,M=new Uint8Array(11+E+A);return M[w++]=1,M[w++]=b[1],M[w++]=b[2],M[w++]=b[3],M[w++]=255,M[w++]=225,M[w++]=E>>>8&255,M[w++]=E&255,M.set(b,w),w+=E,M[w++]=1,M[w++]=A>>>8&255,M[w++]=A&255,M.set(C,w),{height:T,width:S,videoConfig:M,hSpacing:g,vSpacing:_}}static getVideoSamples(e){let t=[],i=null,r=!1,s=()=>{if(!i||!i.nalus.length||!i.frame)return;let o=i.nalus.length*4;for(let u of i.nalus)o+=u.fullData.byteLength;let c=new Uint8Array(o),d=0;for(let u of i.nalus){let m=u.fullData.byteLength;c[d]=m>>24&255,c[d+1]=m>>16&255,c[d+2]=m>>8&255,c[d+3]=m&255,c.set(u.fullData,d+4),d+=4+m}i.data=c,t.push(i)},n=new Uint8Array(0),a=o=>{i={data:n,frame:!1,isKeyframe:!1,pts:o.pts,dts:o.dts,nalus:[]}};for(let o=0;o<e.length;o++){let c=e[o],d=c.nalus,u=!1;i&&d.length&&!r&&(s(),a(c));for(let m of c.nalus){let f=!1;switch(m.type){case Ct.NALU_TYPE_NDR_:{let g=!1;f=!0;let _=m.data;if(u&&_.length>4){let T=new ii(_).readSliceType();(T===2||T===4||T===7||T===9)&&(g=!0)}g&&i&&i.frame&&!i.isKeyframe&&(s(),i=null),i||a(c),i.frame=!0,i.isKeyframe=g;break}case Ct.NALU_TYPE_IDR_:{f=!0,i&&i.frame&&!i.isKeyframe&&(s(),i=null),i||a(c),i.frame=!0,i.isKeyframe=!0;break}case Ct.NALU_TYPE_SEI_:f=!0;break;case Ct.NALU_TYPE_SPS_:f=!0,u=!0;break;case Ct.NALU_TYPE_PPS_:f=!0;break;case Ct.NALU_TYPE_AUD_:f=!0,r=!0,i&&i.frame&&(s(),i=null),i||a(c);break;case Ct.NALU_TYPE_FILLER_DATA_:f=!0;break;default:f=!1;break}i&&f&&i.nalus.push(m)}}return s(),t}static isKeyframe(e){return e.some(t=>t.type===Ct.NALU_TYPE_IDR_)}};l(Ct,"NALU_TYPE_NDR_",1),l(Ct,"NALU_TYPE_IDR_",5),l(Ct,"NALU_TYPE_SEI_",6),l(Ct,"NALU_TYPE_SPS_",7),l(Ct,"NALU_TYPE_PPS_",8),l(Ct,"NALU_TYPE_AUD_",9),l(Ct,"NALU_TYPE_FILLER_DATA_",12),l(Ct,"PROFILES_WITH_OPTIONAL_SPS_DATA_",[100,110,122,244,44,83,86,118,128,138,139,134]);var rr=Ct;/*! @license
1133
+ */var Ct=class Ct{static parseInfo(e){if(!e.length)return null;let t=e.find(x=>x.type==Ct.NALU_TYPE_SPS_),i=e.find(x=>x.type==Ct.NALU_TYPE_PPS_);if(!t||!i)return null;let r=new ri(t.data),s=r.readUnsignedByte();if(r.readUnsignedByte(),r.readUnsignedByte(),r.skipExpGolomb(),Ct.PROFILES_WITH_OPTIONAL_SPS_DATA_.includes(s)){let x=r.readUnsignedExpGolomb();if(x===3&&r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb(),r.skipBits(1),r.readBoolean()){let k=x!==3?8:12;for(let L=0;L<k;L++)r.readBoolean()&&(L<6?r.skipScalingList(16):r.skipScalingList(64))}}r.skipExpGolomb();let n=r.readUnsignedExpGolomb();if(n===0)r.readUnsignedExpGolomb();else if(n===1){r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb();let x=r.readUnsignedExpGolomb();for(let k=0;k<x;k++)r.skipExpGolomb()}r.skipExpGolomb(),r.skipBits(1);let a=r.readUnsignedExpGolomb(),o=r.readUnsignedExpGolomb(),c=r.readBits(1);c===0&&r.skipBits(1),r.skipBits(1);let d=0,u=0,m=0,f=0;r.readBoolean()&&(d=r.readUnsignedExpGolomb(),u=r.readUnsignedExpGolomb(),m=r.readUnsignedExpGolomb(),f=r.readUnsignedExpGolomb());let g=1,_=1;if(r.readBoolean()&&r.readBoolean()){let x=r.readUnsignedByte(),k=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];x>0&&x<=16?(g=k[x-1],_=L[x-1]):x===255&&(g=r.readBits(16),_=r.readBits(16))}let T=(2-c)*(o+1)*16-m*2-f*2,S=(a+1)*16-d*2-u*2,b=t.fullData,E=b.byteLength,C=i.fullData,A=C.byteLength,w=0,M=new Uint8Array(11+E+A);return M[w++]=1,M[w++]=b[1],M[w++]=b[2],M[w++]=b[3],M[w++]=255,M[w++]=225,M[w++]=E>>>8&255,M[w++]=E&255,M.set(b,w),w+=E,M[w++]=1,M[w++]=A>>>8&255,M[w++]=A&255,M.set(C,w),{height:T,width:S,videoConfig:M,hSpacing:g,vSpacing:_}}static getVideoSamples(e){let t=[],i=null,r=!1,s=()=>{if(!i||!i.nalus.length||!i.frame)return;let o=i.nalus.length*4;for(let u of i.nalus)o+=u.fullData.byteLength;let c=new Uint8Array(o),d=0;for(let u of i.nalus){let m=u.fullData.byteLength;c[d]=m>>24&255,c[d+1]=m>>16&255,c[d+2]=m>>8&255,c[d+3]=m&255,c.set(u.fullData,d+4),d+=4+m}i.data=c,t.push(i)},n=new Uint8Array(0),a=o=>{i={data:n,frame:!1,isKeyframe:!1,pts:o.pts,dts:o.dts,nalus:[]}};for(let o=0;o<e.length;o++){let c=e[o],d=c.nalus,u=!1;i&&d.length&&!r&&(s(),a(c));for(let m of c.nalus){let f=!1;switch(m.type){case Ct.NALU_TYPE_NDR_:{let g=!1;f=!0;let _=m.data;if(u&&_.length>4){let T=new ri(_).readSliceType();(T===2||T===4||T===7||T===9)&&(g=!0)}g&&i&&i.frame&&!i.isKeyframe&&(s(),i=null),i||a(c),i.frame=!0,i.isKeyframe=g;break}case Ct.NALU_TYPE_IDR_:{f=!0,i&&i.frame&&!i.isKeyframe&&(s(),i=null),i||a(c),i.frame=!0,i.isKeyframe=!0;break}case Ct.NALU_TYPE_SEI_:f=!0;break;case Ct.NALU_TYPE_SPS_:f=!0,u=!0;break;case Ct.NALU_TYPE_PPS_:f=!0;break;case Ct.NALU_TYPE_AUD_:f=!0,r=!0,i&&i.frame&&(s(),i=null),i||a(c);break;case Ct.NALU_TYPE_FILLER_DATA_:f=!0;break;default:f=!1;break}i&&f&&i.nalus.push(m)}}return s(),t}static isKeyframe(e){return e.some(t=>t.type===Ct.NALU_TYPE_IDR_)}};l(Ct,"NALU_TYPE_NDR_",1),l(Ct,"NALU_TYPE_IDR_",5),l(Ct,"NALU_TYPE_SEI_",6),l(Ct,"NALU_TYPE_SPS_",7),l(Ct,"NALU_TYPE_PPS_",8),l(Ct,"NALU_TYPE_AUD_",9),l(Ct,"NALU_TYPE_FILLER_DATA_",12),l(Ct,"PROFILES_WITH_OPTIONAL_SPS_DATA_",[100,110,122,244,44,83,86,118,128,138,139,134]);var rr=Ct;/*! @license
1134
1134
  * Shaka Player
1135
1135
  * Copyright 2016 Google LLC
1136
1136
  * SPDX-License-Identifier: Apache-2.0
1137
- */var et=class et{static parseInfo(e){if(!e.length)return null;let t=e.find(d=>d.type==et.NALU_TYPE_VPS_),i=e.find(d=>d.type==et.NALU_TYPE_SPS_),r=e.find(d=>d.type==et.NALU_TYPE_PPS_);if(!t||!i||!r)return null;let s=et.parseVPS_(t.fullData),n=et.parseSPS_(i.fullData),a=et.parsePPS_(r.fullData),o={numTemporalLayers:s.numTemporalLayers,temporalIdNested:s.temporalIdNested,generalProfileSpace:n.generalProfileSpace,generalTierFlag:n.generalTierFlag,generalLevelIdc:n.generalLevelIdc,generalProfileIdc:n.generalProfileIdc,generalProfileCompatibilityFlags1:n.generalProfileCompatibilityFlags1,generalProfileCompatibilityFlags2:n.generalProfileCompatibilityFlags2,generalProfileCompatibilityFlags3:n.generalProfileCompatibilityFlags3,generalProfileCompatibilityFlags4:n.generalProfileCompatibilityFlags4,generalConstraintIndicatorFlags1:n.generalConstraintIndicatorFlags1,generalConstraintIndicatorFlags2:n.generalConstraintIndicatorFlags2,generalConstraintIndicatorFlags3:n.generalConstraintIndicatorFlags3,generalConstraintIndicatorFlags4:n.generalConstraintIndicatorFlags4,generalConstraintIndicatorFlags5:n.generalConstraintIndicatorFlags5,generalConstraintIndicatorFlags6:n.generalConstraintIndicatorFlags6,minSpatialSegmentationIdc:n.minSpatialSegmentationIdc,chromaFormatIdc:n.chromaFormatIdc,bitDepthLumaMinus8:n.bitDepthLumaMinus8,bitDepthChromaMinus8:n.bitDepthChromaMinus8,parallelismType:a.parallelismType,frameRateFps:n.frameRateFps,frameRateFixed:n.frameRateFixed},c=et.getVideoConfiguration_(t.fullData,i.fullData,r.fullData,o);return{height:n.height,width:n.width,videoConfig:c,hSpacing:n.sarWidth,vSpacing:n.sarHeight}}static parseVPS_(e){let t=new ii(e,!0);t.readUnsignedByte(),t.readUnsignedByte(),t.readBits(4),t.readBits(2),t.readBits(6);let i=t.readBits(3),r=t.readBoolean();return{numTemporalLayers:i+1,temporalIdNested:r}}static parseSPS_(e){let t=new ii(e,!0);t.readUnsignedByte(),t.readUnsignedByte();let i=0,r=0,s=0,n=0;t.readBits(4);let a=t.readBits(3);t.readBoolean();let o=t.readBits(2),c=t.readBits(1),d=t.readBits(5),u=t.readUnsignedByte(),m=t.readUnsignedByte(),f=t.readUnsignedByte(),g=t.readUnsignedByte(),_=t.readUnsignedByte(),T=t.readUnsignedByte(),S=t.readUnsignedByte(),b=t.readUnsignedByte(),E=t.readUnsignedByte(),C=t.readUnsignedByte(),A=t.readUnsignedByte(),w=[],M=[];for(let Qe=0;Qe<a;Qe++)w.push(t.readBoolean()),M.push(t.readBoolean());if(a>0)for(let Qe=a;Qe<8;Qe++)t.readBits(2);for(let Qe=0;Qe<a;Qe++)w[Qe]&&t.readBits(88),M[Qe]&&t.readUnsignedByte();t.readUnsignedExpGolomb();let x=t.readUnsignedExpGolomb();x==3&&t.readBits(1);let k=t.readUnsignedExpGolomb(),L=t.readUnsignedExpGolomb();t.readBoolean()&&(i+=t.readUnsignedExpGolomb(),r+=t.readUnsignedExpGolomb(),s+=t.readUnsignedExpGolomb(),n+=t.readUnsignedExpGolomb());let ee=t.readUnsignedExpGolomb(),oe=t.readUnsignedExpGolomb(),le=t.readUnsignedExpGolomb();if(t.readBoolean())for(let Qe=0;Qe<=a;Qe++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb();else t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb();if(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean()&&t.readBoolean())for(let Ft=0;Ft<4;Ft++)for(let fi=0;fi<(Ft===3?2:6);fi++)if(!t.readBoolean())t.readUnsignedExpGolomb();else{let Ei=Math.min(64,1<<4+(Ft<<1));Ft>1&&t.readExpGolomb();for(let qr=0;qr<Ei;qr++)t.readExpGolomb()}t.readBoolean(),t.readBoolean(),t.readBoolean()&&(t.readUnsignedByte(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean());let ce=t.readUnsignedExpGolomb(),W=0;for(let Qe=0;Qe<ce;Qe++){let Ft=!1;if(Qe!==0&&(Ft=t.readBoolean()),Ft){Qe===ce&&t.readUnsignedExpGolomb(),t.readBoolean(),t.readUnsignedExpGolomb();let fi=0;for(let Ar=0;Ar<=W;Ar++){let Ei=t.readBoolean(),qr=!1;Ei||(qr=t.readBoolean()),(Ei||qr)&&fi++}W=fi}else{let fi=t.readUnsignedExpGolomb(),Ar=t.readUnsignedExpGolomb();W=fi+Ar;for(let Ei=0;Ei<fi;Ei++)t.readUnsignedExpGolomb(),t.readBoolean();for(let Ei=0;Ei<Ar;Ei++)t.readUnsignedExpGolomb(),t.readBoolean()}}if(t.readBoolean()){let Qe=t.readUnsignedExpGolomb();for(let Ft=0;Ft<Qe;Ft++){for(let fi=0;fi<le+4;fi++)t.readBits(1);t.readBits(1)}}let ge=!1,Y=1,X=1,O=!0,$=1,Ie=0,tt=0;if(t.readBoolean(),t.readBoolean(),t.readBoolean()){if(t.readBoolean()){let Ir=t.readUnsignedByte(),mo=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],po=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];Ir>0&&Ir<=16?(Y=mo[Ir-1],X=po[Ir-1]):Ir===255&&(Y=t.readBits(16),X=t.readBits(16))}if(t.readBoolean()&&t.readBoolean(),t.readBoolean()&&(t.readBits(3),t.readBoolean(),t.readBoolean()&&(t.readUnsignedByte(),t.readUnsignedByte(),t.readUnsignedByte())),t.readBoolean()&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb()),t.readBoolean(),t.readBoolean(),t.readBoolean(),ge=t.readBoolean(),ge&&(t.skipExpGolomb(),t.skipExpGolomb(),t.skipExpGolomb(),t.skipExpGolomb()),t.readBoolean()&&($=t.readBits(32),Ie=t.readBits(32),t.readBoolean()&&t.readUnsignedExpGolomb(),t.readBoolean())){let Wa=!1,za=!1,gs=!1;Wa=t.readBoolean(),za=t.readBoolean(),(Wa||za)&&(gs=t.readBoolean(),gs&&(t.readUnsignedByte(),t.readBits(5),t.readBoolean(),t.readBits(5)),t.readBits(4),t.readBits(4),gs&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(let fo=0;fo<=a;fo++){O=t.readBoolean();let go=!0,Xa=1;O||(go=t.readBoolean());let _o=!1;if(go?t.readUnsignedExpGolomb():_o=t.readBoolean(),_o||(Xa=t.readUnsignedExpGolomb()+1),Wa){for(let _s=0;_s<Xa;_s++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),gs&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb());t.readBoolean()}if(za){for(let _s=0;_s<Xa;_s++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),gs&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb());t.readBoolean()}}}t.readBoolean()&&(t.readBoolean(),t.readBoolean(),t.readBoolean(),tt=t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb())}let bt=x===1||x===2?2:1,yt=x===1?2:1,xt=k-(i+r)*bt,mt=L-(s+n)*yt;return{generalLevelIdc:A,generalProfileSpace:o,generalTierFlag:c,generalProfileIdc:d,generalProfileCompatibilityFlags1:u,generalProfileCompatibilityFlags2:m,generalProfileCompatibilityFlags3:f,generalProfileCompatibilityFlags4:g,generalConstraintIndicatorFlags1:_,generalConstraintIndicatorFlags2:T,generalConstraintIndicatorFlags3:S,generalConstraintIndicatorFlags4:b,generalConstraintIndicatorFlags5:E,generalConstraintIndicatorFlags6:C,minSpatialSegmentationIdc:tt,chromaFormatIdc:x,bitDepthLumaMinus8:ee,bitDepthChromaMinus8:oe,width:xt,height:mt,sarWidth:Y,sarHeight:X,frameRateFps:Ie/$,frameRateFixed:O}}static parsePPS_(e){let t=new ii(e,!0);t.readUnsignedByte(),t.readUnsignedByte(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBits(3),t.readBoolean(),t.readBoolean(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBoolean()&&t.readUnsignedExpGolomb(),t.readExpGolomb(),t.readExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBoolean(),t.readBoolean();let r=t.readBoolean(),s=t.readBoolean(),n=1;return s&&r?n=0:s?n=3:r&&(n=2),{parallelismType:n}}static getVideoConfiguration_(e,t,i,r){let s=23+(5+e.byteLength)+(5+t.byteLength)+(5+i.byteLength),n=new Uint8Array(s);n[0]=1,n[1]=(r.generalProfileSpace&3)<<6|(r.generalTierFlag?1:0)<<5|r.generalProfileIdc&31,n[2]=r.generalProfileCompatibilityFlags1,n[3]=r.generalProfileCompatibilityFlags2,n[4]=r.generalProfileCompatibilityFlags3,n[5]=r.generalProfileCompatibilityFlags4,n[6]=r.generalConstraintIndicatorFlags1,n[7]=r.generalConstraintIndicatorFlags2,n[8]=r.generalConstraintIndicatorFlags3,n[9]=r.generalConstraintIndicatorFlags4,n[10]=r.generalConstraintIndicatorFlags5,n[11]=r.generalConstraintIndicatorFlags6,n[12]=r.generalLevelIdc,n[13]=240|(r.minSpatialSegmentationIdc&3840)>>8,n[14]=r.minSpatialSegmentationIdc&255,n[15]=252|r.parallelismType&3,n[16]=252|r.chromaFormatIdc&3,n[17]=248|r.bitDepthLumaMinus8&7,n[18]=248|r.bitDepthChromaMinus8&7,n[19]=0,n[20]=parseInt(r.frameRateFps,10),n[21]=((r.frameRateFixed?1:0)&3)<<6|(r.numTemporalLayers&7)<<3|(r.temporalIdNested?1:0)<<2|3,n[22]=3;let a=[e,t,i],o=23,c=a.length-1;for(let d=0;d<a.length;d+=1)n.set(new Uint8Array([32+d|(d===c?128:0),0,1,a[d].byteLength>>8,a[d].byteLength&255]),o),o+=5,n.set(a[d],o),o+=a[d].byteLength;return n}static parseFrame(e,t){let i=!1,r=[],s=0,n=!1;for(let c of e){let d=!1;switch(c.type){case et.NALU_TYPE_TRAIL_N_:case et.NALU_TYPE_TRAIL_R_:{n=!0,d=!0;break}case et.NALU_TYPE_IDR_W_RADL_:case et.NALU_TYPE_IDR_N_LP_:case et.NALU_TYPE_CRA_NUT_:n=!0,d=!0,i=!0;break;case et.NALU_TYPE_VPS_:case et.NALU_TYPE_SPS_:case et.NALU_TYPE_PPS_:d=!0;break;case et.NALU_TYPE_AUD_:d=!0,n=!0;break;case et.NALU_TYPE_SEI_PREFIX_:case et.NALU_TYPE_SEI_SUFFIX_:d=!0;break;default:d=!1;break}n&&d&&(r.push(c.fullData),s+=c.fullData.byteLength)}if(!r.length)return!1;s+=4*r.length;let a=new Uint8Array(s),o=0;for(let c of r){let d=c.byteLength;a[o]=d>>24&255,a[o+1]=d>>16&255,a[o+2]=d>>8&255,a[o+3]=d&255,a.set(c,o+4),o+=d+4}return t.data=a,t.isKeyframe=i,!0}};l(et,"NALU_TYPE_TRAIL_N_",1),l(et,"NALU_TYPE_TRAIL_R_",0),l(et,"NALU_TYPE_IDR_W_RADL_",19),l(et,"NALU_TYPE_IDR_N_LP_",20),l(et,"NALU_TYPE_CRA_NUT_",21),l(et,"NALU_TYPE_VPS_",32),l(et,"NALU_TYPE_SPS_",33),l(et,"NALU_TYPE_PPS_",34),l(et,"NALU_TYPE_AUD_",35),l(et,"NALU_TYPE_SEI_PREFIX_",39),l(et,"NALU_TYPE_SEI_SUFFIX_",40);var sr=et;/*! @license
1137
+ */var et=class et{static parseInfo(e){if(!e.length)return null;let t=e.find(d=>d.type==et.NALU_TYPE_VPS_),i=e.find(d=>d.type==et.NALU_TYPE_SPS_),r=e.find(d=>d.type==et.NALU_TYPE_PPS_);if(!t||!i||!r)return null;let s=et.parseVPS_(t.fullData),n=et.parseSPS_(i.fullData),a=et.parsePPS_(r.fullData),o={numTemporalLayers:s.numTemporalLayers,temporalIdNested:s.temporalIdNested,generalProfileSpace:n.generalProfileSpace,generalTierFlag:n.generalTierFlag,generalLevelIdc:n.generalLevelIdc,generalProfileIdc:n.generalProfileIdc,generalProfileCompatibilityFlags1:n.generalProfileCompatibilityFlags1,generalProfileCompatibilityFlags2:n.generalProfileCompatibilityFlags2,generalProfileCompatibilityFlags3:n.generalProfileCompatibilityFlags3,generalProfileCompatibilityFlags4:n.generalProfileCompatibilityFlags4,generalConstraintIndicatorFlags1:n.generalConstraintIndicatorFlags1,generalConstraintIndicatorFlags2:n.generalConstraintIndicatorFlags2,generalConstraintIndicatorFlags3:n.generalConstraintIndicatorFlags3,generalConstraintIndicatorFlags4:n.generalConstraintIndicatorFlags4,generalConstraintIndicatorFlags5:n.generalConstraintIndicatorFlags5,generalConstraintIndicatorFlags6:n.generalConstraintIndicatorFlags6,minSpatialSegmentationIdc:n.minSpatialSegmentationIdc,chromaFormatIdc:n.chromaFormatIdc,bitDepthLumaMinus8:n.bitDepthLumaMinus8,bitDepthChromaMinus8:n.bitDepthChromaMinus8,parallelismType:a.parallelismType,frameRateFps:n.frameRateFps,frameRateFixed:n.frameRateFixed},c=et.getVideoConfiguration_(t.fullData,i.fullData,r.fullData,o);return{height:n.height,width:n.width,videoConfig:c,hSpacing:n.sarWidth,vSpacing:n.sarHeight}}static parseVPS_(e){let t=new ri(e,!0);t.readUnsignedByte(),t.readUnsignedByte(),t.readBits(4),t.readBits(2),t.readBits(6);let i=t.readBits(3),r=t.readBoolean();return{numTemporalLayers:i+1,temporalIdNested:r}}static parseSPS_(e){let t=new ri(e,!0);t.readUnsignedByte(),t.readUnsignedByte();let i=0,r=0,s=0,n=0;t.readBits(4);let a=t.readBits(3);t.readBoolean();let o=t.readBits(2),c=t.readBits(1),d=t.readBits(5),u=t.readUnsignedByte(),m=t.readUnsignedByte(),f=t.readUnsignedByte(),g=t.readUnsignedByte(),_=t.readUnsignedByte(),T=t.readUnsignedByte(),S=t.readUnsignedByte(),b=t.readUnsignedByte(),E=t.readUnsignedByte(),C=t.readUnsignedByte(),A=t.readUnsignedByte(),w=[],M=[];for(let Qe=0;Qe<a;Qe++)w.push(t.readBoolean()),M.push(t.readBoolean());if(a>0)for(let Qe=a;Qe<8;Qe++)t.readBits(2);for(let Qe=0;Qe<a;Qe++)w[Qe]&&t.readBits(88),M[Qe]&&t.readUnsignedByte();t.readUnsignedExpGolomb();let x=t.readUnsignedExpGolomb();x==3&&t.readBits(1);let k=t.readUnsignedExpGolomb(),L=t.readUnsignedExpGolomb();t.readBoolean()&&(i+=t.readUnsignedExpGolomb(),r+=t.readUnsignedExpGolomb(),s+=t.readUnsignedExpGolomb(),n+=t.readUnsignedExpGolomb());let ee=t.readUnsignedExpGolomb(),oe=t.readUnsignedExpGolomb(),le=t.readUnsignedExpGolomb();if(t.readBoolean())for(let Qe=0;Qe<=a;Qe++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb();else t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb();if(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean()&&t.readBoolean())for(let Ft=0;Ft<4;Ft++)for(let fi=0;fi<(Ft===3?2:6);fi++)if(!t.readBoolean())t.readUnsignedExpGolomb();else{let Ei=Math.min(64,1<<4+(Ft<<1));Ft>1&&t.readExpGolomb();for(let qr=0;qr<Ei;qr++)t.readExpGolomb()}t.readBoolean(),t.readBoolean(),t.readBoolean()&&(t.readUnsignedByte(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean());let ce=t.readUnsignedExpGolomb(),W=0;for(let Qe=0;Qe<ce;Qe++){let Ft=!1;if(Qe!==0&&(Ft=t.readBoolean()),Ft){Qe===ce&&t.readUnsignedExpGolomb(),t.readBoolean(),t.readUnsignedExpGolomb();let fi=0;for(let Ar=0;Ar<=W;Ar++){let Ei=t.readBoolean(),qr=!1;Ei||(qr=t.readBoolean()),(Ei||qr)&&fi++}W=fi}else{let fi=t.readUnsignedExpGolomb(),Ar=t.readUnsignedExpGolomb();W=fi+Ar;for(let Ei=0;Ei<fi;Ei++)t.readUnsignedExpGolomb(),t.readBoolean();for(let Ei=0;Ei<Ar;Ei++)t.readUnsignedExpGolomb(),t.readBoolean()}}if(t.readBoolean()){let Qe=t.readUnsignedExpGolomb();for(let Ft=0;Ft<Qe;Ft++){for(let fi=0;fi<le+4;fi++)t.readBits(1);t.readBits(1)}}let ge=!1,Y=1,X=1,N=!0,$=1,Ie=0,tt=0;if(t.readBoolean(),t.readBoolean(),t.readBoolean()){if(t.readBoolean()){let Ir=t.readUnsignedByte(),mo=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],po=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];Ir>0&&Ir<=16?(Y=mo[Ir-1],X=po[Ir-1]):Ir===255&&(Y=t.readBits(16),X=t.readBits(16))}if(t.readBoolean()&&t.readBoolean(),t.readBoolean()&&(t.readBits(3),t.readBoolean(),t.readBoolean()&&(t.readUnsignedByte(),t.readUnsignedByte(),t.readUnsignedByte())),t.readBoolean()&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb()),t.readBoolean(),t.readBoolean(),t.readBoolean(),ge=t.readBoolean(),ge&&(t.skipExpGolomb(),t.skipExpGolomb(),t.skipExpGolomb(),t.skipExpGolomb()),t.readBoolean()&&($=t.readBits(32),Ie=t.readBits(32),t.readBoolean()&&t.readUnsignedExpGolomb(),t.readBoolean())){let Wa=!1,za=!1,gs=!1;Wa=t.readBoolean(),za=t.readBoolean(),(Wa||za)&&(gs=t.readBoolean(),gs&&(t.readUnsignedByte(),t.readBits(5),t.readBoolean(),t.readBits(5)),t.readBits(4),t.readBits(4),gs&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(let fo=0;fo<=a;fo++){N=t.readBoolean();let go=!0,Xa=1;N||(go=t.readBoolean());let _o=!1;if(go?t.readUnsignedExpGolomb():_o=t.readBoolean(),_o||(Xa=t.readUnsignedExpGolomb()+1),Wa){for(let _s=0;_s<Xa;_s++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),gs&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb());t.readBoolean()}if(za){for(let _s=0;_s<Xa;_s++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),gs&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb());t.readBoolean()}}}t.readBoolean()&&(t.readBoolean(),t.readBoolean(),t.readBoolean(),tt=t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb())}let bt=x===1||x===2?2:1,yt=x===1?2:1,xt=k-(i+r)*bt,mt=L-(s+n)*yt;return{generalLevelIdc:A,generalProfileSpace:o,generalTierFlag:c,generalProfileIdc:d,generalProfileCompatibilityFlags1:u,generalProfileCompatibilityFlags2:m,generalProfileCompatibilityFlags3:f,generalProfileCompatibilityFlags4:g,generalConstraintIndicatorFlags1:_,generalConstraintIndicatorFlags2:T,generalConstraintIndicatorFlags3:S,generalConstraintIndicatorFlags4:b,generalConstraintIndicatorFlags5:E,generalConstraintIndicatorFlags6:C,minSpatialSegmentationIdc:tt,chromaFormatIdc:x,bitDepthLumaMinus8:ee,bitDepthChromaMinus8:oe,width:xt,height:mt,sarWidth:Y,sarHeight:X,frameRateFps:Ie/$,frameRateFixed:N}}static parsePPS_(e){let t=new ri(e,!0);t.readUnsignedByte(),t.readUnsignedByte(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBits(3),t.readBoolean(),t.readBoolean(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBoolean()&&t.readUnsignedExpGolomb(),t.readExpGolomb(),t.readExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBoolean(),t.readBoolean();let r=t.readBoolean(),s=t.readBoolean(),n=1;return s&&r?n=0:s?n=3:r&&(n=2),{parallelismType:n}}static getVideoConfiguration_(e,t,i,r){let s=23+(5+e.byteLength)+(5+t.byteLength)+(5+i.byteLength),n=new Uint8Array(s);n[0]=1,n[1]=(r.generalProfileSpace&3)<<6|(r.generalTierFlag?1:0)<<5|r.generalProfileIdc&31,n[2]=r.generalProfileCompatibilityFlags1,n[3]=r.generalProfileCompatibilityFlags2,n[4]=r.generalProfileCompatibilityFlags3,n[5]=r.generalProfileCompatibilityFlags4,n[6]=r.generalConstraintIndicatorFlags1,n[7]=r.generalConstraintIndicatorFlags2,n[8]=r.generalConstraintIndicatorFlags3,n[9]=r.generalConstraintIndicatorFlags4,n[10]=r.generalConstraintIndicatorFlags5,n[11]=r.generalConstraintIndicatorFlags6,n[12]=r.generalLevelIdc,n[13]=240|(r.minSpatialSegmentationIdc&3840)>>8,n[14]=r.minSpatialSegmentationIdc&255,n[15]=252|r.parallelismType&3,n[16]=252|r.chromaFormatIdc&3,n[17]=248|r.bitDepthLumaMinus8&7,n[18]=248|r.bitDepthChromaMinus8&7,n[19]=0,n[20]=parseInt(r.frameRateFps,10),n[21]=((r.frameRateFixed?1:0)&3)<<6|(r.numTemporalLayers&7)<<3|(r.temporalIdNested?1:0)<<2|3,n[22]=3;let a=[e,t,i],o=23,c=a.length-1;for(let d=0;d<a.length;d+=1)n.set(new Uint8Array([32+d|(d===c?128:0),0,1,a[d].byteLength>>8,a[d].byteLength&255]),o),o+=5,n.set(a[d],o),o+=a[d].byteLength;return n}static parseFrame(e,t){let i=!1,r=[],s=0,n=!1;for(let c of e){let d=!1;switch(c.type){case et.NALU_TYPE_TRAIL_N_:case et.NALU_TYPE_TRAIL_R_:{n=!0,d=!0;break}case et.NALU_TYPE_IDR_W_RADL_:case et.NALU_TYPE_IDR_N_LP_:case et.NALU_TYPE_CRA_NUT_:n=!0,d=!0,i=!0;break;case et.NALU_TYPE_VPS_:case et.NALU_TYPE_SPS_:case et.NALU_TYPE_PPS_:d=!0;break;case et.NALU_TYPE_AUD_:d=!0,n=!0;break;case et.NALU_TYPE_SEI_PREFIX_:case et.NALU_TYPE_SEI_SUFFIX_:d=!0;break;default:d=!1;break}n&&d&&(r.push(c.fullData),s+=c.fullData.byteLength)}if(!r.length)return!1;s+=4*r.length;let a=new Uint8Array(s),o=0;for(let c of r){let d=c.byteLength;a[o]=d>>24&255,a[o+1]=d>>16&255,a[o+2]=d>>8&255,a[o+3]=d&255,a.set(c,o+4),o+=d+4}return t.data=a,t.isKeyframe=i,!0}};l(et,"NALU_TYPE_TRAIL_N_",1),l(et,"NALU_TYPE_TRAIL_R_",0),l(et,"NALU_TYPE_IDR_W_RADL_",19),l(et,"NALU_TYPE_IDR_N_LP_",20),l(et,"NALU_TYPE_CRA_NUT_",21),l(et,"NALU_TYPE_VPS_",32),l(et,"NALU_TYPE_SPS_",33),l(et,"NALU_TYPE_PPS_",34),l(et,"NALU_TYPE_AUD_",35),l(et,"NALU_TYPE_SEI_PREFIX_",39),l(et,"NALU_TYPE_SEI_SUFFIX_",40);var sr=et;/*! @license
1138
1138
  * Shaka Player
1139
1139
  * Copyright 2016 Google LLC
1140
1140
  * SPDX-License-Identifier: Apache-2.0
@@ -1142,20 +1142,20 @@ ${o}
1142
1142
  * Shaka Player
1143
1143
  * Copyright 2016 Google LLC
1144
1144
  * SPDX-License-Identifier: Apache-2.0
1145
- */var nr=class nr extends li{constructor(t){super(t);l(this,"avcInfo_");l(this,"hvcInfo_");this.avcInfo_=null,this.hvcInfo_=null}destroy(){super.destroy(),this.avcInfo_=null,this.hvcInfo_=null}isSupported(t,i){if(!this.isLocContainer_(t))return!1;let r=R.ContentType,s=t;i&&(s=this.convertCodecs(i,t));let n=N.getCodecs(s),a=N.splitCodecs(n),o=R.guessCodecsSafe(r.AUDIO,a),c=R.guessCodecsSafe(r.VIDEO,a);if(o){let m=N.getNormalizedCodec(o);if(!nr.SUPPORTED_AUDIO_CODECS_.includes(m))return!1}if(c){let m=N.getNormalizedCodec(c);if(!nr.SUPPORTED_VIDEO_CODECS_.includes(m))return!1}if(i)return Ke.isTypeSupported(this.convertCodecs(i,t));let d=this.convertCodecs(r.AUDIO,t),u=this.convertCodecs(r.VIDEO,t);return Ke.isTypeSupported(d)||Ke.isTypeSupported(u)}isLocContainer_(t){return t.toLowerCase().split(";")[0]=="moq/loc"}convertCodecs(t,i){if(this.isLocContainer_(i)){let r=R.ContentType,s=N.getCodecs(i).split(",").map(n=>N.getCorrectAudioCodecs(n,"audio/mp4")).map(N.getCorrectVideoCodecs).join(",");return t==r.AUDIO?`audio/mp4; codecs="${s}"`:`video/mp4; codecs="${s}"`}return i}transmux(t,i,r,s,n){let a=R.ContentType,o=D.toUint8(t),c=[];try{let u=N.getNormalizedCodec(i.codecs),m;if(n==a.VIDEO){switch(u){case"avc":m=this.getAvcStreamInfo_(o,i,r,s);break;case"hevc":m=this.getHvcStreamInfo_(o,i,s,r);break}m&&c.push(m)}if(n==a.AUDIO){switch(u){case"aac":m=this.getAacStreamInfo_(o,i,s,r);break;case"opus":m=this.getOpusStreamInfo_(o,i,s,r);break}m&&c.push(m)}}catch(u){return Promise.reject(u)}if(!c.length)return Promise.resolve({data:new Uint8Array([]),init:null});let d=new xe(c);return Promise.resolve(this.packageSegment(d,i,r))}extractNalus_(t,i){let r=[],s=i==="hvc",n=s?2:1,a=0;for(;a+4<=t.byteLength;){let o=(t[a]<<24|t[a+1]<<16|t[a+2]<<8|t[a+3])>>>0;a+=4;let c;if(o===1){c=t.byteLength;for(let f=a;f+2<t.byteLength;f++)if(t[f]===0&&t[f+1]===0){if(t[f+2]===1){c=f;break}if(f+3<t.byteLength&&t[f+2]===0&&t[f+3]===1){c=f;break}}}else if(c=a+o,c>t.byteLength)break;if(c<=a)break;let d=t.subarray(a,c),u=s?(d[0]&126)>>1:d[0]&31,m=d.length>n?d.subarray(n):new Uint8Array([]);r.push({type:u,data:m,fullData:d}),a=c}return r}getAvcStreamInfo_(t,i,r,s){let n=nr.VIDEO_TIMESCALE_,a=this.extractNalus_(t,"avc"),o=rr.parseInfo(a);if(o&&(this.avcInfo_=o,i.height=o.height,i.width=o.width),!this.avcInfo_)return null;let c=rr.isKeyframe(a),d=Math.floor(r.startTime*n),u=Math.floor((r.endTime-r.startTime)*n),m=[{data:t,size:t.byteLength,duration:u,cts:0,flags:c?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS}];return{id:i.id,type:R.ContentType.VIDEO,codecs:"avc1",timescale:n,duration:s,mediaConfig:this.avcInfo_.videoConfig,hSpacing:this.avcInfo_.hSpacing,vSpacing:this.avcInfo_.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:d,samples:m},stream:i}}getHvcStreamInfo_(t,i,r,s){let n=nr.VIDEO_TIMESCALE_,a=this.extractNalus_(t,"hvc"),o=sr.parseInfo(a);if(o&&(this.hvcInfo_=o,i.height=o.height,i.width=o.width),!this.hvcInfo_)return null;let c=Math.floor(s.startTime*n),d=Math.floor((s.endTime-s.startTime)*n),u={data:new Uint8Array(0),isKeyframe:!1};if(!sr.parseFrame(a,u))return null;let f=[{data:u.data,size:u.data.byteLength,duration:d,cts:0,flags:u.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS}];return{id:i.id,type:R.ContentType.VIDEO,codecs:"hvc1",timescale:n,duration:r,mediaConfig:this.hvcInfo_.videoConfig,hSpacing:this.hvcInfo_.hSpacing,vSpacing:this.hvcInfo_.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:c,samples:f},stream:i}}getAacStreamInfo_(t,i,r,s){v.assert(i.audioSamplingRate,"Must have audioSamplingRate");let n=i.audioSamplingRate,a=Math.floor(s.startTime*n),o=[{data:t,size:t.length,duration:1024,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}];return{id:i.id,type:R.ContentType.AUDIO,codecs:i.codecs,timescale:n,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:a,samples:o},stream:i}}getOpusStreamInfo_(t,i,r,s){v.assert(i.audioSamplingRate,"Must have audioSamplingRate");let n=i.audioSamplingRate,a=Math.floor(s.startTime*n),o=[{data:t,size:t.length,duration:Er.getPacketSampleCount(t),cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}],c=new Uint8Array([0,i.channelsCount,0,0,i.audioSamplingRate>>>24&255,i.audioSamplingRate>>>17&255,i.audioSamplingRate>>>8&255,i.audioSamplingRate>>>0&255,0,0,0]);return{id:i.id,type:R.ContentType.AUDIO,codecs:i.codecs,timescale:n,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:a,samples:o},stream:i}}};l(nr,"VIDEO_TIMESCALE_",9e4),l(nr,"SUPPORTED_AUDIO_CODECS_",["aac","opus"]),l(nr,"SUPPORTED_VIDEO_CODECS_",["avc","hevc"]);var Ha=nr;Oe.registerTransmuxer("moq/loc",()=>new Ha("moq/loc"),Oe.PluginPriority.FALLBACK);/*! @license
1145
+ */var nr=class nr extends li{constructor(t){super(t);l(this,"avcInfo_");l(this,"hvcInfo_");this.avcInfo_=null,this.hvcInfo_=null}destroy(){super.destroy(),this.avcInfo_=null,this.hvcInfo_=null}isSupported(t,i){if(!this.isLocContainer_(t))return!1;let r=R.ContentType,s=t;i&&(s=this.convertCodecs(i,t));let n=O.getCodecs(s),a=O.splitCodecs(n),o=R.guessCodecsSafe(r.AUDIO,a),c=R.guessCodecsSafe(r.VIDEO,a);if(o){let m=O.getNormalizedCodec(o);if(!nr.SUPPORTED_AUDIO_CODECS_.includes(m))return!1}if(c){let m=O.getNormalizedCodec(c);if(!nr.SUPPORTED_VIDEO_CODECS_.includes(m))return!1}if(i)return Ke.isTypeSupported(this.convertCodecs(i,t));let d=this.convertCodecs(r.AUDIO,t),u=this.convertCodecs(r.VIDEO,t);return Ke.isTypeSupported(d)||Ke.isTypeSupported(u)}isLocContainer_(t){return t.toLowerCase().split(";")[0]=="moq/loc"}convertCodecs(t,i){if(this.isLocContainer_(i)){let r=R.ContentType,s=O.getCodecs(i).split(",").map(n=>O.getCorrectAudioCodecs(n,"audio/mp4")).map(O.getCorrectVideoCodecs).join(",");return t==r.AUDIO?`audio/mp4; codecs="${s}"`:`video/mp4; codecs="${s}"`}return i}transmux(t,i,r,s,n){let a=R.ContentType,o=D.toUint8(t),c=[];try{let u=O.getNormalizedCodec(i.codecs),m;if(n==a.VIDEO){switch(u){case"avc":m=this.getAvcStreamInfo_(o,i,r,s);break;case"hevc":m=this.getHvcStreamInfo_(o,i,s,r);break}m&&c.push(m)}if(n==a.AUDIO){switch(u){case"aac":m=this.getAacStreamInfo_(o,i,s,r);break;case"opus":m=this.getOpusStreamInfo_(o,i,s,r);break}m&&c.push(m)}}catch(u){return Promise.reject(u)}if(!c.length)return Promise.resolve({data:new Uint8Array([]),init:null});let d=new xe(c);return Promise.resolve(this.packageSegment(d,i,r))}extractNalus_(t,i){let r=[],s=i==="hvc",n=s?2:1,a=0;for(;a+4<=t.byteLength;){let o=(t[a]<<24|t[a+1]<<16|t[a+2]<<8|t[a+3])>>>0;a+=4;let c;if(o===1){c=t.byteLength;for(let f=a;f+2<t.byteLength;f++)if(t[f]===0&&t[f+1]===0){if(t[f+2]===1){c=f;break}if(f+3<t.byteLength&&t[f+2]===0&&t[f+3]===1){c=f;break}}}else if(c=a+o,c>t.byteLength)break;if(c<=a)break;let d=t.subarray(a,c),u=s?(d[0]&126)>>1:d[0]&31,m=d.length>n?d.subarray(n):new Uint8Array([]);r.push({type:u,data:m,fullData:d}),a=c}return r}getAvcStreamInfo_(t,i,r,s){let n=nr.VIDEO_TIMESCALE_,a=this.extractNalus_(t,"avc"),o=rr.parseInfo(a);if(o&&(this.avcInfo_=o,i.height=o.height,i.width=o.width),!this.avcInfo_)return null;let c=rr.isKeyframe(a),d=Math.floor(r.startTime*n),u=Math.floor((r.endTime-r.startTime)*n),m=[{data:t,size:t.byteLength,duration:u,cts:0,flags:c?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS}];return{id:i.id,type:R.ContentType.VIDEO,codecs:"avc1",timescale:n,duration:s,mediaConfig:this.avcInfo_.videoConfig,hSpacing:this.avcInfo_.hSpacing,vSpacing:this.avcInfo_.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:d,samples:m},stream:i}}getHvcStreamInfo_(t,i,r,s){let n=nr.VIDEO_TIMESCALE_,a=this.extractNalus_(t,"hvc"),o=sr.parseInfo(a);if(o&&(this.hvcInfo_=o,i.height=o.height,i.width=o.width),!this.hvcInfo_)return null;let c=Math.floor(s.startTime*n),d=Math.floor((s.endTime-s.startTime)*n),u={data:new Uint8Array(0),isKeyframe:!1};if(!sr.parseFrame(a,u))return null;let f=[{data:u.data,size:u.data.byteLength,duration:d,cts:0,flags:u.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS}];return{id:i.id,type:R.ContentType.VIDEO,codecs:"hvc1",timescale:n,duration:r,mediaConfig:this.hvcInfo_.videoConfig,hSpacing:this.hvcInfo_.hSpacing,vSpacing:this.hvcInfo_.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:c,samples:f},stream:i}}getAacStreamInfo_(t,i,r,s){v.assert(i.audioSamplingRate,"Must have audioSamplingRate");let n=i.audioSamplingRate,a=Math.floor(s.startTime*n),o=[{data:t,size:t.length,duration:1024,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}];return{id:i.id,type:R.ContentType.AUDIO,codecs:i.codecs,timescale:n,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:a,samples:o},stream:i}}getOpusStreamInfo_(t,i,r,s){v.assert(i.audioSamplingRate,"Must have audioSamplingRate");let n=i.audioSamplingRate,a=Math.floor(s.startTime*n),o=[{data:t,size:t.length,duration:Er.getPacketSampleCount(t),cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}],c=new Uint8Array([0,i.channelsCount,0,0,i.audioSamplingRate>>>24&255,i.audioSamplingRate>>>17&255,i.audioSamplingRate>>>8&255,i.audioSamplingRate>>>0&255,0,0,0]);return{id:i.id,type:R.ContentType.AUDIO,codecs:i.codecs,timescale:n,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:a,samples:o},stream:i}}};l(nr,"VIDEO_TIMESCALE_",9e4),l(nr,"SUPPORTED_AUDIO_CODECS_",["aac","opus"]),l(nr,"SUPPORTED_VIDEO_CODECS_",["avc","hevc"]);var Ha=nr;Ne.registerTransmuxer("moq/loc",()=>new Ha("moq/loc"),Ne.PluginPriority.FALLBACK);/*! @license
1146
1146
  * Shaka Player
1147
1147
  * Copyright 2016 Google LLC
1148
1148
  * SPDX-License-Identifier: Apache-2.0
1149
- */var Jt=class Jt{static parseHeader(e,t){let i=e[t+1]>>3&3,r=e[t+1]>>1&3,s=e[t+2]>>4&15,n=e[t+2]>>2&3;if(i!==1&&s!==0&&s!==15&&n!==3){let a=e[t+2]>>1&1,o=e[t+3]>>6,c=0;i===3?c=3-r:c=r===3?3:4;let d=Jt.BITRATES_MAP_[c*14+s-1]*1e3,u=i===3?0:i===2?1:2,m=Jt.SAMPLING_RATE_MAP_[u*3+n],f=o===3?1:2,g=Jt.SAMPLES_COEFFICIENTS_[i][r],_=Jt.BYTES_IN_SLOT_[r],T=g*8*_,S=Math.floor(g*d/m+a)*_,E=(navigator.userAgent||"").match(/Chrome\/(\d+)/i),C=E?parseInt(E[1],10):0;return C&&C<=87&&r===2&&d>=224e3&&o===0&&(e[t+3]=e[t+3]|128),{sampleRate:m,channelCount:f,frameLength:S,samplesPerFrame:T}}return null}static isHeaderPattern(e,t){return e[t]===255&&(e[t+1]&224)===224&&(e[t+1]&6)!==0}static isHeader(e,t){return t+1<e.length&&Jt.isHeaderPattern(e,t)}static probe(e,t){if(t+1<e.length&&Jt.isHeaderPattern(e,t)){let r=Jt.parseHeader(e,t),s=4;r&&r.frameLength&&(s=r.frameLength);let n=t+s;return n===e.length||Jt.isHeader(e,n)}return!1}};l(Jt,"BITRATES_MAP_",[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160]),l(Jt,"SAMPLING_RATE_MAP_",[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3]),l(Jt,"SAMPLES_COEFFICIENTS_",[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]]),l(Jt,"BYTES_IN_SLOT_",[0,1,1,4]),l(Jt,"MPEG_AUDIO_SAMPLE_PER_FRAME",1152);var pi=Jt;/*! @license
1149
+ */var Zt=class Zt{static parseHeader(e,t){let i=e[t+1]>>3&3,r=e[t+1]>>1&3,s=e[t+2]>>4&15,n=e[t+2]>>2&3;if(i!==1&&s!==0&&s!==15&&n!==3){let a=e[t+2]>>1&1,o=e[t+3]>>6,c=0;i===3?c=3-r:c=r===3?3:4;let d=Zt.BITRATES_MAP_[c*14+s-1]*1e3,u=i===3?0:i===2?1:2,m=Zt.SAMPLING_RATE_MAP_[u*3+n],f=o===3?1:2,g=Zt.SAMPLES_COEFFICIENTS_[i][r],_=Zt.BYTES_IN_SLOT_[r],T=g*8*_,S=Math.floor(g*d/m+a)*_,E=(navigator.userAgent||"").match(/Chrome\/(\d+)/i),C=E?parseInt(E[1],10):0;return C&&C<=87&&r===2&&d>=224e3&&o===0&&(e[t+3]=e[t+3]|128),{sampleRate:m,channelCount:f,frameLength:S,samplesPerFrame:T}}return null}static isHeaderPattern(e,t){return e[t]===255&&(e[t+1]&224)===224&&(e[t+1]&6)!==0}static isHeader(e,t){return t+1<e.length&&Zt.isHeaderPattern(e,t)}static probe(e,t){if(t+1<e.length&&Zt.isHeaderPattern(e,t)){let r=Zt.parseHeader(e,t),s=4;r&&r.frameLength&&(s=r.frameLength);let n=t+s;return n===e.length||Zt.isHeader(e,n)}return!1}};l(Zt,"BITRATES_MAP_",[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160]),l(Zt,"SAMPLING_RATE_MAP_",[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3]),l(Zt,"SAMPLES_COEFFICIENTS_",[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]]),l(Zt,"BYTES_IN_SLOT_",[0,1,1,4]),l(Zt,"MPEG_AUDIO_SAMPLE_PER_FRAME",1152);var pi=Zt;/*! @license
1150
1150
  * Shaka Player
1151
1151
  * Copyright 2016 Google LLC
1152
1152
  * SPDX-License-Identifier: Apache-2.0
1153
- */var Ga=class extends li{isSupported(e,t){if(!this.isMpegContainer_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isMpegContainer_(e){return e.toLowerCase().split(";")[0]=="audio/mpeg"}convertCodecs(e,t){return this.isMpegContainer_(t)?'audio/mp4; codecs="mp3"':t}transmux(e,t,i,r){let s=D.toUint8(e),a=It.getID3Data(s).length;for(;a<s.length&&!pi.probe(s,a);a++);let o=9e4,c,d=[];for(;a<s.length;){let T=pi.parseHeader(s,a);if(!T)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));c||(c=T),a+T.frameLength<=s.length&&d.push({data:s.subarray(a,a+T.frameLength),size:T.frameLength,duration:pi.MPEG_AUDIO_SAMPLE_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=T.frameLength}if(!c)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let u=c.sampleRate,m=c.samplesPerFrame*o/c.sampleRate,f=this.frameIndex*m,g={id:t.id,type:R.ContentType.AUDIO,codecs:"mp3",timescale:u,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:d},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Oe.registerTransmuxer("audio/mpeg",()=>new Ga("audio/mpeg"),Oe.PluginPriority.FALLBACK);/*! @license
1153
+ */var Ga=class extends li{isSupported(e,t){if(!this.isMpegContainer_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isMpegContainer_(e){return e.toLowerCase().split(";")[0]=="audio/mpeg"}convertCodecs(e,t){return this.isMpegContainer_(t)?'audio/mp4; codecs="mp3"':t}transmux(e,t,i,r){let s=D.toUint8(e),a=It.getID3Data(s).length;for(;a<s.length&&!pi.probe(s,a);a++);let o=9e4,c,d=[];for(;a<s.length;){let T=pi.parseHeader(s,a);if(!T)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));c||(c=T),a+T.frameLength<=s.length&&d.push({data:s.subarray(a,a+T.frameLength),size:T.frameLength,duration:pi.MPEG_AUDIO_SAMPLE_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=T.frameLength}if(!c)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let u=c.sampleRate,m=c.samplesPerFrame*o/c.sampleRate,f=this.frameIndex*m,g={id:t.id,type:R.ContentType.AUDIO,codecs:"mp3",timescale:u,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:d},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Ne.registerTransmuxer("audio/mpeg",()=>new Ga("audio/mpeg"),Ne.PluginPriority.FALLBACK);/*! @license
1154
1154
  * Shaka Player
1155
1155
  * Copyright 2016 Google LLC
1156
1156
  * SPDX-License-Identifier: Apache-2.0
1157
- */var Ka=class{constructor(e){l(this,"originalMimeType_");l(this,"tsParser_");this.originalMimeType_=e,this.tsParser_=null}destroy(){}isSupported(e,t){if(!this.isTsContainer_(e))return!1;let i=R.ContentType,r=N.getCodecs(e),s=N.splitCodecs(r),n=R.guessCodecsSafe(i.AUDIO,s),a=R.guessCodecsSafe(i.VIDEO,s);return!n||a||N.getNormalizedCodec(n)!="mp3"?!1:Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isTsContainer_(e){return e.toLowerCase().split(";")[0]=="video/mp2t"}convertCodecs(e,t){return this.isTsContainer_(t)?"audio/mpeg":t}getOriginalMimeType(){return this.originalMimeType_}transmux(e,t,i,r,s){let n=R.ContentType;this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt,this.tsParser_.setDiscontinuitySequence(i.discontinuitySequence);let a=D.toUint8(e),o=this.tsParser_.parse(a);if(o.getCodecs().audio!="mp3"||s!=n.AUDIO)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let d=new Uint8Array([]);for(let u of o.getAudioData()){let m=u.data;if(!m)continue;let f=0;for(;f<m.length;){let g=pi.parseHeader(m,f);if(!g){f++;continue}f+g.frameLength<=m.length&&(d=ne.concat(d,m.subarray(f,f+g.frameLength))),f+=g.frameLength}}return Promise.resolve(d)}};Oe.registerTransmuxer("video/mp2t",()=>new Ka("video/mp2t"),Oe.PluginPriority.PREFERRED_SECONDARY);/*! @license
1157
+ */var Ka=class{constructor(e){l(this,"originalMimeType_");l(this,"tsParser_");this.originalMimeType_=e,this.tsParser_=null}destroy(){}isSupported(e,t){if(!this.isTsContainer_(e))return!1;let i=R.ContentType,r=O.getCodecs(e),s=O.splitCodecs(r),n=R.guessCodecsSafe(i.AUDIO,s),a=R.guessCodecsSafe(i.VIDEO,s);return!n||a||O.getNormalizedCodec(n)!="mp3"?!1:Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isTsContainer_(e){return e.toLowerCase().split(";")[0]=="video/mp2t"}convertCodecs(e,t){return this.isTsContainer_(t)?"audio/mpeg":t}getOriginalMimeType(){return this.originalMimeType_}transmux(e,t,i,r,s){let n=R.ContentType;this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt,this.tsParser_.setDiscontinuitySequence(i.discontinuitySequence);let a=D.toUint8(e),o=this.tsParser_.parse(a);if(o.getCodecs().audio!="mp3"||s!=n.AUDIO)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let d=new Uint8Array([]);for(let u of o.getAudioData()){let m=u.data;if(!m)continue;let f=0;for(;f<m.length;){let g=pi.parseHeader(m,f);if(!g){f++;continue}f+g.frameLength<=m.length&&(d=ne.concat(d,m.subarray(f,f+g.frameLength))),f+=g.frameLength}}return Promise.resolve(d)}};Ne.registerTransmuxer("video/mp2t",()=>new Ka("video/mp2t"),Ne.PluginPriority.PREFERRED_SECONDARY);/*! @license
1158
1158
  * Shaka Player
1159
1159
  * Copyright 2016 Google LLC
1160
1160
  * SPDX-License-Identifier: Apache-2.0
1161
- */var fs=class fs extends li{constructor(t){super(t);l(this,"tsParser_");l(this,"aacTransmuxer_");this.tsParser_=null,this.aacTransmuxer_=null}destroy(){super.destroy(),this.aacTransmuxer_&&this.aacTransmuxer_.destroy()}isSupported(t,i){if(!this.isTsContainer_(t))return!1;let r=R.ContentType,s=t;i&&(s=this.convertCodecs(i,t));let n=N.getCodecs(s),a=N.splitCodecs(n),o=R.guessCodecsSafe(r.AUDIO,a),c=R.guessCodecsSafe(r.VIDEO,a);if(o){let m=N.getNormalizedCodec(o);if(!fs.SUPPORTED_AUDIO_CODECS_.includes(m))return!1}if(c){let m=N.getNormalizedCodec(c);if(!fs.SUPPORTED_VIDEO_CODECS_.includes(m))return!1}if(i)return Ke.isTypeSupported(this.convertCodecs(i,t));let d=this.convertCodecs(r.AUDIO,t),u=this.convertCodecs(r.VIDEO,t);return Ke.isTypeSupported(d)||Ke.isTypeSupported(u)}isTsContainer_(t){return t.toLowerCase().split(";")[0]=="video/mp2t"}convertCodecs(t,i){if(this.isTsContainer_(i)){let r=R.ContentType,s=N.getCodecs(i).replace("mp4a.40.34","mp3").split(",").map(n=>N.getCorrectAudioCodecs(n,"audio/mp4")).map(N.getCorrectVideoCodecs).join(",");return t==r.AUDIO?`audio/mp4; codecs="${s}"`:`video/mp4; codecs="${s}"`}return i}transmux(t,i,r,s,n){let a=R.ContentType,o=D.toUint8(t);if(n==a.AUDIO&&!pt.probe(o)){let f=It.getID3Data(o),g=f.length;for(;g<o.length;g++)if(pi.probe(o,g))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null));for(g=f.length;g<o.length;g++)if(Bt.probe(o,g))return this.aacTransmuxer_||(this.aacTransmuxer_=new ms("audio/aac")),this.aacTransmuxer_.transmux(t,i,r,s,n);return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null))}this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt,this.tsParser_.setDiscontinuitySequence(r.discontinuitySequence);let c=this.tsParser_.parse(o),d=[],u=c.getCodecs();try{let f=null;if(n==a.VIDEO){switch(u.video){case"avc":f=this.getAvcStreamInfo_(c,i,s,r);break;case"hvc":f=this.getHvcStreamInfo_(c,i,s,r);break}f&&(d.push(f),f=null)}if(n==a.AUDIO){switch(u.audio){case"aac":f=this.getAacStreamInfo_(c,i,s,r);break;case"ac3":f=this.getAc3StreamInfo_(c,i,s,r);break;case"ec3":f=this.getEc3StreamInfo_(c,i,s,r);break;case"mp3":f=this.getMp3StreamInfo_(c,i,s,r);break;case"opus":f=this.getOpusStreamInfo_(c,i,s,r);break}f&&(d.push(f),f=null)}}catch(f){return f&&f.code==h.Code.TRANSMUXING_NO_VIDEO_DATA?Promise.resolve(new Uint8Array([])):Promise.reject(f)}if(!d.length)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null));let m=new xe(d);return Promise.resolve(this.packageSegment(m,i,r))}getAacStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o,c=null,d=null,u=null;for(let g of t.getAudioData()){let _=g.data;if(!_)continue;let T=0;if(d==-1&&u)_=ne.concat(u,g.data),d=null;else if(d!=null&&u){T=Math.max(0,d);let S=ne.concat(u,_.subarray(0,T));a.push({data:S,size:S.byteLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),u=null,d=null}if(o=Bt.parseInfo(_,T),!o)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);for(i.audioSamplingRate=o.sampleRate,i.channelsCount=o.channelCount,c==null&&g.pts!==null&&(c=g.pts);T<_.length;){let S=Bt.parseHeader(_,T);if(!S){u=_.subarray(T,_.length),d=-1;break}let b=S.headerLength+S.frameLength;if(d=Math.max(0,T+b-_.length),d!=0)u=_.subarray(T+S.headerLength,T+b);else if(T+b<=_.length){let E=_.subarray(T+S.headerLength,T+b);a.push({data:E,size:S.frameLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS})}T+=b}}if(!o||c==null){c=s.startTime*n;let g=N.splitCodecs(i.codecs),_=R.guessCodecsSafe(R.ContentType.AUDIO,g);if(!_||!i.channelsCount||!i.audioSamplingRate)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);o={sampleRate:i.audioSamplingRate,channelCount:i.channelsCount,codec:_};let T=Bt.getSilentFrame(_,i.channelsCount);if(!T)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let S=(s.endTime-s.startTime)*n,b=c+S,E=c;for(;E<b;)a.push({data:T,size:T.byteLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),E+=Bt.AAC_SAMPLES_PER_FRAME/o.sampleRate*n}let m=o.sampleRate,f=c/n*m;return{id:i.id,type:R.ContentType.AUDIO,codecs:o.codec,timescale:m,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:a},stream:i}}getAc3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=0,c=new Uint8Array([]),d=null,u={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(let f of t.getAudioData()){let g=f.data;d==null&&f.pts!==null&&(d=f.pts);let _=0;for(;_<g.length;){if(!Oi.parseFrame(g,_,u)){_++;continue}i.audioSamplingRate=u.sampleRate,i.channelsCount=u.channelCount,o=u.sampleRate,c=u.audioConfig;let S=g.subarray(_,_+u.frameLength);a.push({data:S,size:u.frameLength,duration:Oi.AC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_+=u.frameLength}}if(o==0||c.byteLength==0||d==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let m=d/n*o;return{id:i.id,type:R.ContentType.AUDIO,codecs:"ac-3",timescale:o,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getEc3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=0,c=new Uint8Array([]),d=null,u={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(let f of t.getAudioData()){let g=f.data;d==null&&f.pts!==null&&(d=f.pts);let _=0;for(;_<g.length;){if(!$i.parseFrame(g,_,u)){_++;continue}i.audioSamplingRate=u.sampleRate,i.channelsCount=u.channelCount,o=u.sampleRate,c=u.audioConfig;let S=g.subarray(_,_+u.frameLength);a.push({data:S,size:u.frameLength,duration:$i.EC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_+=u.frameLength}}if(o==0||c.byteLength==0||d==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let m=d/n*o;return{id:i.id,type:R.ContentType.AUDIO,codecs:"ec-3",timescale:o,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getMp3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o,c=null;for(let m of t.getAudioData()){let f=m.data;if(!f)continue;c==null&&m.pts!==null&&(c=m.pts);let g=0;for(;g<f.length;){let _=pi.parseHeader(f,g);if(!_){g++;continue}o||(o=_),g+_.frameLength<=f.length&&a.push({data:f.subarray(g,g+_.frameLength),size:_.frameLength,duration:pi.MPEG_AUDIO_SAMPLE_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),g+=_.frameLength}}if(!o||c==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let d=o.sampleRate,u=c/n*d;return{id:i.id,type:R.ContentType.AUDIO,codecs:"mp3",timescale:d,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:u,samples:a},stream:i}}getOpusStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=t.getOpusMetadata();if(!c)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let d=Er.getAudioConfig(c),u=c.sampleRate;for(let f of t.getAudioData()){let g=f.data;o==null&&f.pts!==null&&(o=f.pts);let _=0;for(;_<g.length;){let T=(g[_+1]&16)!==0,S=(g[_+1]&8)!==0,b=_+2,E=0;for(;g[b]===255;)E+=255,b+=1;E+=g[b],b+=1,b+=T?2:0,b+=S?2:0;let C=g.slice(b,b+E);a.push({data:C,size:C.byteLength,duration:Er.getPacketSampleCount(C),cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_=b+E}}if(d.byteLength==0||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);i.audioSamplingRate=c.sampleRate,i.channelsCount=c.channelCount;let m=o/n*u;return{id:i.id,type:R.ContentType.AUDIO,codecs:"opus",timescale:u,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getAvcStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=t.getVideoData(),d=rr.getVideoSamples(c);if(!d.length)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_NO_VIDEO_DATA,s?s.getUris()[0]:null);for(let f=0;f<d.length;f++){let g=d[f];o==null&&(o=g.dts);let _;f+1<d.length?_=(d[f+1].dts||0)-(g.dts||0):d.length>1?_=(g.dts||0)-(d[f-1].dts||0):_=(s.endTime-s.startTime)*n,a.push({data:g.data,size:g.data.byteLength,duration:_,cts:Math.round((g.pts||0)-(g.dts||0)),flags:g.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS})}let u=[];for(let f of c)u.push(...f.nalus);let m=rr.parseInfo(u);if(!m||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);return i.height=i.height||m.height,i.width=i.width||m.width,{id:i.id,type:R.ContentType.VIDEO,codecs:"avc1",timescale:n,duration:r,mediaConfig:m.videoConfig,hSpacing:m.hSpacing,vSpacing:m.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:o,samples:a},stream:i}}getHvcStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=[],d=t.getVideoData(),u={data:new Uint8Array(0),isKeyframe:!1};if(!d.length)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_NO_VIDEO_DATA,s?s.getUris()[0]:null);for(let f=0;f<d.length;f++){let g=d[f],_=g.nalus;if(c.push(..._),!sr.parseFrame(_,u))continue;o==null&&g.dts!=null&&(o=g.dts);let S;f+1<d.length?S=(d[f+1].dts||0)-(g.dts||0):d.length>1?S=(g.dts||0)-(d[f-1].dts||0):S=(s.endTime-s.startTime)*n,a.push({data:u.data,size:u.data.byteLength,duration:S,cts:Math.round((g.pts||0)-(g.dts||0)),flags:u.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS})}let m=sr.parseInfo(c);if(!m||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);return i.height=i.height||m.height,i.width=i.width||m.width,{id:i.id,type:R.ContentType.VIDEO,codecs:"hvc1",timescale:n,duration:r,mediaConfig:m.videoConfig,hSpacing:m.hSpacing,vSpacing:m.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:o,samples:a},stream:i}}};l(fs,"SUPPORTED_AUDIO_CODECS_",["aac","ac-3","ec-3","mp3","opus"]),l(fs,"SUPPORTED_VIDEO_CODECS_",["avc","hevc"]);var qa=fs;Oe.registerTransmuxer("video/mp2t",()=>new qa("video/mp2t"),Oe.PluginPriority.PREFERRED);var export_AllDevices=void 0;export{Bt as ADTS,ms as AacTransmuxer,Oi as Ac3,Ba as Ac3Transmuxer,Rn as AdManager,export_AllDevices as AllDevices,ga as Aria,io as CastProxy,so as CastReceiver,Na as CeaDecoder,B as Cue,Ln as DashJsonParser,Br as DashParser,yr as DataUriPlugin,Cr as Deprecate,Ge as Dom,$i as Ec3,Va as Ec3Transmuxer,_a as EmeEncryptionScheme,hr as FairPlay,ya as Fullscreen,rr as H264,sr as H265,Ut as HlsParser,Ui as HttpFetchPlugin,Hr as HttpXHRPlugin,It as Id3Utils,jn as Id3V1Utils,Gs as IlstUtils,Tt as InitSegmentReference,Qi as Iterables,Ha as LocTransmuxer,va as MCapEncryptionScheme,sa as MSFParser,me as ManifestParser,ba as MediaCapabilities,Sa as MediaSource,kt as Metadata,Ga as Mp3Transmuxer,Ot as Mp4CeaParser,mi as Mp4TtmlParser,Pa as Mp4VttParser,pi as MpegAudio,Ka as MpegTsTransmuxer,aa as OfflineManifestParser,oa as OfflineScheme,Er as Opus,Xs as Orientation,Wi as PatchedMediaKeysApple,ai as PatchedMediaKeysWebkit,Ea as PiPWebkit,dt as Player,Ta as PolyfillMap,Ia as PolyfillSymbol,Rs as PreferenceBasedCriteria,wi as PresentationTimeline,na as QueueManager,Aa as RandomUUID,Ze as SegmentIndex,Se as SegmentReference,Ms as SimpleAbrManager,Qr as SpeechToText,ka as SrtTextParser,Ws as Storage,fa as StorageMechanism,Ue as TextEngine,Oe as TransmuxerEngine,Oa as TsCeaParser,qa as TsTransmuxer,zi as TtmlTextParser,Ca as TypedArray,js as URLSearchParams,h as UtilError,xa as VTTCue,wa as VideoFrameCallback,Ma as VideoPlayPromise,Ra as VideoPlaybackQuality,Vr as VorbisUtils,Xi as VttTextParser,Us as WebVttGenerator,p as log,Re as polyfill};
1161
+ */var fs=class fs extends li{constructor(t){super(t);l(this,"tsParser_");l(this,"aacTransmuxer_");this.tsParser_=null,this.aacTransmuxer_=null}destroy(){super.destroy(),this.aacTransmuxer_&&this.aacTransmuxer_.destroy()}isSupported(t,i){if(!this.isTsContainer_(t))return!1;let r=R.ContentType,s=t;i&&(s=this.convertCodecs(i,t));let n=O.getCodecs(s),a=O.splitCodecs(n),o=R.guessCodecsSafe(r.AUDIO,a),c=R.guessCodecsSafe(r.VIDEO,a);if(o){let m=O.getNormalizedCodec(o);if(!fs.SUPPORTED_AUDIO_CODECS_.includes(m))return!1}if(c){let m=O.getNormalizedCodec(c);if(!fs.SUPPORTED_VIDEO_CODECS_.includes(m))return!1}if(i)return Ke.isTypeSupported(this.convertCodecs(i,t));let d=this.convertCodecs(r.AUDIO,t),u=this.convertCodecs(r.VIDEO,t);return Ke.isTypeSupported(d)||Ke.isTypeSupported(u)}isTsContainer_(t){return t.toLowerCase().split(";")[0]=="video/mp2t"}convertCodecs(t,i){if(this.isTsContainer_(i)){let r=R.ContentType,s=O.getCodecs(i).replace("mp4a.40.34","mp3").split(",").map(n=>O.getCorrectAudioCodecs(n,"audio/mp4")).map(O.getCorrectVideoCodecs).join(",");return t==r.AUDIO?`audio/mp4; codecs="${s}"`:`video/mp4; codecs="${s}"`}return i}transmux(t,i,r,s,n){let a=R.ContentType,o=D.toUint8(t);if(n==a.AUDIO&&!pt.probe(o)){let f=It.getID3Data(o),g=f.length;for(;g<o.length;g++)if(pi.probe(o,g))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null));for(g=f.length;g<o.length;g++)if(Bt.probe(o,g))return this.aacTransmuxer_||(this.aacTransmuxer_=new ms("audio/aac")),this.aacTransmuxer_.transmux(t,i,r,s,n);return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null))}this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt,this.tsParser_.setDiscontinuitySequence(r.discontinuitySequence);let c=this.tsParser_.parse(o),d=[],u=c.getCodecs();try{let f=null;if(n==a.VIDEO){switch(u.video){case"avc":f=this.getAvcStreamInfo_(c,i,s,r);break;case"hvc":f=this.getHvcStreamInfo_(c,i,s,r);break}f&&(d.push(f),f=null)}if(n==a.AUDIO){switch(u.audio){case"aac":f=this.getAacStreamInfo_(c,i,s,r);break;case"ac3":f=this.getAc3StreamInfo_(c,i,s,r);break;case"ec3":f=this.getEc3StreamInfo_(c,i,s,r);break;case"mp3":f=this.getMp3StreamInfo_(c,i,s,r);break;case"opus":f=this.getOpusStreamInfo_(c,i,s,r);break}f&&(d.push(f),f=null)}}catch(f){return f&&f.code==h.Code.TRANSMUXING_NO_VIDEO_DATA?Promise.resolve(new Uint8Array([])):Promise.reject(f)}if(!d.length)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null));let m=new xe(d);return Promise.resolve(this.packageSegment(m,i,r))}getAacStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o,c=null,d=null,u=null;for(let g of t.getAudioData()){let _=g.data;if(!_)continue;let T=0;if(d==-1&&u)_=ne.concat(u,g.data),d=null;else if(d!=null&&u){T=Math.max(0,d);let S=ne.concat(u,_.subarray(0,T));a.push({data:S,size:S.byteLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),u=null,d=null}if(o=Bt.parseInfo(_,T),!o)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);for(i.audioSamplingRate=o.sampleRate,i.channelsCount=o.channelCount,c==null&&g.pts!==null&&(c=g.pts);T<_.length;){let S=Bt.parseHeader(_,T);if(!S){u=_.subarray(T,_.length),d=-1;break}let b=S.headerLength+S.frameLength;if(d=Math.max(0,T+b-_.length),d!=0)u=_.subarray(T+S.headerLength,T+b);else if(T+b<=_.length){let E=_.subarray(T+S.headerLength,T+b);a.push({data:E,size:S.frameLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS})}T+=b}}if(!o||c==null){c=s.startTime*n;let g=O.splitCodecs(i.codecs),_=R.guessCodecsSafe(R.ContentType.AUDIO,g);if(!_||!i.channelsCount||!i.audioSamplingRate)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);o={sampleRate:i.audioSamplingRate,channelCount:i.channelsCount,codec:_};let T=Bt.getSilentFrame(_,i.channelsCount);if(!T)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let S=(s.endTime-s.startTime)*n,b=c+S,E=c;for(;E<b;)a.push({data:T,size:T.byteLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),E+=Bt.AAC_SAMPLES_PER_FRAME/o.sampleRate*n}let m=o.sampleRate,f=c/n*m;return{id:i.id,type:R.ContentType.AUDIO,codecs:o.codec,timescale:m,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:a},stream:i}}getAc3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=0,c=new Uint8Array([]),d=null,u={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(let f of t.getAudioData()){let g=f.data;d==null&&f.pts!==null&&(d=f.pts);let _=0;for(;_<g.length;){if(!Ni.parseFrame(g,_,u)){_++;continue}i.audioSamplingRate=u.sampleRate,i.channelsCount=u.channelCount,o=u.sampleRate,c=u.audioConfig;let S=g.subarray(_,_+u.frameLength);a.push({data:S,size:u.frameLength,duration:Ni.AC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_+=u.frameLength}}if(o==0||c.byteLength==0||d==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let m=d/n*o;return{id:i.id,type:R.ContentType.AUDIO,codecs:"ac-3",timescale:o,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getEc3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=0,c=new Uint8Array([]),d=null,u={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(let f of t.getAudioData()){let g=f.data;d==null&&f.pts!==null&&(d=f.pts);let _=0;for(;_<g.length;){if(!$i.parseFrame(g,_,u)){_++;continue}i.audioSamplingRate=u.sampleRate,i.channelsCount=u.channelCount,o=u.sampleRate,c=u.audioConfig;let S=g.subarray(_,_+u.frameLength);a.push({data:S,size:u.frameLength,duration:$i.EC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_+=u.frameLength}}if(o==0||c.byteLength==0||d==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let m=d/n*o;return{id:i.id,type:R.ContentType.AUDIO,codecs:"ec-3",timescale:o,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getMp3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o,c=null;for(let m of t.getAudioData()){let f=m.data;if(!f)continue;c==null&&m.pts!==null&&(c=m.pts);let g=0;for(;g<f.length;){let _=pi.parseHeader(f,g);if(!_){g++;continue}o||(o=_),g+_.frameLength<=f.length&&a.push({data:f.subarray(g,g+_.frameLength),size:_.frameLength,duration:pi.MPEG_AUDIO_SAMPLE_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),g+=_.frameLength}}if(!o||c==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let d=o.sampleRate,u=c/n*d;return{id:i.id,type:R.ContentType.AUDIO,codecs:"mp3",timescale:d,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:u,samples:a},stream:i}}getOpusStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=t.getOpusMetadata();if(!c)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let d=Er.getAudioConfig(c),u=c.sampleRate;for(let f of t.getAudioData()){let g=f.data;o==null&&f.pts!==null&&(o=f.pts);let _=0;for(;_<g.length;){let T=(g[_+1]&16)!==0,S=(g[_+1]&8)!==0,b=_+2,E=0;for(;g[b]===255;)E+=255,b+=1;E+=g[b],b+=1,b+=T?2:0,b+=S?2:0;let C=g.slice(b,b+E);a.push({data:C,size:C.byteLength,duration:Er.getPacketSampleCount(C),cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_=b+E}}if(d.byteLength==0||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);i.audioSamplingRate=c.sampleRate,i.channelsCount=c.channelCount;let m=o/n*u;return{id:i.id,type:R.ContentType.AUDIO,codecs:"opus",timescale:u,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getAvcStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=t.getVideoData(),d=rr.getVideoSamples(c);if(!d.length)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_NO_VIDEO_DATA,s?s.getUris()[0]:null);for(let f=0;f<d.length;f++){let g=d[f];o==null&&(o=g.dts);let _;f+1<d.length?_=(d[f+1].dts||0)-(g.dts||0):d.length>1?_=(g.dts||0)-(d[f-1].dts||0):_=(s.endTime-s.startTime)*n,a.push({data:g.data,size:g.data.byteLength,duration:_,cts:Math.round((g.pts||0)-(g.dts||0)),flags:g.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS})}let u=[];for(let f of c)u.push(...f.nalus);let m=rr.parseInfo(u);if(!m||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);return i.height=i.height||m.height,i.width=i.width||m.width,{id:i.id,type:R.ContentType.VIDEO,codecs:"avc1",timescale:n,duration:r,mediaConfig:m.videoConfig,hSpacing:m.hSpacing,vSpacing:m.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:o,samples:a},stream:i}}getHvcStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=[],d=t.getVideoData(),u={data:new Uint8Array(0),isKeyframe:!1};if(!d.length)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_NO_VIDEO_DATA,s?s.getUris()[0]:null);for(let f=0;f<d.length;f++){let g=d[f],_=g.nalus;if(c.push(..._),!sr.parseFrame(_,u))continue;o==null&&g.dts!=null&&(o=g.dts);let S;f+1<d.length?S=(d[f+1].dts||0)-(g.dts||0):d.length>1?S=(g.dts||0)-(d[f-1].dts||0):S=(s.endTime-s.startTime)*n,a.push({data:u.data,size:u.data.byteLength,duration:S,cts:Math.round((g.pts||0)-(g.dts||0)),flags:u.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS})}let m=sr.parseInfo(c);if(!m||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);return i.height=i.height||m.height,i.width=i.width||m.width,{id:i.id,type:R.ContentType.VIDEO,codecs:"hvc1",timescale:n,duration:r,mediaConfig:m.videoConfig,hSpacing:m.hSpacing,vSpacing:m.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:o,samples:a},stream:i}}};l(fs,"SUPPORTED_AUDIO_CODECS_",["aac","ac-3","ec-3","mp3","opus"]),l(fs,"SUPPORTED_VIDEO_CODECS_",["avc","hevc"]);var qa=fs;Ne.registerTransmuxer("video/mp2t",()=>new qa("video/mp2t"),Ne.PluginPriority.PREFERRED);var export_AllDevices=void 0;export{Bt as ADTS,ms as AacTransmuxer,Ni as Ac3,Ba as Ac3Transmuxer,Rn as AdManager,export_AllDevices as AllDevices,ga as Aria,io as CastProxy,so as CastReceiver,Oa as CeaDecoder,B as Cue,Ln as DashJsonParser,Br as DashParser,yr as DataUriPlugin,Cr as Deprecate,Ge as Dom,$i as Ec3,Va as Ec3Transmuxer,_a as EmeEncryptionScheme,hr as FairPlay,ya as Fullscreen,rr as H264,sr as H265,Ut as HlsParser,Ui as HttpFetchPlugin,Hr as HttpXHRPlugin,It as Id3Utils,jn as Id3V1Utils,Gs as IlstUtils,Tt as InitSegmentReference,Qi as Iterables,Ha as LocTransmuxer,va as MCapEncryptionScheme,sa as MSFParser,me as ManifestParser,ba as MediaCapabilities,Sa as MediaSource,kt as Metadata,Ga as Mp3Transmuxer,Nt as Mp4CeaParser,mi as Mp4TtmlParser,Pa as Mp4VttParser,pi as MpegAudio,Ka as MpegTsTransmuxer,aa as OfflineManifestParser,oa as OfflineScheme,Er as Opus,Xs as Orientation,Wi as PatchedMediaKeysApple,ai as PatchedMediaKeysWebkit,Ea as PiPWebkit,dt as Player,Ta as PolyfillMap,Ia as PolyfillSymbol,Rs as PreferenceBasedCriteria,wi as PresentationTimeline,na as QueueManager,Aa as RandomUUID,Ze as SegmentIndex,Se as SegmentReference,Ms as SimpleAbrManager,Qr as SpeechToText,ka as SrtTextParser,Ws as Storage,fa as StorageMechanism,Ue as TextEngine,Ne as TransmuxerEngine,Na as TsCeaParser,qa as TsTransmuxer,zi as TtmlTextParser,Ca as TypedArray,js as URLSearchParams,h as UtilError,xa as VTTCue,wa as VideoFrameCallback,Ma as VideoPlayPromise,Ra as VideoPlaybackQuality,Vr as VorbisUtils,Xi as VttTextParser,Us as WebVttGenerator,p as log,Re as polyfill};