<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="shift_jis">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kagamin2 Player</title>
    <script>
// asf_stream_js2026072714
"use strict";var asf_stream=(()=>{var sn=Object.create;var Et=Object.defineProperty,on=Object.defineProperties,ln=Object.getOwnPropertyDescriptor,dn=Object.getOwnPropertyDescriptors,cn=Object.getOwnPropertyNames,Nt=Object.getOwnPropertySymbols,un=Object.getPrototypeOf,yi=Object.prototype.hasOwnProperty,Cr=Object.prototype.propertyIsEnumerable;var bi=(o,e,t)=>e in o?Et(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,j=(o,e)=>{for(var t in e||(e={}))yi.call(e,t)&&bi(o,t,e[t]);if(Nt)for(var t of Nt(e))Cr.call(e,t)&&bi(o,t,e[t]);return o},ae=(o,e)=>on(o,dn(e));var Rr=(o,e)=>{var t={};for(var i in o)yi.call(o,i)&&e.indexOf(i)<0&&(t[i]=o[i]);if(o!=null&&Nt)for(var i of Nt(o))e.indexOf(i)<0&&Cr.call(o,i)&&(t[i]=o[i]);return t};var hn=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),_n=(o,e)=>{for(var t in e)Et(o,t,{get:e[t],enumerable:!0})},kr=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of cn(e))!yi.call(o,n)&&n!==t&&Et(o,n,{get:()=>e[n],enumerable:!(i=ln(e,n))||i.enumerable});return o};var fn=(o,e,t)=>(t=o!=null?sn(un(o)):{},kr(e||!o||!o.__esModule?Et(t,"default",{value:o,enumerable:!0}):t,o)),mn=o=>kr(Et({},"__esModule",{value:!0}),o);var d=(o,e,t)=>bi(o,typeof e!="symbol"?e+"":e,t);var Tr=hn((ha,Ai)=>{"use strict";var pn=Object.prototype.hasOwnProperty,Ae="~";function Ct(){}Object.create&&(Ct.prototype=Object.create(null),new Ct().__proto__||(Ae=!1));function gn(o,e,t){this.fn=o,this.context=e,this.once=t||!1}function Fr(o,e,t,i,n){if(typeof t!="function")throw new TypeError("The listener must be a function");var r=new gn(t,i||o,n),a=Ae?Ae+e:e;return o._events[a]?o._events[a].fn?o._events[a]=[o._events[a],r]:o._events[a].push(r):(o._events[a]=r,o._eventsCount++),o}function $t(o,e){--o._eventsCount===0?o._events=new Ct:delete o._events[e]}function pe(){this._events=new Ct,this._eventsCount=0}pe.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)pn.call(t,i)&&e.push(Ae?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};pe.prototype.listeners=function(e){var t=Ae?Ae+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,r=i.length,a=new Array(r);n<r;n++)a[n]=i[n].fn;return a};pe.prototype.listenerCount=function(e){var t=Ae?Ae+e:e,i=this._events[t];return i?i.fn?1:i.length:0};pe.prototype.emit=function(e,t,i,n,r,a){var s=Ae?Ae+e:e;if(!this._events[s])return!1;var l=this._events[s],c=arguments.length,u,h;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),c){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,i),!0;case 4:return l.fn.call(l.context,t,i,n),!0;case 5:return l.fn.call(l.context,t,i,n,r),!0;case 6:return l.fn.call(l.context,t,i,n,r,a),!0}for(h=1,u=new Array(c-1);h<c;h++)u[h-1]=arguments[h];l.fn.apply(l.context,u)}else{var f=l.length,p;for(h=0;h<f;h++)switch(l[h].once&&this.removeListener(e,l[h].fn,void 0,!0),c){case 1:l[h].fn.call(l[h].context);break;case 2:l[h].fn.call(l[h].context,t);break;case 3:l[h].fn.call(l[h].context,t,i);break;case 4:l[h].fn.call(l[h].context,t,i,n);break;default:if(!u)for(p=1,u=new Array(c-1);p<c;p++)u[p-1]=arguments[p];l[h].fn.apply(l[h].context,u)}}return!0};pe.prototype.on=function(e,t,i){return Fr(this,e,t,i,!1)};pe.prototype.once=function(e,t,i){return Fr(this,e,t,i,!0)};pe.prototype.removeListener=function(e,t,i,n){var r=Ae?Ae+e:e;if(!this._events[r])return this;if(!t)return $t(this,r),this;var a=this._events[r];if(a.fn)a.fn===t&&(!n||a.once)&&(!i||a.context===i)&&$t(this,r);else{for(var s=0,l=[],c=a.length;s<c;s++)(a[s].fn!==t||n&&!a[s].once||i&&a[s].context!==i)&&l.push(a[s]);l.length?this._events[r]=l.length===1?l[0]:l:$t(this,r)}return this};pe.prototype.removeAllListeners=function(e){var t;return e?(t=Ae?Ae+e:e,this._events[t]&&$t(this,t)):(this._events=new Ct,this._eventsCount=0),this};pe.prototype.off=pe.prototype.removeListener;pe.prototype.addListener=pe.prototype.on;pe.prefixed=Ae;pe.EventEmitter=pe;typeof Ai!="undefined"&&(Ai.exports=pe)});var ca={};_n(ca,{MSEPlayer:()=>Bt,NativePlayer:()=>kt,Remuxer:()=>we,TransmuxingEvents:()=>E,defaultConfig:()=>vi,eflv:()=>an});var Lr=fn(Tr(),1);var ge=Lr.default;var Mr=(x=>(x.ERROR="error",x.LOADING_COMPLETE="loading_complete",x.RECOVERED_EARLY_EOF="recovered_early_eof",x.MEDIA_INFO="media_info",x.METADATA_ARRIVED="metadata_arrived",x.SCRIPTDATA_ARRIVED="scriptdata_arrived",x.TIMED_ID3_METADATA_ARRIVED="timed_id3_metadata_arrived",x.PGS_SUBTITLE_ARRIVED="pgs_subtitle_arrived",x.SYNCHRONOUS_KLV_METADATA_ARRIVED="synchronous_klv_metadata_arrived",x.ASYNCHRONOUS_KLV_METADATA_ARRIVED="asynchronous_klv_metadata_arrived",x.SMPTE2038_METADATA_ARRIVED="smpte2038_metadata_arrived",x.SCTE35_METADATA_ARRIVED="scte35_metadata_arrived",x.PES_PRIVATE_DATA_DESCRIPTOR="pes_private_data_descriptor",x.PES_PRIVATE_DATA_ARRIVED="pes_private_data_arrived",x.STATISTICS_INFO="statistics_info",x.DESTROYING="destroying",x))(Mr||{}),O=Mr;var vi={enableWorker:!1,enableWorkerForMSE:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,liveBufferLatencyChasing:!1,liveBufferLatencyChasingOnPaused:!1,liveBufferLatencyMaxLatency:1.5,liveBufferLatencyMinRemain:.5,liveSync:!1,liveSyncMaxLatency:1.2,liveSyncTargetLatency:.8,liveSyncPlaybackRate:1.2,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:60,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,autoCleanupSourceBuffer:!0,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0,referrerPolicy:void 0,preferWebM:!1};function qe(){return j({},vi)}var J=class{constructor(e){d(this,"_message");this._message=e}get name(){return"RuntimeException"}get message(){return this._message}toString(){return this.name+": "+this.message}},re=class extends J{constructor(e){super(e)}get name(){return"IllegalStateException"}},xe=class extends J{constructor(e){super(e)}get name(){return"InvalidArgumentException"}},Rt=class extends J{constructor(e){super(e)}get name(){return"NotImplementedException"}};var Si=class{constructor(e,t){this.TAG="NativePlayer",this._type="NativePlayer",this._emitter=new ge,this._config=qe(),typeof t=="object"&&Object.assign(this._config,t);let i=e.type.toLowerCase();if(i==="mse"||i==="flv")throw new xe("NativePlayer does't support mse/flv MediaDataSource input!");if(e.hasOwnProperty("segments"))throw new xe(`NativePlayer(${e.type}) doesn't support multipart playback!`);this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this)},this._pendingSeekTime=null,this._statisticsReporter=null,this._mediaDataSource=e,this._mediaElement=null}destroy(){this._emitter.emit(O.DESTROYING),this._mediaElement&&(this.unload(),this.detachMediaElement()),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}on(e,t){e===O.MEDIA_INFO?this._mediaElement!=null&&this._mediaElement.readyState!==0&&Promise.resolve().then(()=>{this._emitter.emit(O.MEDIA_INFO,this.mediaInfo)}):e===O.STATISTICS_INFO&&this._mediaElement!=null&&this._mediaElement.readyState!==0&&Promise.resolve().then(()=>{this._emitter.emit(O.STATISTICS_INFO,this.statisticsInfo)}),this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._pendingSeekTime!=null)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(t){}}detachMediaElement(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),this._statisticsReporter!=null&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}load(){if(!this._mediaElement)throw new re("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}unload(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),this._statisticsReporter!=null&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}play(){return this._mediaElement.play()}pause(){this._mediaElement.pause()}get type(){return this._type}get buffered(){return this._mediaElement.buffered}get duration(){return this._mediaElement.duration}get volume(){return this._mediaElement.volume}set volume(e){this._mediaElement.volume=e}get muted(){return this._mediaElement.muted}set muted(e){this._mediaElement.muted=e}get currentTime(){return this._mediaElement?this._mediaElement.currentTime:0}set currentTime(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}get mediaInfo(){let t={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};return this._mediaElement&&(t.duration=Math.floor(this._mediaElement.duration*1e3),this._mediaElement instanceof HTMLVideoElement&&(t.width=this._mediaElement.videoWidth,t.height=this._mediaElement.videoHeight)),t}get statisticsInfo(){let e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._mediaElement.getVideoPlaybackQuality){let r=this._mediaElement.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._mediaElement.webkitDecodedFrameCount!=null?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}_onvLoadedMetadata(e){this._pendingSeekTime!=null&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(O.MEDIA_INFO,this.mediaInfo)}_reportStatisticsInfo(){this._emitter.emit(O.STATISTICS_INFO,this.statisticsInfo)}},kt=Si;var N=class N{static emitLog(e,t){N.emitter.emit("log",e,t)}static e(e,t){if(!N.ENABLE_ERROR)return;(!e||N.FORCE_GLOBAL_TAG)&&(e=N.GLOBAL_TAG);let i=`[${e}] > ${t}`;N.ENABLE_CALLBACK&&N.emitter.emit("log","error",i),console.error?console.error(i):console.warn?console.warn(i):console.log(i)}static i(e,t){if(!N.ENABLE_INFO)return;(!e||N.FORCE_GLOBAL_TAG)&&(e=N.GLOBAL_TAG);let i=`[${e}] > ${t}`;N.ENABLE_CALLBACK&&N.emitter.emit("log","info",i),console.info?console.info(i):console.log(i)}static w(e,t){if(!N.ENABLE_WARN)return;(!e||N.FORCE_GLOBAL_TAG)&&(e=N.GLOBAL_TAG);let i=`[${e}] > ${t}`;N.ENABLE_CALLBACK&&N.emitter.emit("log","warn",i),console.warn?console.warn(i):console.log(i)}static d(e,t){if(!N.ENABLE_DEBUG)return;(!e||N.FORCE_GLOBAL_TAG)&&(e=N.GLOBAL_TAG);let i=`[${e}] > ${t}`;N.ENABLE_CALLBACK&&N.emitter.emit("log","debug",i),console.debug?console.debug(i):console.log(i)}static dumpArrayBuffer(e,t,i=32){let n;if(e instanceof Uint8Array)n=e;else if(e instanceof ArrayBuffer)n=new Uint8Array(e);else if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else throw new TypeError("Expected ArrayBuffer, TypedArray, or DataView");let r=Math.min(n.byteLength,t),a=[];for(let s=0;s<r;s+=i){let l=[],c=[],u=Math.min(i,r-s);for(let h=0;h<u;h++){let f=n[s+h];l.push(f.toString(16).padStart(2,"0")),c.push(f>=32&&f<=126?String.fromCharCode(f):".")}for(;l.length<i;)l.push("  ");for(;c.length<i;)c.push(" ");a.push(`${s.toString(16).padStart(4,"0")}: ${l.join(" ")}  |${c.join("")}|`)}return a.join(`
`)}static v(e,...t){if(!N.ENABLE_VERBOSE)return;(!e||N.FORCE_GLOBAL_TAG)&&(e=N.GLOBAL_TAG);let i=`[${e}] >`;N.ENABLE_CALLBACK&&N.emitter.emit("log","verbose",i,...t),console.log(i,...t)}static scope(e,t){let i=!0,n=()=>{let r=i?t:" ".repeat(t.length);return i=!1,`${r}:`};return{v:(...r)=>N.v(e,n(),...r),w:r=>N.w(e,`${n()} ${r}`),e:r=>N.e(e,`${n()} ${r}`)}}static a(e,t,i){if(!i){let n=`[${e}] ASSERT FAILED: ${t}`;throw new Error(n)}}};d(N,"GLOBAL_TAG","e-rtmp-lab.js"),d(N,"FORCE_GLOBAL_TAG",!1),d(N,"ENABLE_CALLBACK",!1),d(N,"ENABLE_ERROR",!0),d(N,"ENABLE_INFO",!0),d(N,"ENABLE_WARN",!0),d(N,"ENABLE_DEBUG",!1),d(N,"ENABLE_VERBOSE",!0),d(N,"emitter",new ge);var Ei=N,_=Ei;var Ft={};function xn(){let o=self.navigator.userAgent.toLowerCase(),e=/(edge)\/([\w.]+)/.exec(o)||/(opr)[\/]([\w.]+)/.exec(o)||/(chrome)[ \/]([\w.]+)/.exec(o)||/(iemobile)[\/]([\w.]+)/.exec(o)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(o)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(o)||/(webkit)[ \/]([\w.]+)/.exec(o)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(o)||/(msie) ([\w.]+)/.exec(o)||o.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(o)||o.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(o)||[],t=/(ipad)/.exec(o)||/(ipod)/.exec(o)||/(windows phone)/.exec(o)||/(iphone)/.exec(o)||/(kindle)/.exec(o)||/(android)/.exec(o)||/(windows)/.exec(o)||/(mac)/.exec(o)||/(linux)/.exec(o)||/(cros)/.exec(o)||[],i={browser:e[5]||e[3]||e[1]||"",version:e[2]||e[4]||"0",majorVersion:e[4]||e[2]||"0",platform:t[0]||""},n={};if(i.browser){n[i.browser]=!0;let r=i.majorVersion.split(".");n.version={major:parseInt(i.majorVersion,10),string:i.version},r.length>1&&(n.version.minor=parseInt(r[1],10)),r.length>2&&(n.version.build=parseInt(r[2],10))}if(i.platform&&(n[i.platform]=!0),(n.chrome||n.opr||n.safari)&&(n.webkit=!0),n.rv||n.iemobile){n.rv&&delete n.rv;let r="msie";i.browser=r,n[r]=!0}if(n.edge){delete n.edge;let r="msedge";i.browser=r,n[r]=!0}if(n.opr){let r="opera";i.browser=r,n[r]=!0}if(n.safari&&n.android){let r="android";i.browser=r,n[r]=!0}n.name=i.browser,n.platform=i.platform;for(let r in Ft)Ft.hasOwnProperty(r)&&delete Ft[r];Object.assign(Ft,n)}xn();var Z=Ft;var Dr=(s=>(s.ERROR="error",s.SOURCE_OPEN="source_open",s.UPDATE_END="update_end",s.BUFFER_FULL="buffer_full",s.QUOTA_EXCEEDED_BUFFER_FULL="quota_exceeded_buffer_full",s.START_STREAMING="start_streaming",s.END_STREAMING="end_streaming",s))(Dr||{}),ee=Dr;var we=class{constructor(e){d(this,"_config");d(this,"_isLive");d(this,"_isAudioMetadataDispatched",!1);d(this,"_isVideoMetadataDispatched",!1);d(this,"_audioMeta",null);d(this,"_videoMeta",null);this._config=e,this._isLive=e.isLive}remuxTrackData(e,t){this._onTrackData(e,t)}remuxTrackMetadata(e){this._onTrackMetadata(e)}get isAudioMetadataDispatched(){return this._isAudioMetadataDispatched}get isVideoMetadataDispatched(){return this._isVideoMetadataDispatched}};d(we,"DEBUG_BUFFER",!1),d(we,"dbgVideoBuffer",new Uint8Array),d(we,"dbgAudioBuffer",new Uint8Array);var rt=["video","audio"];function bn(o,e=16){return!o||o.byteLength===0?"empty":Array.from(o.subarray(0,Math.min(e,o.byteLength))).map(t=>t.toString(16).padStart(2,"0")).join(" ")}function nt(o){return`type=${o.type} codec=${o.codec||"none"} container=${o.container} bytes=${o.data.byteLength} head=${bn(o.data)}`}function yn(o){if(!o)return"none";let e=[`code=${o.code}`];return"message"in o&&typeof o.message=="string"&&o.message.length>0&&e.push(`message=${o.message}`),e.join(" ")}var Ht=class Ht{constructor(e,t){d(this,"TAG","MSEController");d(this,"_config");d(this,"_emitter",new ge);d(this,"events");d(this,"_mediaSource");d(this,"_mediaElementProxy");d(this,"_mediaSourceObjectURL",null);d(this,"_useManagedMediaSource");d(this,"_isBufferFull",!1);d(this,"_hasPendingEos",!1);d(this,"_requireSetMediaDuration",!1);d(this,"_pendingMediaDuration",0);d(this,"_mimeTypes",{video:null,audio:null});d(this,"_sourceBuffers",{video:null,audio:null});d(this,"_lastInitSegments",{video:null,audio:null});d(this,"_pendingSegments",{video:[],audio:[]});d(this,"_pendingRemoveRanges",{video:[],audio:[]});d(this,"_pendingSourceBufferInit",[]);d(this,"_onMediaTimeUpdate",e=>{this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer(),this._hasPendingEos&&this._hasPendingSegments()&&!this._hasPendingRemoveRanges()&&(_.v(this.TAG,"Retrying append of final segment after playback progress"),this._doAppendSegments())});this._config=e,this._config.isLive&&this._config.autoCleanupSourceBuffer==null?this._config=ae(j({},e),{autoCleanupSourceBuffer:!0}):this._config=e,this.events={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onStartStreaming:this._onStartStreaming.bind(this),onEndStreaming:this._onEndStreaming.bind(this),onQualityChange:this._onQualityChange.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._useManagedMediaSource="ManagedMediaSource"in self&&!("MediaSource"in self),this._useManagedMediaSource&&_.v(this.TAG,"Using ManagedMediaSource");let i=this._mediaSource=this._useManagedMediaSource?new self.ManagedMediaSource:new self.MediaSource;i.addEventListener("sourceopen",this.events.onSourceOpen),i.addEventListener("sourceended",this.events.onSourceEnded),i.addEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(i.addEventListener("startstreaming",this.events.onStartStreaming),i.addEventListener("endstreaming",this.events.onEndStreaming),i.addEventListener("qualitychange",this.events.onQualityChange)),this._mediaElementProxy=t}destroy(){this._mediaElementProxy.setOnMediaTimeUpdate(null),this._mediaSource&&this.shutdown(),this._mediaSourceObjectURL&&this.revokeObjectURL(),this.events=null,this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}shutdown(){if(this._mediaSource){let e=this._mediaSource;for(let t of rt){this._pendingSegments[t].splice(0),this._pendingRemoveRanges[t].splice(0),this._lastInitSegments[t]=null;let i=this._sourceBuffers[t];if(i){if(e.readyState!=="closed"){try{e.removeSourceBuffer(i)}catch(n){_.e(this.TAG,n.message)}i.removeEventListener("error",this.events.onSourceBufferError),i.removeEventListener("updateend",this.events.onSourceBufferUpdateEnd)}this._mimeTypes[t]=null,this._sourceBuffers[t]=null}}if(e.readyState==="open")try{e.endOfStream()}catch(t){_.e(this.TAG,t.message)}e.removeEventListener("sourceopen",this.events.onSourceOpen),e.removeEventListener("sourceended",this.events.onSourceEnded),e.removeEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(e.removeEventListener("startstreaming",this.events.onStartStreaming),e.removeEventListener("endstreaming",this.events.onEndStreaming),e.removeEventListener("qualitychange",this.events.onQualityChange))}this._mediaSource=null,this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._hasPendingEos=!1}isManagedMediaSource(){return this._useManagedMediaSource}getObject(){if(!this._mediaSource)throw new re("MediaSource has not been initialized yet!");return this._mediaSource}getHandle(){if(!this._mediaSource)throw new re("MediaSource has not been initialized yet!");if(this._useManagedMediaSource)return this._mediaSource.handle}getObjectURL(){if(!this._mediaSource)throw new re("MediaSource has not been initialized yet!");return this._mediaSourceObjectURL==null&&(this._mediaSourceObjectURL=URL.createObjectURL(this._mediaSource)),this._mediaSourceObjectURL}revokeObjectURL(){this._mediaSourceObjectURL&&(URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)}appendInitSegment(e,t=!1){var l,c,u,h,f;if(((l=this._mediaSource)==null?void 0:l.readyState)!=="open"||this._useManagedMediaSource&&this._mediaSource.streaming===!1){_.v(this.TAG,`appendInitSegment: deferring because MediaSource is not ready, deferred=${t} ${nt(e)}`),this._deferInitSegment(e,t);return}let i=e,n=`${i.container}`;i.codec&&i.codec.length>0&&(i.codec==="opus"&&Z.safari&&(i.codec="Opus"),n+=`; codecs="${i.codec}"`);let r=!1,a=(c=this._sourceBuffers.video)==null?void 0:c.updating,s=(u=this._sourceBuffers.audio)==null?void 0:u.updating;if(a||s){_.v(this.TAG,`appendInitSegment: deferring because SourceBuffer is updating, deferred=${t} mimeType=${n} updatingVideo=${a} updatingAudio=${s} ${nt(i)}`),this._deferInitSegment(e,t);return}if(_.v(this.TAG,`appendInitSegment: accepting mimeType=${n} deferred=${t} updatingVideo=${a} updatingAudio=${s} ${nt(i)}`),this._lastInitSegments[i.type]=i,n!==this._mimeTypes[i.type]){if(this._mimeTypes[i.type])_.v(this.TAG,`Notice: ${i.type} mimeType changed for ${this._mimeTypes[i.type]}, mimeType: ${n}`);else{r=!0;try{let p=this._sourceBuffers[i.type]=this._mediaSource.addSourceBuffer(n),y=(h=this._sourceBuffers.video)==null?void 0:h.updating,m=(f=this._sourceBuffers.audio)==null?void 0:f.updating;_.v(this.TAG,`appendInitSegment: Now ${Date.now()} - Created SourceBuffer for ${i.type} track, mimeType: ${n}, updating video: ${y} audio: ${m}`),this._mediaSource.duration=i.mediaDuration/1e3,p.addEventListener("error",this.events.onSourceBufferError),p.addEventListener("updateend",this.events.onSourceBufferUpdateEnd)}catch(p){_.e(this.TAG,p.message),this._emitter.emit(ee.ERROR,{code:p.code,msg:p.message});return}}this._mimeTypes[i.type]=n}t||this._pendingSegments[i.type].push(i),r||this._doAppendSegments(),(Z.safari&&i.container==="audio/mpeg"||i.container==="video/webm")&&i.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=i.mediaDuration/1e3,this._updateMediaSourceDuration())}appendMediaSegment(e){let t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer(),this._hasPendingRemoveRanges()||this._doAppendSegments()}flush(){var e,t;for(let i of rt){if(!this._sourceBuffers[i])continue;let n=this._sourceBuffers[i];if(((e=this._mediaSource)==null?void 0:e.readyState)==="open")try{n.abort()}catch(a){_.e(this.TAG,a.message)}let r=this._pendingSegments[i];if(r.splice(0,r.length),((t=this._mediaSource)==null?void 0:t.readyState)!=="closed"){for(let a=0;a<n.buffered.length;a++){let s=n.buffered.start(a),l=n.buffered.end(a);this._pendingRemoveRanges[i].push({start:s,end:l})}if(this._doRemoveRanges(),Z.safari){let a=this._lastInitSegments[i];a&&(this._pendingSegments[i].push(a),this._doAppendSegments())}}}}endOfStream(){var i,n;let e=this._mediaSource,t=this._sourceBuffers;if(!e||e.readyState!=="open"){e&&e.readyState==="closed"&&this._hasPendingSegments()&&(this._hasPendingEos=!0);return}(i=t.video)!=null&&i.updating||(n=t.audio)!=null&&n.updating?this._hasPendingEos=!0:(this._hasPendingEos=!1,e.endOfStream())}_needCleanupSourceBuffer(){if(!this._config.autoCleanupSourceBuffer||!this._mediaElementProxy)return!1;let e=this._mediaElementProxy.getCurrentTime();for(let t of rt){let i=this._getBufferedRanges(t);if(i&&i.length>=1&&e-i.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}return!1}_doCleanupSourceBuffer(e=!1){let t=this._mediaElementProxy.getCurrentTime();for(let i of rt){let n=this._sourceBuffers[i],r=this._getBufferedRanges(i);if(n&&r){let a=!1;for(let s=0;s<r.length;s++){let l=r.start(s),c=r.end(s);if(l<=t&&t<c+3){if(t-l>=this._config.autoCleanupMaxBackwardDuration){let u=t-this._config.autoCleanupMinBackwardDuration;l<u&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:u}))}else if(e){let u=t-10;l<u&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:u}))}}else c<t&&(a=!0,this._pendingRemoveRanges[i].push({start:l,end:c}))}a?(_.v(this.TAG,`Cleanup SourceBuffer ${i}, currentTime: ${t}, pendingRemoveRanges: ${this._pendingRemoveRanges[i].length} ranges`),this._doRemoveRanges()):r.length>0?_.w(this.TAG,`Could not cleanup SourceBuffer ${i}, currentTime: ${t} bufferedStart: ${r.start(0)} bufferedEnd: ${r.end(r.length-1)}`):_.w(this.TAG,`Could not cleanup SourceBuffer ${i}, currentTime: ${t} buffered: empty`)}}}_updateMediaSourceDuration(){var n,r,a;let e=this._sourceBuffers;if(this._mediaElementProxy.getReadyState()===0||((n=this._mediaSource)==null?void 0:n.readyState)!=="open"||(r=e.video)!=null&&r.updating||(a=e.audio)!=null&&a.updating)return;let t=this._mediaSource.duration,i=this._pendingMediaDuration;i>0&&(isNaN(t)||i>t)&&(_.v(this.TAG,`Update MediaSource duration from ${t} to ${i}`),this._mediaSource.duration=i),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}_doRemoveRanges(){for(let e of rt){if(!this._sourceBuffers[e]||this._sourceBuffers[e].updating)continue;let t=this._sourceBuffers[e],i=this._pendingRemoveRanges[e];if(i.length&&!t.updating){let n=i.shift();t.remove(n.start,n.end)}}}_doAppendSegments(){var t,i,n,r;if(!this._mediaSource||this._mediaSource.readyState!=="open")return;let e=this._pendingSegments;for(let a of rt)if(!(!this._sourceBuffers[a]||this._sourceBuffers[a].updating||this._useManagedMediaSource&&this._mediaSource.streaming===!1)&&e[a].length>0){let s=e[a][0].kind===1?e[a][0]:void 0,l=e[a][0].kind===0?e[a][0]:void 0,c=s==null?void 0:s.info,u=(t=s==null?void 0:s.frameCount)!=null?t:0,h=e[a].shift();if(h.kind===1&&Number.isFinite(h==null?void 0:h.timestampOffset)){let f=this._sourceBuffers[a].timestampOffset,p=h.timestampOffset/1e3;Math.abs(f-p)>.1&&(_.v(this.TAG,`Update MPEG audio timestampOffset from ${f} to ${p}`),this._sourceBuffers[a].timestampOffset=p),delete h.timestampOffset}if(!h.data||h.data.byteLength===0)continue;try{if(h.kind===0&&_.v(this.TAG,`_doAppendSegments: append init ${nt(h)} pendingAudio=${e.audio.length} pendingVideo=${e.video.length}`),Ht.TRACE){let f=(i=this._sourceBuffers.audio)==null?void 0:i.updating,p=(n=this._sourceBuffers.video)==null?void 0:n.updating;c?_.v(this.TAG,`_doAppendSegments: Now ${Date.now()} - Appending media segment for ${a} SourceBuffer - frameCount: ${u} beginDts: ${c.beginDts} endDts: ${c.endDts} size: ${h.data.byteLength} audioUpdating ${f} videoUpdating ${p}`):_.v(this.TAG,`_doAppendSegments: Now ${Date.now()} - Appending init segment for ${a} SourceBuffer - size: ${h.data.byteLength} audioUpdating ${f} videoUpdating ${p}`)}if(typeof SharedArrayBuffer!="undefined"&&h.data.buffer instanceof SharedArrayBuffer){let f=h.data.slice();this._sourceBuffers[a].appendBuffer(f)}else this._sourceBuffers[a].appendBuffer(h.data);this._isBufferFull=!1}catch(f){this._pendingSegments[a].unshift(h),_.e(this.TAG,`error.message = ${f.message}; error.name = ${f.name}; error.code = ${f.code}; pendingData.length = ${h.data.length}; type = ${a}; beginDts = ${c?c.beginDts:"N/A"}; endDts = ${c?c.endDts:"N/A"}`),f.name==="QuotaExceededError"?this._hasPendingEos&&this._config.autoCleanupSourceBuffer?(this._mediaElementProxy.setOnMediaTimeUpdate(this._onMediaTimeUpdate),_.v(this.TAG,"QuotaExceededError with pending EOS, forcing cleanup to append final segment."),this._doCleanupSourceBuffer(!0),this._hasPendingRemoveRanges()||(_.w(this.TAG,"Cannot cleanup buffer at current position - will retry as playback progresses"),this._isBufferFull||(this._isBufferFull=!0,this._emitter.emit(ee.BUFFER_FULL)))):this._isBufferFull||(this._isBufferFull=!0,this._emitter.emit(ee.BUFFER_FULL),this._emitter.emit(ee.QUOTA_EXCEEDED_BUFFER_FULL,{type:a,currentBufferLength:((r=this._sourceBuffers[a])==null?void 0:r.buffered.length)||0,segmentSize:h.data.byteLength})):(_.e(this.TAG,f.message),this._emitter.emit(ee.ERROR,{code:f.code,msg:f.message}))}}}_deferInitSegment(e,t){this._pendingSourceBufferInit=this._pendingSourceBufferInit.filter(i=>i.type!==e.type),this._pendingSourceBufferInit.push(e),_.v(this.TAG,`_deferInitSegment: queued deferred=${t} pendingSourceBufferInit=${this._pendingSourceBufferInit.length} pendingAudio=${this._pendingSegments.audio.length} pendingVideo=${this._pendingSegments.video.length} ${nt(e)}`),t||(this._pendingSegments[e.type]=this._pendingSegments[e.type].filter(i=>i.kind!==0),this._pendingSegments[e.type].push(e),_.v(this.TAG,`_deferInitSegment: also queued into pendingSegments[${e.type}] size=${this._pendingSegments[e.type].length} ${nt(e)}`))}_flushPendingInitSegments(){var e,t;for(;this._pendingSourceBufferInit.length>0;){if(!this._mediaSource||this._mediaSource.readyState!=="open"||this._useManagedMediaSource&&this._mediaSource.streaming===!1||(e=this._sourceBuffers.video)!=null&&e.updating||(t=this._sourceBuffers.audio)!=null&&t.updating||this._hasPendingRemoveRanges())return;let i=this._pendingSourceBufferInit.shift();_.v(this.TAG,`_flushPendingInitSegments: dispatching queued init, remaining=${this._pendingSourceBufferInit.length} ${nt(i)}`),this.appendInitSegment(i,!0)}}_onSourceOpen(){var e;_.v(this.TAG,"MediaSource onSourceOpen"),(e=this._mediaSource)==null||e.removeEventListener("sourceopen",this.events.onSourceOpen),this._flushPendingInitSegments(),this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(ee.SOURCE_OPEN)}_onStartStreaming(){_.v(this.TAG,"ManagedMediaSource onStartStreaming"),this._flushPendingInitSegments(),this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(ee.START_STREAMING)}_onEndStreaming(){_.v(this.TAG,"ManagedMediaSource onEndStreaming"),this._emitter.emit(ee.END_STREAMING)}_onQualityChange(){_.v(this.TAG,"ManagedMediaSource onQualityChange")}_onSourceEnded(){_.v(this.TAG,"MediaSource onSourceEnded")}_getBufferedRanges(e){let t=this._sourceBuffers[e];return t?t.buffered:null}_onSourceClose(){_.v(this.TAG,"MediaSource onSourceClose");for(let e of rt){let t=this._sourceBuffers[e];t&&(t.removeEventListener("error",this.events.onSourceBufferError),t.removeEventListener("updateend",this.events.onSourceBufferUpdateEnd)),this._sourceBuffers[e]=null,this._mimeTypes[e]=null,this._pendingRemoveRanges[e].splice(0),this._pendingSegments[e].splice(0)}this._pendingSourceBufferInit=[],this._mediaSource&&this.events!=null&&(this._mediaSource.removeEventListener("sourceopen",this.events.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.events.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(this._mediaSource.removeEventListener("startstreaming",this.events.onStartStreaming),this._mediaSource.removeEventListener("endstreaming",this.events.onEndStreaming),this._mediaSource.removeEventListener("qualitychange",this.events.onQualityChange)))}_hasPendingSegments(){let e=this._pendingSegments;return e.video.length>0||e.audio.length>0}_hasPendingRemoveRanges(){let e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0}_onSourceBufferUpdateEnd(){this._requireSetMediaDuration&&this._updateMediaSourceDuration(),this._flushPendingInitSegments(),this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(ee.UPDATE_END)}_onSourceBufferError(e){var a,s,l,c,u,h,f,p,y,m,x;let t=e==null?void 0:e.target,i=(l=(s=(a=this._mediaElementProxy)==null?void 0:a.getError)==null?void 0:s.call(a))!=null?l:null,n=t?`updating=${t.updating}`:"target=unknown";_.e(this.TAG,`SourceBuffer Error: eventType=${(c=e==null?void 0:e.type)!=null?c:"unknown"} ${n} mediaSourceReadyState=${(h=(u=this._mediaSource)==null?void 0:u.readyState)!=null?h:"null"} mediaElementReadyState=${(y=(p=(f=this._mediaElementProxy)==null?void 0:f.getReadyState)==null?void 0:p.call(f))!=null?y:"unknown"} mediaError=${yn(i)}`);let r=(x=(m=this._mediaElementProxy)==null?void 0:m.getError)==null?void 0:x.call(m);r&&this._emitter.emit(ee.ERROR,{code:r.code,msg:r.message})}};d(Ht,"TRACE",!1);var Ci=Ht,wr=Ci;var qt=class o{static get forceGlobalTag(){return _.FORCE_GLOBAL_TAG}static set forceGlobalTag(e){_.FORCE_GLOBAL_TAG=e,o._notifyChange()}static get globalTag(){return _.GLOBAL_TAG}static set globalTag(e){_.GLOBAL_TAG=e,o._notifyChange()}static get enableAll(){return _.ENABLE_VERBOSE&&_.ENABLE_DEBUG&&_.ENABLE_INFO&&_.ENABLE_WARN&&_.ENABLE_ERROR}static set enableAll(e){_.ENABLE_VERBOSE=e,_.ENABLE_DEBUG=e,_.ENABLE_INFO=e,_.ENABLE_WARN=e,_.ENABLE_ERROR=e,o._notifyChange()}static get enableDebug(){return _.ENABLE_DEBUG}static set enableDebug(e){_.ENABLE_DEBUG=e,o._notifyChange()}static get enableVerbose(){return _.ENABLE_VERBOSE}static set enableVerbose(e){_.ENABLE_VERBOSE=e,o._notifyChange()}static get enableInfo(){return _.ENABLE_INFO}static set enableInfo(e){_.ENABLE_INFO=e,o._notifyChange()}static get enableWarn(){return _.ENABLE_WARN}static set enableWarn(e){_.ENABLE_WARN=e,o._notifyChange()}static get enableError(){return _.ENABLE_ERROR}static set enableError(e){_.ENABLE_ERROR=e,o._notifyChange()}static getConfig(){return{globalTag:_.GLOBAL_TAG,forceGlobalTag:_.FORCE_GLOBAL_TAG,enableVerbose:_.ENABLE_VERBOSE,enableDebug:_.ENABLE_DEBUG,enableInfo:_.ENABLE_INFO,enableWarn:_.ENABLE_WARN,enableError:_.ENABLE_ERROR,enableCallback:_.ENABLE_CALLBACK}}static applyConfig(e){_.GLOBAL_TAG=e.globalTag,_.FORCE_GLOBAL_TAG=e.forceGlobalTag,_.ENABLE_VERBOSE=e.enableVerbose,_.ENABLE_DEBUG=e.enableDebug,_.ENABLE_INFO=e.enableInfo,_.ENABLE_WARN=e.enableWarn,_.ENABLE_ERROR=e.enableError,_.ENABLE_CALLBACK=e.enableCallback}static _notifyChange(){let e=o.emitter;if(e.listenerCount("change")>0){let t=o.getConfig();e.emit("change",t)}}static registerListener(e){o.emitter.addListener("change",e)}static removeListener(e){o.emitter.removeListener("change",e)}static addLogListener(e){_.emitter.addListener("log",e),_.emitter.listenerCount("log")>0&&(_.ENABLE_CALLBACK=!0,o._notifyChange())}static removeLogListener(e){_.emitter.removeListener("log",e),_.emitter.listenerCount("log")===0&&(_.ENABLE_CALLBACK=!1,o._notifyChange())}};qt.emitter=new ge;var Oe=qt;var Ri=class{constructor(){d(this,"mimeType",null);d(this,"duration",null);d(this,"hasAudio",null);d(this,"hasVideo",null);d(this,"audioCodec",null);d(this,"videoCodec",null);d(this,"audioDataRate",null);d(this,"videoDataRate",null);d(this,"audioSampleRate",null);d(this,"audioChannelCount",null);d(this,"width",null);d(this,"height",null);d(this,"fps",null);d(this,"profile",null);d(this,"level",null);d(this,"refFrames",null);d(this,"chromaFormat",null);d(this,"sarNum",null);d(this,"sarDen",null);d(this,"metadata",null);d(this,"segments",null);d(this,"segmentCount",null);d(this,"hasKeyframesIndex",null);d(this,"keyframesIndex",null)}isComplete(){let e=this.hasAudio===!1||this.hasAudio===!0&&this.audioCodec!=null&&this.audioSampleRate!=null&&this.audioChannelCount!=null,t=this.hasVideo===!1||this.hasVideo===!0&&this.videoCodec!=null&&this.width!=null&&this.height!=null&&this.fps!=null&&this.profile!=null&&this.level!=null&&this.refFrames!=null&&this.chromaFormat!=null&&this.sarNum!=null&&this.sarDen!=null;return this.mimeType!=null&&e&&t}isSeekable(){return this.hasKeyframesIndex===!0}getNearestKeyframe(e){if(this.keyframesIndex==null)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,n=e.length-1,r=0,a=0,s=n;for(t<e[0]&&(i=0,a=s+1);a<=s;)if(r=a+Math.floor((s-a)/2),r===n||t>=e[r]&&t<e[r+1]){i=r;break}else e[r]<t?a=r+1:s=r-1;return i}},Ie=Ri;var ki=class{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=e.byteLength*8,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)throw new re("ExpGolomb: _fillCurrentWord() but no bytes available");let t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=t*8}readBits(e){if(e>32)throw new xe("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){let a=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,a}let t=this._current_word_bits_left?this._current_word:0;t=t>>>32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let n=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-n;return this._current_word<<=n,this._current_word_bits_left-=n,t=t<<n|r,t}readBool(){return this.readBits(1)===1}readByte(){return this.readBits(8)}_skipLeadingZero(){let e;for(e=0;e<this._current_word_bits_left;e++)if((this._current_word&2147483648>>>e)!==0)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return e&1?e+1>>>1:-1*(e>>>1)}},he=ki;var Tt=(R=>(R[R.kNull=0]="kNull",R[R.kAAC_Main=1]="kAAC_Main",R[R.kAAC_LC=2]="kAAC_LC",R[R.kAAC_SSR=3]="kAAC_SSR",R[R.kAAC_LTP=4]="kAAC_LTP",R[R.kAAC_SBR=5]="kAAC_SBR",R[R.kAAC_Scalable=6]="kAAC_Scalable",R[R.kTwinVQ=7]="kTwinVQ",R[R.kCELP=8]="kCELP",R[R.kHVXC=9]="kHVXC",R[R.kTTSI=12]="kTTSI",R[R.kMainSynthetic=13]="kMainSynthetic",R[R.kWavetableSynthesis=14]="kWavetableSynthesis",R[R.kGeneralMIDI=15]="kGeneralMIDI",R[R.kAlgorithmicSynthesis=16]="kAlgorithmicSynthesis",R[R.kER_AAC_LC=17]="kER_AAC_LC",R[R.kER_AAC_LTP=19]="kER_AAC_LTP",R[R.kER_AAC_Scalable=20]="kER_AAC_Scalable",R[R.kER_TwinVQ=21]="kER_TwinVQ",R[R.kER_BSAC=22]="kER_BSAC",R[R.kER_AAC_LD=23]="kER_AAC_LD",R[R.kER_CELP=24]="kER_CELP",R[R.kER_HVXC=25]="kER_HVXC",R[R.kER_HILN=26]="kER_HILN",R[R.kER_Parametric=27]="kER_Parametric",R[R.kSSC=28]="kSSC",R[R.kAAC_PS=29]="kAAC_PS",R[R.kMPEGSurround=30]="kMPEGSurround",R[R.kLayer1=32]="kLayer1",R[R.kLayer2=33]="kLayer2",R[R.kLayer3=34]="kLayer3",R[R.kDST=35]="kDST",R[R.kALS=36]="kALS",R[R.kSLS=37]="kSLS",R[R.kSLS_NonCore=38]="kSLS_NonCore",R[R.kER_AAC_ELD=39]="kER_AAC_ELD",R[R.kSMR_Simple=40]="kSMR_Simple",R[R.kSMR_Main=41]="kSMR_Main",R[R.kUSAC=42]="kUSAC",R[R.kSAOC=43]="kSAOC",R[R.kLD_MpegSurround=44]="kLD_MpegSurround",R[R.kSAOC_DE=45]="kSAOC_DE",R))(Tt||{});var Ue=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];var ct=class{constructor(e){d(this,"audio_object_type",2);d(this,"sampling_freq_index",4);d(this,"sampling_frequency",Ue[4]);d(this,"channel_config",2);d(this,"data",new Uint8Array);var t;if(e===void 0||e.byteLength<2){e!==void 0&&(this.data=e);return}this.data=e,this.audio_object_type=e[0]>>>3,this.sampling_freq_index=(e[0]&7)<<1|e[1]>>>7,this.sampling_frequency=(t=Ue[this.sampling_freq_index])!=null?t:0,this.channel_config=(e[1]&120)>>>3}};var ut=class{constructor(e){d(this,"config");d(this,"sampling_rate");d(this,"channel_count");d(this,"codec_mimetype");d(this,"original_codec_mimetype");let t,i=e.audio_object_type,n=e.audio_object_type,r=e.sampling_freq_index,a=e.channel_config,s=0,l=navigator.userAgent.toLowerCase();l.indexOf("firefox")!==-1?r>=6?(n=5,t=new Array(4),s=r-3):(n=2,t=new Array(2),s=r):l.indexOf("android")!==-1?(n=2,t=new Array(2),s=r):(n=5,s=r,t=new Array(4),r>=6&&(s=r-3)),t[0]=n<<3,t[0]|=(r&15)>>>1,t[1]=(r&15)<<7,t[1]|=(a&15)<<3,n===5&&(t[1]|=(s&15)>>>1,t[2]=(s&1)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Ue[r],this.channel_count=a,this.codec_mimetype="mp4a.40."+n,this.original_codec_mimetype="mp4a.40."+i}};var Fi=class o{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),r=0;for(let a=0;a<i;a++)a>=2&&t[a]===3&&t[a-1]===0&&t[a-2]===0||(n[r]=t[a],r++);return new Uint8Array(n.buffer,0,r)}static parseSPS(e){let t=e.subarray(1,4),i="avc1.";for(let B=0;B<3;B++){let U=t[B].toString(16);U.length<2&&(U="0"+U),i+=U}let n=o._ebsp2rbsp(e),r=new he(n);r.readByte();let a=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let l=o.getProfileString(a),c=o.getLevelString(s),u=1,h=420,f=[0,420,422,444],p=8,y=8;if((a===100||a===110||a===122||a===244||a===44||a===83||a===86||a===118||a===128||a===138||a===144)&&(u=r.readUEG(),u===3&&r.readBits(1),u<=3&&(h=f[u]),p=r.readUEG()+8,y=r.readUEG()+8,r.readBits(1),r.readBool())){let B=u!==3?8:12;for(let U=0;U<B;U++)r.readBool()&&(U<6?o._skipScalingList(r,16):o._skipScalingList(r,64))}r.readUEG();let m=r.readUEG();if(m===0)r.readUEG();else if(m===1){r.readBits(1),r.readSEG(),r.readSEG();let B=r.readUEG();for(let U=0;U<B;U++)r.readSEG()}let x=r.readUEG();r.readBits(1);let b=r.readUEG(),v=r.readUEG(),S=r.readBits(1);S===0&&r.readBits(1),r.readBits(1);let T=0,V=0,w=0,D=0;r.readBool()&&(T=r.readUEG(),V=r.readUEG(),w=r.readUEG(),D=r.readUEG());let M=1,k=1,I=0,H=!0,de=0,ne=0;if(r.readBool()){if(r.readBool()){let B=r.readByte(),U=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],te=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];B>0&&B<16?(M=U[B-1],k=te[B-1]):B===255&&(M=r.readByte()<<8|r.readByte(),k=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let B=r.readBits(32),U=r.readBits(32);H=r.readBool(),de=U,ne=B*2,I=de/ne}}let W=1;(M!==1||k!==1)&&(W=M/k);let Q=0,le=0;if(u===0)Q=1,le=2-S;else{let B=u===3?1:2,U=u===1?2:1;Q=B,le=U*(2-S)}let $=(b+1)*16,be=(2-S)*((v+1)*16);$-=(T+V)*Q,be-=(w+D)*le;let F=Math.ceil($*W);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:a,level_idc:s,profile_string:l,level_string:c,chroma_format_idc:u,bit_depth:p,bit_depth_luma:p,bit_depth_chroma:y,ref_frames:x,chroma_format:h,chroma_format_string:o.getChromaFormatString(h),frame_rate:{fixed:H,fps:I,fps_den:ne,fps_num:de},sar_ratio:{width:M,height:k},codec_size:{width:$,height:be},present_size:{width:F,height:be}}}static _skipScalingList(e,t){let i=8,n=8,r=0;for(let a=0;a<t;a++)n!==0&&(r=e.readSEG(),n=(i+r+256)%256),i=n===0?i:n}static getProfileString(e){switch(e){case 66:return"Baseline";case 77:return"Main";case 88:return"Extended";case 100:return"High";case 110:return"High10";case 122:return"High422";case 244:return"High444";default:return"Unknown"}}static getLevelString(e){return(e/10).toFixed(1)}static getChromaFormatString(e){switch(e){case 420:return"4:2:0";case 422:return"4:2:2";case 444:return"4:4:4";default:return"Unknown"}}},Wt=Fi;var Ti=class o{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),r=0;for(let a=0;a<i;a++)a>=2&&t[a]===3&&t[a-1]===0&&t[a-2]===0||(n[r]=t[a],r++);return new Uint8Array(n.buffer,0,r)}static parseVPS(e){let t=o._ebsp2rbsp(e),i=new he(t);i.readByte(),i.readByte();let n=i.readBits(4);i.readBits(2);let r=i.readBits(6),a=i.readBits(3),s=i.readBool();return{num_temporal_layers:a+1,temporal_id_nested:s}}static parseSPS(e){let t=o._ebsp2rbsp(e),i=new he(t);i.readByte(),i.readByte();let n=0,r=0,a=0,s=0,l=i.readBits(4),c=i.readBits(3),u=i.readBool(),h=i.readBits(2),f=i.readBool(),p=i.readBits(5),y=i.readByte(),m=i.readByte(),x=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),T=i.readByte(),V=i.readByte(),w=i.readByte(),D=i.readByte(),A=i.readByte(),M=[],k=[];for(let z=0;z<c;z++)M.push(i.readBool()),k.push(i.readBool());if(c>0)for(let z=c;z<8;z++)i.readBits(2);for(let z=0;z<c;z++)M[z]&&(i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte()),k[z]&&i.readByte();let I=i.readUEG(),H=i.readUEG();H==3&&i.readBits(1);let de=i.readUEG(),ne=i.readUEG();i.readBool()&&(n+=i.readUEG(),r+=i.readUEG(),a+=i.readUEG(),s+=i.readUEG());let W=i.readUEG(),Q=i.readUEG(),le=i.readUEG(),$=i.readBool();for(let z=$?0:c;z<=c;z++)i.readUEG(),i.readUEG(),i.readUEG();let be=i.readUEG(),F=i.readUEG(),B=i.readUEG(),U=i.readUEG(),te=i.readUEG(),ue=i.readUEG();if(i.readBool()&&i.readBool())for(let ie=0;ie<4;ie++)for(let ce=0;ce<(ie===3?2:6);ce++)if(!i.readBool())i.readUEG();else{let ye=Math.min(64,1<<4+(ie<<1));ie>1&&i.readSEG();for(let Me=0;Me<ye;Me++)i.readSEG()}let Ke=i.readBool(),Le=i.readBool();i.readBool()&&(i.readByte(),i.readUEG(),i.readUEG(),i.readBool());let me=i.readUEG(),je=0;for(let z=0;z<me;z++){let ie=!1;if(z!==0&&(ie=i.readBool()),ie){z===me&&i.readUEG(),i.readBool(),i.readUEG();let ce=0;for(let Se=0;Se<=je;Se++){let ye=i.readBool(),Me=!1;ye||(Me=i.readBool()),(ye||Me)&&ce++}je=ce}else{let ce=i.readUEG(),Se=i.readUEG();je=ce+Se;for(let ye=0;ye<ce;ye++)i.readUEG(),i.readBool();for(let ye=0;ye<Se;ye++)i.readUEG(),i.readBool()}}if(i.readBool()){let z=i.readUEG();for(let ie=0;ie<z;ie++){for(let ce=0;ce<le+4;ce++)i.readBits(1);i.readBits(1)}}let Re=!1,lt=0,tt=1,it=1,wt=!1,bt=1,yt=1,br=i.readBool(),yr=i.readBool();if(i.readBool()){if(i.readBool()){let Ve=i.readByte(),It=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],Ut=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];Ve>0&&Ve<=16?(tt=It[Ve-1],it=Ut[Ve-1]):Ve===255&&(tt=i.readBits(16),it=i.readBits(16))}i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG());let ye=i.readBool(),Me=i.readBool(),At=i.readBool();if(Re=i.readBool(),Re&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()&&(bt=i.readBits(32),yt=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool())){let Ut=1,Pt=!1,Vt=!1,dt=!1;if(Ut&&(Pt=i.readBool(),Vt=i.readBool(),Pt||Vt)){dt=i.readBool(),dt&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5));let Ot=i.readBits(4),gi=i.readBits(4);dt&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5)}for(let Ot=0;Ot<=c;Ot++){let gi=i.readBool();wt=gi;let Sr=!0,xi=1;gi||(Sr=i.readBool());let Er=!1;if(Sr?i.readUEG():Er=i.readBool(),Er||(xi=i.readUEG()+1),Pt){for(let St=0;St<xi;St++)i.readUEG(),i.readUEG(),dt&&(i.readUEG(),i.readUEG());i.readBool()}if(Vt){for(let St=0;St<xi;St++)i.readUEG(),i.readUEG(),dt&&(i.readUEG(),i.readUEG());i.readBool()}}}if(i.readBool()){let Ve=i.readBool(),It=i.readBool(),Ut=i.readBool();lt=i.readUEG();let Pt=i.readUEG(),Vt=i.readUEG(),dt=i.readUEG(),Ot=i.readUEG()}}let Ge=i.readBool(),Pe=`hvc1.${p}.1.L${A}.B0`,vr=H===1||H===2?2:1,_i=H===1?2:1,fi=de-(n+r)*vr,mi=ne-(a+s)*_i,pi=1;return tt!==1&&it!==1&&(pi=tt/it),i.destroy(),i=null,{codec_mimetype:Pe,profile_string:o.getProfileString(p),level_string:o.getLevelString(A),profile_idc:p,bit_depth:W+8,ref_frames:1,chroma_format:H,chroma_format_string:o.getChromaFormatString(H),general_level_idc:A,general_profile_space:h,general_tier_flag:f,general_profile_idc:p,general_profile_compatibility_flags_1:y,general_profile_compatibility_flags_2:m,general_profile_compatibility_flags_3:x,general_profile_compatibility_flags_4:b,general_constraint_indicator_flags_1:v,general_constraint_indicator_flags_2:S,general_constraint_indicator_flags_3:T,general_constraint_indicator_flags_4:V,general_constraint_indicator_flags_5:w,general_constraint_indicator_flags_6:D,min_spatial_segmentation_idc:lt,constant_frame_rate:0,chroma_format_idc:H,bit_depth_luma_minus8:W,bit_depth_chroma_minus8:Q,frame_rate:{fixed:wt,fps:yt/bt,fps_den:bt,fps_num:yt},sar_ratio:{width:tt,height:it},codec_size:{width:fi,height:mi},present_size:{width:fi*pi,height:mi}}}static parsePPS(e){let t=o._ebsp2rbsp(e),i=new he(t);i.readByte(),i.readByte();let n=i.readUEG(),r=i.readUEG(),a=i.readBool(),s=i.readBool(),l=i.readBits(3),c=i.readBool(),u=i.readBool(),h=i.readUEG(),f=i.readUEG(),p=i.readSEG(),y=i.readBool(),m=i.readBool();if(i.readBool()){let k=i.readUEG()}let b=i.readSEG(),v=i.readSEG(),S=i.readBool(),T=i.readBool(),V=i.readBool(),w=i.readBool(),D=i.readBool(),A=i.readBool(),M=1;return A&&D?M=0:A?M=3:D&&(M=2),{parallelismType:M}}static getChromaFormatString(e){switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}}static getProfileString(e){switch(e){case 1:return"Main";case 2:return"Main10";case 3:return"MainSP";case 4:return"Rext";case 9:return"SCC";default:return"Unknown"}}static getLevelString(e){return(e/30).toFixed(1)}},ht=Ti;var Li=class{constructor(){d(this,"type",0);d(this,"data",new Uint8Array)}},zt=class{constructor(e){d(this,"type");d(this,"data");let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}},Kt=class{constructor(e){d(this,"TAG","H264AnnexBParser");d(this,"data_");d(this,"current_startcode_offset_",0);d(this,"eof_flag_",!1);this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&_.e(this.TAG,"Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data_;for(;;){if(t+3>=i.byteLength)return this.eof_flag_=!0,i.byteLength;let n=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(n===1||r===1)return t;t++}}readNextNaluPayload(){let e=this.data_,t=null;for(;t==null&&!this.eof_flag_;){let n=this.current_startcode_offset_;(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3])===1?n+=4:n+=3;let a=e[n]&31,s=(e[n]&128)>>>7,l=this.findNextStartCodeOffset(n);if(this.current_startcode_offset_=l,a>=14||s!==0)continue;let c=e.subarray(n,l);t=new Li,t.type=a,t.data=c}return t}},jt=class{constructor(e,t,i){d(this,"data");let n=8+e.byteLength+1+2+t.byteLength,r=!1;e[3]!==66&&e[3]!==77&&e[3]!==88&&(r=!0,n+=4);let a=this.data=new Uint8Array(n);a[0]=1,a[1]=e[1],a[2]=e[2],a[3]=e[3],a[4]=255,a[5]=225;let s=e.byteLength;a[6]=s>>>8,a[7]=s&255;let l=8;a.set(e,8),l+=s,a[l]=1;let c=t.byteLength;a[l+1]=c>>>8,a[l+2]=c&255,a.set(t,l+3),l+=3+c,r&&(a[l]=252|i.chroma_format_idc,a[l+1]=248|i.bit_depth_luma-8,a[l+2]=248|i.bit_depth_chroma-8,a[l+3]=0,l+=4)}getData(){return this.data}};var Yt=class{constructor(e){d(this,"type");d(this,"data");let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}},Xt=class{constructor(e){d(this,"TAG","H265AnnexBParser");d(this,"data_");d(this,"current_startcode_offset_",0);d(this,"eof_flag_",!1);this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&_.e(this.TAG,"Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data_;for(;;){if(t+3>=i.byteLength)return this.eof_flag_=!0,i.byteLength;let n=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(n===1||r===1)return t;t++}}readNextNaluPayload(){let e=this.data_,t=null;for(;t==null&&!this.eof_flag_;){let n=this.current_startcode_offset_;(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3])===1?n+=4:n+=3;let a=e[n]>>1&63,s=(e[n]&128)>>>7,l=this.findNextStartCodeOffset(n);if(this.current_startcode_offset_=l,s!==0)continue;let c=e.subarray(n,l);t={type:a,data:c}}return t}},Qt=class{constructor(e,t,i,n){d(this,"data");let r=23+(5+e.byteLength)+(5+t.byteLength)+(5+i.byteLength),a=this.data=new Uint8Array(r);a[0]=1,a[1]=(n.general_profile_space&3)<<6|(n.general_tier_flag?1:0)<<5|n.general_profile_idc&31,a[2]=n.general_profile_compatibility_flags_1,a[3]=n.general_profile_compatibility_flags_2,a[4]=n.general_profile_compatibility_flags_3,a[5]=n.general_profile_compatibility_flags_4,a[6]=n.general_constraint_indicator_flags_1,a[7]=n.general_constraint_indicator_flags_2,a[8]=n.general_constraint_indicator_flags_3,a[9]=n.general_constraint_indicator_flags_4,a[10]=n.general_constraint_indicator_flags_5,a[11]=n.general_constraint_indicator_flags_6,a[12]=n.general_level_idc,a[13]=240|(n.min_spatial_segmentation_idc&3840)>>8,a[14]=n.min_spatial_segmentation_idc&255,a[15]=252|n.parallelismType&3,a[16]=252|n.chroma_format_idc&3,a[17]=248|n.bit_depth_luma_minus8&7,a[18]=248|n.bit_depth_chroma_minus8&7,a[19]=0,a[20]=0,a[21]=(n.constant_frame_rate&3)<<6|(n.num_temporal_layers&7)<<3|(n.temporal_id_nested?1:0)<<2|3,a[22]=3,a[23]=160,a[24]=0,a[25]=1,a[26]=(e.byteLength&65280)>>8,a[27]=(e.byteLength&255)>>0,a.set(e,28),a[23+(5+e.byteLength)+0]=161,a[23+(5+e.byteLength)+1]=0,a[23+(5+e.byteLength)+2]=1,a[23+(5+e.byteLength)+3]=(t.byteLength&65280)>>8,a[23+(5+e.byteLength)+4]=(t.byteLength&255)>>0,a.set(t,23+(5+e.byteLength)+5),a[23+(5+e.byteLength+5+t.byteLength)+0]=162,a[23+(5+e.byteLength+5+t.byteLength)+1]=0,a[23+(5+e.byteLength+5+t.byteLength)+2]=1,a[23+(5+e.byteLength+5+t.byteLength)+3]=(i.byteLength&65280)>>8,a[23+(5+e.byteLength+5+t.byteLength)+4]=(i.byteLength&255)>>0,a.set(i,23+(5+e.byteLength+5+t.byteLength)+5)}getData(){return this.data}};var Lt="av1-parser";var Mi=class o{static parseOBUs(e,t){for(let i=0;i<e.byteLength;){let n=i,r=(e[i]&128)>>7,a=(e[i]&120)>>3,s=(e[i]&4)!==0,l=(e[i]&2)!==0,c=(e[i]&1)!==0;i+=1;let u=0,h=0;s&&(i+=1);let f=Number.POSITIVE_INFINITY;if(l){f=0;for(let p=0;;p++){let y=e[i++];if(f|=(y&127)<<p*7,(y&128)===0)break}}a===1?t=ae(j({},o.parseSeuqneceHeader(e.subarray(i,i+f))),{sequence_header_data:e.subarray(n,i+f)}):(a==3&&t||a==6&&t)&&(t=o.parseOBUFrameHeader(e.subarray(i,i+f),u,h,t)),i+=f}return t}static stripLeadingObuFraming(e){if(e.length===0)return e;function t(r){let a=0,s=(r[a]&128)>>7!==0,l=(r[a]&120)>>3,c=(r[a]&4)!==0,u=(r[a]&2)!==0,h=(r[a]&1)!==0;if(a+=1,s&&_.e(Lt,"Invalid OBU header: forbidden bit is set"),c&&(a+=1),u){let f=0;for(let p=0;;p++){if(a>=r.length)return new Uint8Array(0);let y=r[a++];if(f|=(y&127)<<p*7,(y&128)===0)break}return r.subarray(a+f)}else return r.subarray(a)}let i=(e[0]&120)>>3,n=e;switch(i){case 2:n=t(e);break;case 7:_.e(Lt,"OBU_REDUNDANT_FRAME_HEADER is not supported");break;case 8:_.e(Lt,"OBU_TILE_LIST is not supported");break;case 15:_.e(Lt,"OBU_PADDING is not supported");break;default:break}return n}static parseSeuqneceHeader(e){let t=new he(e),i=t.readBits(3),n=t.readBool(),r=t.readBool(),a=-1,s=0,l=!0,c=0,u=1,h=!1,f=!1,p=-1,y=-1,m=[];if(r)m.push({operating_point_idc:0,level:t.readBits(5),tier:0});else{if(t.readBool()){let Se=t.readBits(32),ye=t.readBits(32),Me=t.readBool(),At=0;if(Me){let Ye=0;for(;t.readBits(1)===0;)Ye+=1;Ye>=32?At=4294967295:At=(1<<Ye)-1+t.readBits(Ye)}if(u=Se,c=ye,s=c/u,l=Me,t.readBool()){p=t.readBits(5);let Ye=t.readBits(32);y=t.readBits(5),a=t.readBits(5)}}let ie=t.readBool(),ce=t.readBits(5);for(let Se=0;Se<=ce;Se++){let ye=t.readBits(12),Me=t.readBits(5),At=Me>7?t.readBits(1):0;if(m.push({operating_point_idc:ye,level:Me,tier:At}),h){let vt=t.readBool();if(m[m.length-1].decoder_model_present_for_this_op=vt,vt){let Ye=t.readBits(p+1),Ve=t.readBits(p+1),It=t.readBool()}}if(ie&&t.readBool()){let Ye=t.readBits(4)}}}let x=0,{level:b,tier:v}=m[x],S=t.readBits(4),T=t.readBits(4),V=t.readBits(S+1)+1,w=t.readBits(T+1)+1,D=!1;r||(D=t.readBool());let A,M;if(D){let z=t.readBits(4),ie=t.readBits(4)}let k=2,I=2,H=t.readBool(),de=t.readBool(),ne=t.readBool(),oe=!1,W=!1,Q=!1,le=!1,$=!1,be=!1,F=!1,B=k,U=I,te=0;if(!r){if(oe=t.readBool(),W=t.readBool(),Q=t.readBool(),le=t.readBool(),$=t.readBool(),$){let ie=t.readBool(),ce=t.readBool()}t.readBool()?B=k:B=t.readBits(1),B?t.readBool()?U=I:U=t.readBits(1):U=I,$?te=t.readBits(3)+1:te=0}let ue=t.readBool(),R=t.readBool(),Ke=t.readBool(),Le=t.readBool(),fe=8;i===2&&Le?fe=t.readBool()?12:10:fe=Le?10:8;let me=!1;i!==1&&(me=t.readBool());let je=me?1:3,ot=t.readBool(),Re=1,lt=2,tt=2,it=13,wt=2,bt=0,yt=lt,br=tt,yr=wt;if(ot){let z=t.readBits(8),ie=t.readBits(8),ce=t.readBits(8)}let Ar=1,Ge=1,Pe=1;if(me){Ar=t.readBits(1),Ge=1,Pe=1;let z=0,ie=0}else{let z=1;if(yt===Re&&br===it&&yr===bt)z=1,Ge=1,Pe=1;else{if(z=t.readBits(1),i==0)Ge=1,Pe=1;else if(i==1)Ge=0,Pe=0;else if(fe==12)if(t.readBits(1)){let Se=t.readBits(1)}else{let Se=0}else Ge=1,Pe=0;if(Ge&&Pe){let ce=t.readBits(2)}let ie=t.readBits(1)}}let vr=t.readBool();t.destroy();let _i=`av01.${i}.${o.getLevelString(b,v)}.${fe.toString(10).padStart(2,"0")}`,fi=1,mi=1,pi=1;return{codec_mimetype:_i,level:b,tier:v,level_string:o.getLevelString(b,v),profile_idc:i,profile_string:`${i}`,bit_depth:fe,ref_frames:1,chroma_format:o.getChromaFormat(me,Ge,Pe),chroma_format_string:o.getChromaFormatString(me,Ge,Pe),sequence_header:{frame_id_numbers_present_flag:D,additional_frame_id_length_minus_1:M,delta_frame_id_length_minus_2:A,reduced_still_picture_header:r,decoder_model_info_present_flag:h,operating_points:m,buffer_removal_time_length_minus_1:y,equal_picture_interval:l,seq_force_screen_content_tools:B,seq_force_integer_mv:U,enable_order_hint:$,order_hint_bits:te,enable_superres:ue,frame_width_bit:S+1,frame_height_bit:T+1,max_frame_width:V,max_frame_height:w,frame_presentation_time_length_minus_1:a},keyframe:void 0,frame_rate:{fixed:l,fps:c/u,fps_den:u,fps_num:c}}}static parseOBUFrameHeader(e,t,i,n){var le;let{sequence_header:r}=n,a=new he(e),s=8,l=2,c=2,u=7,h=r.max_frame_width,f=r.max_frame_height,p=h,y=f,m=0;r.frame_id_numbers_present_flag&&(m=r.additional_frame_id_length_minus_1+r.delta_frame_id_length_minus_2+3);let x=(1<<s)-1,b=!1,v=0,S=!0,T=!0,V=!1,w=!1;if(!r.reduced_still_picture_header){if(b=a.readBool(),b)return n;if(v=a.readBits(2),S=v===2||v===0,T=a.readBool(),T&&r.decoder_model_info_present_flag&&!r.equal_picture_interval){let $=r.frame_presentation_time_length_minus_1+1,be=a.readBits($);_.v(Lt,`frame_presentation_time: ${be}`)}T?V=v!==0:V=a.readBool(),v===3||v===0&&T?w=!0:w=a.readBool()}n.keyframe=S;let D=a.readBool(),A=r.seq_force_screen_content_tools;r.seq_force_screen_content_tools===l&&(A=a.readBits(1));let M=S?1:0;A&&(M=r.seq_force_integer_mv,r.seq_force_integer_mv==c&&(M=a.readBits(1)));let k=0;r.frame_id_numbers_present_flag&&(k=a.readBits(m));let I=!1;v==3?I=!0:r.reduced_still_picture_header?I=!1:I=a.readBool();let H=a.readBits(r.order_hint_bits),de=u;if(S||w||(de=a.readBits(3)),r.decoder_model_info_present_flag&&a.readBool()){let be=(le=r.operating_points_cnt_minus_1)!=null?le:0;for(let F=0;F<=be;F++)if(r.operating_points[F].decoder_model_present_for_this_op){let B=r.operating_points[F].operating_point_idc,U=B>>t&1,te=B>>i+8&1;(B===0||U&&te)&&a.readBits(r.buffer_removal_time_length_minus_1+1)}}let ne=0,oe=0,W=0,Q=x;if(v===3||v==0&&T||(Q=a.readBits(8)),(!S||Q!==x)&&w&&r.enable_order_hint)for(let $=0;$<s;$++)a.readBits(r.order_hint_bits);if(S){let $=o.frameSizeAndRenderSize(a,I,r);n.codec_size={width:$.FrameWidth,height:$.FrameHeight},n.present_size={width:$.RenderWidth,height:$.RenderHeight},n.sar_ratio={width:$.RenderWidth/$.FrameWidth,height:$.RenderHeight/$.FrameHeight}}return a.destroy(),n}static frameSizeAndRenderSize(e,t,i){let n=i.max_frame_width,r=i.max_frame_height;t&&(n=e.readBits(i.frame_width_bit)+1,r=e.readBits(i.frame_height_bit)+1);let a=!1;i.enable_superres&&(a=e.readBool());let s=8;a&&(s=e.readBits(3)+9);let l=n;n=Math.floor((l*8+s/2)/s);let c=e.readBool(),u=l,h=r;return c&&(u=e.readBits(16)+1,h=e.readBits(16)+1),{UpscaledWidth:l,FrameWidth:n,FrameHeight:r,RenderWidth:u,RenderHeight:h}}static getLevelString(e,t){return`${e.toString(10).padStart(2,"0")}${t===0?"M":"H"}`}static getChromaFormat(e,t,i){return e?0:t===0&&i===0?3:t===1&&i===0?2:t===1&&i===1?1:Number.NaN}static getChromaFormatString(e,t,i){return e?"4:0:0":t===0&&i===0?"4:4:4":t===1&&i===0?"4:2:2":t===1&&i===1?"4:2:0":"Unknown"}},De=Mi;var An={width:0,height:0,renderWidth:0,renderHeight:0,profile:0,bitDepth:8,colorSpace:0,colorRange:0,isValid:!1},_t=class{static parseVp9Header(e){let t=j({},An);if(e.length<10)return t;let i=new he(e);if(i.readBits(2)!==2)return t;let r=i.readBits(1),a=i.readBits(1);if(t.profile=a<<1|r,t.profile===3&&i.readBits(1),i.readBool()||i.readBool())return t;let s=i.readBool(),l=i.readBool(),c=i.readBits(24),u=8;t.profile>=2&&(u=i.readBool()?12:10);let h=i.readBits(3),f=0,p;(I=>(I[I.CS_UNKNOWN=0]="CS_UNKNOWN",I[I.CS_BT_601=1]="CS_BT_601",I[I.CS_BT_709=2]="CS_BT_709",I[I.CS_SMPTE_170=3]="CS_SMPTE_170",I[I.CS_SMPTE_240=4]="CS_SMPTE_240",I[I.CS_BT_2020=5]="CS_BT_2020",I[I.CS_RESERVED=6]="CS_RESERVED",I[I.CS_RGB=7]="CS_RGB"))(p||(p={})),h!==7?(f=i.readBool()?1:0,(t.profile===1||t.profile===3)&&(i.readBool(),i.readBool(),i.readBool())):(t.profile===1||t.profile===3)&&i.readBool();let y=i.readBits(16)+1,m=i.readBits(16)+1,x=i.readBool(),b=y,v=m;return x&&(b=i.readBits(16)+1,v=i.readBits(16)+1),t.width=y,t.height=m,t.renderWidth=b,t.renderHeight=v,t.bitDepth=u,t.colorSpace=h,t.colorRange=f,t.isValid=!0,i.destroy(),t}};function Di(o,e,t){let i=o;if(e+t<i.length){for(;t--;)if((i[++e]&192)!==128)return!1;return!0}else return!1}function vn(o){let e=[],t=o,i=0,n=o.length;for(;i<n;){if(t[i]<128){e.push(String.fromCharCode(t[i])),++i;continue}else if(!(t[i]<192)){if(t[i]<224){if(Di(t,i,1)){let r=(t[i]&31)<<6|t[i+1]&63;if(r>=128){e.push(String.fromCharCode(r&65535)),i+=2;continue}}}else if(t[i]<240){if(Di(t,i,2)){let r=(t[i]&15)<<12|(t[i+1]&63)<<6|t[i+2]&63;if(r>=2048&&(r&63488)!==55296){e.push(String.fromCharCode(r&65535)),i+=3;continue}}}else if(t[i]<248&&Di(t,i,3)){let r=(t[i]&7)<<18|(t[i+1]&63)<<12|(t[i+2]&63)<<6|t[i+3]&63;if(r>65536&&r<1114112){r-=65536,e.push(String.fromCharCode(r>>>10|55296)),e.push(String.fromCharCode(r&1023|56320)),i+=4;continue}}}e.push("\uFFFD"),++i}return e.join("")}var Bi=vn;var Ne=(function(){let o=new ArrayBuffer(2);return new DataView(o).setInt16(0,256,!0),new Int16Array(o)[0]===256})(),wi=class o{static parseScriptData(e,t,i){let n={};try{let r=o.parseValue(e,t,i),a=o.parseValue(e,t+r.size,i-r.size);if(typeof r.data!="string")return n;n[r.data]=a.data}catch(r){_.e("AMF",r.toString())}return n}static parseObject(e,t,i){if(i<3)throw new re("Data not enough when parse ScriptDataObject");let n=o.parseString(e,t,i),r=o.parseValue(e,t+n.size,i-n.size),a=r.objectEnd;return{data:{name:n.data,value:r.data},size:n.size+r.size,objectEnd:a}}static parseVariable(e,t,i){return o.parseObject(e,t,i)}static parseString(e,t,i){if(i<2)throw new re("Data not enough when parse String");let r=new DataView(e,t,i).getUint16(0,!Ne),a;return r>0?a=Bi(new Uint8Array(e,t+2,r)):a="",{data:a,size:2+r}}static parseLongString(e,t,i){if(i<4)throw new re("Data not enough when parse LongString");let r=new DataView(e,t,i).getUint32(0,!Ne),a;return r>0?a=Bi(new Uint8Array(e,t+4,r)):a="",{data:a,size:4+r}}static parseDate(e,t,i){if(i<10)throw new re("Data size invalid when parse Date");let n=new DataView(e,t,i),r=n.getFloat64(0,!Ne),a=n.getInt16(8,!Ne);return r+=a*60*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){if(i<1)throw new re("Data not enough when parse Value");let n=new DataView(e,t,i),r=1,a=n.getUint8(0),s,l=!1;try{switch(a){case 0:s=n.getFloat64(1,!Ne),r+=8;break;case 1:{s=!!n.getUint8(1),r+=1;break}case 2:{let c=o.parseString(e,t+1,i-1);s=c.data,r+=c.size;break}case 3:{s={};let c=0;for((n.getUint32(i-4,!Ne)&16777215)===9&&(c=3);r<i-4;){let u=o.parseObject(e,t+r,i-r-c);if(u.objectEnd)break;s[u.data.name]=u.data.value,r+=u.size}r<=i-3&&(n.getUint32(r-1,!Ne)&16777215)===9&&(r+=3);break}case 8:{s={},r+=4;let c=0;for((n.getUint32(i-4,!Ne)&16777215)===9&&(c=3);r<i-8;){let u=o.parseVariable(e,t+r,i-r-c);if(u.objectEnd)break;s[u.data.name]=u.data.value,r+=u.size}r<=i-3&&(n.getUint32(r-1,!Ne)&16777215)===9&&(r+=3);break}case 9:s=void 0,r=1,l=!0;break;case 10:{s=[];let c=n.getUint32(1,!Ne);r+=4;for(let u=0;u<c;u++){let h=o.parseValue(e,t+r,i-r);s.push(h.data),r+=h.size}break}case 11:{let c=o.parseDate(e,t+1,i-1);s=c.data,r+=c.size;break}case 12:{let c=o.parseString(e,t+1,i-1);s=c.data,r+=c.size;break}default:r=i,_.w("AMF","Unsupported AMF value type "+a)}}catch(c){_.e("AMF",c.toString())}return{data:s,size:r,objectEnd:l}}},Ir=wi;var Sn={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"},q=Sn;function Ur(o){return o.byteOffset%2===0&&o.byteLength%2===0}function Pr(o){return o.byteOffset%4===0&&o.byteLength%4===0}function Ii(o,e){for(let t=0;t<o.length;t++)if(o[t]!==e[t])return!1;return!0}function En(o,e){return Ii(o,e)}function Cn(o,e){let t=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/2),i=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);return Ii(t,i)}function Rn(o,e){let t=new Uint32Array(o.buffer,o.byteOffset,o.byteLength/4),i=new Uint32Array(e.buffer,e.byteOffset,e.byteLength/4);return Ii(t,i)}function kn(o,e){return o.byteLength!==e.byteLength?!1:Pr(o)&&Pr(e)?Rn(o,e):Ur(o)&&Ur(e)?Cn(o,e):En(o,e)}var ke=kn;var _e=(...o)=>{throw new Error("Callback function has not been implemented.")},We=(...o)=>{_.v("No operation callback invoked with arguments:",o)};function Vr(o){return Array.from(o).map(e=>e.toString(16).padStart(2,"0")).join(" ")}var Ui=(x=>(x[x.SequenceStart=0]="SequenceStart",x[x.CodedFrames=1]="CodedFrames",x[x.SequenceEnd=2]="SequenceEnd",x[x.Reserved3=3]="Reserved3",x[x.MultichannelConfig=4]="MultichannelConfig",x[x.Multitrack=5]="Multitrack",x[x.Reserved6=6]="Reserved6",x[x.ModEx=7]="ModEx",x[x.Reserved8=8]="Reserved8",x[x.Reserved9=9]="Reserved9",x[x.Reserved10=10]="Reserved10",x[x.Reserved11=11]="Reserved11",x[x.Reserved12=12]="Reserved12",x[x.Reserved13=13]="Reserved13",x[x.Reserved14=14]="Reserved14",x[x.Reserved15=15]="Reserved15",x))(Ui||{});var Or=(i=>(i[i.Unspecified=0]="Unspecified",i[i.Native=1]="Native",i[i.Custom=2]="Custom",i))(Or||{}),Nr=(A=>(A[A.FrontLeft=1]="FrontLeft",A[A.FrontRight=2]="FrontRight",A[A.FrontCenter=4]="FrontCenter",A[A.LowFrequency1=8]="LowFrequency1",A[A.BackLeft=16]="BackLeft",A[A.BackRight=32]="BackRight",A[A.FrontLeftCenter=64]="FrontLeftCenter",A[A.FrontRightCenter=128]="FrontRightCenter",A[A.BackCenter=256]="BackCenter",A[A.SideLeft=512]="SideLeft",A[A.SideRight=1024]="SideRight",A[A.TopCenter=2048]="TopCenter",A[A.TopFrontLeft=4096]="TopFrontLeft",A[A.TopFrontCenter=8192]="TopFrontCenter",A[A.TopFrontRight=16384]="TopFrontRight",A[A.TopBackLeft=32768]="TopBackLeft",A[A.TopBackCenter=65536]="TopBackCenter",A[A.TopBackRight=131072]="TopBackRight",A[A.LowFrequency2=262144]="LowFrequency2",A[A.TopSideLeft=524288]="TopSideLeft",A[A.TopSideRight=1048576]="TopSideRight",A[A.BottomFrontCenter=2097152]="BottomFrontCenter",A[A.BottomFrontLeft=4194304]="BottomFrontLeft",A[A.BottomFrontRight=8388608]="BottomFrontRight",A))(Nr||{}),$r=(k=>(k[k.FrontLeft=0]="FrontLeft",k[k.FrontRight=1]="FrontRight",k[k.FrontCenter=2]="FrontCenter",k[k.LowFrequency1=3]="LowFrequency1",k[k.BackLeft=4]="BackLeft",k[k.BackRight=5]="BackRight",k[k.FrontLeftCenter=6]="FrontLeftCenter",k[k.FrontRightCenter=7]="FrontRightCenter",k[k.BackCenter=8]="BackCenter",k[k.SideLeft=9]="SideLeft",k[k.SideRight=10]="SideRight",k[k.TopCenter=11]="TopCenter",k[k.TopFrontLeft=12]="TopFrontLeft",k[k.TopFrontCenter=13]="TopFrontCenter",k[k.TopFrontRight=14]="TopFrontRight",k[k.TopBackLeft=15]="TopBackLeft",k[k.TopBackCenter=16]="TopBackCenter",k[k.TopBackRight=17]="TopBackRight",k[k.LowFrequency2=18]="LowFrequency2",k[k.TopSideLeft=19]="TopSideLeft",k[k.TopSideRight=20]="TopSideRight",k[k.BottomFrontCenter=21]="BottomFrontCenter",k[k.BottomFrontLeft=22]="BottomFrontLeft",k[k.BottomFrontRight=23]="BottomFrontRight",k[k.Unused=254]="Unused",k[k.Unknown=255]="Unknown",k))($r||{});function Pi(o){switch(o){case 0:return"SCE";case 1:return"CPE";case 2:return"CCE";case 3:return"LFE";case 4:return"DSE";case 5:return"PCE";case 6:return"FIL";case 7:return"END";default:return`unknown(${o})`}}function Hr(o){let e=o;return e._buffer_index*8-e._current_word_bits_left}function Gr(o){return o._total_bits-Hr(o)}function se(o,e){return e<0||e>32||Gr(o)<e?null:o.readBits(e)}function at(o){let e=se(o,1);return e===null?null:e===1}function Vi(o){let e=o.readBits(4),t=o.readBits(2),i=o.readBits(4),n=o.readBits(4),r=o.readBits(4),a=o.readBits(4),s=o.readBits(2),l=o.readBits(3),c=o.readBits(4);return`PCE instanceTag=${e} objectType=${t} samplingIndex=${i} front=${n} side=${r} back=${a} lfe=${s} assoc=${l} cc=${c}`}function Mn(o){let e=[[1,{front:[!1],side:[],back:[],lfeCount:0}],[2,{front:[!0],side:[],back:[],lfeCount:0}],[3,{front:[!1,!0],side:[],back:[],lfeCount:0}],[4,{front:[!1,!0],side:[],back:[!1],lfeCount:0}],[5,{front:[!1,!0],side:[],back:[!0],lfeCount:0}],[6,{front:[!1,!0],side:[!0],back:[],lfeCount:1}],[7,{front:[!1,!0,!0],side:[!0],back:[],lfeCount:1}]],t=(i,n)=>i.length===n.length&&i.every((r,a)=>r===n[a]);for(let[i,n]of e)if(t(o.front,n.front)&&t(o.side,n.side)&&t(o.back,n.back)&&o.lfeCount===n.lfeCount)return i;return null}function Dn(o,e){let t=se(o,4),i=se(o,2),n=se(o,4),r=se(o,4),a=se(o,4),s=se(o,4),l=se(o,2),c=se(o,3),u=se(o,4);if(t===null||i===null||n===null||r===null||a===null||s===null||l===null||c===null||u===null||n!==e)return null;let h=at(o);if(h===null||h&&!Be(o,4))return null;let f=at(o);if(f===null||f&&!Be(o,4))return null;let p=at(o);if(p===null||p&&!Be(o,3))return null;let y=0,m=[],x=[],b=[],v=[],S=(A,M)=>{for(let k=0;k<A;k++){let I=at(o),H=se(o,4);if(I===null||H===null)return!1;M.push(`${I?"CPE":"SCE"}:${H}`),y+=I?2:1}return!0};if(!S(r,m)||!S(a,x)||!S(s,b))return null;for(let A=0;A<l;A++){let M=se(o,4);if(M===null)return null;v.push(`LFE:${M}`),y++}for(let A=0;A<c;A++)if(!Be(o,4))return null;for(let A=0;A<u;A++)if(!Be(o,5))return null;let T=(8-Hr(o)%8)%8;if(T>0&&!Be(o,T))return null;let V=se(o,8);if(V===null)return null;let w=[];for(let A=0;A<V;A++){let M=se(o,8);if(M===null)return null;w.push(M)}let D=w.map(A=>A>=32&&A<=126?String.fromCharCode(A):".").join("");return{channelCount:y,layout:{front:m.map(A=>A.startsWith("CPE:")),side:x.map(A=>A.startsWith("CPE:")),back:b.map(A=>A.startsWith("CPE:")),lfeCount:v.length},description:`PCE instanceTag=${t} objectType=${i} samplingIndex=${n} front=${r}[${m.join(",")}] side=${a}[${x.join(",")}] back=${s}[${b.join(",")}] lfe=${l}[${v.join(",")}] assoc=${c} cc=${u} commentBytes=${V} comment="${D}"`}}function Bn(o,e){let t=new he(o),i=l=>(t.destroy(),l);if(!Be(t,13))return i(null);let n=at(t);if(n===null)return i(null);let r=at(t);if(r===null||r&&!Be(t,14))return i(null);let a=at(t);if(a===null)return i(null);let s=Dn(t,e);return i(s?ae(j({},s),{description:`${s.description} frameLengthFlag=${Number(n)} dependsOnCoreCoder=${Number(r)} extensionFlag=${Number(a)}`}):null)}function Be(o,e){let t=e;for(;t>0;){let i=Math.min(t,32);if(se(o,i)===null)return!1;t-=i}return!0}function wn(o){if(!o||o.byteLength===0)return"empty-payload";let e=new he(o);try{let t=e.readBits(3),i=Pi(t);if(t===5)return`firstElement=${Vi(e)}`;if(t!==6)return`firstElement=${i}`;let n=e.readBits(4);n===15&&(n+=e.readBits(8)-1);let r="",a="";if(n>0){let u=e.readBits(4),h=n*8-4;if(u===13)r=" SBR=EXT_SBR_DATA",Be(e,h);else if(u===14)r=" SBR=EXT_SBR_DATA_CRC",Be(e,h);else{let f=[],p=h;for(;p>=8;)f.push(e.readBits(8)),p-=8;p>0&&Be(e,p);let y=f.map(m=>m>=32&&m<=126?String.fromCharCode(m):".").join("");/[A-Za-z]{3}/.test(y)&&(a=` fillAscii="${y.trim()}"(encoder-padding)`)}}let s=e.readBits(3),l=Pi(s),c=s===1?`${l}(stereo-pair)`:s===0?`${l}(mono)`:s===3?`${l}(low-freq)`:l;return s===5?`firstElement=FIL fillBytes=${n}${r}${a} nextElement=${Vi(e)}`:`firstElement=FIL fillBytes=${n}${r}${a} nextElement=${c}`}catch(t){return`probeError=${(t==null?void 0:t.message)||String(t)}`}finally{e.destroy()}}function In(o){if(!o||o.byteLength===0)return"elements=0 complete=true empty-payload";let e=new he(o),t=[],i=0,n=!1,r="";try{for(;Gr(e)>=3;){let a=se(e,3);if(a===null){r="truncated-element-id";break}let s=Pi(a);if(a===7){t.push("END(7)"),n=!0;break}if(a===6){let l=se(e,4);if(l===null){t.push("FIL(6,truncated-count)"),r="truncated-fill-count";break}if(l===15){let u=se(e,8);if(u===null){t.push("FIL(6,truncated-escape)"),r="truncated-fill-escape";break}l+=u-1}let c=`fillBytes=${l}`;if(l>0){let u=se(e,4);if(u===null){t.push(`FIL(6,${c},truncated-extType)`),r="truncated-fill-extType";break}c+=` extType=0x${u.toString(16)}`;let h=l*8-4;if(!Be(e,h)){t.push(`FIL(6,${c},truncated-payload)`),r="truncated-fill-payload";break}}t.push(`FIL(6,${c})`);continue}if(a===0||a===1||a===3){let l=se(e,4);if(l===null){t.push(`${s}(${a},truncated-tag)`),r="truncated-audio-element-tag";break}i+=a===1?2:1,t.push(`${s}(${a},tag=${l})`),r=`${s}-payload-not-skipped`;break}if(a===5){t.push(`PCE(5,${Vi(e)})`),r="pce-payload-not-skipped";break}t.push(`${s}(${a})`),r=`${s}-payload-not-skipped`;break}return!n&&!r&&(r="no-end-element-before-eof"),`elements=${t.length} complete=${n} knownChannels=${i} sequence=[${t.join(" ")}] stopReason=${r}`}catch(a){return`elements=${t.length} complete=false knownChannels=${i} sequence=[${t.join(" ")}] probeError=${(a==null?void 0:a.message)||String(a)}`}finally{e.destroy()}}var qr=(a=>(a[a.Unknown=0]="Unknown",a[a.Mp3=1]="Mp3",a[a.Aac=2]="Aac",a[a.Opus=3]="Opus",a[a.Flac=4]="Flac",a[a.Lpcm=5]="Lpcm",a))(qr||{}),Zt={type:"audio",codecType:0,codec:"",originalCodec:"",aacChannelConfigWasInBand:!1,trackId:NaN,timescale:NaN,preSkipSamples:0,duration:NaN,audioSampleRate:NaN,inputSampleRate:NaN,outputGain:0,channelCount:NaN,bitsPerSample:NaN,littleEndian:!1,refFrameDuration:NaN},ti=(a=>(a[a.Unknown=0]="Unknown",a[a.Avc=1]="Avc",a[a.Hevc=2]="Hevc",a[a.Vp8=3]="Vp8",a[a.Vp9=4]="Vp9",a[a.Av1=5]="Av1",a))(ti||{}),Jt={type:"video",codecType:0,codec:"",trackId:NaN,timescale:NaN,duration:NaN,codecWidth:NaN,codecHeight:NaN,presentWidth:NaN,presentHeight:NaN,profile:"",level:"",bitDepth:NaN,chromaFormat:NaN,colorRange:NaN,colourPrimaries:NaN,transferCharacteristics:NaN,matrixCoefficients:NaN,sarRatio:{width:NaN,height:NaN},frameRate:{fixed:!1,fps:NaN,fps_num:NaN,fps_den:NaN},refFrameDuration:NaN};function Un(o,e){return o[e]<<24|o[e+1]<<16|o[e+2]<<8|o[e+3]}function ei(o,e){return o.getInt8(e)<<16|o.getUint8(e+1)<<8|o.getUint8(e+2)}var C=class C{constructor(e,t,i){d(this,"_config");d(this,"_remuxer");d(this,"_onError",_e);d(this,"_onMediaInfo",_e);d(this,"_onScriptMetadata",_e);d(this,"_onScriptData",_e);d(this,"_onTrackMetadata",_e);d(this,"_onTrackData",_e);d(this,"_onVideoTracksDiscovered",We);d(this,"_dataOffset");d(this,"_firstParse",!0);d(this,"_hasAudio");d(this,"_hasVideo");d(this,"_hasAudioFlagOverrided",!1);d(this,"_hasVideoFlagOverrided",!1);d(this,"_mediaInfo");d(this,"_scriptData");d(this,"_audioMetadata");d(this,"_videoMetadataByTrackId",new Map);d(this,"_naluLengthSize",4);d(this,"_timestampBase",0);d(this,"_timescale",1e3);d(this,"_duration",0);d(this,"_durationOverrided",!1);d(this,"_referenceFrameRate",{fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3});d(this,"_videoTracksById",new Map);d(this,"_currentVideoTrackId");d(this,"_audioTrack",{type:"audio",id:2,sequenceNumber:0,frames:[],length:0});d(this,"_hasLoggedFirstAacPayloadProbe",!1);d(this,"_hasLoggedAacPceDetection",!1);d(this,"_hasLoggedAacSbrDetection",!1);d(this,"_hasObservedAacPce",!1);d(this,"_pendingAacMultichannelChannelCount");d(this,"_hasIgnoredAacMultichannelConfig",!1);d(this,"_aacPayloadProbeFrameIndex",0);this._config=t,this._remuxer=i,this._dataOffset=e.dataOffset,this._hasAudio=e.hasAudioTrack,this._hasVideo=e.hasVideoTrack,this._mediaInfo=new Ie,this._mediaInfo.hasAudio=e.hasAudioTrack,this._mediaInfo.hasVideo=e.hasVideoTrack}destroy(){this._onError=We,this._onMediaInfo=We,this._onScriptMetadata=We,this._onScriptData=We,this._onTrackMetadata=We,this._onTrackData=We,this._onVideoTracksDiscovered=We,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=!1,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0}_probeAacPayload(e){if(!e||e.byteLength===0)return;this._aacPayloadProbeFrameIndex++;let t=wn(e),i=In(e),n=Array.from(e.subarray(0,Math.min(8,e.byteLength))).map(s=>s.toString(16).padStart(2,"0")).join(" ");this._hasLoggedFirstAacPayloadProbe||(_.v(C.TAG,`First AAC CodedFrame: size=${e.byteLength} bytes[0..7]=${n} ${t}`),this._hasLoggedFirstAacPayloadProbe=!0),this._aacPayloadProbeFrameIndex<=5&&_.v(C.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] rawDataBlock ${i}`);let r=t.includes("PCE"),a=t.includes("CPE(stereo-pair)");r&&(this._hasObservedAacPce=!0),!this._hasLoggedAacPceDetection&&r&&(_.v(C.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] contains visible ${t}`),this._hasLoggedAacPceDetection=!0),!this._hasLoggedAacSbrDetection&&t.includes("SBR=")&&(_.v(C.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] backward-compatible SBR detected: ${t}`),this._hasLoggedAacSbrDetection=!0),r?this._applyPendingAacMultichannelConfig():a&&this._ignorePendingAacMultichannelConfig(t)}static probe(e){let t=new Uint8Array(e);if(t.byteLength<9)return{needMoreData:!0};let i={match:!1};if(t[0]!==70||t[1]!==76||t[2]!==86||t[3]!==1)return i;let n=(t[4]&4)>>>2!==0,r=(t[4]&1)!==0,a=Un(t,5);return a<9?i:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:n,hasVideoTrack:r}}bindDataSource(e){return e.onDataArrival=this.parseChunks.bind(this),this}set remuxer(e){this._remuxer=e}get onTrackMetadata(){return this._onTrackMetadata}set onTrackMetadata(e){this._onTrackMetadata=e}get onMediaInfo(){return this._onMediaInfo}set onMediaInfo(e){this._onMediaInfo=e}get onScriptMetadata(){return this._onScriptMetadata}set onScriptMetadata(e){this._onScriptMetadata=e}get onScriptData(){return this._onScriptData}set onScriptData(e){this._onScriptData=e}get onError(){return this._onError}set onError(e){this._onError=e}get onTrackData(){return this._onTrackData}set onTrackData(e){this._onTrackData=e}get onVideoTracksDiscovered(){return this._onVideoTracksDiscovered}set onVideoTracksDiscovered(e){this._onVideoTracksDiscovered=e}get timestampBase(){return this._timestampBase}set timestampBase(e){this._timestampBase=e}get overridedDuration(){return this._duration}set overridedDuration(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}set overridedHasAudio(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}set overridedHasVideo(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}resetMediaInfo(){this._mediaInfo=new Ie}_getOrCreateVideoTrack(e){return this._videoTracksById.has(e)||this._videoTracksById.set(e,{type:"video",id:e,sequenceNumber:0,frames:[],length:0}),this._videoTracksById.get(e)}_getDefaultVideoTrack(){if(this._videoTracksById.has(0))return this._videoTracksById.get(0);if(this._videoTracksById.size>0){let e=Math.min(...this._videoTracksById.keys());return this._videoTracksById.get(e)}return this._getOrCreateVideoTrack(0)}_getCurrentVideoTrack(){return this._currentVideoTrackId!==void 0?this._getOrCreateVideoTrack(this._currentVideoTrackId):{type:"video",id:-1,sequenceNumber:0,frames:[],length:0}}_flushPendingTrackDataBeforeMetadataRefresh(){let e=this._getCurrentVideoTrack();this._audioTrack.frames.length===0&&e.frames.length===0||this._onTrackData(this._audioTrack,e)}_dispatchVideoTrackMetadata(e){this._currentVideoTrackId===void 0&&(this._currentVideoTrackId=e.trackId),e.trackId===this._currentVideoTrackId&&(this._remuxer.isVideoMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(e)),this._onVideoTracksDiscovered([...this._videoMetadataByTrackId.values()])}parseChunks(e,t){let i=0;if(t===0)if(e.byteLength>13){let n=C.probe(e);if("match"in n&&n.match===!0)i=n.dataOffset,this._hasAudio=n.hasAudioTrack&&this._hasAudio,this._hasVideo=n.hasVideoTrack&&this._hasVideo;else return 0}else return 0;for(this._firstParse&&(this._firstParse=!1,t+i!==this._dataOffset&&_.w(C.TAG,"First time parsing but chunk byteStart invalid!"),new DataView(e,i).getUint32(0,!1)!==0&&_.w(C.TAG,"PrevTagSize0 !== 0 !!!"),i+=4);i<e.byteLength;){let n=new DataView(e,i);if(i+11+4>e.byteLength)break;let r=n.getUint8(0),a=n.getUint32(0,!1)&16777215;if(i+11+a+4>e.byteLength)break;if(r!==8&&r!==9&&r!==18){_.w(C.TAG,`Unsupported tag type ${r}, skipped`),i+=11+a+4;continue}let s=n.getUint8(4),l=n.getUint8(5),c=n.getUint8(6),u=n.getUint8(7),h=c|l<<8|s<<16|u<<24;(n.getUint32(7,!1)&16777215)!==0&&_.w(C.TAG,"Meet tag which has StreamID != 0!");let p=i+11;switch(r){case 8:this._hasAudio&&this._parseAudioTagData(e,p,a,h);break;case 9:this._hasVideo&&this._parseVideoTagData(e,p,a,h,t+i);break;case 18:this._parseScriptTagData(e,p,a);break}let y=n.getUint32(11+a,!1);y!==11+a&&_.w(C.TAG,`Invalid PrevTagSize ${y}`),i+=11+a+4}return this._onTrackData(this._audioTrack,this._getCurrentVideoTrack()),i}_parseScriptTagData(e,t,i){let n=Ir.parseScriptData(e,t,i);if(n.hasOwnProperty("onMetaData")){if(n.onMetaData==null||typeof n.onMetaData!="object"||Array.isArray(n.onMetaData)){_.w(C.TAG,"Invalid onMetaData structure!");return}this._scriptData&&_.w(C.TAG,"Found another onMetaData tag!"),this._scriptData=n;let r=this._scriptData.onMetaData;if(this._onScriptMetadata&&this._onScriptMetadata(Object.assign({},r)),typeof r.hasAudio=="boolean"&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),typeof r.hasVideo=="boolean"&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),typeof r.audiodatarate=="number"&&(this._mediaInfo.audioDataRate=r.audiodatarate),typeof r.videodatarate=="number"&&(this._mediaInfo.videoDataRate=r.videodatarate),typeof r.width=="number"&&(this._mediaInfo.width=r.width),typeof r.height=="number"&&(this._mediaInfo.height=r.height),typeof r.duration=="number"){if(!this._durationOverrided){let a=Math.floor(r.duration*this._timescale);this._duration=a,this._mediaInfo.duration=a}}else this._mediaInfo.duration=0;if(typeof r.framerate=="number"){let a=Math.floor(r.framerate*1e3);if(a>0){let s=a/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=s,this._referenceFrameRate.fps_num=a,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=s}}if(typeof r.keyframes=="object"){this._mediaInfo.hasKeyframesIndex=!0;let a=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(a),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._mediaInfo.metadata=r,_.v(C.TAG,"Parsed flv.onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(n).length>0&&this._onScriptData&&this._onScriptData(Object.assign({},n))}_parseKeyframesIndex(e){let t=[],i=[];for(let n=1;n<e.times.length;n++){let r=this._timestampBase+Math.floor(e.times[n]*1e3);t.push(r),i.push(e.filepositions[n])}return{times:t,filepositions:i}}_parseAudioTagData(e,t,i,n){if(i<=1){_.w(C.TAG,"Flv: Invalid audio packet, missing SoundData payload!");return}if(this._hasAudioFlagOverrided===!0&&this._hasAudio===!1)return;let a=new DataView(e,t,i).getUint8(0),s=a>>>4;if(s===9){if(i<=5){_.w(C.TAG,"Flv: Invalid audio packet, missing AudioFourCC in Ehnanced FLV payload!");return}let y=a&15,m=String.fromCharCode(...new Uint8Array(e,t,i).slice(1,5));switch(m){case"Opus":this._parseEnhancedOpusAudioPacket(e,t+5,i-5,n,y);break;case"fLaC":this._parseEnhancedFlacAudioPacket(e,t+5,i-5,n,y);break;case"mp4a":this._parseEnhancedAacAudioPacket(e,t+5,i-5,n,y);break;default:this._onError(q.CODEC_UNSUPPORTED,`${C.TAG}._parseAudioTagData() - Unsupported FOURCC ${m}`)}return}if(s!==2&&s!==3&&s!==10){this._onError(q.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+s);return}let l=0,c=(a&12)>>>2;if(c>=0&&c<=4)l=C._flvSoundRateTable[c];else{this._onError(q.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+c);return}let u=(a&2)>>>1,h=a&1,f=this._audioMetadata,p=this._audioTrack;if(f||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),f=this._audioMetadata=ae(j({},Zt),{type:"audio",trackId:p.id,timescale:this._timescale,duration:this._duration,audioSampleRate:l,channelCount:h===0?1:2})),s===10){f.codecType=2;let y=this._parseLegacyAacAudioPacket(e,t+1,i-1);if(y==null)return;if(y.packetType===0){let m=y.data;if(f.codecConfig){if(ke(m.config,f.codecConfig))return;_.w(C.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}f.audioSampleRate=m.samplingRate,f.channelCount=m.channelCount,f.codec=m.codec,f.originalCodec=m.originalCodec,f.codecConfig=m.config,f.aacChannelConfigWasInBand=m.channelConfigWasInBand,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=m.channelConfigHasPce,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0,f.refFrameDuration=1024/f.audioSampleRate*f.timescale,_.v(C.TAG,"Parsed AudioSpecificConfig"),this._remuxer.isAudioMetadataDispatched&&(_.v(C.TAG,"Dispatching regular AAC track data before metadata refresh"),this._flushPendingTrackDataBeforeMetadataRefresh()),_.v(C.TAG,`Dispatching regular AAC track metadata codec=${f.codec} channels=${f.channelCount} sampleRate=${f.audioSampleRate}`),this._onTrackMetadata(f);let x=this._mediaInfo;x.audioCodec=f.originalCodec,x.audioSampleRate=f.audioSampleRate,x.audioChannelCount=f.channelCount,x.hasVideo?x.videoCodec!=null&&(x.mimeType='video/x-flv; codecs="'+x.videoCodec+","+x.audioCodec+'"'):x.mimeType='video/x-flv; codecs="'+x.audioCodec+'"',x.isComplete()&&(_.v(C.TAG,`Dispatching regular AAC media info codec=${x.audioCodec} channels=${x.audioChannelCount} mimeType=${x.mimeType}`),this._onMediaInfo(x))}else if(y.packetType===1){let m=y.data;this._probeAacPayload(m);let x=this._timestampBase+n,b={unit:m,length:m.byteLength,dts:x,pts:x};p.frames.push(b),p.length+=m.length}else _.e(C.TAG,`Flv: Unsupported AAC data type ${y.packetType}`)}else if(s===2){if(f.codecType=1,!f.codec){let b=this._parseLegacyMp3FrameData(e,t+1,i-1,!0);if(b==null)return;f.audioSampleRate=b.samplingRate,f.channelCount=b.channelCount,f.codec=b.codec,f.originalCodec=b.originalCodec,f.refFrameDuration=1152/f.audioSampleRate*f.timescale,_.v(C.TAG,"Parsed MPEG Audio Frame Header"),this._onTrackMetadata(f);let v=this._mediaInfo;v.audioCodec=f.codec,v.audioSampleRate=f.audioSampleRate,v.audioChannelCount=f.channelCount,v.audioDataRate=b.bitRate,v.hasVideo?v.videoCodec!=null&&(v.mimeType='video/x-flv; codecs="'+v.videoCodec+","+v.audioCodec+'"'):v.mimeType='video/x-flv; codecs="'+v.audioCodec+'"',v.isComplete()&&this._onMediaInfo(v)}let y=this._parseLegacyMp3FrameData(e,t+1,i-1,!1);if(y==null)return;let m=this._timestampBase+n,x={unit:y,length:y.byteLength,dts:m,pts:m};p.frames.push(x),p.length+=y.length}else if(s===3){if(f.codecType=5,!f.codec){f.audioSampleRate=l,f.bitsPerSample=(u+1)*8,f.littleEndian=!0,f.codec="ipcm",f.originalCodec="ipcm",this._onTrackMetadata(f);let b=this._mediaInfo;b.audioCodec=f.codec,b.audioSampleRate=f.audioSampleRate,b.audioChannelCount=f.channelCount,b.audioDataRate=f.bitsPerSample*f.audioSampleRate,b.hasVideo?b.videoCodec!=null&&(b.mimeType='video/x-flv; codecs="'+b.videoCodec+","+b.audioCodec+'"'):b.mimeType='video/x-flv; codecs="'+b.audioCodec+'"',b.isComplete()&&this._onMediaInfo(b)}let y=new Uint8Array(e,t+1,i-1),m=this._timestampBase+n,x={unit:y,length:y.byteLength,dts:m,pts:m};p.frames.push(x),p.length+=y.length}}_parseLegacyAacAudioPacket(e,t,i){if(i<=1){_.w(C.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");return}let n=new Uint8Array(e,t,i),r=n[0];if(r===0){let a=this._parseAacAudioSpecificConfig(e,t+1,i-1);return a===void 0?void 0:{packetType:0,data:a}}else return{packetType:r,data:n.subarray(1)}}_parseAacAudioSpecificConfig(e,t,i){let n=new Uint8Array(e,t,i),r=n[0]>>>3,a=(n[0]&7)<<1|n[1]>>>7;if(a>=Ue.length){this._onError(q.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");return}let s=Ue[a],l=[0,1,2,3,4,5,6,8],c=(n[1]&120)>>>3;if(c<0||c>=l.length){this._onError(q.FORMAT_ERROR,"Flv: AAC invalid channel configuration");return}if(c===0){let h=Bn(n,a);if(h&&h.channelCount>0){_.v(C.TAG,`PCE_CONFIRMED: AAC sequence header contains Program Config Element; ${h.description}; channelCount=${h.channelCount}; ascBytes=${n.length}; asc=${Vr(n)}`);let p=Mn(h.layout);if(p===null){this._onError(q.FORMAT_UNSUPPORTED,`Flv: AAC PCE describes a custom ${h.channelCount}-channel layout that cannot be represented by a standard channelConfiguration; MSE playback requires transcoding`);return}let y=new Uint8Array([r<<3|(a&14)>>>1,(a&1)<<7|p<<3]);return _.v(C.TAG,`AAC_PCE_NORMALIZED: replaced standard-equivalent PCE with channelConfig=${p}; asc=${Vr(y)}`),{config:y,samplingRate:s,channelCount:h.channelCount,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+r,channelConfigWasInBand:!0,channelConfigHasPce:!0}}return _.w(C.TAG,"Flv: AAC channel config 0 (in-band) detected, synthesising clean stereo AudioSpecificConfig"),{config:new Uint8Array([r<<3|(a&14)>>>1,(a&1)<<7|16]),samplingRate:s,channelCount:2,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+r,channelConfigWasInBand:!0,channelConfigHasPce:!1}}let u=new ut(new ct(new Uint8Array(e,t,i)));return{config:Uint8Array.from(u.config),samplingRate:u.sampling_rate,channelCount:u.channel_count,codec:u.codec_mimetype,originalCodec:u.original_codec_mimetype,channelConfigWasInBand:!1,channelConfigHasPce:!1}}_parseLegacyMp3FrameData(e,t,i,n){if(i<4){_.w(C.TAG,"Flv: Invalid MP3 packet, header missing!");return}let r=new Uint8Array(e,t,i),a;if(n){if(r[0]!==255)return;let s=r[1]>>>3&3,l=(r[1]&6)>>1,c=(r[2]&240)>>>4,u=(r[2]&12)>>>2,f=(r[3]>>>6&3)!==3?2:1,p=0,y=0,m=34,x="mp3";switch(s){case 0:p=C._mpegAudioV25SampleRateTable[u];break;case 2:p=C._mpegAudioV20SampleRateTable[u];break;case 3:p=C._mpegAudioV10SampleRateTable[u];break}switch(l){case 1:m=34,c<C._mpegAudioL3BitRateTable.length&&(y=C._mpegAudioL3BitRateTable[c]);break;case 2:m=33,c<C._mpegAudioL2BitRateTable.length&&(y=C._mpegAudioL2BitRateTable[c]);break;case 3:m=32,c<C._mpegAudioL1BitRateTable.length&&(y=C._mpegAudioL1BitRateTable[c]);break}a={bitRate:y,samplingRate:p,channelCount:f,codec:x,originalCodec:x}}else a=r;return a}_parseAudioMultichannelConfig(e,t,i){var c,u;let n=_.scope(C.TAG,"_parseAudioMultichannelConfig()");if(i<2){n.w(`payload too short (${i} bytes), ignoring`);return}let r=new DataView(e,t,i),a=r.getUint8(0),s=r.getUint8(1);if(a===1&&i<6){n.w(`Native order requires 6 bytes, got ${i}, ignoring`);return}if(a===2&&i<2+s){n.w(`Custom mapping requires ${2+s} bytes, got ${i}, ignoring`);return}let l=(c=Or[a])!=null?c:String(a);if(n.v(`audioChannelOrder=${l} channelCount=${s}`),a===1){let h=r.getUint32(2,!1),f=[];for(let[p,y]of Object.entries(Nr))typeof y=="number"&&(h&y)!==0&&f.push(p);n.v(`Native audioChannelFlags=0x${h.toString(16).padStart(6,"0")} channels=[${f.join(", ")}]`)}else if(a===2){let h=[];for(let f=0;f<s;f++){let p=r.getUint8(2+f);h.push(`ch${f}=${(u=$r[p])!=null?u:`0x${p.toString(16)}`}`)}n.v(`Custom mapping=[${h.join(", ")}]`)}this._handleAacMultichannelConfig(s,n)}_handleAacMultichannelConfig(e,t){var a,s,l,c;let i=this._audioMetadata;if(!i||e<=0){t.v(`ignoring MultichannelConfig channelCount=${e}, current channelCount=${(a=i==null?void 0:i.channelCount)!=null?a:"undefined"}`);return}if(i.codecType!==2||!i.codecConfig||i.codecConfig.length<2){t.v(`ignoring MultichannelConfig channelCount=${e}, codecType=${(s=qr[i.codecType])!=null?s:i.codecType} codecConfigLength=${(c=(l=i.codecConfig)==null?void 0:l.length)!=null?c:0}`);return}let n=(i.codecConfig[1]&120)>>>3,r=i.aacChannelConfigWasInBand;if(i.channelCount===e){t.v(`ignoring MultichannelConfig channelCount=${e}, current channelCount=${i.channelCount} channelConfig=${n} channelConfigWasInBand=${r}`);return}if(r&&e>2){let u=i.codecConfig[0]>>>3;if(u===29){t.v(`channelConfig=0 + audioObjectType=${Tt[u]}(${u}) = HE-AAC v2 PS, ignoring MultichannelConfig channelCount=${e}, keeping channelCount=${i.channelCount}`);return}if(!this._hasObservedAacPce){if(this._hasIgnoredAacMultichannelConfig){t.v(`channelConfig=0 + stereo AAC evidence without PCE, treating MultichannelConfig channelCount=${e} as advisory, keeping channelCount=${i.channelCount}`);return}this._pendingAacMultichannelChannelCount=e,t.v(`channelConfig=0 + audioObjectType=${Tt[u]}(${u}), deferring MultichannelConfig channelCount=${e} until AAC PCE is observed`);return}t.v(`original channelConfig=0 + observed AAC PCE, honouring MultichannelConfig channelCount=${e}`)}this._rewriteAacChannelConfig(e,n,t),this._pendingAacMultichannelChannelCount=void 0,i.channelCount=e,this._mediaInfo.audioChannelCount=e,t.v(`updated audioMetadata.channelCount \u2192 ${e}, re-dispatching metadata`),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(i)}_rewriteAacChannelConfig(e,t,i){let n=this._audioMetadata;if(!(n!=null&&n.codecConfig))return;let a=[0,1,2,3,4,5,6,8].indexOf(e);if(a>0){let s=Uint8Array.from(n.codecConfig);s[1]=s[1]&135|(a&15)<<3,n.codecConfig=s,i.v(`updated AAC AudioSpecificConfig channelConfig ${t}\u2192${a} for channelCount=${e}`)}else i.w(`channelCount=${e} has no standard AAC channelConfig mapping, AudioSpecificConfig unchanged`)}_ignorePendingAacMultichannelConfig(e){if(this._pendingAacMultichannelChannelCount===void 0||this._hasObservedAacPce||this._hasIgnoredAacMultichannelConfig)return;let t=this._audioMetadata;if(!(t!=null&&t.codecConfig)||t.codecType!==2||!t.aacChannelConfigWasInBand)return;let i=this._pendingAacMultichannelChannelCount;this._hasIgnoredAacMultichannelConfig=!0,_.scope(C.TAG,"_parseAudioMultichannelConfig()").v(`stereo AAC payload without PCE (${e}), treating pending MultichannelConfig channelCount=${i} as advisory, keeping channelCount=${t.channelCount}`)}_applyPendingAacMultichannelConfig(){if(!this._hasObservedAacPce||this._pendingAacMultichannelChannelCount===void 0)return;let e=this._pendingAacMultichannelChannelCount;this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1;let t=_.scope(C.TAG,"_parseAudioMultichannelConfig()");t.v(`observed AAC PCE, applying pending MultichannelConfig channelCount=${e}`),this._handleAacMultichannelConfig(e,t)}_parseEnhancedAacAudioPacket(e,t,i,n,r){var l;let a=this._audioMetadata,s=this._audioTrack;if(a||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),a=this._audioMetadata=ae(j({},Zt),{type:"audio",trackId:s.id,timescale:this._timescale,duration:this._duration})),a.codecType=2,r===0){let c=this._parseAacAudioSpecificConfig(e,t,i);if(c==null)return;let u=new Uint8Array(c.config);if(a.codecConfig){if(ke(u,a.codecConfig))return;_.w(C.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}a.audioSampleRate=c.samplingRate,a.channelCount=c.channelCount,a.codec=c.codec,a.originalCodec=c.originalCodec,a.codecConfig=u,a.aacChannelConfigWasInBand=c.channelConfigWasInBand,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=c.channelConfigHasPce,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0,a.refFrameDuration=1024/a.audioSampleRate*a.timescale,_.v(C.TAG,"Parsed Enhanced FLV AAC AudioSpecificConfig"),this._remuxer.isAudioMetadataDispatched&&(_.v(C.TAG,"Dispatching enhanced AAC track data before metadata refresh"),this._flushPendingTrackDataBeforeMetadataRefresh()),_.v(C.TAG,`Dispatching enhanced AAC track metadata codec=${a.codec} channels=${a.channelCount} sampleRate=${a.audioSampleRate}`),this._onTrackMetadata(a);let h=this._mediaInfo;h.audioCodec=a.originalCodec,h.audioSampleRate=a.audioSampleRate,h.audioChannelCount=a.channelCount,h.hasVideo?h.videoCodec!=null&&(h.mimeType='video/x-flv; codecs="'+h.videoCodec+","+h.audioCodec+'"'):h.mimeType='video/x-flv; codecs="'+h.audioCodec+'"',h.isComplete()&&(_.v(C.TAG,`Dispatching enhanced AAC media info codec=${h.audioCodec} channels=${h.audioChannelCount} mimeType=${h.mimeType}`),this._onMediaInfo(h))}else if(r===1){let c=new Uint8Array(e,t,i);this._probeAacPayload(c);let u=this._timestampBase+n,h={unit:c,length:c.byteLength,dts:u,pts:u};s.frames.push(h),s.length+=c.length}else if(r!==2)if(r===4)this._parseAudioMultichannelConfig(e,t,i);else{let c=(l=Ui[r])!=null?l:String(r);_.w(C.TAG,`_parseEnhancedAacAudioPacket(): unsupported FlvAudioPacketType=${c} ts=${n} offset=${t} size=${i} action=drop`)}}_parseEnhancedOpusAudioPacket(e,t,i,n,r){var a;if(r===0)this._parseOpusSequenceHeader(e,t,i);else if(r===1)this._hasUsableOpusMetadata()||this._injectFallbackOpusSequenceHeader(n),this._parseOpusFrameData(e,t,i,n);else if(r!==2)if(r===4)this._parseAudioMultichannelConfig(e,t,i);else{let s=(a=Ui[r])!=null?a:String(r);_.w(C.TAG,`_parseEnhancedOpusAudioPacket(): unsupported FlvAudioPacketType=${s} ts=${n} offset=${t} size=${i} action=drop`)}}_hasUsableOpusMetadata(){var e;return((e=this._audioMetadata)==null?void 0:e.codecType)===3&&!!this._audioMetadata.codecConfig}_injectFallbackOpusSequenceHeader(e){let t=new Uint8Array([79,112,117,115,72,101,97,100,1,2,0,0,128,187,0,0,0,0,0]);_.w(C.TAG,`_parseEnhancedOpusAudioPacket(): Opus CodedFrames received before SequenceStart ts=${e}; injecting fallback stereo OpusHead`),this._parseOpusSequenceHeader(t.buffer,t.byteOffset,t.byteLength)}_parseOpusSequenceHeader(e,t,i){if(i<19){_.e(C.TAG,"_parseOpusSequenceHeader(): Invalid OpusSequenceHeader, lack of data!");return}let n=new Uint8Array(e,t,i),r=String.fromCharCode(...n.subarray(0,8));if(r!=="OpusHead"){_.e(C.TAG,`_parseOpusSequenceHeader(): Invalid OpusSequenceHeader, missing OpusHead (got "${r}")`);return}let a=new Uint8Array(e,t+8,i-8).slice(),s=new DataView(a.buffer),l=s.getUint8(1),c=s.getUint16(2,!0),u=s.getUint32(4,!0),h=s.getInt16(8,!0),f=s.getUint8(10);h>0&&_.w(C.TAG,"_parseOpusSequenceHeader(): outputGain within OpusSequenceHeader action=drop"),f!==0&&_.w(C.TAG,"_parseOpusSequenceHeader(): channel mapping within OpusSequenceHeader action=drop");let p=this._audioMetadata,y=this._audioTrack;if(p||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),p=this._audioMetadata=ae(j({},Zt),{type:"audio",trackId:y.id,timescale:this._timescale,duration:this._duration})),p.codecType=3,p.codecConfig){if(ke(a,p.codecConfig))return;_.v(C.TAG,"_parseOpusSequenceHeader(): OpusSequenceHeader has been changed, re-generate initialization segment")}p.audioSampleRate=48e3,p.channelCount=l,p.codec="opus",p.originalCodec="opus",p.codecConfig=a,p.preSkipSamples=c,p.inputSampleRate=u,p.outputGain=h,p.refFrameDuration=960*p.timescale/48e3,_.v(C.TAG,"Parsed OpusSequenceHeader"),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(p);let m=this._mediaInfo;m.audioCodec=p.originalCodec,m.audioSampleRate=p.audioSampleRate,m.audioChannelCount=p.channelCount,m.hasVideo?m.videoCodec!=null&&(m.mimeType='video/x-flv; codecs="'+m.videoCodec+","+m.audioCodec+'"'):m.mimeType='video/x-flv; codecs="'+m.audioCodec+'"',m.isComplete()&&this._onMediaInfo(m)}_parseOpusFrameData(e,t,i,n){let r=this._audioTrack,a=new Uint8Array(e,t,i),s=this._timestampBase+n,l={unit:a,length:a.byteLength,dts:s,pts:s};r.frames.push(l),r.length+=a.length}_parseEnhancedFlacAudioPacket(e,t,i,n,r){if(r===0)this._parseFlacSequenceHeader(e,t,i);else if(r===1)this._parseFlacFrameData(e,t,i,n);else if(r!==2)if(r===4)this._parseAudioMultichannelConfig(e,t,i);else{this._onError(q.FORMAT_ERROR,`${C.TAG}._parseEnhancedFlacAudioPacket() - Unsupported FlvAudioPacketType ${r}`);return}}_parseFlacSequenceHeader(e,t,i){let n=this._audioMetadata,r=this._audioTrack;n||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),n=this._audioMetadata=ae(j({},Zt),{type:"audio",trackId:r.id,timescale:this._timescale,duration:this._duration})),n.codecType=4;let a=new Uint8Array(e,t,i),s=new Uint8Array(i+4);s[0]=128,s[1]=0,s[2]=0,s[3]=i,s.set(a,4);let l=new he(a),c=l.readBits(16),u=l.readBits(16),h=u===c?u:4096,f=l.readBits(24),p=l.readBits(24),y=l.readBits(20),m=l.readBits(3)+1,x=l.readBits(5)+1;l.destroy();let b={config:s,channelCount:m,samplingFrequence:y,bitsPerSample:x,codec:"flac",originalCodec:"flac"};if(n.codecConfig){if(ke(b.config,n.codecConfig))return;_.w(C.TAG,"FlacSequenceHeader has been changed, re-generate initialization segment")}n.audioSampleRate=b.samplingFrequence,n.channelCount=b.channelCount,n.bitsPerSample=b.bitsPerSample,n.codec=b.codec,n.originalCodec=b.originalCodec,n.codecConfig=b.config,n.refFrameDuration=h*1e3/b.samplingFrequence,_.v(C.TAG,"Parsed FlacSequenceHeader"),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(n);let v=this._mediaInfo;v.audioCodec=n.originalCodec,v.audioSampleRate=n.audioSampleRate,v.audioChannelCount=n.channelCount,v.hasVideo?v.videoCodec!=null&&(v.mimeType='video/x-flv; codecs="'+v.videoCodec+","+v.audioCodec+'"'):v.mimeType='video/x-flv; codecs="'+v.audioCodec+'"',v.isComplete()&&this._onMediaInfo(v)}_parseFlacFrameData(e,t,i,n){let r=this._audioTrack,a=new Uint8Array(e,t,i),s=this._timestampBase+n,l={unit:a,length:a.byteLength,dts:s,pts:s};r.frames.push(l),r.length+=a.length}_parseVideoTagData(e,t,i,n,r){if(i<=1){_.w(C.TAG,"Flv: Invalid video packet, missing VideoData payload!");return}if(this._hasVideoFlagOverrided===!0&&this._hasVideo===!1)return;let a=new Uint8Array(e,t,i)[0],s=(a&128)!==0,l=(a&112)>>>4;if(s){let c=a&15;if(c===6)this._parseEnhancedMultitrackVideoPacket(e,t+1,i-1,n,r,l);else{let u=String.fromCharCode(...new Uint8Array(e,t,i).slice(1,5));if(u==="avc1")this._parseEnhancedAvcVideoPacket(e,t+5,i-5,n,r,l,c,this._getOrCreateVideoTrack(0));else if(u==="hvc1")this._parseEnhancedHevcVideoPacket(e,t+5,i-5,n,r,l,c,this._getOrCreateVideoTrack(0));else if(u==="av01")this._parseEnhancedAv1VideoPacket(e,t+5,i-5,n,r,l,c,this._getOrCreateVideoTrack(0));else if(u==="vp09")this._parseEnhancedVp9VideoPacket(e,t+5,i-5,n,r,l,c,this._getOrCreateVideoTrack(0));else{this._onError(q.CODEC_UNSUPPORTED,`Flv: Unsupported codec in video frame: ${u}`);return}}}else{let c=a&15;if(c===7)this._parseLegacyAvcVideoPacket(e,t+1,i-1,n,r,l,this._getOrCreateVideoTrack(0));else if(c===12)this._parseLegacyHevcVideoPacket(e,t+1,i-1,n,r,l,this._getOrCreateVideoTrack(0));else{this._onError(q.CODEC_UNSUPPORTED,`Flv: Unsupported codec in video frame: ${c}`);return}}}_parseEnhancedMultitrackVideoPacket(e,t,i,n,r,a){if(i<2){_.w(C.TAG,"Flv: Invalid multitrack video packet, too short");return}let s=new DataView(e,t,i),l=s.getUint8(0),c=l>>4&15,u=l&15;if(u===6){this._onError(q.FORMAT_ERROR,"Flv: Multitrack innerPacketType must not be Multitrack");return}let h=1,f=null;if(c!==2){if(i-h<4){_.w(C.TAG,"Flv: Invalid multitrack video packet, missing shared FOURCC");return}f=String.fromCharCode(...new Uint8Array(e,t+h,4)),h+=4}for(;h<i;){let p;if(c===2){if(i-h<4)break;p=String.fromCharCode(...new Uint8Array(e,t+h,4)),h+=4}else p=f;if(i-h<1)break;let y=s.getUint8(h);h+=1;let m;if(c===0)m=i-h;else{if(i-h<3)break;m=s.getUint8(h)<<16|s.getUint8(h+1)<<8|s.getUint8(h+2),h+=3}if(h+m>i){_.w(C.TAG,`Flv: Multitrack track payload overflows packet, trackId=${y}`);break}_.v(C.TAG,`Multitrack packet: trackId=${y}, fourcc=${p}, innerPacketType=${u}, payloadSize=${m}`);let x=this._getOrCreateVideoTrack(y),b=t+h,v=m;if(p==="avc1"?this._parseEnhancedAvcVideoPacket(e,b,v,n,r,a,u,x):p==="hvc1"?this._parseEnhancedHevcVideoPacket(e,b,v,n,r,a,u,x):p==="av01"?this._parseEnhancedAv1VideoPacket(e,b,v,n,r,a,u,x):p==="vp09"?this._parseEnhancedVp9VideoPacket(e,b,v,n,r,a,u,x):_.w(C.TAG,`Flv: Unsupported codec in multitrack video packet: ${p}, trackId=${y}, action=skip`),h+=m,c===0)break}}_parseLegacyAvcVideoPacket(e,t,i,n,r,a,s){if(i<4){_.w(C.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");return}let l=new DataView(e,t,i),c=l.getUint8(0),u=ei(l,1);if(t+=4,i-=4,c===0)this._parseAvcDecoderConfig(e,t,i,s);else if(c===1)this._parseAvcFrameData(e,t,i,n,r,a,u,s);else if(c!==2){this._onError(q.FORMAT_ERROR,`Flv: Invalid video packet type ${c}`);return}}_parseLegacyHevcVideoPacket(e,t,i,n,r,a,s){if(i<4){_.w(C.TAG,"Flv: Invalid HEVC packet, missing HEVCPacketType or/and CompositionTime");return}let l=new DataView(e,t,i),c=l.getUint8(0),u=ei(l,1);if(t+=4,i-=4,c===0)this._parseHevcDecoderConfig(e,t,i,s);else if(c===1)this._parseHevcFrameData(e,t,i,n,r,a,u,s);else if(c!==2){this._onError(q.FORMAT_ERROR,`Flv: Invalid video packet type ${c}`);return}}_parseEnhancedHevcVideoPacket(e,t,i,n,r,a,s,l){let c=new DataView(e,t,i);if(s===0)this._parseHevcDecoderConfig(e,t,i,l);else if(s===1){if(i<3){_.w(C.TAG,"_parseEnhancedHevcVideoPacket(): Invalid HEVC packet, missing CompositionTime");return}let u=ei(c,0);t+=3,i-=3,this._parseHevcFrameData(e,t,i,n,r,a,u,l)}else if(s===3)this._parseHevcFrameData(e,t,i,n,r,a,0,l);else if(s!==2){this._onError(q.FORMAT_ERROR,`Flv: Invalid video packet type ${s}`);return}}_parseEnhancedAvcVideoPacket(e,t,i,n,r,a,s,l){let c=new DataView(e,t,i);if(s===0)this._parseAvcDecoderConfig(e,t,i,l);else if(s===1){if(i<3){_.w(C.TAG,"_parseEnhancedAvcVideoPacket(): Invalid AVC packet, missing CompositionTime");return}let u=ei(c,0);t+=3,i-=3,this._parseAvcFrameData(e,t,i,n,r,a,u,l)}else if(s===3)this._parseAvcFrameData(e,t,i,n,r,a,0,l);else if(s!==2){this._onError(q.FORMAT_ERROR,`Flv: Invalid AVC video packet type ${s}`);return}}_parseEnhancedAv1VideoPacket(e,t,i,n,r,a,s,l){let c=new DataView(e,t,i);switch(s){case 0:this._parseAv1DecoderConfig(e,t,i,l);break;case 1:this._parseAv1FrameData(e,t,i,n,r,a,0,l);break;case 2:break;case 4:{_.w(C.TAG,`_parseEnhancedAv1VideoPacket(): unsupported AV1 video packet type ${s} (FlvVideoPacketType.Metadata) ts=${n} offset=${t} size=${i} action=drop`);break}default:this._onError(q.FORMAT_ERROR,`Flv: invalid AV1 video packet type ${s}`);return}}_parseAvcDecoderConfig(e,t,i,n){if(i<7){_.w(C.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");return}let r=this._videoMetadataByTrackId.get(n.id),a=new DataView(e,t,i);if(!r)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r=ae(j({},Jt),{type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(n.id,r);else if(typeof r.codecConfig!="undefined"){let y=new Uint8Array(e,t,i);if(ke(y,r.codecConfig))return;_.w(C.TAG,"AVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}r.codecType=1;let s=a.getUint8(0),l=a.getUint8(1),c=a.getUint8(2),u=a.getUint8(3);if(s!==1||l===0){this._onError(q.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");return}if(this._naluLengthSize=(a.getUint8(4)&3)+1,this._naluLengthSize!==3&&this._naluLengthSize!==4){this._onError(q.FORMAT_ERROR,`Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize-1}`);return}let h=a.getUint8(5)&31;if(h===0){this._onError(q.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");return}else h>1&&_.w(C.TAG,`Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${h}`);let f=6;for(let y=0;y<h;y++){let m=a.getUint16(f,!1);if(f+=2,m===0)continue;let x=new Uint8Array(e,t+f,m);f+=m;let b=Wt.parseSPS(x);if(y!==0)continue;r.codecWidth=b.codec_size.width,r.codecHeight=b.codec_size.height,r.presentWidth=b.present_size.width,r.presentHeight=b.present_size.height,r.profile=b.profile_string,r.level=b.level_string,r.bitDepth=b.bit_depth,r.chromaFormat=b.chroma_format,r.sarRatio=b.sar_ratio,r.frameRate=b.frame_rate,(b.frame_rate.fixed===!1||b.frame_rate.fps_num===0||b.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let v=r.frameRate.fps_den,S=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(v/S);let T=x.subarray(1,4),V="avc1.";for(let D=0;D<3;D++){let A=T[D].toString(16);A.length<2&&(A="0"+A),V+=A}r.codec=V;let w=this._mediaInfo;w.width=r.codecWidth,w.height=r.codecHeight,w.fps=r.frameRate.fps,w.profile=r.profile,w.level=r.level,w.refFrames=b.ref_frames,w.chromaFormat=b.chroma_format_string,w.sarNum=r.sarRatio.width,w.sarDen=r.sarRatio.height,w.videoCodec=V,w.hasAudio?w.audioCodec!=null&&(w.mimeType='video/x-flv; codecs="'+w.videoCodec+","+w.audioCodec+'"'):w.mimeType='video/x-flv; codecs="'+w.videoCodec+'"',w.isComplete()&&this._onMediaInfo(w)}let p=a.getUint8(f);if(p===0){this._onError(q.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS");return}else p>1&&_.w(C.TAG,`Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${p}`);f++;for(let y=0;y<p;y++){let m=a.getUint16(f,!1);f+=2,m!==0&&(f+=m)}r.codecConfig=new Uint8Array(i),r.codecConfig.set(new Uint8Array(e,t,i),0),_.v(C.TAG,"Parsed AVCDecoderConfigurationRecord"),this._dispatchVideoTrackMetadata(r)}_parseHevcDecoderConfig(e,t,i,n){if(i<22){_.w(C.TAG,"Flv: Invalid HEVCDecoderConfigurationRecord, lack of data!");return}let r=this._videoMetadataByTrackId.get(n.id),a=new DataView(e,t,i);if(!r)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r=ae(j({},Jt),{type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(n.id,r);else if(r.codecConfig){let u=new Uint8Array(e,t,i);if(ke(u,r.codecConfig))return;_.w(C.TAG,"HEVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}r.codecType=2;let s=a.getUint8(0),l=a.getUint8(1)&31;if(s!==0&&s!==1||l===0){this._onError(q.FORMAT_ERROR,"Flv: Invalid HEVCDecoderConfigurationRecord");return}if(this._naluLengthSize=(a.getUint8(21)&3)+1,this._naluLengthSize!==3&&this._naluLengthSize!==4){this._onError(q.FORMAT_ERROR,`Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize-1}`);return}let c=a.getUint8(22);for(let u=0,h=23;u<c;u++){let f=a.getUint8(h+0)&63,p=a.getUint16(h+1,!1);h+=3;for(let y=0;y<p;y++){let m=a.getUint16(h+0,!1);if(y!==0){h+=2+m;continue}if(f===33){h+=2;let x=new Uint8Array(e,t+h,m),b=ht.parseSPS(x);r.codecWidth=b.codec_size.width,r.codecHeight=b.codec_size.height,r.presentWidth=b.present_size.width,r.presentHeight=b.present_size.height,r.profile=b.profile_string,r.level=b.level_string,r.bitDepth=b.bit_depth,r.chromaFormat=b.chroma_format,r.sarRatio=b.sar_ratio,r.frameRate=b.frame_rate,(b.frame_rate.fixed===!1||b.frame_rate.fps_num===0||b.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let v=r.frameRate.fps_den,S=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(v/S),r.codec=b.codec_mimetype;let T=this._mediaInfo;T.width=r.codecWidth,T.height=r.codecHeight,T.fps=r.frameRate.fps,T.profile=r.profile,T.level=r.level,T.refFrames=b.ref_frames,T.chromaFormat=b.chroma_format_string,T.sarNum=r.sarRatio.width,T.sarDen=r.sarRatio.height,T.videoCodec=b.codec_mimetype,T.hasAudio?T.audioCodec!=null&&(T.mimeType='video/x-flv; codecs="'+T.videoCodec+","+T.audioCodec+'"'):T.mimeType='video/x-flv; codecs="'+T.videoCodec+'"',T.isComplete()&&this._onMediaInfo(T),h+=m}else h+=2+m}}r.codecConfig=new Uint8Array(i),r.codecConfig.set(new Uint8Array(e,t,i),0),_.v(C.TAG,"Parsed HEVCDecoderConfigurationRecord"),this._dispatchVideoTrackMetadata(r)}_parseAv1DecoderConfig(e,t,i,n){var x,b;if(i<4){_.w(C.TAG,"Flv: Invalid AV1CodecConfigurationRecord, lack of data!");return}let r,a=this._videoMetadataByTrackId.get(n.id),s=new DataView(e,t,i);if(!a)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r=ae(j({},Jt),{type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(n.id,r);else{if(a.codecConfig){let v=new Uint8Array(e,t,i);if(ke(v,a.codecConfig))return;_.w(C.TAG,"AV1CodecConfigurationRecord has been changed, re-generate initialization segment")}r=a}r.codecType=5;let l=s.getUint8(0)&127,c=(s.getUint8(1)&224)>>5,u=(s.getUint8(1)&143)>>0,h=(s.getUint8(2)&128)>>7;if(l!==1){this._onError(q.FORMAT_ERROR,"Flv: Invalid AV1CodecConfigurationRecord");return}let f=De.parseOBUs(new Uint8Array(e,t+4,i-4));if(!f){this._onError(q.FORMAT_ERROR,"Flv: Invalid AV1CodecConfigurationRecord");return}r.profile=f.profile_string,r.level=f.level_string,r.bitDepth=f.bit_depth,r.chromaFormat=f.chroma_format,r.frameRate=f.frame_rate,(f.frame_rate.fixed===!1||f.frame_rate.fps_num===0||f.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let p=r.frameRate.fps_den,y=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(p/y),r.codec=f.codec_mimetype,r.av1Extra=f;let m=this._mediaInfo;m.fps=r.frameRate.fps,m.profile=r.profile,m.level=r.level,m.refFrames=f.ref_frames,m.chromaFormat=f.chroma_format_string,m.videoCodec=f.codec_mimetype,r.codecWidth=(x=m.width)!=null?x:0,r.codecHeight=(b=m.height)!=null?b:0,m.hasAudio?m.audioCodec!=null&&(m.mimeType='video/x-flv; codecs="'+m.videoCodec+","+m.audioCodec+'"'):m.mimeType='video/x-flv; codecs="'+m.videoCodec+'"',m.isComplete()&&this._onMediaInfo(m),r.codecConfig=new Uint8Array(e,t,i).slice(),this._dispatchVideoTrackMetadata(r),_.v(C.TAG,`Parsed AV1 metadata: ${JSON.stringify(f)}`)}_parseAvcFrameData(e,t,i,n,r,a,s,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let c=new DataView(e,t,i),u=[],h=0,f=0,p=this._naluLengthSize,y=this._timestampBase+n,m=a===1;for(;f<i;){if(f+4>=i){_.w(C.TAG,`Malformed Nalu near timestamp ${y}, offset = ${f}, dataSize = ${i}`);break}let x=c.getUint32(f,!1);if(p===3&&(x>>>=8),x>i-p){_.w(C.TAG,`Malformed Nalus near timestamp ${y}, NaluSize > DataSize!`);return}let b=c.getUint8(f+p)&31;b===5&&(m=!0);let v=new Uint8Array(e,t+f,p+x),S={type:b,data:v};u.push(S),h+=v.byteLength,f+=p+x}if(u.length){let x={units:u,length:h,isKeyframe:m,fileposition:r,dts:y,cts:s,pts:y+s};l.frames.push(x),l.length+=h}}_parseHevcFrameData(e,t,i,n,r,a,s,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let c=new DataView(e,t,i),u=[],h=0,f=0,p=this._naluLengthSize,y=this._timestampBase+n,m=a===1;for(;f<i;){if(f+4>=i){_.w(C.TAG,`Malformed Nalu near timestamp ${y}, offset = ${f}, dataSize = ${i}`);break}let x=c.getUint32(f,!1);if(p===3&&(x>>>=8),x>i-p){_.w(C.TAG,`Malformed Nalus near timestamp ${y}, NaluSize > DataSize!`);return}let b=c.getUint8(f+p)>>1&63;(b===19||b===20||b===21)&&(m=!0);let v=new Uint8Array(e,t+f,p+x),S={type:b,data:v};u.push(S),h+=v.byteLength,f+=p+x}if(u.length){let x={units:u,length:h,isKeyframe:m,fileposition:r,dts:y,cts:s,pts:y+s};l.frames.push(x),l.length+=h}}_parseAv1FrameData(e,t,i,n,r,a,s,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let c=[],u=0,h=this._timestampBase+n,f=a===1,p=new Uint8Array(e,t,i);if(f){let m=this._videoMetadataByTrackId.get(l.id);if(!m){this._onError(q.FORMAT_ERROR,"Flv: AV1 VideoData received before SequenceStart");return}let x=De.parseOBUs(p,m.av1Extra);if(!x){this._onError(q.FORMAT_ERROR,"Flv: Invalid AV1 VideoData");return}m.codecWidth=x.codec_size.width,m.codecHeight=x.codec_size.height,m.presentWidth=x.present_size.width,m.presentHeight=x.present_size.height,m.sarRatio=x.sar_ratio;let b=this._mediaInfo;b.width=m.codecWidth,b.height=m.codecHeight,b.sarNum=m.sarRatio.width,b.sarDen=m.sarRatio.height}u=i,c.push({type:0,data:p});let y={units:c,length:u,isKeyframe:f,fileposition:r,dts:h,cts:s,pts:h+s,rawData:p};l.frames.push(y),l.length+=u}_parseEnhancedVp9VideoPacket(e,t,i,n,r,a,s,l){switch(s){case 0:this._parseVp9DecoderConfig(e,t,i,l);break;case 1:this._parseVp9FrameData(e,t,i,n,r,a,0,l);break;case 2:break;case 4:_.w(C.TAG,`_parseEnhancedVp9VideoPacket(): unsupported VP9 video packet type ${s} (FlvVideoPacketType.Metadata) ts=${n} offset=${t} size=${i} action=drop`);break;default:this._onError(q.FORMAT_ERROR,`Flv: invalid VP9 video packet type ${s}`);return}}_parseVp9DecoderConfig(e,t,i,n){var D,A;if(i<9){_.w(C.TAG,"_parseVp9DecoderConfig(): Invalid VP9CodecConfigurationRecord, lack of data!");return}let r=new DataView(e,t,i),a,s=this._videoMetadataByTrackId.get(n.id);if(!s)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),a=ae(j({},Jt),{type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(n.id,a);else{if(s.codecConfig){let M=new Uint8Array(e,t,i);if(ke(M,s.codecConfig))return;_.w(C.TAG,"_parseVp9DecoderConfig(): VP9CodecConfigurationRecord has been changed, re-generate initialization segment")}a=s}a.codecType=4;let c=(r.getUint8(1)<<16|r.getUint8(2)<<8|r.getUint8(3))===0&&i>=12,u=c?4:1;if(!c&&i<9){_.w(C.TAG,"_parseVp9DecoderConfig(): record too short");return}let h=r.getUint8(u),f=r.getUint8(u+1),p=(r.getUint8(u+2)&240)>>4,y=(r.getUint8(u+2)&14)>>1,m=r.getUint8(u+2)&1,x=r.getUint8(u+3),b=r.getUint8(u+4),v=2;if(i>=u+6&&(v=r.getUint8(u+5),i>=u+8)){let M=r.getUint16(u+6,!1);M!==0&&_.w(C.TAG,`_parseVp9DecoderConfig(): Strange VP9CodecConfigurationRecord, codecInitializationDataSize = ${M}`)}a.profile=`${h}`,a.level=`${f}`,a.bitDepth=p,a.chromaFormat=y,a.colorRange=m,a.colourPrimaries=x,a.transferCharacteristics=b,a.matrixCoefficients=v,a.codec=`vp09.${`${h}`.padStart(2,"0")}.${`${f}`.padStart(2,"0")}.${`${p}`.padStart(2,"0")}`;let S=this._mediaInfo;S.fps=a.frameRate.fps,S.profile=a.profile,S.level=a.level,S.refFrames=3,S.chromaFormat=y===1?"4:2:0":a.chromaFormat===2?"4:2:2":a.chromaFormat===3?"4:4:4":"4:2:0",S.videoCodec=a.codec;let T=a.frameRate;(T.fixed===!1||Number.isNaN(T.fps_num)||Number.isNaN(T.fps_den)||Number.isNaN(T.fps))&&(a.frameRate=this._referenceFrameRate);let V=a.frameRate.fps_den,w=a.frameRate.fps_num;a.refFrameDuration=a.timescale*(V/w),a.codecWidth=(D=S.width)!=null?D:0,a.codecHeight=(A=S.height)!=null?A:0,S.hasAudio?S.audioCodec!=null&&(S.mimeType='video/x-flv; codecs="'+S.videoCodec+","+S.audioCodec+'"'):S.mimeType='video/x-flv; codecs="'+S.videoCodec+'"',S.isComplete()&&this._onMediaInfo(S),a.codecConfig=new Uint8Array(e,t,i).slice(),_.v(C.TAG,`VP9 codecConfig: ${Array.from(a.codecConfig).map(M=>M.toString(16).padStart(2,"0")).join(" ")}`),this._dispatchVideoTrackMetadata(a),_.v(C.TAG,`Parsed VP9 codec configuration record: profile=${a.profile} level=${a.level}`)}_parseVp9FrameData(e,t,i,n,r,a,s,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let c=0,u=[],h=this._timestampBase+n,f=a===1,p=_t.parseVp9Header(new Uint8Array(e,t,i));if(f&&p.isValid){let m=this._videoMetadataByTrackId.get(l.id);if(m){m.codecWidth=p.width,m.codecHeight=p.height,m.presentWidth=p.renderWidth,m.presentHeight=p.renderHeight,m.sarRatio={width:1,height:1};let x=this._mediaInfo;x.width=m.codecWidth,x.height=m.codecHeight,x.sarNum=m.sarRatio.width,x.sarDen=m.sarRatio.height}}c=i,u.push({type:f?0:1,data:new Uint8Array(e,t,i)});let y={units:u,length:c,isKeyframe:f,fileposition:r,dts:h,cts:s,pts:h+s,rawData:new Uint8Array(e,t,i)};l.frames.push(y),l.length+=c}};d(C,"TAG","FLVDemuxer"),d(C,"_flvSoundRateTable",[5500,11025,22050,44100,48e3]),d(C,"_mpegAudioV10SampleRateTable",[44100,48e3,32e3,0]),d(C,"_mpegAudioV20SampleRateTable",[22050,24e3,16e3,0]),d(C,"_mpegAudioV25SampleRateTable",[11025,12e3,8e3,0]),d(C,"_mpegAudioL1BitRateTable",[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1]),d(C,"_mpegAudioL2BitRateTable",[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1]),d(C,"_mpegAudioL3BitRateTable",[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1]);var Oi=C,Wr=Oi;var zr=new Uint8Array([48,38,178,117,142,102,207,17,166,217,0,170,0,98,206,108]),Pn=new Uint8Array([54,38,178,117,142,102,207,17,166,217,0,170,0,98,206,108]),Vn=new Uint8Array([145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101]),On=new Uint8Array([64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]),Nn=new Uint8Array([192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]),$n=17444,Hn=17700,Gn=28751,Ni={fixed:!1,fps:25,fps_num:25,fps_den:1},$i=new Set([44,66,77,83,86,88,100,110,118,122,128,138,144,244]),qn={44:"CAVLC 4:4:4",66:"Baseline",77:"Main",83:"Scalable Baseline",86:"Scalable High",88:"Extended",100:"High",110:"High 10",118:"Multiview High",122:"High 4:2:2",128:"Stereo High",138:"Multiview Depth High",144:"High 4:4:4",244:"High 4:4:4 Predictive"},Wn={HEVC:"hevc",AV01:"av1",VP90:"vp9"},zn=new Set([19,20,21]),X={u16:(o,e)=>o[e]|o[e+1]<<8,u32:(o,e)=>(o[e]|o[e+1]<<8|o[e+2]<<16|o[e+3]<<24)>>>0,u64:(o,e)=>X.u32(o,e+4)*4294967296+X.u32(o,e)},ft={u16:(o,e)=>o[e]<<8|o[e+1],u32:(o,e)=>(o[e]<<24|o[e+1]<<16|o[e+2]<<8|o[e+3])>>>0},mt=(o,e,t)=>{if(e+16>o.length)return!1;for(let i=0;i<16;i++)if(o[e+i]!==t[i])return!1;return!0},Kn=o=>{let e=o.length;for(;e>0&&o[e-1]===0;)e--;return e===o.length?o:o.subarray(0,e)},jn=o=>String.fromCharCode(o&255,o>>8&255,o>>16&255,o>>24&255).toUpperCase().trim(),Kr=(o,e,t)=>{let i=e>=0&&e<Ue.length?e:4;return new Uint8Array([o<<3|(i&14)>>1,(i&1)<<7|Math.max(0,Math.min(t,15))<<3])},Yn=[[1,1],[1,1],[1,0],[0,0]];function jr(o){var n,r,a,s,l,c,u;if(!((n=o.sequence_header_data)!=null&&n.length))return null;let e=(a=Yn[(r=o.chroma_format)!=null?r:1])!=null?a:[1,1],t=(s=o.bit_depth)!=null?s:8,i=new Uint8Array(4+o.sequence_header_data.length);return i[0]=129,i[1]=((l=o.profile_idc)!=null?l:0)<<5|((c=o.level)!=null?c:0)&31,i[2]=((u=o.tier)!=null?u:0)<<7|(t>8?1:0)<<6|(t===12?1:0)<<5|(o.chroma_format===0?1:0)<<4|e[0]<<3|e[1]<<2,i.set(o.sequence_header_data,4),i}function Yr(o,e,t,i,n,r=0){let a=o===2||o===3,s=e!=null?e:a?10:8,l=t!=null?t:a?9:1,c=i!=null?i:a?16:1,u=n!=null?n:a?9:1,h=new Uint8Array(12);return h[0]=1,h[4]=o,h[5]=31,h[6]=(s&15)<<4|2|r&1,h[7]=l,h[8]=c,h[9]=u,h}function Xn(o,e,t){if(o&&o.length>=19&&String.fromCharCode(...o.subarray(0,8))==="OpusHead")return o.subarray(8).slice();let i=new Uint8Array(19);return i.set([79,112,117,115,72,101,97,100,1,e||2]),new DataView(i.buffer).setUint32(12,t||48e3,!0),i.subarray(8)}var Xr=(o=0)=>({type:"audio",id:2,sequenceNumber:o,frames:[],length:0}),Hi=(o=0)=>({type:"video",id:1,sequenceNumber:o,frames:[],length:0}),pt=class extends Wr{constructor(t,i,n){super(t,i,n);d(this,"_asfMediaInfo");d(this,"_streams");d(this,"_stash");d(this,"_headerParsed");d(this,"_dataObjectParsed");d(this,"_asfAudioTrack");d(this,"_videoTrack");d(this,"_asfHasAudio",!0);d(this,"_asfHasVideo",!0);d(this,"_hasVideoMetaSent");d(this,"_hasAudioMetaSent");d(this,"_headerVideoWidth");d(this,"_headerVideoHeight");d(this,"_nalHeaders");d(this,"_headerAv1c");d(this,"_headerVp9c");d(this,"_headerAudioConfig");d(this,"_headerAudioChannels");d(this,"_headerAudioSampleRate");d(this,"_baseTimestamp");d(this,"_asfTimestampBase",0);d(this,"_asfDuration",0);d(this,"_hasReceivedFirstKeyframe");d(this,"_audioNextDts");d(this,"_lastAudioDts");d(this,"_audioFrameDuration");d(this,"_firstVideoPts");d(this,"_lastVideoPts");d(this,"_isAVCC");d(this,"_videoCodec");d(this,"_audioCodec");d(this,"_sentVideoConfig");d(this,"_audioBuffer");d(this,"_videoBuffer");this._initProperties(),this._asfHasAudio=t.hasAudioTrack,this._asfHasVideo=t.hasVideoTrack}_initProperties(){this._asfMediaInfo=new Ie,this._streams=new Array(128).fill(null),this._stash=null,this._headerParsed=this._dataObjectParsed=!1,this._asfAudioTrack=Xr(),this._videoTrack=Hi(),this._hasVideoMetaSent=this._hasAudioMetaSent=!1,this._headerVideoWidth=this._headerVideoHeight=0,this._nalHeaders={vps:null,sps:null,pps:null},this._headerAv1c=this._headerVp9c=this._headerAudioConfig=null,this._headerAudioChannels=this._headerAudioSampleRate=0,this._baseTimestamp=null,this._asfTimestampBase=this._asfDuration=0,this._hasReceivedFirstKeyframe=!1,this._audioNextDts=this._lastAudioDts=null,this._audioFrameDuration=1024/44100*1e3,this._firstVideoPts=this._lastVideoPts=null,this._isAVCC=this._videoCodec=this._audioCodec=null,this._sentVideoConfig={},this._audioBuffer={mediaObjectNumber:null,totalSize:0,currentSize:0,chunks:[],pts:0,packetTimestamp:0},this._videoBuffer={mediaObjectNumber:null,totalSize:0,currentSize:0,chunks:[],pts:0,packetTimestamp:0,keyframe:!1,streamPosition:0}}destroy(){super.destroy(),this._initProperties()}bindDataSource(t){return t.onDataArrival=this.parseChunks.bind(this),this}resetMediaInfo(){this._asfMediaInfo=new Ie}get timestampBase(){return this._asfTimestampBase}set timestampBase(t){this._asfTimestampBase=t}get overridedDuration(){return this._asfDuration}set overridedDuration(t){this._asfDuration=t,this._asfMediaInfo.duration=t}set overridedHasAudio(t){this._asfHasAudio=t,this._asfMediaInfo.hasAudio=t}set overridedHasVideo(t){this._asfHasVideo=t,this._asfMediaInfo.hasVideo=t}get onTrackMetadata(){return super.onTrackMetadata}set onTrackMetadata(t){super.onTrackMetadata=t,this._nalHeaders.sps&&this._nalHeaders.pps&&this._sendVideoMetadataFromHeader(!0),this._headerAudioConfig&&(this._hasAudioMetaSent=!1,this._sendAudioMetadataFromHeader())}get onMediaInfo(){return super.onMediaInfo}set onMediaInfo(t){super.onMediaInfo=t,(!this._asfHasAudio||this._hasAudioMetaSent)&&(!this._asfHasVideo||this._hasVideoMetaSent)&&this._maybeEmitMediaInfo()}static probe(t){let i=new Uint8Array(t);return i.byteLength<28?{needMoreData:!0}:mt(i,12,zr)?{match:!0,consumed:12,dataOffset:12,hasAudioTrack:!0,hasVideoTrack:!0}:{match:!1}}parseChunks(t,i){var c,u;let n=new Uint8Array(t),r=(u=(c=this._stash)==null?void 0:c.length)!=null?u:0,a=n;r>0&&(a=new Uint8Array(r+n.length),a.set(this._stash,0),a.set(n,r),this._stash=null);let s=0;if(!this._headerParsed){let h=this._parseHeader(a);if(h<0)return this._stash=a.slice(),t.byteLength;s=h,this._headerParsed=!0,this._sendAudioMetadataFromHeader()}if(!this._dataObjectParsed){if(s+50>a.length||!mt(a,s,Pn))return this._stash=a.slice(s),t.byteLength;if(X.u64(a,s+16)<50)return this._stash=a.slice(s),t.byteLength;s+=50,this._dataObjectParsed=!0}let l=i-r;for(;s+4<=a.length;){let h=X.u16(a,s),f=X.u16(a,s+2);if(h===Hn){s=a.length;break}if(h!==$n||f<=0||s+4+f>a.length)break;let p=this._parsePacket(a,s,l);if(p<=s||p>a.length)break;s=p}return this._stash=s<a.length?a.slice(s):null,this._emitTrackData(),t.byteLength}_emitTrackData(){this._asfHasVideo&&!this._hasVideoMetaSent?this.onTrackData(Xr(this._asfAudioTrack.sequenceNumber),Hi(this._videoTrack.sequenceNumber)):this._hasVideoMetaSent||this._videoTrack.frames.length===0?this.onTrackData(this._asfAudioTrack,this._videoTrack):this.onTrackData(this._asfAudioTrack,Hi(this._videoTrack.sequenceNumber))}_readVar(t,i,n,r){let a=(n&3)===3?4:n&3;if(i.offset+a>t.length)return i.error=!0,r;if(a===0)return r;let s=a===1?t[i.offset]:a===2?X.u16(t,i.offset):X.u32(t,i.offset);return i.offset+=a,s}_parseHeader(t){var a;if(t.length<64||!mt(t,12,zr))return-1;let i=28,n=X.u64(t,i);if(n<30||12+n>t.length)return-1;i+=8;let r=X.u32(t,i);i+=6;for(let s=0;s<r;s++){if(i+24>t.length)return-1;let l=i+X.u64(t,i+16);if(l>t.length)return-1;if(!mt(t,i,Vn)){i=l;continue}let c=i+24;if(c+54>l){i=l;continue}let u=X.u32(t,c+40),h=X.u16(t,c+48)&127,f=c+54;if(f+u>l){i=l;continue}if(mt(t,c,On)){if(h<128&&(this._streams[h]={type:"audio"}),u>=18){let p=f;this._audioCodec=X.u16(t,p)===Gn?"opus":"aac";let y=X.u16(t,p+2),m=X.u32(t,p+4),x=X.u16(t,p+16);y>0&&(this._headerAudioChannels=y),m>0&&(this._headerAudioSampleRate=m),x>0&&p+18+x<=l&&(this._headerAudioConfig=t.slice(p+18,p+18+x))}}else if(mt(t,c,Nn)&&u>=51){let p=f,y=X.u16(t,p+9),m=p+11,x=X.u32(t,m),b=X.u32(t,m+4),v=Math.abs(X.u32(t,m+8)|0),S=jn(X.u32(t,m+16));h<128&&(this._streams[h]={type:"video"}),this._videoCodec=(a=Wn[S])!=null?a:"h264";let T=b>0?b:X.u32(t,p),V=v>0?v:X.u32(t,p+4);T>0&&(this._headerVideoWidth=T),V>0&&(this._headerVideoHeight=V);let w=m+x,D=y-x;D<=0&&(D=u-11-x),D>0&&w+D<=f+u&&this._extractVideoConfigFromExtraData(t.subarray(w,w+D)),this._sendVideoMetadataFromHeader()}i=l}return 12+n}_parsePacket(t,i,n){let r=X.u16(t,i+2),a=i+4+r;if(a>t.length)return t.length;let s={offset:i+12,error:!1};if(s.offset>=t.length)return a;let l=t[s.offset++],c,u;if(l&128){let v=l&15;if(s.offset+v+2>t.length)return a;s.offset+=v,c=t[s.offset++],u=t[s.offset++]}else{if(c=l,s.offset>=t.length)return a;u=t[s.offset++]}let h=(c&1)!==0;this._readVar(t,s,c>>5,r),this._readVar(t,s,c>>1&3,0);let f=this._readVar(t,s,c>>3&3,0);if(s.error||s.offset+6>t.length)return a;let p=X.u32(t,s.offset);s.offset+=6;let y=128,m=1;if(h){if(s.offset>=t.length)return a;y=t[s.offset++],m=y&63}let x=a-f;if(x<s.offset||x>a)return a;let b=s.offset;for(let v=0;v<m&&b<x;v++){let S=this._parsePayload(t,b,u,y,p,x,h,n);if(S<=b)break;b=S}return a}_parsePayload(t,i,n,r,a,s,l,c){let u={offset:i,error:!1},h=t[u.offset++],f=(h&128)!==0,p=h&127,y=this._readVar(t,u,n>>4,0),m=this._readVar(t,u,n>>2&3,0),x=this._readVar(t,u,n&3,0);if(u.error)return t.length;let b=0,v=a;if(x>=8){if(u.offset+x>t.length)return t.length;b=X.u32(t,u.offset),v=X.u32(t,u.offset+4),u.offset+=x}else x>0&&(u.offset+=x);let S=l?this._readVar(t,u,r>>6&3,0):s-u.offset;if(u.error||S<=0||(S=Math.min(S,s-u.offset),S<=0))return u.offset;let T=c+u.offset,V=t.subarray(u.offset,u.offset+S),w=p<128?this._streams[p]:null;return(w==null?void 0:w.type)==="audio"?this._handlePayloadBuffer(this._audioBuffer,y,b,m,V,v,a,!l,D=>this._parseAudio(D,this._audioBuffer.pts)):(w==null?void 0:w.type)==="video"&&this._handlePayloadBuffer(this._videoBuffer,y,b,m,V,v,a,!l,(D,A)=>{var M;return this._dispatchVideoFrame(D,A.pts,A.packetTimestamp,A.keyframe?1:0,(M=A.streamPosition)!=null?M:0)},{keyframe:f,streamPosition:T}),u.offset+S}_resetPayloadBuffer(t){t.mediaObjectNumber=null,t.currentSize=0,t.chunks=[]}_handlePayloadBuffer(t,i,n,r,a,s,l,c,u,h){if(t.mediaObjectNumber!==i&&(t.chunks.length&&u(this._concatChunks(t),t),t.mediaObjectNumber=i,t.totalSize=n,t.currentSize=0,t.chunks=[],t.pts=s,t.packetTimestamp=l,h&&(t.keyframe=h.keyframe,t.streamPosition=h.streamPosition)),r!==t.currentSize){this._resetPayloadBuffer(t);return}t.chunks.push(a),t.currentSize+=a.length,(t.totalSize>0&&t.currentSize>=t.totalSize||t.totalSize===0&&c)&&(u(this._concatChunks(t),t),this._resetPayloadBuffer(t))}_concatChunks(t){let i=t.chunks;if(!i.length)return new Uint8Array(0);if(i.length===1)return i[0];let n=new Uint8Array(t.currentSize),r=0;for(let a of i)n.set(a,r),r+=a.length;return n}_updateNalHeader(t,i,n){let r=Kn(i);if(n&&!n(r))return!1;let a=this._nalHeaders[t];return a&&ke(a,r)?!1:(this._nalHeaders[t]=new Uint8Array(r),!0)}_extractVideoConfigFromExtraData(t){if(!t.length)return;if(this._videoCodec==="av1"){this._headerAv1c=t.slice();return}if(this._videoCodec==="vp9"){t.length>=12&&(this._headerVp9c=t.slice());return}if(this._videoCodec==="hevc"&&t[0]===1&&t.length>=23){this._isAVCC=!0;let n=23;for(let r=0,a=t[22];r<a&&!(n+3>t.length);r++){let s=t[n]&63,l=ft.u16(t,n+1);n+=3;for(let c=0;c<l&&!(n+2>t.length);c++){let u=ft.u16(t,n);if(n+=2,n+u>t.length)break;let h=t.subarray(n,n+u);s===32?this._updateNalHeader("vps",h):s===33?this._updateNalHeader("sps",h):s===34&&this._updateNalHeader("pps",h),n+=u}}return}else if(t[0]===1&&t.length>=7){this._isAVCC=!0;let n=6;if((t[5]&31)>0&&n+2<=t.length){let a=ft.u16(t,n);n+=2,n+a<=t.length&&(this._updateNalHeader("sps",t.subarray(n,n+a)),n+=a)}if(n<t.length&&t[n++]>0&&n+2<=t.length){let s=ft.u16(t,n);n+=2,n+s<=t.length&&this._updateNalHeader("pps",t.subarray(n,n+s))}return}this._isAVCC=!1;let i=this._videoCodec==="hevc";for(let{type:n,data:r}of this._getNalUnits(t,i))i?n===32&&!this._nalHeaders.vps?this._updateNalHeader("vps",r):n===33&&!this._nalHeaders.sps?this._updateNalHeader("sps",r):n===34&&!this._nalHeaders.pps&&this._updateNalHeader("pps",r):n===7&&!this._nalHeaders.sps&&$i.has(r[1])?this._updateNalHeader("sps",r):n===8&&!this._nalHeaders.pps&&this._updateNalHeader("pps",r)}_isAnnexB(t){if(this._isAVCC!==null)return!this._isAVCC;if(t.length<4)return!1;let i=t[0]===0&&t[1]===0&&(t[2]===1||t[2]===0&&t[3]===1);return this._isAVCC=!i&&ft.u32(t,0)+4<=t.length,!this._isAVCC}_getNalUnits(t,i){let n=[];if(this._isAnnexB(t)){let r=i?new Xt(t):new Kt(t),a;for(;a=r.readNextNaluPayload();)n.push({type:a.type,data:a.data})}else for(let r=0;r+4<=t.length;){let a=ft.u32(t,r);if(!a||r+4+a>t.length)break;let s=t.subarray(r+4,r+4+a);n.push({type:i?s[0]>>1&63:s[0]&31,data:s}),r+=4+a}return n}_configUnchanged(t,i){let n=this._sentVideoConfig[t];return!!(this._hasVideoMetaSent&&n&&ke(n,i))}_registerVideoMetadata(t,i,n,r){this.onTrackMetadata(t),this.onVideoTracksDiscovered&&this.onVideoTracksDiscovered([t]),this._hasVideoMetaSent=!0;let a=this._asfMediaInfo;a.videoCodec=i,a.width=n,a.height=r,t.profile&&(a.profile=t.profile),t.level&&(a.level=t.level),t.chromaFormat!==void 0&&(a.chromaFormat=t.chromaFormat===1?"4:2:0":t.chromaFormat===2?"4:2:2":t.chromaFormat===3?"4:4:4":"4:2:0"),i.startsWith("vp09")&&(a.refFrames=3),this._maybeEmitMediaInfo()}_sendVideoMetadataFromHeader(t=!1){var r,a,s,l,c,u,h,f,p,y,m,x,b,v,S,T,V,w,D,A,M,k,I,H,de,ne,oe,W,Q,le,$,be;if(this._hasVideoMetaSent&&!t)return;let i=null,n="";if(this._videoCodec==="av1"&&this._headerAv1c){let F=this._headerAv1c;if((F[0]&127)!==1){let ue=De.parseOBUs(F);if(ue){let R=jr(ue);R&&(this._headerAv1c=F=R)}}if(this._configUnchanged("av1c",F))return;let B=De.parseOBUs(F.subarray(4));if(!B)return;this._sentVideoConfig.av1c=F,n=B.codec_mimetype;let U=(a=(r=B.codec_size)==null?void 0:r.width)!=null?a:this._headerVideoWidth,te=(l=(s=B.codec_size)==null?void 0:s.height)!=null?l:this._headerVideoHeight;i={codecType:5,codec:n,codecConfig:F,codecWidth:U,codecHeight:te,presentWidth:(u=(c=B.present_size)==null?void 0:c.width)!=null?u:U,presentHeight:(f=(h=B.present_size)==null?void 0:h.height)!=null?f:te,profile:B.profile_string,level:B.level_string,bitDepth:B.bit_depth,chromaFormat:B.chroma_format,sarRatio:(p=B.sar_ratio)!=null?p:{width:1,height:1},frameRate:B.frame_rate.fixed?B.frame_rate:Ni}}else if(this._videoCodec==="vp9"){if(!this._headerVp9c||this._headerVp9c.length<12)return;let F=this._headerVp9c,B=4,U=F[B],te=F[B+1],ue=(F[B+2]&240)>>4,R=(F[B+2]&14)>>1,Ke=F[B+2]&1,Le=F[B+3],fe=F[B+4],me=F.length>=B+6?F[B+5]:2;if((U===2||ue===10||fe===16||fe===18||Le===9)&&(U<2&&(U=2),ue<10&&(ue=10),(Le===1||Le===2||Le===0)&&(Le=9),(fe===1||fe===2||fe===0)&&(fe=16),(me===1||me===2||me===0)&&(me=9),F=Yr(U,ue,Le,fe,me,Ke),this._headerVp9c=F),this._configUnchanged("vp9c",F)&&!t)return;let je=this._headerVideoWidth,ot=this._headerVideoHeight;if(je<=0||ot<=0)return;let Re=lt=>`${lt}`.padStart(2,"0");n=`vp09.${Re(U)}.${Re(te)}.${Re(ue)}.${Re(R)}.${Re(Le)}.${Re(fe)}.${Re(me)}.${Re(Ke)}`,this._sentVideoConfig.vp9c=F,i={codecType:4,codec:n,codecConfig:F,codecWidth:je,codecHeight:ot,presentWidth:je,presentHeight:ot,profile:`${U}`,level:`${te}`,bitDepth:ue,chromaFormat:R,colorRange:Ke,colourPrimaries:Le,transferCharacteristics:fe,matrixCoefficients:me}}else if(this._videoCodec==="hevc"&&this._nalHeaders.vps&&this._nalHeaders.sps&&this._nalHeaders.pps)try{let F=ht.parseSPS(this._nalHeaders.sps),B={parallelismType:1},U={num_temporal_layers:1,temporal_id_nested:!0};try{B=ht.parsePPS(this._nalHeaders.pps)}catch(Ke){}try{U=ht.parseVPS(this._nalHeaders.vps)}catch(Ke){}let te=new Qt(this._nalHeaders.vps,this._nalHeaders.sps,this._nalHeaders.pps,{configurationVersion:1,general_profile_space:(y=F.general_profile_space)!=null?y:0,general_tier_flag:F.general_tier_flag?1:0,general_profile_idc:(m=F.profile_idc)!=null?m:1,general_profile_compatibility_flags_1:(x=F.general_profile_compatibility_flags_1)!=null?x:0,general_profile_compatibility_flags_2:(b=F.general_profile_compatibility_flags_2)!=null?b:0,general_profile_compatibility_flags_3:(v=F.general_profile_compatibility_flags_3)!=null?v:0,general_profile_compatibility_flags_4:(S=F.general_profile_compatibility_flags_4)!=null?S:0,general_constraint_indicator_flags_1:(T=F.general_constraint_indicator_flags_1)!=null?T:0,general_constraint_indicator_flags_2:(V=F.general_constraint_indicator_flags_2)!=null?V:0,general_constraint_indicator_flags_3:(w=F.general_constraint_indicator_flags_3)!=null?w:0,general_constraint_indicator_flags_4:(D=F.general_constraint_indicator_flags_4)!=null?D:0,general_constraint_indicator_flags_5:(A=F.general_constraint_indicator_flags_5)!=null?A:0,general_constraint_indicator_flags_6:(M=F.general_constraint_indicator_flags_6)!=null?M:0,general_level_idc:(k=F.general_level_idc)!=null?k:90,min_spatial_segmentation_idc:(I=F.min_spatial_segmentation_idc)!=null?I:0,parallelismType:(H=B.parallelismType)!=null?H:1,chroma_format_idc:(de=F.chroma_format_idc)!=null?de:1,bit_depth_luma_minus8:(ne=F.bit_depth_luma_minus8)!=null?ne:0,bit_depth_chroma_minus8:(oe=F.bit_depth_chroma_minus8)!=null?oe:0,constant_frame_rate:(W=F.constant_frame_rate)!=null?W:0,num_temporal_layers:(Q=U.num_temporal_layers)!=null?Q:1,temporal_id_nested:(le=U.temporal_id_nested)!=null?le:!0}).getData();if(this._configUnchanged("hvcc",te))return;this._sentVideoConfig.hvcc=te,n=F.codec_mimetype;let ue=F.codec_size.width,R=F.codec_size.height;i={codecType:2,codec:n,codecConfig:te,codecWidth:ue,codecHeight:R,presentWidth:F.present_size.width,presentHeight:F.present_size.height,profile:F.profile_string,level:F.level_string,bitDepth:F.bit_depth,chromaFormat:F.chroma_format,sarRatio:F.sar_ratio,frameRate:F.frame_rate.fixed?F.frame_rate:Ni}}catch(F){return}else{let F=this._nalHeaders.sps,B=this._nalHeaders.pps;if(!F||!B||!$i.has(F[1])){this._nalHeaders.sps=this._nalHeaders.pps=null;return}let U;try{U=Wt.parseSPS(F)}catch(Ke){this._nalHeaders.sps=this._nalHeaders.pps=null;return}if(!(($=U==null?void 0:U.codec_size)!=null&&$.width)||!U.codec_size.height){this._nalHeaders.sps=this._nalHeaders.pps=null;return}let te=new jt(F,B,U).getData();if(this._configUnchanged("avcc",te))return;this._sentVideoConfig.avcc=te,n=`avc1.${F[1].toString(16).padStart(2,"0")}${F[2].toString(16).padStart(2,"0")}${F[3].toString(16).padStart(2,"0")}`;let ue=U.codec_size.width,R=U.codec_size.height;i={codecType:1,codec:n,codecConfig:te,codecWidth:ue,codecHeight:R,presentWidth:ue,presentHeight:R,profile:(be=qn[F[1]])!=null?be:`Profile ${F[1]}`,level:(F[3]/10).toFixed(1),chromaFormat:U.chroma_format_idc}}if(i){let F=j({type:"video",trackId:1,timescale:1e3,duration:0,colorRange:0,colourPrimaries:1,transferCharacteristics:1,matrixCoefficients:1,sarRatio:{width:1,height:1},frameRate:Ni,refFrameDuration:40},i);this._registerVideoMetadata(F,n,i.codecWidth,i.codecHeight)}}_parseAudioSpecificConfig(t){try{let i=new ut(new ct(t));return{config:new Uint8Array(i.config),samplingRate:i.sampling_rate,channelCount:i.channel_count,codec:i.codec_mimetype,originalCodec:i.original_codec_mimetype}}catch(i){return null}}_registerAudioMetadata(t,i,n,r,a){let s=this._audioCodec==="opus",l={type:"audio",codecType:s?3:2,codec:t,codecConfig:n,trackId:2,timescale:1e3,duration:0,audioSampleRate:s?48e3:r,channelCount:a,originalCodec:i,preSkipSamples:s?X.u16(n,2):0,inputSampleRate:r,outputGain:0,bitsPerSample:16,littleEndian:!1,refFrameDuration:s?20:1024/r*1e3};if(s){let u=new DataView(n.buffer,n.byteOffset,n.byteLength);l.inputSampleRate=u.getUint32(4,!0),l.outputGain=u.getInt16(8,!0)}this.onTrackMetadata(l),this._hasAudioMetaSent=!0,this._audioFrameDuration=l.refFrameDuration;let c=this._asfMediaInfo;c.audioCodec=l.originalCodec,c.audioSampleRate=l.audioSampleRate,c.audioChannelCount=l.channelCount,this._maybeEmitMediaInfo()}_sendAudioMetadataFromHeader(){var t,i,n;if(!(this._hasAudioMetaSent||!this._audioCodec)){if(this._audioCodec==="opus"){let r=Xn(this._headerAudioConfig,this._headerAudioChannels,this._headerAudioSampleRate);this._registerAudioMetadata("opus","opus",r,this._headerAudioSampleRate||48e3,this._headerAudioChannels||2);return}if((t=this._headerAudioConfig)!=null&&t.length){let r=this._parseAudioSpecificConfig(this._headerAudioConfig);if(r){this._registerAudioMetadata(r.codec,r.originalCodec,r.config,r.samplingRate,r.channelCount);return}}if(this._headerAudioChannels>0&&this._headerAudioSampleRate>0){let r=Ue.indexOf(this._headerAudioSampleRate),a=Kr(2,r>=0?r:4,this._headerAudioChannels),s=this._parseAudioSpecificConfig(a);this._registerAudioMetadata((i=s==null?void 0:s.codec)!=null?i:"mp4a.40.2",(n=s==null?void 0:s.originalCodec)!=null?n:"mp4a.40.2",a,this._headerAudioSampleRate,this._headerAudioChannels)}}}_parseAudio(t,i){var n,r,a,s,l;if(t.length){if(this._audioCodec==="aac"&&t.length>=7&&t[0]===255&&(t[1]&240)===240){let c=0;for(let u=0;u+7<=t.length&&!(t[u]!==255||(t[u+1]&240)!==240);){let h=((t[u+2]&192)>>6)+1,f=(t[u+2]&60)>>2,p=(t[u+2]&1)<<2|(t[u+3]&192)>>6,y=(t[u+3]&3)<<11|t[u+4]<<3|t[u+5]>>5&7,m=t[u+1]&1?7:9;if(y<m||u+y>t.length)break;if(!this._hasAudioMetaSent){let x=Kr(h,f,p),b=this._parseAudioSpecificConfig(x);this._registerAudioMetadata((n=b==null?void 0:b.originalCodec)!=null?n:`mp4a.40.${h}`,(r=b==null?void 0:b.originalCodec)!=null?r:`mp4a.40.${h}`,x,(s=(a=b==null?void 0:b.samplingRate)!=null?a:Ue[f])!=null?s:44100,(l=b==null?void 0:b.channelCount)!=null?l:p)}this._pushAudioFrame(t.subarray(u+m,u+y),i+c*this._audioFrameDuration),c++,u+=y}return}this._hasAudioMetaSent||this._sendAudioMetadataFromHeader(),this._pushAudioFrame(t,i)}}_pushAudioFrame(t,i){var s,l,c;if(!t.length||this._asfHasVideo&&!this._hasReceivedFirstKeyframe)return;this._baseTimestamp===null&&(this._baseTimestamp=i);let n=(l=(s=this._firstVideoPts)!=null?s:this._baseTimestamp)!=null?l:i,r=Math.max(0,i-n),a=(c=this._audioNextDts)!=null?c:this._asfTimestampBase+r;this._audioNextDts!==null&&Math.abs(this._asfTimestampBase+r-a)>500&&(a=this._asfTimestampBase+r),this._lastAudioDts!==null&&a<=this._lastAudioDts&&(a=this._lastAudioDts+1),this._lastAudioDts=a,this._audioNextDts=a+this._audioFrameDuration,this._asfAudioTrack.frames.push({unit:t,length:t.length,dts:a,pts:a}),this._asfAudioTrack.length+=t.length}_maybeEmitMediaInfo(){let t=this._asfMediaInfo;t.hasAudio=this._asfHasAudio,t.hasVideo=this._asfHasVideo,(!t.hasAudio||this._hasAudioMetaSent)&&(!t.hasVideo||this._hasVideoMetaSent)&&this.onMediaInfo(t)}_requireKeyframe(t,i,n){return this._hasReceivedFirstKeyframe?!0:t?(this._hasReceivedFirstKeyframe=!0,this._baseTimestamp===null&&(this._baseTimestamp=n),this._firstVideoPts===null&&(this._firstVideoPts=i),!0):!1}_getVideoTimestamp(t){let i=this._firstVideoPts!==null?Math.max(0,t-this._firstVideoPts):0;return this._lastVideoPts!==null&&i<=this._lastVideoPts&&(i=this._lastVideoPts+1),this._lastVideoPts=i,this._asfTimestampBase+i}_pushVideoFrame(t,i,n,r,a,s,l,c){let u={fileposition:t,dts:i,pts:n,cts:r,isKeyframe:a,units:s,length:l};c&&(u.rawData=c),this._videoTrack.frames.push(u),this._videoTrack.length+=l}_parseNalVideo(t,i,n,r,a,s){let l=(r&1)!==0;if(!this._requireKeyframe(l,i,n))return;let c=[],u=0,h=!1,f=!1;for(let{type:m,data:x}of this._getNalUnits(t,s)){if(s){if(m===32&&this._updateNalHeader("vps",x))h=!0;else if(m===33&&this._updateNalHeader("sps",x))h=!0;else if(m===34&&this._updateNalHeader("pps",x))h=!0;else if(m===35)continue;zn.has(m)&&(f=!0)}else{if(m===7&&this._updateNalHeader("sps",x,v=>$i.has(v[1])))h=!0;else if(m===8&&this._updateNalHeader("pps",x))h=!0;else if(m===9)continue;m===5&&(f=!0)}let b=s?new Yt({type:m,data:x}):new zt({type:m,data:x});c.push({type:m,data:b.data}),u+=b.data.length}if(f&&(l=!0),(s?this._nalHeaders.vps&&this._nalHeaders.sps&&this._nalHeaders.pps:this._nalHeaders.sps&&this._nalHeaders.pps)&&(!this._hasVideoMetaSent||h)&&this._sendVideoMetadataFromHeader(h),!this._hasVideoMetaSent||!c.length)return;let y=this._getVideoTimestamp(i);this._pushVideoFrame(a,y,y,0,l,c,u)}_parseAV1(t,i,n,r,a){let s=(r&1)!==0;try{let c=De.parseOBUs(t);c&&(this._headerAv1c||(this._headerAv1c=jr(c)),c.keyframe&&(s=!0))}catch(c){}if(!this._requireKeyframe(s,i,n)||(this._headerAv1c&&!this._hasVideoMetaSent&&this._sendVideoMetadataFromHeader(),!this._hasVideoMetaSent))return;let l=this._getVideoTimestamp(i);this._pushVideoFrame(a,l,l,0,s,[{type:0,data:t}],t.length,t)}_parseVP9(t,i,n,r,a){let s=(r&1)!==0;try{let c=_t.parseVp9Header(t);if(c.isValid){s=!0,c.width>0&&(this._headerVideoWidth=c.width),c.height>0&&(this._headerVideoHeight=c.height);let u=c.profile||0,h=c.bitDepth||(u>=2?10:8);(c.colorSpace===5||h===10)&&(u<2&&(u=2),h<10&&(h=10));let f=1,p=1,y=1;(c.colorSpace===5||u===2)&&(f=9,p=16,y=9);let m=Yr(u,h,f,p,y,c.colorRange);(!this._headerVp9c||!ke(this._headerVp9c,m))&&(this._headerVp9c=m,this._hasVideoMetaSent=!1)}}catch(c){}if(!this._requireKeyframe(s,i,n)||(this._headerVp9c&&!this._hasVideoMetaSent&&this._sendVideoMetadataFromHeader(!0),!this._hasVideoMetaSent))return;let l=this._getVideoTimestamp(i);this._pushVideoFrame(a,l,l,0,s,[{type:s?0:1,data:t}],t.length)}_dispatchVideoFrame(t,i,n,r,a){switch(this._videoCodec){case"hevc":case"h264":this._parseNalVideo(t,i,n,r,a,this._videoCodec==="hevc");break;case"av1":this._parseAV1(t,i,n,r,a);break;case"vp9":this._parseVP9(t,i,n,r,a);break}}};var g=class g{static init(){g.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],hvc1:[],hvcC:[],av01:[],av1C:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],chnl:[],".mp3":[],Opus:[],dOps:[],fLaC:[],dfLa:[],ipcm:[],pcmC:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[],vp08:[],vp09:[],vpcC:[],colr:[]};for(let t in g.types)g.types.hasOwnProperty(t)&&(g.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);let e=g.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,105,115,111,54,109,112,52,49]),e.FTYP_AV1=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,105,115,111,54,97,118,48,49,109,112,52,49]),e.FTYP_VP9=new Uint8Array([118,112,48,57,0,0,0,0,118,112,48,57,105,115,111,109,105,115,111,54]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),e.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e,...t){let i=8,n,r=t.length;for(let s=0;s<r;s++)i+=t[s].byteLength;n=new Uint8Array(i),n[0]=i>>>24&255,n[1]=i>>>16&255,n[2]=i>>>8&255,n[3]=i&255,n.set(e,4);let a=8;for(let s=0;s<r;s++)n.set(t[s],a),a+=t[s].byteLength;return n}static generateInitSegment(e){let t=g.constants.FTYP;e.type==="video"&&e.codec&&(e.codec.startsWith("av01")?t=g.constants.FTYP_AV1:e.codec.startsWith("vp09")&&(t=g.constants.FTYP_VP9));let i=g.box(g.types.ftyp,t),n=g.moov(e),r=new Uint8Array(i.byteLength+n.byteLength);return r.set(i,0),r.set(n,i.byteLength),r}static moov(e){let t=g.mvhd(e.timescale,e.duration),i=g.trak(e),n=g.mvex(e);return g.box(g.types.moov,t,i,n)}static mvhd(e,t){return g.box(g.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}static trak(e){return g.box(g.types.trak,g.tkhd(e),g.mdia(e))}static tkhd(e){let t=e.trackId,i=e.duration,n=(e.presentWidth||e.codecWidth||0)>>>0,r=(e.presentHeight||e.codecHeight||0)>>>0;return g.box(g.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,i&255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>>8&255,n&255,0,0,r>>>8&255,r&255,0,0]))}static mdia(e){return g.box(g.types.mdia,g.mdhd(e),g.hdlr(e),g.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return g.box(g.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,i>>>24&255,i>>>16&255,i>>>8&255,i&255,85,196,0,0]))}static hdlr(e){let t=null;return e.type==="audio"?t=g.constants.HDLR_AUDIO:t=g.constants.HDLR_VIDEO,g.box(g.types.hdlr,t)}static minf(e){let t=null;return e.type==="audio"?t=g.box(g.types.smhd,g.constants.SMHD):t=g.box(g.types.vmhd,g.constants.VMHD),g.box(g.types.minf,t,g.dinf(),g.stbl(e))}static dinf(){return g.box(g.types.dinf,g.box(g.types.dref,g.constants.DREF))}static stbl(e){return g.box(g.types.stbl,g.stsd(e),g.box(g.types.stts,g.constants.STTS),g.box(g.types.stsc,g.constants.STSC),g.box(g.types.stsz,g.constants.STSZ),g.box(g.types.stco,g.constants.STCO))}static stsd(e){return e.type==="audio"?e.codec==="mp3"?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.mp3(e)):e.codec==="ac-3"?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.ac3(e)):e.codec==="ec-3"?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.ec3(e)):e.codec==="opus"?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.Opus(e)):e.codec=="flac"?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.fLaC(e)):e.codec=="ipcm"?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.ipcm(e)):g.box(g.types.stsd,g.constants.STSD_PREFIX,g.mp4a(e)):e.type==="video"&&e.codec.startsWith("hvc1")?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.hvc1(e)):e.type==="video"&&e.codec.startsWith("av01")?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.av01(e)):e.type==="video"&&e.codec.startsWith("vp09")?g.box(g.types.stsd,g.constants.STSD_PREFIX,g.vp09(e)):g.box(g.types.stsd,g.constants.STSD_PREFIX,g.avc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return g.box(g.types[".mp3"],n)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return g.box(g.types.mp4a,n,g.esds(e))}static ac3(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return g.box(g.types["ac-3"],n,g.box(g.types.dac3,new Uint8Array(e.codecConfig)))}static ec3(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return g.box(g.types["ec-3"],n,g.box(g.types.dec3,new Uint8Array(e.codecConfig)))}static esds(e){var h;let t=Array.from(e.codecConfig||[]),i=t.length,n=f=>[128|f>>>21&127,128|f>>>14&127,128|f>>>7&127,f&127],r=5+i,a=6,s=13+r,l=8+s+a,c=Math.max(0,Math.trunc((h=e.bitRate)!=null?h:0)),u=new Uint8Array([0,0,0,0,3,...n(l),e.trackId>>>8&255,e.trackId&255,0,4,...n(s),64,21,0,0,0,c>>>24&255,c>>>16&255,c>>>8&255,c&255,c>>>24&255,c>>>16&255,c>>>8&255,c&255,5].concat([...n(i)]).concat(t).concat([6,...n(1),2]));return g.box(g.types.esds,u)}static Opus(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return g.box(g.types.Opus,n,g.dOps(e))}static dOps(e){let t=e.channelCount,i=e.channelConfigCode,n=e.audioSampleRate;if(e.codecConfig){let s=new Uint8Array(e.codecConfig).slice(),l=new DataView(s.buffer);return l.setUint8(0,0),l.setUint16(2,e.preSkipSamples,!1),l.setUint32(4,e.inputSampleRate,!1),l.setUint16(8,e.outputGain,!1),g.box(g.types.dOps,s)}let r=[];switch(i){case 1:case 2:r=[0];break;case 0:r=[255,1,1,0,1];break;case 128:r=[255,2,0,0,1];break;case 3:r=[1,2,1,0,2,1];break;case 4:r=[1,2,2,0,1,2,3];break;case 5:r=[1,3,2,0,4,1,2,3];break;case 6:r=[1,4,2,0,4,1,2,3,5];break;case 7:r=[1,4,2,0,4,1,2,3,5,6];break;case 8:r=[1,5,3,0,6,1,2,3,4,5,7];break;case 130:r=[1,1,2,0,1];break;case 131:r=[1,1,3,0,1,2];break;case 132:r=[1,1,4,0,1,2,3];break;case 133:r=[1,1,5,0,1,2,3,4];break;case 134:r=[1,1,6,0,1,2,3,4,5];break;case 135:r=[1,1,7,0,1,2,3,4,5,6];break;case 136:r=[1,1,8,0,1,2,3,4,5,6,7];break}let a=new Uint8Array([0,t,0,0,n>>>24&255,n>>>17&255,n>>>8&255,n>>>0&255,0,0,...r]);return g.box(g.types.dOps,a)}static fLaC(e){let t=e.channelCount,i=Math.min(e.audioSampleRate,65535),n=e.bitsPerSample,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,n,0,0,0,0,i>>>8&255,i&255,0,0]);return g.box(g.types.fLaC,r,g.dfLa(e))}static dfLa(e){let t=new Uint8Array([0,0,0,0,...e.codecConfig]);return g.box(g.types.dfLa,t)}static ipcm(e){let t=e.channelCount,i=Math.min(e.audioSampleRate,65535),n=e.bitsPerSample,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,n,0,0,0,0,i>>>8&255,i&255,0,0]);return e.channelCount===1?g.box(g.types.ipcm,r,g.pcmC(e)):g.box(g.types.ipcm,r,g.chnl(e),g.pcmC(e))}static chnl(e){let t=new Uint8Array([0,0,0,0,1,e.channelCount,0,0,0,0,0,0,0,0]);return g.box(g.types.chnl,t)}static pcmC(e){let t=e.littleEndian?1:0,i=e.bitsPerSample,n=new Uint8Array([0,0,0,0,t,i]);return g.box(g.types.pcmC,n)}static avc1(e){let t=e.codecConfig,i=e.codecWidth,n=e.codecHeight,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,i&255,n>>>8&255,n&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return g.box(g.types.avc1,r,g.box(g.types.avcC,t))}static hvc1(e){let t=e.codecConfig,i=e.codecWidth,n=e.codecHeight,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,i&255,n>>>8&255,n&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return g.box(g.types.hvc1,r,g.box(g.types.hvcC,t))}static buildVp9CodecConfig(e){let t=Number.isFinite(Number(e.profile))?Number(e.profile):0,i=Number.isFinite(Number(e.level))?Number(e.level):10,n=Number.isFinite(e.bitDepth)?e.bitDepth:8,r=Number.isFinite(e.chromaFormat)?e.chromaFormat:1,a=e.colorRange?1:0,s=Number.isFinite(e.colourPrimaries)?e.colourPrimaries:1,l=Number.isFinite(e.transferCharacteristics)?e.transferCharacteristics:1,c=Number.isFinite(e.matrixCoefficients)?e.matrixCoefficients:1;return new Uint8Array([1,0,0,0,t&255,i&255,(n&15)<<4|(r&7)<<1|a&1,s&255,l&255,c&255,0,0])}static normalizeVp9CodecConfig(e){let i=new Uint8Array(e);if(i.length===12)return i;if(i.length===9){let n=new Uint8Array(12);return n[0]=i[0]||1,n.set(i.subarray(1,9),4),n}if(i.length===8){let n=new Uint8Array(12);return n[0]=1,n.set(i,4),n}if(i.length===7){let n=new Uint8Array(12);return n[0]=i[0]||1,n.set(i.subarray(1,7),4),n}return null}static vp09(e){let t=e.codecConfig?g.normalizeVp9CodecConfig(e.codecConfig):null,i=e.codecWidth||e.presentWidth||192,n=e.codecHeight||e.presentHeight||108;t||(t=g.buildVp9CodecConfig(e));let r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,i&255,n>>>8&255,n&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]),a=[g.box(g.types.vpcC,t)],s=g.colr(e);return s&&a.push(s),g.box(g.types.vp09,r,...a)}static colr(e){let t=e.colourPrimaries,i=e.transferCharacteristics,n=e.matrixCoefficients,r=l=>Number.isFinite(l)&&l!==2;if(!r(t)||!r(i)||!r(n))return null;let a=e.colorRange?128:0,s=new Uint8Array([110,99,108,120,t>>>8&255,t&255,i>>>8&255,i&255,n>>>8&255,n&255,a]);return g.box(g.types.colr,s)}static av01(e){let t=e.codecConfig,i=e.codecWidth||192,n=e.codecHeight||108,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,i&255,n>>>8&255,n&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return g.box(g.types.av01,r,g.box(g.types.av1C,t))}static mvex(e){return g.box(g.types.mvex,g.trex(e))}static trex(e){let t=e.trackId,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return g.box(g.types.trex,i)}static moof(e,t){return g.box(g.types.moof,g.mfhd(e.sequenceNumber),g.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255]);return g.box(g.types.mfhd,t)}static traf(e,t){let i=e.id,n=g.box(g.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,i&255])),r=g.box(g.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255])),a=g.sdtp(e),s=g.trun(e,a.byteLength+16+16+8+16+8+8);return g.box(g.types.traf,n,r,s,a)}static sdtp(e){let t=e.frames||[],i=t.length,n=new Uint8Array(4+i);for(let r=0;r<i;r++){let a=t[r].flags;n[r+4]=a.isLeading<<6|a.dependsOn<<4|a.isDependedOn<<2|a.hasRedundancy}return g.box(g.types.sdtp,n)}static trun(e,t){let i=e.frames||[],n=i.length,r=!1;for(let u=0;u<n;u++)if(i[u].cts!==0){r=!0;break}let a=r?16:12,s=12+a*n,l=new Uint8Array(s);t+=8+s;let c=r?3841:1793;l.set([c>>>24&255,c>>>16&255,c>>>8&255,c&255,n>>>24&255,n>>>16&255,n>>>8&255,n&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255],0);for(let u=0;u<n;u++){let h=i[u].duration,f=i[u].size,p=i[u].flags,y=i[u].cts,m=[h>>>24&255,h>>>16&255,h>>>8&255,h&255,f>>>24&255,f>>>16&255,f>>>8&255,f&255,p.isLeading<<2|p.dependsOn,p.isDependedOn<<6|p.hasRedundancy<<4|p.isNonSync,0,0];r&&m.push(y>>>24&255,y>>>16&255,y>>>8&255,y&255),l.set(m,12+a*u)}return g.box(g.types.trun,l)}static mdat(e){return g.box(g.types.mdat,e)}};d(g,"types"),d(g,"constants");var ii=g;ii.init();var st=ii;var Gi=class{static getSilentFrame(e,t){if(e==="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])}else{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])}return null}},qi=Gi;var Ee=class{constructor(e,t,i,n,r){d(this,"dts");d(this,"pts");d(this,"duration");d(this,"originalDts");d(this,"isSyncPoint");d(this,"fileposition",null);this.dts=e,this.pts=t,this.duration=i,this.originalDts=n,this.isSyncPoint=r}},Xe=class{constructor(){d(this,"beginDts",0);d(this,"endDts",0);d(this,"beginPts",0);d(this,"endPts",0);d(this,"originalBeginDts",0);d(this,"originalEndDts",0);d(this,"syncPoints",[]);d(this,"firstFrame",null);d(this,"lastFrame",null)}appendSyncPoint(e){e.isSyncPoint=!0,this.syncPoints.push(e)}},ri=class{constructor(){d(this,"_list",[])}clear(){this._list=[]}appendArray(e){let t=this._list;e.length!==0&&(t.length>0&&e[0].originalDts<t[t.length-1].originalDts&&this.clear(),Array.prototype.push.apply(t,e))}getLastSyncPointBeforeDts(e){if(this._list.length==0)return null;let t=this._list,i=0,n=t.length-1,r=0,a=0,s=n;for(e<t[0].dts&&(i=0,a=s+1);a<=s;)if(r=a+Math.floor((s-a)/2),r===n||e>=t[r].dts&&e<t[r+1].dts){i=r;break}else t[r].dts<e?a=r+1:s=r-1;return this._list[i]}},Qe=class{constructor(e){d(this,"_type");d(this,"_list",[]);d(this,"_lastAppendLocation",-1);this._type=e}get type(){return this._type}get length(){return this._list.length}isEmpty(){return this._list.length===0}clear(){this._list=[],this._lastAppendLocation=-1}_searchNearestSegmentBefore(e){let t=this._list;if(t.length===0)return-2;let i=t.length-1,n=0,r=0,a=i,s=0;if(e<t[0].originalBeginDts)return s=-1,s;for(;r<=a;){let l=t[n].lastFrame;if(n=r+Math.floor((a-r)/2),n===i||l&&e>l.originalDts&&e<t[n+1].originalBeginDts){s=n;break}else t[n].originalBeginDts<e?r=n+1:a=n-1}return s}_searchNearestSegmentAfter(e){return this._searchNearestSegmentBefore(e)+1}append(e){let t=this._list,i=e,n=this._lastAppendLocation,r=0;n!==-1&&n<t.length&&t[n].lastFrame&&i.originalBeginDts>=t[n].lastFrame.originalDts&&(n===t.length-1||n<t.length-1&&i.originalBeginDts<t[n+1].originalBeginDts)?r=n+1:t.length>0&&(r=this._searchNearestSegmentBefore(i.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,i)}getLastSegmentBefore(e){let t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null}getLastFrameBefore(e){let t=this.getLastSegmentBefore(e);return t!=null?t.lastFrame:null}getLastSyncPointBefore(e){let t=this._searchNearestSegmentBefore(e),i=this._list[t].syncPoints;for(;i.length===0&&t>0;)t--,i=this._list[t].syncPoints;return i.length>0?i[i.length-1]:null}};function Ze(o){return`${Math.max(0,Math.trunc(o))}`.padStart(2,"0")}function Wi(o){return Number.isFinite(o)&&o!==2}function Qn(o){let e=Number.parseInt(o.profile,10),t=Number.parseInt(o.level,10),i=o.bitDepth;if(!Number.isFinite(e)||!Number.isFinite(t)||!Number.isFinite(i))return o.codec;let n=["vp09",Ze(e),Ze(t),Ze(i)];return!Number.isFinite(o.chromaFormat)||!Wi(o.colourPrimaries)||!Wi(o.transferCharacteristics)||!Wi(o.matrixCoefficients)||!Number.isFinite(o.colorRange)?n.join("."):n.concat([Ze(o.chromaFormat),Ze(o.colourPrimaries),Ze(o.transferCharacteristics),Ze(o.matrixCoefficients),Ze(o.colorRange?1:0)]).join(".")}function Zn(o){return o?o instanceof Uint8Array?o:ArrayBuffer.isView(o)?new Uint8Array(o.buffer,o.byteOffset,o.byteLength):o instanceof ArrayBuffer?new Uint8Array(o):typeof o.length=="number"?Uint8Array.from(o):null:null}function Qr(o,e=16){let t=Zn(o);return!t||t.byteLength===0?"empty":Array.from(t.subarray(0,Math.min(e,t.byteLength))).map(i=>i.toString(16).padStart(2,"0")).join(" ")}var ve=class ve extends we{constructor(t){var i,n;super(t);d(this,"_dtsBase",1/0);d(this,"_audioDtsBase",1/0);d(this,"_videoDtsBase",1/0);d(this,"_audioNextDts",1/0);d(this,"_videoNextDts",1/0);d(this,"_audioStashedLastFrame",null);d(this,"_videoStashedLastFrame",null);d(this,"_audioSegmentInfoList",new Qe("audio"));d(this,"_videoSegmentInfoList",new Qe("video"));d(this,"_onInitSegment",_e);d(this,"_onMediaSegment",_e);d(this,"_pendingAudioInitSegment",null);d(this,"_pendingVideoInitSegment",null);d(this,"_forceFirstIDR");d(this,"_fillSilentAfterSeek");d(this,"_mp3UseMpegAudio");d(this,"_fillAudioTimestampGap");this._forceFirstIDR=!!(Z.chrome&&Z.version&&(Z.version.major<50||Z.version.major===50&&Z.version.build&&Z.version.build<2661)),this._fillSilentAfterSeek=((i=Z)==null?void 0:i.msedge)||((n=Z)==null?void 0:n.msie)||!1,this._mp3UseMpegAudio=!Z.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}destroy(){this._dtsBase=1/0,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=1/0,this._videoNextDts=1/0,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._videoSegmentInfoList.clear(),this._pendingAudioInitSegment=null,this._pendingVideoInitSegment=null,this._onInitSegment=_e,this._onMediaSegment=_e}bindDataSource(t){return t.onTrackData=this._onTrackData.bind(this),t.onTrackMetadata=this._onTrackMetadata.bind(this),this}get onInitSegment(){return this._onInitSegment}set onInitSegment(t){this._onInitSegment=t}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(t){this._onMediaSegment=t}insertDiscontinuity(){this._audioNextDts=this._videoNextDts=1/0}clear(){this._audioStashedLastFrame=null,this._videoStashedLastFrame=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear(),this._pendingAudioInitSegment=null,this._pendingVideoInitSegment=null}_getMp4TrackId(t,i){return Number.isFinite(i)&&i>0?i:t==="video"?1:2}_getMp4Metadata(t){return ae(j({},t),{trackId:this._getMp4TrackId(t.type,t.trackId)})}_describeMetadata(t){let i=`type=${t.type} codec=${t.codec} duration=${t.duration}`;return t.type==="audio"&&(i+=` channels=${t.channelCount} sampleRate=${t.audioSampleRate}`,i+=` config=${Qr(t.codecConfig)}`),i}_describeInitSegment(t){return`type=${t.type} codec=${t.codec||"none"} container=${t.container} bytes=${t.data.byteLength} head=${Qr(t.data)}`}_onTrackData(t,i){this._dtsBase===1/0&&this._calculateDtsBase(t,i),this._pendingVideoInitSegment&&(_.v(ve.TAG,`_onTrackData(): flushing pending video init before data batch, videoFrames=${i.frames.length} audioFrames=${t.frames.length} ${this._describeInitSegment(this._pendingVideoInitSegment)}`),this._onInitSegment("video",this._pendingVideoInitSegment),this._pendingVideoInitSegment=null),this._pendingAudioInitSegment&&(_.v(ve.TAG,`_onTrackData(): flushing pending audio init before data batch, videoFrames=${i.frames.length} audioFrames=${t.frames.length} ${this._describeInitSegment(this._pendingAudioInitSegment)}`),this._onInitSegment("audio",this._pendingAudioInitSegment),this._pendingAudioInitSegment=null),this._remuxVideo(i,!1),this._remuxAudio(t,!1)}_onTrackMetadata(t){let i=null,n="mp4",r=t.codec,a=t.type;t.type==="audio"?(this._isAudioMetadataDispatched=!0,this._audioMeta=t,t.codec==="mp3"&&this._mp3UseMpegAudio?(n="mpeg",r="",i=new Uint8Array):i=st.generateInitSegment(this._getMp4Metadata(t))):(this._isVideoMetadataDispatched=!0,this._videoMeta=t,t.codecType===4&&(r=Qn(t)),i=st.generateInitSegment(this._getMp4Metadata(t)));let s={kind:0,type:a,data:new Uint8Array(i.buffer),codec:r,container:`${a}/${n}`,mediaDuration:t.duration};a==="audio"?(this._pendingAudioInitSegment?_.v(ve.TAG,`_onTrackMetadata(): replacing pending audio init ${this._describeInitSegment(this._pendingAudioInitSegment)} -> ${this._describeMetadata(t)}`):_.v(ve.TAG,`_onTrackMetadata(): stashing audio init from metadata ${this._describeMetadata(t)}`),this._pendingAudioInitSegment=s):(this._pendingVideoInitSegment?_.v(ve.TAG,`_onTrackMetadata(): replacing pending video init ${this._describeInitSegment(this._pendingVideoInitSegment)} -> ${this._describeMetadata(t)}`):_.v(ve.TAG,`_onTrackMetadata(): stashing video init from metadata ${this._describeMetadata(t)}`),this._pendingVideoInitSegment=s)}_calculateDtsBase(t,i){this._dtsBase===1/0&&(t&&t.frames&&t.frames.length&&(this._audioDtsBase=t.frames[0].dts),i&&i.frames&&i.frames.length&&(this._videoDtsBase=i.frames[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase))}get timestampBase(){if(this._dtsBase!==1/0)return this._dtsBase}flushStashedFrames(){let t=this._videoStashedLastFrame,i=this._audioStashedLastFrame,n={type:"video",id:1,sequenceNumber:0,frames:[],length:0};t!=null&&(n.frames.push(t),n.length=t.length);let r={type:"audio",id:2,sequenceNumber:0,frames:[],length:0};i!=null&&(r.frames.push(i),r.length=i.length),this._videoStashedLastFrame=null,this._audioStashedLastFrame=null,this._remuxVideo(n,!0),this._remuxAudio(r,!0)}_remuxAudio(t,i){if(!this._audioMeta||t.frames.length===0)return;this._pendingAudioInitSegment&&(_.v(ve.TAG,`_remuxAudio(): flushing pending audio init before audio remux, audioFrames=${t.frames.length} force=${i} ${this._describeInitSegment(this._pendingAudioInitSegment)}`),this._onInitSegment("audio",this._pendingAudioInitSegment),this._pendingAudioInitSegment=null);let n=t,r=n.frames,a,s=-1,l=-1,c=-1,u=this._audioMeta.refFrameDuration,h=this._audioMeta.codec==="mp3"&&this._mp3UseMpegAudio,f=this._dtsBase!==1/0&&this._audioNextDts===1/0,p=!1;if(r.length===1&&!i)return;let y=0,m=null,x=0;h?(y=0,x=n.length):(y=8,x=8+n.length);let b;if(r.length>1&&(b=r.pop(),x-=(b==null?void 0:b.length)||0),this._audioStashedLastFrame!=null){let A=this._audioStashedLastFrame;this._audioStashedLastFrame=null,r.unshift(A),x+=(A==null?void 0:A.length)||0}b!=null&&(this._audioStashedLastFrame=b);let v=r[0].dts-this._dtsBase;if(this._audioNextDts!==1/0)a=v-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())a=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&this._audioMeta.originalCodec!=="mp3"&&(p=!0);else{let A=this._audioSegmentInfoList.getLastFrameBefore(v);if(A!=null){let M=v-(A.originalDts+A.duration);M<=3&&(M=0);let k=A.dts+A.duration+M;a=v-k}else a=0}if(p){let A=v-a,M=this._videoSegmentInfoList.getLastSegmentBefore(v);if(M!=null&&M.beginDts<A){let k=qi.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);if(k){let I=M.beginDts,H=A-M.beginDts;_.v(ve.TAG,`InsertPrefixSilentAudio: dts: ${I}, duration: ${H}`),r.unshift({unit:k,length:k.byteLength,dts:I,pts:I}),x+=k.byteLength}}else p=!1}let S=[];for(let A=0;A<r.length;A++){let M=r[A],k=M.unit,I=M.dts-this._dtsBase,H=I,de=!1,ne=[],oe=0;if(!(I<-.001)){if(this._audioMeta.codec!=="mp3"&&!Number.isNaN(u)){let W=I,Q=3;if(this._audioNextDts!==1/0&&(W=this._audioNextDts),a=I-W,a<=-Q*u){_.w(ve.TAG,`Dropping 1 audio frame (originalDts: ${I} ms ,curRefDts: ${W} ms)  due to dtsCorrection: ${a} ms overlap.`);continue}else if(a>=Q*u&&this._fillAudioTimestampGap&&!Z.safari){de=!0;let le=Math.floor(a/u);_.w(ve.TAG,`Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.
originalDts: ${I} ms, curRefDts: ${W} ms, dtsCorrection: ${Math.round(a)} ms, generate: ${le} frames`),H=Math.floor(W),oe=Math.floor(W+u)-H;let $=qi.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);$===null&&(_.w(ve.TAG,`Unable to generate silent frame for ${this._audioMeta.originalCodec} with ${this._audioMeta.channelCount} channels, repeat last frame`),$=k);for(let be=0;be<le;be++){W=W+u;let F=Math.floor(W),B=Math.floor(W+u)-F,U={dts:F,pts:F,cts:0,unit:$,size:$.byteLength,duration:B,originalDts:I,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};ne.push(U),x+=U.size}this._audioNextDts=W+u}else H=Math.floor(W),oe=Math.floor(W+u)-H,this._audioNextDts=W+u}else H=I-a,A!==r.length-1?oe=r[A+1].dts-this._dtsBase-a-H:b!=null?oe=b.dts-this._dtsBase-a-H:S.length>=1?oe=S[S.length-1].duration:oe=Math.floor(u),this._audioNextDts=H+oe;s===-1&&(s=H),S.push({dts:H,pts:H,cts:0,unit:M.unit,size:M.unit.byteLength,duration:oe,originalDts:I,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),de&&S.push(...ne)}}if(S.length===0){n.frames=[],n.length=0;return}h?m=new Uint8Array(x):(m=new Uint8Array(x),m[0]=x>>>24&255,m[1]=x>>>16&255,m[2]=x>>>8&255,m[3]=x&255,m.set(st.types.mdat,4));for(let A=0;A<S.length;A++){let M=S[A].unit;m.set(M,y),y+=M.byteLength}let T=S[S.length-1];l=T.dts+T.duration;let V=new Xe;V.beginDts=s,V.endDts=l,V.beginPts=s,V.endPts=l,V.originalBeginDts=S[0].originalDts,V.originalEndDts=T.originalDts+T.duration,V.firstFrame=new Ee(S[0].dts,S[0].pts,S[0].duration,S[0].originalDts,!1),V.lastFrame=new Ee(T.dts,T.pts,T.duration,T.originalDts,!1),this._isLive||this._audioSegmentInfoList.append(V),n.frames=S,n.sequenceNumber++;let w=null;h?w=new Uint8Array:w=st.moof(ae(j({},n),{id:this._getMp4TrackId("audio",n.id)}),s),n.frames=[],n.length=0;let D={kind:1,type:"audio",data:new Uint8Array(this._mergeBoxes(w,m).buffer),frameCount:S.length,info:V};h&&f&&(D.timestampOffset=s),this._onMediaSegment("audio",D)}_remuxVideo(t,i){if(t.frames.length===0||t.frames.length===1&&!i)return;if(!this._videoMeta){_.w(ve.TAG,"_remuxVideo: VideoData received before CodecConfigurationRecord");return}this._pendingVideoInitSegment&&(this._onInitSegment("video",this._pendingVideoInitSegment),this._pendingVideoInitSegment=null);let n=t,r=n.frames,a,s=-1,l=-1,c=-1,u=-1,h=8,f=null,p=8+t.length,y;if(r.length>1&&(y=r.pop(),p-=(y==null?void 0:y.length)||0),this._videoStashedLastFrame!=null){let D=this._videoStashedLastFrame;this._videoStashedLastFrame=null,r.unshift(D),p+=D.length}y!=null&&(this._videoStashedLastFrame=y);let m=this._videoMeta.codecType===5,x=r[0].dts-this._dtsBase;if(this._videoNextDts!==1/0)a=x-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())a=0;else{let D=this._videoSegmentInfoList.getLastFrameBefore(x);if(D!=null){let A=x-(D.originalDts+D.duration);A<=3&&(A=0);let M=D.dts+D.duration+A;a=x-M}else a=0}let b=new Xe,v=[],S=0;for(let D=0;D<r.length;D++){let A=r[D],M=A.dts-this._dtsBase,k=A.isKeyframe,I=M-a,H=m?0:A.cts,de=I+H;s===-1&&(s=I,c=de);let ne=0;if(D!==r.length-1?ne=r[D+1].dts-this._dtsBase-a-I:y!=null?ne=y.dts-this._dtsBase-a-I:v.length>=1?ne=v[v.length-1].duration:ne=Math.floor(this._videoMeta.refFrameDuration),k){let Q=new Ee(I,de,ne,A.dts,!0);Q.fileposition=A.fileposition,b.appendSyncPoint(Q)}let oe=A.units,W=A.length;if(m){let Q=0;oe=A.units.map(le=>{let $=De.stripLeadingObuFraming(le.data);return Q+=$.byteLength,{type:le.type,data:$}}),W=Q,S+=Q}v.push({dts:I,pts:de,cts:H,units:oe,size:W,isKeyframe:k,duration:ne,originalDts:M,flags:{isLeading:0,dependsOn:k?2:1,isDependedOn:k?1:0,hasRedundancy:0,isNonSync:k?0:1}})}m&&(p=8+S),f=new Uint8Array(p),f[0]=p>>>24&255,f[1]=p>>>16&255,f[2]=p>>>8&255,f[3]=p&255,f.set(st.types.mdat,4);for(let D=0;D<v.length;D++){let A=v[D].units;for(;A.length;){let k=A.shift().data;f.set(k,h),h+=k.byteLength}}let T=v[v.length-1];if(l=T.dts+T.duration,u=T.pts+T.duration,this._videoNextDts=l,b.beginDts=s,b.endDts=l,b.beginPts=c,b.endPts=u,b.originalBeginDts=v[0].originalDts,b.originalEndDts=T.originalDts+T.duration,b.firstFrame=new Ee(v[0].dts,v[0].pts,v[0].duration,v[0].originalDts,v[0].isKeyframe),b.lastFrame=new Ee(T.dts,T.pts,T.duration,T.originalDts,T.isKeyframe),this._isLive||this._videoSegmentInfoList.append(b),n.frames=v,n.sequenceNumber++,this._forceFirstIDR){let D=v[0].flags;D.dependsOn=2,D.isNonSync=0}let V=st.moof(ae(j({},n),{id:this._getMp4TrackId("video",n.id)}),s);n.frames=[],n.length=0;let w={kind:1,type:"video",data:new Uint8Array(this._mergeBoxes(V,f).buffer),frameCount:v.length,info:b};this._onMediaSegment("video",w)}_mergeBoxes(t,i){let n=new Uint8Array(t.byteLength+i.byteLength);return n.set(t,0),n.set(i,t.byteLength),n}};d(ve,"TAG","MP4Remuxer");var zi=ve,Ki=zi;var ni=0;function Je(o){return new TextEncoder().encode(o)}function Jn(o){let e=new ArrayBuffer(8);return new DataView(e).setFloat64(0,o,!1),new Uint8Array(e)}function $e(o){return o<=255?Y(o,1):o<=65535?Y(o,2):o<=16777215?Y(o,3):Y(o,4)}function Y(o,e){let t=new Uint8Array(e);for(let i=e-1;i>=0;i--)t[i]=o&255,o>>=8;return t}function ea(o){_.a(ze.TAG,`writeVint assert failed: value of ${o} > 0xFFFFFFF`,o>=0&&o<=4294967295);let e=0,t=o+1;do e++;while((t>>>=7)>0&&e<8);let i=new Uint8Array(e);t=o|1<<e*7;for(let n=e-1,r=0;n>=0;n--,r++)i[r]=t>>n*8&255;return i}function L(o,e){let t=$e(o),i=ea(e.length);return K([t,i,e])}function K(o){let e=o.reduce((n,r)=>n+r.length,0),t=new Uint8Array(e),i=0;for(let n of o)t.set(n,i),i+=n.length;return t}function ta(o){switch(o){case 4:return"V_VP9";case 5:return"V_AV1";default:return _.a(ze.TAG,`GetCodecId(): Unsupported codec ${ti[o]}`),""}}function ia(o){let e=Number(o.profile),t=Number(o.level),i=o.bitDepth,n=o.chromaFormat;return K([[1,e],[2,t],[3,i],[4,n]].map(([a,s])=>new Uint8Array([a,1,s&255])))}function ra(o){let e=[];if(Number.isFinite(o.matrixCoefficients)&&e.push(L(21937,$e(o.matrixCoefficients))),Number.isFinite(o.bitDepth)&&e.push(L(21938,$e(o.bitDepth))),Number.isFinite(o.colorRange)){let t=o.colorRange>0?2:1;e.push(L(21945,$e(t)))}return Number.isFinite(o.transferCharacteristics)&&e.push(L(21946,$e(o.transferCharacteristics))),Number.isFinite(o.colourPrimaries)&&e.push(L(21947,$e(o.colourPrimaries))),e.length===0?null:L(21936,K(e))}var Fe=class Fe{static generateVideoInitSegment(e){let t=e.codecWidth,i=e.codecHeight,n=e.codecConfig,r=e.codecType===4?ia(e):n,a=ra(e);if(!r)return _.e(Fe.TAG,"generateVideoInitSegment(): Missing codec configuration for video track"),new Uint8Array(0);let s=L(440786851,K([L(17030,Y(1,1)),L(17143,Y(1,1)),L(17138,Y(4,1)),L(17139,Y(8,1)),L(17026,Je("webm")),L(17031,Y(2,1)),L(17029,Y(2,1))])),l=L(357149030,K([L(2807729,Y(1e6,3)),L(19840,Je("e-remux")),L(22337,Je("e-remux"))])),c=[L(176,Y(t,2)),L(186,Y(i,2)),...a?[a]:[]],u=L(174,K([L(215,Y(1,1)),L(29637,Y(1,1)),L(131,Y(1,1)),L(134,Je(ta(e.codecType))),L(25506,r),L(224,K(c))])),h=L(374648427,K([u])),f=K([l,h]),p=new Uint8Array([24,83,128,103,255]),y=K([p,f]);return K([s,y])}static generateAudioInitSegment(e){let t=e.codecConfig,i=e.codec,n=i==="opus",r=n?48e3:e.audioSampleRate,a=e.channelCount,s=Math.round(e.preSkipSamples*(1e9/r)),l=8e7;if(!t)return _.e(Fe.TAG,"generateAudioInitSegment(): Missing codec configuration for audio track"),new Uint8Array(0);let c;switch(i){case"opus":c="A_OPUS";break;case"vorbis":c="A_VORBIS";break;default:return _.w(Fe.TAG,`generateAudioInitSegment: Unsupported codec ${i}`),new Uint8Array}let u=L(440786851,K([L(17030,Y(1,1)),L(17143,Y(1,1)),L(17138,Y(4,1)),L(17139,Y(8,1)),L(17026,Je("webm")),L(17031,Y(2,1)),L(17029,Y(2,1))])),h=L(357149030,K([L(2807729,Y(1e6,3)),L(19840,Je("e-remux")),L(22337,Je("e-remux"))])),f=L(174,K([L(215,Y(2,1)),L(29637,Y(2,1)),L(131,Y(2,1)),L(134,Je(c)),L(25506,t),...n?[L(22186,$e(s)),L(22203,$e(l))]:[],L(225,K([L(181,Jn(r)),L(159,Y(a,1))]))])),p=L(374648427,K([f])),y=K([h,p]),m=new Uint8Array([24,83,128,103,255]),x=K([m,y]),b=K([u,x]);return _.v(Fe.TAG,`generateAudioInitSegment() codec=${i}, sampleRate=${r}, channels=${a}, codecConfig.length=${t.length}`),b}static generateVideoCluster(e,t,i,n){let r=e[t].dts,a=L(231,$e(r)),s=0,l,c=e[e.length-1].dts-e[t].dts;(c<0||c>32767)&&_.w(Fe.TAG,`generateVideoCluster() - cluster contains blockTimecode(s) out of range; clusterDTS: ${r} dtsDelta: ${c} framesToProcess: ${e.length-t}`),e[0].isKeyframe||_.e(Fe.TAG,"Cluster must start with a keyframe");let u=[];for(let h=t;h<e.length;h++){let{rawData:f,dts:p,isKeyframe:y}=e[h],m=p-r;if(m<0||m>32767){s=h;break}if(h>t&&y&&_.e(Fe.TAG,`generateVideoCluster() - Frame at index ${h} is a keyframe but not the first frame in the cluster.`),ni===0||ni===2&&h<e.length-1){let b=new Uint8Array(4);b[0]=129,b[1]=m>>8&255,b[2]=m&255,b[3]=y?128:0;let v=n===5?De.stripLeadingObuFraming(f):f,S=L(163,K([b,v]));u.push(S)}else{let b=new Uint8Array(4);b[0]=129,b[1]=m>>8&255,b[2]=m&255,b[3]=y?128:0;let v=n===5?De.stripLeadingObuFraming(f):f,S=L(161,K([b,v])),T=L(155,Y(i,4)),V=L(160,K([S,T]));u.push(V)}}if(s>0){let h=L(524531317,K([a,...u])),f=Fe.generateVideoCluster(e,s,i,n);l=K([h,f])}else l=L(524531317,K([a,...u]));return l}static generateAudioCluster(e,t,i){let n=e[t].dts,r=L(231,$e(n)),a=0,s,l=e[e.length-1].dts-e[t].dts;(l<0||l>32767)&&_.w(Fe.TAG,`generateAudioCluster() - cluster contains blockTimecode(s) out of range; clusterDTS: ${n} dtsDelta: ${l} framesToProcess: ${e.length-t}`);let c=[];for(let u=t;u<e.length;u++){let{unit:h,dts:f}=e[u],p=f-n;if(p<0||p>32767){a=u;break}if(ni===0||ni===2&&u<e.length-1){let m=new Uint8Array(4);m[0]=130,m[1]=p>>8&255,m[2]=p&255,m[3]=0;let x=L(163,K([m,h]));c.push(x)}else{let m=new Uint8Array(3);m[0]=130,m[1]=p>>8&255,m[2]=p&255;let x=L(161,K([m,h])),b=L(155,Y(i,4)),v=L(160,K([x,b]));c.push(v)}}if(a>0){let u=L(524531317,K([r,...c])),h=Fe.generateAudioCluster(e,a,i);s=K([u,h])}else s=L(524531317,K([r,...c]));return s}};d(Fe,"TAG","WebMGenerator");var ze=Fe;var et=class et extends we{constructor(){super(...arguments);d(this,"_dtsBase",1/0);d(this,"_audioDtsBase",1/0);d(this,"_videoDtsBase",1/0);d(this,"_audioNextDts",1/0);d(this,"_videoNextDts",1/0);d(this,"_audioStashedLastFrame",null);d(this,"_videoStashedLastFrame",null);d(this,"_refVideoFrameDuration",33.333333333333336);d(this,"_refAudioFrameDuration",20);d(this,"_audioSegmentInfoList",new Qe("audio"));d(this,"_videoSegmentInfoList",new Qe("video"));d(this,"_pendingVideoFrames",[]);d(this,"_onInitSegment",_e);d(this,"_onMediaSegment",_e);d(this,"_onTrackData",(t,i)=>{_.a(et.TAG,"onMediaSegment callback must be specificed!",this._onMediaSegment),this._dtsBase===1/0&&this._calculateDtsBase(t,i),this._remuxVideo(i),this._remuxAudio(t)});d(this,"_onTrackMetadata",t=>{_.a(et.TAG,"onTrackMetadata: onInitSegment callback must be specified!",this._onInitSegment);let i;if(t.type==="audio"){let r=this._audioMeta=t;this._refAudioFrameDuration=Number.isFinite(r.refFrameDuration)?r.refFrameDuration:this._refAudioFrameDuration,i=ze.generateAudioInitSegment(r),this._isAudioMetadataDispatched=!0}else{let r=this._videoMeta=t;this._refVideoFrameDuration=Number.isFinite(r.refFrameDuration)?r.refFrameDuration:this._refVideoFrameDuration,i=ze.generateVideoInitSegment(r),this._isVideoMetadataDispatched=!0}let n={kind:0,type:t.type,data:i,codec:`${t.codec}`,container:t.type==="audio"?"audio/webm":"video/webm",mediaDuration:t.duration};this._onInitSegment(t.type,n)})}destroy(){this._onInitSegment=_e,this._onMediaSegment=_e,this.clear()}get onInitSegment(){return this._onInitSegment}set onInitSegment(t){this._onInitSegment=t}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(t){this._onMediaSegment=t}bindDataSource(t){return t.onTrackData=this._onTrackData,t.onTrackMetadata=this._onTrackMetadata,this}insertDiscontinuity(){this._audioNextDts=this._videoNextDts=1/0}clear(){this._dtsBase=1/0,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=1/0,this._videoNextDts=1/0,this._videoMeta=null,this._audioMeta=null,this._audioStashedLastFrame=null,this._videoStashedLastFrame=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear(),this._pendingVideoFrames=[]}get timestampBase(){return this._dtsBase!==1/0?this._dtsBase:void 0}flushStashedFrames(){let t=this._videoStashedLastFrame,i=this._audioStashedLastFrame,n={type:"video",id:1,sequenceNumber:0,frames:[],length:0};t!=null&&(n.frames.push(t),n.length=t.length);let r={type:"audio",id:2,sequenceNumber:0,frames:[],length:0};i!=null&&(r.frames.push(i),r.length=i.length),this._videoStashedLastFrame=null,this._audioStashedLastFrame=null,this._remuxVideo(n,!0),this._remuxAudio(r,!0)}_calculateDtsBase(t,i){this._dtsBase===1/0&&(t.frames.length>0&&(this._audioDtsBase=t.frames[0].dts),i.frames.length>0&&(this._videoDtsBase=i.frames[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase))}_flushPendingVideoFrames(){if(this._pendingVideoFrames.length===0)return;let t=new Xe,i=this._pendingVideoFrames[0],n=this._pendingVideoFrames[this._pendingVideoFrames.length-1];if(i.isKeyframe||_.e(et.TAG,"Pending video frames must start with a keyframe"),i.isKeyframe){let s=new Ee(i.dts,i.pts,0,i.dts,!0);t.appendSyncPoint(s)}t.beginDts=i.dts,t.endDts=n.dts,t.beginPts=i.pts,t.endPts=n.pts,t.originalBeginDts=i.dts,t.originalEndDts=n.dts,t.firstFrame=new Ee(i.dts,i.pts,0,i.dts,i.isKeyframe),t.lastFrame=new Ee(n.dts,n.pts,0,n.dts,n.isKeyframe);let r=ze.generateVideoCluster(this._pendingVideoFrames,0,this._refVideoFrameDuration,this._videoMeta.codecType),a={kind:1,type:"video",data:r,frameCount:this._pendingVideoFrames.length,info:t};this._onMediaSegment("video",a),this._pendingVideoFrames=[]}_remuxVideo(t,i=!1){if(!(t.frames.length===0&&!i)){if(!this.isVideoMetadataDispatched){_.w(et.TAG,"_remuxVideo: VideoData received before CodecConfigurationRecord");return}for(let n of t.frames)n.isKeyframe&&(this._flushPendingVideoFrames(),t.sequenceNumber++),this._pendingVideoFrames.push(n);i&&this._flushPendingVideoFrames(),t.frames=[],t.length=0}}_remuxAudio(t,i=!1){if(t.frames.length===0)return;if(!this._isAudioMetadataDispatched){_.w(et.TAG,"_remuxAudio: AudioData received before CodecConfigurationRecord");return}let n=t,r=n.frames,a=-1,s=-1;if(r.length===1&&!i)return;let l;if(r.length>1&&(l=r.pop()),this._audioStashedLastFrame!=null){let p=this._audioStashedLastFrame;this._audioStashedLastFrame=null,r.unshift(p)}if(l!=null&&(this._audioStashedLastFrame=l),r.length===0)return;let c=r[0].dts-this._dtsBase;if(this._audioNextDts!==1/0){let p=c-this._audioNextDts;for(let y=0;y<r.length;y++)r[y].dts=r[y].dts-p}else this._audioNextDts=c;a=r[0].dts,s=r[r.length-1].dts,this._audioNextDts=s+this._refAudioFrameDuration;let u=ze.generateAudioCluster(r,0,this._refAudioFrameDuration),h=new Xe;h.beginDts=a,h.endDts=s,h.beginPts=a,h.endPts=s,h.originalBeginDts=c,h.originalEndDts=r[r.length-1].dts-this._dtsBase,h.firstFrame=new Ee(a,a,this._refAudioFrameDuration,r[0].length,!1),h.lastFrame=new Ee(s,s,this._refAudioFrameDuration,r[r.length-1].length,!1),this._audioSegmentInfoList.append(h);let f={kind:1,type:"audio",data:u,frameCount:r.length,info:h};this._onMediaSegment&&this._onMediaSegment("audio",f),n.frames=[],n.length=0}};d(et,"TAG","WebMRemuxer");var Mt=et;var ji=class{constructor(){this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}reset(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0}addBytes(e){this._firstCheckpoint===0?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())}get currentKBps(){this.addBytes(0);let e=(this._now()-this._lastCheckpoint)/1e3;return e==0&&(e=1),this._intervalBytes/e/1024}get lastSecondKBps(){return this.addBytes(0),this._lastSecondBytes!==0?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0}get averageKBps(){let e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}},ai=ji;var P={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4},G={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"},Te=class{constructor(e){this._type=e||"undefined",this._status=P.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}destroy(){this._status=P.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}isWorking(){return this._status===P.kConnecting||this._status===P.kBuffering}get type(){return this._type}get status(){return this._status}get needStashBuffer(){return this._needStash}get onContentLengthKnown(){return this._onContentLengthKnown}set onContentLengthKnown(e){this._onContentLengthKnown=e}get onURLRedirect(){return this._onURLRedirect}set onURLRedirect(e){this._onURLRedirect=e}get onDataArrival(){return this._onDataArrival}set onDataArrival(e){this._onDataArrival=e}get onError(){return this._onError}set onError(e){this._onError=e}get onComplete(){return this._onComplete}set onComplete(e){this._onComplete=e}open(e,t){throw new Rt("Unimplemented abstract function!")}abort(){throw new Rt("Unimplemented abstract function!")}};var Yi=class extends Te{static isSupported(){try{let e=Z.msedge&&Z.version.minor>=15048,t=Z.msedge?e:!0;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}}constructor(e,t){super("fetch-stream-loader"),this.TAG="FetchStreamLoader",this._seekHandler=e,this._config=t,this._needStash=!0,this._requestAbort=!1,this._abortController=null,this._contentLength=null,this._receivedLength=0}destroy(){this.isWorking()&&this.abort(),super.destroy()}open(e,t){this._dataSource=e,this._range=t;let i=e.url;this._config.reuseRedirectedURL&&e.redirectedURL!=null&&(i=e.redirectedURL);let n=this._seekHandler.getConfig(i,t),r=new self.Headers;if(typeof n.headers=="object"){let s=n.headers;for(let l in s)s.hasOwnProperty(l)&&r.append(l,s[l])}let a={method:"GET",headers:r,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if(typeof this._config.headers=="object")for(let s in this._config.headers)r.append(s,this._config.headers[s]);e.cors===!1&&(a.mode="same-origin"),e.withCredentials&&(a.credentials="include"),e.referrerPolicy&&(a.referrerPolicy=e.referrerPolicy),self.AbortController&&(this._abortController=new self.AbortController,a.signal=this._abortController.signal),this._status=P.kConnecting,self.fetch(n.url,a).then(s=>{if(this._requestAbort){this._status=P.kIdle,s.body.cancel();return}if(s.ok&&s.status>=200&&s.status<=299){if(s.url!==n.url&&this._onURLRedirect){let c=this._seekHandler.removeURLParameters(s.url);this._onURLRedirect(c)}let l=s.headers.get("Content-Length");return l!=null&&(this._contentLength=parseInt(l),this._contentLength!==0&&this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)),this._pump.call(this,s.body.getReader())}else if(this._status=P.kError,this._onError)this._onError(G.HTTP_STATUS_CODE_INVALID,{code:s.status,msg:s.statusText});else throw new J("FetchStreamLoader: Http code invalid, "+s.status+" "+s.statusText)}).catch(s=>{if(!(this._abortController&&this._abortController.signal.aborted))if(this._status=P.kError,this._onError)this._onError(G.EXCEPTION,{code:-1,msg:s.message});else throw s})}abort(){if(this._requestAbort=!0,(this._status!==P.kBuffering||!Z.chrome)&&this._abortController)try{this._abortController.abort()}catch(e){}}_pump(e){return e.read().then(t=>{if(t.done)if(this._contentLength!==null&&this._receivedLength<this._contentLength){this._status=P.kError;let i=G.EARLY_EOF,n={code:-1,msg:"Fetch stream meet Early-EOF"};if(this._onError)this._onError(i,n);else throw new J(n.msg)}else this._status=P.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1);else{if(this._abortController&&this._abortController.signal.aborted){this._status=P.kComplete;return}else if(this._requestAbort===!0)return this._status=P.kComplete,e.cancel();this._status=P.kBuffering;let i=t.value.buffer,n=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,n,this._receivedLength),this._pump(e)}}).catch(t=>{if(this._abortController&&this._abortController.signal.aborted){this._status=P.kComplete;return}if(t.code===11&&Z.msedge)return;this._status=P.kError;let i=0,n=null;if((t.code===19||t.message==="network error")&&(this._contentLength===null||this._contentLength!==null&&this._receivedLength<this._contentLength)?(i=G.EARLY_EOF,n={code:t.code,msg:"Fetch stream meet Early-EOF"}):(i=G.EXCEPTION,n={code:t.code,msg:t.message}),this._onError)this._onError(i,n);else throw new J(n.msg)})}},Xi=Yi;var Qi=class extends Te{static isSupported(){try{let e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="moz-chunked-arraybuffer",e.responseType==="moz-chunked-arraybuffer"}catch(e){return _.w("MozChunkedLoader",e.message),!1}}constructor(e,t){super("xhr-moz-chunked-loader"),this.TAG="MozChunkedLoader",this._seekHandler=e,this._config=t,this._needStash=!0,this._xhr=null,this._requestAbort=!1,this._contentLength=null,this._receivedLength=0}destroy(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onloadend=null,this._xhr.onerror=null,this._xhr=null),super.destroy()}open(e,t){this._dataSource=e,this._range=t;let i=e.url;this._config.reuseRedirectedURL&&e.redirectedURL!=null&&(i=e.redirectedURL);let n=this._seekHandler.getConfig(i,t);this._requestURL=n.url;let r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="moz-chunked-arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onloadend=this._onLoadEnd.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),typeof n.headers=="object"){let a=n.headers;for(let s in a)a.hasOwnProperty(s)&&r.setRequestHeader(s,a[s])}if(typeof this._config.headers=="object"){let a=this._config.headers;for(let s in a)a.hasOwnProperty(s)&&r.setRequestHeader(s,a[s])}this._status=P.kConnecting,r.send()}abort(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=P.kComplete}_onReadyStateChange(e){let t=e.target;if(t.readyState===2){if(t.responseURL!=null&&t.responseURL!==this._requestURL&&this._onURLRedirect){let i=this._seekHandler.removeURLParameters(t.responseURL);this._onURLRedirect(i)}if(t.status!==0&&(t.status<200||t.status>299))if(this._status=P.kError,this._onError)this._onError(G.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText});else throw new J("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);else this._status=P.kBuffering}}_onProgress(e){if(this._status===P.kError)return;this._contentLength===null&&e.total!==null&&e.total!==0&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));let t=e.target.response,i=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}_onLoadEnd(e){if(this._requestAbort===!0){this._requestAbort=!1;return}else if(this._status===P.kError)return;this._status=P.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)}_onXhrError(e){this._status=P.kError;let t=0,i=null;if(this._contentLength&&e.loaded<this._contentLength?(t=G.EARLY_EOF,i={code:-1,msg:"Moz-Chunked stream meet Early-Eof"}):(t=G.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),this._onError)this._onError(t,i);else throw new J(i.msg)}},Zi=Qi;var Ji=class extends Te{static isSupported(){try{let e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="arraybuffer",e.responseType==="arraybuffer"}catch(e){return _.w("RangeLoader",e.message),!1}}constructor(e,t){super("xhr-range-loader"),this.TAG="RangeLoader",this._seekHandler=e,this._config=t,this._needStash=!1,this._chunkSizeKBList=[128,256,384,512,768,1024,1536,2048,3072,4096,5120,6144,7168,8192],this._currentChunkSizeKB=384,this._currentSpeedNormalized=0,this._zeroSpeedChunkCount=0,this._xhr=null,this._speedSampler=new ai,this._requestAbort=!1,this._waitForTotalLength=!1,this._totalLengthReceived=!1,this._currentRequestURL=null,this._currentRedirectedURL=null,this._currentRequestRange=null,this._totalLength=null,this._contentLength=null,this._receivedLength=0,this._lastTimeLoaded=0}destroy(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr=null),super.destroy()}get currentSpeed(){return this._speedSampler.lastSecondKBps}open(e,t){this._dataSource=e,this._range=t,this._status=P.kConnecting;let i=!1;this._dataSource.filesize!=null&&this._dataSource.filesize!==0&&(i=!0,this._totalLength=this._dataSource.filesize),!this._totalLengthReceived&&!i?(this._waitForTotalLength=!0,this._internalOpen(this._dataSource,{from:0,to:-1})):this._openSubRange()}_openSubRange(){let e=this._currentChunkSizeKB*1024,t=this._range.from+this._receivedLength,i=t+e;this._contentLength!=null&&i-this._range.from>=this._contentLength&&(i=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:i},this._internalOpen(this._dataSource,this._currentRequestRange)}_internalOpen(e,t){this._lastTimeLoaded=0;let i=e.url;this._config.reuseRedirectedURL&&(this._currentRedirectedURL!=null?i=this._currentRedirectedURL:e.redirectedURL!=null&&(i=e.redirectedURL));let n=this._seekHandler.getConfig(i,t);this._currentRequestURL=n.url;let r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),typeof n.headers=="object"){let a=n.headers;for(let s in a)a.hasOwnProperty(s)&&r.setRequestHeader(s,a[s])}if(typeof this._config.headers=="object"){let a=this._config.headers;for(let s in a)a.hasOwnProperty(s)&&r.setRequestHeader(s,a[s])}r.send()}abort(){this._requestAbort=!0,this._internalAbort(),this._status=P.kComplete}_internalAbort(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}_onReadyStateChange(e){let t=e.target;if(t.readyState===2){if(t.responseURL!=null){let i=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&i!==this._currentRedirectedURL&&(this._currentRedirectedURL=i,this._onURLRedirect&&this._onURLRedirect(i))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=P.kBuffering}else if(this._status=P.kError,this._onError)this._onError(G.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText});else throw new J("RangeLoader: Http code invalid, "+t.status+" "+t.statusText)}}_onProgress(e){if(this._status===P.kError)return;if(this._contentLength===null){let i=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,i=!0;let n=e.total;this._internalAbort(),n!=null&n!==0&&(this._totalLength=n)}if(this._range.to===-1?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,i){this._openSubRange();return}this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}let t=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(t)}_normalizeSpeed(e){let t=this._chunkSizeKBList,i=t.length-1,n=0,r=0,a=i;if(e<t[0])return t[0];for(;r<=a;){if(n=r+Math.floor((a-r)/2),n===i||e>=t[n]&&e<t[n+1])return t[n];t[n]<e?r=n+1:a=n-1}}_onLoad(e){if(this._status===P.kError)return;if(this._waitForTotalLength){this._waitForTotalLength=!1;return}this._lastTimeLoaded=0;let t=this._speedSampler.lastSecondKBps;if(t===0&&(this._zeroSpeedChunkCount++,this._zeroSpeedChunkCount>=3&&(t=this._speedSampler.currentKBps)),t!==0){let a=this._normalizeSpeed(t);this._currentSpeedNormalized!==a&&(this._currentSpeedNormalized=a,this._currentChunkSizeKB=a)}let i=e.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;let r=!1;this._contentLength!=null&&this._receivedLength<this._contentLength?this._openSubRange():r=!0,this._onDataArrival&&this._onDataArrival(i,n,this._receivedLength),r&&(this._status=P.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}_onXhrError(e){this._status=P.kError;let t=0,i=null;if(this._contentLength&&this._receivedLength>0&&this._receivedLength<this._contentLength?(t=G.EARLY_EOF,i={code:-1,msg:"RangeLoader meet Early-Eof"}):(t=G.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),this._onError)this._onError(t,i);else throw new J(i.msg)}},si=Ji;var er=class extends Te{static isSupported(){try{return typeof self.WebSocket!="undefined"}catch(e){return!1}}constructor(){super("websocket-loader"),this.TAG="WebSocketLoader",this._needStash=!0,this._ws=null,this._requestAbort=!1,this._receivedLength=0}destroy(){this._ws&&this.abort(),super.destroy()}open(e){try{let t=this._ws=new self.WebSocket(e.url);t.binaryType="arraybuffer",t.onopen=this._onWebSocketOpen.bind(this),t.onclose=this._onWebSocketClose.bind(this),t.onmessage=this._onWebSocketMessage.bind(this),t.onerror=this._onWebSocketError.bind(this),this._status=P.kConnecting}catch(t){this._status=P.kError;let i={code:t.code,msg:t.message};if(this._onError)this._onError(G.EXCEPTION,i);else throw new J(i.msg)}}abort(){let e=this._ws;e&&(e.readyState===0||e.readyState===1)&&(this._requestAbort=!0,e.close()),this._ws=null,this._status=P.kComplete}_onWebSocketOpen(e){this._status=P.kBuffering}_onWebSocketClose(e){if(this._requestAbort===!0){this._requestAbort=!1;return}this._status=P.kComplete,this._onComplete&&this._onComplete(0,this._receivedLength-1)}_onWebSocketMessage(e){if(e.data instanceof ArrayBuffer)this._dispatchArrayBuffer(e.data);else if(e.data instanceof Blob){let t=new FileReader;t.onload=()=>{this._dispatchArrayBuffer(t.result)},t.readAsArrayBuffer(e.data)}else{this._status=P.kError;let t={code:-1,msg:"Unsupported WebSocket message type: "+e.data.constructor.name};if(this._onError)this._onError(G.EXCEPTION,t);else throw new J(t.msg)}}_dispatchArrayBuffer(e){let t=e,i=this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}_onWebSocketError(e){this._status=P.kError;let t={code:e.code,msg:e.message};if(this._onError)this._onError(G.EXCEPTION,t);else throw new J(t.msg)}},Zr=er;var tr=class{constructor(e){this._zeroStart=e||!1}getConfig(e,t){let i={};if(t.from!==0||t.to!==-1){let n;t.to!==-1?n=`bytes=${t.from.toString()}-${t.to.toString()}`:n=`bytes=${t.from.toString()}-`,i.Range=n}else this._zeroStart&&(i.Range="bytes=0-");return{url:e,headers:i}}removeURLParameters(e){return e}},Jr=tr;var ir=class{constructor(e,t){this._startName=e,this._endName=t}getConfig(e,t){let i=e;if(t.from!==0||t.to!==-1){let n=!0;i.indexOf("?")===-1&&(i+="?",n=!1),n&&(i+="&"),i+=`${this._startName}=${t.from.toString()}`,t.to!==-1&&(i+=`&${this._endName}=${t.to.toString()}`)}return{url:i,headers:{}}}removeURLParameters(e){let t=e.split("?")[0],i,n=e.indexOf("?");n!==-1&&(i=e.substring(n+1));let r="";if(i!=null&&i.length>0){let a=i.split("&");for(let s=0;s<a.length;s++){let l=a[s].split("="),c=s>0;l[0]!==this._startName&&l[0]!==this._endName&&(c&&(r+="&"),r+=a[s])}}return r.length===0?t:t+"?"+r}},en=ir;var rr=class{constructor(e,t,i){this.TAG="IOController",this._config=t,this._extraData=i,this._stashInitialSize=64*1024,t.stashInitialSize!=null&&t.stashInitialSize>0&&(this._stashInitialSize=t.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=Math.max(this._stashSize,1024*1024*3),this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,t.enableStashBuffer===!1&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=e,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(e.url),this._refTotalLength=e.filesize?e.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new ai,this._speedNormalizeList=[32,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}destroy(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}isWorking(){return this._loader&&this._loader.isWorking()&&!this._paused}isPaused(){return this._paused}get status(){return this._loader.status}get extraData(){return this._extraData}set extraData(e){this._extraData=e}get onDataArrival(){return this._onDataArrival}set onDataArrival(e){this._onDataArrival=e}get onSeeked(){return this._onSeeked}set onSeeked(e){this._onSeeked=e}get onError(){return this._onError}set onError(e){this._onError=e}get onComplete(){return this._onComplete}set onComplete(e){this._onComplete=e}get onRedirect(){return this._onRedirect}set onRedirect(e){this._onRedirect=e}get onRecoveredEarlyEof(){return this._onRecoveredEarlyEof}set onRecoveredEarlyEof(e){this._onRecoveredEarlyEof=e}get currentURL(){return this._dataSource.url}get hasRedirect(){return this._redirectedURL!=null||this._dataSource.redirectedURL!=null}get currentRedirectedURL(){return this._redirectedURL||this._dataSource.redirectedURL}get currentSpeed(){return this._loaderClass===si?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}get loaderType(){return this._loader.type}_selectSeekHandler(){let e=this._config;if(e.seekType==="range")this._seekHandler=new Jr(this._config.rangeLoadZeroStart);else if(e.seekType==="param"){let t=e.seekParamStart||"bstart",i=e.seekParamEnd||"bend";this._seekHandler=new en(t,i)}else if(e.seekType==="custom"){if(typeof e.customSeekHandler!="function")throw new xe("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}else throw new xe(`Invalid seekType in config: ${e.seekType}`)}_selectLoader(){if(this._config.customLoader!=null)this._loaderClass=this._config.customLoader;else if(this._isWebSocketURL)this._loaderClass=Zr;else if(Xi.isSupported())this._loaderClass=Xi;else if(Zi.isSupported())this._loaderClass=Zi;else if(si.isSupported())this._loaderClass=si;else throw new J("Your browser doesn't support xhr with arraybuffer responseType!")}_createLoader(){this._loader=new this._loaderClass(this._seekHandler,this._config),this._loader.needStashBuffer===!1&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}open(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}abort(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}pause(){this.isWorking()&&(this._loader.abort(),this._stashUsed!==0?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}resume(){if(this._paused){this._paused=!1;let e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}}seek(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)}_internalSeek(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;let i={from:e,to:-1};this._currentRange={from:i.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,i),this._onSeeked&&this._onSeeked()}updateUrl(e){if(!e||typeof e!="string"||e.length===0)throw new xe("Url must be a non-empty string!");this._dataSource.url=e}_expandBuffer(e){let t=this._stashSize;for(;t+1024*1024*1<e;)t*=2;if(t+=1024*1024*1,t===this._bufferSize)return;let i=new ArrayBuffer(t);if(this._stashUsed>0){let n=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,t).set(n,0)}this._stashBuffer=i,this._bufferSize=t}_normalizeSpeed(e){let t=this._speedNormalizeList,i=t.length-1,n=0,r=0,a=i;if(e<t[0])return t[0];for(;r<=a;){if(n=r+Math.floor((a-r)/2),n===i||e>=t[n]&&e<t[n+1])return t[n];t[n]<e?r=n+1:a=n-1}}_adjustStashSize(e){let t=0;this._config.isLive?t=e/8:e<512?t=e:e>=512&&e<=1024?t=Math.floor(e*1.5):t=e*2,t>8192&&(t=8192);let i=t*1024+1024*1024*1;this._bufferSize<i&&this._expandBuffer(i),this._stashSize=t*1024}_dispatchChunks(e,t){return this._currentRange.to=t+e.byteLength-1,this._onDataArrival(e,t)}_onURLRedirect(e){this._redirectedURL=e,this._onRedirect&&this._onRedirect(e)}_onContentLengthKnown(e){e&&this._fullRequestFlag&&(this._totalLength=e,this._fullRequestFlag=!1)}_onLoaderChunkArrival(e,t,i){if(!this._onDataArrival)throw new re("IOController: No existing consumer (onDataArrival) callback!");if(this._paused)return;this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,this._onRecoveredEarlyEof&&this._onRecoveredEarlyEof()),this._speedSampler.addBytes(e.byteLength);let n=this._speedSampler.lastSecondKBps;if(n!==0){let r=this._normalizeSpeed(n);this._speedNormalized!==r&&(this._speedNormalized=r,this._adjustStashSize(r))}if(this._enableStash)if(this._stashUsed===0&&this._stashByteStart===0&&(this._stashByteStart=t),this._stashUsed+e.byteLength<=this._stashSize)new Uint8Array(this._stashBuffer,0,this._stashSize).set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;else{let r=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){let a=this._stashBuffer.slice(0,this._stashUsed),s=this._dispatchChunks(a,this._stashByteStart);if(s<a.byteLength){if(s>0){let l=new Uint8Array(a,s);r.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=s}}else this._stashUsed=0,this._stashByteStart+=s;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),r=new Uint8Array(this._stashBuffer,0,this._bufferSize)),r.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{let a=this._dispatchChunks(e,t);if(a<e.byteLength){let s=e.byteLength-a;s>this._bufferSize&&(this._expandBuffer(s),r=new Uint8Array(this._stashBuffer,0,this._bufferSize)),r.set(new Uint8Array(e,a),0),this._stashUsed+=s,this._stashByteStart=t+a}}}else if(this._stashUsed===0){let r=this._dispatchChunks(e,t);if(r<e.byteLength){let a=e.byteLength-r;a>this._bufferSize&&this._expandBuffer(a),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(e,r),0),this._stashUsed+=a,this._stashByteStart=t+r}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);let r=new Uint8Array(this._stashBuffer,0,this._bufferSize);r.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;let a=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(a<this._stashUsed&&a>0){let s=new Uint8Array(this._stashBuffer,a);r.set(s,0)}this._stashUsed-=a,this._stashByteStart+=a}}_flushStashBuffer(e){if(this._stashUsed>0){let t=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(t,this._stashByteStart),n=t.byteLength-i;if(i<t.byteLength)if(e)_.w(this.TAG,`${n} bytes unconsumed data remain when flush buffer, dropped`);else{if(i>0){let r=new Uint8Array(this._stashBuffer,0,this._bufferSize),a=new Uint8Array(t,i);r.set(a,0),this._stashUsed=a.byteLength,this._stashByteStart+=i}return 0}return this._stashUsed=0,this._stashByteStart=0,n}return 0}_onLoaderComplete(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}_onLoaderError(e,t){switch(_.e(this.TAG,`Loader error, code = ${t.code}, msg = ${t.msg}`),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=G.UNRECOVERABLE_EARLY_EOF),e){case G.EARLY_EOF:{if(!this._config.isLive&&this._totalLength){let i=this._currentRange.to+1;i<this._totalLength&&(_.w(this.TAG,"Connection lost, trying reconnect..."),this._isEarlyEofReconnecting=!0,this._internalSeek(i,!1));return}e=G.UNRECOVERABLE_EARLY_EOF;break}case G.UNRECOVERABLE_EARLY_EOF:case G.CONNECTING_TIMEOUT:case G.HTTP_STATUS_CODE_INVALID:case G.EXCEPTION:break}if(this._onError)this._onError(e,t);else throw new J("IOException: "+t.msg)}},Dt=rr;var tn=(S=>(S.IO_ERROR="io_error",S.DEMUX_ERROR="demux_error",S.INIT_SEGMENT="init_segment",S.MEDIA_SEGMENT="media_segment",S.LOADING_COMPLETE="loading_complete",S.RECOVERED_EARLY_EOF="recovered_early_eof",S.MEDIA_INFO="media_info",S.METADATA_ARRIVED="metadata_arrived",S.SCRIPTDATA_ARRIVED="scriptdata_arrived",S.TIMED_ID3_METADATA_ARRIVED="timed_id3_metadata_arrived",S.PGS_SUBTITLE_ARRIVED="pgs_subtitle_arrived",S.SYNCHRONOUS_KLV_METADATA_ARRIVED="synchronous_klv_metadata_arrived",S.ASYNCHRONOUS_KLV_METADATA_ARRIVED="asynchronous_klv_metadata_arrived",S.SMPTE2038_METADATA_ARRIVED="smpte2038_metadata_arrived",S.SCTE35_METADATA_ARRIVED="scte35_metadata_arrived",S.PES_PRIVATE_DATA_DESCRIPTOR="pes_private_data_descriptor",S.PES_PRIVATE_DATA_ARRIVED="pes_private_data_arrived",S.STATISTICS_INFO="statistics_info",S.RECOMMEND_SEEKPOINT="recommend_seekpoint",S))(tn||{}),E=tn;var nr=class{constructor(e,t){d(this,"TAG","TransmuxingController");d(this,"_emitter",new ge);d(this,"_config");d(this,"_mediaDataSource");d(this,"_currentSegmentIndex",0);d(this,"_remuxer");d(this,"_demuxer",null);d(this,"_mediaInfo",null);d(this,"_ioctl",null);d(this,"_pendingSeekTime",null);d(this,"_pendingResolveSeekPoint",null);d(this,"_statisticsReporter",null);this._config=t,e.segments||(e.segments=[{duration:e.duration,filesize:e.filesize,url:e.url}]),typeof e.cors!="boolean"&&(e.cors=!0),typeof e.withCredentials!="boolean"&&(e.withCredentials=!1),this._mediaDataSource=e,this._mediaDataSource.useWebM?this._remuxer=new Mt(t):this._remuxer=new Ki(t);let i=0;this._mediaDataSource.segments.forEach(n=>{n.timestampBase=i,i+=n.duration,n.cors=e.cors,n.withCredentials=e.withCredentials,t.referrerPolicy&&(n.referrerPolicy=t.referrerPolicy)}),!isNaN(i)&&this._mediaDataSource.duration!==i&&(this._mediaDataSource.duration=i)}destroy(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&this._remuxer.destroy(),this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}start(){this._loadSegment(0),this._enableStatisticsReporter()}_loadSegment(e,t){this._currentSegmentIndex=e;let i=this._mediaDataSource.segments[e],n=this._ioctl=new Dt(i,this._config,e);n.onError=this._onIOException.bind(this),n.onSeeked=this._onIOSeeked.bind(this),n.onComplete=this._onIOComplete.bind(this),n.onRedirect=this._onIORedirect.bind(this),n.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),t?this._demuxer.bindDataSource(this._ioctl):n.onDataArrival=this._onInitChunkArrival.bind(this),n.open(t)}stop(){this._internalAbort(),this._disableStatisticsReporter()}_internalAbort(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)}pause(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())}resume(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())}seek(e){if(this._mediaInfo==null||!this._mediaInfo.isSeekable())return;let t=this._searchSegmentIndexContains(e);if(t===this._currentSegmentIndex){let i=this._mediaInfo.segments[t];if(i==null)this._pendingSeekTime=e;else{let n=i.getNearestKeyframe(e);this._remuxer.clear(),this._ioctl.seek(n.fileposition),this._pendingResolveSeekPoint=n.milliseconds}}else{let i=this._mediaInfo.segments[t];if(i==null)this._pendingSeekTime=e,this._internalAbort(),this._remuxer.clear(),this._remuxer.insertDiscontinuity(),this._loadSegment(t);else{let n=i.getNearestKeyframe(e);this._internalAbort(),this._remuxer.clear(),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[t].timestampBase,this._loadSegment(t,n.fileposition),this._pendingResolveSeekPoint=n.milliseconds,this._reportSegmentMediaInfo(t)}}this._enableStatisticsReporter()}_searchSegmentIndexContains(e){let t=this._mediaDataSource.segments,i=t.length-1;for(let n=0;n<t.length;n++)if(e<t[n].timestampBase){i=n-1;break}return i}_onInitChunkArrival(e,t){let i=0;if(t>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,i=this._demuxer.parseChunks(e,t);else{let n=pt.probe(e);"match"in n&&n.match?(this._setupFLVDemuxerRemuxer(n),i=this._demuxer.parseChunks(e,t)):"needMoreData"in n&&n.needMoreData||(_.e(this.TAG,"Non MPEG-TS/FLV, Unsupported media type!"),Promise.resolve().then(()=>{this._internalAbort()}),this._emitter.emit(E.DEMUX_ERROR,q.FORMAT_UNSUPPORTED,"Non MPEG-TS/FLV, Unsupported media type!"))}return i}_setupFLVDemuxerRemuxer(e){this._remuxer||(this._mediaDataSource.useWebM?this._remuxer=new Mt(this._config):this._remuxer=new Ki(this._config)),this._demuxer=new pt(e,this._config,this._remuxer);let t=this._mediaDataSource;t.duration!=null&&!isNaN(t.duration)&&(this._demuxer.overridedDuration=t.duration),typeof t.hasAudio=="boolean"&&(this._demuxer.overridedHasAudio=t.hasAudio),typeof t.hasVideo=="boolean"&&(this._demuxer.overridedHasVideo=t.hasVideo),this._demuxer.timestampBase=t.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onScriptMetadata=this._onScriptMetadata.bind(this),this._demuxer.onScriptData=this._onScriptData.bind(this);this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this)}_onMediaInfo(e){this._mediaInfo==null&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,Ie.prototype));let t=Object.assign({},e);Object.setPrototypeOf(t,Ie.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=t,this._reportSegmentMediaInfo(this._currentSegmentIndex),this._pendingSeekTime!=null&&Promise.resolve().then(()=>{let i=this._pendingSeekTime;this._pendingSeekTime=null,this.seek(i)})}_onScriptMetadata(e){this._emitter.emit(E.METADATA_ARRIVED,e)}_onScriptData(e){this._emitter.emit(E.SCRIPTDATA_ARRIVED,e)}_onTimedID3Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(E.TIMED_ID3_METADATA_ARRIVED,e))}_onPGSSubtitle(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(E.PGS_SUBTITLE_ARRIVED,e))}_onSynchronousKLVMetadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(E.SYNCHRONOUS_KLV_METADATA_ARRIVED,e))}_onAsynchronousKLVMetadata(e){this._emitter.emit(E.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)}_onSMPTE2038Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),this._emitter.emit(E.SMPTE2038_METADATA_ARRIVED,e))}_onSCTE35Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),this._emitter.emit(E.SCTE35_METADATA_ARRIVED,e))}_onPESPrivateDataDescriptor(e){this._emitter.emit(E.PES_PRIVATE_DATA_DESCRIPTOR,e)}_onPESPrivateData(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(E.PES_PRIVATE_DATA_ARRIVED,e))}_onIOSeeked(){this._remuxer.insertDiscontinuity()}_onIOComplete(e){let i=e+1;i<this._mediaDataSource.segments.length?(this._internalAbort(),this._remuxer&&this._remuxer.flushStashedFrames(),this._loadSegment(i)):(this._remuxer&&this._remuxer.flushStashedFrames(),this._emitter.emit(E.LOADING_COMPLETE),this._disableStatisticsReporter())}_onIORedirect(e){let t=this._ioctl.extraData;this._mediaDataSource.segments[t].redirectedURL=e}_onIORecoveredEarlyEof(){this._emitter.emit(E.RECOVERED_EARLY_EOF)}_onIOException(e,t){_.e(this.TAG,`IOException: type = ${e}, code = ${t.code}, msg = ${t.msg}`),this._emitter.emit(E.IO_ERROR,e,t),this._disableStatisticsReporter()}_onDemuxException(e,t){_.e(this.TAG,`DemuxException: type = ${e}, info = ${t}`),this._emitter.emit(E.DEMUX_ERROR,e,t)}_onRemuxerInitSegmentArrival(e,t){this._emitter.emit(E.INIT_SEGMENT,e,t)}_onRemuxerMediaSegmentArrival(e,t){if(this._pendingSeekTime==null&&(this._emitter.emit(E.MEDIA_SEGMENT,e,t),this._pendingResolveSeekPoint!=null&&e==="video")){let i=t.info.syncPoints,n=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,Z.safari&&i.length>0&&i[0].originalDts===n&&(n=i[0].pts),this._emitter.emit(E.RECOMMEND_SEEKPOINT,n)}}_enableStatisticsReporter(){this._statisticsReporter==null&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}_disableStatisticsReporter(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}_reportSegmentMediaInfo(e){var l;let t=this._mediaInfo,i=(l=t==null?void 0:t.segments)==null?void 0:l[e];if(!i)return;let c=i,{keyframesIndex:n,segments:r}=c,a=Rr(c,["keyframesIndex","segments"]),s=ae(j({},a),{duration:t.duration,segmentCount:t.segmentCount});this._emitter.emit(E.MEDIA_INFO,s)}_reportStatisticsInfo(){let e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(E.STATISTICS_INFO,e)}},ar=nr;var na={},sr=class{constructor(e,t){if(this.TAG="Transmuxer",this._emitter=new ge,t.enableWorker&&typeof Worker!="undefined")try{this._worker=new Worker(new URL("./transmuxing-worker.js",na.url)),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[e,t]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},Oe.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:Oe.getConfig()})}catch(i){_.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new ar(e,t)}else this._controller=new ar(e,t);if(this._controller){let i=this._controller;i.on(E.IO_ERROR,this._onIOError.bind(this)),i.on(E.DEMUX_ERROR,this._onDemuxError.bind(this)),i.on(E.INIT_SEGMENT,this._onInitSegment.bind(this)),i.on(E.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),i.on(E.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),i.on(E.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),i.on(E.MEDIA_INFO,this._onMediaInfo.bind(this)),i.on(E.METADATA_ARRIVED,this._onScriptMetadata.bind(this)),i.on(E.SCRIPTDATA_ARRIVED,this._onScriptData.bind(this)),i.on(E.TIMED_ID3_METADATA_ARRIVED,this._onTimedID3MetadataArrived.bind(this)),i.on(E.SYNCHRONOUS_KLV_METADATA_ARRIVED,this._onSynchronousKLVMetadataArrived.bind(this)),i.on(E.ASYNCHRONOUS_KLV_METADATA_ARRIVED,this._onAsynchronousKLVMetadataArrived.bind(this)),i.on(E.SMPTE2038_METADATA_ARRIVED,this._onSMPTE2038MetadataArrived.bind(this)),i.on(E.SCTE35_METADATA_ARRIVED,this._onSCTE35MetadataArrived.bind(this)),i.on(E.PES_PRIVATE_DATA_DESCRIPTOR,this._onPESPrivateDataDescriptor.bind(this)),i.on(E.PES_PRIVATE_DATA_ARRIVED,this._onPESPrivateDataArrived.bind(this)),i.on(E.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),i.on(E.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}destroy(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),Oe.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}hasWorker(){return this._worker!=null}open(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()}close(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()}seek(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)}pause(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()}resume(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()}_onInitSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(E.INIT_SEGMENT,e,t)})}_onMediaSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(E.MEDIA_SEGMENT,e,t)})}_onLoadingComplete(){Promise.resolve().then(()=>{this._emitter.emit(E.LOADING_COMPLETE)})}_onRecoveredEarlyEof(){Promise.resolve().then(()=>{this._emitter.emit(E.RECOVERED_EARLY_EOF)})}_onMediaInfo(e){Promise.resolve().then(()=>{this._emitter.emit(E.MEDIA_INFO,e)})}_onScriptMetadata(e){Promise.resolve().then(()=>{this._emitter.emit(E.METADATA_ARRIVED,e)})}_onScriptData(e){Promise.resolve().then(()=>{this._emitter.emit(E.SCRIPTDATA_ARRIVED,e)})}_onTimedID3MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.TIMED_ID3_METADATA_ARRIVED,e)})}_onPGSSubtitleArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.PGS_SUBTITLE_ARRIVED,e)})}_onSynchronousKLVMetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.SYNCHRONOUS_KLV_METADATA_ARRIVED,e)})}_onAsynchronousKLVMetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)})}_onSMPTE2038MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.SMPTE2038_METADATA_ARRIVED,e)})}_onSCTE35MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.SCTE35_METADATA_ARRIVED,e)})}_onPESPrivateDataDescriptor(e){Promise.resolve().then(()=>{this._emitter.emit(E.PES_PRIVATE_DATA_DESCRIPTOR,e)})}_onPESPrivateDataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.PES_PRIVATE_DATA_ARRIVED,e)})}_onStatisticsInfo(e){Promise.resolve().then(()=>{this._emitter.emit(E.STATISTICS_INFO,e)})}_onIOError(e,t){Promise.resolve().then(()=>{this._emitter.emit(E.IO_ERROR,e,t)})}_onDemuxError(e,t){Promise.resolve().then(()=>{this._emitter.emit(E.DEMUX_ERROR,e,t)})}_onRecommendSeekpoint(e){Promise.resolve().then(()=>{this._emitter.emit(E.RECOMMEND_SEEKPOINT,e)})}_onLoggingConfigChanged(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})}_onWorkerMessage(e){let t=e.data,i=t.data;if(t.msg==="destroyed"||this._workerDestroying){this._workerDestroying=!1,this._worker.terminate(),this._worker=null;return}switch(t.msg){case E.INIT_SEGMENT:case E.MEDIA_SEGMENT:this._emitter.emit(t.msg,i.type,i.data);break;case E.LOADING_COMPLETE:case E.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case E.MEDIA_INFO:Object.setPrototypeOf(i,Ie.prototype),this._emitter.emit(t.msg,i);break;case E.METADATA_ARRIVED:case E.SCRIPTDATA_ARRIVED:case E.TIMED_ID3_METADATA_ARRIVED:case E.PGS_SUBTITLE_ARRIVED:case E.SYNCHRONOUS_KLV_METADATA_ARRIVED:case E.ASYNCHRONOUS_KLV_METADATA_ARRIVED:case E.SMPTE2038_METADATA_ARRIVED:case E.SCTE35_METADATA_ARRIVED:case E.PES_PRIVATE_DATA_DESCRIPTOR:case E.PES_PRIVATE_DATA_ARRIVED:case E.STATISTICS_INFO:this._emitter.emit(t.msg,i);break;case E.IO_ERROR:case E.DEMUX_ERROR:this._emitter.emit(t.msg,i.type,i.info);break;case E.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,i);break;case"logcat_callback":_.emitter.emit("log",i.type,i.logcat);break;default:break}}},rn=sr;var gt={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},oi={NETWORK_EXCEPTION:G.EXCEPTION,NETWORK_STATUS_CODE_INVALID:G.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:G.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:G.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:q.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:q.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:q.CODEC_UNSUPPORTED};var He=Z,or=class o{constructor(e,t,i){d(this,"TAG","SeekingHandler");d(this,"_config");d(this,"_media_element");d(this,"_always_seek_keyframe",!1);d(this,"_on_unbuffered_seek");d(this,"_request_set_current_time",!1);d(this,"_seek_request_record_clocktime",null);d(this,"_idr_sample_list",new ri);d(this,"e",null);this._config=e,this._media_element=t,this._on_unbuffered_seek=i,this.e={onMediaSeeking:this._onMediaSeeking.bind(this)};let n=He.chrome&&(He.version.major<50||He.version.major===50&&He.version.build<2661);this._always_seek_keyframe=!!(n||He.msedge||He.msie),this._always_seek_keyframe&&(this._config.accurateSeek=!1),this._media_element.addEventListener("seeking",this.e.onMediaSeeking)}destroy(){this._idr_sample_list.clear(),this._media_element.removeEventListener("seeking",this.e.onMediaSeeking)}seek(e){let t=this._isPositionBuffered(e),i=!1;if(e<1&&this._media_element.buffered.length>0){let n=this._media_element.buffered.start(0);(n<1&&e<n||He.safari)&&(i=!0,e=He.safari?.1:n)}if(i)this.directSeek(e);else if(t)if(!this._always_seek_keyframe)this.directSeek(e);else{let n=this._getNearestKeyframe(Math.floor(e*1e3));n!=null&&(e=n.dts/1e3),this.directSeek(e)}else this._idr_sample_list.clear(),this._on_unbuffered_seek(Math.floor(e*1e3)),this._config.accurateSeek&&this.directSeek(e)}directSeek(e){this._request_set_current_time=!0,this._media_element.currentTime=e}appendSyncPoints(e){this._idr_sample_list.appendArray(e)}_onMediaSeeking(e){if(this._request_set_current_time){this._request_set_current_time=!1;return}let t=this._media_element.currentTime,i=this._media_element.buffered;if(t<1&&i.length>0){let n=i.start(0);if(n<1&&t<n||He.safari){let r=He.safari?.1:n;this.directSeek(r);return}}if(this._isPositionBuffered(t)){if(this._always_seek_keyframe){let n=this._getNearestKeyframe(Math.floor(t*1e3));n!=null&&(t=n.dts/1e3,this.directSeek(t))}return}this._seek_request_record_clocktime=o._getClockTime(),window.setTimeout(this._pollAndApplyUnbufferedSeek.bind(this),50)}_pollAndApplyUnbufferedSeek(){if(this._seek_request_record_clocktime==null)return;if(this._seek_request_record_clocktime<=o._getClockTime()-100){let t=this._media_element.currentTime;this._seek_request_record_clocktime=null,this._isPositionBuffered(t)||(this._idr_sample_list.clear(),this._on_unbuffered_seek(Math.floor(t*1e3)),this._config.accurateSeek&&this.directSeek(t))}else window.setTimeout(this._pollAndApplyUnbufferedSeek.bind(this),50)}_isPositionBuffered(e){let t=this._media_element.buffered;for(let i=0;i<t.length;i++){let n=t.start(i),r=t.end(i);if(e>=n&&e<r)return!0}return!1}_getNearestKeyframe(e){return this._idr_sample_list.getLastSyncPointBeforeDts(e)}static _getClockTime(){return self.performance&&self.performance.now?self.performance.now():Date.now()}},li=or;var xt=class xt{constructor(e,t,i,n){d(this,"_config");d(this,"_media_element");d(this,"_on_pause_transmuxer");d(this,"_on_resume_transmuxer");d(this,"_paused",!1);d(this,"e",null);d(this,"_lazyLoadMaxDuration");d(this,"_lazyLoadRecoverDuration");this._config=e,this._lazyLoadMaxDuration=e.lazyLoadMaxDuration,this._lazyLoadRecoverDuration=e.lazyLoadRecoverDuration,this._media_element=t,this._on_pause_transmuxer=i,this._on_resume_transmuxer=n,this.e={onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this)}}destroy(){this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this.e=null}adjustLazyLoadDurations(e){this._lazyLoadMaxDuration=Math.max(4,this._lazyLoadMaxDuration*e),this._lazyLoadRecoverDuration=Math.max(2,this._lazyLoadRecoverDuration*e),_.v(xt.TAG,`Adjusted lazy load durations (factor: ${e}) to - Max: ${this._lazyLoadMaxDuration}, Recover: ${this._lazyLoadRecoverDuration}`)}notifyBufferedPositionChanged(e){this._config.isLive||!this._config.lazyLoad||(e==null?this._suspendTransmuxerIfNeeded():this._suspendTransmuxerIfBufferedPositionExceeded(e))}_onMediaTimeUpdate(e){this._paused&&this._resumeTransmuxerIfNeeded()}_suspendTransmuxerIfNeeded(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=0;for(let n=0;n<e.length;n++){let r=e.start(n),a=e.end(n);if(r<=t&&t<a){i=a;break}}i>0&&this._suspendTransmuxerIfBufferedPositionExceeded(i)}_suspendTransmuxerIfBufferedPositionExceeded(e){let t=this._media_element.currentTime;e>=t+this._lazyLoadMaxDuration&&!this._paused&&(_.v(xt.TAG,".   Maximum buffering duration exceeded, suspend transmuxing task"),this.suspendTransmuxer(),this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate))}suspendTransmuxer(){this._paused=!0,this._on_pause_transmuxer()}_resumeTransmuxerIfNeeded(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=this._lazyLoadRecoverDuration,n=!1;for(let r=0;r<e.length;r++){let a=e.start(r),s=e.end(r);if(t>=a&&t<s){t>=s-i&&(n=!0);break}}n&&(_.v(xt.TAG,"Continue loading from paused position"),this.resumeTransmuxer(),this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate))}resumeTransmuxer(){this._paused=!1,this._on_resume_transmuxer()}};d(xt,"TAG","LoadingController");var lr=xt,di=lr;var dr=class{constructor(e,t){d(this,"TAG","StartupStallJumper");d(this,"_media_element");d(this,"_on_direct_seek");d(this,"_canplay_received",!1);d(this,"e",null);this._media_element=e,this._on_direct_seek=t,this.e={onMediaCanPlay:this._onMediaCanPlay.bind(this),onMediaStalled:this._onMediaStalled.bind(this),onMediaProgress:this._onMediaProgress.bind(this)},this._media_element.addEventListener("canplay",this.e.onMediaCanPlay),this._media_element.addEventListener("stalled",this.e.onMediaStalled),this._media_element.addEventListener("progress",this.e.onMediaProgress)}destroy(){this._media_element.removeEventListener("canplay",this.e.onMediaCanPlay),this._media_element.removeEventListener("stalled",this.e.onMediaStalled),this._media_element.removeEventListener("progress",this.e.onMediaProgress)}_onMediaCanPlay(e){this._canplay_received=!0,this._media_element.removeEventListener("canplay",this.e.onMediaCanPlay)}_onMediaStalled(e){this._detectAndFixStuckPlayback(!0)}_onMediaProgress(e){this._detectAndFixStuckPlayback()}_detectAndFixStuckPlayback(e){let t=this._media_element,i=t.buffered;e||!this._canplay_received||t.readyState<2?i.length>0&&t.currentTime<i.start(0)&&(_.w(this.TAG,`Playback seems stuck at ${t.currentTime}, seek to ${i.start(0)}`),this._on_direct_seek(i.start(0)),this._media_element.removeEventListener("progress",this.e.onMediaProgress)):this._media_element.removeEventListener("progress",this.e.onMediaProgress)}},ci=dr;var cr=class{constructor(e,t,i){d(this,"_config");d(this,"_media_element");d(this,"_on_direct_seek");this._config=e,this._media_element=t,this._on_direct_seek=i}notifyBufferedRangeUpdate(){this._chaseLiveLatency()}_chaseLiveLatency(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=this._media_element.paused;if(!this._config.isLive||!this._config.liveBufferLatencyChasing||e.length==0||!this._config.liveBufferLatencyChasingOnPaused&&i)return;let n=e.end(e.length-1);if(n>this._config.liveBufferLatencyMaxLatency&&n-t>this._config.liveBufferLatencyMaxLatency){let r=n-this._config.liveBufferLatencyMinRemain;this._on_direct_seek(r)}}},ui=cr;var ur=class{constructor(e,t){d(this,"_config",null);d(this,"_media_element");d(this,"e",null);this._config=e,this._media_element=t,this.e={onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this)},this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate)}destroy(){this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element=null,this._config=null}_onMediaTimeUpdate(e){if(!this._config.isLive||!this._config.liveSync)return;let t=this._getCurrentLatency();if(t>this._config.liveSyncMaxLatency){let i=Math.min(2,Math.max(1,this._config.liveSyncPlaybackRate));this._media_element.playbackRate=i}else t>this._config.liveSyncTargetLatency||this._media_element.playbackRate!==1&&this._media_element.playbackRate!==0&&(this._media_element.playbackRate=1)}_getCurrentLatency(){if(!this._media_element)return 0;let e=this._media_element.buffered,t=this._media_element.currentTime;return e.length==0?0:e.end(e.length-1)-t}},hi=ur;var hr=class{constructor(e,t){d(this,"TAG","PlayerEngineMainThread");d(this,"_emitter",new ge);d(this,"_media_data_source");d(this,"_config");d(this,"_media_element",null);d(this,"_mse_controller",null);d(this,"_transmuxer",null);d(this,"_pending_seek_time",null);d(this,"_seeking_handler",null);d(this,"_loading_controller",null);d(this,"_startup_stall_jumper",null);d(this,"_live_latency_chaser",null);d(this,"_live_latency_synchronizer",null);d(this,"_mse_source_opened",!1);d(this,"_has_pending_load",!1);d(this,"_loaded_metadata_received",!1);d(this,"_media_info",null);d(this,"_statistics_info",null);d(this,"e",null);this._media_data_source=e,this._config=j(j(j({},qe()),t),e.isLive===!0&&{isLive:!0}),this.e={onMediaLoadedMetadata:this._onMediaLoadedMetadata.bind(this)}}destroy(){var e,t;(e=this._emitter)==null||e.emit(O.DESTROYING),this._transmuxer&&this.unload(),this._media_element&&this.detachMediaElement(),this.e=null,this._media_data_source=null,(t=this._emitter)==null||t.removeAllListeners(),this._emitter=null}on(e,t){var i;(i=this._emitter)==null||i.addListener(e,t),e===O.MEDIA_INFO&&this._media_info?Promise.resolve().then(()=>{var n;return(n=this._emitter)==null?void 0:n.emit(O.MEDIA_INFO,this.mediaInfo)}):e==O.STATISTICS_INFO&&this._statistics_info&&Promise.resolve().then(()=>{var n;return(n=this._emitter)==null?void 0:n.emit(O.STATISTICS_INFO,this.statisticsInfo)})}off(e,t){var i;(i=this._emitter)==null||i.removeListener(e,t)}attachMediaElement(e){this._media_element=e,e.src="",e.removeAttribute("src"),e.srcObject=null,e.load(),e.addEventListener("loadedmetadata",this.e.onMediaLoadedMetadata);let t={getCurrentTime:()=>e.currentTime,getReadyState:()=>e.readyState,getError:()=>e.error,setOnMediaTimeUpdate:i=>{e.ontimeupdate=i}};this._mse_controller=new wr(this._config,t),this._mse_controller.on(ee.UPDATE_END,this._onMSEUpdateEnd.bind(this)),this._mse_controller.on(ee.BUFFER_FULL,this._onMSEBufferFull.bind(this)),this._mse_controller.on(ee.QUOTA_EXCEEDED_BUFFER_FULL,this._onMSEQuotaExceededBufferFull.bind(this)),this._mse_controller.on(ee.SOURCE_OPEN,this._onMSESourceOpen.bind(this)),this._mse_controller.on(ee.ERROR,this._onMSEError.bind(this)),this._mse_controller.on(ee.START_STREAMING,this._onMSEStartStreaming.bind(this)),this._mse_controller.on(ee.END_STREAMING,this._onMSEEndStreaming.bind(this)),this._mse_controller.isManagedMediaSource()?(e.disableRemotePlayback=!0,e.srcObject=this._mse_controller.getObject()):e.src=this._mse_controller.getObjectURL()}detachMediaElement(){var e,t;this._media_element&&((e=this._mse_controller)==null||e.shutdown(),this._media_element.removeEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element=null,(t=this._mse_controller)==null||t.revokeObjectURL()),this._mse_controller&&(this._mse_controller.destroy(),this._mse_controller=null)}load(){if(!this._media_element)throw new re("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new re("load() has been called, please call unload() first!");if(!this._has_pending_load){if(this._config.deferLoadAfterSourceOpen&&!this._mse_source_opened){this._has_pending_load=!0;return}this._transmuxer=new rn(this._media_data_source,this._config),this._transmuxer.on(E.INIT_SEGMENT,(e,t)=>{var i;(i=this._mse_controller)==null||i.appendInitSegment(t)}),this._transmuxer.on(E.MEDIA_SEGMENT,(e,t)=>{var i,n,r;(i=this._mse_controller)==null||i.appendMediaSegment(t),!this._config.isLive&&e==="video"&&t.data&&t.data.byteLength>0&&"info"in t&&((n=this._seeking_handler)==null||n.appendSyncPoints(t.info.syncPoints)),(r=this._loading_controller)==null||r.notifyBufferedPositionChanged(t.info.endDts/1e3)}),this._transmuxer.on(E.LOADING_COMPLETE,()=>{var e,t;(e=this._mse_controller)==null||e.endOfStream(),(t=this._emitter)==null||t.emit(O.LOADING_COMPLETE)}),this._transmuxer.on(E.RECOVERED_EARLY_EOF,()=>{var e;(e=this._emitter)==null||e.emit(O.RECOVERED_EARLY_EOF)}),this._transmuxer.on(E.IO_ERROR,(e,t)=>{var i;(i=this._emitter)==null||i.emit(O.ERROR,gt.NETWORK_ERROR,e,t)}),this._transmuxer.on(E.DEMUX_ERROR,(e,t)=>{var i;(i=this._emitter)==null||i.emit(O.ERROR,gt.MEDIA_ERROR,e,t)}),this._transmuxer.on(E.MEDIA_INFO,e=>{var t;this._media_info=e,(t=this._emitter)==null||t.emit(O.MEDIA_INFO,Object.assign({},e))}),this._transmuxer.on(E.STATISTICS_INFO,e=>{var t;this._statistics_info=this._fillStatisticsInfo(e),(t=this._emitter)==null||t.emit(O.STATISTICS_INFO,Object.assign({},e))}),this._transmuxer.on(E.RECOMMEND_SEEKPOINT,e=>{var t;this._media_element&&!this._config.accurateSeek&&((t=this._seeking_handler)==null||t.directSeek(e/1e3))}),this._transmuxer.on(E.METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.METADATA_ARRIVED,e)}),this._transmuxer.on(E.SCRIPTDATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.SCRIPTDATA_ARRIVED,e)}),this._transmuxer.on(E.TIMED_ID3_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.TIMED_ID3_METADATA_ARRIVED,e)}),this._transmuxer.on(E.PGS_SUBTITLE_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.PGS_SUBTITLE_ARRIVED,e)}),this._transmuxer.on(E.SYNCHRONOUS_KLV_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.SYNCHRONOUS_KLV_METADATA_ARRIVED,e)}),this._transmuxer.on(E.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)}),this._transmuxer.on(E.SMPTE2038_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.SMPTE2038_METADATA_ARRIVED,e)}),this._transmuxer.on(E.SCTE35_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.SCTE35_METADATA_ARRIVED,e)}),this._transmuxer.on(E.PES_PRIVATE_DATA_DESCRIPTOR,e=>{var t;(t=this._emitter)==null||t.emit(O.PES_PRIVATE_DATA_DESCRIPTOR,e)}),this._transmuxer.on(E.PES_PRIVATE_DATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(O.PES_PRIVATE_DATA_ARRIVED,e)}),this._seeking_handler=new li(this._config,this._media_element,this._onRequiredUnbufferedSeek.bind(this)),this._loading_controller=new di(this._config,this._media_element,this._onRequestPauseTransmuxer.bind(this),this._onRequestResumeTransmuxer.bind(this)),this._startup_stall_jumper=new ci(this._media_element,this._onRequestDirectSeek.bind(this)),this._config.isLive&&this._config.liveBufferLatencyChasing&&(this._live_latency_chaser=new ui(this._config,this._media_element,this._onRequestDirectSeek.bind(this))),this._config.isLive&&this._config.liveSync&&(this._live_latency_synchronizer=new hi(this._config,this._media_element)),this._media_element.readyState>0&&this._seeking_handler.directSeek(0),this._transmuxer.open()}}unload(){var e,t,i,n,r,a,s,l;(e=this._media_element)==null||e.pause(),(t=this._live_latency_synchronizer)==null||t.destroy(),this._live_latency_synchronizer=null,this._live_latency_chaser=null,(i=this._startup_stall_jumper)==null||i.destroy(),this._startup_stall_jumper=null,(n=this._loading_controller)==null||n.destroy(),this._loading_controller=null,(r=this._seeking_handler)==null||r.destroy(),this._seeking_handler=null,(a=this._mse_controller)==null||a.flush(),(s=this._transmuxer)==null||s.close(),(l=this._transmuxer)==null||l.destroy(),this._transmuxer=null}play(){return this._media_element.play()}pause(){this._media_element.pause()}seek(e){this._media_element&&this._seeking_handler?this._seeking_handler.seek(e):this._pending_seek_time=e}get mediaInfo(){return Object.assign({},this._media_info)}get statisticsInfo(){return Object.assign({},this._statistics_info)}_onMSESourceOpen(){this._mse_source_opened=!0,this._has_pending_load&&(this._has_pending_load=!1,this.load())}_onMSEUpdateEnd(){var e;this._config.isLive&&this._config.liveBufferLatencyChasing&&this._live_latency_chaser&&this._live_latency_chaser.notifyBufferedRangeUpdate(),(e=this._loading_controller)==null||e.notifyBufferedPositionChanged()}_onMSEQuotaExceededBufferFull(e){var t;if(_.w(this.TAG,`Quota exceeded - reducing buffer durations. Type: ${e.type}, Buffer length: ${e.currentBufferLength}, Segment size: ${e.segmentSize}`),!this._loading_controller){_.w(this.TAG,"LoadingController not available for quota adjustment");return}(t=this._loading_controller)==null||t.adjustLazyLoadDurations(.5)}_onMSEBufferFull(){var e;_.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),(e=this._loading_controller)==null||e.suspendTransmuxer()}_onMSEError(e){var t;(t=this._emitter)==null||t.emit(O.ERROR,gt.MEDIA_ERROR,oi.MEDIA_MSE_ERROR,e)}_onMSEStartStreaming(){var e;this._loaded_metadata_received&&(this._config.isLive||(_.v(this.TAG,"Resume transmuxing task due to ManagedMediaSource onStartStreaming"),(e=this._loading_controller)==null||e.resumeTransmuxer()))}_onMSEEndStreaming(){var e;this._config.isLive||(_.v(this.TAG,"Suspend transmuxing task due to ManagedMediaSource onEndStreaming"),(e=this._loading_controller)==null||e.suspendTransmuxer())}_onMediaLoadedMetadata(e){var t;this._loaded_metadata_received=!0,this._pending_seek_time!=null&&((t=this._seeking_handler)==null||t.seek(this._pending_seek_time),this._pending_seek_time=null)}_onRequestDirectSeek(e){var t;(t=this._seeking_handler)==null||t.directSeek(e)}_onRequiredUnbufferedSeek(e){var t,i;(t=this._mse_controller)==null||t.flush(),(i=this._transmuxer)==null||i.seek(e)}_onRequestPauseTransmuxer(){var e;(e=this._transmuxer)==null||e.pause()}_onRequestResumeTransmuxer(){var e;(e=this._transmuxer)==null||e.resume()}_fillStatisticsInfo(e){if(e.playerType="MSEPlayer",!(this._media_element instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._media_element.getVideoPlaybackQuality){let r=this._media_element.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._media_element.webkitDecodedFrameCount!=null?(i=this._media_element.webkitDecodedFrameCount,n=this._media_element.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}},_r=hr;var aa={};var fr=class{constructor(e,t){d(this,"TAG","PlayerEngineDedicatedThread");d(this,"_emitter",new ge);d(this,"_media_data_source");d(this,"_config");d(this,"_media_element",null);d(this,"_worker");d(this,"_worker_destroying",!1);d(this,"_seeking_handler",null);d(this,"_loading_controller",null);d(this,"_startup_stall_jumper",null);d(this,"_live_latency_chaser",null);d(this,"_live_latency_synchronizer",null);d(this,"_pending_seek_time",NaN);d(this,"_media_info",null);d(this,"_statistics_info",null);d(this,"e",null);this._media_data_source=e,this._config=qe(),typeof t=="object"&&Object.assign(this._config,t),e.isLive===!0&&(this._config.isLive=!0),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this),onMediaLoadedMetadata:this._onMediaLoadedMetadata.bind(this),onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this),onMediaReadyStateChanged:this._onMediaReadyStateChange.bind(this)},Oe.registerListener(this.e.onLoggingConfigChanged),this._worker=new Worker(new URL("./player-engine-worker.js",aa.url),{type:"module"}),this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",media_data_source:this._media_data_source,config:this._config}),this._worker.postMessage({cmd:"logging_config",logging_config:Oe.getConfig()})}static isSupported(){return self.Worker?!!(self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&self.MediaSource.canConstructInDedicatedWorker===!0||self.ManagedMediaSource&&"canConstructInDedicatedWorker"in self.ManagedMediaSource&&self.ManagedMediaSource.canConstructInDedicatedWorker===!0):!1}destroy(){var e;this._emitter.emit(O.DESTROYING),this.unload(),this.detachMediaElement(),this._worker_destroying=!0,(e=this._worker)==null||e.postMessage({cmd:"destroy"}),Oe.removeListener(this.e.onLoggingConfigChanged),this.e=null,this._media_data_source=null,this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t),e===O.MEDIA_INFO&&this._media_info?Promise.resolve().then(()=>this._emitter.emit(O.MEDIA_INFO,this.mediaInfo)):e==O.STATISTICS_INFO&&this._statistics_info&&Promise.resolve().then(()=>this._emitter.emit(O.STATISTICS_INFO,this.statisticsInfo))}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){var t;this._media_element=e,this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element.addEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element.addEventListener("readystatechange",this.e.onMediaReadyStateChanged),(t=this._worker)==null||t.postMessage({cmd:"initialize_mse"})}detachMediaElement(){var e;(e=this._worker)==null||e.postMessage({cmd:"shutdown_mse"}),this._media_element&&(this._media_element.removeEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element.removeEventListener("readystatechange",this.e.onMediaReadyStateChanged),this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element=null)}load(){var e,t;(e=this._worker)==null||e.postMessage({cmd:"load"}),this._seeking_handler=new li(this._config,this._media_element,this._onRequiredUnbufferedSeek.bind(this)),this._loading_controller=new di(this._config,this._media_element,this._onRequestPauseTransmuxer.bind(this),this._onRequestResumeTransmuxer.bind(this)),this._startup_stall_jumper=new ci(this._media_element,this._onRequestDirectSeek.bind(this)),this._config.isLive&&this._config.liveBufferLatencyChasing&&(this._live_latency_chaser=new ui(this._config,this._media_element,this._onRequestDirectSeek.bind(this))),this._config.isLive&&this._config.liveSync&&(this._live_latency_synchronizer=new hi(this._config,this._media_element)),this._media_element.readyState>0&&((t=this._seeking_handler)==null||t.directSeek(0))}unload(){var e,t,i,n,r,a;(e=this._media_element)==null||e.pause(),(t=this._worker)==null||t.postMessage({cmd:"unload"}),(i=this._live_latency_synchronizer)==null||i.destroy(),this._live_latency_synchronizer=null,this._live_latency_chaser=null,(n=this._startup_stall_jumper)==null||n.destroy(),this._startup_stall_jumper=null,(r=this._loading_controller)==null||r.destroy(),this._loading_controller=null,(a=this._seeking_handler)==null||a.destroy(),this._seeking_handler=null}play(){var e;return((e=this._media_element)==null?void 0:e.play())||Promise.resolve()}pause(){var e;(e=this._media_element)==null||e.pause()}seek(e){this._media_element&&this._seeking_handler?this._seeking_handler.seek(e):this._pending_seek_time=e}get mediaInfo(){return Object.assign({},this._media_info)}get statisticsInfo(){return Object.assign({},this._statistics_info)}_onLoggingConfigChanged(e){var t;(t=this._worker)==null||t.postMessage({cmd:"logging_config",logging_config:e})}_onMSEUpdateEnd(){var e;this._config.isLive&&this._config.liveBufferLatencyChasing&&this._live_latency_chaser&&this._live_latency_chaser.notifyBufferedRangeUpdate(),(e=this._loading_controller)==null||e.notifyBufferedPositionChanged()}_onMSEBufferFull(){var e;_.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),(e=this._loading_controller)==null||e.suspendTransmuxer()}_onMediaLoadedMetadata(e){var t;Number.isNaN(this._pending_seek_time)||((t=this._seeking_handler)==null||t.seek(this._pending_seek_time),this._pending_seek_time=NaN)}_onRequestDirectSeek(e){var t;(t=this._seeking_handler)==null||t.directSeek(e)}_onRequiredUnbufferedSeek(e){var t;(t=this._worker)==null||t.postMessage({cmd:"unbuffered_seek",milliseconds:e})}_onRequestPauseTransmuxer(){var e;(e=this._worker)==null||e.postMessage({cmd:"pause_transmuxer"})}_onRequestResumeTransmuxer(){var e;(e=this._worker)==null||e.postMessage({cmd:"resume_transmuxer"})}_onMediaTimeUpdate(e){var t;(t=this._worker)==null||t.postMessage({cmd:"timeupdate",current_time:e.target.currentTime})}_onMediaReadyStateChange(e){var t;(t=this._worker)==null||t.postMessage({cmd:"readystatechange",ready_state:e.target.readyState})}_onWorkerMessage(e){var n,r,a;let t=e.data,i=t.msg;if(i=="destroyed"||this._worker_destroying){this._worker_destroying=!1,(n=this._worker)==null||n.terminate(),this._worker=null;return}switch(i){case"mse_init":{let s=t;"ManagedMediaSource"in self&&!("MediaSource"in self)&&(this._media_element.disableRemotePlayback=!0),this._media_element.srcObject=s.handle;break}case"mse_event":{let s=t;s.event==ee.UPDATE_END?this._onMSEUpdateEnd():s.event==ee.BUFFER_FULL?this._onMSEBufferFull():s.event==ee.QUOTA_EXCEEDED_BUFFER_FULL&&this._onMSEQuotaExceededBufferFull(s.data);break}case"transmuxing_event":{let s=t;if(s.event==E.MEDIA_INFO){let l=t;this._media_info=l.info,this._emitter.emit(O.MEDIA_INFO,Object.assign({},l.info))}else if(s.event==E.STATISTICS_INFO){let l=t;this._statistics_info=this._fillStatisticsInfo(l.info),this._emitter.emit(O.STATISTICS_INFO,Object.assign({},l.info))}else if(s.event==E.RECOMMEND_SEEKPOINT){let l=t;this._media_element&&!this._config.accurateSeek&&((r=this._seeking_handler)==null||r.directSeek(l.milliseconds/1e3))}break}case"player_event":{let s=t;if(s.event==O.ERROR){let l=t;this._emitter.emit(O.ERROR,l.error_type,l.error_detail,l.info)}else if("extraData"in s){let l=t;this._emitter.emit(l.event,l.extraData)}break}case"logcat_callback":{let s=t;_.emitLog(s.type,s.logcat);break}case"buffered_position_changed":{let s=t;(a=this._loading_controller)==null||a.notifyBufferedPositionChanged(s.buffered_position_milliseconds/1e3);break}}}_onMSEQuotaExceededBufferFull(e){if(_.w(this.TAG,`Quota exceeded - reducing buffer durations. Type: ${e.type}, Buffer length: ${e.currentBufferLength}, Segment size: ${e.segmentSize}`),!this._loading_controller){_.w(this.TAG,"LoadingController not available for quota adjustment");return}this._loading_controller.adjustLazyLoadDurations(.5)}_fillStatisticsInfo(e){if(e.playerType="MSEPlayer",!(this._media_element instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._media_element.getVideoPlaybackQuality){let r=this._media_element.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._media_element.webkitDecodedFrameCount!=null?(i=this._media_element.webkitDecodedFrameCount,n=this._media_element.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}},mr=fr;var pr=class{constructor(e,t){d(this,"TAG","MSEPlayer");d(this,"_type","MSEPlayer");d(this,"_media_element",null);d(this,"_player_engine",null);let i=e.type.toLowerCase();if(i!=="mse"&&i!=="flv")throw new xe("MSEPlayer requires an mse/flv MediaDataSource input!");if(t!=null&&t.enableWorkerForMSE&&mr.isSupported())try{this._player_engine=new mr(e,t)}catch(n){_.e(this.TAG,"Error while initializing PlayerEngineDedicatedThread, fallback to PlayerEngineMainThread"),this._player_engine=new _r(e,t)}else this._player_engine=new _r(e,t)}destroy(){this._player_engine.destroy(),this._player_engine=null,this._media_element=null}on(e,t){this._player_engine.on(e,t)}off(e,t){this._player_engine.off(e,t)}attachMediaElement(e){this._media_element=e,this._player_engine.attachMediaElement(e)}detachMediaElement(){this._media_element=null,this._player_engine.detachMediaElement()}load(){this._player_engine.load()}unload(){this._player_engine.unload()}play(){return this._player_engine.play()}pause(){this._player_engine.pause()}get type(){return this._type}get buffered(){return this._media_element.buffered}get duration(){return this._media_element.duration}get volume(){return this._media_element.volume}set volume(e){this._media_element.volume=e}get muted(){return this._media_element.muted}set muted(e){this._media_element.muted=e}get currentTime(){return this._media_element?this._media_element.currentTime:0}set currentTime(e){this._player_engine.seek(e)}get mediaInfo(){return this._player_engine.mediaInfo}get statisticsInfo(){return this._player_engine.statisticsInfo}},Bt=pr;function nn(){return self.ManagedMediaSource}var Ce=class Ce{static supportMSEH264Playback(){let e='video/mp4; codecs="avc1.42E01E,mp4a.40.2"',t=!!self.MediaSource&&self.MediaSource.isTypeSupported(e),i=nn(),n=!!i&&i.isTypeSupported(e);return t||n}static supportMSEH265Playback(){let e='video/mp4; codecs="hvc1.1.6.L93.B0"',t=!!self.MediaSource&&self.MediaSource.isTypeSupported(e),i=nn(),n=!!i&&i.isTypeSupported(e);return t||n}static supportNetworkStreamIO(){let e=new Dt({},qe()),t=e.loaderType;return e.destroy(),t=="fetch-stream-loader"||t=="xhr-moz-chunked-loader"}static getNetworkLoaderTypeName(){let e=new Dt({},qe()),t=e.loaderType;return e.destroy(),t}static supportNativeMediaPlayback(e){Ce.videoElement===void 0&&(Ce.videoElement=window.document.createElement("video"));let t=Ce.videoElement.canPlayType(e);return t==="probably"||t=="maybe"}static getFeatureList(){let e={msePlayback:!1,mseLivePlayback:!1,mseH265Playback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeMP4H265Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return e.msePlayback=Ce.supportMSEH264Playback(),e.networkStreamIO=Ce.supportNetworkStreamIO(),e.networkLoaderName=Ce.getNetworkLoaderTypeName(),e.mseLivePlayback=e.msePlayback&&e.networkStreamIO,e.mseH265Playback=Ce.supportMSEH265Playback(),e.nativeMP4H264Playback=Ce.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),e.nativeMP4H265Playback=Ce.supportNativeMediaPlayback('video/mp4; codecs="hvc1.1.6.L93.B0"'),e.nativeWebmVP8Playback=Ce.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),e.nativeWebmVP9Playback=Ce.supportNativeMediaPlayback('video/webm; codecs="vp9"'),e}};d(Ce,"videoElement");var gr=Ce,xr=gr;function sa(o,e){if(o==null||typeof o!="object")throw new xe("MediaDataSource must be a javascript object!");if(typeof o.type!="string"||o.type==="")throw new xe("MediaDataSource must include a non-empty string type field!");switch(o.type){case"mse":case"flv":return new Bt(o,e);default:return new kt(o,e)}}function oa(){return xr.supportMSEH264Playback()}function la(){return xr.getFeatureList()}var da={createPlayer:sa,isSupported:oa,getFeatureList:la,BaseLoader:Te,LoaderStatus:P,LoaderErrors:G,Events:O,ErrorTypes:gt,ErrorDetails:oi,MSEPlayer:Bt,NativePlayer:kt,LoggingControl:Oe,get version(){return"0.0.1-alpha.0"}},an=da;return mn(ca);})();
    </script>
    <style>
        /* {IȃZbgƍ̃X^CO */
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }
        body {
            background-color: #0b0f19;
            color: #e2e8f0;
            font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
            padding: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
        }
        main {
            width: 100%;
            max-width: 800px;
            display: flex;
            flex-direction: column;
            gap: 20px;
        }
        
        /* rfIvC[̃X^CO (ÂSafariΉ: paddingpΔzunbN) */
        .player-container {
            position: relative;
            background-color: #000000;
            border: 1px solid #1e293b;
            border-radius: 8px;
            overflow: hidden;
            width: 100%;
            height: 0;
            padding-top: 56.25%; /* 16:9̔䗦ÂuEUłSɕۏ */
            transition: border-color 0.2s;
        }
        video {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
        }

        /* EFutXN[iy[WS̕\jp̃X^C */
        body.web-fs-active {
            overflow: hidden !important; /* XN[o[SɉB */
        }
        .player-container.web-fullscreen {
            position: fixed !important;
            top: 0 !important;
            bottom: 0 !important; /* height: 100vh̑ɏ㉺̒[ɋz (Android/iOS̃AhXo[΍) */
            left: 0 !important;
            right: 0 !important;  /* width: 100vw̑ɍE̒[ɋz */
            width: auto !important; /* ŒTCYwLZċzD */
            height: auto !important;
            padding-top: 0 !important; /* paddingnbN̉ic100%L邽߁j */
            max-width: none !important;
            max-height: none !important;
            border: none !important;
            border-radius: 0 !important;
            z-index: 999999 !important; /* vfőOʂɔzu */
            transform: translateZ(0);
            -webkit-transform: translateZ(0); /* ÂSafarîoO΍ */
        }

        /* ʏ\p̃gK[{^ivC[̐po[ɔzuBSafarizo[UIƊSɕj */
        .player-toolbar {
            display: flex;
            justify-content: flex-end;
            margin-top: -8px;
            margin-bottom: 4px;
        }
        .web-fs-trigger-button {
            background-color: #0f172a;
            border: 1px solid #1e293b;
            color: #e2e8f0;
            padding: 8px 16px;
            border-radius: 6px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 13px;
            font-weight: 500;
            transition: all 0.2s ease;
        }
        .web-fs-trigger-button:hover {
            background-color: #1e293b;
            border-color: #818cf8;
            color: #ffffff;
        }

        /* Sʉ̂ݕ\uʒ㕔v̕Rg[s */
        .web-fs-close-pill {
            position: absolute;
            top: 20px;
            left: 50%;
            transform: translateX(-50%) translateY(-50px); /* ŏ͏㕔ɉBĂ */
            z-index: 1000000;
            background-color: rgba(15, 23, 42, 0.9);
            border: 1px solid rgba(255, 255, 255, 0.15);
            color: #ffffff;
            padding: 10px 20px;
            border-radius: 9999px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 13px;
            font-weight: 600;
            box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.5);
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            opacity: 0;
            transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.3s ease;
            pointer-events: none; /* ʏ펞͔񊈐 */
        }

        /* y[WS̕\ANeBuȎ̂ݕ\E\ɂ */
        .player-container.web-fullscreen .web-fs-close-pill {
            transform: translateX(-50%) translateY(0);
            opacity: 1;
            pointer-events: auto;
        }

        .web-fs-close-pill:hover {
            background-color: #ef4444; /* IɏIł댯F() */
            border-color: #ef4444;
            color: #ffffff;
        }

        /* Xe[^XZNVi|[gԕ\j */
        .status-container {
            background-color: #0f172a;
            border: 1px solid #1e293b;
            border-radius: 8px;
            padding: 16px;
            font-size: 12px;
            line-height: 1.6;
        }
        .status-title {
            font-size: 14px;
            font-weight: bold;
            color: #818cf8;
            border-bottom: 1px solid #1e293b;
            padding-bottom: 8px;
            margin-bottom: 12px;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .status-title::before {
            content: "";
            display: inline-block;
            width: 8px;
            height: 8px;
            background-color: #22c55e;
            border-radius: 50%;
        }

        /* Xe[^XObh */
        .grid {
            display: grid;
            grid-template-columns: 1fr;
            gap: 12px;
        }
        @media (min-width: 600px) {
            .grid {
                grid-template-columns: 1fr 1fr;
                gap: 24px;
            }
        }
        .info-block {
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .info-item {
            display: flex;
            justify-content: space-between;
            border-bottom: 1px dashed #1e293b;
            padding-bottom: 4px;
        }
        .label {
            color: #94a3b8;
        }
        .value {
            color: #f1f5f9;
            text-align: right;
            word-break: break-all;
            max-width: 70%;
        }
        .value a {
            color: #818cf8;
            text-decoration: none;
        }
        .value a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>

    <main>
        <!-- rfIRei -->
        <div class="player-container" id="player-container">
            <!-- WRg[gp -->
            <video id="video-element" controls playsinline></video>

            <!-- Sʕ\̂ݏou㕔vRg[s -->
            <!-- Safari̍EE̓ƎI[o[C{^ƋȂ݌v -->
            <button id="web-fs-close-btn" class="web-fs-close-pill" title="ɖ߂" aria-label="ɖ߂">
                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                    <rect x="3" y="3" width="18" height="18" rx="2"></rect>
                    <path d="M3 15h6v6"></path>
                    <path d="M21 15h-6v6"></path>
                    <path d="M3 9h6V3"></path>
                    <path d="M21 9h-6V3"></path>
                </svg>
                <span>ɖ߂</span>
            </button>
        </div>

        <!-- vC[pc[o[ (ʏ\̍ۂɎgpBSafarĩrfIzo[UI犮SɓƗGA) -->
        <div class="player-toolbar">
            <button id="web-fs-btn" class="web-fs-trigger-button" title="uEUŜɕ\" aria-label="uEUŜɕ\">
                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                    <rect x="3" y="3" width="18" height="18" rx="2"></rect>
                    <path d="M3 9h18"></path>
                    <path d="M9 21V9"></path>
                </svg>
                <span>uEUŜɕ\</span>
            </button>
        </div>

        <!-- |[gԕ\ / Xe[^XZNV -->
        <div class="status-container">
            <div class="status-title">|[gԕ\</div>

            <div class="grid">
                <!-- { -->
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">zMURL:</span>
                        <span class="value"><SRC_URL></span>
                    </div>
                    <div class="info-item">
                        <span class="label">^Cg:</span>
                        <span class="value"><TITLE></span>
                    </div>
                    <div class="info-item">
                        <span class="label">Rg:</span>
                        <span class="value"><COMMENT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">URL:</span>
                        <span class="value">
                            <a href="<LIVE_URL>" target="_blank"><LIVE_URL></a>
                        </span>
                    </div>
                </div>

                <!-- ڑptH[}X -->
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">ڑ:</span>
                        <span class="value"><TIME></span>
                    </div>
                    <div class="info-item">
                        <span class="label">݂̐ڑ:</span>
                        <span class="value">
                            <CONN> / <MAXCONN>
                        </span>
                    </div>
                    <div class="info-item">
                        <span class="label">rbg[g:</span>
                        <span class="value" style="color: #4ade80;"><CURRENT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">\rbg[g:</span>
                        <span class="value"><BITRATE></span>
                    </div>
                    <div class="info-item">
                        <span class="label">ш搧:</span>
                        <span class="value"><BANDWIDTH></span>
                    </div>
                </div>
            </div>

            <!-- G[JE^Ȇ -->
            <div class="grid" style="margin-top: 12px; padding-top: 12px; border-top: 1px dashed #1e293b;">
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">rW[JE^:</span>
                        <span class="value"><BUSYCOUNT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">IMG[JE^:</span>
                        <span class="value" style="color: #f87171;"><IMPORT_ERROR></span>
                    </div>
                    <div class="info-item">
                        <span class="label">EXG[JE^:</span>
                        <span class="value" style="color: #f87171;"><EXPORT_ERROR></span>
                    </div>
                </div>

                <div class="info-block">
                    <div class="info-item">
                        <span class="label">q:</span>
                        <span class="value"><CHILD></span>
                    </div>
                    <div class="info-item">
                        <span class="label">o[W:</span>
                        <span class="value" style="color: #64748b;"><VERSION></span>
                    </div>
                </div>
            </div>
        </div>
    </main>

    <!-- zMVXe̋ɏĐXNvg -->
    <script>
        (function() {
            var playerContainer = document.getElementById('player-container');
            var webFsTriggerBtn = document.getElementById('web-fs-btn');
            var webFsCloseBtn = document.getElementById('web-fs-close-btn');
            var mouseIdleTimeout;

            // y[WS̕\iWebtXN[j̐؂ւ
            function toggleWebFullscreen() {
                var isWebFs = playerContainer.classList.toggle('web-fullscreen');
                document.body.classList.toggle('web-fs-active', isWebFs);

                // ؂ւɃs{^ZbgČ
                if (isWebFs) {
                    resetAndShowClosePill();
                } else {
                    clearTimeout(mouseIdleTimeout);
                    webFsCloseBtn.style.opacity = '';
                    webFsCloseBtn.style.transform = '';
                }
            }

            // SʎF삪Ȃ3bŕ{^tF[hAEg鏈
            function resetAndShowClosePill() {
                clearTimeout(mouseIdleTimeout);
                webFsCloseBtn.style.opacity = '1';
                webFsCloseBtn.style.transform = 'translateX(-50%) translateY(0)';

                // 3bԃ}EXȂtF[hAEgiX}z̓^bvōĕ\j
                mouseIdleTimeout = setTimeout(function() {
                    if (playerContainer.classList.contains('web-fullscreen')) {
                        webFsCloseBtn.style.opacity = '0';
                        webFsCloseBtn.style.transform = 'translateX(-50%) translateY(-20px)';
                    }
                }, 3000);
            }

            // }EXړmŃ{^ătF[hC
            playerContainer.addEventListener('mousemove', function() {
                if (playerContainer.classList.contains('web-fullscreen')) {
                    resetAndShowClosePill();
                }
            });

            // NbNCxg̓o^ (`dh~t)
            webFsTriggerBtn.addEventListener('click', function(e) {
                e.stopPropagation();
                toggleWebFullscreen();
            });

            webFsCloseBtn.addEventListener('click', function(e) {
                e.stopPropagation();
                toggleWebFullscreen();
            });

            if (asf_stream.eflv.getFeatureList().mseLivePlayback) {
                var videoElement = document.getElementById('video-element');
                var player = asf_stream.eflv.createPlayer({
                    type: 'mse',
                    isLive: true,
                    url: '/play?stream-switch'
                });
                player.attachMediaElement(videoElement);
                player.load();
                player.play();
            }
        })();
    </script>
</body>
</html>