swarmcloud-hls 2.7.13 → 2.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/hls-proxy.js +1 -1
- package/dist/hls.light.min.js +1 -1
- package/dist/hls.min.js +1 -1
- package/dist/p2p-engine.min.d.ts +1 -0
- package/dist/p2p-engine.min.js +1 -1
- package/package.json +2 -2
package/dist/hls.light.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Hls=t():e.Hls=t()}(self,(()=>(()=>{var e={204:e=>{"use strict";var t,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var n=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(r,i){function n(r){e.removeListener(t,s),i(r)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",n),r([].slice.call(arguments))}p(e,t,s,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&p(e,"error",t,r)}(e,n,{once:!0})}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var a=10;function o(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function h(e,t,r,i){var n,s,a,h;if(o(r),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]),void 0===a)a=s[t]=r,++e._eventsCount;else if("function"==typeof a?a=s[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),(n=l(e))>0&&a.length>n&&!a.warned){a.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=a.length,h=u,console&&console.warn&&console.warn(h)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},n=u.bind(i);return n.listener=r,i.wrapFn=n,n}function c(e,t,r){var i=e._events;if(void 0===i)return[];var n=i[t];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(n):g(n,n.length)}function f(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function g(e,t){for(var r=new Array(t),i=0;i<t;++i)r[i]=e[i];return r}function p(e,t,r,i){if("function"==typeof e.on)i.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function n(s){i.once&&e.removeEventListener(t,n),r(s)}))}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(e){if("number"!=typeof e||e<0||n(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");a=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||n(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return l(this)},s.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n="error"===e,s=this._events;if(void 0!==s)n=n&&void 0===s.error;else if(!n)return!1;if(n){var a;if(t.length>0&&(a=t[0]),a instanceof Error)throw a;var o=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw o.context=a,o}var l=s[e];if(void 0===l)return!1;if("function"==typeof l)i(l,this,t);else{var h=l.length,u=g(l,h);for(r=0;r<h;++r)i(u[r],this,t)}return!0},s.prototype.addListener=function(e,t){return h(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return h(this,e,t,!0)},s.prototype.once=function(e,t){return o(t),this.on(e,d(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){return o(t),this.prependListener(e,d(this,e,t)),this},s.prototype.removeListener=function(e,t){var r,i,n,s,a;if(o(t),void 0===(i=this._events))return this;if(void 0===(r=i[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length-1;s>=0;s--)if(r[s]===t||r[s].listener===t){a=r[s].listener,n=s;break}if(n<0)return this;0===n?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,n),1===r.length&&(i[e]=r[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var t,r,i;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var n,s=Object.keys(r);for(i=0;i<s.length;++i)"removeListener"!==(n=s[i])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this},s.prototype.listeners=function(e){return c(this,e,!0)},s.prototype.rawListeners=function(e){return c(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},s.prototype.listenerCount=f,s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},570:function(e){var t;"undefined"!=typeof window&&(t=function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/dist/",r(r.s="./src/hls.ts")}({"./node_modules/eventemitter3/index.js":function(e,t,r){"use strict";var i=Object.prototype.hasOwnProperty,n="~";function s(){}function a(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function o(e,t,r,i,s){if("function"!=typeof r)throw new TypeError("The listener must be a function");var o=new a(r,i||e,s),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function l(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function h(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(n=!1)),h.prototype.eventNames=function(){var e,t,r=[];if(0===this._eventsCount)return r;for(t in e=this._events)i.call(e,t)&&r.push(n?t.slice(1):t);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},h.prototype.listeners=function(e){var t=n?n+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var i=0,s=r.length,a=new Array(s);i<s;i++)a[i]=r[i].fn;return a},h.prototype.listenerCount=function(e){var t=n?n+e:e,r=this._events[t];return r?r.fn?1:r.length:0},h.prototype.emit=function(e,t,r,i,s,a){var o=n?n+e:e;if(!this._events[o])return!1;var l,h,u=this._events[o],d=arguments.length;if(u.fn){switch(u.once&&this.removeListener(e,u.fn,void 0,!0),d){case 1:return u.fn.call(u.context),!0;case 2:return u.fn.call(u.context,t),!0;case 3:return u.fn.call(u.context,t,r),!0;case 4:return u.fn.call(u.context,t,r,i),!0;case 5:return u.fn.call(u.context,t,r,i,s),!0;case 6:return u.fn.call(u.context,t,r,i,s,a),!0}for(h=1,l=new Array(d-1);h<d;h++)l[h-1]=arguments[h];u.fn.apply(u.context,l)}else{var c,f=u.length;for(h=0;h<f;h++)switch(u[h].once&&this.removeListener(e,u[h].fn,void 0,!0),d){case 1:u[h].fn.call(u[h].context);break;case 2:u[h].fn.call(u[h].context,t);break;case 3:u[h].fn.call(u[h].context,t,r);break;case 4:u[h].fn.call(u[h].context,t,r,i);break;default:if(!l)for(c=1,l=new Array(d-1);c<d;c++)l[c-1]=arguments[c];u[h].fn.apply(u[h].context,l)}}return!0},h.prototype.on=function(e,t,r){return o(this,e,t,r,!1)},h.prototype.once=function(e,t,r){return o(this,e,t,r,!0)},h.prototype.removeListener=function(e,t,r,i){var s=n?n+e:e;if(!this._events[s])return this;if(!t)return l(this,s),this;var a=this._events[s];if(a.fn)a.fn!==t||i&&!a.once||r&&a.context!==r||l(this,s);else{for(var o=0,h=[],u=a.length;o<u;o++)(a[o].fn!==t||i&&!a[o].once||r&&a[o].context!==r)&&h.push(a[o]);h.length?this._events[s]=1===h.length?h[0]:h:l(this,s)}return this},h.prototype.removeAllListeners=function(e){var t;return e?(t=n?n+e:e,this._events[t]&&l(this,t)):(this._events=new s,this._eventsCount=0),this},h.prototype.off=h.prototype.removeListener,h.prototype.addListener=h.prototype.on,h.prefixed=n,h.EventEmitter=h,e.exports=h},"./node_modules/url-toolkit/src/url-toolkit.js":function(e,t,r){var i,n,s,a,o;i=/^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/?#]*\/)*[^;?#]*)?(;[^?#]*)?(\?[^#]*)?(#[^]*)?$/,n=/^([^\/?#]*)([^]*)$/,s=/(?:\/|^)\.(?=\/)/g,a=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,o={buildAbsoluteURL:function(e,t,r){if(r=r||{},e=e.trim(),!(t=t.trim())){if(!r.alwaysNormalize)return e;var i=o.parseURL(e);if(!i)throw new Error("Error trying to parse base URL.");return i.path=o.normalizePath(i.path),o.buildURLFromParts(i)}var s=o.parseURL(t);if(!s)throw new Error("Error trying to parse relative URL.");if(s.scheme)return r.alwaysNormalize?(s.path=o.normalizePath(s.path),o.buildURLFromParts(s)):t;var a=o.parseURL(e);if(!a)throw new Error("Error trying to parse base URL.");if(!a.netLoc&&a.path&&"/"!==a.path[0]){var l=n.exec(a.path);a.netLoc=l[1],a.path=l[2]}a.netLoc&&!a.path&&(a.path="/");var h={scheme:a.scheme,netLoc:s.netLoc,path:null,params:s.params,query:s.query,fragment:s.fragment};if(!s.netLoc&&(h.netLoc=a.netLoc,"/"!==s.path[0]))if(s.path){var u=a.path,d=u.substring(0,u.lastIndexOf("/")+1)+s.path;h.path=o.normalizePath(d)}else h.path=a.path,s.params||(h.params=a.params,s.query||(h.query=a.query));return null===h.path&&(h.path=r.alwaysNormalize?o.normalizePath(s.path):s.path),o.buildURLFromParts(h)},parseURL:function(e){var t=i.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(s,"");e.length!==(e=e.replace(a,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=o},"./node_modules/webworkify-webpack/index.js":function(e,t,r){function i(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.m=e,r.c=t,r.i=function(e){return e},r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r.oe=function(e){throw console.error(e),e};var i=r(r.s=ENTRY_MODULE);return i.default||i}var n="[\\.|\\-|\\+|\\w|/|@]+",s="\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)";function a(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function o(e,t,i){var o={};o[i]=[];var l=t.toString(),h=l.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!h)return o;for(var u,d=h[1],c=new RegExp("(\\\\n|\\W)"+a(d)+s,"g");u=c.exec(l);)"dll-reference"!==u[3]&&o[i].push(u[3]);for(c=new RegExp("\\("+a(d)+'\\("(dll-reference\\s('+n+'))"\\)\\)'+s,"g");u=c.exec(l);)e[u[2]]||(o[i].push(u[1]),e[u[2]]=r(u[1]).m),o[u[2]]=o[u[2]]||[],o[u[2]].push(u[4]);for(var f,g=Object.keys(o),p=0;p<g.length;p++)for(var m=0;m<o[g[p]].length;m++)f=o[g[p]][m],isNaN(1*f)||(o[g[p]][m]=1*o[g[p]][m]);return o}function l(e){return Object.keys(e).reduce((function(t,r){return t||e[r].length>0}),!1)}e.exports=function(e,t){t=t||{};var n={main:r.m},s=t.all?{main:Object.keys(n.main)}:function(e,t){for(var r={main:[t]},i={main:[]},n={main:{}};l(r);)for(var s=Object.keys(r),a=0;a<s.length;a++){var h=s[a],u=r[h].pop();if(n[h]=n[h]||{},!n[h][u]&&e[h][u]){n[h][u]=!0,i[h]=i[h]||[],i[h].push(u);for(var d=o(e,e[h][u],h),c=Object.keys(d),f=0;f<c.length;f++)r[c[f]]=r[c[f]]||[],r[c[f]]=r[c[f]].concat(d[c[f]])}}return i}(n,e),a="";Object.keys(s).filter((function(e){return"main"!==e})).forEach((function(e){for(var t=0;s[e][t];)t++;s[e].push(t),n[e][t]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",a=a+"var "+e+" = ("+i.toString().replace("ENTRY_MODULE",JSON.stringify(t))+")({"+s[e].map((function(t){return JSON.stringify(t)+": "+n[e][t].toString()})).join(",")+"});\n"})),a=a+"new (("+i.toString().replace("ENTRY_MODULE",JSON.stringify(e))+")({"+s.main.map((function(e){return JSON.stringify(e)+": "+n.main[e].toString()})).join(",")+"}))(self);";var h=new window.Blob([a],{type:"text/javascript"});if(t.bare)return h;var u=(window.URL||window.webkitURL||window.mozURL||window.msURL).createObjectURL(h),d=new window.Worker(u);return d.objectURL=u,d}},"./src/config.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"hlsDefaultConfig",(function(){return v})),r.d(t,"mergeConfig",(function(){return y})),r.d(t,"enableStreamingMode",(function(){return E}));var i=r("./src/controller/abr-controller.ts"),n=r("./src/empty.js"),s=r.n(n),a=r("./src/controller/buffer-controller.ts"),o=r("./src/controller/cap-level-controller.ts"),l=r("./src/controller/fps-controller.ts"),h=r("./src/utils/xhr-loader.ts"),u=r("./src/utils/fetch-loader.ts"),d=r("./src/utils/mediakeys-helper.ts"),c=r("./src/utils/logger.ts");function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},f.apply(this,arguments)}function g(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?g(Object(r),!0).forEach((function(t){m(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):g(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function m(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var v=p(p({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:h.default,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:i.default,bufferController:a.default,capLevelController:o.default,fpsController:l.default,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystemOptions:{},requestMediaKeySystemAccessFunc:d.requestMediaKeySystemAccess,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0},{cueHandler:s.a,enableCEA708Captions:!1,enableWebVTT:!1,enableIMSC1:!1,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:void 0,subtitleTrackController:void 0,timelineController:void 0,audioStreamController:void 0,audioTrackController:void 0,emeController:void 0,cmcdController:void 0});function y(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');return f({},e,t)}function E(e){var t=e.loader;t!==u.default&&t!==h.default?(c.logger.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1):Object(u.fetchSupported)()&&(e.loader=u.default,e.progressive=!0,e.enableSoftwareAES=!0,c.logger.log("[config]: Progressive streaming enabled, using FetchLoader"))}},"./src/controller/abr-controller.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/polyfills/number.ts"),n=r("./src/utils/ewma-bandwidth-estimator.ts"),s=r("./src/events.ts"),a=r("./src/utils/buffer-helper.ts"),o=r("./src/errors.ts"),l=r("./src/types/loader.ts"),h=r("./src/utils/logger.ts");function u(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var d=function(){function e(e){this.hls=void 0,this.lastLoadedFragLevel=0,this._nextAutoLevel=-1,this.timer=void 0,this.onCheck=this._abandonRulesCheck.bind(this),this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this.hls=e;var t=e.config;this.bwEstimator=new n.default(t.abrEwmaSlowVoD,t.abrEwmaFastVoD,t.abrEwmaDefaultEstimate),this.registerListeners()}var t,r,d,c=e.prototype;return c.registerListeners=function(){var e=this.hls;e.on(s.Events.FRAG_LOADING,this.onFragLoading,this),e.on(s.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(s.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(s.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(s.Events.ERROR,this.onError,this)},c.unregisterListeners=function(){var e=this.hls;e.off(s.Events.FRAG_LOADING,this.onFragLoading,this),e.off(s.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(s.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(s.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(s.Events.ERROR,this.onError,this)},c.destroy=function(){this.unregisterListeners(),this.clearTimer(),this.hls=this.onCheck=null,this.fragCurrent=this.partCurrent=null},c.onFragLoading=function(e,t){var r,i=t.frag;i.type===l.PlaylistLevelType.MAIN&&(this.timer||(this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r:null,this.timer=self.setInterval(this.onCheck,100)))},c.onLevelLoaded=function(e,t){var r=this.hls.config;t.details.live?this.bwEstimator.update(r.abrEwmaSlowLive,r.abrEwmaFastLive):this.bwEstimator.update(r.abrEwmaSlowVoD,r.abrEwmaFastVoD)},c._abandonRulesCheck=function(){var e=this.fragCurrent,t=this.partCurrent,r=this.hls,n=r.autoLevelEnabled,o=r.config,l=r.media;if(e&&l){var u=t?t.stats:e.stats,d=t?t.duration:e.duration;if(u.aborted)return h.logger.warn("frag loader destroy or aborted, disarm abandonRules"),this.clearTimer(),void(this._nextAutoLevel=-1);if(n&&!l.paused&&l.playbackRate&&l.readyState){var c=performance.now()-u.loading.start,f=Math.abs(l.playbackRate);if(!(c<=500*d/f)){var g=r.levels,p=r.minAutoLevel,m=g[e.level],v=u.total||Math.max(u.loaded,Math.round(d*m.maxBitrate/8)),y=Math.max(1,u.bwEstimate?u.bwEstimate/8:1e3*u.loaded/c),E=(v-u.loaded)/y,S=l.currentTime,b=(a.BufferHelper.bufferInfo(l,S,o.maxBufferHole).end-S)/f;if(!(b>=2*d/f||E<=b)){var _,T=Number.POSITIVE_INFINITY;for(_=e.level-1;_>p&&!((T=d*g[_].maxBitrate/(6.4*y))<b);_--);if(!(T>=E)){var L=this.bwEstimator.getEstimate();h.logger.warn("Fragment "+e.sn+(t?" part "+t.index:"")+" of level "+e.level+" is loading too slowly and will cause an underbuffer; aborting and switching to level "+_+"\n Current BW estimate: "+(Object(i.isFiniteNumber)(L)?(L/1024).toFixed(3):"Unknown")+" Kb/s\n Estimated load time for current fragment: "+E.toFixed(3)+" s\n Estimated load time for the next fragment: "+T.toFixed(3)+" s\n Time to underbuffer: "+b.toFixed(3)+" s"),r.nextLoadLevel=_,this.bwEstimator.sample(c,u.loaded),this.clearTimer(),e.loader&&(this.fragCurrent=this.partCurrent=null,e.loader.abort()),r.trigger(s.Events.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:u})}}}}}},c.onFragLoaded=function(e,t){var r=t.frag,n=t.part;if(r.type===l.PlaylistLevelType.MAIN&&Object(i.isFiniteNumber)(r.sn)){var a=n?n.stats:r.stats,o=n?n.duration:r.duration;if(this.clearTimer(),this.lastLoadedFragLevel=r.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var h=this.hls.levels[r.level],u=(h.loaded?h.loaded.bytes:0)+a.loaded,d=(h.loaded?h.loaded.duration:0)+o;h.loaded={bytes:u,duration:d},h.realBitrate=Math.round(8*u/d)}if(r.bitrateTest){var c={stats:a,frag:r,part:n,id:r.type};this.onFragBuffered(s.Events.FRAG_BUFFERED,c),r.bitrateTest=!1}}},c.onFragBuffered=function(e,t){var r=t.frag,i=t.part,n=i?i.stats:r.stats;if(!n.aborted&&r.type===l.PlaylistLevelType.MAIN&&"initSegment"!==r.sn){var s=n.parsing.end-n.loading.start;this.bwEstimator.sample(s,n.loaded),n.bwEstimate=this.bwEstimator.getEstimate(),r.bitrateTest?this.bitrateTestDelay=s/1e3:this.bitrateTestDelay=0}},c.onError=function(e,t){switch(t.details){case o.ErrorDetails.FRAG_LOAD_ERROR:case o.ErrorDetails.FRAG_LOAD_TIMEOUT:this.clearTimer()}},c.clearTimer=function(){self.clearInterval(this.timer),this.timer=void 0},c.getNextABRAutoLevel=function(){var e=this.fragCurrent,t=this.partCurrent,r=this.hls,i=r.maxAutoLevel,n=r.config,s=r.minAutoLevel,o=r.media,l=t?t.duration:e?e.duration:0,u=o?o.currentTime:0,d=o&&0!==o.playbackRate?Math.abs(o.playbackRate):1,c=this.bwEstimator?this.bwEstimator.getEstimate():n.abrEwmaDefaultEstimate,f=(a.BufferHelper.bufferInfo(o,u,n.maxBufferHole).end-u)/d,g=this.findBestLevel(c,s,i,f,n.abrBandWidthFactor,n.abrBandWidthUpFactor);if(g>=0)return g;h.logger.trace((f?"rebuffering expected":"buffer is empty")+", finding optimal quality level");var p=l?Math.min(l,n.maxStarvationDelay):n.maxStarvationDelay,m=n.abrBandWidthFactor,v=n.abrBandWidthUpFactor;if(!f){var y=this.bitrateTestDelay;y&&(p=(l?Math.min(l,n.maxLoadingDelay):n.maxLoadingDelay)-y,h.logger.trace("bitrate test took "+Math.round(1e3*y)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*p)+" ms"),m=v=1)}return g=this.findBestLevel(c,s,i,f+p,m,v),Math.max(g,0)},c.findBestLevel=function(e,t,r,i,n,s){for(var a,o=this.fragCurrent,l=this.partCurrent,u=this.lastLoadedFragLevel,d=this.hls.levels,c=d[u],f=!(null==c||null===(a=c.details)||void 0===a||!a.live),g=null==c?void 0:c.codecSet,p=l?l.duration:o?o.duration:0,m=r;m>=t;m--){var v=d[m];if(v&&(!g||v.codecSet===g)){var y=v.details,E=(l?null==y?void 0:y.partTarget:null==y?void 0:y.averagetargetduration)||p,S=void 0;S=m<=u?n*e:s*e;var b=d[m].maxBitrate,_=b*E/S;if(h.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+m+"/"+Math.round(S)+"/"+b+"/"+E+"/"+i+"/"+_),S>b&&(!_||f&&!this.bitrateTestDelay||_<i))return m}}return-1},t=e,(r=[{key:"nextAutoLevel",get:function(){var e=this._nextAutoLevel,t=this.bwEstimator;if(!(-1===e||t&&t.canEstimate()))return e;var r=this.getNextABRAutoLevel();return-1!==e&&(r=Math.min(e,r)),r},set:function(e){this._nextAutoLevel=e}}])&&u(t.prototype,r),d&&u(t,d),e}();t.default=d},"./src/controller/base-playlist-controller.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return l}));var i=r("./src/polyfills/number.ts"),n=r("./src/types/level.ts"),s=r("./src/controller/level-helper.ts"),a=r("./src/utils/logger.ts"),o=r("./src/errors.ts"),l=function(){function e(e,t){this.hls=void 0,this.timer=-1,this.canLoad=!1,this.retryCount=0,this.log=void 0,this.warn=void 0,this.log=a.logger.log.bind(a.logger,t+":"),this.warn=a.logger.warn.bind(a.logger,t+":"),this.hls=e}var t=e.prototype;return t.destroy=function(){this.clearTimer(),this.hls=this.log=this.warn=null},t.onError=function(e,t){t.fatal&&t.type===o.ErrorTypes.NETWORK_ERROR&&this.clearTimer()},t.clearTimer=function(){clearTimeout(this.timer),this.timer=-1},t.startLoad=function(){this.canLoad=!0,this.retryCount=0,this.loadPlaylist()},t.stopLoad=function(){this.canLoad=!1,this.clearTimer()},t.switchParams=function(e,t){var r=null==t?void 0:t.renditionReports;if(r)for(var s=0;s<r.length;s++){var a=r[s],o=""+a.URI;if(o===e.substr(-o.length)){var l=parseInt(a["LAST-MSN"]),h=parseInt(a["LAST-PART"]);if(t&&this.hls.config.lowLatencyMode){var u=Math.min(t.age-t.partTarget,t.targetduration);void 0!==h&&u>t.partTarget&&(h+=1)}if(Object(i.isFiniteNumber)(l))return new n.HlsUrlParameters(l,Object(i.isFiniteNumber)(h)?h:void 0,n.HlsSkip.No)}}},t.loadPlaylist=function(e){},t.shouldLoadTrack=function(e){return this.canLoad&&e&&!!e.url&&(!e.details||e.details.live)},t.playlistLoaded=function(e,t,r){var i=this,n=t.details,a=t.stats,o=a.loading.end?Math.max(0,self.performance.now()-a.loading.end):0;if(n.advancedDateTime=Date.now()-o,n.live||null!=r&&r.live){if(n.reloaded(r),r&&this.log("live playlist "+e+" "+(n.advanced?"REFRESHED "+n.lastPartSn+"-"+n.lastPartIndex:"MISSED")),r&&n.fragments.length>0&&Object(s.mergeDetails)(r,n),!this.canLoad||!n.live)return;var l,h=void 0,u=void 0;if(n.canBlockReload&&n.endSN&&n.advanced){var d=this.hls.config.lowLatencyMode,c=n.lastPartSn,f=n.endSN,g=n.lastPartIndex,p=c===f;-1!==g?(h=p?f+1:c,u=p?d?0:g:g+1):h=f+1;var m=n.age,v=m+n.ageHeader,y=Math.min(v-n.partTarget,1.5*n.targetduration);if(y>0){if(r&&y>r.tuneInGoal)this.warn("CDN Tune-in goal increased from: "+r.tuneInGoal+" to: "+y+" with playlist age: "+n.age),y=0;else{var E=Math.floor(y/n.targetduration);h+=E,void 0!==u&&(u+=Math.round(y%n.targetduration/n.partTarget)),this.log("CDN Tune-in age: "+n.ageHeader+"s last advanced "+m.toFixed(2)+"s goal: "+y+" skip sn "+E+" to part "+u)}n.tuneInGoal=y}if(l=this.getDeliveryDirectives(n,t.deliveryDirectives,h,u),d||!p)return void this.loadPlaylist(l)}else l=this.getDeliveryDirectives(n,t.deliveryDirectives,h,u);var S=Object(s.computeReloadInterval)(n,a);void 0!==h&&n.canBlockReload&&(S-=n.partTarget||1),this.log("reload live playlist "+e+" in "+Math.round(S)+" ms"),this.timer=self.setTimeout((function(){return i.loadPlaylist(l)}),S)}else this.clearTimer()},t.getDeliveryDirectives=function(e,t,r,i){var s=Object(n.getSkipValue)(e,r);return null!=t&&t.skip&&e.deltaUpdateFailed&&(r=t.msn,i=t.part,s=n.HlsSkip.No),new n.HlsUrlParameters(r,i,s)},t.retryLoadingOrFail=function(e){var t,r=this,i=this.hls.config,n=this.retryCount<i.levelLoadingMaxRetry;if(n)if(this.retryCount++,e.details.indexOf("LoadTimeOut")>-1&&null!==(t=e.context)&&void 0!==t&&t.deliveryDirectives)this.warn("retry playlist loading #"+this.retryCount+' after "'+e.details+'"'),this.loadPlaylist();else{var s=Math.min(Math.pow(2,this.retryCount)*i.levelLoadingRetryDelay,i.levelLoadingMaxRetryTimeout);this.timer=self.setTimeout((function(){return r.loadPlaylist()}),s),this.warn("retry playlist loading #"+this.retryCount+" in "+s+' ms after "'+e.details+'"')}else this.warn('cannot recover from error "'+e.details+'"'),this.clearTimer(),e.fatal=!0;return n},e}()},"./src/controller/base-stream-controller.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"State",(function(){return b})),r.d(t,"default",(function(){return _}));var i=r("./src/polyfills/number.ts"),n=r("./src/task-loop.ts"),s=r("./src/controller/fragment-tracker.ts"),a=r("./src/utils/buffer-helper.ts"),o=r("./src/utils/logger.ts"),l=r("./src/events.ts"),h=r("./src/errors.ts"),u=r("./src/types/transmuxer.ts"),d=r("./src/utils/mp4-tools.ts"),c=r("./src/utils/discontinuities.ts"),f=r("./src/controller/fragment-finders.ts"),g=r("./src/controller/level-helper.ts"),p=r("./src/loader/fragment-loader.ts"),m=r("./src/crypt/decrypter.ts"),v=r("./src/utils/time-ranges.ts"),y=r("./src/types/loader.ts");function E(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function S(e,t){return S=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},S(e,t)}var b={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_TRACK:"WAITING_TRACK",PARSING:"PARSING",PARSED:"PARSED",BACKTRACKING:"BACKTRACKING",ENDED:"ENDED",ERROR:"ERROR",WAITING_INIT_PTS:"WAITING_INIT_PTS",WAITING_LEVEL:"WAITING_LEVEL"},_=function(e){var t,r;function n(t,r,i){var n;return(n=e.call(this)||this).hls=void 0,n.fragPrevious=null,n.fragCurrent=null,n.fragmentTracker=void 0,n.transmuxer=null,n._state=b.STOPPED,n.media=void 0,n.mediaBuffer=void 0,n.config=void 0,n.bitrateTest=!1,n.lastCurrentTime=0,n.nextLoadPosition=0,n.startPosition=0,n.loadedmetadata=!1,n.fragLoadError=0,n.retryDate=0,n.levels=null,n.fragmentLoader=void 0,n.levelLastLoaded=null,n.startFragRequested=!1,n.decrypter=void 0,n.initPTS=[],n.onvseeking=null,n.onvended=null,n.logPrefix="",n.log=void 0,n.warn=void 0,n.logPrefix=i,n.log=o.logger.log.bind(o.logger,i+":"),n.warn=o.logger.warn.bind(o.logger,i+":"),n.hls=t,n.fragmentLoader=new p.default(t.config),n.fragmentTracker=r,n.config=t.config,n.decrypter=new m.default(t,t.config),t.on(l.Events.KEY_LOADED,n.onKeyLoaded,function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(n)),n}r=e,(t=n).prototype=Object.create(r.prototype),t.prototype.constructor=t,S(t,r);var _,T,L,P=n.prototype;return P.doTick=function(){this.onTickEnd()},P.onTickEnd=function(){},P.startLoad=function(e){},P.stopLoad=function(){this.fragmentLoader.abort();var e=this.fragCurrent;e&&this.fragmentTracker.removeFragment(e),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=b.STOPPED},P._streamEnded=function(e,t){var r=this.fragCurrent,i=this.fragmentTracker;if(!t.live&&r&&r.sn>=t.endSN&&!e.nextStart){var n=t.partList;if(null!=n&&n.length){var o=n[n.length-1];return a.BufferHelper.isBuffered(this.media,o.start+o.duration/2)}var l=i.getState(r);return l===s.FragmentState.PARTIAL||l===s.FragmentState.OK}return!1},P.onMediaAttached=function(e,t){var r=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),r.addEventListener("seeking",this.onvseeking),r.addEventListener("ended",this.onvended);var i=this.config;this.levels&&i.autoStartLoad&&this.state===b.STOPPED&&this.startLoad(i.startPosition)},P.onMediaDetaching=function(){var e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()},P.onMediaSeeking=function(){var e=this.config,t=this.fragCurrent,r=this.media,n=this.mediaBuffer,s=this.state,o=r?r.currentTime:0,l=a.BufferHelper.bufferInfo(n||r,o,e.maxBufferHole);if(this.log("media seeking to "+(Object(i.isFiniteNumber)(o)?o.toFixed(3):o)+", state: "+s),s===b.ENDED)this.resetLoadingState();else if(t&&!l.len){var h=e.maxFragLookUpTolerance,u=t.start-h,d=o>t.start+t.duration+h;(o<u||d)&&(d&&t.loader&&(this.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),t.loader.abort()),this.resetLoadingState())}r&&(this.lastCurrentTime=o),this.loadedmetadata||l.len||(this.nextLoadPosition=this.startPosition=o),this.tickImmediate()},P.onMediaEnded=function(){this.startPosition=this.lastCurrentTime=0},P.onKeyLoaded=function(e,t){if(this.state===b.KEY_LOADING&&t.frag===this.fragCurrent&&this.levels){this.state=b.IDLE;var r=this.levels[t.frag.level].details;r&&this.loadFragment(t.frag,r,t.frag.start)}},P.onHandlerDestroying=function(){this.stopLoad(),e.prototype.onHandlerDestroying.call(this)},P.onHandlerDestroyed=function(){this.state=b.STOPPED,this.hls.off(l.Events.KEY_LOADED,this.onKeyLoaded,this),this.fragmentLoader&&this.fragmentLoader.destroy(),this.decrypter&&this.decrypter.destroy(),this.hls=this.log=this.warn=this.decrypter=this.fragmentLoader=this.fragmentTracker=null,e.prototype.onHandlerDestroyed.call(this)},P.loadKey=function(e,t){this.log("Loading key for "+e.sn+" of ["+t.startSN+"-"+t.endSN+"], "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level),this.state=b.KEY_LOADING,this.fragCurrent=e,this.hls.trigger(l.Events.KEY_LOADING,{frag:e})},P.loadFragment=function(e,t,r){this._loadFragForPlayback(e,t,r)},P._loadFragForPlayback=function(e,t,r){var i=this;this._doFragLoad(e,t,r,(function(t){if(i.fragContextChanged(e))return i.warn("Fragment "+e.sn+(t.part?" p: "+t.part.index:"")+" of level "+e.level+" was dropped during download."),void i.fragmentTracker.removeFragment(e);e.stats.chunkCount++,i._handleFragmentLoadProgress(t)})).then((function(t){if(t){i.fragLoadError=0;var r=i.state;if(!i.fragContextChanged(e))return"payload"in t&&(i.log("Loaded fragment "+e.sn+" of level "+e.level),i.hls.trigger(l.Events.FRAG_LOADED,t),i.state===b.BACKTRACKING)?(i.fragmentTracker.backtrack(e,t),void i.resetFragmentLoading(e)):void i._handleFragmentLoadComplete(t);(r===b.FRAG_LOADING||r===b.BACKTRACKING||!i.fragCurrent&&r===b.PARSING)&&(i.fragmentTracker.removeFragment(e),i.state=b.IDLE)}})).catch((function(t){i.warn(t),i.resetFragmentLoading(e)}))},P.flushMainBuffer=function(e,t,r){if(void 0===r&&(r=null),e-t){var i={startOffset:e,endOffset:t,type:r};this.fragLoadError=0,this.hls.trigger(l.Events.BUFFER_FLUSHING,i)}},P._loadInitSegment=function(e){var t=this;this._doFragLoad(e).then((function(r){if(!r||t.fragContextChanged(e)||!t.levels)throw new Error("init load aborted");return r})).then((function(r){var i=t.hls,n=r.payload,s=e.decryptdata;if(n&&n.byteLength>0&&s&&s.key&&s.iv&&"AES-128"===s.method){var a=self.performance.now();return t.decrypter.webCryptoDecrypt(new Uint8Array(n),s.key.buffer,s.iv.buffer).then((function(t){var n=self.performance.now();return i.trigger(l.Events.FRAG_DECRYPTED,{frag:e,payload:t,stats:{tstart:a,tdecrypt:n}}),r.payload=t,r}))}return r})).then((function(r){var i=t.fragCurrent,n=t.hls,s=t.levels;if(!s)throw new Error("init load aborted, missing levels");var a=s[e.level].details;console.assert(a,"Level details are defined when init segment is loaded");var o=e.stats;t.state=b.IDLE,t.fragLoadError=0,e.data=new Uint8Array(r.payload),o.parsing.start=o.buffering.start=self.performance.now(),o.parsing.end=o.buffering.end=self.performance.now(),r.frag===i&&n.trigger(l.Events.FRAG_BUFFERED,{stats:o,frag:i,part:null,id:e.type}),t.tick()})).catch((function(r){t.warn(r),t.resetFragmentLoading(e)}))},P.fragContextChanged=function(e){var t=this.fragCurrent;return!e||!t||e.level!==t.level||e.sn!==t.sn||e.urlId!==t.urlId},P.fragBufferedComplete=function(e,t){var r=this.mediaBuffer?this.mediaBuffer:this.media;this.log("Buffered "+e.type+" sn: "+e.sn+(t?" part: "+t.index:"")+" of "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level+" "+v.default.toString(a.BufferHelper.getBuffered(r))),this.state=b.IDLE,this.tick()},P._handleFragmentLoadComplete=function(e){var t=this.transmuxer;if(t){var r=e.frag,i=e.part,n=e.partsLoaded,s=!n||0===n.length||n.some((function(e){return!e})),a=new u.ChunkMetadata(r.level,r.sn,r.stats.chunkCount+1,0,i?i.index:-1,!s);t.flush(a)}},P._handleFragmentLoadProgress=function(e){},P._doFragLoad=function(e,t,r,n){var s=this;if(void 0===r&&(r=null),!this.levels)throw new Error("frag load aborted, missing levels");if(r=Math.max(e.start,r||0),this.config.lowLatencyMode&&t){var a=t.partList;if(a&&n){r>e.end&&t.fragmentHint&&(e=t.fragmentHint);var o=this.getNextPart(a,e,r);if(o>-1){var h=a[o];return this.log("Loading part sn: "+e.sn+" p: "+h.index+" cc: "+e.cc+" of playlist ["+t.startSN+"-"+t.endSN+"] parts [0-"+o+"-"+(a.length-1)+"] "+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(r.toFixed(3))),this.nextLoadPosition=h.start+h.duration,this.state=b.FRAG_LOADING,this.hls.trigger(l.Events.FRAG_LOADING,{frag:e,part:a[o],targetBufferTime:r}),this.doFragPartsLoad(e,a,o,n).catch((function(e){return s.handleFragLoadError(e)}))}if(!e.url||this.loadedEndOfParts(a,r))return Promise.resolve(null)}}return this.log("Loading fragment "+e.sn+" cc: "+e.cc+" "+(t?"of ["+t.startSN+"-"+t.endSN+"] ":"")+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(r.toFixed(3))),Object(i.isFiniteNumber)(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=b.FRAG_LOADING,this.hls.trigger(l.Events.FRAG_LOADING,{frag:e,targetBufferTime:r}),this.fragmentLoader.load(e,n).catch((function(e){return s.handleFragLoadError(e)}))},P.doFragPartsLoad=function(e,t,r,i){var n=this;return new Promise((function(s,a){var o=[];!function r(h){var u=t[h];n.fragmentLoader.loadPart(e,u,i).then((function(i){o[u.index]=i;var a=i.part;n.hls.trigger(l.Events.FRAG_LOADED,i);var d=t[h+1];if(!d||d.fragment!==e)return s({frag:e,part:a,partsLoaded:o});r(h+1)})).catch(a)}(r)}))},P.handleFragLoadError=function(e){var t=e.data;return t&&t.details===h.ErrorDetails.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(l.Events.ERROR,t),null},P._handleTransmuxerFlush=function(e){var t=this.getCurrentContext(e);if(t&&this.state===b.PARSING){var r=t.frag,i=t.part,n=t.level,s=self.performance.now();r.stats.parsing.end=s,i&&(i.stats.parsing.end=s),this.updateLevelTiming(r,i,n,e.partial)}else this.fragCurrent||(this.state=b.IDLE)},P.getCurrentContext=function(e){var t=this.levels,r=e.level,i=e.sn,n=e.part;if(!t||!t[r])return this.warn("Levels object was unset while buffering fragment "+i+" of level "+r+". The current chunk will not be buffered."),null;var s=t[r],a=n>-1?Object(g.getPartWith)(s,i,n):null,o=a?a.fragment:Object(g.getFragmentWithSN)(s,i,this.fragCurrent);return o?{frag:o,part:a,level:s}:null},P.bufferFragmentData=function(e,t,r,i){if(e&&this.state===b.PARSING){var n=e.data1,s=e.data2,a=n;if(n&&s&&(a=Object(d.appendUint8Array)(n,s)),a&&a.length){var o={type:e.type,frag:t,part:r,chunkMeta:i,parent:t.type,data:a};this.hls.trigger(l.Events.BUFFER_APPENDING,o),e.dropped&&e.independent&&!r&&this.flushBufferGap(t)}}},P.flushBufferGap=function(e){var t=this.media;if(t)if(a.BufferHelper.isBuffered(t,t.currentTime)){var r=t.currentTime,i=a.BufferHelper.bufferInfo(t,r,0),n=e.duration,s=Math.min(2*this.config.maxFragLookUpTolerance,.25*n),o=Math.max(Math.min(e.start-s,i.end-s),r+s);e.start-o>s&&this.flushMainBuffer(o,e.start)}else this.flushMainBuffer(0,e.start)},P.getFwdBufferInfo=function(e,t){var r=this.config,n=this.getLoadPosition();if(!Object(i.isFiniteNumber)(n))return null;var s=a.BufferHelper.bufferInfo(e,n,r.maxBufferHole);if(0===s.len&&void 0!==s.nextStart){var o=this.fragmentTracker.getBufferedFrag(n,t);if(o&&s.nextStart<o.end)return a.BufferHelper.bufferInfo(e,n,Math.max(s.nextStart,r.maxBufferHole))}return s},P.getMaxBufferLength=function(e){var t,r=this.config;return t=e?Math.max(8*r.maxBufferSize/e,r.maxBufferLength):r.maxBufferLength,Math.min(t,r.maxMaxBufferLength)},P.reduceMaxBufferLength=function(e){var t=this.config,r=e||t.maxBufferLength;return t.maxMaxBufferLength>=r&&(t.maxMaxBufferLength/=2,this.warn("Reduce max buffer length to "+t.maxMaxBufferLength+"s"),!0)},P.getNextFragment=function(e,t){var r,i,n=t.fragments,s=n.length;if(!s)return null;var a,o=this.config,l=n[0].start;if(t.live){var h=o.initialLiveManifestSize;if(s<h)return this.warn("Not enough fragments to start playback (have: "+s+", need: "+h+")"),null;t.PTSKnown||this.startFragRequested||-1!==this.startPosition||(a=this.getInitialLiveFragment(t,n),this.startPosition=a?this.hls.liveSyncPosition||a.start:e)}else e<=l&&(a=n[0]);if(!a){var u=o.lowLatencyMode?t.partEnd:t.fragmentEnd;a=this.getFragmentAtPosition(e,u,t)}return null===(r=a)||void 0===r||!r.initSegment||null!==(i=a)&&void 0!==i&&i.initSegment.data||this.bitrateTest||(a=a.initSegment),a},P.getNextPart=function(e,t,r){for(var i=-1,n=!1,s=!0,a=0,o=e.length;a<o;a++){var l=e[a];if(s=s&&!l.independent,i>-1&&r<l.start)break;var h=l.loaded;!h&&(n||l.independent||s)&&l.fragment===t&&(i=a),n=h}return i},P.loadedEndOfParts=function(e,t){var r=e[e.length-1];return r&&t>r.start&&r.loaded},P.getInitialLiveFragment=function(e,t){var r=this.fragPrevious,i=null;if(r){if(e.hasProgramDateTime&&(this.log("Live playlist, switching playlist, load frag with same PDT: "+r.programDateTime),i=Object(f.findFragmentByPDT)(t,r.endProgramDateTime,this.config.maxFragLookUpTolerance)),!i){var n=r.sn+1;if(n>=e.startSN&&n<=e.endSN){var s=t[n-e.startSN];r.cc===s.cc&&(i=s,this.log("Live playlist, switching playlist, load frag with next SN: "+i.sn))}i||(i=Object(f.findFragWithCC)(t,r.cc))&&this.log("Live playlist, switching playlist, load frag with same CC: "+i.sn)}}else{var a=this.hls.liveSyncPosition;null!==a&&(i=this.getFragmentAtPosition(a,this.bitrateTest?e.fragmentEnd:e.edge,e))}return i},P.getFragmentAtPosition=function(e,t,r){var i,n=this.config,a=this.fragPrevious,o=r.fragments,l=r.endSN,h=r.fragmentHint,u=n.maxFragLookUpTolerance,d=!!(n.lowLatencyMode&&r.partList&&h);if(d&&h&&!this.bitrateTest&&(o=o.concat(h),l=h.sn),e<t){var c=e>t-u?0:u;i=Object(f.findFragmentByPTS)(a,o,e,c)}else i=o[o.length-1];if(i){var g=i.sn-r.startSN,p=a&&i.level===a.level,m=o[g+1];if(this.fragmentTracker.getState(i)===s.FragmentState.BACKTRACKED){i=null;for(var v=g;o[v]&&this.fragmentTracker.getState(o[v])===s.FragmentState.BACKTRACKED;)i=a?o[v--]:o[--v];i||(i=m)}else a&&i.sn===a.sn&&!d&&p&&(i.sn<l&&this.fragmentTracker.getState(m)!==s.FragmentState.OK?(this.log("SN "+i.sn+" just loaded, load next one: "+m.sn),i=m):i=null)}return i},P.synchronizeToLiveEdge=function(e){var t=this.config,r=this.media;if(r){var i=this.hls.liveSyncPosition,n=r.currentTime,s=e.fragments[0].start,a=e.edge,o=n>=s-t.maxFragLookUpTolerance&&n<=a;if(null!==i&&r.duration>i&&(n<i||!o)){var l=void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:t.liveMaxLatencyDurationCount*e.targetduration;(!o&&r.readyState<4||n<a-l)&&(this.loadedmetadata||(this.nextLoadPosition=i),r.readyState&&(this.warn("Playback: "+n.toFixed(3)+" is located too far from the end of live sliding playlist: "+a+", reset currentTime to : "+i.toFixed(3)),r.currentTime=i))}}},P.alignPlaylists=function(e,t){var r=this.levels,n=this.levelLastLoaded,s=this.fragPrevious,a=null!==n?r[n]:null,o=e.fragments.length;if(!o)return this.warn("No fragments in live playlist"),0;var l=e.fragments[0].start,h=!t,u=e.alignedSliding&&Object(i.isFiniteNumber)(l);if(h||!u&&!l){Object(c.alignStream)(s,a,e);var d=e.fragments[0].start;return this.log("Live playlist sliding: "+d.toFixed(2)+" start-sn: "+(t?t.startSN:"na")+"->"+e.startSN+" prev-sn: "+(s?s.sn:"na")+" fragments: "+o),d}return l},P.waitForCdnTuneIn=function(e){return e.live&&e.canBlockReload&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)},P.setStartPosition=function(e,t){var r=this.startPosition;if(r<t&&(r=-1),-1===r||-1===this.lastCurrentTime){var n=e.startTimeOffset;Object(i.isFiniteNumber)(n)?(r=t+n,n<0&&(r+=e.totalduration),r=Math.min(Math.max(t,r),t+e.totalduration),this.log("Start time offset "+n+" found in playlist, adjust startPosition to "+r),this.startPosition=r):e.live?r=this.hls.liveSyncPosition||t:this.startPosition=r=0,this.lastCurrentTime=r}this.nextLoadPosition=r},P.getLoadPosition=function(){var e=this.media,t=0;return this.loadedmetadata&&e?t=e.currentTime:this.nextLoadPosition&&(t=this.nextLoadPosition),t},P.handleFragLoadAborted=function(e,t){this.transmuxer&&"initSegment"!==e.sn&&e.stats.aborted&&(this.warn("Fragment "+e.sn+(t?" part"+t.index:"")+" of level "+e.level+" was aborted"),this.resetFragmentLoading(e))},P.resetFragmentLoading=function(e){this.fragCurrent&&this.fragContextChanged(e)||(this.state=b.IDLE)},P.onFragmentOrKeyLoadError=function(e,t){if(!t.fatal){var r=t.frag;if(r&&r.type===e){var i=this.fragCurrent;console.assert(i&&r.sn===i.sn&&r.level===i.level&&r.urlId===i.urlId,"Frag load error must match current frag to retry");var n=this.config;if(this.fragLoadError+1<=n.fragLoadingMaxRetry){if(this.resetLiveStartWhenNotLoaded(r.level))return;var s=Math.min(Math.pow(2,this.fragLoadError)*n.fragLoadingRetryDelay,n.fragLoadingMaxRetryTimeout);this.warn("Fragment "+r.sn+" of "+e+" "+r.level+" failed to load, retrying in "+s+"ms"),this.retryDate=self.performance.now()+s,this.fragLoadError++,this.state=b.FRAG_LOADING_WAITING_RETRY}else t.levelRetry?(e===y.PlaylistLevelType.AUDIO&&(this.fragCurrent=null),this.fragLoadError=0,this.state=b.IDLE):(o.logger.error(t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.hls.stopLoad(),this.state=b.ERROR)}}},P.afterBufferFlushed=function(e,t,r){if(e){var i=a.BufferHelper.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,i,r),this.state===b.ENDED&&this.resetLoadingState()}},P.resetLoadingState=function(){this.fragCurrent=null,this.fragPrevious=null,this.state=b.IDLE},P.resetLiveStartWhenNotLoaded=function(e){if(!this.loadedmetadata){this.startFragRequested=!1;var t=this.levels?this.levels[e].details:null;if(null!=t&&t.live)return this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState(),!0;this.nextLoadPosition=this.startPosition}return!1},P.updateLevelTiming=function(e,t,r,i){var n=this,s=r.details;console.assert(!!s,"level.details must be defined"),Object.keys(e.elementaryStreams).reduce((function(t,a){var o=e.elementaryStreams[a];if(o){var h=o.endPTS-o.startPTS;if(h<=0)return n.warn("Could not parse fragment "+e.sn+" "+a+" duration reliably ("+h+") resetting transmuxer to fallback to playlist timing"),n.resetTransmuxer(),t||!1;var u=i?0:Object(g.updateFragPTSDTS)(s,e,o.startPTS,o.endPTS,o.startDTS,o.endDTS);return n.hls.trigger(l.Events.LEVEL_PTS_UPDATED,{details:s,level:r,drift:u,type:a,frag:e,start:o.startPTS,end:o.endPTS}),!0}return t}),!1)?(this.state=b.PARSED,this.hls.trigger(l.Events.FRAG_PARSED,{frag:e,part:t})):this.resetLoadingState()},P.resetTransmuxer=function(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)},_=n,(T=[{key:"state",get:function(){return this._state},set:function(e){var t=this._state;t!==e&&(this._state=e,this.log(t+"->"+e))}}])&&E(_.prototype,T),L&&E(_,L),n}(n.default)},"./src/controller/buffer-controller.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return f}));var i=r("./src/polyfills/number.ts"),n=r("./src/events.ts"),s=r("./src/utils/logger.ts"),a=r("./src/errors.ts"),o=r("./src/utils/buffer-helper.ts"),l=r("./src/utils/mediasource-helper.ts"),h=r("./src/loader/fragment.ts"),u=r("./src/controller/buffer-operation-queue.ts"),d=Object(l.getMediaSource)(),c=/([ha]vc.)(?:\.[^.,]+)+/,f=function(){function e(e){var t=this;this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.appendError=0,this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this._onMediaSourceOpen=function(){var e=t.hls,r=t.media,i=t.mediaSource;s.logger.log("[buffer-controller]: Media source opened"),r&&(t.updateMediaElementDuration(),e.trigger(n.Events.MEDIA_ATTACHED,{media:r})),i&&i.removeEventListener("sourceopen",t._onMediaSourceOpen),t.checkPendingTracks()},this._onMediaSourceClose=function(){s.logger.log("[buffer-controller]: Media source closed")},this._onMediaSourceEnded=function(){s.logger.log("[buffer-controller]: Media source ended")},this.hls=e,this._initSourceBuffer(),this.registerListeners()}var t=e.prototype;return t.hasSourceTypes=function(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0},t.destroy=function(){this.unregisterListeners(),this.details=null},t.registerListeners=function(){var e=this.hls;e.on(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(n.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(n.Events.BUFFER_RESET,this.onBufferReset,this),e.on(n.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.on(n.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(n.Events.BUFFER_EOS,this.onBufferEos,this),e.on(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(n.Events.FRAG_PARSED,this.onFragParsed,this),e.on(n.Events.FRAG_CHANGED,this.onFragChanged,this)},t.unregisterListeners=function(){var e=this.hls;e.off(n.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(n.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(n.Events.BUFFER_RESET,this.onBufferReset,this),e.off(n.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.off(n.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(n.Events.BUFFER_EOS,this.onBufferEos,this),e.off(n.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(n.Events.FRAG_PARSED,this.onFragParsed,this),e.off(n.Events.FRAG_CHANGED,this.onFragChanged,this)},t._initSourceBuffer=function(){this.sourceBuffer={},this.operationQueue=new u.default(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]}},t.onManifestParsed=function(e,t){var r=2;(t.audio&&!t.video||!t.altAudio)&&(r=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=r,this.details=null,s.logger.log(this.bufferCodecEventsExpected+" bufferCodec event(s) expected")},t.onMediaAttaching=function(e,t){var r=this.media=t.media;if(r&&d){var i=this.mediaSource=new d;i.addEventListener("sourceopen",this._onMediaSourceOpen),i.addEventListener("sourceended",this._onMediaSourceEnded),i.addEventListener("sourceclose",this._onMediaSourceClose),r.src=self.URL.createObjectURL(i),this._objectUrl=r.src}},t.onMediaDetaching=function(){var e=this.media,t=this.mediaSource,r=this._objectUrl;if(t){if(s.logger.log("[buffer-controller]: media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){s.logger.warn("[buffer-controller]: onMediaDetaching: "+e.message+" while calling endOfStream")}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),e&&(r&&self.URL.revokeObjectURL(r),e.src===r?(e.removeAttribute("src"),e.load()):s.logger.warn("[buffer-controller]: media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(n.Events.MEDIA_DETACHED,void 0)},t.onBufferReset=function(){var e=this;this.getSourceBufferTypes().forEach((function(t){var r=e.sourceBuffer[t];try{r&&(e.removeBufferListeners(t),e.mediaSource&&e.mediaSource.removeSourceBuffer(r),e.sourceBuffer[t]=void 0)}catch(e){s.logger.warn("[buffer-controller]: Failed to reset the "+t+" buffer",e)}})),this._initSourceBuffer()},t.onBufferCodecs=function(e,t){var r=this,i=this.getSourceBufferTypes().length;Object.keys(t).forEach((function(e){if(i){var n=r.tracks[e];if(n&&"function"==typeof n.buffer.changeType){var s=t[e],a=s.codec,o=s.levelCodec,l=s.container;if((n.levelCodec||n.codec).replace(c,"$1")!==(o||a).replace(c,"$1")){var h=l+";codecs="+(o||a);r.appendChangeType(e,h)}}}else r.pendingTracks[e]=t[e]})),i||(this.bufferCodecEventsExpected=Math.max(this.bufferCodecEventsExpected-1,0),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks())},t.appendChangeType=function(e,t){var r=this,i=this.operationQueue,n={execute:function(){var n=r.sourceBuffer[e];n&&(s.logger.log("[buffer-controller]: changing "+e+" sourceBuffer type to "+t),n.changeType(t)),i.shiftAndExecuteNext(e)},onStart:function(){},onComplete:function(){},onError:function(t){s.logger.warn("[buffer-controller]: Failed to change "+e+" SourceBuffer type",t)}};i.append(n,e)},t.onBufferAppending=function(e,t){var r=this,i=this.hls,l=this.operationQueue,h=this.tracks,u=t.data,d=t.type,c=t.frag,f=t.part,g=t.chunkMeta,p=g.buffering[d],m=self.performance.now();p.start=m;var v=c.stats.buffering,y=f?f.stats.buffering:null;0===v.start&&(v.start=m),y&&0===y.start&&(y.start=m);var E=h.audio,S="audio"===d&&1===g.id&&"audio/mpeg"===(null==E?void 0:E.container),b={execute:function(){if(p.executeStart=self.performance.now(),S){var e=r.sourceBuffer[d];if(e){var t=c.start-e.timestampOffset;Math.abs(t)>=.1&&(s.logger.log("[buffer-controller]: Updating audio SourceBuffer timestampOffset to "+c.start+" (delta: "+t+") sn: "+c.sn+")"),e.timestampOffset=c.start)}}r.appendExecutor(u,d)},onStart:function(){},onComplete:function(){var e=self.performance.now();p.executeEnd=p.end=e,0===v.first&&(v.first=e),y&&0===y.first&&(y.first=e);var t=r.sourceBuffer,i={};for(var s in t)i[s]=o.BufferHelper.getBuffered(t[s]);r.appendError=0,r.hls.trigger(n.Events.BUFFER_APPENDED,{type:d,frag:c,part:f,chunkMeta:g,parent:c.type,timeRanges:i})},onError:function(e){s.logger.error("[buffer-controller]: Error encountered while trying to append to the "+d+" SourceBuffer",e);var t={type:a.ErrorTypes.MEDIA_ERROR,parent:c.type,details:a.ErrorDetails.BUFFER_APPEND_ERROR,err:e,fatal:!1};e.code===DOMException.QUOTA_EXCEEDED_ERR?t.details=a.ErrorDetails.BUFFER_FULL_ERROR:(r.appendError++,t.details=a.ErrorDetails.BUFFER_APPEND_ERROR,r.appendError>i.config.appendErrorMaxRetry&&(s.logger.error("[buffer-controller]: Failed "+i.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),t.fatal=!0)),i.trigger(n.Events.ERROR,t)}};l.append(b,d)},t.onBufferFlushing=function(e,t){var r=this,i=this.operationQueue,a=function(e){return{execute:r.removeExecutor.bind(r,e,t.startOffset,t.endOffset),onStart:function(){},onComplete:function(){r.hls.trigger(n.Events.BUFFER_FLUSHED,{type:e})},onError:function(t){s.logger.warn("[buffer-controller]: Failed to remove from "+e+" SourceBuffer",t)}}};t.type?i.append(a(t.type),t.type):this.getSourceBufferTypes().forEach((function(e){i.append(a(e),e)}))},t.onFragParsed=function(e,t){var r=this,i=t.frag,a=t.part,o=[],l=a?a.elementaryStreams:i.elementaryStreams;l[h.ElementaryStreamTypes.AUDIOVIDEO]?o.push("audiovideo"):(l[h.ElementaryStreamTypes.AUDIO]&&o.push("audio"),l[h.ElementaryStreamTypes.VIDEO]&&o.push("video")),0===o.length&&s.logger.warn("Fragments must have at least one ElementaryStreamType set. type: "+i.type+" level: "+i.level+" sn: "+i.sn),this.blockBuffers((function(){var e=self.performance.now();i.stats.buffering.end=e,a&&(a.stats.buffering.end=e);var t=a?a.stats:i.stats;r.hls.trigger(n.Events.FRAG_BUFFERED,{frag:i,part:a,stats:t,id:i.type})}),o)},t.onFragChanged=function(e,t){this.flushBackBuffer()},t.onBufferEos=function(e,t){var r=this;this.getSourceBufferTypes().reduce((function(e,i){var n=r.sourceBuffer[i];return t.type&&t.type!==i||n&&!n.ended&&(n.ended=!0,s.logger.log("[buffer-controller]: "+i+" sourceBuffer now EOS")),e&&!(n&&!n.ended)}),!0)&&this.blockBuffers((function(){var e=r.mediaSource;e&&"open"===e.readyState&&e.endOfStream()}))},t.onLevelUpdated=function(e,t){var r=t.details;r.fragments.length&&(this.details=r,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())},t.flushBackBuffer=function(){var e=this.hls,t=this.details,r=this.media,s=this.sourceBuffer;if(r&&null!==t){var a=this.getSourceBufferTypes();if(a.length){var l=t.live&&null!==e.config.liveBackBufferLength?e.config.liveBackBufferLength:e.config.backBufferLength;if(Object(i.isFiniteNumber)(l)&&!(l<0)){var h=r.currentTime,u=t.levelTargetDuration,d=Math.max(l,u),c=Math.floor(h/u)*u-d;a.forEach((function(r){var i=s[r];if(i){var a=o.BufferHelper.getBuffered(i);a.length>0&&c>a.start(0)&&(e.trigger(n.Events.BACK_BUFFER_REACHED,{bufferEnd:c}),t.live&&e.trigger(n.Events.LIVE_BACK_BUFFER_REACHED,{bufferEnd:c}),e.trigger(n.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:c,type:r}))}}))}}}},t.updateMediaElementDuration=function(){if(this.details&&this.media&&this.mediaSource&&"open"===this.mediaSource.readyState){var e=this.details,t=this.hls,r=this.media,n=this.mediaSource,a=e.fragments[0].start+e.totalduration,o=r.duration,l=Object(i.isFiniteNumber)(n.duration)?n.duration:0;e.live&&t.config.liveDurationInfinity?(s.logger.log("[buffer-controller]: Media Source duration is set to Infinity"),n.duration=1/0,this.updateSeekableRange(e)):(a>l&&a>o||!Object(i.isFiniteNumber)(o))&&(s.logger.log("[buffer-controller]: Updating Media Source duration to "+a.toFixed(3)),n.duration=a)}},t.updateSeekableRange=function(e){var t=this.mediaSource,r=e.fragments;if(r.length&&e.live&&null!=t&&t.setLiveSeekableRange){var i=Math.max(0,r[0].start),n=Math.max(i,i+e.totalduration);t.setLiveSeekableRange(i,n)}},t.checkPendingTracks=function(){var e=this.bufferCodecEventsExpected,t=this.operationQueue,r=this.pendingTracks,i=Object.keys(r).length;if(i&&!e||2===i){this.createSourceBuffers(r),this.pendingTracks={};var s=this.getSourceBufferTypes();if(0===s.length)return void this.hls.trigger(n.Events.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,reason:"could not create source buffer for media codec(s)"});s.forEach((function(e){t.executeNext(e)}))}},t.createSourceBuffers=function(e){var t=this.sourceBuffer,r=this.mediaSource;if(!r)throw Error("createSourceBuffers called when mediaSource was null");var i=0;for(var o in e)if(!t[o]){var l=e[o];if(!l)throw Error("source buffer exists for track "+o+", however track does not");var h=l.levelCodec||l.codec,u=l.container+";codecs="+h;s.logger.log("[buffer-controller]: creating sourceBuffer("+u+")");try{var d=t[o]=r.addSourceBuffer(u),c=o;this.addBufferListener(c,"updatestart",this._onSBUpdateStart),this.addBufferListener(c,"updateend",this._onSBUpdateEnd),this.addBufferListener(c,"error",this._onSBUpdateError),this.tracks[o]={buffer:d,codec:h,container:l.container,levelCodec:l.levelCodec,id:l.id},i++}catch(e){s.logger.error("[buffer-controller]: error while trying to add sourceBuffer: "+e.message),this.hls.trigger(n.Events.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,mimeType:u})}}i&&this.hls.trigger(n.Events.BUFFER_CREATED,{tracks:this.tracks})},t._onSBUpdateStart=function(e){this.operationQueue.current(e).onStart()},t._onSBUpdateEnd=function(e){var t=this.operationQueue;t.current(e).onComplete(),t.shiftAndExecuteNext(e)},t._onSBUpdateError=function(e,t){s.logger.error("[buffer-controller]: "+e+" SourceBuffer error",t),this.hls.trigger(n.Events.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1});var r=this.operationQueue.current(e);r&&r.onError(t)},t.removeExecutor=function(e,t,r){var n=this.media,a=this.mediaSource,o=this.operationQueue,l=this.sourceBuffer[e];if(!n||!a||!l)return s.logger.warn("[buffer-controller]: Attempting to remove from the "+e+" SourceBuffer, but it does not exist"),void o.shiftAndExecuteNext(e);var h=Object(i.isFiniteNumber)(n.duration)?n.duration:1/0,u=Object(i.isFiniteNumber)(a.duration)?a.duration:1/0,d=Math.max(0,t),c=Math.min(r,h,u);c>d?(s.logger.log("[buffer-controller]: Removing ["+d+","+c+"] from the "+e+" SourceBuffer"),console.assert(!l.updating,e+" sourceBuffer must not be updating"),l.remove(d,c)):o.shiftAndExecuteNext(e)},t.appendExecutor=function(e,t){var r=this.operationQueue,i=this.sourceBuffer[t];if(!i)return s.logger.warn("[buffer-controller]: Attempting to append to the "+t+" SourceBuffer, but it does not exist"),void r.shiftAndExecuteNext(t);i.ended=!1,console.assert(!i.updating,t+" sourceBuffer must not be updating"),i.appendBuffer(e)},t.blockBuffers=function(e,t){var r=this;if(void 0===t&&(t=this.getSourceBufferTypes()),!t.length)return s.logger.log("[buffer-controller]: Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve(e);var i=this.operationQueue,n=t.map((function(e){return i.appendBlocker(e)}));Promise.all(n).then((function(){e(),t.forEach((function(e){var t=r.sourceBuffer[e];t&&t.updating||i.shiftAndExecuteNext(e)}))}))},t.getSourceBufferTypes=function(){return Object.keys(this.sourceBuffer)},t.addBufferListener=function(e,t,r){var i=this.sourceBuffer[e];if(i){var n=r.bind(this,e);this.listeners[e].push({event:t,listener:n}),i.addEventListener(t,n)}},t.removeBufferListeners=function(e){var t=this.sourceBuffer[e];t&&this.listeners[e].forEach((function(e){t.removeEventListener(e.event,e.listener)}))},e}()},"./src/controller/buffer-operation-queue.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return n}));var i=r("./src/utils/logger.ts"),n=function(){function e(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}var t=e.prototype;return t.append=function(e,t){var r=this.queues[t];r.push(e),1===r.length&&this.buffers[t]&&this.executeNext(t)},t.insertAbort=function(e,t){this.queues[t].unshift(e),this.executeNext(t)},t.appendBlocker=function(e){var t,r=new Promise((function(e){t=e})),i={execute:t,onStart:function(){},onComplete:function(){},onError:function(){}};return this.append(i,e),r},t.executeNext=function(e){var t=this.buffers,r=this.queues,n=t[e],s=r[e];if(s.length){var a=s[0];try{a.execute()}catch(t){i.logger.warn("[buffer-operation-queue]: Unhandled exception executing the current operation"),a.onError(t),n&&n.updating||(s.shift(),this.executeNext(e))}}},t.shiftAndExecuteNext=function(e){this.queues[e].shift(),this.executeNext(e)},t.current=function(e){return this.queues[e][0]},e}()},"./src/controller/cap-level-controller.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/events.ts");function n(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var s=function(){function e(e){this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.hls=void 0,this.streamController=void 0,this.clientRect=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}var t,r,s,a=e.prototype;return a.setStreamController=function(e){this.streamController=e},a.destroy=function(){this.unregisterListener(),this.hls.config.capLevelToPlayerSize&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null},a.registerListeners=function(){var e=this.hls;e.on(i.Events.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(i.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(i.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(i.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this)},a.unregisterListener=function(){var e=this.hls;e.off(i.Events.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(i.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(i.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(i.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this)},a.onFpsDropLevelCapping=function(t,r){e.isLevelAllowed(r.droppedLevel,this.restrictedLevels)&&this.restrictedLevels.push(r.droppedLevel)},a.onMediaAttaching=function(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null},a.onManifestParsed=function(e,t){var r=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,r.config.capLevelToPlayerSize&&t.video&&this.startCapping()},a.onBufferCodecs=function(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()},a.onMediaDetaching=function(){this.stopCapping()},a.detectPlayerSize=function(){if(this.media&&this.mediaHeight>0&&this.mediaWidth>0){var e=this.hls.levels;if(e.length){var t=this.hls;t.autoLevelCapping=this.getMaxLevel(e.length-1),t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}},a.getMaxLevel=function(t){var r=this,i=this.hls.levels;if(!i.length)return-1;var n=i.filter((function(i,n){return e.isLevelAllowed(n,r.restrictedLevels)&&n<=t}));return this.clientRect=null,e.getMaxLevelByMediaSize(n,this.mediaWidth,this.mediaHeight)},a.startCapping=function(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.hls.firstLevel=this.getMaxLevel(this.firstLevel),self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},a.stopCapping=function(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)},a.getDimensions=function(){if(this.clientRect)return this.clientRect;var e=this.media,t={width:0,height:0};if(e){var r=e.getBoundingClientRect();t.width=r.width,t.height=r.height,t.width||t.height||(t.width=r.right-r.left||e.width||0,t.height=r.bottom-r.top||e.height||0)}return this.clientRect=t,t},e.isLevelAllowed=function(e,t){return void 0===t&&(t=[]),-1===t.indexOf(e)},e.getMaxLevelByMediaSize=function(e,t,r){if(!e||!e.length)return-1;for(var i,n,s=e.length-1,a=0;a<e.length;a+=1){var o=e[a];if((o.width>=t||o.height>=r)&&(i=o,!(n=e[a+1])||i.width!==n.width||i.height!==n.height)){s=a;break}}return s},t=e,s=[{key:"contentScaleFactor",get:function(){var e=1;try{e=self.devicePixelRatio}catch(e){}return e}}],(r=[{key:"mediaWidth",get:function(){return this.getDimensions().width*e.contentScaleFactor}},{key:"mediaHeight",get:function(){return this.getDimensions().height*e.contentScaleFactor}}])&&n(t.prototype,r),s&&n(t,s),e}();t.default=s},"./src/controller/fps-controller.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/events.ts"),n=r("./src/utils/logger.ts"),s=function(){function e(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}var t=e.prototype;return t.setStreamController=function(e){this.streamController=e},t.registerListeners=function(){this.hls.on(i.Events.MEDIA_ATTACHING,this.onMediaAttaching,this)},t.unregisterListeners=function(){this.hls.off(i.Events.MEDIA_ATTACHING,this.onMediaAttaching)},t.destroy=function(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null},t.onMediaAttaching=function(e,t){var r=this.hls.config;if(r.capLevelOnFPSDrop){var i=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=i,i&&"function"==typeof i.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),r.fpsDroppedMonitoringPeriod)}},t.checkFPS=function(e,t,r){var s=performance.now();if(t){if(this.lastTime){var a=s-this.lastTime,o=r-this.lastDroppedFrames,l=t-this.lastDecodedFrames,h=1e3*o/a,u=this.hls;if(u.trigger(i.Events.FPS_DROP,{currentDropped:o,currentDecoded:l,totalDroppedFrames:r}),h>0&&o>u.config.fpsDroppedMonitoringThreshold*l){var d=u.currentLevel;n.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+d),d>0&&(-1===u.autoLevelCapping||u.autoLevelCapping>=d)&&(d-=1,u.trigger(i.Events.FPS_DROP_LEVEL_CAPPING,{level:d,droppedLevel:u.currentLevel}),u.autoLevelCapping=d,this.streamController.nextLevelSwitch())}}this.lastTime=s,this.lastDroppedFrames=r,this.lastDecodedFrames=t}},t.checkFPSInterval=function(){var e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){var t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)},e}();t.default=s},"./src/controller/fragment-finders.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"findFragmentByPDT",(function(){return s})),r.d(t,"findFragmentByPTS",(function(){return a})),r.d(t,"fragmentWithinToleranceTest",(function(){return o})),r.d(t,"pdtWithinToleranceTest",(function(){return l})),r.d(t,"findFragWithCC",(function(){return h}));var i=r("./src/polyfills/number.ts"),n=r("./src/utils/binary-search.ts");function s(e,t,r){if(null===t||!Array.isArray(e)||!e.length||!Object(i.isFiniteNumber)(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;r=r||0;for(var n=0;n<e.length;++n){var s=e[n];if(l(t,r,s))return s}return null}function a(e,t,r,i){void 0===r&&(r=0),void 0===i&&(i=0);var s=null;if(e?s=t[e.sn-t[0].sn+1]||null:0===r&&0===t[0].start&&(s=t[0]),s&&0===o(r,i,s))return s;var a=n.default.search(t,o.bind(null,r,i));return a||s}function o(e,t,r){void 0===e&&(e=0),void 0===t&&(t=0);var i=Math.min(t,r.duration+(r.deltaPTS?r.deltaPTS:0));return r.start+r.duration-i<=e?1:r.start-i>e&&r.start?-1:0}function l(e,t,r){var i=1e3*Math.min(t,r.duration+(r.deltaPTS?r.deltaPTS:0));return(r.endProgramDateTime||0)-i>e}function h(e,t){return n.default.search(e,(function(e){return e.cc<t?1:e.cc>t?-1:0}))}},"./src/controller/fragment-tracker.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"FragmentState",(function(){return i})),r.d(t,"FragmentTracker",(function(){return a}));var i,n=r("./src/events.ts"),s=r("./src/types/loader.ts");!function(e){e.NOT_LOADED="NOT_LOADED",e.BACKTRACKED="BACKTRACKED",e.APPENDING="APPENDING",e.PARTIAL="PARTIAL",e.OK="OK"}(i||(i={}));var a=function(){function e(e){this.activeFragment=null,this.activeParts=null,this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hls=e,this._registerListeners()}var t=e.prototype;return t._registerListeners=function(){var e=this.hls;e.on(n.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.on(n.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this)},t._unregisterListeners=function(){var e=this.hls;e.off(n.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.off(n.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this)},t.destroy=function(){this._unregisterListeners(),this.fragments=this.timeRanges=null},t.getAppendedFrag=function(e,t){if(t===s.PlaylistLevelType.MAIN){var r=this.activeFragment,i=this.activeParts;if(!r)return null;if(i)for(var n=i.length;n--;){var a=i[n],o=a?a.end:r.appendedPTS;if(a.start<=e&&void 0!==o&&e<=o)return n>9&&(this.activeParts=i.slice(n-9)),a}else if(r.start<=e&&void 0!==r.appendedPTS&&e<=r.appendedPTS)return r}return this.getBufferedFrag(e,t)},t.getBufferedFrag=function(e,t){for(var r=this.fragments,i=Object.keys(r),n=i.length;n--;){var s=r[i[n]];if((null==s?void 0:s.body.type)===t&&s.buffered){var a=s.body;if(a.start<=e&&e<=a.end)return a}}return null},t.detectEvictedFragments=function(e,t,r){var i=this;Object.keys(this.fragments).forEach((function(n){var s=i.fragments[n];if(s)if(s.buffered){var a=s.range[e];a&&a.time.some((function(e){var r=!i.isTimeBuffered(e.startPTS,e.endPTS,t);return r&&i.removeFragment(s.body),r}))}else s.body.type===r&&i.removeFragment(s.body)}))},t.detectPartialFragments=function(e){var t=this,r=this.timeRanges,i=e.frag,n=e.part;if(r&&"initSegment"!==i.sn){var s=l(i),a=this.fragments[s];a&&(Object.keys(r).forEach((function(e){var s=i.elementaryStreams[e];if(s){var o=r[e],l=null!==n||!0===s.partial;a.range[e]=t.getBufferedTimes(i,n,l,o)}})),a.backtrack=a.loaded=null,Object.keys(a.range).length?a.buffered=!0:this.removeFragment(a.body))}},t.fragBuffered=function(e){var t=l(e),r=this.fragments[t];r&&(r.backtrack=r.loaded=null,r.buffered=!0)},t.getBufferedTimes=function(e,t,r,i){for(var n={time:[],partial:r},s=t?t.start:e.start,a=t?t.end:e.end,o=e.minEndPTS||a,l=e.maxStartPTS||s,h=0;h<i.length;h++){var u=i.start(h)-this.bufferPadding,d=i.end(h)+this.bufferPadding;if(l>=u&&o<=d){n.time.push({startPTS:Math.max(s,i.start(h)),endPTS:Math.min(a,i.end(h))});break}if(s<d&&a>u)n.partial=!0,n.time.push({startPTS:Math.max(s,i.start(h)),endPTS:Math.min(a,i.end(h))});else if(a<=u)break}return n},t.getPartialFragment=function(e){var t,r,i,n=null,s=0,a=this.bufferPadding,l=this.fragments;return Object.keys(l).forEach((function(h){var u=l[h];u&&o(u)&&(r=u.body.start-a,i=u.body.end+a,e>=r&&e<=i&&(t=Math.min(e-r,i-e),s<=t&&(n=u.body,s=t)))})),n},t.getState=function(e){var t=l(e),r=this.fragments[t];return r?r.buffered?o(r)?i.PARTIAL:i.OK:r.backtrack?i.BACKTRACKED:i.APPENDING:i.NOT_LOADED},t.backtrack=function(e,t){var r=l(e),i=this.fragments[r];if(!i||i.backtrack)return null;var n=i.backtrack=t||i.loaded;return i.loaded=null,n},t.getBacktrackData=function(e){var t=l(e),r=this.fragments[t];if(r){var i,n=r.backtrack;if(null!=n&&null!==(i=n.payload)&&void 0!==i&&i.byteLength)return n;this.removeFragment(e)}return null},t.isTimeBuffered=function(e,t,r){for(var i,n,s=0;s<r.length;s++){if(i=r.start(s)-this.bufferPadding,n=r.end(s)+this.bufferPadding,e>=i&&t<=n)return!0;if(t<=i)return!1}return!1},t.onFragLoaded=function(e,t){var r=t.frag,i=t.part;if("initSegment"!==r.sn&&!r.bitrateTest&&!i){var n=l(r);this.fragments[n]={body:r,loaded:t,backtrack:null,buffered:!1,range:Object.create(null)}}},t.onBufferAppended=function(e,t){var r=this,i=t.frag,n=t.part,a=t.timeRanges;if(i.type===s.PlaylistLevelType.MAIN)if(this.activeFragment=i,n){var o=this.activeParts;o||(this.activeParts=o=[]),o.push(n)}else this.activeParts=null;this.timeRanges=a,Object.keys(a).forEach((function(e){var t=a[e];if(r.detectEvictedFragments(e,t),!n)for(var s=0;s<t.length;s++)i.appendedPTS=Math.max(t.end(s),i.appendedPTS||0)}))},t.onFragBuffered=function(e,t){this.detectPartialFragments(t)},t.hasFragment=function(e){var t=l(e);return!!this.fragments[t]},t.removeFragmentsInRange=function(e,t,r){var i=this;Object.keys(this.fragments).forEach((function(n){var s=i.fragments[n];if(s&&s.buffered){var a=s.body;a.type===r&&a.start<t&&a.end>e&&i.removeFragment(a)}}))},t.removeFragment=function(e){var t=l(e);e.stats.loaded=0,e.clearElementaryStreamInfo(),delete this.fragments[t]},t.removeAllFragments=function(){this.fragments=Object.create(null),this.activeFragment=null,this.activeParts=null},e}();function o(e){var t,r;return e.buffered&&((null===(t=e.range.video)||void 0===t?void 0:t.partial)||(null===(r=e.range.audio)||void 0===r?void 0:r.partial))}function l(e){return e.type+"_"+e.level+"_"+e.urlId+"_"+e.sn}},"./src/controller/gap-controller.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"STALL_MINIMUM_DURATION_MS",(function(){return o})),r.d(t,"MAX_START_GAP_JUMP",(function(){return l})),r.d(t,"SKIP_BUFFER_HOLE_STEP_SECONDS",(function(){return h})),r.d(t,"SKIP_BUFFER_RANGE_START",(function(){return u})),r.d(t,"default",(function(){return d}));var i=r("./src/utils/buffer-helper.ts"),n=r("./src/errors.ts"),s=r("./src/events.ts"),a=r("./src/utils/logger.ts"),o=250,l=2,h=.1,u=.05,d=function(){function e(e,t,r,i){this.config=void 0,this.media=void 0,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=r,this.hls=i}var t=e.prototype;return t.destroy=function(){this.hls=this.fragmentTracker=this.media=null},t.poll=function(e){var t=this.config,r=this.media,n=this.stalled,s=r.currentTime,h=r.seeking,u=this.seeking&&!h,d=!this.seeking&&h;if(this.seeking=h,s===e){if((d||u)&&(this.stalled=null),!r.paused&&!r.ended&&0!==r.playbackRate&&i.BufferHelper.getBuffered(r).length){var c=i.BufferHelper.bufferInfo(r,s,0),f=c.len>0,g=c.nextStart||0;if(f||g){if(h){var p=c.len>l,m=!g||g-s>l&&!this.fragmentTracker.getPartialFragment(s);if(p||m)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var v,y=Math.max(g,c.start||0)-s,E=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,S=(null==E||null===(v=E.details)||void 0===v?void 0:v.live)?2*E.details.targetduration:l;if(y>0&&y<=S)return void this._trySkipBufferHole(null)}var b=self.performance.now();if(null!==n){var _=b-n;!h&&_>=o&&this._reportStall(c.len);var T=i.BufferHelper.bufferInfo(r,s,t.maxBufferHole);this._tryFixBufferStall(T,_)}else this.stalled=b}}}else if(this.moved=!0,null!==n){if(this.stallReported){var L=self.performance.now()-n;a.logger.warn("playback not stuck anymore @"+s+", after "+Math.round(L)+"ms"),this.stallReported=!1}this.stalled=null,this.nudgeRetry=0}},t._tryFixBufferStall=function(e,t){var r=this.config,i=this.fragmentTracker,n=this.media.currentTime,s=i.getPartialFragment(n);s&&this._trySkipBufferHole(s)||e.len>r.maxBufferHole&&t>1e3*r.highBufferWatchdogPeriod&&(a.logger.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())},t._reportStall=function(e){var t=this.hls,r=this.media;this.stallReported||(this.stallReported=!0,a.logger.warn("Playback stalling at @"+r.currentTime+" due to low buffer (buffer="+e+")"),t.trigger(s.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1,buffer:e}))},t._trySkipBufferHole=function(e){for(var t=this.config,r=this.hls,o=this.media,l=o.currentTime,d=0,c=i.BufferHelper.getBuffered(o),f=0;f<c.length;f++){var g=c.start(f);if(l+t.maxBufferHole>=d&&l<g){var p=Math.max(g+u,o.currentTime+h);return a.logger.warn("skipping hole, adjusting currentTime from "+l+" to "+p),this.moved=!0,this.stalled=null,o.currentTime=p,e&&r.trigger(s.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,reason:"fragment loaded with buffer holes, seeking from "+l+" to "+p,frag:e}),p}d=c.end(f)}return 0},t._tryNudgeBuffer=function(){var e=this.config,t=this.hls,r=this.media,i=r.currentTime,o=(this.nudgeRetry||0)+1;if(this.nudgeRetry=o,o<e.nudgeMaxRetry){var l=i+o*e.nudgeOffset;a.logger.warn("Nudging 'currentTime' from "+i+" to "+l),r.currentTime=l,t.trigger(s.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_NUDGE_ON_STALL,fatal:!1})}else a.logger.error("Playhead still not moving while enough data buffered @"+i+" after "+e.nudgeMaxRetry+" nudges"),t.trigger(s.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!0})},e}()},"./src/controller/id3-track-controller.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/events.ts"),n=r("./src/utils/texttrack-utils.ts"),s=r("./src/demux/id3.ts"),a=function(){function e(e){this.hls=void 0,this.id3Track=null,this.media=null,this.hls=e,this._registerListeners()}var t=e.prototype;return t.destroy=function(){this._unregisterListeners()},t._registerListeners=function(){var e=this.hls;e.on(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(i.Events.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(i.Events.BUFFER_FLUSHING,this.onBufferFlushing,this)},t._unregisterListeners=function(){var e=this.hls;e.off(i.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(i.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(i.Events.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(i.Events.BUFFER_FLUSHING,this.onBufferFlushing,this)},t.onMediaAttached=function(e,t){this.media=t.media},t.onMediaDetaching=function(){this.id3Track&&(Object(n.clearCurrentCues)(this.id3Track),this.id3Track=null,this.media=null)},t.getID3Track=function(e){if(this.media){for(var t=0;t<e.length;t++){var r=e[t];if("metadata"===r.kind&&"id3"===r.label)return Object(n.sendAddTrackEvent)(r,this.media),r}return this.media.addTextTrack("metadata","id3")}},t.onFragParsingMetadata=function(e,t){if(this.media){var r=t.frag,i=t.samples;this.id3Track||(this.id3Track=this.getID3Track(this.media.textTracks),this.id3Track.mode="hidden");for(var n=self.WebKitDataCue||self.VTTCue||self.TextTrackCue,a=0;a<i.length;a++){var o=s.getID3Frames(i[a].data);if(o){var l=i[a].pts,h=a<i.length-1?i[a+1].pts:r.end;h-l<=0&&(h=l+.25);for(var u=0;u<o.length;u++){var d=o[u];if(!s.isTimeStampFrame(d)){var c=new n(l,h,"");c.value=d,this.id3Track.addCue(c)}}}}}},t.onBufferFlushing=function(e,t){var r=t.startOffset,i=t.endOffset,s=t.type;if(!s||"audio"===s){var a=this.id3Track;a&&Object(n.removeCuesInRange)(a,r,i)}},e}();t.default=a},"./src/controller/latency-controller.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return o}));var i=r("./src/errors.ts"),n=r("./src/events.ts"),s=r("./src/utils/logger.ts");function a(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=function(){function e(e){var t=this;this.hls=void 0,this.config=void 0,this.media=null,this.levelDetails=null,this.currentTime=0,this.stallCount=0,this._latency=null,this.timeupdateHandler=function(){return t.timeupdate()},this.hls=e,this.config=e.config,this.registerListeners()}var t,r,o,l=e.prototype;return l.destroy=function(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null},l.registerListeners=function(){this.hls.on(n.Events.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(n.Events.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(n.Events.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(n.Events.ERROR,this.onError,this)},l.unregisterListeners=function(){this.hls.off(n.Events.MEDIA_ATTACHED,this.onMediaAttached),this.hls.off(n.Events.MEDIA_DETACHING,this.onMediaDetaching),this.hls.off(n.Events.MANIFEST_LOADING,this.onManifestLoading),this.hls.off(n.Events.LEVEL_UPDATED,this.onLevelUpdated),this.hls.off(n.Events.ERROR,this.onError)},l.onMediaAttached=function(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)},l.onMediaDetaching=function(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)},l.onManifestLoading=function(){this.levelDetails=null,this._latency=null,this.stallCount=0},l.onLevelUpdated=function(e,t){var r=t.details;this.levelDetails=r,r.advanced&&this.timeupdate(),!r.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)},l.onError=function(e,t){t.details===i.ErrorDetails.BUFFER_STALLED_ERROR&&(this.stallCount++,s.logger.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))},l.timeupdate=function(){var e=this.media,t=this.levelDetails;if(e&&t){this.currentTime=e.currentTime;var r=this.computeLatency();if(null!==r){this._latency=r;var i=this.config,n=i.lowLatencyMode,s=i.maxLiveSyncPlaybackRate;if(n&&1!==s){var a=this.targetLatency;if(null!==a){var o=r-a,l=o<Math.min(this.maxLatency,a+t.targetduration);if(t.live&&l&&o>.05&&this.forwardBufferLength>1){var h=Math.min(2,Math.max(1,s)),u=Math.round(2/(1+Math.exp(-.75*o-this.edgeStalled))*20)/20;e.playbackRate=Math.min(h,Math.max(1,u))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}}}}},l.estimateLiveEdge=function(){var e=this.levelDetails;return null===e?null:e.edge+e.age},l.computeLatency=function(){var e=this.estimateLiveEdge();return null===e?null:e-this.currentTime},t=e,(r=[{key:"latency",get:function(){return this._latency||0}},{key:"maxLatency",get:function(){var e=this.config,t=this.levelDetails;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}},{key:"targetLatency",get:function(){var e=this.levelDetails;if(null===e)return null;var t=e.holdBack,r=e.partHoldBack,i=e.targetduration,n=this.config,s=n.liveSyncDuration,a=n.liveSyncDurationCount,o=n.lowLatencyMode,l=this.hls.userConfig,h=o&&r||t;(l.liveSyncDuration||l.liveSyncDurationCount||0===h)&&(h=void 0!==s?s:a*i);var u=i;return h+Math.min(1*this.stallCount,u)}},{key:"liveSyncPosition",get:function(){var e=this.estimateLiveEdge(),t=this.targetLatency,r=this.levelDetails;if(null===e||null===t||null===r)return null;var i=r.edge,n=e-t-this.edgeStalled,s=i-r.totalduration,a=i-(this.config.lowLatencyMode&&r.partTarget||r.targetduration);return Math.min(Math.max(s,n),a)}},{key:"drift",get:function(){var e=this.levelDetails;return null===e?1:e.drift}},{key:"edgeStalled",get:function(){var e=this.levelDetails;if(null===e)return 0;var t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}},{key:"forwardBufferLength",get:function(){var e=this.media,t=this.levelDetails;if(!e||!t)return 0;var r=e.buffered.length;return r?e.buffered.end(r-1):t.edge-this.currentTime}}])&&a(t.prototype,r),o&&a(t,o),e}()},"./src/controller/level-controller.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return g}));var i=r("./src/types/level.ts"),n=r("./src/events.ts"),s=r("./src/errors.ts"),a=r("./src/utils/codecs.ts"),o=r("./src/controller/level-helper.ts"),l=r("./src/controller/base-playlist-controller.ts"),h=r("./src/types/loader.ts");function u(){return u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},u.apply(this,arguments)}function d(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function c(e,t){return c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},c(e,t)}var f=/chrome|firefox/.test(navigator.userAgent.toLowerCase()),g=function(e){var t,r;function l(t){var r;return(r=e.call(this,t,"[level-controller]")||this)._levels=[],r._firstLevel=-1,r._startLevel=void 0,r.currentLevelIndex=-1,r.manualLevelIndex=-1,r.onParsedComplete=void 0,r._registerListeners(),r}r=e,(t=l).prototype=Object.create(r.prototype),t.prototype.constructor=t,c(t,r);var g,p,m,v=l.prototype;return v._registerListeners=function(){var e=this.hls;e.on(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(n.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(n.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(n.Events.ERROR,this.onError,this)},v._unregisterListeners=function(){var e=this.hls;e.off(n.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(n.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(n.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(n.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(n.Events.ERROR,this.onError,this)},v.destroy=function(){this._unregisterListeners(),this.manualLevelIndex=-1,this._levels.length=0,e.prototype.destroy.call(this)},v.startLoad=function(){this._levels.forEach((function(e){e.loadError=0})),e.prototype.startLoad.call(this)},v.onManifestLoaded=function(e,t){var r,l,h=[],u=[],d=[],c={},g=!1,p=!1,m=!1;if(t.levels.forEach((function(e){var t=e.attrs;g=g||!(!e.width||!e.height),p=p||!!e.videoCodec,m=m||!!e.audioCodec,f&&e.audioCodec&&-1!==e.audioCodec.indexOf("mp4a.40.34")&&(e.audioCodec=void 0);var r=e.bitrate+"-"+e.attrs.RESOLUTION+"-"+e.attrs.CODECS;(l=c[r])?l.url.push(e.url):(l=new i.Level(e),c[r]=l,h.push(l)),t&&(t.AUDIO&&Object(o.addGroupId)(l,"audio",t.AUDIO),t.SUBTITLES&&Object(o.addGroupId)(l,"text",t.SUBTITLES))})),(g||p)&&m&&(h=h.filter((function(e){var t=e.videoCodec,r=e.width,i=e.height;return!!t||!(!r||!i)}))),h=h.filter((function(e){var t=e.audioCodec,r=e.videoCodec;return(!t||Object(a.isCodecSupportedInMp4)(t,"audio"))&&(!r||Object(a.isCodecSupportedInMp4)(r,"video"))})),t.audioTracks&&(u=t.audioTracks.filter((function(e){return!e.audioCodec||Object(a.isCodecSupportedInMp4)(e.audioCodec,"audio")})),Object(o.assignTrackIdsByGroup)(u)),t.subtitles&&(d=t.subtitles,Object(o.assignTrackIdsByGroup)(d)),h.length>0){r=h[0].bitrate,h.sort((function(e,t){return e.bitrate-t.bitrate})),this._levels=h;for(var v=0;v<h.length;v++)if(h[v].bitrate===r){this._firstLevel=v,this.log("manifest loaded, "+h.length+" level(s) found, first bitrate: "+r);break}var y=m&&!p,E={levels:h,audioTracks:u,subtitleTracks:d,firstLevel:this._firstLevel,stats:t.stats,audio:m,video:p,altAudio:!y&&u.some((function(e){return!!e.url}))};this.hls.trigger(n.Events.MANIFEST_PARSED,E),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}else this.hls.trigger(n.Events.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,reason:"no level with compatible codecs found in manifest"})},v.onError=function(t,r){if(e.prototype.onError.call(this,t,r),!r.fatal){var i=r.context,n=this._levels[this.currentLevelIndex];if(i&&(i.type===h.PlaylistContextType.AUDIO_TRACK&&n.audioGroupIds&&i.groupId===n.audioGroupIds[n.urlId]||i.type===h.PlaylistContextType.SUBTITLE_TRACK&&n.textGroupIds&&i.groupId===n.textGroupIds[n.urlId]))this.redundantFailover(this.currentLevelIndex);else{var a,o=!1,l=!0;switch(r.details){case s.ErrorDetails.FRAG_LOAD_ERROR:case s.ErrorDetails.FRAG_LOAD_TIMEOUT:case s.ErrorDetails.KEY_LOAD_ERROR:case s.ErrorDetails.KEY_LOAD_TIMEOUT:if(r.frag){var u=this._levels[r.frag.level];u?(u.fragmentError++,u.fragmentError>this.hls.config.fragLoadingMaxRetry&&(a=r.frag.level)):a=r.frag.level}break;case s.ErrorDetails.LEVEL_LOAD_ERROR:case s.ErrorDetails.LEVEL_LOAD_TIMEOUT:i&&(i.deliveryDirectives&&(l=!1),a=i.level),o=!0;break;case s.ErrorDetails.REMUX_ALLOC_ERROR:a=r.level,o=!0}void 0!==a&&this.recoverLevel(r,a,o,l)}}},v.recoverLevel=function(e,t,r,i){var n=e.details,s=this._levels[t];if(s.loadError++,r){if(!this.retryLoadingOrFail(e))return void(this.currentLevelIndex=-1);e.levelRetry=!0}if(i){var a=s.url.length;if(a>1&&s.loadError<a)e.levelRetry=!0,this.redundantFailover(t);else if(-1===this.manualLevelIndex){var o=0===t?this._levels.length-1:t-1;this.currentLevelIndex!==o&&0===this._levels[o].loadError&&(this.warn(n+": switch to "+o),e.levelRetry=!0,this.hls.nextAutoLevel=o)}}},v.redundantFailover=function(e){var t=this._levels[e],r=t.url.length;if(r>1){var i=(t.urlId+1)%r;this.warn("Switching to redundant URL-id "+i),this._levels.forEach((function(e){e.urlId=i})),this.level=e}},v.onFragLoaded=function(e,t){var r=t.frag;if(void 0!==r&&r.type===h.PlaylistLevelType.MAIN){var i=this._levels[r.level];void 0!==i&&(i.fragmentError=0,i.loadError=0)}},v.onLevelLoaded=function(e,t){var r,i,n=t.level,s=t.details,a=this._levels[n];if(!a)return this.warn("Invalid level index "+n),void(null!==(i=t.deliveryDirectives)&&void 0!==i&&i.skip&&(s.deltaUpdateFailed=!0));n===this.currentLevelIndex?(0===a.fragmentError&&(a.loadError=0,this.retryCount=0),this.playlistLoaded(n,t,a.details)):null!==(r=t.deliveryDirectives)&&void 0!==r&&r.skip&&(s.deltaUpdateFailed=!0)},v.onAudioTrackSwitched=function(e,t){var r=this.hls.levels[this.currentLevelIndex];if(r&&r.audioGroupIds){for(var i=-1,n=this.hls.audioTracks[t.id].groupId,s=0;s<r.audioGroupIds.length;s++)if(r.audioGroupIds[s]===n){i=s;break}i!==r.urlId&&(r.urlId=i,this.startLoad())}},v.loadPlaylist=function(e){var t=this.currentLevelIndex,r=this._levels[t];if(this.canLoad&&r&&r.url.length>0){var i=r.urlId,s=r.url[i];if(e)try{s=e.addDirectives(s)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Attempt loading level index "+t+(e?" at sn "+e.msn+" part "+e.part:"")+" with URL-id "+i+" "+s),this.clearTimer(),this.hls.trigger(n.Events.LEVEL_LOADING,{url:s,level:t,id:i,deliveryDirectives:e||null})}},v.removeLevel=function(e,t){var r=function(e,r){return r!==t},i=this._levels.filter((function(i,n){return n!==e||i.url.length>1&&void 0!==t&&(i.url=i.url.filter(r),i.audioGroupIds&&(i.audioGroupIds=i.audioGroupIds.filter(r)),i.textGroupIds&&(i.textGroupIds=i.textGroupIds.filter(r)),i.urlId=0,!0)})).map((function(e,t){var r=e.details;return null!=r&&r.fragments&&r.fragments.forEach((function(e){e.level=t})),e}));this._levels=i,this.hls.trigger(n.Events.LEVELS_UPDATED,{levels:i})},g=l,(p=[{key:"levels",get:function(){return 0===this._levels.length?null:this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(e){var t,r=this._levels;if(0!==r.length&&(this.currentLevelIndex!==e||null===(t=r[e])||void 0===t||!t.details)){if(e<0||e>=r.length){var i=e<0;if(this.hls.trigger(n.Events.ERROR,{type:s.ErrorTypes.OTHER_ERROR,details:s.ErrorDetails.LEVEL_SWITCH_ERROR,level:e,fatal:i,reason:"invalid level idx"}),i)return;e=Math.min(e,r.length-1)}this.clearTimer();var a=this.currentLevelIndex,o=r[a],l=r[e];this.log("switching to level "+e+" from "+a),this.currentLevelIndex=e;var h=u({},l,{level:e,maxBitrate:l.maxBitrate,uri:l.uri,urlId:l.urlId});delete h._urlId,this.hls.trigger(n.Events.LEVEL_SWITCHING,h);var d=l.details;if(!d||d.live){var c=this.switchParams(l.uri,null==o?void 0:o.details);this.loadPlaylist(c)}}}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var e=this.hls.config.startLevel;return void 0!==e?e:this._firstLevel}return this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}}])&&d(g.prototype,p),m&&d(g,m),l}(l.default)},"./src/controller/level-helper.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"addGroupId",(function(){return s})),r.d(t,"assignTrackIdsByGroup",(function(){return a})),r.d(t,"updatePTS",(function(){return o})),r.d(t,"updateFragPTSDTS",(function(){return h})),r.d(t,"mergeDetails",(function(){return u})),r.d(t,"mapPartIntersection",(function(){return d})),r.d(t,"mapFragmentIntersection",(function(){return c})),r.d(t,"adjustSliding",(function(){return f})),r.d(t,"addSliding",(function(){return g})),r.d(t,"computeReloadInterval",(function(){return p})),r.d(t,"getFragmentWithSN",(function(){return m})),r.d(t,"getPartWith",(function(){return v}));var i=r("./src/polyfills/number.ts"),n=r("./src/utils/logger.ts");function s(e,t,r){switch(t){case"audio":e.audioGroupIds||(e.audioGroupIds=[]),e.audioGroupIds.push(r);break;case"text":e.textGroupIds||(e.textGroupIds=[]),e.textGroupIds.push(r)}}function a(e){var t={};e.forEach((function(e){var r=e.groupId||"";e.id=t[r]=t[r]||0,t[r]++}))}function o(e,t,r){l(e[t],e[r])}function l(e,t){var r=t.startPTS;if(Object(i.isFiniteNumber)(r)){var n,s=0;t.sn>e.sn?(s=r-e.start,n=e):(s=e.start-r,n=t),n.duration!==s&&(n.duration=s)}else t.sn>e.sn?e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration:t.start=Math.max(e.start-t.duration,0)}function h(e,t,r,s,a,o){s-r<=0&&(n.logger.warn("Fragment should have a positive duration",t),s=r+t.duration,o=a+t.duration);var h=r,u=s,d=t.startPTS,c=t.endPTS;if(Object(i.isFiniteNumber)(d)){var f=Math.abs(d-r);Object(i.isFiniteNumber)(t.deltaPTS)?t.deltaPTS=Math.max(f,t.deltaPTS):t.deltaPTS=f,h=Math.max(r,d),r=Math.min(r,d),a=Math.min(a,t.startDTS),u=Math.min(s,c),s=Math.max(s,c),o=Math.max(o,t.endDTS)}t.duration=s-r;var g=r-t.start;t.appendedPTS=s,t.start=t.startPTS=r,t.maxStartPTS=h,t.startDTS=a,t.endPTS=s,t.minEndPTS=u,t.endDTS=o;var p,m=t.sn;if(!e||m<e.startSN||m>e.endSN)return 0;var v=m-e.startSN,y=e.fragments;for(y[v]=t,p=v;p>0;p--)l(y[p],y[p-1]);for(p=v;p<y.length-1;p++)l(y[p],y[p+1]);return e.fragmentHint&&l(y[y.length-1],e.fragmentHint),e.PTSKnown=e.alignedSliding=!0,g}function u(e,t){for(var r=null,s=e.fragments,a=s.length-1;a>=0;a--){var o=s[a].initSegment;if(o){r=o;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;var l,u=0;if(c(e,t,(function(e,n){e.relurl&&(u=e.cc-n.cc),Object(i.isFiniteNumber)(e.startPTS)&&Object(i.isFiniteNumber)(e.endPTS)&&(n.start=n.startPTS=e.startPTS,n.startDTS=e.startDTS,n.appendedPTS=e.appendedPTS,n.maxStartPTS=e.maxStartPTS,n.endPTS=e.endPTS,n.endDTS=e.endDTS,n.minEndPTS=e.minEndPTS,n.duration=e.endPTS-e.startPTS,n.duration&&(l=n),t.PTSKnown=t.alignedSliding=!0),n.elementaryStreams=e.elementaryStreams,n.loader=e.loader,n.stats=e.stats,n.urlId=e.urlId,e.initSegment&&(n.initSegment=e.initSegment,r=e.initSegment)})),r&&(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((function(e){var t;e.initSegment&&e.initSegment.relurl!==(null===(t=r)||void 0===t?void 0:t.relurl)||(e.initSegment=r)})),t.skippedSegments&&(t.deltaUpdateFailed=t.fragments.some((function(e){return!e})),t.deltaUpdateFailed)){n.logger.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(var g=t.skippedSegments;g--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}var p=t.fragments;if(u){n.logger.warn("discontinuity sliding from playlist, take drift into account");for(var m=0;m<p.length;m++)p[m].cc+=u}t.skippedSegments&&(t.startCC=t.fragments[0].cc),d(e.partList,t.partList,(function(e,t){t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),l?h(t,l,l.startPTS,l.endPTS,l.startDTS,l.endDTS):f(e,t),p.length&&(t.totalduration=t.edge-p[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;var v=t.advancedDateTime;if(t.advanced&&v){var y=t.edge;t.driftStart||(t.driftStartTime=v,t.driftStart=y),t.driftEndTime=v,t.driftEnd=y}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function d(e,t,r){if(e&&t)for(var i=0,n=0,s=e.length;n<=s;n++){var a=e[n],o=t[n+i];a&&o&&a.index===o.index&&a.fragment.sn===o.fragment.sn?r(a,o):i--}}function c(e,t,r){for(var i=t.skippedSegments,n=Math.max(e.startSN,t.startSN)-t.startSN,s=(e.fragmentHint?1:0)+(i?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,o=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,h=n;h<=s;h++){var u=l[a+h],d=o[h];i&&!d&&h<i&&(d=t.fragments[h]=u),u&&d&&r(u,d)}}function f(e,t){var r=t.startSN+t.skippedSegments-e.startSN,i=e.fragments;r<0||r>=i.length||g(t,i[r].start)}function g(e,t){if(t){for(var r=e.fragments,i=e.skippedSegments;i<r.length;i++)r[i].start+=t;e.fragmentHint&&(e.fragmentHint.start+=t)}}function p(e,t){var r,i=1e3*e.levelTargetDuration,n=i/2,s=e.age,a=s>0&&s<3*i,o=t.loading.end-t.loading.start,l=e.availabilityDelay;if(!1===e.updated)if(a){var h=333*e.misses;r=Math.max(Math.min(n,2*o),h),e.availabilityDelay=(e.availabilityDelay||0)+r}else r=n;else a?(l=Math.min(l||i/2,s),e.availabilityDelay=l,r=l+i-s):r=i-o;return Math.round(r)}function m(e,t,r){if(!e||!e.details)return null;var i=e.details,n=i.fragments[t-i.startSN];return n||((n=i.fragmentHint)&&n.sn===t?n:t<i.startSN&&r&&r.sn===t?r:null)}function v(e,t,r){if(!e||!e.details)return null;var i=e.details.partList;if(i)for(var n=i.length;n--;){var s=i[n];if(s.index===r&&s.fragment.sn===t)return s}return null}},"./src/controller/stream-controller.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return y}));var i=r("./src/polyfills/number.ts"),n=r("./src/controller/base-stream-controller.ts"),s=r("./src/is-supported.ts"),a=r("./src/events.ts"),o=r("./src/utils/buffer-helper.ts"),l=r("./src/controller/fragment-tracker.ts"),h=r("./src/types/loader.ts"),u=r("./src/loader/fragment.ts"),d=r("./src/demux/transmuxer-interface.ts"),c=r("./src/types/transmuxer.ts"),f=r("./src/controller/gap-controller.ts"),g=r("./src/errors.ts"),p=r("./src/utils/logger.ts");function m(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function v(e,t){return v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},v(e,t)}var y=function(e){var t,r;function y(t,r){var i;return(i=e.call(this,t,r,"[stream-controller]")||this).audioCodecSwap=!1,i.gapController=null,i.level=-1,i._forceStartLoad=!1,i.altAudio=!1,i.audioOnly=!1,i.fragPlaying=null,i.onvplaying=null,i.onvseeked=null,i.fragLastKbps=0,i.stalled=!1,i.couldBacktrack=!1,i.audioCodecSwitch=!1,i.videoBuffer=null,i._registerListeners(),i}r=e,(t=y).prototype=Object.create(r.prototype),t.prototype.constructor=t,v(t,r);var E,S,b,_=y.prototype;return _._registerListeners=function(){var e=this.hls;e.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(a.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(a.Events.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.on(a.Events.ERROR,this.onError,this),e.on(a.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(a.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(a.Events.BUFFER_CREATED,this.onBufferCreated,this),e.on(a.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(a.Events.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(a.Events.FRAG_BUFFERED,this.onFragBuffered,this)},_._unregisterListeners=function(){var e=this.hls;e.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(a.Events.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.off(a.Events.ERROR,this.onError,this),e.off(a.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(a.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(a.Events.BUFFER_CREATED,this.onBufferCreated,this),e.off(a.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(a.Events.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(a.Events.FRAG_BUFFERED,this.onFragBuffered,this)},_.onHandlerDestroying=function(){this._unregisterListeners(),this.onMediaDetaching()},_.startLoad=function(e){if(this.levels){var t=this.lastCurrentTime,r=this.hls;if(this.stopLoad(),this.setInterval(100),this.level=-1,this.fragLoadError=0,!this.startFragRequested){var i=r.startLevel;-1===i&&(r.config.testBandwidth?(i=0,this.bitrateTest=!0):i=r.nextAutoLevel),this.level=r.nextLoadLevel=i,this.loadedmetadata=!1}t>0&&-1===e&&(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t),this.state=n.State.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=n.State.STOPPED},_.stopLoad=function(){this._forceStartLoad=!1,e.prototype.stopLoad.call(this)},_.doTick=function(){switch(this.state){case n.State.IDLE:this.doTickIdle();break;case n.State.WAITING_LEVEL:var e,t=this.levels,r=this.level,i=null==t||null===(e=t[r])||void 0===e?void 0:e.details;if(i&&(!i.live||this.levelLastLoaded===this.level)){if(this.waitForCdnTuneIn(i))break;this.state=n.State.IDLE;break}break;case n.State.FRAG_LOADING_WAITING_RETRY:var s,a=self.performance.now(),o=this.retryDate;(!o||a>=o||null!==(s=this.media)&&void 0!==s&&s.seeking)&&(this.log("retryDate reached, switch back to IDLE state"),this.state=n.State.IDLE)}this.onTickEnd()},_.onTickEnd=function(){e.prototype.onTickEnd.call(this),this.checkBuffer(),this.checkFragmentChanged()},_.doTickIdle=function(){var e,t,r=this.hls,i=this.levelLastLoaded,s=this.levels,o=this.media,d=r.config,c=r.nextLoadLevel;if(null!==i&&(o||!this.startFragRequested&&d.startFragPrefetch)&&(!this.altAudio||!this.audioOnly)&&s&&s[c]){var f=s[c];this.level=r.nextLoadLevel=c;var g=f.details;if(!g||this.state===n.State.WAITING_LEVEL||g.live&&this.levelLastLoaded!==c)this.state=n.State.WAITING_LEVEL;else{var p=this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:o,h.PlaylistLevelType.MAIN);if(null!==p&&!(p.len>=this.getMaxBufferLength(f.maxBitrate))){if(this._streamEnded(p,g)){var m={};return this.altAudio&&(m.type="video"),this.hls.trigger(a.Events.BUFFER_EOS,m),void(this.state=n.State.ENDED)}var v=p.end,y=this.getNextFragment(v,g);if(this.couldBacktrack&&!this.fragPrevious&&y&&"initSegment"!==y.sn){var E=y.sn-g.startSN;E>1&&(y=g.fragments[E-1],this.fragmentTracker.removeFragment(y))}if(y&&this.fragmentTracker.getState(y)===l.FragmentState.OK&&this.nextLoadPosition>v){var S=this.audioOnly&&!this.altAudio?u.ElementaryStreamTypes.AUDIO:u.ElementaryStreamTypes.VIDEO;this.afterBufferFlushed(o,S,h.PlaylistLevelType.MAIN),y=this.getNextFragment(this.nextLoadPosition,g)}y&&(!y.initSegment||y.initSegment.data||this.bitrateTest||(y=y.initSegment),"identity"!==(null===(e=y.decryptdata)||void 0===e?void 0:e.keyFormat)||null!==(t=y.decryptdata)&&void 0!==t&&t.key?this.loadFragment(y,g,v):this.loadKey(y,g))}}}},_.loadFragment=function(t,r,i){var n,s=this.fragmentTracker.getState(t);if(this.fragCurrent=t,s===l.FragmentState.BACKTRACKED){var a=this.fragmentTracker.getBacktrackData(t);if(a)return this._handleFragmentLoadProgress(a),void this._handleFragmentLoadComplete(a);s=l.FragmentState.NOT_LOADED}s===l.FragmentState.NOT_LOADED||s===l.FragmentState.PARTIAL?"initSegment"===t.sn?this._loadInitSegment(t):this.bitrateTest?(t.bitrateTest=!0,this.log("Fragment "+t.sn+" of level "+t.level+" is being downloaded to test bitrate and will not be buffered"),this._loadBitrateTestFrag(t)):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,r,i)):s===l.FragmentState.APPENDING?this.reduceMaxBufferLength(t.duration)&&this.fragmentTracker.removeFragment(t):0===(null===(n=this.media)||void 0===n?void 0:n.buffered.length)&&this.fragmentTracker.removeAllFragments()},_.getAppendedFrag=function(e){var t=this.fragmentTracker.getAppendedFrag(e,h.PlaylistLevelType.MAIN);return t&&"fragment"in t?t.fragment:t},_.getBufferedFrag=function(e){return this.fragmentTracker.getBufferedFrag(e,h.PlaylistLevelType.MAIN)},_.followingBufferedFrag=function(e){return e?this.getBufferedFrag(e.end+.5):null},_.immediateLevelSwitch=function(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},_.nextLevelSwitch=function(){var e=this.levels,t=this.media;if(null!=t&&t.readyState){var r,i=this.getAppendedFrag(t.currentTime);if(i&&i.start>1&&this.flushMainBuffer(0,i.start-1),!t.paused&&e){var n=e[this.hls.nextLoadLevel],s=this.fragLastKbps;r=s&&this.fragCurrent?this.fragCurrent.duration*n.maxBitrate/(1e3*s)+1:0}else r=0;var a=this.getBufferedFrag(t.currentTime+r);if(a){var o=this.followingBufferedFrag(a);if(o){this.abortCurrentFrag();var l=o.maxStartPTS?o.maxStartPTS:o.start,h=o.duration,u=Math.max(a.end,l+Math.min(Math.max(h-this.config.maxFragLookUpTolerance,.5*h),.75*h));this.flushMainBuffer(u,Number.POSITIVE_INFINITY)}}}},_.abortCurrentFrag=function(){var e=this.fragCurrent;this.fragCurrent=null,null!=e&&e.loader&&e.loader.abort(),this.state===n.State.KEY_LOADING&&(this.state=n.State.IDLE),this.nextLoadPosition=this.getLoadPosition()},_.flushMainBuffer=function(t,r){e.prototype.flushMainBuffer.call(this,t,r,this.altAudio?"video":null)},_.onMediaAttached=function(t,r){e.prototype.onMediaAttached.call(this,t,r);var i=r.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new f.default(this.config,i,this.fragmentTracker,this.hls)},_.onMediaDetaching=function(){var t=this.media;t&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),e.prototype.onMediaDetaching.call(this)},_.onMediaPlaying=function(){this.tick()},_.onMediaSeeked=function(){var e=this.media,t=e?e.currentTime:null;Object(i.isFiniteNumber)(t)&&this.log("Media seeked to "+t.toFixed(3)),this.tick()},_.onManifestLoading=function(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(a.Events.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=this.stalled=!1,this.startPosition=this.lastCurrentTime=0,this.fragPlaying=null},_.onManifestParsed=function(e,t){var r,i=!1,n=!1;t.levels.forEach((function(e){(r=e.audioCodec)&&(-1!==r.indexOf("mp4a.40.2")&&(i=!0),-1!==r.indexOf("mp4a.40.5")&&(n=!0))})),this.audioCodecSwitch=i&&n&&!Object(s.changeTypeSupported)(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1},_.onLevelLoading=function(e,t){var r=this.levels;if(r&&this.state===n.State.IDLE){var i=r[t.level];(!i.details||i.details.live&&this.levelLastLoaded!==t.level||this.waitForCdnTuneIn(i.details))&&(this.state=n.State.WAITING_LEVEL)}},_.onLevelLoaded=function(e,t){var r,i=this.levels,s=t.level,o=t.details,l=o.totalduration;if(i){this.log("Level "+s+" loaded ["+o.startSN+","+o.endSN+"], cc ["+o.startCC+", "+o.endCC+"] duration:"+l);var h=this.fragCurrent;!h||this.state!==n.State.FRAG_LOADING&&this.state!==n.State.FRAG_LOADING_WAITING_RETRY||h.level!==t.level&&h.loader&&(this.state=n.State.IDLE,h.loader.abort());var u=i[s],d=0;if(o.live||null!==(r=u.details)&&void 0!==r&&r.live){if(o.fragments[0]||(o.deltaUpdateFailed=!0),o.deltaUpdateFailed)return;d=this.alignPlaylists(o,u.details)}if(u.details=o,this.levelLastLoaded=s,this.hls.trigger(a.Events.LEVEL_UPDATED,{details:o,level:s}),this.state===n.State.WAITING_LEVEL){if(this.waitForCdnTuneIn(o))return;this.state=n.State.IDLE}this.startFragRequested?o.live&&this.synchronizeToLiveEdge(o):this.setStartPosition(o,d),this.tick()}else this.warn("Levels were reset while loading level "+s)},_._handleFragmentLoadProgress=function(e){var t,r=e.frag,i=e.part,n=e.payload,s=this.levels;if(s){var a=s[r.level],o=a.details;if(o){var l=a.videoCodec,u=o.PTSKnown||!o.live,f=null===(t=r.initSegment)||void 0===t?void 0:t.data,g=this._getAudioCodec(a),p=this.transmuxer=this.transmuxer||new d.default(this.hls,h.PlaylistLevelType.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),m=i?i.index:-1,v=-1!==m,y=new c.ChunkMetadata(r.level,r.sn,r.stats.chunkCount,n.byteLength,m,v),E=this.initPTS[r.cc];p.push(n,f,g,l,r,i,o.totalduration,u,y,E)}else this.warn("Dropping fragment "+r.sn+" of level "+r.level+" after level details were reset")}else this.warn("Levels were reset while fragment load was in progress. Fragment "+r.sn+" of level "+r.level+" will not be buffered")},_.onAudioTrackSwitching=function(e,t){var r=this.altAudio,i=!!t.url,n=t.id;if(!i){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var s=this.fragCurrent;null!=s&&s.loader&&(this.log("Switching to main audio track, cancel main fragment load"),s.loader.abort()),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();var o=this.hls;r&&o.trigger(a.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),o.trigger(a.Events.AUDIO_TRACK_SWITCHED,{id:n})}},_.onAudioTrackSwitched=function(e,t){var r=t.id,i=!!this.hls.audioTracks[r].url;if(i){var n=this.videoBuffer;n&&this.mediaBuffer!==n&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=n)}this.altAudio=i,this.tick()},_.onBufferCreated=function(e,t){var r,i,n=t.tracks,s=!1;for(var a in n){var o=n[a];if("main"===o.id){if(i=a,r=o,"video"===a){var l=n[a];l&&(this.videoBuffer=l.buffer)}}else s=!0}s&&r?(this.log("Alternate track found, use "+i+".buffered to schedule main fragment loading"),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media},_.onFragBuffered=function(e,t){var r=t.frag,i=t.part;if(!r||r.type===h.PlaylistLevelType.MAIN){if(this.fragContextChanged(r))return this.warn("Fragment "+r.sn+(i?" p: "+i.index:"")+" of level "+r.level+" finished buffering, but was aborted. state: "+this.state),void(this.state===n.State.PARSED&&(this.state=n.State.IDLE));var s=i?i.stats:r.stats;this.fragLastKbps=Math.round(8*s.total/(s.buffering.end-s.loading.first)),"initSegment"!==r.sn&&(this.fragPrevious=r),this.fragBufferedComplete(r,i)}},_.onError=function(e,t){switch(t.details){case g.ErrorDetails.FRAG_LOAD_ERROR:case g.ErrorDetails.FRAG_LOAD_TIMEOUT:case g.ErrorDetails.KEY_LOAD_ERROR:case g.ErrorDetails.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(h.PlaylistLevelType.MAIN,t);break;case g.ErrorDetails.LEVEL_LOAD_ERROR:case g.ErrorDetails.LEVEL_LOAD_TIMEOUT:this.state!==n.State.ERROR&&(t.fatal?(this.warn(""+t.details),this.state=n.State.ERROR):t.levelRetry||this.state!==n.State.WAITING_LEVEL||(this.state=n.State.IDLE));break;case g.ErrorDetails.BUFFER_FULL_ERROR:if("main"===t.parent&&(this.state===n.State.PARSING||this.state===n.State.PARSED)){var r=!0,i=this.getFwdBufferInfo(this.media,h.PlaylistLevelType.MAIN);i&&i.len>.5&&(r=!this.reduceMaxBufferLength(i.len)),r&&(this.warn("buffer full error also media.currentTime is not buffered, flush main"),this.immediateLevelSwitch()),this.resetLoadingState()}}},_.checkBuffer=function(){var e=this.media,t=this.gapController;if(e&&t&&e.readyState){var r=o.BufferHelper.getBuffered(e);!this.loadedmetadata&&r.length?(this.loadedmetadata=!0,this.seekToStartPos()):t.poll(this.lastCurrentTime),this.lastCurrentTime=e.currentTime}},_.onFragLoadEmergencyAborted=function(){this.state=n.State.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()},_.onBufferFlushed=function(e,t){var r=t.type;if(r!==u.ElementaryStreamTypes.AUDIO||this.audioOnly&&!this.altAudio){var i=(r===u.ElementaryStreamTypes.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(i,r,h.PlaylistLevelType.MAIN)}},_.onLevelsUpdated=function(e,t){this.levels=t.levels},_.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},_.seekToStartPos=function(){var e=this.media,t=e.currentTime,r=this.startPosition;if(r>=0&&t<r){if(e.seeking)return void p.logger.log("could not seek to "+r+", already seeking at "+t);var i=o.BufferHelper.getBuffered(e),n=(i.length?i.start(0):0)-r;n>0&&(n<this.config.maxBufferHole||n<this.config.maxFragLookUpTolerance)&&(p.logger.log("adjusting start position by "+n+" to match buffer start"),r+=n,this.startPosition=r),this.log("seek to target start position "+r+" from current time "+t),e.currentTime=r}},_._getAudioCodec=function(e){var t=this.config.defaultAudioCodec||e.audioCodec;return this.audioCodecSwap&&t&&(this.log("Swapping audio codec"),t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),t},_._loadBitrateTestFrag=function(e){var t=this;this._doFragLoad(e).then((function(r){var i=t.hls;if(r&&!i.nextLoadLevel&&!t.fragContextChanged(e)){t.fragLoadError=0,t.state=n.State.IDLE,t.startFragRequested=!1,t.bitrateTest=!1;var s=e.stats;s.parsing.start=s.parsing.end=s.buffering.start=s.buffering.end=self.performance.now(),i.trigger(a.Events.FRAG_LOADED,r)}}))},_._handleTransmuxComplete=function(e){var t,r="main",s=this.hls,o=e.remuxResult,l=e.chunkMeta,h=this.getCurrentContext(l);if(!h)return this.warn("The loading context changed while buffering fragment "+l.sn+" of level "+l.level+". This chunk will not be buffered."),void this.resetLiveStartWhenNotLoaded(l.level);var d=h.frag,c=h.part,f=h.level,g=o.video,p=o.text,m=o.id3,v=o.initSegment,y=this.altAudio?void 0:o.audio;if(!this.fragContextChanged(d)){if(this.state=n.State.PARSING,v){v.tracks&&(this._bufferInitSegment(f,v.tracks,d,l),s.trigger(a.Events.FRAG_PARSING_INIT_SEGMENT,{frag:d,id:r,tracks:v.tracks}));var E=v.initPTS,S=v.timescale;Object(i.isFiniteNumber)(E)&&(this.initPTS[d.cc]=E,s.trigger(a.Events.INIT_PTS_FOUND,{frag:d,id:r,initPTS:E,timescale:S}))}if(g&&!1!==o.independent){if(f.details){var b=g.startPTS,_=g.endPTS,T=g.startDTS,L=g.endDTS;if(c)c.elementaryStreams[g.type]={startPTS:b,endPTS:_,startDTS:T,endDTS:L};else if(g.firstKeyFrame&&g.independent&&(this.couldBacktrack=!0),g.dropped&&g.independent){if(this.getLoadPosition()+this.config.maxBufferHole<b)return void this.backtrack(d);d.setElementaryStreamInfo(g.type,d.start,_,d.start,L,!0)}d.setElementaryStreamInfo(g.type,b,_,T,L),this.bufferFragmentData(g,d,c,l)}}else if(!1===o.independent)return void this.backtrack(d);if(y){var P=y.startPTS,A=y.endPTS,w=y.startDTS,D=y.endDTS;c&&(c.elementaryStreams[u.ElementaryStreamTypes.AUDIO]={startPTS:P,endPTS:A,startDTS:w,endDTS:D}),d.setElementaryStreamInfo(u.ElementaryStreamTypes.AUDIO,P,A,w,D),this.bufferFragmentData(y,d,c,l)}if(null!=m&&null!==(t=m.samples)&&void 0!==t&&t.length){var R={frag:d,id:r,samples:m.samples};s.trigger(a.Events.FRAG_PARSING_METADATA,R)}if(p){var I={frag:d,id:r,samples:p.samples};s.trigger(a.Events.FRAG_PARSING_USERDATA,I)}}},_._bufferInitSegment=function(e,t,r,i){var s=this;if(this.state===n.State.PARSING){this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;var o=t.audio,l=t.video,h=t.audiovideo;if(o){var u=e.audioCodec,d=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(u&&(u=-1!==u.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==o.metadata.channelCount&&-1===d.indexOf("firefox")&&(u="mp4a.40.5")),-1!==d.indexOf("android")&&"audio/mpeg"!==o.container&&(u="mp4a.40.2",this.log("Android: force audio codec to "+u)),e.audioCodec&&e.audioCodec!==u&&this.log('Swapping manifest audio codec "'+e.audioCodec+'" for "'+u+'"'),o.levelCodec=u,o.id="main",this.log("Init audio buffer, container:"+o.container+", codecs[selected/level/parsed]=["+(u||"")+"/"+(e.audioCodec||"")+"/"+o.codec+"]")}l&&(l.levelCodec=e.videoCodec,l.id="main",this.log("Init video buffer, container:"+l.container+", codecs[level/parsed]=["+(e.videoCodec||"")+"/"+l.codec+"]")),h&&this.log("Init audiovideo buffer, container:"+h.container+", codecs[level/parsed]=["+(e.attrs.CODECS||"")+"/"+h.codec+"]"),this.hls.trigger(a.Events.BUFFER_CODECS,t),Object.keys(t).forEach((function(e){var n=t[e].initSegment;null!=n&&n.byteLength&&s.hls.trigger(a.Events.BUFFER_APPENDING,{type:e,data:n,frag:r,part:null,chunkMeta:i,parent:r.type})})),this.tick()}},_.backtrack=function(e){this.couldBacktrack=!0,this.resetTransmuxer(),this.flushBufferGap(e);var t=this.fragmentTracker.backtrack(e);this.fragPrevious=null,this.nextLoadPosition=e.start,t?this.resetFragmentLoading(e):this.state=n.State.BACKTRACKING},_.checkFragmentChanged=function(){var e=this.media,t=null;if(e&&e.readyState>1&&!1===e.seeking){var r=e.currentTime;if(o.BufferHelper.isBuffered(e,r)?t=this.getAppendedFrag(r):o.BufferHelper.isBuffered(e,r+.1)&&(t=this.getAppendedFrag(r+.1)),t){var i=this.fragPlaying,n=t.level;i&&t.sn===i.sn&&i.level===n&&t.urlId===i.urlId||(this.hls.trigger(a.Events.FRAG_CHANGED,{frag:t}),i&&i.level===n||this.hls.trigger(a.Events.LEVEL_SWITCHED,{level:n}),this.fragPlaying=t)}}},E=y,(S=[{key:"nextLevel",get:function(){var e=this.nextBufferedFrag;return e?e.level:-1}},{key:"currentLevel",get:function(){var e=this.media;if(e){var t=this.getAppendedFrag(e.currentTime);if(t)return t.level}return-1}},{key:"nextBufferedFrag",get:function(){var e=this.media;if(e){var t=this.getAppendedFrag(e.currentTime);return this.followingBufferedFrag(t)}return null}},{key:"forceStartLoad",get:function(){return this._forceStartLoad}}])&&m(E.prototype,S),b&&m(E,b),y}(n.default)},"./src/crypt/aes-crypto.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return i}));var i=function(){function e(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}return e.prototype.decrypt=function(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)},e}()},"./src/crypt/aes-decryptor.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"removePadding",(function(){return n})),r.d(t,"default",(function(){return s}));var i=r("./src/utils/typed-array.ts");function n(e){var t=e.byteLength,r=t&&new DataView(e.buffer).getUint8(t-1);return r?Object(i.sliceUint8)(e,0,t-r):e}var s=function(){function e(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}var t=e.prototype;return t.uint8ArrayToUint32Array_=function(e){for(var t=new DataView(e),r=new Uint32Array(4),i=0;i<4;i++)r[i]=t.getUint32(4*i);return r},t.initTable=function(){var e=this.sBox,t=this.invSBox,r=this.subMix,i=r[0],n=r[1],s=r[2],a=r[3],o=this.invSubMix,l=o[0],h=o[1],u=o[2],d=o[3],c=new Uint32Array(256),f=0,g=0,p=0;for(p=0;p<256;p++)c[p]=p<128?p<<1:p<<1^283;for(p=0;p<256;p++){var m=g^g<<1^g<<2^g<<3^g<<4;m=m>>>8^255&m^99,e[f]=m,t[m]=f;var v=c[f],y=c[v],E=c[y],S=257*c[m]^16843008*m;i[f]=S<<24|S>>>8,n[f]=S<<16|S>>>16,s[f]=S<<8|S>>>24,a[f]=S,S=16843009*E^65537*y^257*v^16843008*f,l[m]=S<<24|S>>>8,h[m]=S<<16|S>>>16,u[m]=S<<8|S>>>24,d[m]=S,f?(f=v^c[c[c[E^v]]],g^=c[c[g]]):f=g=1}},t.expandKey=function(e){for(var t=this.uint8ArrayToUint32Array_(e),r=!0,i=0;i<t.length&&r;)r=t[i]===this.key[i],i++;if(!r){this.key=t;var n=this.keySize=t.length;if(4!==n&&6!==n&&8!==n)throw new Error("Invalid aes key size="+n);var s,a,o,l,h=this.ksRows=4*(n+6+1),u=this.keySchedule=new Uint32Array(h),d=this.invKeySchedule=new Uint32Array(h),c=this.sBox,f=this.rcon,g=this.invSubMix,p=g[0],m=g[1],v=g[2],y=g[3];for(s=0;s<h;s++)s<n?o=u[s]=t[s]:(l=o,s%n==0?(l=c[(l=l<<8|l>>>24)>>>24]<<24|c[l>>>16&255]<<16|c[l>>>8&255]<<8|c[255&l],l^=f[s/n|0]<<24):n>6&&s%n==4&&(l=c[l>>>24]<<24|c[l>>>16&255]<<16|c[l>>>8&255]<<8|c[255&l]),u[s]=o=(u[s-n]^l)>>>0);for(a=0;a<h;a++)s=h-a,l=3&a?u[s]:u[s-4],d[a]=a<4||s<=4?l:p[c[l>>>24]]^m[c[l>>>16&255]]^v[c[l>>>8&255]]^y[c[255&l]],d[a]=d[a]>>>0}},t.networkToHostOrderSwap=function(e){return e<<24|(65280&e)<<8|(16711680&e)>>8|e>>>24},t.decrypt=function(e,t,r){for(var i,n,s,a,o,l,h,u,d,c,f,g,p,m,v=this.keySize+6,y=this.invKeySchedule,E=this.invSBox,S=this.invSubMix,b=S[0],_=S[1],T=S[2],L=S[3],P=this.uint8ArrayToUint32Array_(r),A=P[0],w=P[1],D=P[2],R=P[3],I=new Int32Array(e),C=new Int32Array(I.length),k=this.networkToHostOrderSwap;t<I.length;){for(d=k(I[t]),c=k(I[t+1]),f=k(I[t+2]),g=k(I[t+3]),o=d^y[0],l=g^y[1],h=f^y[2],u=c^y[3],p=4,m=1;m<v;m++)i=b[o>>>24]^_[l>>16&255]^T[h>>8&255]^L[255&u]^y[p],n=b[l>>>24]^_[h>>16&255]^T[u>>8&255]^L[255&o]^y[p+1],s=b[h>>>24]^_[u>>16&255]^T[o>>8&255]^L[255&l]^y[p+2],a=b[u>>>24]^_[o>>16&255]^T[l>>8&255]^L[255&h]^y[p+3],o=i,l=n,h=s,u=a,p+=4;i=E[o>>>24]<<24^E[l>>16&255]<<16^E[h>>8&255]<<8^E[255&u]^y[p],n=E[l>>>24]<<24^E[h>>16&255]<<16^E[u>>8&255]<<8^E[255&o]^y[p+1],s=E[h>>>24]<<24^E[u>>16&255]<<16^E[o>>8&255]<<8^E[255&l]^y[p+2],a=E[u>>>24]<<24^E[o>>16&255]<<16^E[l>>8&255]<<8^E[255&h]^y[p+3],C[t]=k(i^A),C[t+1]=k(a^w),C[t+2]=k(s^D),C[t+3]=k(n^R),A=d,w=c,D=f,R=g,t+=4}return C.buffer},e}()},"./src/crypt/decrypter.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return h}));var i=r("./src/crypt/aes-crypto.ts"),n=r("./src/crypt/fast-aes-key.ts"),s=r("./src/crypt/aes-decryptor.ts"),a=r("./src/utils/logger.ts"),o=r("./src/utils/mp4-tools.ts"),l=r("./src/utils/typed-array.ts"),h=function(){function e(e,t,r){var i=(void 0===r?{}:r).removePKCS7Padding,n=void 0===i||i;if(this.logEnabled=!0,this.observer=void 0,this.config=void 0,this.removePKCS7Padding=void 0,this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null,this.observer=e,this.config=t,this.removePKCS7Padding=n,n)try{var s=self.crypto;s&&(this.subtle=s.subtle||s.webkitSubtle)}catch(e){}null===this.subtle&&(this.config.enableSoftwareAES=!0)}var t=e.prototype;return t.destroy=function(){this.observer=null},t.isSync=function(){return this.config.enableSoftwareAES},t.flush=function(){var e=this.currentResult;if(e){var t=new Uint8Array(e);return this.reset(),this.removePKCS7Padding?Object(s.removePadding)(t):t}this.reset()},t.reset=function(){this.currentResult=null,this.currentIV=null,this.remainderData=null,this.softwareDecrypter&&(this.softwareDecrypter=null)},t.decrypt=function(e,t,r,i){if(this.config.enableSoftwareAES){this.softwareDecrypt(new Uint8Array(e),t,r);var n=this.flush();n&&i(n.buffer)}else this.webCryptoDecrypt(new Uint8Array(e),t,r).then(i)},t.softwareDecrypt=function(e,t,r){var i=this.currentIV,n=this.currentResult,a=this.remainderData;this.logOnce("JS AES decrypt"),a&&(e=Object(o.appendUint8Array)(a,e),this.remainderData=null);var h=this.getValidChunk(e);if(!h.length)return null;i&&(r=i);var u=this.softwareDecrypter;u||(u=this.softwareDecrypter=new s.default),u.expandKey(t);var d=n;return this.currentResult=u.decrypt(h.buffer,0,r),this.currentIV=Object(l.sliceUint8)(h,-16).buffer,d||null},t.webCryptoDecrypt=function(e,t,r){var s=this,a=this.subtle;return this.key===t&&this.fastAesKey||(this.key=t,this.fastAesKey=new n.default(a,t)),this.fastAesKey.expandKey().then((function(t){return a?new i.default(a,r).decrypt(e.buffer,t):Promise.reject(new Error("web crypto not initialized"))})).catch((function(i){return s.onWebCryptoError(i,e,t,r)}))},t.onWebCryptoError=function(e,t,r,i){return a.logger.warn("[decrypter.ts]: WebCrypto Error, disable WebCrypto API:",e),this.config.enableSoftwareAES=!0,this.logEnabled=!0,this.softwareDecrypt(t,r,i)},t.getValidChunk=function(e){var t=e,r=e.length-e.length%16;return r!==e.length&&(t=Object(l.sliceUint8)(e,0,r),this.remainderData=Object(l.sliceUint8)(e,r)),t},t.logOnce=function(e){this.logEnabled&&(a.logger.log("[decrypter.ts]: "+e),this.logEnabled=!1)},e}()},"./src/crypt/fast-aes-key.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return i}));var i=function(){function e(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}return e.prototype.expandKey=function(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])},e}()},"./src/demux/aacdemuxer.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/demux/base-audio-demuxer.ts"),n=r("./src/demux/adts.ts"),s=r("./src/utils/logger.ts"),a=r("./src/demux/id3.ts");function o(e,t){return o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},o(e,t)}var l=function(e){var t,r;function i(t,r){var i;return(i=e.call(this)||this).observer=void 0,i.config=void 0,i.observer=t,i.config=r,i}r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,o(t,r);var l=i.prototype;return l.resetInitSegment=function(t,r,i){e.prototype.resetInitSegment.call(this,t,r,i),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,isAAC:!0,samples:[],manifestCodec:t,duration:i,inputTimeScale:9e4,dropped:0}},i.probe=function(e){if(!e)return!1;for(var t=(a.getID3Data(e,0)||[]).length,r=e.length;t<r;t++)if(n.probe(e,t))return s.logger.log("ADTS sync word found !"),!0;return!1},l.canParse=function(e,t){return n.canParse(e,t)},l.appendFrame=function(e,t,r){n.initTrackConfig(e,this.observer,t,r,e.manifestCodec);var i=n.appendFrame(e,t,r,this.initPTS,this.frameIndex);if(i&&0===i.missing)return i},i}(i.default);l.minProbeByteLength=9,t.default=l},"./src/demux/adts.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"getAudioConfig",(function(){return a})),r.d(t,"isHeaderPattern",(function(){return o})),r.d(t,"getHeaderLength",(function(){return l})),r.d(t,"getFullFrameLength",(function(){return h})),r.d(t,"canGetFrameLength",(function(){return u})),r.d(t,"isHeader",(function(){return d})),r.d(t,"canParse",(function(){return c})),r.d(t,"probe",(function(){return f})),r.d(t,"initTrackConfig",(function(){return g})),r.d(t,"getFrameDuration",(function(){return p})),r.d(t,"parseFrameHeader",(function(){return m})),r.d(t,"appendFrame",(function(){return v}));var i=r("./src/utils/logger.ts"),n=r("./src/errors.ts"),s=r("./src/events.ts");function a(e,t,r,a){var o,l,h,u,d=navigator.userAgent.toLowerCase(),c=a,f=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];o=1+((192&t[r+2])>>>6);var g=(60&t[r+2])>>>2;if(!(g>f.length-1))return h=(1&t[r+2])<<2,h|=(192&t[r+3])>>>6,i.logger.log("manifest codec:"+a+", ADTS type:"+o+", samplingIndex:"+g),/firefox/i.test(d)?g>=6?(o=5,u=new Array(4),l=g-3):(o=2,u=new Array(2),l=g):-1!==d.indexOf("android")?(o=2,u=new Array(2),l=g):(o=5,u=new Array(4),a&&(-1!==a.indexOf("mp4a.40.29")||-1!==a.indexOf("mp4a.40.5"))||!a&&g>=6?l=g-3:((a&&-1!==a.indexOf("mp4a.40.2")&&(g>=6&&1===h||/vivaldi/i.test(d))||!a&&1===h)&&(o=2,u=new Array(2)),l=g)),u[0]=o<<3,u[0]|=(14&g)>>1,u[1]|=(1&g)<<7,u[1]|=h<<3,5===o&&(u[1]|=(14&l)>>1,u[2]=(1&l)<<7,u[2]|=8,u[3]=0),{config:u,samplerate:f[g],channelCount:h,codec:"mp4a.40."+o,manifestCodec:c};e.trigger(s.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+g})}function o(e,t){return 255===e[t]&&240==(246&e[t+1])}function l(e,t){return 1&e[t+1]?7:9}function h(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function u(e,t){return t+5<e.length}function d(e,t){return t+1<e.length&&o(e,t)}function c(e,t){return u(e,t)&&o(e,t)&&h(e,t)<=e.length-t}function f(e,t){if(d(e,t)){var r=l(e,t);if(t+r>=e.length)return!1;var i=h(e,t);if(i<=r)return!1;var n=t+i;return n===e.length||d(e,n)}return!1}function g(e,t,r,n,s){if(!e.samplerate){var o=a(t,r,n,s);if(!o)return;e.config=o.config,e.samplerate=o.samplerate,e.channelCount=o.channelCount,e.codec=o.codec,e.manifestCodec=o.manifestCodec,i.logger.log("parsed codec:"+e.codec+", rate:"+o.samplerate+", channels:"+o.channelCount)}}function p(e){return 9216e4/e}function m(e,t,r,i,n){var s=l(e,t),a=h(e,t);if((a-=s)>0)return{headerLength:s,frameLength:a,stamp:r+i*n}}function v(e,t,r,i,n){var s=m(t,r,i,n,p(e.samplerate));if(s){var a,o=s.frameLength,l=s.headerLength,h=s.stamp,u=l+o,d=Math.max(0,r+u-t.length);d?(a=new Uint8Array(u-l)).set(t.subarray(r+l,t.length),0):a=t.subarray(r+l,r+u);var c={unit:a,pts:h};return d||e.samples.push(c),{sample:c,length:u,missing:d}}}},"./src/demux/base-audio-demuxer.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"initPTSFn",(function(){return h}));var i=r("./src/polyfills/number.ts"),n=r("./src/demux/id3.ts"),s=r("./src/demux/dummy-demuxed-track.ts"),a=r("./src/utils/mp4-tools.ts"),o=r("./src/utils/typed-array.ts"),l=function(){function e(){this._audioTrack=void 0,this._id3Track=void 0,this.frameIndex=0,this.cachedData=null,this.initPTS=null}var t=e.prototype;return t.resetInitSegment=function(e,t,r){this._id3Track={type:"id3",id:3,pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0}},t.resetTimeStamp=function(){},t.resetContiguity=function(){},t.canParse=function(e,t){return!1},t.appendFrame=function(e,t,r){},t.demux=function(e,t){this.cachedData&&(e=Object(a.appendUint8Array)(this.cachedData,e),this.cachedData=null);var r,i,l=n.getID3Data(e,0),u=l?l.length:0,d=this._audioTrack,c=this._id3Track,f=l?n.getTimeStamp(l):void 0,g=e.length;for(0!==this.frameIndex&&null!==this.initPTS||(this.initPTS=h(f,t)),l&&l.length>0&&c.samples.push({pts:this.initPTS,dts:this.initPTS,data:l}),i=this.initPTS;u<g;){if(this.canParse(e,u)){var p=this.appendFrame(d,e,u);p?(this.frameIndex++,i=p.sample.pts,r=u+=p.length):u=g}else n.canParse(e,u)?(l=n.getID3Data(e,u),c.samples.push({pts:i,dts:i,data:l}),r=u+=l.length):u++;if(u===g&&r!==g){var m=Object(o.sliceUint8)(e,r);this.cachedData?this.cachedData=Object(a.appendUint8Array)(this.cachedData,m):this.cachedData=m}}return{audioTrack:d,avcTrack:Object(s.dummyTrack)(),id3Track:c,textTrack:Object(s.dummyTrack)()}},t.demuxSampleAes=function(e,t,r){return Promise.reject(new Error("["+this+"] This demuxer does not support Sample-AES decryption"))},t.flush=function(e){var t=this.cachedData;return t&&(this.cachedData=null,this.demux(t,0)),this.frameIndex=0,{audioTrack:this._audioTrack,avcTrack:Object(s.dummyTrack)(),id3Track:this._id3Track,textTrack:Object(s.dummyTrack)()}},t.destroy=function(){},e}(),h=function(e,t){return Object(i.isFiniteNumber)(e)?90*e:9e4*t};t.default=l},"./src/demux/chunk-cache.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return i}));var i=function(){function e(){this.chunks=[],this.dataLength=0}var t=e.prototype;return t.push=function(e){this.chunks.push(e),this.dataLength+=e.length},t.flush=function(){var e,t=this.chunks,r=this.dataLength;return t.length?(e=1===t.length?t[0]:function(e,t){for(var r=new Uint8Array(t),i=0,n=0;n<e.length;n++){var s=e[n];r.set(s,i),i+=s.length}return r}(t,r),this.reset(),e):new Uint8Array(0)},t.reset=function(){this.chunks.length=0,this.dataLength=0},e}()},"./src/demux/dummy-demuxed-track.ts":function(e,t,r){"use strict";function i(){return{type:"",id:-1,pid:-1,inputTimeScale:9e4,sequenceNumber:-1,samples:[],dropped:0}}r.r(t),r.d(t,"dummyTrack",(function(){return i}))},"./src/demux/exp-golomb.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/utils/logger.ts"),n=function(){function e(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}var t=e.prototype;return t.loadWord=function(){var e=this.data,t=this.bytesAvailable,r=e.byteLength-t,i=new Uint8Array(4),n=Math.min(4,t);if(0===n)throw new Error("no bytes available");i.set(e.subarray(r,r+n)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*n,this.bytesAvailable-=n},t.skipBits=function(e){var t;this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,e-=(t=e>>3)>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)},t.readBits=function(e){var t=Math.min(this.bitsAvailable,e),r=this.word>>>32-t;return e>32&&i.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0?this.word<<=t:this.bytesAvailable>0&&this.loadWord(),(t=e-t)>0&&this.bitsAvailable?r<<t|this.readBits(t):r},t.skipLZ=function(){var e;for(e=0;e<this.bitsAvailable;++e)if(0!=(this.word&2147483648>>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()},t.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.skipEG=function(){this.skipBits(1+this.skipLZ())},t.readUEG=function(){var e=this.skipLZ();return this.readBits(e+1)-1},t.readEG=function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)},t.readBoolean=function(){return 1===this.readBits(1)},t.readUByte=function(){return this.readBits(8)},t.readUShort=function(){return this.readBits(16)},t.readUInt=function(){return this.readBits(32)},t.skipScalingList=function(e){for(var t=8,r=8,i=0;i<e;i++)0!==r&&(r=(t+this.readEG()+256)%256),t=0===r?t:r},t.readSPS=function(){var e,t,r,i=0,n=0,s=0,a=0,o=this.readUByte.bind(this),l=this.readBits.bind(this),h=this.readUEG.bind(this),u=this.readBoolean.bind(this),d=this.skipBits.bind(this),c=this.skipEG.bind(this),f=this.skipUEG.bind(this),g=this.skipScalingList.bind(this);o();var p=o();if(l(5),d(3),o(),f(),100===p||110===p||122===p||244===p||44===p||83===p||86===p||118===p||128===p){var m=h();if(3===m&&d(1),f(),f(),d(1),u())for(t=3!==m?8:12,r=0;r<t;r++)u()&&g(r<6?16:64)}f();var v=h();if(0===v)h();else if(1===v)for(d(1),c(),c(),e=h(),r=0;r<e;r++)c();f(),d(1);var y=h(),E=h(),S=l(1);0===S&&d(1),d(1),u()&&(i=h(),n=h(),s=h(),a=h());var b=[1,1];if(u()&&u())switch(o()){case 1:b=[1,1];break;case 2:b=[12,11];break;case 3:b=[10,11];break;case 4:b=[16,11];break;case 5:b=[40,33];break;case 6:b=[24,11];break;case 7:b=[20,11];break;case 8:b=[32,11];break;case 9:b=[80,33];break;case 10:b=[18,11];break;case 11:b=[15,11];break;case 12:b=[64,33];break;case 13:b=[160,99];break;case 14:b=[4,3];break;case 15:b=[3,2];break;case 16:b=[2,1];break;case 255:b=[o()<<8|o(),o()<<8|o()]}return{width:Math.ceil(16*(y+1)-2*i-2*n),height:(2-S)*(E+1)*16-(S?2:4)*(s+a),pixelRatio:b}},t.readSliceType=function(){return this.readUByte(),this.readUEG(),this.readUEG()},e}();t.default=n},"./src/demux/id3.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"isHeader",(function(){return n})),r.d(t,"isFooter",(function(){return s})),r.d(t,"getID3Data",(function(){return a})),r.d(t,"canParse",(function(){return l})),r.d(t,"getTimeStamp",(function(){return h})),r.d(t,"isTimeStampFrame",(function(){return u})),r.d(t,"getID3Frames",(function(){return c})),r.d(t,"decodeFrame",(function(){return f})),r.d(t,"utf8ArrayToStr",(function(){return y})),r.d(t,"testables",(function(){return E}));var i,n=function(e,t){return t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128},s=function(e,t){return t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128},a=function(e,t){for(var r=t,i=0;n(e,t);)i+=10,i+=o(e,t+6),s(e,t+10)&&(i+=10),t+=i;if(i>0)return e.subarray(r,r+i)},o=function(e,t){var r=0;return r=(127&e[t])<<21,r|=(127&e[t+1])<<14,r|=(127&e[t+2])<<7,r|=127&e[t+3]},l=function(e,t){return n(e,t)&&o(e,t+6)+10<=e.length-t},h=function(e){for(var t=c(e),r=0;r<t.length;r++){var i=t[r];if(u(i))return v(i)}},u=function(e){return e&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info},d=function(e){var t=String.fromCharCode(e[0],e[1],e[2],e[3]),r=o(e,4);return{type:t,size:r,data:e.subarray(10,10+r)}},c=function(e){for(var t=0,r=[];n(e,t);){for(var i=o(e,t+6),a=(t+=10)+i;t+8<a;){var l=d(e.subarray(t)),h=f(l);h&&r.push(h),t+=l.size+10}s(e,t)&&(t+=10)}return r},f=function(e){return"PRIV"===e.type?g(e):"W"===e.type[0]?m(e):p(e)},g=function(e){if(!(e.size<2)){var t=y(e.data,!0),r=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:r.buffer}}},p=function(e){if(!(e.size<2)){if("TXXX"===e.type){var t=1,r=y(e.data.subarray(t),!0);t+=r.length+1;var i=y(e.data.subarray(t));return{key:e.type,info:r,data:i}}var n=y(e.data.subarray(1));return{key:e.type,data:n}}},m=function(e){if("WXXX"===e.type){if(e.size<2)return;var t=1,r=y(e.data.subarray(t),!0);t+=r.length+1;var i=y(e.data.subarray(t));return{key:e.type,info:r,data:i}}var n=y(e.data);return{key:e.type,data:n}},v=function(e){if(8===e.data.byteLength){var t=new Uint8Array(e.data),r=1&t[3],i=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return i/=45,r&&(i+=47721858.84),Math.round(i)}},y=function(e,t){void 0===t&&(t=!1);var r=S();if(r){var i=r.decode(e);if(t){var n=i.indexOf("\0");return-1!==n?i.substring(0,n):i}return i.replace(/\0/g,"")}for(var s,a,o,l=e.length,h="",u=0;u<l;){if(0===(s=e[u++])&&t)return h;if(0!==s&&3!==s)switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:h+=String.fromCharCode(s);break;case 12:case 13:a=e[u++],h+=String.fromCharCode((31&s)<<6|63&a);break;case 14:a=e[u++],o=e[u++],h+=String.fromCharCode((15&s)<<12|(63&a)<<6|(63&o)<<0)}}return h},E={decodeTextFrame:p};function S(){return i||void 0===self.TextDecoder||(i=new self.TextDecoder("utf-8")),i}},"./src/demux/mp3demuxer.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/demux/base-audio-demuxer.ts"),n=r("./src/demux/id3.ts"),s=r("./src/utils/logger.ts"),a=r("./src/demux/mpegaudio.ts");function o(e,t){return o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},o(e,t)}var l=function(e){var t,r;function i(){return e.apply(this,arguments)||this}r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,o(t,r);var l=i.prototype;return l.resetInitSegment=function(t,r,i){e.prototype.resetInitSegment.call(this,t,r,i),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,isAAC:!1,samples:[],manifestCodec:t,duration:i,inputTimeScale:9e4,dropped:0}},i.probe=function(e){if(!e)return!1;for(var t=(n.getID3Data(e,0)||[]).length,r=e.length;t<r;t++)if(a.probe(e,t))return s.logger.log("MPEG Audio sync word found !"),!0;return!1},l.canParse=function(e,t){return a.canParse(e,t)},l.appendFrame=function(e,t,r){if(null!==this.initPTS)return a.appendFrame(e,t,r,this.initPTS,this.frameIndex)},i}(i.default);l.minProbeByteLength=4,t.default=l},"./src/demux/mp4demuxer.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/utils/mp4-tools.ts"),n=r("./src/demux/dummy-demuxed-track.ts"),s=function(){function e(e,t){this.remainderData=null,this.config=void 0,this.config=t}var t=e.prototype;return t.resetTimeStamp=function(){},t.resetInitSegment=function(){},t.resetContiguity=function(){},e.probe=function(e){return Object(i.findBox)({data:e,start:0,end:Math.min(e.length,16384)},["moof"]).length>0},t.demux=function(e){var t=e,r=Object(n.dummyTrack)();if(this.config.progressive){this.remainderData&&(t=Object(i.appendUint8Array)(this.remainderData,e));var s=Object(i.segmentValidRange)(t);this.remainderData=s.remainder,r.samples=s.valid||new Uint8Array}else r.samples=t;return{audioTrack:Object(n.dummyTrack)(),avcTrack:r,id3Track:Object(n.dummyTrack)(),textTrack:Object(n.dummyTrack)()}},t.flush=function(){var e=Object(n.dummyTrack)();return e.samples=this.remainderData||new Uint8Array,this.remainderData=null,{audioTrack:Object(n.dummyTrack)(),avcTrack:e,id3Track:Object(n.dummyTrack)(),textTrack:Object(n.dummyTrack)()}},t.demuxSampleAes=function(e,t,r){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))},t.destroy=function(){},e}();s.minProbeByteLength=1024,t.default=s},"./src/demux/mpegaudio.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"appendFrame",(function(){return l})),r.d(t,"parseHeader",(function(){return h})),r.d(t,"isHeaderPattern",(function(){return u})),r.d(t,"isHeader",(function(){return d})),r.d(t,"canParse",(function(){return c})),r.d(t,"probe",(function(){return f}));var i=null,n=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],s=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],a=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],o=[0,1,1,4];function l(e,t,r,i,n){if(!(r+24>t.length)){var s=h(t,r);if(s&&r+s.frameLength<=t.length){var a=i+n*(9e4*s.samplesPerFrame/s.sampleRate),o={unit:t.subarray(r,r+s.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=s.channelCount,e.samplerate=s.sampleRate,e.samples.push(o),{sample:o,length:s.frameLength,missing:0}}}}function h(e,t){var r=e[t+1]>>3&3,l=e[t+1]>>1&3,h=e[t+2]>>4&15,u=e[t+2]>>2&3;if(1!==r&&0!==h&&15!==h&&3!==u){var d=e[t+2]>>1&1,c=e[t+3]>>6,f=1e3*n[14*(3===r?3-l:3===l?3:4)+h-1],g=s[3*(3===r?0:2===r?1:2)+u],p=3===c?1:2,m=a[r][l],v=o[l],y=8*m*v,E=Math.floor(m*f/g+d)*v;if(null===i){var S=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);i=S?parseInt(S[1]):0}return!!i&&i<=87&&2===l&&f>=224e3&&0===c&&(e[t+3]=128|e[t+3]),{sampleRate:g,channelCount:p,frameLength:E,samplesPerFrame:y}}}function u(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function d(e,t){return t+1<e.length&&u(e,t)}function c(e,t){return u(e,t)&&4<=e.length-t}function f(e,t){if(t+1<e.length&&u(e,t)){var r=h(e,t),i=4;null!=r&&r.frameLength&&(i=r.frameLength);var n=t+i;return n===e.length||d(e,n)}return!1}},"./src/demux/sample-aes.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/crypt/decrypter.ts"),n=r("./src/demux/tsdemuxer.ts"),s=function(){function e(e,t,r){this.keyData=void 0,this.decrypter=void 0,this.keyData=r,this.decrypter=new i.default(e,t,{removePKCS7Padding:!1})}var t=e.prototype;return t.decryptBuffer=function(e,t){this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer,t)},t.decryptAacSample=function(e,t,r,i){var n=e[t].unit,s=n.subarray(16,n.length-n.length%16),a=s.buffer.slice(s.byteOffset,s.byteOffset+s.length),o=this;this.decryptBuffer(a,(function(s){var a=new Uint8Array(s);n.set(a,16),i||o.decryptAacSamples(e,t+1,r)}))},t.decryptAacSamples=function(e,t,r){for(;;t++){if(t>=e.length)return void r();if(!(e[t].unit.length<32)){var i=this.decrypter.isSync();if(this.decryptAacSample(e,t,r,i),!i)return}}},t.getAvcEncryptedData=function(e){for(var t=16*Math.floor((e.length-48)/160)+16,r=new Int8Array(t),i=0,n=32;n<e.length-16;n+=160,i+=16)r.set(e.subarray(n,n+16),i);return r},t.getAvcDecryptedUnit=function(e,t){for(var r=new Uint8Array(t),i=0,n=32;n<e.length-16;n+=160,i+=16)e.set(r.subarray(i,i+16),n);return e},t.decryptAvcSample=function(e,t,r,i,s,a){var o=Object(n.discardEPB)(s.data),l=this.getAvcEncryptedData(o),h=this;this.decryptBuffer(l.buffer,(function(n){s.data=h.getAvcDecryptedUnit(o,n),a||h.decryptAvcSamples(e,t,r+1,i)}))},t.decryptAvcSamples=function(e,t,r,i){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,r=0){if(t>=e.length)return void i();for(var n=e[t].units;!(r>=n.length);r++){var s=n[r];if(!(s.data.length<=48||1!==s.type&&5!==s.type)){var a=this.decrypter.isSync();if(this.decryptAvcSample(e,t,r,i,s,a),!a)return}}}},e}();t.default=s},"./src/demux/transmuxer-interface.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return d}));var i=r("./node_modules/webworkify-webpack/index.js"),n=r("./src/events.ts"),s=r("./src/demux/transmuxer.ts"),a=r("./src/utils/logger.ts"),o=r("./src/errors.ts"),l=r("./src/utils/mediasource-helper.ts"),h=r("./node_modules/eventemitter3/index.js"),u=Object(l.getMediaSource)()||{isTypeSupported:function(){return!1}},d=function(){function e(e,t,r,l){var d=this;this.hls=void 0,this.id=void 0,this.observer=void 0,this.frag=null,this.part=null,this.worker=void 0,this.onwmsg=void 0,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0,this.hls=e,this.id=t,this.onTransmuxComplete=r,this.onFlush=l;var c=e.config,f=function(t,r){(r=r||{}).frag=d.frag,r.id=d.id,e.trigger(t,r)};this.observer=new h.EventEmitter,this.observer.on(n.Events.FRAG_DECRYPTED,f),this.observer.on(n.Events.ERROR,f);var g={mp4:u.isTypeSupported("video/mp4"),mpeg:u.isTypeSupported("audio/mpeg"),mp3:u.isTypeSupported('audio/mp4; codecs="mp3"')},p=navigator.vendor;if(c.enableWorker&&"undefined"!=typeof Worker){var m;a.logger.log("demuxing in webworker");try{m=this.worker=i("./src/demux/transmuxer-worker.ts"),this.onwmsg=this.onWorkerMessage.bind(this),m.addEventListener("message",this.onwmsg),m.onerror=function(t){e.trigger(n.Events.ERROR,{type:o.ErrorTypes.OTHER_ERROR,details:o.ErrorDetails.INTERNAL_EXCEPTION,fatal:!0,event:"demuxerWorker",error:new Error(t.message+" ("+t.filename+":"+t.lineno+")")})},m.postMessage({cmd:"init",typeSupported:g,vendor:p,id:t,config:JSON.stringify(c)})}catch(e){a.logger.warn("Error in worker:",e),a.logger.error("Error while initializing DemuxerWorker, fallback to inline"),m&&self.URL.revokeObjectURL(m.objectURL),this.transmuxer=new s.default(this.observer,g,c,p,t),this.worker=null}}else this.transmuxer=new s.default(this.observer,g,c,p,t)}var t=e.prototype;return t.destroy=function(){var e=this.worker;if(e)e.removeEventListener("message",this.onwmsg),e.terminate(),this.worker=null;else{var t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}var r=this.observer;r&&r.removeAllListeners(),this.observer=null},t.push=function(e,t,r,i,n,o,l,h,u,d){var c,f,g=this;u.transmuxing.start=self.performance.now();var p=this.transmuxer,m=this.worker,v=o?o.start:n.start,y=n.decryptdata,E=this.frag,S=!(E&&n.cc===E.cc),b=!(E&&u.level===E.level),_=E?u.sn-E.sn:-1,T=this.part?u.part-this.part.index:1,L=!b&&(1===_||0===_&&1===T),P=self.performance.now();(b||_||0===n.stats.parsing.start)&&(n.stats.parsing.start=P),!o||!T&&L||(o.stats.parsing.start=P);var A=!(E&&(null===(c=n.initSegment)||void 0===c?void 0:c.url)===(null===(f=E.initSegment)||void 0===f?void 0:f.url)),w=new s.TransmuxState(S,L,h,b,v,A);if(!L||S||A){a.logger.log("[transmuxer-interface, "+n.type+"]: Starting new transmux session for sn: "+u.sn+" p: "+u.part+" level: "+u.level+" id: "+u.id+"\n discontinuity: "+S+"\n trackSwitch: "+b+"\n contiguous: "+L+"\n accurateTimeOffset: "+h+"\n timeOffset: "+v+"\n initSegmentChange: "+A);var D=new s.TransmuxConfig(r,i,t,l,d);this.configureTransmuxer(D)}if(this.frag=n,this.part=o,m)m.postMessage({cmd:"demux",data:e,decryptdata:y,chunkMeta:u,state:w},e instanceof ArrayBuffer?[e]:[]);else if(p){var R=p.push(e,y,u,w);Object(s.isPromise)(R)?R.then((function(e){g.handleTransmuxComplete(e)})):this.handleTransmuxComplete(R)}},t.flush=function(e){var t=this;e.transmuxing.start=self.performance.now();var r=this.transmuxer,i=this.worker;if(i)i.postMessage({cmd:"flush",chunkMeta:e});else if(r){var n=r.flush(e);Object(s.isPromise)(n)?n.then((function(r){t.handleFlushResult(r,e)})):this.handleFlushResult(n,e)}},t.handleFlushResult=function(e,t){var r=this;e.forEach((function(e){r.handleTransmuxComplete(e)})),this.onFlush(t)},t.onWorkerMessage=function(e){var t=e.data,r=this.hls;switch(t.event){case"init":self.URL.revokeObjectURL(this.worker.objectURL);break;case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,r.trigger(t.event,t.data)}},t.configureTransmuxer=function(e){var t=this.worker,r=this.transmuxer;t?t.postMessage({cmd:"configure",config:e}):r&&r.configure(e)},t.handleTransmuxComplete=function(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)},e}()},"./src/demux/transmuxer-worker.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return o}));var i=r("./src/demux/transmuxer.ts"),n=r("./src/events.ts"),s=r("./src/utils/logger.ts"),a=r("./node_modules/eventemitter3/index.js");function o(e){var t=new a.EventEmitter,r=function(t,r){e.postMessage({event:t,data:r})};t.on(n.Events.FRAG_DECRYPTED,r),t.on(n.Events.ERROR,r),e.addEventListener("message",(function(n){var a=n.data;switch(a.cmd){case"init":var o=JSON.parse(a.config);e.transmuxer=new i.default(t,a.typeSupported,o,a.vendor,a.id),Object(s.enableLogs)(o.debug),r("init",null);break;case"configure":e.transmuxer.configure(a.config);break;case"demux":var h=e.transmuxer.push(a.data,a.decryptdata,a.chunkMeta,a.state);Object(i.isPromise)(h)?h.then((function(t){l(e,t)})):l(e,h);break;case"flush":var d=a.chunkMeta,c=e.transmuxer.flush(d);Object(i.isPromise)(c)?c.then((function(t){u(e,t,d)})):u(e,c,d)}}))}function l(e,t){if((r=t.remuxResult).audio||r.video||r.text||r.id3||r.initSegment){var r,i=[],n=t.remuxResult,s=n.audio,a=n.video;s&&h(i,s),a&&h(i,a),e.postMessage({event:"transmuxComplete",data:t},i)}}function h(e,t){t.data1&&e.push(t.data1.buffer),t.data2&&e.push(t.data2.buffer)}function u(e,t,r){t.forEach((function(t){l(e,t)})),e.postMessage({event:"flush",data:r})}},"./src/demux/transmuxer.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return y})),r.d(t,"isPromise",(function(){return S})),r.d(t,"TransmuxConfig",(function(){return b})),r.d(t,"TransmuxState",(function(){return _}));var i,n=r("./src/events.ts"),s=r("./src/errors.ts"),a=r("./src/crypt/decrypter.ts"),o=r("./src/demux/aacdemuxer.ts"),l=r("./src/demux/mp4demuxer.ts"),h=r("./src/demux/tsdemuxer.ts"),u=r("./src/demux/mp3demuxer.ts"),d=r("./src/remux/mp4-remuxer.ts"),c=r("./src/remux/passthrough-remuxer.ts"),f=r("./src/demux/chunk-cache.ts"),g=r("./src/utils/mp4-tools.ts"),p=r("./src/utils/logger.ts");try{i=self.performance.now.bind(self.performance)}catch(e){p.logger.debug("Unable to use Performance API on this environment"),i=self.Date.now}var m=[{demux:h.default,remux:d.default},{demux:l.default,remux:c.default},{demux:o.default,remux:d.default},{demux:u.default,remux:d.default}],v=1024;m.forEach((function(e){var t=e.demux;v=Math.max(v,t.minProbeByteLength)}));var y=function(){function e(e,t,r,i,n){this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.vendor=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.cache=new f.default,this.observer=e,this.typeSupported=t,this.config=r,this.vendor=i,this.id=n}var t=e.prototype;return t.configure=function(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()},t.push=function(e,t,r,n){var s=this,a=r.transmuxing;a.executeStart=i();var o=new Uint8Array(e),l=this.cache,h=this.config,u=this.currentTransmuxState,d=this.transmuxConfig;n&&(this.currentTransmuxState=n);var c=function(e,t){var r=null;return e.byteLength>0&&null!=t&&null!=t.key&&null!==t.iv&&null!=t.method&&(r=t),r}(o,t);if(c&&"AES-128"===c.method){var f=this.getDecrypter();if(!h.enableSoftwareAES)return this.decryptionPromise=f.webCryptoDecrypt(o,c.key.buffer,c.iv.buffer).then((function(e){var t=s.push(e,null,r);return s.decryptionPromise=null,t})),this.decryptionPromise;var p=f.softwareDecrypt(o,c.key.buffer,c.iv.buffer);if(!p)return a.executeEnd=i(),E(r);o=new Uint8Array(p)}var m=n||u,v=m.contiguous,y=m.discontinuity,S=m.trackSwitch,b=m.accurateTimeOffset,_=m.timeOffset,T=m.initSegmentChange,L=d.audioCodec,P=d.videoCodec,A=d.defaultInitPts,w=d.duration,D=d.initSegmentData;if((y||S||T)&&this.resetInitSegment(D,L,P,w),(y||T)&&this.resetInitialTimestamp(A),v||this.resetContiguity(),this.needsProbing(o,y,S)){if(l.dataLength){var R=l.flush();o=Object(g.appendUint8Array)(R,o)}this.configureTransmuxer(o,d)}var I=this.transmux(o,c,_,b,r),C=this.currentTransmuxState;return C.contiguous=!0,C.discontinuity=!1,C.trackSwitch=!1,a.executeEnd=i(),I},t.flush=function(e){var t=this,r=e.transmuxing;r.executeStart=i();var a=this.decrypter,o=this.cache,l=this.currentTransmuxState,h=this.decryptionPromise;if(h)return h.then((function(){return t.flush(e)}));var u=[],d=l.timeOffset;if(a){var c=a.flush();c&&u.push(this.push(c,null,e))}var f=o.dataLength;o.reset();var g=this.demuxer,p=this.remuxer;if(!g||!p)return f>=v&&this.observer.emit(n.Events.ERROR,n.Events.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"no demux matching with content found"}),r.executeEnd=i(),[E(e)];var m=g.flush(d);return S(m)?m.then((function(r){return t.flushRemux(u,r,e),u})):(this.flushRemux(u,m,e),u)},t.flushRemux=function(e,t,r){var n=t.audioTrack,s=t.avcTrack,a=t.id3Track,o=t.textTrack,l=this.currentTransmuxState,h=l.accurateTimeOffset,u=l.timeOffset;p.logger.log("[transmuxer.ts]: Flushed fragment "+r.sn+(r.part>-1?" p: "+r.part:"")+" of level "+r.level);var d=this.remuxer.remux(n,s,a,o,u,h,!0,this.id);e.push({remuxResult:d,chunkMeta:r}),r.transmuxing.executeEnd=i()},t.resetInitialTimestamp=function(e){var t=this.demuxer,r=this.remuxer;t&&r&&(t.resetTimeStamp(e),r.resetTimeStamp(e))},t.resetContiguity=function(){var e=this.demuxer,t=this.remuxer;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())},t.resetInitSegment=function(e,t,r,i){var n=this.demuxer,s=this.remuxer;n&&s&&(n.resetInitSegment(t,r,i),s.resetInitSegment(e,t,r))},t.destroy=function(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)},t.transmux=function(e,t,r,i,n){return t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,r,i,n):this.transmuxUnencrypted(e,r,i,n)},t.transmuxUnencrypted=function(e,t,r,i){var n=this.demuxer.demux(e,t,!1,!this.config.progressive),s=n.audioTrack,a=n.avcTrack,o=n.id3Track,l=n.textTrack;return{remuxResult:this.remuxer.remux(s,a,o,l,t,r,!1,this.id),chunkMeta:i}},t.transmuxSampleAes=function(e,t,r,i,n){var s=this;return this.demuxer.demuxSampleAes(e,t,r).then((function(e){return{remuxResult:s.remuxer.remux(e.audioTrack,e.avcTrack,e.id3Track,e.textTrack,r,i,!1,s.id),chunkMeta:n}}))},t.configureTransmuxer=function(e,t){for(var r,i=this.config,n=this.observer,s=this.typeSupported,a=this.vendor,o=t.audioCodec,h=t.defaultInitPts,u=t.duration,d=t.initSegmentData,f=t.videoCodec,g=0,v=m.length;g<v;g++)if(m[g].demux.probe(e)){r=m[g];break}r||(p.logger.warn("Failed to find demuxer by probing frag, treating as mp4 passthrough"),r={demux:l.default,remux:c.default});var y=this.demuxer,E=this.remuxer,S=r.remux,b=r.demux;E&&E instanceof S||(this.remuxer=new S(n,i,s,a)),y&&y instanceof b||(this.demuxer=new b(n,i,s),this.probe=b.probe),this.resetInitSegment(d,o,f,u),this.resetInitialTimestamp(h)},t.needsProbing=function(e,t,r){return!this.demuxer||!this.remuxer||t||r},t.getDecrypter=function(){var e=this.decrypter;return e||(e=this.decrypter=new a.default(this.observer,this.config)),e},e}(),E=function(e){return{remuxResult:{},chunkMeta:e}};function S(e){return"then"in e&&e.then instanceof Function}var b=function(e,t,r,i,n){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=r,this.duration=i,this.defaultInitPts=n},_=function(e,t,r,i,n,s){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=r,this.trackSwitch=i,this.timeOffset=n,this.initSegmentChange=s}},"./src/demux/tsdemuxer.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"discardEPB",(function(){return S}));var i=r("./src/demux/adts.ts"),n=r("./src/demux/mpegaudio.ts"),s=r("./src/demux/exp-golomb.ts"),a=r("./src/demux/id3.ts"),o=r("./src/demux/sample-aes.ts"),l=r("./src/events.ts"),h=r("./src/utils/mp4-tools.ts"),u=r("./src/utils/logger.ts"),d=r("./src/errors.ts"),c={video:1,audio:2,id3:3,text:4},f=function(){function e(e,t,r){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this.aacLastPTS=null,this._initPTS=null,this._initDTS=null,this._pmtId=-1,this._avcTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.observer=e,this.config=t,this.typeSupported=r}e.probe=function(t){var r=e.syncOffset(t);return!(r<0||(r&&u.logger.warn("MPEG2-TS detected but first sync word found @ offset "+r+", junk ahead ?"),0))},e.syncOffset=function(e){for(var t=Math.min(1e3,e.length-564),r=0;r<t;){if(71===e[r]&&71===e[r+188]&&71===e[r+376])return r;r++}return-1},e.createTrack=function(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:c[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}};var t=e.prototype;return t.resetInitSegment=function(t,r,i){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack=e.createTrack("video",i),this._audioTrack=e.createTrack("audio",i),this._id3Track=e.createTrack("id3",i),this._txtTrack=e.createTrack("text",i),this._audioTrack.isAAC=!0,this.aacOverFlow=null,this.aacLastPTS=null,this.avcSample=null,this.audioCodec=t,this.videoCodec=r,this._duration=i},t.resetTimeStamp=function(){},t.resetContiguity=function(){var e=this._audioTrack,t=this._avcTrack,r=this._id3Track;e&&(e.pesData=null),t&&(t.pesData=null),r&&(r.pesData=null),this.aacOverFlow=null,this.aacLastPTS=null},t.demux=function(t,r,i,n){var s;void 0===i&&(i=!1),void 0===n&&(n=!1),i||(this.sampleAes=null);var a=this._avcTrack,o=this._audioTrack,c=this._id3Track,f=a.pid,g=a.pesData,y=o.pid,E=c.pid,S=o.pesData,b=c.pesData,_=!1,T=this.pmtParsed,L=this._pmtId,P=t.length;if(this.remainderData&&(P=(t=Object(h.appendUint8Array)(this.remainderData,t)).length,this.remainderData=null),P<188&&!n)return this.remainderData=t,{audioTrack:o,avcTrack:a,id3Track:c,textTrack:this._txtTrack};var A=Math.max(0,e.syncOffset(t));(P-=(P+A)%188)<t.byteLength&&!n&&(this.remainderData=new Uint8Array(t.buffer,P,t.buffer.byteLength-P));for(var w=0,D=A;D<P;D+=188)if(71===t[D]){var R=!!(64&t[D+1]),I=((31&t[D+1])<<8)+t[D+2],C=void 0;if((48&t[D+3])>>4>1){if((C=D+5+t[D+4])===D+188)continue}else C=D+4;switch(I){case f:R&&(g&&(s=v(g))&&this.parseAVCPES(s,!1),g={data:[],size:0}),g&&(g.data.push(t.subarray(C,D+188)),g.size+=D+188-C);break;case y:R&&(S&&(s=v(S))&&(o.isAAC?this.parseAACPES(s):this.parseMPEGPES(s)),S={data:[],size:0}),S&&(S.data.push(t.subarray(C,D+188)),S.size+=D+188-C);break;case E:R&&(b&&(s=v(b))&&this.parseID3PES(s),b={data:[],size:0}),b&&(b.data.push(t.subarray(C,D+188)),b.size+=D+188-C);break;case 0:R&&(C+=t[C]+1),L=this._pmtId=p(t,C);break;case L:R&&(C+=t[C]+1);var k=m(t,C,!0===this.typeSupported.mpeg||!0===this.typeSupported.mp3,i);(f=k.avc)>0&&(a.pid=f),(y=k.audio)>0&&(o.pid=y,o.isAAC=k.isAAC),(E=k.id3)>0&&(c.pid=E),_&&!T&&(u.logger.log("reparse from beginning"),_=!1,D=A-188),T=this.pmtParsed=!0;break;case 17:case 8191:break;default:_=!0}}else w++;w>0&&this.observer.emit(l.Events.ERROR,l.Events.ERROR,{type:d.ErrorTypes.MEDIA_ERROR,details:d.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"Found "+w+" TS packet/s that do not start with 0x47"}),a.pesData=g,o.pesData=S,c.pesData=b;var x={audioTrack:o,avcTrack:a,id3Track:c,textTrack:this._txtTrack};return n&&this.extractRemainingSamples(x),x},t.flush=function(){var e,t=this.remainderData;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{audioTrack:this._audioTrack,avcTrack:this._avcTrack,textTrack:this._txtTrack,id3Track:this._id3Track},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e},t.extractRemainingSamples=function(e){var t,r=e.audioTrack,i=e.avcTrack,n=e.id3Track,s=i.pesData,a=r.pesData,o=n.pesData;s&&(t=v(s))?(this.parseAVCPES(t,!0),i.pesData=null):i.pesData=s,a&&(t=v(a))?(r.isAAC?this.parseAACPES(t):this.parseMPEGPES(t),r.pesData=null):(null!=a&&a.size&&u.logger.log("last AAC PES packet truncated,might overlap between fragments"),r.pesData=a),o&&(t=v(o))?(this.parseID3PES(t),n.pesData=null):n.pesData=o},t.demuxSampleAes=function(e,t,r){var i=this.demux(e,r,!0,!this.config.progressive),n=this.sampleAes=new o.default(this.observer,this.config,t);return this.decrypt(i,n)},t.decrypt=function(e,t){return new Promise((function(r){var i=e.audioTrack,n=e.avcTrack;i.samples&&i.isAAC?t.decryptAacSamples(i.samples,0,(function(){n.samples?t.decryptAvcSamples(n.samples,0,0,(function(){r(e)})):r(e)})):n.samples&&t.decryptAvcSamples(n.samples,0,0,(function(){r(e)}))}))},t.destroy=function(){this._initPTS=this._initDTS=null,this._duration=0},t.parseAVCPES=function(e,t){var r,i=this,n=this._avcTrack,o=this.parseAVCNALu(e.data),l=this.avcSample,h=!1;e.data=null,l&&o.length&&!n.audFound&&(y(l,n),l=this.avcSample=g(!1,e.pts,e.dts,"")),o.forEach((function(t){switch(t.type){case 1:r=!0,l||(l=i.avcSample=g(!0,e.pts,e.dts,"")),l.frame=!0;var o=t.data;if(h&&o.length>4){var u=new s.default(o).readSliceType();2!==u&&4!==u&&7!==u&&9!==u||(l.key=!0)}break;case 5:r=!0,l||(l=i.avcSample=g(!0,e.pts,e.dts,"")),l.key=!0,l.frame=!0;break;case 6:r=!0;var d=new s.default(S(t.data));d.readUByte();for(var c=0,f=0,p=!1,m=0;!p&&d.bytesAvailable>1;){c=0;do{c+=m=d.readUByte()}while(255===m);f=0;do{f+=m=d.readUByte()}while(255===m);if(4===c&&0!==d.bytesAvailable){if(p=!0,181===d.readUByte()&&49===d.readUShort()&&1195456820===d.readUInt()&&3===d.readUByte()){for(var v=d.readUByte(),b=31&v,_=[v,d.readUByte()],T=0;T<b;T++)_.push(d.readUByte()),_.push(d.readUByte()),_.push(d.readUByte());E(i._txtTrack.samples,{type:3,pts:e.pts,bytes:_})}}else if(5===c&&0!==d.bytesAvailable){if(p=!0,f>16){for(var L=[],P=0;P<16;P++)L.push(d.readUByte().toString(16)),3!==P&&5!==P&&7!==P&&9!==P||L.push("-");for(var A=f-16,w=new Uint8Array(A),D=0;D<A;D++)w[D]=d.readUByte();E(i._txtTrack.samples,{pts:e.pts,payloadType:c,uuid:L.join(""),userData:Object(a.utf8ArrayToStr)(w),userDataBytes:w})}}else if(f<d.bytesAvailable)for(var R=0;R<f;R++)d.readUByte()}break;case 7:if(r=!0,h=!0,!n.sps){var I=new s.default(t.data).readSPS();n.width=I.width,n.height=I.height,n.pixelRatio=I.pixelRatio,n.sps=[t.data],n.duration=i._duration;for(var C=t.data.subarray(1,4),k="avc1.",x=0;x<3;x++){var O=C[x].toString(16);O.length<2&&(O="0"+O),k+=O}n.codec=k}break;case 8:r=!0,n.pps||(n.pps=[t.data]);break;case 9:r=!1,n.audFound=!0,l&&y(l,n),l=i.avcSample=g(!1,e.pts,e.dts,"");break;case 12:r=!1;break;default:r=!1,l&&(l.debug+="unknown NAL "+t.type+" ")}l&&r&&l.units.push(t)})),t&&l&&(y(l,n),this.avcSample=null)},t.getLastNalUnit=function(){var e,t,r=this.avcSample;if(!r||0===r.units.length){var i=this._avcTrack.samples;r=i[i.length-1]}if(null!==(e=r)&&void 0!==e&&e.units){var n=r.units;t=n[n.length-1]}return t},t.parseAVCNALu=function(e){var t,r,i=e.byteLength,n=this._avcTrack,s=n.naluState||0,a=s,o=[],l=0,h=-1,u=0;for(-1===s&&(h=0,u=31&e[0],s=0,l=1);l<i;)if(t=e[l++],s)if(1!==s)if(t)if(1===t){if(h>=0){var d={data:e.subarray(h,l-s-1),type:u};o.push(d)}else{var c=this.getLastNalUnit();if(c&&(a&&l<=4-a&&c.state&&(c.data=c.data.subarray(0,c.data.byteLength-a)),(r=l-s-1)>0)){var f=new Uint8Array(c.data.byteLength+r);f.set(c.data,0),f.set(e.subarray(0,r),c.data.byteLength),c.data=f,c.state=0}}l<i?(h=l,u=31&e[l],s=0):s=-1}else s=0;else s=3;else s=t?0:2;else s=t?0:1;if(h>=0&&s>=0){var g={data:e.subarray(h,i),type:u,state:s};o.push(g)}if(0===o.length){var p=this.getLastNalUnit();if(p){var m=new Uint8Array(p.data.byteLength+e.byteLength);m.set(p.data,0),m.set(e,p.data.byteLength),p.data=m}}return n.naluState=s,o},t.parseAACPES=function(e){var t,r,n,s,a,o=0,h=this._audioTrack,c=this.aacOverFlow,f=e.data;if(c){this.aacOverFlow=null;var g=c.sample.unit.byteLength,p=Math.min(c.missing,g),m=g-p;c.sample.unit.set(f.subarray(0,p),m),h.samples.push(c.sample),o=c.missing}for(t=o,r=f.length;t<r-1&&!i.isHeader(f,t);t++);if(t===o||(t<r-1?(n="AAC PES did not start with ADTS header,offset:"+t,s=!1):(n="no ADTS header found in AAC PES",s=!0),u.logger.warn("parsing error:"+n),this.observer.emit(l.Events.ERROR,l.Events.ERROR,{type:d.ErrorTypes.MEDIA_ERROR,details:d.ErrorDetails.FRAG_PARSING_ERROR,fatal:s,reason:n}),!s)){if(i.initTrackConfig(h,this.observer,f,t,this.audioCodec),void 0!==e.pts)a=e.pts;else{if(!c)return void u.logger.warn("[tsdemuxer]: AAC PES unknown PTS");var v=i.getFrameDuration(h.samplerate);a=c.sample.pts+v}for(var y=0;t<r;){if(i.isHeader(f,t)){if(t+5<r){var E=i.appendFrame(h,f,t,a,y);if(E){if(!E.missing){t+=E.length,y++;continue}this.aacOverFlow=E}}break}t++}}},t.parseMPEGPES=function(e){var t=e.data,r=t.length,i=0,s=0,a=e.pts;if(void 0!==a)for(;s<r;)if(n.isHeader(t,s)){var o=n.appendFrame(this._audioTrack,t,s,a,i);if(!o)break;s+=o.length,i++}else s++;else u.logger.warn("[tsdemuxer]: MPEG PES unknown PTS")},t.parseID3PES=function(e){void 0!==e.pts?this._id3Track.samples.push(e):u.logger.warn("[tsdemuxer]: ID3 PES unknown PTS")},e}();function g(e,t,r,i){return{key:e,frame:!1,pts:t,dts:r,units:[],debug:i,length:0}}function p(e,t){return(31&e[t+10])<<8|e[t+11]}function m(e,t,r,i){var n={audio:-1,avc:-1,id3:-1,isAAC:!0},s=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t<s;){var a=(31&e[t+1])<<8|e[t+2];switch(e[t]){case 207:if(!i){u.logger.log("ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream");break}case 15:-1===n.audio&&(n.audio=a);break;case 21:-1===n.id3&&(n.id3=a);break;case 219:if(!i){u.logger.log("H.264 with AES-128-CBC slice encryption found in unencrypted stream");break}case 27:-1===n.avc&&(n.avc=a);break;case 3:case 4:r?-1===n.audio&&(n.audio=a,n.isAAC=!1):u.logger.log("MPEG audio found, not supported in this browser");break;case 36:u.logger.warn("Unsupported HEVC stream type found")}t+=5+((15&e[t+3])<<8|e[t+4])}return n}function v(e){var t,r,i,n,s,a=0,o=e.data;if(!e||0===e.size)return null;for(;o[0].length<19&&o.length>1;){var l=new Uint8Array(o[0].length+o[1].length);l.set(o[0]),l.set(o[1],o[0].length),o[0]=l,o.splice(1,1)}if(1===((t=o[0])[0]<<16)+(t[1]<<8)+t[2]){if((r=(t[4]<<8)+t[5])&&r>e.size-6)return null;var h=t[7];192&h&&(n=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&h?n-(s=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2)>54e5&&(u.logger.warn(Math.round((n-s)/9e4)+"s delta between PTS and DTS, align them"),n=s):s=n);var d=(i=t[8])+9;if(e.size<=d)return null;e.size-=d;for(var c=new Uint8Array(e.size),f=0,g=o.length;f<g;f++){var p=(t=o[f]).byteLength;if(d){if(d>p){d-=p;continue}t=t.subarray(d),p-=d,d=0}c.set(t,a),a+=p}return r&&(r-=i+3),{data:c,pts:n,dts:s,len:r}}return null}function y(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){var r=t.samples,i=r.length;if(!i)return void t.dropped++;var n=r[i-1];e.pts=n.pts,e.dts=n.dts}t.samples.push(e)}e.debug.length&&u.logger.log(e.pts+"/"+e.dts+":"+e.debug)}function E(e,t){var r=e.length;if(r>0){if(t.pts>=e[r-1].pts)e.push(t);else for(var i=r-1;i>=0;i--)if(t.pts<e[i].pts){e.splice(i,0,t);break}}else e.push(t)}function S(e){for(var t=e.byteLength,r=[],i=1;i<t-2;)0===e[i]&&0===e[i+1]&&3===e[i+2]?(r.push(i+2),i+=2):i++;if(0===r.length)return e;var n=t-r.length,s=new Uint8Array(n),a=0;for(i=0;i<n;a++,i++)a===r[0]&&(a++,r.shift()),s[i]=e[a];return s}f.minProbeByteLength=188,t.default=f},"./src/empty.js":function(e,t){e.exports=void 0},"./src/errors.ts":function(e,t,r){"use strict";var i,n;r.r(t),r.d(t,"ErrorTypes",(function(){return i})),r.d(t,"ErrorDetails",(function(){return n})),function(e){e.NETWORK_ERROR="networkError",e.MEDIA_ERROR="mediaError",e.KEY_SYSTEM_ERROR="keySystemError",e.MUX_ERROR="muxError",e.OTHER_ERROR="otherError"}(i||(i={})),function(e){e.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",e.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",e.KEY_SYSTEM_NO_SESSION="keySystemNoSession",e.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",e.KEY_SYSTEM_NO_INIT_DATA="keySystemNoInitData",e.MANIFEST_LOAD_ERROR="manifestLoadError",e.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",e.MANIFEST_PARSING_ERROR="manifestParsingError",e.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",e.LEVEL_EMPTY_ERROR="levelEmptyError",e.LEVEL_LOAD_ERROR="levelLoadError",e.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",e.LEVEL_SWITCH_ERROR="levelSwitchError",e.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",e.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",e.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",e.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",e.FRAG_LOAD_ERROR="fragLoadError",e.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",e.FRAG_DECRYPT_ERROR="fragDecryptError",e.FRAG_PARSING_ERROR="fragParsingError",e.REMUX_ALLOC_ERROR="remuxAllocError",e.KEY_LOAD_ERROR="keyLoadError",e.KEY_LOAD_TIMEOUT="keyLoadTimeOut",e.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",e.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",e.BUFFER_APPEND_ERROR="bufferAppendError",e.BUFFER_APPENDING_ERROR="bufferAppendingError",e.BUFFER_STALLED_ERROR="bufferStalledError",e.BUFFER_FULL_ERROR="bufferFullError",e.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",e.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",e.INTERNAL_EXCEPTION="internalException",e.INTERNAL_ABORTED="aborted",e.UNKNOWN="unknown"}(n||(n={}))},"./src/events.ts":function(e,t,r){"use strict";var i;r.r(t),r.d(t,"Events",(function(){return i})),function(e){e.MEDIA_ATTACHING="hlsMediaAttaching",e.MEDIA_ATTACHED="hlsMediaAttached",e.MEDIA_DETACHING="hlsMediaDetaching",e.MEDIA_DETACHED="hlsMediaDetached",e.BUFFER_RESET="hlsBufferReset",e.BUFFER_CODECS="hlsBufferCodecs",e.BUFFER_CREATED="hlsBufferCreated",e.BUFFER_APPENDING="hlsBufferAppending",e.BUFFER_APPENDED="hlsBufferAppended",e.BUFFER_EOS="hlsBufferEos",e.BUFFER_FLUSHING="hlsBufferFlushing",e.BUFFER_FLUSHED="hlsBufferFlushed",e.MANIFEST_LOADING="hlsManifestLoading",e.MANIFEST_LOADED="hlsManifestLoaded",e.MANIFEST_PARSED="hlsManifestParsed",e.LEVEL_SWITCHING="hlsLevelSwitching",e.LEVEL_SWITCHED="hlsLevelSwitched",e.LEVEL_LOADING="hlsLevelLoading",e.LEVEL_LOADED="hlsLevelLoaded",e.LEVEL_UPDATED="hlsLevelUpdated",e.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",e.LEVELS_UPDATED="hlsLevelsUpdated",e.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",e.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",e.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",e.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",e.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",e.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",e.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",e.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",e.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",e.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",e.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",e.CUES_PARSED="hlsCuesParsed",e.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",e.INIT_PTS_FOUND="hlsInitPtsFound",e.FRAG_LOADING="hlsFragLoading",e.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",e.FRAG_LOADED="hlsFragLoaded",e.FRAG_DECRYPTED="hlsFragDecrypted",e.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",e.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",e.FRAG_PARSING_METADATA="hlsFragParsingMetadata",e.FRAG_PARSED="hlsFragParsed",e.FRAG_BUFFERED="hlsFragBuffered",e.FRAG_CHANGED="hlsFragChanged",e.FPS_DROP="hlsFpsDrop",e.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",e.ERROR="hlsError",e.DESTROYING="hlsDestroying",e.KEY_LOADING="hlsKeyLoading",e.KEY_LOADED="hlsKeyLoaded",e.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",e.BACK_BUFFER_REACHED="hlsBackBufferReached"}(i||(i={}))},"./src/hls.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return y}));var i=r("./node_modules/url-toolkit/src/url-toolkit.js"),n=r("./src/loader/playlist-loader.ts"),s=r("./src/loader/key-loader.ts"),a=r("./src/controller/id3-track-controller.ts"),o=r("./src/controller/latency-controller.ts"),l=r("./src/controller/level-controller.ts"),h=r("./src/controller/fragment-tracker.ts"),u=r("./src/controller/stream-controller.ts"),d=r("./src/is-supported.ts"),c=r("./src/utils/logger.ts"),f=r("./src/config.ts"),g=r("./node_modules/eventemitter3/index.js"),p=r("./src/events.ts"),m=r("./src/errors.ts");function v(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var y=function(){function e(t){void 0===t&&(t={}),this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new g.EventEmitter,this._autoLevelCapping=void 0,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null;var r=this.config=Object(f.mergeConfig)(e.DefaultConfig,t);this.userConfig=t,Object(c.enableLogs)(r.debug),this._autoLevelCapping=-1,r.progressive&&Object(f.enableStreamingMode)(r);var i=r.abrController,d=r.bufferController,p=r.capLevelController,m=r.fpsController,v=this.abrController=new i(this),y=this.bufferController=new d(this),E=this.capLevelController=new p(this),S=new m(this),b=new n.default(this),_=new s.default(this),T=new a.default(this),L=this.levelController=new l.default(this),P=new h.FragmentTracker(this),A=this.streamController=new u.default(this,P);E.setStreamController(A),S.setStreamController(A);var w=[L,A];this.networkControllers=w;var D=[b,_,v,y,E,S,T,P];this.audioTrackController=this.createController(r.audioTrackController,null,w),this.createController(r.audioStreamController,P,w),this.subtitleTrackController=this.createController(r.subtitleTrackController,null,w),this.createController(r.subtitleStreamController,P,w),this.createController(r.timelineController,null,D),this.emeController=this.createController(r.emeController,null,D),this.cmcdController=this.createController(r.cmcdController,null,D),this.latencyController=this.createController(o.default,null,D),this.coreComponents=D}e.isSupported=function(){return Object(d.isSupported)()};var t,r,y,E=e.prototype;return E.createController=function(e,t,r){if(e){var i=t?new e(this,t):new e(this);return r&&r.push(i),i}return null},E.on=function(e,t,r){void 0===r&&(r=this),this._emitter.on(e,t,r)},E.once=function(e,t,r){void 0===r&&(r=this),this._emitter.once(e,t,r)},E.removeAllListeners=function(e){this._emitter.removeAllListeners(e)},E.off=function(e,t,r,i){void 0===r&&(r=this),this._emitter.off(e,t,r,i)},E.listeners=function(e){return this._emitter.listeners(e)},E.emit=function(e,t,r){return this._emitter.emit(e,t,r)},E.trigger=function(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){c.logger.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),this.trigger(p.Events.ERROR,{type:m.ErrorTypes.OTHER_ERROR,details:m.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:e,error:t})}return!1},E.listenerCount=function(e){return this._emitter.listenerCount(e)},E.destroy=function(){c.logger.log("destroy"),this.trigger(p.Events.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((function(e){return e.destroy()})),this.networkControllers.length=0,this.coreComponents.forEach((function(e){return e.destroy()})),this.coreComponents.length=0},E.attachMedia=function(e){c.logger.log("attachMedia"),this._media=e,this.trigger(p.Events.MEDIA_ATTACHING,{media:e})},E.detachMedia=function(){c.logger.log("detachMedia"),this.trigger(p.Events.MEDIA_DETACHING,void 0),this._media=null},E.loadSource=function(e){this.stopLoad();var t=this.media,r=this.url,n=this.url=i.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});c.logger.log("loadSource:"+n),t&&r&&r!==n&&this.bufferController.hasSourceTypes()&&(this.detachMedia(),this.attachMedia(t)),this.trigger(p.Events.MANIFEST_LOADING,{url:e})},E.startLoad=function(e){void 0===e&&(e=-1),c.logger.log("startLoad("+e+")"),this.networkControllers.forEach((function(t){t.startLoad(e)}))},E.stopLoad=function(){c.logger.log("stopLoad"),this.networkControllers.forEach((function(e){e.stopLoad()}))},E.swapAudioCodec=function(){c.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()},E.recoverMediaError=function(){c.logger.log("recoverMediaError");var e=this._media;this.detachMedia(),e&&this.attachMedia(e)},E.removeLevel=function(e,t){void 0===t&&(t=0),this.levelController.removeLevel(e,t)},t=e,y=[{key:"version",get:function(){return"1.1.5"}},{key:"Events",get:function(){return p.Events}},{key:"ErrorTypes",get:function(){return m.ErrorTypes}},{key:"ErrorDetails",get:function(){return m.ErrorDetails}},{key:"DefaultConfig",get:function(){return e.defaultConfig?e.defaultConfig:f.hlsDefaultConfig},set:function(t){e.defaultConfig=t}}],(r=[{key:"levels",get:function(){var e=this.levelController.levels;return e||[]}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(e){c.logger.log("set currentLevel:"+e),this.loadLevel=e,this.abrController.clearTimer(),this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(e){c.logger.log("set nextLevel:"+e),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(e){c.logger.log("set loadLevel:"+e),this.levelController.manualLevel=e}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(e){c.logger.log("set firstLevel:"+e),this.levelController.firstLevel=e}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(e){c.logger.log("set startLevel:"+e),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}},{key:"capLevelToPlayerSize",get:function(){return this.config.capLevelToPlayerSize},set:function(e){var t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){this._autoLevelCapping!==e&&(c.logger.log("set autoLevelCapping:"+e),this._autoLevelCapping=e)}},{key:"bandwidthEstimate",get:function(){var e=this.abrController.bwEstimator;return e?e.getEstimate():NaN}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){var e=this.levels,t=this.config.minAutoBitrate;if(!e)return 0;for(var r=e.length,i=0;i<r;i++)if(e[i].maxBitrate>t)return i;return 0}},{key:"maxAutoLevel",get:function(){var e=this.levels,t=this.autoLevelCapping;return-1===t&&e&&e.length?e.length-1:t}},{key:"nextAutoLevel",get:function(){return Math.min(Math.max(this.abrController.nextAutoLevel,this.minAutoLevel),this.maxAutoLevel)},set:function(e){this.abrController.nextAutoLevel=Math.max(this.minAutoLevel,e)}},{key:"audioTracks",get:function(){var e=this.audioTrackController;return e?e.audioTracks:[]}},{key:"audioTrack",get:function(){var e=this.audioTrackController;return e?e.audioTrack:-1},set:function(e){var t=this.audioTrackController;t&&(t.audioTrack=e)}},{key:"subtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTrack:-1},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}},{key:"media",get:function(){return this._media}},{key:"subtitleDisplay",get:function(){var e=this.subtitleTrackController;return!!e&&e.subtitleDisplay},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}},{key:"lowLatencyMode",get:function(){return this.config.lowLatencyMode},set:function(e){this.config.lowLatencyMode=e}},{key:"liveSyncPosition",get:function(){return this.latencyController.liveSyncPosition}},{key:"latency",get:function(){return this.latencyController.latency}},{key:"maxLatency",get:function(){return this.latencyController.maxLatency}},{key:"targetLatency",get:function(){return this.latencyController.targetLatency}},{key:"drift",get:function(){return this.latencyController.drift}},{key:"forceStartLoad",get:function(){return this.streamController.forceStartLoad}}])&&v(t.prototype,r),y&&v(t,y),e}();y.defaultConfig=void 0},"./src/is-supported.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"isSupported",(function(){return s})),r.d(t,"changeTypeSupported",(function(){return a}));var i=r("./src/utils/mediasource-helper.ts");function n(){return self.SourceBuffer||self.WebKitSourceBuffer}function s(){var e=Object(i.getMediaSource)();if(!e)return!1;var t=n(),r=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),s=!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove;return!!r&&!!s}function a(){var e,t=n();return"function"==typeof(null==t||null===(e=t.prototype)||void 0===e?void 0:e.changeType)}},"./src/loader/fragment-loader.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return d})),r.d(t,"LoadError",(function(){return f}));var i=r("./src/polyfills/number.ts"),n=r("./src/errors.ts");function s(e){var t="function"==typeof Map?new Map:void 0;return s=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return a(e,arguments,h(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),l(i,e)},s(e)}function a(e,t,r){return a=o()?Reflect.construct:function(e,t,r){var i=[null];i.push.apply(i,t);var n=new(Function.bind.apply(e,i));return r&&l(n,r.prototype),n},a.apply(null,arguments)}function o(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function l(e,t){return l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},l(e,t)}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}var u=Math.pow(2,17),d=function(){function e(e){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=e}var t=e.prototype;return t.destroy=function(){this.loader&&(this.loader.destroy(),this.loader=null)},t.abort=function(){this.loader&&this.loader.abort()},t.load=function(e,t){var r=this,i=e.url;if(!i)return Promise.reject(new f({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,networkDetails:null},"Fragment does not have a "+(i?"part list":"url")));this.abort();var s=this.config,a=s.fLoader,o=s.loader;return new Promise((function(i,l){r.loader&&r.loader.destroy();var h=r.loader=e.loader=a?new a(s):new o(s),d=c(e),g={timeout:s.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:s.fragLoadingMaxRetryTimeout,highWaterMark:u};e.stats=h.stats,h.load(d,g,{onSuccess:function(t,n,s,a){r.resetLoader(e,h),i({frag:e,part:null,payload:t.data,networkDetails:a})},onError:function(t,i,s){r.resetLoader(e,h),l(new f({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:t,networkDetails:s}))},onAbort:function(t,i,s){r.resetLoader(e,h),l(new f({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,networkDetails:s}))},onTimeout:function(t,i,s){r.resetLoader(e,h),l(new f({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,networkDetails:s}))},onProgress:function(r,i,n,s){t&&t({frag:e,part:null,payload:n,networkDetails:s})}})}))},t.loadPart=function(e,t,r){var i=this;this.abort();var s=this.config,a=s.fLoader,o=s.loader;return new Promise((function(l,h){i.loader&&i.loader.destroy();var d=i.loader=e.loader=a?new a(s):new o(s),g=c(e,t),p={timeout:s.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:s.fragLoadingMaxRetryTimeout,highWaterMark:u};t.stats=d.stats,d.load(g,p,{onSuccess:function(n,s,a,o){i.resetLoader(e,d),i.updateStatsFromPart(e,t);var h={frag:e,part:t,payload:n.data,networkDetails:o};r(h),l(h)},onError:function(r,s,a){i.resetLoader(e,d),h(new f({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:r,networkDetails:a}))},onAbort:function(r,s,a){e.stats.aborted=t.stats.aborted,i.resetLoader(e,d),h(new f({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,networkDetails:a}))},onTimeout:function(r,s,a){i.resetLoader(e,d),h(new f({type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,networkDetails:a}))}})}))},t.updateStatsFromPart=function(e,t){var r=e.stats,i=t.stats,n=i.total;if(r.loaded+=i.loaded,n){var s=Math.round(e.duration/t.duration),a=Math.min(Math.round(r.loaded/n),s),o=(s-a)*Math.round(r.loaded/a);r.total=r.loaded+o}else r.total=Math.max(r.loaded,r.total);var l=r.loading,h=i.loading;l.start?l.first+=h.first-h.start:(l.start=h.start,l.first=h.first),l.end=h.end},t.resetLoader=function(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()},e}();function c(e,t){void 0===t&&(t=null);var r=t||e,n={frag:e,part:t,responseType:"arraybuffer",url:r.url,headers:{},rangeStart:0,rangeEnd:0},s=r.byteRangeStartOffset,a=r.byteRangeEndOffset;return Object(i.isFiniteNumber)(s)&&Object(i.isFiniteNumber)(a)&&(n.rangeStart=s,n.rangeEnd=a),n}var f=function(e){var t,r;function i(t){for(var r,i=arguments.length,n=new Array(i>1?i-1:0),s=1;s<i;s++)n[s-1]=arguments[s];return(r=e.call.apply(e,[this].concat(n))||this).data=void 0,r.data=t,r}return r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,l(t,r),i}(s(Error))},"./src/loader/fragment.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"ElementaryStreamTypes",(function(){return i})),r.d(t,"BaseSegment",(function(){return f})),r.d(t,"Fragment",(function(){return g})),r.d(t,"Part",(function(){return p}));var i,n=r("./src/polyfills/number.ts"),s=r("./node_modules/url-toolkit/src/url-toolkit.js"),a=r("./src/utils/logger.ts"),o=r("./src/loader/level-key.ts"),l=r("./src/loader/load-stats.ts");function h(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,u(e,t)}function u(e,t){return u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},u(e,t)}function d(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function c(e,t,r){return t&&d(e.prototype,t),r&&d(e,r),e}!function(e){e.AUDIO="audio",e.VIDEO="video",e.AUDIOVIDEO="audiovideo"}(i||(i={}));var f=function(){function e(e){var t;this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams=((t={})[i.AUDIO]=null,t[i.VIDEO]=null,t[i.AUDIOVIDEO]=null,t),this.baseurl=e}return e.prototype.setByteRange=function(e,t){var r=e.split("@",2),i=[];1===r.length?i[0]=t?t.byteRangeEndOffset:0:i[0]=parseInt(r[1]),i[1]=parseInt(r[0])+i[0],this._byteRange=i},c(e,[{key:"byteRange",get:function(){return this._byteRange?this._byteRange:[]}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"url",get:function(){return!this._url&&this.baseurl&&this.relurl&&(this._url=Object(s.buildAbsoluteURL)(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""},set:function(e){this._url=e}}]),e}(),g=function(e){function t(t,r){var i;return(i=e.call(this,r)||this)._decryptdata=null,i.rawProgramDateTime=null,i.programDateTime=null,i.tagList=[],i.duration=0,i.sn=0,i.levelkey=void 0,i.type=void 0,i.loader=null,i.level=-1,i.cc=0,i.startPTS=void 0,i.endPTS=void 0,i.appendedPTS=void 0,i.startDTS=void 0,i.endDTS=void 0,i.start=0,i.deltaPTS=void 0,i.maxStartPTS=void 0,i.minEndPTS=void 0,i.stats=new l.LoadStats,i.urlId=0,i.data=void 0,i.bitrateTest=!1,i.title=null,i.initSegment=null,i.type=t,i}h(t,e);var r=t.prototype;return r.createInitializationVector=function(e){for(var t=new Uint8Array(16),r=12;r<16;r++)t[r]=e>>8*(15-r)&255;return t},r.setDecryptDataFromLevelKey=function(e,t){var r=e;return"AES-128"===(null==e?void 0:e.method)&&e.uri&&!e.iv&&((r=o.LevelKey.fromURI(e.uri)).method=e.method,r.iv=this.createInitializationVector(t),r.keyFormat="identity"),r},r.setElementaryStreamInfo=function(e,t,r,i,n,s){void 0===s&&(s=!1);var a=this.elementaryStreams,o=a[e];o?(o.startPTS=Math.min(o.startPTS,t),o.endPTS=Math.max(o.endPTS,r),o.startDTS=Math.min(o.startDTS,i),o.endDTS=Math.max(o.endDTS,n)):a[e]={startPTS:t,endPTS:r,startDTS:i,endDTS:n,partial:s}},r.clearElementaryStreamInfo=function(){var e=this.elementaryStreams;e[i.AUDIO]=null,e[i.VIDEO]=null,e[i.AUDIOVIDEO]=null},c(t,[{key:"decryptdata",get:function(){if(!this.levelkey&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkey){var e=this.sn;"number"!=typeof e&&(this.levelkey&&"AES-128"===this.levelkey.method&&!this.levelkey.iv&&a.logger.warn('missing IV for initialization segment with method="'+this.levelkey.method+'" - compliance issue'),e=0),this._decryptdata=this.setDecryptDataFromLevelKey(this.levelkey,e)}return this._decryptdata}},{key:"end",get:function(){return this.start+this.duration}},{key:"endProgramDateTime",get:function(){if(null===this.programDateTime)return null;if(!Object(n.isFiniteNumber)(this.programDateTime))return null;var e=Object(n.isFiniteNumber)(this.duration)?this.duration:0;return this.programDateTime+1e3*e}},{key:"encrypted",get:function(){var e;return!(null===(e=this.decryptdata)||void 0===e||!e.keyFormat||!this.decryptdata.uri)}}]),t}(f),p=function(e){function t(t,r,i,n,s){var a;(a=e.call(this,i)||this).fragOffset=0,a.duration=0,a.gap=!1,a.independent=!1,a.relurl=void 0,a.fragment=void 0,a.index=void 0,a.stats=new l.LoadStats,a.duration=t.decimalFloatingPoint("DURATION"),a.gap=t.bool("GAP"),a.independent=t.bool("INDEPENDENT"),a.relurl=t.enumeratedString("URI"),a.fragment=r,a.index=n;var o=t.enumeratedString("BYTERANGE");return o&&a.setByteRange(o,s),s&&(a.fragOffset=s.fragOffset+s.duration),a}return h(t,e),c(t,[{key:"start",get:function(){return this.fragment.start+this.fragOffset}},{key:"end",get:function(){return this.start+this.duration}},{key:"loaded",get:function(){var e=this.elementaryStreams;return!!(e.audio||e.video||e.audiovideo)}}]),t}(f)},"./src/loader/key-loader.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return a}));var i=r("./src/events.ts"),n=r("./src/errors.ts"),s=r("./src/utils/logger.ts"),a=function(){function e(e){this.hls=void 0,this.loaders={},this.decryptkey=null,this.decrypturl=null,this.hls=e,this._registerListeners()}var t=e.prototype;return t._registerListeners=function(){this.hls.on(i.Events.KEY_LOADING,this.onKeyLoading,this)},t._unregisterListeners=function(){this.hls.off(i.Events.KEY_LOADING,this.onKeyLoading)},t.destroy=function(){for(var e in this._unregisterListeners(),this.loaders){var t=this.loaders[e];t&&t.destroy()}this.loaders={}},t.onKeyLoading=function(e,t){var r=t.frag,n=r.type,a=this.loaders[n];if(r.decryptdata){var o=r.decryptdata.uri;if(o!==this.decrypturl||null===this.decryptkey){var l=this.hls.config;if(a&&(s.logger.warn("abort previous key loader for type:"+n),a.abort()),!o)return void s.logger.warn("key uri is falsy");var h=l.loader,u=r.loader=this.loaders[n]=new h(l);this.decrypturl=o,this.decryptkey=null;var d={url:o,frag:r,responseType:"arraybuffer"},c={timeout:l.fragLoadingTimeOut,maxRetry:0,retryDelay:l.fragLoadingRetryDelay,maxRetryDelay:l.fragLoadingMaxRetryTimeout,highWaterMark:0},f={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};u.load(d,c,f)}else this.decryptkey&&(r.decryptdata.key=this.decryptkey,this.hls.trigger(i.Events.KEY_LOADED,{frag:r}))}else s.logger.warn("Missing decryption data on fragment in onKeyLoading")},t.loadsuccess=function(e,t,r){var n=r.frag;n.decryptdata?(this.decryptkey=n.decryptdata.key=new Uint8Array(e.data),n.loader=null,delete this.loaders[n.type],this.hls.trigger(i.Events.KEY_LOADED,{frag:n})):s.logger.error("after key load, decryptdata unset")},t.loaderror=function(e,t){var r=t.frag,s=r.loader;s&&s.abort(),delete this.loaders[r.type],this.hls.trigger(i.Events.ERROR,{type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.KEY_LOAD_ERROR,fatal:!1,frag:r,response:e})},t.loadtimeout=function(e,t){var r=t.frag,s=r.loader;s&&s.abort(),delete this.loaders[r.type],this.hls.trigger(i.Events.ERROR,{type:n.ErrorTypes.NETWORK_ERROR,details:n.ErrorDetails.KEY_LOAD_TIMEOUT,fatal:!1,frag:r})},e}()},"./src/loader/level-details.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"LevelDetails",(function(){return s}));var i=r("./src/polyfills/number.ts");function n(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var s=function(){function e(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.needSidxRanges=!1,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.fragments=[],this.url=e}var t,r,s;return e.prototype.reloaded=function(e){if(!e)return this.advanced=!0,void(this.updated=!0);var t=this.lastPartSn-e.lastPartSn,r=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!r||!!t,this.advanced=this.endSN>e.endSN||t>0||0===t&&r>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay},t=e,(r=[{key:"hasProgramDateTime",get:function(){return!!this.fragments.length&&Object(i.isFiniteNumber)(this.fragments[this.fragments.length-1].programDateTime)}},{key:"levelTargetDuration",get:function(){return this.averagetargetduration||this.targetduration||10}},{key:"drift",get:function(){var e=this.driftEndTime-this.driftStartTime;return e>0?1e3*(this.driftEnd-this.driftStart)/e:1}},{key:"edge",get:function(){return this.partEnd||this.fragmentEnd}},{key:"partEnd",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}},{key:"fragmentEnd",get:function(){var e;return null!==(e=this.fragments)&&void 0!==e&&e.length?this.fragments[this.fragments.length-1].end:0}},{key:"age",get:function(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}},{key:"lastPartIndex",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].index:-1}},{key:"lastPartSn",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}])&&n(t.prototype,r),s&&n(t,s),e}()},"./src/loader/level-key.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"LevelKey",(function(){return s}));var i=r("./node_modules/url-toolkit/src/url-toolkit.js");function n(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var s=function(){function e(e,t){this._uri=null,this.method=null,this.keyFormat=null,this.keyFormatVersions=null,this.keyID=null,this.key=null,this.iv=null,this._uri=t?Object(i.buildAbsoluteURL)(e,t,{alwaysNormalize:!0}):e}var t,r,s;return e.fromURL=function(t,r){return new e(t,r)},e.fromURI=function(t){return new e(t)},t=e,(r=[{key:"uri",get:function(){return this._uri}}])&&n(t.prototype,r),s&&n(t,s),e}()},"./src/loader/load-stats.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"LoadStats",(function(){return i}));var i=function(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}},"./src/loader/m3u8-parser.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return m}));var i=r("./src/polyfills/number.ts"),n=r("./node_modules/url-toolkit/src/url-toolkit.js"),s=r("./src/loader/fragment.ts"),a=r("./src/loader/level-details.ts"),o=r("./src/loader/level-key.ts"),l=r("./src/utils/attr-list.ts"),h=r("./src/utils/logger.ts"),u=r("./src/utils/codecs.ts"),d=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-SESSION-DATA:([^\r\n]*)[\r\n]+/g,c=/#EXT-X-MEDIA:(.*)/g,f=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[\S ]*)/.source,/#EXT-X-BYTERANGE:*(.+)/.source,/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/#.*/.source].join("|"),"g"),g=new RegExp([/#(EXTM3U)/.source,/#EXT-X-(PLAYLIST-TYPE):(.+)/.source,/#EXT-X-(MEDIA-SEQUENCE): *(\d+)/.source,/#EXT-X-(SKIP):(.+)/.source,/#EXT-X-(TARGETDURATION): *(\d+)/.source,/#EXT-X-(KEY):(.+)/.source,/#EXT-X-(START):(.+)/.source,/#EXT-X-(ENDLIST)/.source,/#EXT-X-(DISCONTINUITY-SEQ)UENCE: *(\d+)/.source,/#EXT-X-(DIS)CONTINUITY/.source,/#EXT-X-(VERSION):(\d+)/.source,/#EXT-X-(MAP):(.+)/.source,/#EXT-X-(SERVER-CONTROL):(.+)/.source,/#EXT-X-(PART-INF):(.+)/.source,/#EXT-X-(GAP)/.source,/#EXT-X-(BITRATE):\s*(\d+)/.source,/#EXT-X-(PART):(.+)/.source,/#EXT-X-(PRELOAD-HINT):(.+)/.source,/#EXT-X-(RENDITION-REPORT):(.+)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|")),p=/\.(mp4|m4s|m4v|m4a)$/i,m=function(){function e(){}return e.findGroup=function(e,t){for(var r=0;r<e.length;r++){var i=e[r];if(i.id===t)return i}},e.convertAVC1ToAVCOTI=function(e){var t=e.split(".");if(t.length>2){var r=t.shift()+".";return r+=parseInt(t.shift()).toString(16),r+=("000"+parseInt(t.shift()).toString(16)).substr(-4)}return e},e.resolve=function(e,t){return n.buildAbsoluteURL(t,e,{alwaysNormalize:!0})},e.parseMasterPlaylist=function(t,r){var i,n=[],s={},a=!1;for(d.lastIndex=0;null!=(i=d.exec(t));)if(i[1]){var o=new l.AttrList(i[1]),h={attrs:o,bitrate:o.decimalInteger("AVERAGE-BANDWIDTH")||o.decimalInteger("BANDWIDTH"),name:o.NAME,url:e.resolve(i[2],r)},u=o.decimalResolution("RESOLUTION");u&&(h.width=u.width,h.height=u.height),v((o.CODECS||"").split(/[ ,]+/).filter((function(e){return e})),h),h.videoCodec&&-1!==h.videoCodec.indexOf("avc1")&&(h.videoCodec=e.convertAVC1ToAVCOTI(h.videoCodec)),n.push(h)}else if(i[3]){var c=new l.AttrList(i[3]);c["DATA-ID"]&&(a=!0,s[c["DATA-ID"]]=c)}return{levels:n,sessionData:a?s:null}},e.parseMasterPlaylistMedia=function(t,r,i,n){var s;void 0===n&&(n=[]);var a=[],o=0;for(c.lastIndex=0;null!==(s=c.exec(t));){var h=new l.AttrList(s[1]);if(h.TYPE===i){var u={attrs:h,bitrate:0,id:o++,groupId:h["GROUP-ID"],instreamId:h["INSTREAM-ID"],name:h.NAME||h.LANGUAGE||"",type:i,default:h.bool("DEFAULT"),autoselect:h.bool("AUTOSELECT"),forced:h.bool("FORCED"),lang:h.LANGUAGE,url:h.URI?e.resolve(h.URI,r):""};if(n.length){var d=e.findGroup(n,u.groupId)||n[0];y(u,d,"audioCodec"),y(u,d,"textCodec")}a.push(u)}}return a},e.parseLevelPlaylist=function(e,t,r,u,d){var c,m,v,y=new a.LevelDetails(t),S=y.fragments,b=null,_=0,T=0,L=0,P=0,A=null,w=new s.Fragment(u,t),D=-1,R=!1;for(f.lastIndex=0,y.m3u8=e;null!==(c=f.exec(e));){R&&(R=!1,(w=new s.Fragment(u,t)).start=L,w.sn=_,w.cc=P,w.level=r,b&&(w.initSegment=b,w.rawProgramDateTime=b.rawProgramDateTime));var I=c[1];if(I){w.duration=parseFloat(I);var C=(" "+c[2]).slice(1);w.title=C||null,w.tagList.push(C?["INF",I,C]:["INF",I])}else if(c[3])Object(i.isFiniteNumber)(w.duration)&&(w.start=L,v&&(w.levelkey=v),w.sn=_,w.level=r,w.cc=P,w.urlId=d,S.push(w),w.relurl=(" "+c[3]).slice(1),E(w,A),A=w,L+=w.duration,_++,T=0,R=!0);else if(c[4]){var k=(" "+c[4]).slice(1);A?w.setByteRange(k,A):w.setByteRange(k)}else if(c[5])w.rawProgramDateTime=(" "+c[5]).slice(1),w.tagList.push(["PROGRAM-DATE-TIME",w.rawProgramDateTime]),-1===D&&(D=S.length);else{if(!(c=c[0].match(g))){h.logger.warn("No matches on slow regex match for level playlist!");continue}for(m=1;m<c.length&&void 0===c[m];m++);var x=(" "+c[m]).slice(1),O=(" "+c[m+1]).slice(1),M=c[m+2]?(" "+c[m+2]).slice(1):"";switch(x){case"PLAYLIST-TYPE":y.type=O.toUpperCase();break;case"MEDIA-SEQUENCE":_=y.startSN=parseInt(O);break;case"SKIP":var N=new l.AttrList(O),F=N.decimalInteger("SKIPPED-SEGMENTS");if(Object(i.isFiniteNumber)(F)){y.skippedSegments=F;for(var B=F;B--;)S.unshift(null);_+=F}var U=N.enumeratedString("RECENTLY-REMOVED-DATERANGES");U&&(y.recentlyRemovedDateranges=U.split("\t"));break;case"TARGETDURATION":y.targetduration=parseFloat(O);break;case"VERSION":y.version=parseInt(O);break;case"EXTM3U":break;case"ENDLIST":y.live=!1;break;case"#":(O||M)&&w.tagList.push(M?[O,M]:[O]);break;case"DIS":P++;case"GAP":w.tagList.push([x]);break;case"BITRATE":w.tagList.push([x,O]);break;case"DISCONTINUITY-SEQ":P=parseInt(O);break;case"KEY":var G,j=new l.AttrList(O),H=j.enumeratedString("METHOD"),$=j.URI,W=j.hexadecimalInteger("IV"),q=j.enumeratedString("KEYFORMATVERSIONS"),V=j.enumeratedString("KEYID"),z=null!=(G=j.enumeratedString("KEYFORMAT"))?G:"identity";if(["com.apple.streamingkeydelivery","com.microsoft.playready","urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed","com.widevine"].indexOf(z)>-1){h.logger.warn("Keyformat "+z+" is not supported from the manifest");continue}if("identity"!==z)continue;H&&(v=o.LevelKey.fromURL(t,$),$&&["AES-128","SAMPLE-AES","SAMPLE-AES-CENC"].indexOf(H)>=0&&(v.method=H,v.keyFormat=z,V&&(v.keyID=V),q&&(v.keyFormatVersions=q),v.iv=W));break;case"START":var K=new l.AttrList(O).decimalFloatingPoint("TIME-OFFSET");Object(i.isFiniteNumber)(K)&&(y.startTimeOffset=K);break;case"MAP":var Y=new l.AttrList(O);w.relurl=Y.URI,Y.BYTERANGE&&w.setByteRange(Y.BYTERANGE),w.level=r,w.sn="initSegment",v&&(w.levelkey=v),w.initSegment=null,b=w,R=!0;break;case"SERVER-CONTROL":var X=new l.AttrList(O);y.canBlockReload=X.bool("CAN-BLOCK-RELOAD"),y.canSkipUntil=X.optionalFloat("CAN-SKIP-UNTIL",0),y.canSkipDateRanges=y.canSkipUntil>0&&X.bool("CAN-SKIP-DATERANGES"),y.partHoldBack=X.optionalFloat("PART-HOLD-BACK",0),y.holdBack=X.optionalFloat("HOLD-BACK",0);break;case"PART-INF":var Q=new l.AttrList(O);y.partTarget=Q.decimalFloatingPoint("PART-TARGET");break;case"PART":var J=y.partList;J||(J=y.partList=[]);var Z=T>0?J[J.length-1]:void 0,ee=T++,te=new s.Part(new l.AttrList(O),w,t,ee,Z);J.push(te),w.duration+=te.duration;break;case"PRELOAD-HINT":var re=new l.AttrList(O);y.preloadHint=re;break;case"RENDITION-REPORT":var ie=new l.AttrList(O);y.renditionReports=y.renditionReports||[],y.renditionReports.push(ie);break;default:h.logger.warn("line parsed but not handled: "+c)}}}A&&!A.relurl?(S.pop(),L-=A.duration,y.partList&&(y.fragmentHint=A)):y.partList&&(E(w,A),w.cc=P,y.fragmentHint=w);var ne=S.length,se=S[0],ae=S[ne-1];if((L+=y.skippedSegments*y.targetduration)>0&&ne&&ae){y.averagetargetduration=L/ne;var oe=ae.sn;y.endSN="initSegment"!==oe?oe:0,se&&(y.startCC=se.cc,se.initSegment||y.fragments.every((function(e){return e.relurl&&(t=e.relurl,p.test(null!=(r=null===(i=n.parseURL(t))||void 0===i?void 0:i.path)?r:""));var t,r,i}))&&(h.logger.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"),(w=new s.Fragment(u,t)).relurl=ae.relurl,w.level=r,w.sn="initSegment",se.initSegment=w,y.needSidxRanges=!0))}else y.endSN=0,y.startCC=0;return y.fragmentHint&&(L+=y.fragmentHint.duration),y.totalduration=L,y.endCC=P,D>0&&function(e,t){for(var r=e[t],i=t;i--;){var n=e[i];if(!n)return;n.programDateTime=r.programDateTime-1e3*n.duration,r=n}}(S,D),y},e}();function v(e,t){["video","audio","text"].forEach((function(r){var i=e.filter((function(e){return Object(u.isCodecType)(e,r)}));if(i.length){var n=i.filter((function(e){return 0===e.lastIndexOf("avc1",0)||0===e.lastIndexOf("mp4a",0)}));t[r+"Codec"]=n.length>0?n[0]:i[0],e=e.filter((function(e){return-1===i.indexOf(e)}))}})),t.unknownCodecs=e}function y(e,t,r){var i=t[r];i&&(e[r]=i)}function E(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Object(i.isFiniteNumber)(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}},"./src/loader/playlist-loader.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/polyfills/number.ts"),n=r("./src/events.ts"),s=r("./src/errors.ts"),a=r("./src/utils/logger.ts"),o=r("./src/utils/mp4-tools.ts"),l=r("./src/loader/m3u8-parser.ts"),h=r("./src/types/loader.ts"),u=r("./src/utils/attr-list.ts");function d(e,t){var r=e.url;return void 0!==r&&0!==r.indexOf("data:")||(r=t.url),r}var c=function(){function e(e){this.hls=void 0,this.loaders=Object.create(null),this.hls=e,this.registerListeners()}var t=e.prototype;return t.registerListeners=function(){var e=this.hls;e.on(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(n.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(n.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(n.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.unregisterListeners=function(){var e=this.hls;e.off(n.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(n.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(n.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(n.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.createInternalLoader=function(e){var t=this.hls.config,r=t.pLoader,i=t.loader,n=new(r||i)(t);return e.loader=n,this.loaders[e.type]=n,n},t.getInternalLoader=function(e){return this.loaders[e.type]},t.resetInternalLoader=function(e){this.loaders[e]&&delete this.loaders[e]},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}},t.destroy=function(){this.unregisterListeners(),this.destroyInternalLoaders()},t.onManifestLoading=function(e,t){var r=t.url;this.load({id:null,groupId:null,level:0,responseType:"text",type:h.PlaylistContextType.MANIFEST,url:r,deliveryDirectives:null})},t.onLevelLoading=function(e,t){var r=t.id,i=t.level,n=t.url,s=t.deliveryDirectives;this.load({id:r,groupId:null,level:i,responseType:"text",type:h.PlaylistContextType.LEVEL,url:n,deliveryDirectives:s})},t.onAudioTrackLoading=function(e,t){var r=t.id,i=t.groupId,n=t.url,s=t.deliveryDirectives;this.load({id:r,groupId:i,level:null,responseType:"text",type:h.PlaylistContextType.AUDIO_TRACK,url:n,deliveryDirectives:s})},t.onSubtitleTrackLoading=function(e,t){var r=t.id,i=t.groupId,n=t.url,s=t.deliveryDirectives;this.load({id:r,groupId:i,level:null,responseType:"text",type:h.PlaylistContextType.SUBTITLE_TRACK,url:n,deliveryDirectives:s})},t.load=function(e){var t,r,i,n,s,o,l=this.hls.config,u=this.getInternalLoader(e);if(u){var d=u.context;if(d&&d.url===e.url)return void a.logger.trace("[playlist-loader]: playlist request ongoing");a.logger.log("[playlist-loader]: aborting previous loader for type: "+e.type),u.abort()}switch(e.type){case h.PlaylistContextType.MANIFEST:r=l.manifestLoadingMaxRetry,i=l.manifestLoadingTimeOut,n=l.manifestLoadingRetryDelay,s=l.manifestLoadingMaxRetryTimeout;break;case h.PlaylistContextType.LEVEL:case h.PlaylistContextType.AUDIO_TRACK:case h.PlaylistContextType.SUBTITLE_TRACK:r=0,i=l.levelLoadingTimeOut;break;default:r=l.levelLoadingMaxRetry,i=l.levelLoadingTimeOut,n=l.levelLoadingRetryDelay,s=l.levelLoadingMaxRetryTimeout}if(u=this.createInternalLoader(e),null!==(t=e.deliveryDirectives)&&void 0!==t&&t.part&&(e.type===h.PlaylistContextType.LEVEL&&null!==e.level?o=this.hls.levels[e.level].details:e.type===h.PlaylistContextType.AUDIO_TRACK&&null!==e.id?o=this.hls.audioTracks[e.id].details:e.type===h.PlaylistContextType.SUBTITLE_TRACK&&null!==e.id&&(o=this.hls.subtitleTracks[e.id].details),o)){var c=o.partTarget,f=o.targetduration;c&&f&&(i=Math.min(1e3*Math.max(3*c,.8*f),i))}var g={timeout:i,maxRetry:r,retryDelay:n,maxRetryDelay:s,highWaterMark:0},p={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};u.load(e,g,p)},t.loadsuccess=function(e,t,r,i){if(void 0===i&&(i=null),r.isSidxRequest)return this.handleSidxRequest(e,r),void this.handlePlaylistLoaded(e,t,r,i);this.resetInternalLoader(r.type);var n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),n.indexOf("#EXTINF:")>0||n.indexOf("#EXT-X-TARGETDURATION:")>0?this.handleTrackOrLevelPlaylist(e,t,r,i):this.handleMasterPlaylist(e,t,r,i)):this.handleManifestParsingError(e,r,"no EXTM3U delimiter",i)},t.loaderror=function(e,t,r){void 0===r&&(r=null),this.handleNetworkError(t,r,!1,e)},t.loadtimeout=function(e,t,r){void 0===r&&(r=null),this.handleNetworkError(t,r,!0)},t.handleMasterPlaylist=function(e,t,r,i){var s=this.hls,o=e.data,h=d(e,r),c=l.default.parseMasterPlaylist(o,h),f=c.levels,g=c.sessionData;if(f.length){var p=f.map((function(e){return{id:e.attrs.AUDIO,audioCodec:e.audioCodec}})),m=f.map((function(e){return{id:e.attrs.SUBTITLES,textCodec:e.textCodec}})),v=l.default.parseMasterPlaylistMedia(o,h,"AUDIO",p),y=l.default.parseMasterPlaylistMedia(o,h,"SUBTITLES",m),E=l.default.parseMasterPlaylistMedia(o,h,"CLOSED-CAPTIONS");v.length&&(v.some((function(e){return!e.url}))||!f[0].audioCodec||f[0].attrs.AUDIO||(a.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),v.unshift({type:"main",name:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new u.AttrList({}),bitrate:0,url:""}))),s.trigger(n.Events.MANIFEST_LOADED,{levels:f,audioTracks:v,subtitles:y,captions:E,url:h,stats:t,networkDetails:i,sessionData:g})}else this.handleManifestParsingError(e,r,"no level found in manifest",i)},t.handleTrackOrLevelPlaylist=function(e,t,r,a){var o=this.hls,c=r.id,f=r.level,g=r.type,p=d(e,r),m=Object(i.isFiniteNumber)(c)?c:0,v=Object(i.isFiniteNumber)(f)?f:m,y=function(e){switch(e.type){case h.PlaylistContextType.AUDIO_TRACK:return h.PlaylistLevelType.AUDIO;case h.PlaylistContextType.SUBTITLE_TRACK:return h.PlaylistLevelType.SUBTITLE;default:return h.PlaylistLevelType.MAIN}}(r),E=l.default.parseLevelPlaylist(e.data,p,v,y,m);if(E.fragments.length){if(g===h.PlaylistContextType.MANIFEST){var S={attrs:new u.AttrList({}),bitrate:0,details:E,name:"",url:p};o.trigger(n.Events.MANIFEST_LOADED,{levels:[S],audioTracks:[],url:p,stats:t,networkDetails:a,sessionData:null})}if(t.parsing.end=performance.now(),E.needSidxRanges){var b,_=null===(b=E.fragments[0].initSegment)||void 0===b?void 0:b.url;this.load({url:_,isSidxRequest:!0,type:g,level:f,levelDetails:E,id:c,groupId:null,rangeStart:0,rangeEnd:2048,responseType:"arraybuffer",deliveryDirectives:null})}else r.levelDetails=E,this.handlePlaylistLoaded(e,t,r,a)}else o.trigger(n.Events.ERROR,{type:s.ErrorTypes.NETWORK_ERROR,details:s.ErrorDetails.LEVEL_EMPTY_ERROR,fatal:!1,url:p,reason:"no fragments found in level",level:"number"==typeof r.level?r.level:void 0})},t.handleSidxRequest=function(e,t){var r=Object(o.parseSegmentIndex)(new Uint8Array(e.data));if(r){var i=r.references,n=t.levelDetails;i.forEach((function(e,t){var i=e.info,s=n.fragments[t];0===s.byteRange.length&&s.setByteRange(String(1+i.end-i.start)+"@"+String(i.start)),s.initSegment&&s.initSegment.setByteRange(String(r.moovEndOffset)+"@0")}))}},t.handleManifestParsingError=function(e,t,r,i){this.hls.trigger(n.Events.ERROR,{type:s.ErrorTypes.NETWORK_ERROR,details:s.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:t.type===h.PlaylistContextType.MANIFEST,url:e.url,reason:r,response:e,context:t,networkDetails:i})},t.handleNetworkError=function(e,t,r,i){void 0===r&&(r=!1),a.logger.warn("[playlist-loader]: A network "+(r?"timeout":"error")+" occurred while loading "+e.type+" level: "+e.level+" id: "+e.id+' group-id: "'+e.groupId+'"');var o=s.ErrorDetails.UNKNOWN,l=!1,u=this.getInternalLoader(e);switch(e.type){case h.PlaylistContextType.MANIFEST:o=r?s.ErrorDetails.MANIFEST_LOAD_TIMEOUT:s.ErrorDetails.MANIFEST_LOAD_ERROR,l=!0;break;case h.PlaylistContextType.LEVEL:o=r?s.ErrorDetails.LEVEL_LOAD_TIMEOUT:s.ErrorDetails.LEVEL_LOAD_ERROR,l=!1;break;case h.PlaylistContextType.AUDIO_TRACK:o=r?s.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:s.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case h.PlaylistContextType.SUBTITLE_TRACK:o=r?s.ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:s.ErrorDetails.SUBTITLE_LOAD_ERROR,l=!1}u&&this.resetInternalLoader(e.type);var d={type:s.ErrorTypes.NETWORK_ERROR,details:o,fatal:l,url:e.url,loader:u,context:e,networkDetails:t};i&&(d.response=i),this.hls.trigger(n.Events.ERROR,d)},t.handlePlaylistLoaded=function(e,t,r,i){var s=r.type,a=r.level,o=r.id,l=r.groupId,u=r.loader,d=r.levelDetails,c=r.deliveryDirectives;if(null!=d&&d.targetduration){if(u)switch(d.live&&(u.getCacheAge&&(d.ageHeader=u.getCacheAge()||0),u.getCacheAge&&!isNaN(d.ageHeader)||(d.ageHeader=0)),s){case h.PlaylistContextType.MANIFEST:case h.PlaylistContextType.LEVEL:this.hls.trigger(n.Events.LEVEL_LOADED,{details:d,level:a||0,id:o||0,stats:t,networkDetails:i,deliveryDirectives:c});break;case h.PlaylistContextType.AUDIO_TRACK:this.hls.trigger(n.Events.AUDIO_TRACK_LOADED,{details:d,id:o||0,groupId:l||"",stats:t,networkDetails:i,deliveryDirectives:c});break;case h.PlaylistContextType.SUBTITLE_TRACK:this.hls.trigger(n.Events.SUBTITLE_TRACK_LOADED,{details:d,id:o||0,groupId:l||"",stats:t,networkDetails:i,deliveryDirectives:c})}}else this.handleManifestParsingError(e,r,"invalid target duration",i)},e}();t.default=c},"./src/polyfills/number.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"isFiniteNumber",(function(){return i})),r.d(t,"MAX_SAFE_INTEGER",(function(){return n}));var i=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},n=Number.MAX_SAFE_INTEGER||9007199254740991},"./src/remux/aac-helper.ts":function(e,t,r){"use strict";r.r(t);var i=function(){function e(){}return e.getSilentFrame=function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)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(6===t)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(1===t)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(2===t)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(3===t)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])}},e}();t.default=i},"./src/remux/mp4-generator.ts":function(e,t,r){"use strict";r.r(t);var i=Math.pow(2,32)-1,n=function(){function e(){}return e.init=function(){var t;for(t in e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var r=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]),i=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.HDLR_TYPES={video:r,audio:i};var n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),s=new Uint8Array([0,0,0,0,0,0,0,0]);e.STTS=e.STSC=e.STCO=s,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var a=new Uint8Array([105,115,111,109]),o=new Uint8Array([97,118,99,49]),l=new Uint8Array([0,0,0,1]);e.FTYP=e.box(e.types.ftyp,a,l,a,o),e.DINF=e.box(e.types.dinf,e.box(e.types.dref,n))},e.box=function(e){for(var t=8,r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];for(var s=i.length,a=s;s--;)t+=i[s].byteLength;var o=new Uint8Array(t);for(o[0]=t>>24&255,o[1]=t>>16&255,o[2]=t>>8&255,o[3]=255&t,o.set(e,4),s=0,t=8;s<a;s++)o.set(i[s],t),t+=i[s].byteLength;return o},e.hdlr=function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])},e.mdat=function(t){return e.box(e.types.mdat,t)},e.mdhd=function(t,r){r*=t;var n=Math.floor(r/(i+1)),s=Math.floor(r%(i+1));return e.box(e.types.mdhd,new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))},e.mfhd=function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))},e.minf=function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))},e.moof=function(t,r,i){return e.box(e.types.moof,e.mfhd(t),e.traf(i,r))},e.moov=function(t){for(var r=t.length,i=[];r--;)i[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(i).concat(e.mvex(t)))},e.mvex=function(t){for(var r=t.length,i=[];r--;)i[r]=e.trex(t[r]);return e.box.apply(null,[e.types.mvex].concat(i))},e.mvhd=function(t,r){r*=t;var n=Math.floor(r/(i+1)),s=Math.floor(r%(i+1)),a=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,n>>24,n>>16&255,n>>8&255,255&n,s>>24,s>>16&255,s>>8&255,255&s,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]);return e.box(e.types.mvhd,a)},e.sdtp=function(t){var r,i,n=t.samples||[],s=new Uint8Array(4+n.length);for(r=0;r<n.length;r++)i=n[r].flags,s[r+4]=i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy;return e.box(e.types.sdtp,s)},e.stbl=function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.STTS),e.box(e.types.stsc,e.STSC),e.box(e.types.stsz,e.STSZ),e.box(e.types.stco,e.STCO))},e.avc1=function(t){var r,i,n,s=[],a=[];for(r=0;r<t.sps.length;r++)n=(i=t.sps[r]).byteLength,s.push(n>>>8&255),s.push(255&n),s=s.concat(Array.prototype.slice.call(i));for(r=0;r<t.pps.length;r++)n=(i=t.pps[r]).byteLength,a.push(n>>>8&255),a.push(255&n),a=a.concat(Array.prototype.slice.call(i));var o=e.box(e.types.avcC,new Uint8Array([1,s[3],s[4],s[5],255,224|t.sps.length].concat(s).concat([t.pps.length]).concat(a))),l=t.width,h=t.height,u=t.pixelRatio[0],d=t.pixelRatio[1];return e.box(e.types.avc1,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,l>>8&255,255&l,h>>8&255,255&h,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([u>>24,u>>16&255,u>>8&255,255&u,d>>24,d>>16&255,d>>8&255,255&d])))},e.esds=function(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))},e.mp4a=function(t){var r=t.samplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),e.box(e.types.esds,e.esds(t)))},e.mp3=function(t){var r=t.samplerate;return e.box(e.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]))},e.stsd=function(t){return"audio"===t.type?t.isAAC||"mp3"!==t.codec?e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.mp3(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))},e.tkhd=function(t){var r=t.id,n=t.duration*t.timescale,s=t.width,a=t.height,o=Math.floor(n/(i+1)),l=Math.floor(n%(i+1));return e.box(e.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,l>>24,l>>16&255,l>>8&255,255&l,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,s>>8&255,255&s,0,0,a>>8&255,255&a,0,0]))},e.traf=function(t,r){var n=e.sdtp(t),s=t.id,a=Math.floor(r/(i+1)),o=Math.floor(r%(i+1));return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),e.box(e.types.tfdt,new Uint8Array([1,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,o>>24,o>>16&255,o>>8&255,255&o])),e.trun(t,n.length+16+20+8+16+8+8),n)},e.trak=function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.trex=function(t){var r=t.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},e.trun=function(t,r){var i,n,s,a,o,l,h=t.samples||[],u=h.length,d=12+16*u,c=new Uint8Array(d);for(r+=8+d,c.set([0,0,15,1,u>>>24&255,u>>>16&255,u>>>8&255,255&u,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0),i=0;i<u;i++)s=(n=h[i]).duration,a=n.size,o=n.flags,l=n.cts,c.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,a>>>24&255,a>>>16&255,a>>>8&255,255&a,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|o.isNonSync,61440&o.degradPrio,15&o.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*i);return e.box(e.types.trun,c)},e.initSegment=function(t){e.types||e.init();var r=e.moov(t),i=new Uint8Array(e.FTYP.byteLength+r.byteLength);return i.set(e.FTYP),i.set(r,e.FTYP.byteLength),i},e}();n.types=void 0,n.HDLR_TYPES=void 0,n.STTS=void 0,n.STSC=void 0,n.STCO=void 0,n.STSZ=void 0,n.VMHD=void 0,n.SMHD=void 0,n.STSD=void 0,n.FTYP=void 0,n.DINF=void 0,t.default=n},"./src/remux/mp4-remuxer.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return p})),r.d(t,"normalizePts",(function(){return m}));var i=r("./src/polyfills/number.ts"),n=r("./src/remux/aac-helper.ts"),s=r("./src/remux/mp4-generator.ts"),a=r("./src/events.ts"),o=r("./src/errors.ts"),l=r("./src/utils/logger.ts"),h=r("./src/types/loader.ts"),u=r("./src/utils/timescale-conversion.ts");function d(){return d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},d.apply(this,arguments)}var c=null,f=null,g=!1,p=function(){function e(e,t,r,i){if(void 0===i&&(i=""),this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=void 0,this._initDTS=void 0,this.nextAvcDts=null,this.nextAudioPts=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.observer=e,this.config=t,this.typeSupported=r,this.ISGenerated=!1,null===c){var n=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);c=n?parseInt(n[1]):0}if(null===f){var s=navigator.userAgent.match(/Safari\/(\d+)/i);f=s?parseInt(s[1]):0}g=!!c&&c<75||!!f&&f<600}var t=e.prototype;return t.destroy=function(){},t.resetTimeStamp=function(e){l.logger.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e},t.resetNextTimestamp=function(){l.logger.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1},t.resetInitSegment=function(){l.logger.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1},t.getVideoStartPts=function(e){var t=!1,r=e.reduce((function(e,r){var i=r.pts-e;return i<-4294967296?(t=!0,m(e,r.pts)):i>0?e:r.pts}),e[0].pts);return t&&l.logger.debug("PTS rollover detected"),r},t.remux=function(e,t,r,i,n,s,a,o){var u,d,c,f,g,p,v=n,y=n,E=e.pid>-1,S=t.pid>-1,b=t.samples.length,_=e.samples.length>0,T=b>1;if((!E||_)&&(!S||T)||this.ISGenerated||a){this.ISGenerated||(c=this.generateIS(e,t,n));var L=this.isVideoContiguous,P=-1;if(T&&(P=function(e){for(var t=0;t<e.length;t++)if(e[t].key)return t;return-1}(t.samples),!L&&this.config.forceKeyFrameOnDiscontinuity))if(p=!0,P>0){l.logger.warn("[mp4-remuxer]: Dropped "+P+" out of "+b+" video samples due to a missing keyframe");var A=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(P),t.dropped+=P,y+=(t.samples[0].pts-A)/(t.timescale||9e4)}else-1===P&&(l.logger.warn("[mp4-remuxer]: No keyframe found out of "+b+" video samples"),p=!1);if(this.ISGenerated){if(_&&T){var w=this.getVideoStartPts(t.samples),D=(m(e.samples[0].pts,w)-w)/t.inputTimeScale;v+=Math.max(0,D),y+=Math.max(0,-D)}if(_){if(e.samplerate||(l.logger.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),c=this.generateIS(e,t,n)),d=this.remuxAudio(e,v,this.isAudioContiguous,s,S||T||o===h.PlaylistLevelType.AUDIO?y:void 0),T){var R=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(l.logger.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),c=this.generateIS(e,t,n)),u=this.remuxVideo(t,y,L,R)}}else T&&(u=this.remuxVideo(t,y,L,0));u&&(u.firstKeyFrame=P,u.independent=-1!==P)}}return this.ISGenerated&&(r.samples.length&&(g=this.remuxID3(r,n)),i.samples.length&&(f=this.remuxText(i,n))),{audio:d,video:u,initSegment:c,independent:p,text:f,id3:g}},t.generateIS=function(e,t,r){var n,a,o,l=e.samples,h=t.samples,u=this.typeSupported,d={},c=!Object(i.isFiniteNumber)(this._initPTS),f="audio/mp4";if(c&&(n=a=1/0),e.config&&l.length&&(e.timescale=e.samplerate,e.isAAC||(u.mpeg?(f="audio/mpeg",e.codec=""):u.mp3&&(e.codec="mp3")),d.audio={id:"audio",container:f,codec:e.codec,initSegment:!e.isAAC&&u.mpeg?new Uint8Array(0):s.default.initSegment([e]),metadata:{channelCount:e.channelCount}},c&&(o=e.inputTimeScale,n=a=l[0].pts-Math.round(o*r))),t.sps&&t.pps&&h.length&&(t.timescale=t.inputTimeScale,d.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:s.default.initSegment([t]),metadata:{width:t.width,height:t.height}},c)){o=t.inputTimeScale;var g=this.getVideoStartPts(h),p=Math.round(o*r);a=Math.min(a,m(h[0].dts,g)-p),n=Math.min(n,g-p)}if(Object.keys(d).length)return this.ISGenerated=!0,c&&(this._initPTS=n,this._initDTS=a),{tracks:d,initPTS:n,timescale:o}},t.remuxVideo=function(e,t,r,i){var n,h,f,p=e.inputTimeScale,y=e.samples,E=[],S=y.length,b=this._initPTS,_=this.nextAvcDts,T=8,L=Number.POSITIVE_INFINITY,P=Number.NEGATIVE_INFINITY,A=0,w=!1;r&&null!==_||(_=t*p-(y[0].pts-m(y[0].dts,y[0].pts)));for(var D=0;D<S;D++){var R=y[D];R.pts=m(R.pts-b,_),R.dts=m(R.dts-b,_),R.dts>R.pts&&(A=Math.max(Math.min(A,R.pts-R.dts),-18e3)),R.dts<y[D>0?D-1:D].dts&&(w=!0)}w&&y.sort((function(e,t){var r=e.dts-t.dts,i=e.pts-t.pts;return r||i})),h=y[0].dts,f=y[y.length-1].dts;var I=Math.round((f-h)/(S-1));if(A<0){if(A<-2*I){l.logger.warn("PTS < DTS detected in video samples, offsetting DTS from PTS by "+Object(u.toMsFromMpegTsClock)(-I,!0)+" ms");for(var C=A,k=0;k<S;k++)y[k].dts=C=Math.max(C,y[k].pts-I),y[k].pts=Math.max(C,y[k].pts)}else{l.logger.warn("PTS < DTS detected in video samples, shifting DTS by "+Object(u.toMsFromMpegTsClock)(A,!0)+" ms to overcome this issue");for(var x=0;x<S;x++)y[x].dts=y[x].dts+A}h=y[0].dts}if(r){var O=h-_,M=O>I;if(M||O<-1){M?l.logger.warn("AVC: "+Object(u.toMsFromMpegTsClock)(O,!0)+" ms ("+O+"dts) hole between fragments detected, filling it"):l.logger.warn("AVC: "+Object(u.toMsFromMpegTsClock)(-O,!0)+" ms ("+O+"dts) overlapping between fragments detected"),h=_;var N=y[0].pts-O;y[0].dts=h,y[0].pts=N,l.logger.log("Video: First PTS/DTS adjusted: "+Object(u.toMsFromMpegTsClock)(N,!0)+"/"+Object(u.toMsFromMpegTsClock)(h,!0)+", delta: "+Object(u.toMsFromMpegTsClock)(O,!0)+" ms")}}g&&(h=Math.max(0,h));for(var F=0,B=0,U=0;U<S;U++){for(var G=y[U],j=G.units,H=j.length,$=0,W=0;W<H;W++)$+=j[W].data.length;B+=$,F+=H,G.length=$,G.dts=Math.max(G.dts,h),G.pts=Math.max(G.pts,G.dts,0),L=Math.min(G.pts,L),P=Math.max(G.pts,P)}f=y[S-1].dts;var q,V=B+4*F+8;try{q=new Uint8Array(V)}catch(e){return void this.observer.emit(a.Events.ERROR,a.Events.ERROR,{type:o.ErrorTypes.MUX_ERROR,details:o.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:V,reason:"fail allocating video mdat "+V})}var z=new DataView(q.buffer);z.setUint32(0,V),q.set(s.default.types.mdat,4);for(var K=0;K<S;K++){for(var Y=y[K],X=Y.units,Q=0,J=0,Z=X.length;J<Z;J++){var ee=X[J],te=ee.data,re=ee.data.byteLength;z.setUint32(T,re),T+=4,q.set(te,T),T+=re,Q+=4+re}if(K<S-1)n=y[K+1].dts-Y.dts;else{var ie=this.config,ne=Y.dts-y[K>0?K-1:K].dts;if(ie.stretchShortVideoTrack&&null!==this.nextAudioPts){var se=Math.floor(ie.maxBufferHole*p),ae=(i?L+i*p:this.nextAudioPts)-Y.pts;ae>se?((n=ae-ne)<0&&(n=ne),l.logger.log("[mp4-remuxer]: It is approximately "+ae/90+" ms to the next segment; using duration "+n/90+" ms for the last video frame.")):n=ne}else n=ne}var oe=Math.round(Y.pts-Y.dts);E.push(new v(Y.key,n,Q,oe))}if(E.length&&c&&c<70){var le=E[0].flags;le.dependsOn=2,le.isNonSync=0}console.assert(void 0!==n,"mp4SampleDuration must be computed"),this.nextAvcDts=_=f+n,this.isVideoContiguous=!0;var he={data1:s.default.moof(e.sequenceNumber++,h,d({},e,{samples:E})),data2:q,startPTS:L/p,endPTS:(P+n)/p,startDTS:h/p,endDTS:_/p,type:"video",hasAudio:!1,hasVideo:!0,nb:E.length,dropped:e.dropped};return e.samples=[],e.dropped=0,console.assert(q.length,"MDAT length must not be zero"),he},t.remuxAudio=function(e,t,r,i,h){var u=e.inputTimeScale,c=u/(e.samplerate?e.samplerate:u),f=e.isAAC?1024:1152,g=f*c,p=this._initPTS,y=!e.isAAC&&this.typeSupported.mpeg,E=[],S=e.samples,b=y?0:8,_=this.nextAudioPts||-1,T=t*u;if(this.isAudioContiguous=r=r||S.length&&_>0&&(i&&Math.abs(T-_)<9e3||Math.abs(m(S[0].pts-p,T)-_)<20*g),S.forEach((function(e){e.pts=m(e.pts-p,T)})),!r||_<0){if(S=S.filter((function(e){return e.pts>=0})),!S.length)return;_=0===h?0:i?Math.max(0,T):S[0].pts}if(e.isAAC)for(var L=void 0!==h,P=this.config.maxAudioFramesDrift,A=0,w=_;A<S.length;A++){var D=S[A],R=D.pts,I=R-w,C=Math.abs(1e3*I/u);if(I<=-P*g&&L)0===A&&(l.logger.warn("Audio frame @ "+(R/u).toFixed(3)+"s overlaps nextAudioPts by "+Math.round(1e3*I/u)+" ms."),this.nextAudioPts=_=w=R);else if(I>=P*g&&C<1e4&&L){var k=Math.round(I/g);(w=R-k*g)<0&&(k--,w+=g),0===A&&(this.nextAudioPts=_=w),l.logger.warn("[mp4-remuxer]: Injecting "+k+" audio frame @ "+(w/u).toFixed(3)+"s due to "+Math.round(1e3*I/u)+" ms gap.");for(var x=0;x<k;x++){var O=Math.max(w,0),M=n.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);M||(l.logger.log("[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead."),M=D.unit.subarray()),S.splice(A,0,{unit:M,pts:O}),w+=g,A++}}D.pts=w,w+=g}for(var N,F=null,B=null,U=0,G=S.length;G--;)U+=S[G].unit.byteLength;for(var j=0,H=S.length;j<H;j++){var $=S[j],W=$.unit,q=$.pts;if(null!==B)E[j-1].duration=Math.round((q-B)/c);else{if(r&&e.isAAC&&(q=_),F=q,!(U>0))return;U+=b;try{N=new Uint8Array(U)}catch(e){return void this.observer.emit(a.Events.ERROR,a.Events.ERROR,{type:o.ErrorTypes.MUX_ERROR,details:o.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:U,reason:"fail allocating audio mdat "+U})}y||(new DataView(N.buffer).setUint32(0,U),N.set(s.default.types.mdat,4))}N.set(W,b);var V=W.byteLength;b+=V,E.push(new v(!0,f,V,0)),B=q}var z=E.length;if(z){var K=E[E.length-1];this.nextAudioPts=_=B+c*K.duration;var Y=y?new Uint8Array(0):s.default.moof(e.sequenceNumber++,F/c,d({},e,{samples:E}));e.samples=[];var X=F/u,Q=_/u,J={data1:Y,data2:N,startPTS:X,endPTS:Q,startDTS:X,endDTS:Q,type:"audio",hasAudio:!0,hasVideo:!1,nb:z};return this.isAudioContiguous=!0,console.assert(N.length,"MDAT length must not be zero"),J}},t.remuxEmptyAudio=function(e,t,r,i){var s=e.inputTimeScale,a=s/(e.samplerate?e.samplerate:s),o=this.nextAudioPts,h=(null!==o?o:i.startDTS*s)+this._initDTS,u=i.endDTS*s+this._initDTS,d=1024*a,c=Math.ceil((u-h)/d),f=n.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(l.logger.warn("[mp4-remuxer]: remux empty Audio"),f){for(var g=[],p=0;p<c;p++){var m=h+p*d;g.push({unit:f,pts:m,dts:m})}return e.samples=g,this.remuxAudio(e,t,r,!1)}l.logger.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec")},t.remuxID3=function(e,t){var r=e.samples.length;if(r){for(var i=e.inputTimeScale,n=this._initPTS,s=this._initDTS,a=0;a<r;a++){var o=e.samples[a];o.pts=m(o.pts-n,t*i)/i,o.dts=m(o.dts-s,t*i)/i}var l=e.samples;return e.samples=[],{samples:l}}},t.remuxText=function(e,t){var r=e.samples.length;if(r){for(var i=e.inputTimeScale,n=this._initPTS,s=0;s<r;s++){var a=e.samples[s];a.pts=m(a.pts-n,t*i)/i}e.samples.sort((function(e,t){return e.pts-t.pts}));var o=e.samples;return e.samples=[],{samples:o}}},e}();function m(e,t){var r;if(null===t)return e;for(r=t<e?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}var v=function(e,t,r,i){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=r,this.cts=i,this.flags=new y(e)},y=function(e){this.isLeading=0,this.isDependedOn=0,this.hasRedundancy=0,this.degradPrio=0,this.dependsOn=1,this.isNonSync=1,this.dependsOn=e?2:1,this.isNonSync=e?0:1}},"./src/remux/passthrough-remuxer.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/polyfills/number.ts"),n=r("./src/utils/mp4-tools.ts"),s=r("./src/loader/fragment.ts"),a=r("./src/utils/logger.ts"),o=function(){function e(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=void 0,this.initTracks=void 0,this.lastEndDTS=null}var t=e.prototype;return t.destroy=function(){},t.resetTimeStamp=function(e){this.initPTS=e,this.lastEndDTS=null},t.resetNextTimestamp=function(){this.lastEndDTS=null},t.resetInitSegment=function(e,t,r){this.audioCodec=t,this.videoCodec=r,this.generateInitSegment(e),this.emitInitSegment=!0},t.generateInitSegment=function(e){var t=this.audioCodec,r=this.videoCodec;if(!e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);var i=this.initData=Object(n.parseInitSegment)(e);t||(t=h(i.audio,s.ElementaryStreamTypes.AUDIO)),r||(r=h(i.video,s.ElementaryStreamTypes.VIDEO));var o={};i.audio&&i.video?o.audiovideo={container:"video/mp4",codec:t+","+r,initSegment:e,id:"main"}:i.audio?o.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:i.video?o.video={container:"video/mp4",codec:r,initSegment:e,id:"main"}:a.logger.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=o},t.remux=function(e,t,r,s,o){var h=this.initPTS,u=this.lastEndDTS,d={audio:void 0,video:void 0,text:s,id3:r,initSegment:void 0};Object(i.isFiniteNumber)(u)||(u=this.lastEndDTS=o||0);var c=t.samples;if(!c||!c.length)return d;var f={initPTS:void 0,timescale:1},g=this.initData;if(g&&g.length||(this.generateInitSegment(c),g=this.initData),!g||!g.length)return a.logger.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),d;this.emitInitSegment&&(f.tracks=this.initTracks,this.emitInitSegment=!1),Object(i.isFiniteNumber)(h)||(this.initPTS=f.initPTS=h=l(g,c,u));var p=Object(n.getDuration)(c,g),m=u,v=p+m;Object(n.offsetStartDTS)(g,c,h),p>0?this.lastEndDTS=v:(a.logger.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());var y=!!g.audio,E=!!g.video,S="";y&&(S+="audio"),E&&(S+="video");var b={data1:c,startPTS:m,startDTS:m,endPTS:v,endDTS:v,type:S,hasAudio:y,hasVideo:E,nb:1,dropped:0};return d.audio="audio"===b.type?b:void 0,d.video="audio"!==b.type?b:void 0,d.text=s,d.id3=r,d.initSegment=f,d},e}(),l=function(e,t,r){return Object(n.getStartDTS)(e,t)-r};function h(e,t){var r=null==e?void 0:e.codec;return r&&r.length>4?r:"hvc1"===r?"hvc1.1.c.L120.90":"av01"===r?"av01.0.04M.08":"avc1"===r||t===s.ElementaryStreamTypes.VIDEO?"avc1.42e01e":"mp4a.40.5"}t.default=o},"./src/task-loop.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"default",(function(){return i}));var i=function(){function e(){this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}var t=e.prototype;return t.destroy=function(){this.onHandlerDestroying(),this.onHandlerDestroyed()},t.onHandlerDestroying=function(){this.clearNextTick(),this.clearInterval()},t.onHandlerDestroyed=function(){},t.hasInterval=function(){return!!this._tickInterval},t.hasNextTick=function(){return!!this._tickTimer},t.setInterval=function(e){return!this._tickInterval&&(this._tickInterval=self.setInterval(this._boundTick,e),!0)},t.clearInterval=function(){return!!this._tickInterval&&(self.clearInterval(this._tickInterval),this._tickInterval=null,!0)},t.clearNextTick=function(){return!!this._tickTimer&&(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0)},t.tick=function(){this._tickCallCount++,1===this._tickCallCount&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)},t.tickImmediate=function(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)},t.doTick=function(){},e}()},"./src/types/level.ts":function(e,t,r){"use strict";function i(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var n;function s(e,t){var r=e.canSkipUntil,i=e.canSkipDateRanges,s=e.endSN;return r&&(void 0!==t?t-s:0)<r?i?n.v2:n.Yes:n.No}r.r(t),r.d(t,"HlsSkip",(function(){return n})),r.d(t,"getSkipValue",(function(){return s})),r.d(t,"HlsUrlParameters",(function(){return a})),r.d(t,"Level",(function(){return o})),function(e){e.No="",e.Yes="YES",e.v2="v2"}(n||(n={}));var a=function(){function e(e,t,r){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=e,this.part=t,this.skip=r}return e.prototype.addDirectives=function(e){var t=new self.URL(e);return void 0!==this.msn&&t.searchParams.set("_HLS_msn",this.msn.toString()),void 0!==this.part&&t.searchParams.set("_HLS_part",this.part.toString()),this.skip&&t.searchParams.set("_HLS_skip",this.skip),t.toString()},e}(),o=function(){function e(e){this.attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.unknownCodecs=void 0,this.audioGroupIds=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.textGroupIds=void 0,this.url=void 0,this._urlId=0,this.url=[e.url],this.attrs=e.attrs,this.bitrate=e.bitrate,e.details&&(this.details=e.details),this.id=e.id||0,this.name=e.name,this.width=e.width||0,this.height=e.height||0,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.unknownCodecs=e.unknownCodecs,this.codecSet=[e.videoCodec,e.audioCodec].filter((function(e){return e})).join(",").replace(/\.[^.,]+/g,"")}var t,r,n;return t=e,(r=[{key:"maxBitrate",get:function(){return Math.max(this.realBitrate,this.bitrate)}},{key:"uri",get:function(){return this.url[this._urlId]||""}},{key:"urlId",get:function(){return this._urlId},set:function(e){var t=e%this.url.length;this._urlId!==t&&(this.details=void 0,this._urlId=t)}}])&&i(t.prototype,r),n&&i(t,n),e}()},"./src/types/loader.ts":function(e,t,r){"use strict";var i,n;r.r(t),r.d(t,"PlaylistContextType",(function(){return i})),r.d(t,"PlaylistLevelType",(function(){return n})),function(e){e.MANIFEST="manifest",e.LEVEL="level",e.AUDIO_TRACK="audioTrack",e.SUBTITLE_TRACK="subtitleTrack"}(i||(i={})),function(e){e.MAIN="main",e.AUDIO="audio",e.SUBTITLE="subtitle"}(n||(n={}))},"./src/types/transmuxer.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"ChunkMetadata",(function(){return i}));var i=function(e,t,r,i,n,s){void 0===i&&(i=0),void 0===n&&(n=-1),void 0===s&&(s=!1),this.level=void 0,this.sn=void 0,this.part=void 0,this.id=void 0,this.size=void 0,this.partial=void 0,this.transmuxing={start:0,executeStart:0,executeEnd:0,end:0},this.buffering={audio:{start:0,executeStart:0,executeEnd:0,end:0},video:{start:0,executeStart:0,executeEnd:0,end:0},audiovideo:{start:0,executeStart:0,executeEnd:0,end:0}},this.level=e,this.sn=t,this.id=r,this.size=i,this.part=n,this.partial=s}},"./src/utils/attr-list.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"AttrList",(function(){return s}));var i=/^(\d+)x(\d+)$/,n=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,s=function(){function e(t){for(var r in"string"==typeof t&&(t=e.parseAttrList(t)),t)t.hasOwnProperty(r)&&(this[r]=t[r])}var t=e.prototype;return t.decimalInteger=function(e){var t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t},t.hexadecimalInteger=function(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var r=new Uint8Array(t.length/2),i=0;i<t.length/2;i++)r[i]=parseInt(t.slice(2*i,2*i+2),16);return r}return null},t.hexadecimalIntegerAsNumber=function(e){var t=parseInt(this[e],16);return t>Number.MAX_SAFE_INTEGER?1/0:t},t.decimalFloatingPoint=function(e){return parseFloat(this[e])},t.optionalFloat=function(e,t){var r=this[e];return r?parseFloat(r):t},t.enumeratedString=function(e){return this[e]},t.bool=function(e){return"YES"===this[e]},t.decimalResolution=function(e){var t=i.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}},e.parseAttrList=function(e){var t,r={};for(n.lastIndex=0;null!==(t=n.exec(e));){var i=t[2];0===i.indexOf('"')&&i.lastIndexOf('"')===i.length-1&&(i=i.slice(1,-1)),r[t[1]]=i}return r},e}()},"./src/utils/binary-search.ts":function(e,t,r){"use strict";r.r(t),t.default={search:function(e,t){for(var r=0,i=e.length-1,n=null,s=null;r<=i;){var a=t(s=e[n=(r+i)/2|0]);if(a>0)r=n+1;else{if(!(a<0))return s;i=n-1}}return null}}},"./src/utils/buffer-helper.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"BufferHelper",(function(){return s}));var i=r("./src/utils/logger.ts"),n={length:0,start:function(){return 0},end:function(){return 0}},s=function(){function e(){}return e.isBuffered=function(t,r){try{if(t)for(var i=e.getBuffered(t),n=0;n<i.length;n++)if(r>=i.start(n)&&r<=i.end(n))return!0}catch(e){}return!1},e.bufferInfo=function(t,r,i){try{if(t){var n,s=e.getBuffered(t),a=[];for(n=0;n<s.length;n++)a.push({start:s.start(n),end:s.end(n)});return this.bufferedInfo(a,r,i)}}catch(e){}return{len:0,start:r,end:r,nextStart:void 0}},e.bufferedInfo=function(e,t,r){t=Math.max(0,t),e.sort((function(e,t){var r=e.start-t.start;return r||t.end-e.end}));var i=[];if(r)for(var n=0;n<e.length;n++){var s=i.length;if(s){var a=i[s-1].end;e[n].start-a<r?e[n].end>a&&(i[s-1].end=e[n].end):i.push(e[n])}else i.push(e[n])}else i=e;for(var o,l=0,h=t,u=t,d=0;d<i.length;d++){var c=i[d].start,f=i[d].end;if(t+r>=c&&t<f)h=c,l=(u=f)-t;else if(t+r<c){o=c;break}}return{len:l,start:h||0,end:u||0,nextStart:o}},e.getBuffered=function(e){try{return e.buffered}catch(e){return i.logger.log("failed to get media.buffered",e),n}},e}()},"./src/utils/codecs.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"isCodecType",(function(){return n})),r.d(t,"isCodecSupportedInMp4",(function(){return s}));var i={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,av01:!0,drac:!0,dvav:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0},text:{stpp:!0,wvtt:!0}};function n(e,t){var r=i[t];return!!r&&!0===r[e.slice(0,4)]}function s(e,t){return MediaSource.isTypeSupported((t||"video")+'/mp4;codecs="'+e+'"')}},"./src/utils/discontinuities.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"findFirstFragWithCC",(function(){return a})),r.d(t,"shouldAlignOnDiscontinuities",(function(){return o})),r.d(t,"findDiscontinuousReferenceFrag",(function(){return l})),r.d(t,"adjustSlidingStart",(function(){return u})),r.d(t,"alignStream",(function(){return d})),r.d(t,"alignPDT",(function(){return c})),r.d(t,"alignFragmentByPDTDelta",(function(){return f})),r.d(t,"alignMediaPlaylistByPDT",(function(){return g}));var i=r("./src/polyfills/number.ts"),n=r("./src/utils/logger.ts"),s=r("./src/controller/level-helper.ts");function a(e,t){for(var r=null,i=0,n=e.length;i<n;i++){var s=e[i];if(s&&s.cc===t){r=s;break}}return r}function o(e,t,r){return!(!t.details||!(r.endCC>r.startCC||e&&e.cc<r.startCC))}function l(e,t){var r=e.fragments,i=t.fragments;if(i.length&&r.length){var s=a(r,i[0].cc);if(s&&(!s||s.startPTS))return s;n.logger.log("No frag in previous level to align on")}else n.logger.log("No fragments to align")}function h(e,t){if(e){var r=e.start+t;e.start=e.startPTS=r,e.endPTS=r+e.duration}}function u(e,t){for(var r=t.fragments,i=0,n=r.length;i<n;i++)h(r[i],e);t.fragmentHint&&h(t.fragmentHint,e),t.alignedSliding=!0}function d(e,t,r){t&&(function(e,t,r){if(o(e,r,t)){var s=l(r.details,t);s&&Object(i.isFiniteNumber)(s.start)&&(n.logger.log("Adjusting PTS using last level due to CC increase within current level "+t.url),u(s.start,t))}}(e,r,t),!r.alignedSliding&&t.details&&c(r,t.details),r.alignedSliding||!t.details||r.skippedSegments||Object(s.adjustSliding)(t.details,r))}function c(e,t){if(t.fragments.length&&e.hasProgramDateTime&&t.hasProgramDateTime){var r=t.fragments[0].programDateTime,s=e.fragments[0].programDateTime,a=(s-r)/1e3+t.fragments[0].start;a&&Object(i.isFiniteNumber)(a)&&(n.logger.log("Adjusting PTS using programDateTime delta "+(s-r)+"ms, sliding:"+a.toFixed(3)+" "+e.url+" "),u(a,e))}}function f(e,t){var r=e.programDateTime;if(r){var i=(r-t)/1e3;e.start=e.startPTS=i,e.endPTS=i+e.duration}}function g(e,t){if(t.fragments.length&&e.hasProgramDateTime&&t.hasProgramDateTime){var r=t.fragments[0].programDateTime-1e3*t.fragments[0].start;e.fragments.forEach((function(e){f(e,r)})),e.fragmentHint&&f(e.fragmentHint,r),e.alignedSliding=!0}}},"./src/utils/ewma-bandwidth-estimator.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/utils/ewma.ts"),n=function(){function e(e,t,r){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultEstimate_=r,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new i.default(e),this.fast_=new i.default(t)}var t=e.prototype;return t.update=function(e,t){var r=this.slow_,n=this.fast_;this.slow_.halfLife!==e&&(this.slow_=new i.default(e,r.getEstimate(),r.getTotalWeight())),this.fast_.halfLife!==t&&(this.fast_=new i.default(t,n.getEstimate(),n.getTotalWeight()))},t.sample=function(e,t){var r=(e=Math.max(e,this.minDelayMs_))/1e3,i=8*t/r;this.fast_.sample(r,i),this.slow_.sample(r,i)},t.canEstimate=function(){var e=this.fast_;return e&&e.getTotalWeight()>=this.minWeight_},t.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.destroy=function(){},e}();t.default=n},"./src/utils/ewma.ts":function(e,t,r){"use strict";r.r(t);var i=function(){function e(e,t,r){void 0===t&&(t=0),void 0===r&&(r=0),this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=r}var t=e.prototype;return t.sample=function(e,t){var r=Math.pow(this.alpha_,e);this.estimate_=t*(1-r)+r*this.estimate_,this.totalWeight_+=e},t.getTotalWeight=function(){return this.totalWeight_},t.getEstimate=function(){if(this.alpha_){var e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_},e}();t.default=i},"./src/utils/fetch-loader.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"fetchSupported",(function(){return c}));var i=r("./src/polyfills/number.ts"),n=r("./src/loader/load-stats.ts"),s=r("./src/demux/chunk-cache.ts");function a(e){var t="function"==typeof Map?new Map:void 0;return a=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return o(e,arguments,u(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),h(i,e)},a(e)}function o(e,t,r){return o=l()?Reflect.construct:function(e,t,r){var i=[null];i.push.apply(i,t);var n=new(Function.bind.apply(e,i));return r&&h(n,r.prototype),n},o.apply(null,arguments)}function l(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function u(e){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},u(e)}function d(){return d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},d.apply(this,arguments)}function c(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1}var f=function(){function e(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=void 0,this.response=void 0,this.controller=void 0,this.context=void 0,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||g,this.controller=new self.AbortController,this.stats=new n.LoadStats}var t=e.prototype;return t.destroy=function(){this.loader=this.callbacks=null,this.abortInternal()},t.abortInternal=function(){var e=this.response;e&&e.ok||(this.stats.aborted=!0,this.controller.abort())},t.abort=function(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)},t.load=function(e,t,r){var n=this,s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();var a=function(e,t){var r={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(d({},e.headers))};return e.rangeEnd&&r.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1)),r}(e,this.controller.signal),o=r.onProgress,l="arraybuffer"===e.responseType,h=l?"byteLength":"length";this.context=e,this.config=t,this.callbacks=r,this.request=this.fetchSetup(e,a),self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout((function(){n.abortInternal(),r.onTimeout(s,e,n.response)}),t.timeout),self.fetch(this.request).then((function(r){if(n.response=n.loader=r,!r.ok){var a=r.status,h=r.statusText;throw new p(h||"fetch, bad network response",a,r)}return s.loading.first=Math.max(self.performance.now(),s.loading.start),s.total=parseInt(r.headers.get("Content-Length")||"0"),o&&Object(i.isFiniteNumber)(t.highWaterMark)?n.loadProgressively(r,s,e,t.highWaterMark,o):l?r.arrayBuffer():r.text()})).then((function(a){var l=n.response;self.clearTimeout(n.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first),s.loaded=s.total=a[h];var u={url:l.url,data:a};o&&!Object(i.isFiniteNumber)(t.highWaterMark)&&o(s,e,a,l),r.onSuccess(u,s,e,l)})).catch((function(t){if(self.clearTimeout(n.requestTimeout),!s.aborted){var i=t.code||0;r.onError({code:i,text:t.message},e,t.details)}}))},t.getCacheAge=function(){var e=null;if(this.response){var t=this.response.headers.get("age");e=t?parseFloat(t):null}return e},t.loadProgressively=function(e,t,r,i,n){void 0===i&&(i=0);var a=new s.default,o=e.body.getReader();return function s(){return o.read().then((function(o){if(o.done)return a.dataLength&&n(t,r,a.flush(),e),Promise.resolve(new ArrayBuffer(0));var l=o.value,h=l.length;return t.loaded+=h,h<i||a.dataLength?(a.push(l),a.dataLength>=i&&n(t,r,a.flush(),e)):n(t,r,l,e),s()})).catch((function(){return Promise.reject()}))}()},e}();function g(e,t){return new self.Request(e.url,t)}var p=function(e){var t,r;function i(t,r,i){var n;return(n=e.call(this,t)||this).code=void 0,n.details=void 0,n.code=r,n.details=i,n}return r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,h(t,r),i}(a(Error));t.default=f},"./src/utils/logger.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"enableLogs",(function(){return o})),r.d(t,"logger",(function(){return l}));var i=function(){},n={trace:i,debug:i,log:i,warn:i,info:i,error:i},s=n;function a(e){var t=self.console[e];return t?t.bind(self.console,"["+e+"] >"):i}function o(e){if(self.console&&!0===e||"object"==typeof e){!function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];r.forEach((function(t){s[t]=e[t]?e[t].bind(e):a(t)}))}(e,"debug","log","info","warn","error");try{s.log()}catch(e){s=n}}else s=n}var l=n},"./src/utils/mediakeys-helper.ts":function(e,t,r){"use strict";var i;r.r(t),r.d(t,"KeySystems",(function(){return i})),r.d(t,"requestMediaKeySystemAccess",(function(){return n})),function(e){e.WIDEVINE="com.widevine.alpha",e.PLAYREADY="com.microsoft.playready"}(i||(i={}));var n="undefined"!=typeof self&&self.navigator&&self.navigator.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null},"./src/utils/mediasource-helper.ts":function(e,t,r){"use strict";function i(){return self.MediaSource||self.WebKitMediaSource}r.r(t),r.d(t,"getMediaSource",(function(){return i}))},"./src/utils/mp4-tools.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"bin2str",(function(){return o})),r.d(t,"readUint16",(function(){return l})),r.d(t,"readUint32",(function(){return h})),r.d(t,"writeUint32",(function(){return u})),r.d(t,"findBox",(function(){return d})),r.d(t,"parseSegmentIndex",(function(){return c})),r.d(t,"parseInitSegment",(function(){return f})),r.d(t,"getStartDTS",(function(){return g})),r.d(t,"getDuration",(function(){return p})),r.d(t,"computeRawDurationFromSamples",(function(){return m})),r.d(t,"offsetStartDTS",(function(){return v})),r.d(t,"segmentValidRange",(function(){return y})),r.d(t,"appendUint8Array",(function(){return E}));var i=r("./src/utils/typed-array.ts"),n=r("./src/loader/fragment.ts"),s=Math.pow(2,32)-1,a=[].push;function o(e){return String.fromCharCode.apply(null,e)}function l(e,t){"data"in e&&(t+=e.start,e=e.data);var r=e[t]<<8|e[t+1];return r<0?65536+r:r}function h(e,t){"data"in e&&(t+=e.start,e=e.data);var r=e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3];return r<0?4294967296+r:r}function u(e,t,r){"data"in e&&(t+=e.start,e=e.data),e[t]=r>>24,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r}function d(e,t){var r,i,n,s=[];if(!t.length)return s;"data"in e?(r=e.data,i=e.start,n=e.end):(i=0,n=(r=e).byteLength);for(var l=i;l<n;){var u=h(r,l),c=u>1?l+u:n;if(o(r.subarray(l+4,l+8))===t[0])if(1===t.length)s.push({data:r,start:l+8,end:c});else{var f=d({data:r,start:l+8,end:c},t.slice(1));f.length&&a.apply(s,f)}l=c}return s}function c(e){var t=d(e,["moov"])[0],r=t?t.end:null,i=d(e,["sidx"]);if(!i||!i[0])return null;var n=[],s=i[0],a=s.data[0],o=0===a?8:16,u=h(s,o);o+=4,o+=0===a?8:16,o+=2;var c=s.end+0,f=l(s,o);o+=2;for(var g=0;g<f;g++){var p=o,m=h(s,p);p+=4;var v=2147483647&m;if(1==(2147483648&m)>>>31)return console.warn("SIDX has hierarchical references (not supported)"),null;var y=h(s,p);p+=4,n.push({referenceSize:v,subsegmentDuration:y,info:{duration:y/u,start:c,end:c+v-1}}),c+=v,o=p+=4}return{earliestPresentationTime:0,timescale:u,version:a,referencesCount:f,references:n,moovEndOffset:r}}function f(e){for(var t=[],r=d(e,["moov","trak"]),i=0;i<r.length;i++){var s=r[i],a=d(s,["tkhd"])[0];if(a){var l=a.data[a.start],u=0===l?12:20,c=h(a,u),f=d(s,["mdia","mdhd"])[0];if(f){var g=h(f,u=0===(l=f.data[f.start])?12:20),p=d(s,["mdia","hdlr"])[0];if(p){var m=o(p.data.subarray(p.start+8,p.start+12)),v={soun:n.ElementaryStreamTypes.AUDIO,vide:n.ElementaryStreamTypes.VIDEO}[m];if(v){var y=d(s,["mdia","minf","stbl","stsd"])[0],E=void 0;y&&(E=o(y.data.subarray(y.start+12,y.start+16))),t[c]={timescale:g,type:v},t[v]={timescale:g,id:c,codec:E}}}}}}return d(e,["moov","mvex","trex"]).forEach((function(e){var r=h(e,4),i=t[r];i&&(i.default={duration:h(e,12),flags:h(e,20)})})),t}function g(e,t){return d(t,["moof","traf"]).reduce((function(t,r){var i=d(r,["tfdt"])[0],n=i.data[i.start],s=d(r,["tfhd"]).reduce((function(t,r){var s=h(r,4),a=e[s];if(a){var o=h(i,4);1===n&&(o*=Math.pow(2,32),o+=h(i,8));var l=o/(a.timescale||9e4);if(isFinite(l)&&(null===t||l<t))return l}return t}),null);return null!==s&&isFinite(s)&&(null===t||s<t)?s:t}),null)||0}function p(e,t){for(var r=0,i=0,s=0,a=d(e,["moof","traf"]),o=0;o<a.length;o++){var l=a[o],u=d(l,["tfhd"])[0],f=t[h(u,4)];if(f){var g=f.default,p=h(u,0)|(null==g?void 0:g.flags),v=null==g?void 0:g.duration;8&p&&(v=h(u,2&p?12:8));for(var y=f.timescale||9e4,E=d(l,["trun"]),S=0;S<E.length;S++)!(r=m(E[S]))&&v&&(r=v*h(E[S],4)),f.type===n.ElementaryStreamTypes.VIDEO?i+=r/y:f.type===n.ElementaryStreamTypes.AUDIO&&(s+=r/y)}}if(0===i&&0===s){var b=c(e);if(null!=b&&b.references)return b.references.reduce((function(e,t){return e+t.info.duration||0}),0)}return i||s}function m(e){var t=h(e,0),r=8;1&t&&(r+=4),4&t&&(r+=4);for(var i=0,n=h(e,4),s=0;s<n;s++)256&t&&(i+=h(e,r),r+=4),512&t&&(r+=4),1024&t&&(r+=4),2048&t&&(r+=4);return i}function v(e,t,r){d(t,["moof","traf"]).forEach((function(t){d(t,["tfhd"]).forEach((function(i){var n=h(i,4),a=e[n];if(a){var o=a.timescale||9e4;d(t,["tfdt"]).forEach((function(e){var t=e.data[e.start],i=h(e,4);if(0===t)u(e,4,i-r*o);else{i*=Math.pow(2,32),i+=h(e,8),i-=r*o,i=Math.max(i,0);var n=Math.floor(i/(s+1)),a=Math.floor(i%(s+1));u(e,4,n),u(e,8,a)}}))}}))}))}function y(e){var t={valid:null,remainder:null},r=d(e,["moof"]);if(!r)return t;if(r.length<2)return t.remainder=e,t;var n=r[r.length-1];return t.valid=Object(i.sliceUint8)(e,0,n.start-8),t.remainder=Object(i.sliceUint8)(e,n.start-8),t}function E(e,t){var r=new Uint8Array(e.length+t.length);return r.set(e),r.set(t,e.length),r}},"./src/utils/texttrack-utils.ts":function(e,t,r){"use strict";r.r(t),r.d(t,"sendAddTrackEvent",(function(){return n})),r.d(t,"addCueToTrack",(function(){return s})),r.d(t,"clearCurrentCues",(function(){return a})),r.d(t,"removeCuesInRange",(function(){return o})),r.d(t,"getCuesInRange",(function(){return l}));var i=r("./src/utils/logger.ts");function n(e,t){var r;try{r=new Event("addtrack")}catch(e){(r=document.createEvent("Event")).initEvent("addtrack",!1,!1)}r.track=e,t.dispatchEvent(r)}function s(e,t){var r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error("addCue is failed for: "+t)}catch(r){i.logger.debug("[texttrack-utils]: "+r);var n=new self.TextTrackCue(t.startTime,t.endTime,t.text);n.id=t.id,e.addCue(n)}"disabled"===r&&(e.mode=r)}function a(e){var t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(var r=e.cues.length;r--;)e.removeCue(e.cues[r]);"disabled"===t&&(e.mode=t)}function o(e,t,r){var i=e.mode;if("disabled"===i&&(e.mode="hidden"),e.cues&&e.cues.length>0)for(var n=l(e.cues,t,r),s=0;s<n.length;s++)e.removeCue(n[s]);"disabled"===i&&(e.mode=i)}function l(e,t,r){var i=[],n=function(e,t){if(t<e[0].startTime)return 0;var r=e.length-1;if(t>e[r].endTime)return-1;for(var i=0,n=r;i<=n;){var s=Math.floor((n+i)/2);if(t<e[s].startTime)n=s-1;else{if(!(t>e[s].startTime&&i<r))return s;i=s+1}}return e[i].startTime-t<t-e[n].startTime?i:n}(e,t);if(n>-1)for(var s=n,a=e.length;s<a;s++){var o=e[s];if(o.startTime>=t&&o.endTime<=r)i.push(o);else if(o.startTime>r)return i}return i}},"./src/utils/time-ranges.ts":function(e,t,r){"use strict";r.r(t),t.default={toString:function(e){for(var t="",r=e.length,i=0;i<r;i++)t+="["+e.start(i).toFixed(3)+","+e.end(i).toFixed(3)+"]";return t}}},"./src/utils/timescale-conversion.ts":function(e,t,r){"use strict";function i(e,t,r,i){void 0===r&&(r=1),void 0===i&&(i=!1);var n=e*t*r;return i?Math.round(n):n}function n(e,t,r,n){return void 0===r&&(r=1),void 0===n&&(n=!1),i(e,t,1/r,n)}function s(e,t){return void 0===t&&(t=!1),i(e,1e3,1/9e4,t)}function a(e,t){return void 0===t&&(t=1),i(e,9e4,1/t)}r.r(t),r.d(t,"toTimescaleFromBase",(function(){return i})),r.d(t,"toTimescaleFromScale",(function(){return n})),r.d(t,"toMsFromMpegTsClock",(function(){return s})),r.d(t,"toMpegTsClockFromTimescale",(function(){return a}))},"./src/utils/typed-array.ts":function(e,t,r){"use strict";function i(e,t,r){return Uint8Array.prototype.slice?e.slice(t,r):new Uint8Array(Array.prototype.slice.call(e,t,r))}r.r(t),r.d(t,"sliceUint8",(function(){return i}))},"./src/utils/xhr-loader.ts":function(e,t,r){"use strict";r.r(t);var i=r("./src/utils/logger.ts"),n=r("./src/loader/load-stats.ts"),s=/^age:\s*[\d.]+\s*$/m,a=function(){function e(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=void 0,this.loader=null,this.stats=void 0,this.xhrSetup=e?e.xhrSetup:null,this.stats=new n.LoadStats,this.retryDelay=0}var t=e.prototype;return t.destroy=function(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null},t.abortInternal=function(){var e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))},t.abort=function(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)},t.load=function(e,t,r){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=r,this.retryDelay=t.retryDelay,this.loadInternal()},t.loadInternal=function(){var e=this.config,t=this.context;if(e){var r=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0;var n=this.xhrSetup;try{if(n)try{n(r,t.url)}catch(e){r.open("GET",t.url,!0),n(r,t.url)}r.readyState||r.open("GET",t.url,!0);var s=this.context.headers;if(s)for(var a in s)r.setRequestHeader(a,s[a])}catch(e){return void this.callbacks.onError({code:r.status,text:e.message},t,r)}t.rangeEnd&&r.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),r.onreadystatechange=this.readystatechange.bind(this),r.onprogress=this.loadprogress.bind(this),r.responseType=t.responseType,self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),e.timeout),r.send()}},t.readystatechange=function(){var e=this.context,t=this.loader,r=this.stats;if(e&&t){var n=t.readyState,s=this.config;if(!r.aborted&&n>=2)if(self.clearTimeout(this.requestTimeout),0===r.loading.first&&(r.loading.first=Math.max(self.performance.now(),r.loading.start)),4===n){t.onreadystatechange=null,t.onprogress=null;var a=t.status;if(a>=200&&a<300){var o,l;if(r.loading.end=Math.max(self.performance.now(),r.loading.first),l="arraybuffer"===e.responseType?(o=t.response).byteLength:(o=t.responseText).length,r.loaded=r.total=l,!this.callbacks)return;var h=this.callbacks.onProgress;if(h&&h(r,e,o,t),!this.callbacks)return;var u={url:t.responseURL,data:o};this.callbacks.onSuccess(u,r,e,t)}else r.retry>=s.maxRetry||a>=400&&a<499?(i.logger.error(a+" while loading "+e.url),this.callbacks.onError({code:a,text:t.statusText},e,t)):(i.logger.warn(a+" while loading "+e.url+", retrying in "+this.retryDelay+"..."),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,s.maxRetryDelay),r.retry++)}else self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout)}},t.loadtimeout=function(){i.logger.warn("timeout while loading "+this.context.url);var e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))},t.loadprogress=function(e){var t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)},t.getCacheAge=function(){var e=null;if(this.loader&&s.test(this.loader.getAllResponseHeaders())){var t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e},e}();t.default=a}}).default},e.exports=t())},622:function(e){var t,r,i,n,s;t=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,r=/^(?=([^\/?#]*))\1([^]*)$/,i=/(?:\/|^)\.(?=\/)/g,n=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,s={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var n=s.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");return n.path=s.normalizePath(n.path),s.buildURLFromParts(n)}var a=s.parseURL(t);if(!a)throw new Error("Error trying to parse relative URL.");if(a.scheme)return i.alwaysNormalize?(a.path=s.normalizePath(a.path),s.buildURLFromParts(a)):t;var o=s.parseURL(e);if(!o)throw new Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var l=r.exec(o.path);o.netLoc=l[1],o.path=l[2]}o.netLoc&&!o.path&&(o.path="/");var h={scheme:o.scheme,netLoc:a.netLoc,path:null,params:a.params,query:a.query,fragment:a.fragment};if(!a.netLoc&&(h.netLoc=o.netLoc,"/"!==a.path[0]))if(a.path){var u=o.path,d=u.substring(0,u.lastIndexOf("/")+1)+a.path;h.path=s.normalizePath(d)}else h.path=o.path,a.params||(h.params=o.params,a.query||(h.query=o.query));return null===h.path&&(h.path=i.alwaysNormalize?s.normalizePath(a.path):a.path),s.buildURLFromParts(h)},parseURL:function(e){var r=t.exec(e);return r?{scheme:r[1]||"",netLoc:r[2]||"",path:r[3]||"",params:r[4]||"",query:r[5]||"",fragment:r[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(i,"");e.length!==(e=e.replace(n,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=s},47:(e,t)=>{"use strict";t.l=n;var r=2147483647;function i(e){if(e>r)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=n.prototype,t}function n(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return o(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!n.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|u(e,t),s=i(r),a=s.write(e,t);a!==r&&(s=s.slice(0,a));return s}(e,t);if(ArrayBuffer.isView(e))return l(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(v(e,ArrayBuffer)||e&&v(e.buffer,ArrayBuffer))return function(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var i;i=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r);return i.__proto__=n.prototype,i}(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var s=e.valueOf&&e.valueOf();if(null!=s&&s!==e)return n.from(s,t,r);var a=function(e){if(n.isBuffer(e)){var t=0|h(e.length),r=i(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||y(e.length)?i(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(a)return a;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return n.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function a(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function o(e){return a(e),i(e<0?0:0|h(e))}function l(e){for(var t=e.length<0?0:0|h(e.length),r=i(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function h(e){if(e>=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|e}function u(e,t){if(n.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||v(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;for(var s=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return m(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;default:if(s)return i?-1:m(e).length;t=(""+t).toLowerCase(),s=!0}}function d(e,t,r,i){r=Number(r)||0;const n=e.length-r;i?(i=Number(i))>n&&(i=n):i=n;const s=t.length;let a;for(i>s/2&&(i=s/2),a=0;a<i;++a){const i=parseInt(t.substr(2*a,2),16);if(y(i))return a;e[r+a]=i}return a}function c(e,t,r,i){return p(m(t,e.length-r),e,r,i)}function f(e,t,r,i){return p(function(e){const t=[];for(let r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,i)}function g(e,t,r,i){return p(function(e,t){let r,i,n;const s=[];for(let a=0;a<e.length&&!((t-=2)<0);++a)r=e.charCodeAt(a),i=r>>8,n=r%256,s.push(n),s.push(i);return s}(t,e.length-r),e,r,i)}function p(e,t,r,i){let n;for(n=0;n<i&&!(n+r>=t.length||n>=e.length);++n)t[n+r]=e[n];return n}function m(e,t){var r;t=t||1/0;for(var i=e.length,n=null,s=[],a=0;a<i;++a){if((r=e.charCodeAt(a))>55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===i){(t-=3)>-1&&s.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(t-=3)>-1&&s.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function v(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function y(e){return e!=e}"undefined"!=typeof Symbol&&null!=Symbol.species&&n[Symbol.species]===n&&Object.defineProperty(n,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),n.from=function(e,t,r){return s(e,t,r)},n.prototype.__proto__=Uint8Array.prototype,n.__proto__=Uint8Array,n.alloc=function(e,t,r){return function(e,t,r){return a(e),e<=0?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}(e,t,r)},n.allocUnsafe=function(e){return o(e)},n.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==n.prototype},n.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},n.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return n.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var i=n.allocUnsafe(t),s=0;for(r=0;r<e.length;++r){var a=e[r];if(v(a,Uint8Array)&&(a=n.from(a)),!n.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(i,s),s+=a.length}return i},n.byteLength=u,n.prototype._isBuffer=!0,n.prototype.copy=function(e,t,r,i){if(!n.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i<r&&(i=r),i===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t<i-r&&(i=e.length-t+r);var s=i-r;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,r,i);else if(this===e&&r<t&&t<i)for(var a=s-1;a>=0;--a)e[a+t]=this[a+r];else Uint8Array.prototype.set.call(e,this.subarray(r,i),t);return s},n.prototype.write=function(e,t,r,i){if(void 0===t)i="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)i=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-t;if((void 0===r||r>n)&&(r=n),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let s=!1;for(;;)switch(i){case"hex":return d(this,e,t,r);case"utf8":case"utf-8":return c(this,e,t,r);case"ascii":case"latin1":case"binary":return f(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g(this,e,t,r);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}}},934:e=>{"use strict";function t(e,t){for(const r in t)Object.defineProperty(e,r,{value:t[r],enumerable:!0,configurable:!0});return e}e.exports=function(e,r,i){if(!e||"string"==typeof e)throw new TypeError("Please pass an Error to err-code");i||(i={}),"object"==typeof r&&(i=r,r=void 0),null!=r&&(i.code=r);try{return t(e,i)}catch(r){i.message=e.message,i.stack=e.stack;const n=function(){};return n.prototype=Object.create(Object.getPrototypeOf(e)),t(new n,i)}}},485:function(e,t,r){var i;!function(n){"use strict";function s(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function a(e,t,r,i,n,a){return s((o=s(s(t,e),s(i,a)))<<(l=n)|o>>>32-l,r);var o,l}function o(e,t,r,i,n,s,o){return a(t&r|~t&i,e,t,n,s,o)}function l(e,t,r,i,n,s,o){return a(t&i|r&~i,e,t,n,s,o)}function h(e,t,r,i,n,s,o){return a(t^r^i,e,t,n,s,o)}function u(e,t,r,i,n,s,o){return a(r^(t|~i),e,t,n,s,o)}function d(e,t){var r,i,n,a,d;e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;var c=1732584193,f=-271733879,g=-1732584194,p=271733878;for(r=0;r<e.length;r+=16)i=c,n=f,a=g,d=p,c=o(c,f,g,p,e[r],7,-680876936),p=o(p,c,f,g,e[r+1],12,-389564586),g=o(g,p,c,f,e[r+2],17,606105819),f=o(f,g,p,c,e[r+3],22,-1044525330),c=o(c,f,g,p,e[r+4],7,-176418897),p=o(p,c,f,g,e[r+5],12,1200080426),g=o(g,p,c,f,e[r+6],17,-1473231341),f=o(f,g,p,c,e[r+7],22,-45705983),c=o(c,f,g,p,e[r+8],7,1770035416),p=o(p,c,f,g,e[r+9],12,-1958414417),g=o(g,p,c,f,e[r+10],17,-42063),f=o(f,g,p,c,e[r+11],22,-1990404162),c=o(c,f,g,p,e[r+12],7,1804603682),p=o(p,c,f,g,e[r+13],12,-40341101),g=o(g,p,c,f,e[r+14],17,-1502002290),c=l(c,f=o(f,g,p,c,e[r+15],22,1236535329),g,p,e[r+1],5,-165796510),p=l(p,c,f,g,e[r+6],9,-1069501632),g=l(g,p,c,f,e[r+11],14,643717713),f=l(f,g,p,c,e[r],20,-373897302),c=l(c,f,g,p,e[r+5],5,-701558691),p=l(p,c,f,g,e[r+10],9,38016083),g=l(g,p,c,f,e[r+15],14,-660478335),f=l(f,g,p,c,e[r+4],20,-405537848),c=l(c,f,g,p,e[r+9],5,568446438),p=l(p,c,f,g,e[r+14],9,-1019803690),g=l(g,p,c,f,e[r+3],14,-187363961),f=l(f,g,p,c,e[r+8],20,1163531501),c=l(c,f,g,p,e[r+13],5,-1444681467),p=l(p,c,f,g,e[r+2],9,-51403784),g=l(g,p,c,f,e[r+7],14,1735328473),c=h(c,f=l(f,g,p,c,e[r+12],20,-1926607734),g,p,e[r+5],4,-378558),p=h(p,c,f,g,e[r+8],11,-2022574463),g=h(g,p,c,f,e[r+11],16,1839030562),f=h(f,g,p,c,e[r+14],23,-35309556),c=h(c,f,g,p,e[r+1],4,-1530992060),p=h(p,c,f,g,e[r+4],11,1272893353),g=h(g,p,c,f,e[r+7],16,-155497632),f=h(f,g,p,c,e[r+10],23,-1094730640),c=h(c,f,g,p,e[r+13],4,681279174),p=h(p,c,f,g,e[r],11,-358537222),g=h(g,p,c,f,e[r+3],16,-722521979),f=h(f,g,p,c,e[r+6],23,76029189),c=h(c,f,g,p,e[r+9],4,-640364487),p=h(p,c,f,g,e[r+12],11,-421815835),g=h(g,p,c,f,e[r+15],16,530742520),c=u(c,f=h(f,g,p,c,e[r+2],23,-995338651),g,p,e[r],6,-198630844),p=u(p,c,f,g,e[r+7],10,1126891415),g=u(g,p,c,f,e[r+14],15,-1416354905),f=u(f,g,p,c,e[r+5],21,-57434055),c=u(c,f,g,p,e[r+12],6,1700485571),p=u(p,c,f,g,e[r+3],10,-1894986606),g=u(g,p,c,f,e[r+10],15,-1051523),f=u(f,g,p,c,e[r+1],21,-2054922799),c=u(c,f,g,p,e[r+8],6,1873313359),p=u(p,c,f,g,e[r+15],10,-30611744),g=u(g,p,c,f,e[r+6],15,-1560198380),f=u(f,g,p,c,e[r+13],21,1309151649),c=u(c,f,g,p,e[r+4],6,-145523070),p=u(p,c,f,g,e[r+11],10,-1120210379),g=u(g,p,c,f,e[r+2],15,718787259),f=u(f,g,p,c,e[r+9],21,-343485551),c=s(c,i),f=s(f,n),g=s(g,a),p=s(p,d);return[c,f,g,p]}function c(e){var t,r="",i=32*e.length;for(t=0;t<i;t+=8)r+=String.fromCharCode(e[t>>5]>>>t%32&255);return r}function f(e){var t,r=[];for(r[(e.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;var i=8*e.length;for(t=0;t<i;t+=8)r[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return r}function g(e){var t,r,i="0123456789abcdef",n="";for(r=0;r<e.length;r+=1)t=e.charCodeAt(r),n+=i.charAt(t>>>4&15)+i.charAt(15&t);return n}function p(e){return unescape(encodeURIComponent(e))}function m(e){return function(e){return c(d(f(e),8*e.length))}(p(e))}function v(e,t){return function(e,t){var r,i,n=f(e),s=[],a=[];for(s[15]=a[15]=void 0,n.length>16&&(n=d(n,8*e.length)),r=0;r<16;r+=1)s[r]=909522486^n[r],a[r]=1549556828^n[r];return i=d(s.concat(f(t)),512+8*t.length),c(d(a.concat(i),640))}(p(e),p(t))}function y(e,t,r){return t?r?v(t,e):g(v(t,e)):r?m(e):g(m(e))}void 0===(i=function(){return y}.call(t,r,t,e))||(e.exports=i)}()},422:e=>{const t={ANDROID_WEB:"android-web",IOS_WEB:"iOS-web",PC_NATIVE:"PC-native",PC_WEB:"PC-web"};var r={getNetType:function(){let e=(new RegExp("nettype\\/(\\w*)").exec(i())||[,""])[1].toLowerCase();if(!e&&navigator.connection){switch(navigator.connection.type){case"ethernet":e="ethernet";break;case"cellular":e="cellular";break;default:e="wifi"}}return e},getPlatform:function(){return r.isAndroid()?t.ANDROID_WEB:r.isIOS()?t.IOS_WEB:r.isElectron()?t.PC_NATIVE:t.PC_WEB},isX5:function(){return this.isAndroid()&&/\s(TBS|X5Core)\/[\w\.\-]+/i.test(i())},isPC:function(){return!s(n("os "))&&!s(n("android[/ ]"))},isIOS:function(){return s(n("os "))},isAndroid:function(){return s(n("android[/ ]"))},isIOSSafari:function(){return this.isIOS()&&this.isSafari()},isElectron:function(){return/electron/i.test(i())},isMobile:function(){return r.isAndroid()||r.isIOS()},isSafari:function(){return/^((?!chrome|android).)*safari/i.test(i())},isFirefox:function(){return/firefox/i.test(i())},isChrome:function(){return/chrome/i.test(i())},isLocalHost:function(){return"localhost"===location.hostname},device:t,getBrowser:function(){return r.isX5()?"X5":r.isChrome()?"Chrome":r.isFirefox()?"Firefox":r.isIOSSafari()?"iOS-Safari":r.isSafari()?"Mac-Safari":"Unknown"}};function i(){return navigator.userAgent.toLowerCase()}function n(e){return""+(new RegExp(e+"(\\d+((\\.|_)\\d+)*)").exec(i())||[,0])[1]||void 0}function s(e){return parseFloat((e||"").replace(/\_/g,"."))||0}e.exports=r},77:e=>{let t;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind(globalThis):e=>(t||(t=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0)))}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var i={};return(()=>{"use strict";r.d(i,{default:()=>ir});const e={DC_SIGNAL:"SIGNAL",DC_OPEN:"OPEN",DC_REQUEST:"REQUEST",DC_SEND_REQUEST:"SEND_REQUEST",DC_PIECE_NOT_FOUND:"PIECE_NOT_FOUND",DC_PIECE_ABORT:"PIECE_ABORT",DC_PIECE_CANCEL:"PIECE_CANCEL",DC_CLOSE:"CLOSE",DC_RESPONSE:"RESPONSE",DC_ERROR:"ERROR",DC_PIECE:"PIECE",DC_PIECE_DATA:"PIECE_DATA",DC_TIMEOUT:"TIMEOUT",DC_PIECE_ACK:"PIECE_ACK",DC_METADATA:"METADATA",DC_PLAT_ANDROID:"ANDROID",DC_PLAT_IOS:"IOS",DC_PLAT_WEB:"WEB",DC_CHOKE:"CHOKE",DC_UNCHOKE:"UNCHOKE",DC_HAVE:"HAVE",DC_HAVE_REVERSE:"HAVE_REVERSE",DC_LOST:"LOST",DC_GET_PEERS:"GET_PEERS",DC_PEERS:"PEERS",DC_STATS:"STATS",DC_PEER_SIGNAL:"PEER_SIGNAL",DC_PLAYLIST:"PLAYLIST",BM_LOST:"lost",BM_ADDED_SEG_:"BM_ADDED_SEG_",BM_ADDED_SN_:"BM_ADDED_SN_",BM_SEG_ADDED:"BM_SEG_ADDED",FRAG_CHANGED:"FRAG_CHANGED",FRAG_LOADED:"FRAG_LOADED",FRAG_LOADING:"FRAG_LOADING",RESTART_P2P:"RESTART_P2P",EXCEPTION:"exception",REQUESTING_MAP_HAVE:"REQUESTING_MAP_HAVE",BUILDER_MAP_HAVE:"BUILDER_MAP_HAVE",SYN_OUTPUT:"SYN_OUTPUT",SYN_ERROR:"SYN_ERROR",SYN_PARTIAL:"SYN_PARTIAL"},t={...e,SCH_DCHAVE:"SCH_DCHAVE",SCH_WAIT_PEER:"SCH_WAIT_PEER",SW_PLAYLIST:"SW_PLAYLIST",SW_GET_PLAYLIST:"SW_GET_PLAYLIST",SW_GET_MEDIA:"SW_GET_MEDIA",LEVEL_LOADED:"LEVEL_LOADED",MANIFEST_PARSED:"MANIFEST_PARSED"};var n=r(204),s=r.n(n),a=r(47);const o="__sw_proxy__";function l(e,t){let r;if(e&&("string"==typeof e?r=document.querySelector(e):e instanceof HTMLMediaElement&&(r=e)),!r){const e=[...document.getElementsByTagName("video"),...document.getElementsByTagName("audio")];1===e.length?r=e[0]:(t&&(r=e.find((e=>e.src===t))),r||(r=e.find((e=>e.currentTime>0))))}return r}function h(e,t,r,i=0,n=0){const s=u;let a=i,o=n||r-1;const l=Math.floor(r/s),h=r%s>0?l+1:l;if(e>=0&&(a+=(e+1)*s),t>=0&&t<h){o-=r%s+(h-t-1)*s}return{rangeStart:a,rangeEnd:o+1}}const u=64e3;function d(){return!0}function c(e){return new URL(location.href).searchParams.get(e)}function f(){return Date.parse(new Date)/1e3}function g(e,t){return parseInt(Math.random()*(t-e+1)+e,10)}function p(e,t,r,i=2e3,n=!1){const s=new XMLHttpRequest;return new Promise(((a,l)=>{s.open("GET",e,!0),s.responseType="arraybuffer",s.timeout=i,s.onreadystatechange=e=>{if(4===s.readyState){const e=s.status;206===e?a(s.response):l(`status ${e}`)}},s.onerror=e=>{l("request error")},s.ontimeout=e=>{l("timeout")},s.setRequestHeader("Range",t||"bytes=0-0"),r&&r(s,e),n&&s.setRequestHeader(o,"bypass"),s.send()}))}function m(){if("undefined"==typeof window)return null;var e={RTCPeerConnection:window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection,RTCSessionDescription:window.RTCSessionDescription||window.mozRTCSessionDescription||window.webkitRTCSessionDescription,RTCIceCandidate:window.RTCIceCandidate||window.mozRTCIceCandidate||window.webkitRTCIceCandidate};return e.RTCPeerConnection?e:null}function v(e){const t=a.l.from(e),r=new a.l(e.byteLength);return t.copy(r),r}function y(){return location.protocol.startsWith("https")}function E(e,t){if(e.size<=t)return;const r=[...e.values()];do{e.delete(r.shift())}while(e.size>t)}function S(e){return e instanceof ArrayBuffer&&0!==e.byteLength}function b(e){if(!e)return{};const t=(e=e.substring(6)).split("-");if(2!==t.length)return{};const r=Number(t[0]),i=t[1]?Number(t[1]):-1;return{rangeStart:r,rangeEnd:i>=0?i+1:void 0}}const _={debug:0,info:1,warn:2,error:3,none:4};const T=class{constructor(e){this.logLevel=e,this.onlineDebug=!1,console.debug=console.log,"debug"!==e&&"info"!==e||(this.logLevel="error"),!0===e?this.logLevel="warn":!1===e?this.logLevel="none":e in _||(this.logLevel="error"),this.resetLogger()}enableDebug(){this.onlineDebug=!0;for(let e in _)this[e]=console[e]}resetLogger(){this.onlineDebug=!1;for(let e in _)_[e]<_[this.logLevel]?this[e]=d:this[e]=console[e]}get isDebugLevel(){return _[this.logLevel]<=2||this.onlineDebug}};var L=r(622),P=r.n(L),A=r(77),w=r.n(A);const D=65536;function R(e){return e.replace(/a=ice-options:trickle\s\n/g,"")}class I extends(s()){constructor(e){super(),this.channelName=e.initiator?e.channelName:null,this.initiator=e.initiator||!1,this.channelConfig=e.channelConfig||I.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},I.config,e.config),this.offerOptions=e.offerOptions||{},this.answerOptions=e.answerOptions||{},this.sdpTransform=e.sdpTransform||(e=>e),this.trickle=void 0===e.trickle||e.trickle,this.allowHalfTrickle=void 0!==e.allowHalfTrickle&&e.allowHalfTrickle,this.iceCompleteTimeout=e.iceCompleteTimeout||5e3,this.destroyed=!1,this.destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=e.wrtc&&"object"==typeof e.wrtc?e.wrtc:m(),this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(e){return void w()((()=>this.destroy(e)))}this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=e=>{this._onIceCandidate(e)},this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=e=>{this._setupData(e)},this._needsNegotiation()}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&"open"===this._channel.readyState}signal(e){if(!this.destroyed){if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}e.renegotiate&&this.initiator&&this._needsNegotiation(),e.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(e.candidate):this._pendingCandidates.push(e.candidate)),e.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(e)).then((()=>{this.destroyed||(this._pendingCandidates.forEach((e=>{this._addIceCandidate(e)})),this._pendingCandidates=[],"offer"===this._pc.remoteDescription.type&&this._createAnswer())})).catch((e=>{this.destroy(e)})),e.sdp||e.candidate||e.renegotiate||e.transceiverRequest||this.destroy(new Error("signal() called with invalid signal data"))}}_addIceCandidate(e){const t=new this._wrtc.RTCIceCandidate(e);this._pc.addIceCandidate(t).catch((e=>{var r;!t.address||t.address.endsWith(".local")?(r="Ignoring unsupported ICE candidate.",console.warn(r)):this.destroy(e)}))}send(e){this._channel.send(e)}_needsNegotiation(){this._batchedNegotiation||(this._batchedNegotiation=!0,w()((()=>{this._batchedNegotiation=!1,!this.initiator&&this._firstNegotiation||this.negotiate(),this._firstNegotiation=!1})))}negotiate(){this.initiator?this._isNegotiating?this._queuedNegotiation=!0:setTimeout((()=>{this._createOffer()}),0):this._isNegotiating?this._queuedNegotiation=!0:this.emit("signal",{type:"renegotiate",renegotiate:!0}),this._isNegotiating=!0}destroy(e){this._destroy(e)}_destroy(e){this.destroyed||this.destroying||(this.destroying=!0,w()((()=>{if(this.destroyed=!0,this.destroying=!1,this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._channel){try{this._channel.close()}catch(e){}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch(e){}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,e&&this.emit("error",e),this.emit("close")})))}_setupData(e){if(!e.channel)return this.destroy(new Error("Data channel event is missing `channel` property"));this._channel=e.channel,this._channel.binaryType="arraybuffer","number"==typeof this._channel.bufferedAmountLowThreshold&&(this._channel.bufferedAmountLowThreshold=D),this.channelName=this._channel.label,this._channel.onmessage=e=>{this._onChannelMessage(e)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=e=>{this.destroy(e)};let t=!1;this._closingInterval=setInterval((()=>{this._channel&&"closing"===this._channel.readyState?(t&&this._onChannelClose(),t=!0):t=!1}),5e3)}get isBufferedAmountHigh(){return this._channel.bufferedAmount>D}write(e,t){if(this.destroyed)return t(new Error("cannot write after peer is destroyed"));if(this._connected){try{this.send(e)}catch(e){return this.destroy(e)}this.isBufferedAmountHigh?this._cb=t:t(null)}else this._chunk=e,this._cb=t}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._iceCompleteTimer=setTimeout((()=>{this._iceComplete||(this._iceComplete=!0,this.emit("iceTimeout"),this.emit("_iceComplete"))}),this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then((e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=R(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(this.destroyed)return;const t=this._pc.localDescription||e;this.emit("signal",{type:t.type,sdp:t.sdp})};this._pc.setLocalDescription(e).then((()=>{this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))})).catch((e=>{this.destroy(e)}))})).catch((e=>{this.destroy(e)}))}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then((e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=R(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(this.destroyed)return;const t=this._pc.localDescription||e;this.emit("signal",{type:t.type,sdp:t.sdp})};this._pc.setLocalDescription(e).then((()=>{this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))})).catch((e=>{this.destroy(e)}))})).catch((e=>{this.destroy(e)}))}_onConnectionStateChange(){this.destroyed||"failed"===this._pc.connectionState&&this.destroy(new Error("Connection failed."))}_onIceStateChange(){if(this.destroyed)return;const e=this._pc.iceConnectionState,t=this._pc.iceGatheringState;this.emit("iceStateChange",e,t),"connected"!==e&&"completed"!==e||(this._pcReady=!0,this._maybeReady()),"failed"===e&&this.destroy(new Error("Ice connection failed.")),"closed"===e&&this.destroy(new Error("Ice connection closed."))}getStats(e){const t=e=>("[object Array]"===Object.prototype.toString.call(e.values)&&e.values.forEach((t=>{Object.assign(e,t)})),e);0===this._pc.getStats.length?this._pc.getStats().then((r=>{const i=[];r.forEach((e=>{i.push(t(e))})),e(null,i)}),(t=>e(t))):this._pc.getStats.length>0?this._pc.getStats((r=>{if(this.destroyed)return;const i=[];r.result().forEach((e=>{const r={};e.names().forEach((t=>{r[t]=e.stat(t)})),r.id=e.id,r.type=e.type,r.timestamp=e.timestamp,i.push(t(r))})),e(null,i)}),(t=>e(t))):e(null,[])}_maybeReady(){if(this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;const e=()=>{this.destroyed||this.getStats(((t,r)=>{if(this.destroyed)return;t&&(r=[]);const i={},n={},s={};let a=!1;r.forEach((e=>{"remotecandidate"!==e.type&&"remote-candidate"!==e.type||(i[e.id]=e),"localcandidate"!==e.type&&"local-candidate"!==e.type||(n[e.id]=e),"candidatepair"!==e.type&&"candidate-pair"!==e.type||(s[e.id]=e)}));const o=e=>{a=!0;let t=n[e.localCandidateId];t&&(t.ip||t.address)?(this.localAddress=t.ip||t.address,this.localPort=Number(t.port)):t&&t.ipAddress?(this.localAddress=t.ipAddress,this.localPort=Number(t.portNumber)):"string"==typeof e.googLocalAddress&&(t=e.googLocalAddress.split(":"),this.localAddress=t[0],this.localPort=Number(t[1])),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let r=i[e.remoteCandidateId];r&&(r.ip||r.address)?(this.remoteAddress=r.ip||r.address,this.remotePort=Number(r.port)):r&&r.ipAddress?(this.remoteAddress=r.ipAddress,this.remotePort=Number(r.portNumber)):"string"==typeof e.googRemoteAddress&&(r=e.googRemoteAddress.split(":"),this.remoteAddress=r[0],this.remotePort=Number(r[1])),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4")};if(r.forEach((e=>{"transport"===e.type&&e.selectedCandidatePairId&&o(s[e.selectedCandidatePairId]),("googCandidatePair"===e.type&&"true"===e.googActiveConnection||("candidatepair"===e.type||"candidate-pair"===e.type)&&e.selected)&&o(e)})),a||Object.keys(s).length&&!Object.keys(n).length){if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(t){return this.destroy(t)}this._chunk=null;const e=this._cb;this._cb=null,e(null)}"number"!=typeof this._channel.bufferedAmountLowThreshold&&(this._interval=setInterval((()=>this._onInterval()),150),this._interval.unref&&this._interval.unref()),this.emit("connect")}else setTimeout(e,100)}))};e()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>D||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||("stable"===this._pc.signalingState&&(this._isNegotiating=!1,this._sendersAwaitingStable.forEach((e=>{this._pc.removeTrack(e),this._queuedNegotiation=!0})),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._queuedNegotiation=!1,this._needsNegotiation()):this.emit("negotiated")),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(e){this.destroyed||(e.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex,sdpMid:e.candidate.sdpMid}}):e.candidate||this._iceComplete||(this._iceComplete=!0,this.emit("_iceComplete")),e.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(e){if(this.destroyed)return;let t=e.data;t instanceof ArrayBuffer&&(t=a.l.from(t)),this.emit("data",t)}_onChannelBufferedAmountLow(){if(this.destroyed||!this._cb)return;const e=this._cb;this._cb=null,e(null)}_onChannelOpen(){this._connected||this.destroyed||(this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||this.destroy()}}I.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},I.channelConfig={};const C=I;class k{constructor(e,t,r,i,n=0){this.sn=e,this.segId=t,this.data=r,this.fromPeerId=i,this.level=n||0}static fromSegment(e){return new k(e.sn,e.segId,e.data,e.fromPeerId,e.level)}get size(){return this.data.byteLength}get isSequential(){return this.sn>=0}}var x=r(422),O=r.n(x);class M extends(s()){static get defaultPacketSize(){return u}static get VERSION(){return"8"}constructor(e,t,r,i,n,s={}){super(),this.channel=e.fetcher.channelId,this.logger=e.logger,this.config=n,this.isInitiator=i,this.options=s,this.intermediator=s.intermediator||null,this.signalMsgs=[],this.assignPeerId(t,r),this.platform="unknown",this.super=!1,this.mobile=!1,this.mobileWeb=!1,this.mobileNet=!1,this.connected=!1,this.msgQueue=[],this.miss=0,this.notifySet=new Set,this.bufArr=[],this.packetSize=u,this.sendReqQueue=[],this.downloading=!1,this.uploading=!1,this.choked=!1,this.streamListeners=[],this.pieceMsg={},this.uploadInterrupter={targetSegId:void 0,currentSegId:void 0,canceled:!1},this.datasToSend=[],this.bytesUploaded=0,this.dataWriting=!1,this.timeSendRequest=0,this.timeReceivePiece=0,this.timeSendPiece=0,this.weight=0,this.peersConnected=1,this.uploadSpeed=0,this.gotPeers=!1,this.currentLevel=0,this.currentPos=0,this.useBackupSignal=!1,this.webRTCConfig={};const{stuns:a}=this.options;if(a&&a.length>0){const e=[];a.forEach((t=>{this.logger.info(`use stun ${t}`),e.push({urls:t})})),this.webRTCConfig.iceServers=e}this.config.webRTCConfig&&(this.webRTCConfig={...this.config.webRTCConfig,...this.webRTCConfig}),this.playlistMap=new Map,this._initPeerChannel(),this.notFatalClosed=!1,this.startSN=Number.MAX_SAFE_INTEGER,this.endSN=-1,this._loadedBytes=0}assignPeerId(t,r){this.remotePeerId=r,this.channelId=this.isInitiator?`${t}-${r}`:`${r}-${t}`,r&&(this.timeJoin=f(),this.dataExchangeTs=this.timeJoin,this.gotStatsTs=this.timeJoin,this._startTimer()),setTimeout((()=>{for(let t of this.signalMsgs)this.emit(e.DC_SIGNAL,t,!0)}),0)}_startTimer(){this.connTimeout=setTimeout((()=>{this.logger.warn(`dc ${this.channelId} connection timeout`),this.emit(e.DC_TIMEOUT)}),25e3)}get isAvailable(){return this.downloadNum<2&&!this.choked}get isAvailableUrgently(){return!this.downloading&&!this.choked}cancelDownload(t,r,i){if(i&&this.downloading&&!(this.streamListeners.length>0||this.remainAttachments<=2))return this.logger.info(`cancel download ${i} remain packets ${this.remainAttachments}`),this.timeReceivePiece=0,this.sendJson({event:e.DC_PIECE_CANCEL,sn:t,level:r,seg_id:i})}addStreamListener(e,t,r){this.streamListeners.push({handler:r,peerId:t})}removeStreamListener(e){this.streamListeners=this.streamListeners.filter((t=>t.peerId!==e||(t.handler(void 0,void 0,!0,"aborted by cancel"),!1)))}_initPeerChannel(){const t=new C({initiator:this.isInitiator,trickle:this.options.trickle||!1,config:this.webRTCConfig});this._datachannel=t,t.on("error",(t=>{let r=!0;"Ice connection failed."===t.message&&this.notFatalClosed&&(r=!1),this.emit(e.DC_ERROR,r)})),t.on("signal",(t=>{this.signalMsgs.push(t),this.emit(e.DC_SIGNAL,t)}));t.on("connect",(()=>{for(this.logger.info(`datachannel CONNECTED to ${this.remotePeerId} from ${this.intermediator?"peer":"server"}`),this.connected=!0,clearTimeout(this.connTimeout),this.signalMsgs=[],this.emit(e.DC_OPEN);this.msgQueue.length>0;){let e=this.msgQueue.shift();this.emit(e.event,e)}})),t.on("data",(t=>{const{logger:r}=this;if("string"==typeof t){let i=JSON.parse(t);if(!this.connected)return void this.msgQueue.push(i);let n,s=i.event;switch(n=s!==e.DC_PLAYLIST&&s!==e.DC_PEER_SIGNAL?`string: ${t}`:`event: ${s}`,r.debug(`datachannel receive ${n} from ${this.remotePeerId}`),s){case e.DC_HAVE:if(this.emit(i.event,i),!i.sn)return;this.config.live||(i.sn<this.startSN&&(this.startSN=i.sn),i.sn>this.endSN&&(this.endSN=i.sn));break;case e.DC_PIECE:this.downloading=!0,this.dataExchangeTs=f(),this.timeReceivePiece=performance.now(),this.pieceMsg=i,this._prepareForBinary(i.attachments,i.seg_id,i.sn,i.size),this.emit(i.event,i);break;case e.DC_PIECE_CANCEL:this.uploadInterrupter.targetSegId=i.seg_id,this.emit(i.event,i);break;case e.DC_PIECE_NOT_FOUND:this._sendNextReq()||(this.downloading=!1),this.emit(i.event,i);break;case e.DC_REQUEST:this._handleRequestMsg(i);break;case e.DC_PIECE_ACK:this.uploadInterrupter.canceled||(this._handlePieceAck(i.size,i.miss),this.emit(i.event,i));break;case e.DC_STATS:this._handleStats(i);break;case e.DC_PLAYLIST:this.config.sharePlaylist&&this._handlePlaylist(i);break;case e.DC_METADATA:this._handleMetadata(i);break;case e.DC_PIECE_ABORT:this.downloading&&(this._notifyDownloadListenersAbort("aborted by upstream peer"),this.emit(e.DC_PIECE_ABORT,i));break;case e.DC_CHOKE:r.info(`choke peer ${this.remotePeerId}`),this.choked=!0;break;case e.DC_UNCHOKE:r.info(`unchoke peer ${this.remotePeerId}`),this.choked=!1;break;case e.DC_CLOSE:this.emit(i.event,i.fatal||!1);break;default:this.emit(i.event,i)}}else{if(!t)return void r.error("datachannel on data is undefined!");if(!this.downloading)return void r.warn(`peer not downloading, data size ${t.byteLength} pieceMsg ${JSON.stringify(this.pieceMsg)}`);this._handleBinaryMsg(t)}})),t.once("close",(()=>{this.emit(e.DC_CLOSE,!1)})),t.on("iceStateChange",((e,t)=>{"disconnected"===e&&(this.logger.warn(`${this.remotePeerId} disconnected`),this.connected=!1)}))}sendJson(t){t.event!==e.DC_PLAYLIST&&t.event!==e.DC_PEER_SIGNAL?this.logger.debug(`dc bufferSize ${this._datachannel.bufferSize} send ${JSON.stringify(t)} to ${this.remotePeerId}`):this.logger.debug(`dc send event ${t.event} to ${this.remotePeerId}`);const r=JSON.stringify(t);return r.length>u?(this.logger.error("string to send is too large"),!1):this.send(r,!1)}send(e,t=!0){return t?(this.datasToSend.push(e),this.dataWriting||this._sendDataSync(),!0):this.sendImmediately(e)}_checkIfNeedInterrupt(){const{targetSegId:t,currentSegId:r,canceled:i}=this.uploadInterrupter;return!!i||!(!t||t!==r)&&(this.logger.info("cancel send data"),this.sendMsgPieceAbort(`${r} transfer canceled`),this.datasToSend=[],this.uploadInterrupter.canceled=!0,this._handlePieceAck(this.bytesUploaded,0),this.emit(e.DC_PIECE_ACK,{seg_id:r,size:this.bytesUploaded,canceled:!0}),!0)}_sendDataSync(){if(this._checkIfNeedInterrupt()||0===this.datasToSend.length)return void(this.dataWriting=!1);this.dataWriting=!0;const t=this.datasToSend.shift();t?(this.bytesUploaded+=t.byteLength,this._datachannel.write(t,(t=>{if(t)return this.dataWriting=!1,this.logger.warn(t.message),void this.emit(e.DC_ERROR,!1);this._sendDataSync()}))):this.logger.error("sendDataSync data is undefined!")}sendImmediately(t){if(this._datachannel.connected)try{return this._datachannel.send(t),!0}catch(t){this.logger.warn(`datachannel ${this.channelId} send data failed, close it`),this.emit(e.DC_ERROR,!1)}return!1}sendMsgHave(t,r,i={}){const n=i.reverse||void 0;delete i.reverse,this.sendJson({event:n?e.DC_HAVE_REVERSE:e.DC_HAVE,sn:t,seg_id:r,...i})}sendPieceNotFound(t,r,i={}){this.uploading=!1,this.sendJson({event:e.DC_PIECE_NOT_FOUND,seg_id:r,sn:t,...i})}sendPeers(t){this.sendJson({event:e.DC_PEERS,peers:t})}sendPeersRequest(){this.sendJson({event:e.DC_GET_PEERS})}sendMsgStats(t,r={}){const i={event:e.DC_STATS,total_conns:t,...r};this.sendJson(i)}sendMsgPlaylist(t,r,i){const n=this.playlistMap.get(t);if(n&&n.seq>=i)return;const s={event:e.DC_PLAYLIST,url:t,data:r,seq:i};this.playlistMap.set(t,{data:r,seq:i}),this.sendJson(s)}sendMsgSignal(t,r,i){return this.sendJson({event:e.DC_PEER_SIGNAL,action:"signal",to_peer_id:t,from_peer_id:r,data:i})}sendMsgSignalReject(t,r,i,n=!1){return this.sendJson({event:e.DC_PEER_SIGNAL,action:"reject",to_peer_id:t,from_peer_id:r,reason:i,fatal:n})}sendMetaData(t,r,i,n=!1){this.isInitiator&&(this.timeSendRequest=performance.now()),this.sendJson({event:e.DC_METADATA,field:t,platform:e.DC_PLAT_WEB,mobile:!!O().isMobile(),mobile_net:n,channel:this.channel,version:"2.7.13",sequential:r,peers:i})}sendPartialBuffer(e,t,r={}){this.sendMsgPiece(e,r);for(let e=0;e<t.length;e++)this.send(t[e])}sendMsgPiece(e,t={}){const{targetSegId:r}=this.uploadInterrupter;if(r&&r===e.seg_id)return this.logger.info("cancel send piece msg"),this.sendMsgPieceAbort(`${r} piece canceled`),void(this.uploadInterrupter.canceled=!0);this.uploadInterrupter={currentSegId:e.seg_id,targetSegId:void 0,canceled:!1},this.datasToSend=[],this.bytesUploaded=0,e.ext||(e.ext={}),e.ext.from&&t.from&&(t.from=`${e.ext.from}->${t.from}`),t.incompletes&&e.ext.incompletes&&(t.incompletes+=e.ext.incompletes),t=Object.assign({},e.ext,t);const i={...e,ext:t};this.sendJson(i)}sendBuffer(t,r,i,n={}){const s=n.reverse||void 0;if(delete n.reverse,!i)return void this.logger.error("sendBuffer payload is undefined!");let a=i.byteLength,o=0,l=0;a%this.packetSize==0?l=a/this.packetSize:(l=Math.floor(a/this.packetSize)+1,o=a%this.packetSize);let h={event:e.DC_PIECE,attachments:l,seg_id:r,sn:t,level:n.level,size:a,reverse:s};delete n.level,this.sendMsgPiece(h,n);const u=function(e,t,r,i){let n=[];if(i){let s;for(let i=0;i<r-1;i++)s=e.slice(i*t,(i+1)*t),n.push(s);s=e.slice(e.byteLength-i,e.byteLength),n.push(s)}else{let i;for(let s=0;s<r;s++)i=e.slice(s*t,(s+1)*t),n.push(i)}return n}(i,this.packetSize,l,o);this._sendBufferArray(u,s),this.uploading=!1,this.timeSendPiece=performance.now()}get downloadNum(){return this.downloading?this.sendReqQueue.length+1:0}requestDataById(t,r,i=!1,n={}){const s={event:e.DC_REQUEST,seg_id:t,sn:r,...n,urgent:i};this.downloading?(this.logger.info(`${this.remotePeerId} add req ${t} in queue`),i?this.sendReqQueue.unshift(s):this.sendReqQueue.push(s)):this._realRequestData(s)}requestDataBySN(t,r=!1,i={}){const n={event:e.DC_REQUEST,sn:t,...i,urgent:r};this.downloading?(this.logger.info(`add req ${t} in queue`),r?this.sendReqQueue.unshift(n):this.sendReqQueue.push(n)):this._realRequestData(n)}_sendBufferArray(e,t=!1){const r=t?e.reverse():e;for(let e=0;e<r.length;e++)this.send(r[e])}_realRequestData(t){this.sendJson(t),this.timeSendRequest=performance.now(),this.downloading=!0,this.emit(e.DC_SEND_REQUEST)}shouldWaitForRemain(e){return 0!==this.bufArrSize&&(0!==this.timeReceivePiece&&this.currentLoadSpeed()>=this.minRequiredSpeed(e))}close(t){t||(this.notFatalClosed=!0),this.emit(e.DC_CLOSE,t)}receiveSignal(e){e&&this._datachannel.signal(e)}_notifyDownloadListenersAbort(e){for(let t of this.streamListeners){const{handler:r}=t;r(void 0,void 0,!0,e)}this.streamListeners=[]}destroy(t=!0){this.logger.info(`destroy datachannel ${this.channelId}`),this.chokeTimer&&clearTimeout(this.chokeTimer),this.connTimeout&&clearTimeout(this.connTimeout),this.uploading&&this.sendMsgPieceAbort("peer is closing"),this._notifyDownloadListenersAbort("upstream peer is closed");let r={event:e.DC_CLOSE,fatal:t};this.sendJson(r),this._datachannel.removeAllListeners(),this.removeAllListeners(),this._datachannel.destroy()}_handleBinaryMsg(t){const{attachments:r,level:i,reverse:n}=this.pieceMsg;this.listenerCount(e.DC_RESPONSE)>0&&this.bufArr.push(t),this._loadedBytes+=t.byteLength,this.remainAttachments--;let s=n?this.remainAttachments+1:r-this.remainAttachments;const a=0===this.remainAttachments;if(this.emit(e.DC_PIECE_DATA,this.bufSN,this.segId,t,s,a,this.pieceMsg),this.streamListeners.length>0)for(let e of this.streamListeners){const{handler:r}=e;r(this.bufSN,this.segId,!1,t,a)}if(a){if(this.streamListeners=[],this.timeSendRequest>0)if(this.super)this.weight=1;else{const e=this.expectedSize/(performance.now()-this.timeSendRequest);this.weight=this.weight>0?.6*this.weight+.4*e:e}this.sendJson({event:e.DC_PIECE_ACK,sn:this.bufSN,seg_id:this.segId,level:i,size:this.expectedSize,miss:this.miss||void 0}),this.timeSendRequest=0,this.timeReceivePiece=0,this._sendNextReq()||(this.downloading=!1),this._handleBinaryData(n)}}_sendNextReq(){if(this.sendReqQueue.length>0){const e=this.sendReqQueue.shift();return this.logger.info(`get msg from sendReqQueue ${JSON.stringify(e)}`),this._realRequestData(e),!0}return!1}_handlePlaylist(e){const{url:t,data:r,seq:i}=e;this.playlistMap.set(t,{data:r,seq:i})}getLatestPlaylist(e,t){if(!this.playlistMap.has(e))return null;const r=this.playlistMap.get(e);return r.seq<=t||r.seq>t+2?null:r}_handleMetadata(t){const{logger:r}=this;if(this.isInitiator){const e=performance.now()-this.timeSendRequest;e>0&&(this.weight=1e5/e,r.info(`handle Metadata from ${this.remotePeerId} initial weight ${this.weight}`)),this.timeSendRequest=0}const i=t.channel;if(this.channel!==i)return r.error(`peer channel ${i} not matched!`),void this.emit(e.DC_ERROR,!0);if(t.super){r.info(`got super peer ${this.remotePeerId}`),this.super=!0;const{token:i}=this.config;if(i&&t.token!==i)return r.warn(`super peer token ${t.token} not matched!`),void this.emit(e.DC_ERROR,!0)}switch(t.platform){case e.DC_PLAT_ANDROID:this.platform=e.DC_PLAT_ANDROID;break;case e.DC_PLAT_IOS:this.platform=e.DC_PLAT_IOS;break;case e.DC_PLAT_WEB:this.platform=e.DC_PLAT_WEB}if(this.mobile=t.mobile||!1,this.mobileNet=t.mobile_net||!1,this.mobileWeb=this.mobile&&this.platform===e.DC_PLAT_WEB||!1,this.sequential=t.sequential,r.info(`${this.remotePeerId} platform ${this.platform} sequential ${this.sequential}`),t.peers&&(this.peersConnected+=t.peers,r.info(`${this.remotePeerId} now has ${this.peersConnected} peers`)),this.emit(e.DC_METADATA,t),t.field&&!this.config.live&&t.sequential){const{field:e}=t;if(Array.isArray(e))this._handleField(e);else for(let t in e)this._handleField(e[t])}}_handleField(e){e.forEach((e=>{e>=0&&(e<this.startSN&&(this.startSN=e),e>this.endSN&&(this.endSN=e))}))}_handleStats(e){this.gotStatsTs=f();const t=e.total_conns;t>0&&this.peersConnected!==t&&(this.peersConnected=t,this.logger.info(`${this.remotePeerId} now has ${this.peersConnected} peers`)),e.level&&(this.currentLevel=e.level),e.pos&&(this.currentPos=e.pos)}_handleRequestMsg(t){if(this.dataExchangeTs=f(),this.uploading)return this.logger.warn(`${this.remotePeerId} is uploading when receive request`),void this.sendPieceNotFound(t.sn,t.seg_id,{level:t.level});this.uploading=!0,this.emit(e.DC_REQUEST,t)}_handlePieceAck(e,t){0!==this.timeSendPiece&&(this.uploadSpeed=Math.round(e/(performance.now()-this.timeSendPiece)*2),this.timeSendPiece=0,this.logger.info(`${this.remotePeerId} uploadSpeed is ${this.uploadSpeed}`)),t>0&&this.logger.warn(`peer ${this.remotePeerId} miss ${t}`)}_prepareForBinary(e,t,r,i){this.bufArr=[],this._loadedBytes=0,this.remainAttachments=e,this.segId=t,this.bufSN=r,this.expectedSize=i}_handleBinaryData(t=!1){if(this.listenerCount(e.DC_RESPONSE)>0){t&&this.bufArr.reverse();let r=a.l.concat(this.bufArr);const i=r.byteLength;if(i===this.expectedSize){let t=r.buffer;const i=new k(this.bufSN,this.segId,t,this.remotePeerId,this.pieceMsg.level);this.emit(e.DC_RESPONSE,i,this.weight)}else this.logger.error(`${this.segId} expectedSize ${this.expectedSize} != byteLength ${i}`)}this.segId="",this.bufArr=[]}checkIfNeedChoke(e=!1){const{logger:t}=this,r=performance.now()-this.timeSendRequest;if(!e&&r<1500)t.info(`duration ${r} no need choke`);else if(this.miss++,t.info(`${this.remotePeerId} miss ${this.miss}`),this.miss>2&&!this.choked){this.choked=!0;const e=30*this.miss;e<=150?(t.warn(`datachannel ${this.channelId} is choked`),this.chokeTimer=setTimeout((()=>{this.choked=!1,t.warn(`datachannel ${this.channelId} is unchoked`)}),1e3*e)):t.warn(`datachannel ${this.channelId} is choked permanently`)}}get bufArrSize(){return this.downloading?this.pieceMsg.attachments-this.remainAttachments:0}loadtimeout(){const{logger:e,pieceMsg:t}=this;return e.warn(`timeout while downloading from ${this.remotePeerId}, ${this.bufArrSize} of ${t.attachments} packets loaded`),this.checkIfNeedChoke(),!0}sendMsgPieceAbort(t){(this.uploading||0!==this.datasToSend.length)&&(this.uploading=!1,this.sendJson({event:e.DC_PIECE_ABORT,reason:t}))}loadedBytes(){return this._loadedBytes}currentLoadSpeed(){return 0===this.timeReceivePiece?0:this.loadedBytes()/(performance.now()-this.timeReceivePiece)}minRequiredSpeed(e){return(this.pieceMsg.size-this.loadedBytes())/e}}const N=M,F={DPlayer:"dplayer",CBPlayer:"cbplayer",jwplayer:"jwplayer",videojs:"videojs",Clappr:"clappr",ckplayer:"ckplayer",MediaElementPlayer:"mediaelement",MediaElement:"mediaelement",TcPlayer:"tcplayer",flowplayer:"flowplayer",Chimee:"chimee",ChimeePlayer:"chimee",HlsJsPlayer:"xgplayer",fluidPlayer:"fluidplayer",OpenPlayer:"openplayer",Plyr:"plyr",Playerjs:"playerjs",Aliplayer:"aliplayer",shaka:"shakaplayer"};function B(){let e;for(let t in F)if(window[t]){e=F[t];break}return e}const U="nllL",G="d3NzJ",j="==",H="TNBLy9z",$="aWduY",W="mNvbQ",q="WwuY2RuY";class V extends(s()){constructor(e={}){if(super(),this.p2pEnabled=!(!1===e.p2pEnabled||"0"===c("_p2p")),e.tag&&e.tag.length>20)throw new Error("Tag is too long");if(e.appName&&e.appName.length>30)throw new Error("appName is too long");if(e.appId&&e.appId.length>30)throw new Error("appId is too long");if(e.token&&e.token.length>20)throw new Error("Token is too long")}initLogger(){const{config:e}=this;e.showSlogan&&"en"==("zh-CN"===(navigator.language||navigator.userLanguage)?"cn":"en")&&console.log(`%cLet the browsers become your unlimitedly scalable CDN!\n%c${window.atob("aHR0cHM6Ly9zd2FybWNsb3VkLm5ldC9lbi8=")}`,"color: dodgerblue; padding:20px 0; font-size: x-large","font-size: medium; padding-bottom:15px");const t=new T(e.logLevel);return e.logger=this.logger=t,t}getExtraForStats(){return{}}getExtraForPeersRequest(){const e={};return e.num_want=this._getNumWant(),e}_getNumWant(){const{tracker:e}=this,t=e.scheduler.peersNum;if(t>0&&e.maxConnsActive-t>0)return e.maxConnsActive-t}makeChannelId(e,t){if(!e||"string"!=typeof e){const e="token is required while using customized channelId!";throw console.error(e),new Error(e)}return"function"==typeof t?(r,i)=>`${e}-${t(r,i)}`:()=>`${e}-${t}`}makeSignalId(){let e="";const{config:t}=this,r=decodeURIComponent(window.atob(G+H+$+q+U+W+j)),{wsSignalerAddr:i}=t;if(i){let n;"object"==typeof i?(i.main||(i.main=r),n=i.main):"string"==typeof i&&(n=i,t.wsSignalerAddr={main:n}),n===r&&(n=void 0),n&&!t.wsSignalerAddr.backup&&(e=P().parseURL(n).netLoc.substr(2))}else t.wsSignalerAddr={main:r,default:!0};return e}get commonBrowserInfo(){const e=O().getPlatform(),t=O().getNetType()||"wifi";return this.netType=t,{device:e,netType:t,player:B()||void 0}}get isMobileNet(){return"wifi"!==this.netType&&"ethernet"!==this.netType}setupWindowListeners(e){const t=["iPad","iPhone"].indexOf(navigator.platform)>=0?"pagehide":"beforeunload",r=()=>{this.fetcher&&this.fetcher.postStatsWithBeacon(),this.p2pEnabled&&this.disableP2P(),window.removeEventListener(t,r)};e?window.removeEventListener(t,r):window.addEventListener(t,r)}destroy(){this.disableP2P(!0),this.removeAllListeners(),this.setupWindowListeners(!0)}enableP2P(){return this.p2pEnabled?null:(this.logger&&this.logger.info("enable P2P"),this.config.p2pEnabled=this.p2pEnabled=!0,this.browserInfo?(this._init(this.channel,this.browserInfo),this):null)}get version(){return V.version}static isSupported(){const e=m();return!(!e||void 0===e.RTCPeerConnection.prototype.createDataChannel)}static get TrackerZone(){return{CN:"eu",EU:"eu",HK:"hk",USA:"us"}}}V.version="2.7.13",V.protocolVersion=N.VERSION;const z=V;let K={wsMaxRetries:10,p2pEnabled:!0,wifiOnly:!1,memoryCacheLimit:{pc:629145600,mobile:314572800},dcDownloadTimeout:25,logLevel:"error",tag:"",webRTCConfig:{},token:void 0,appName:void 0,appId:void 0,prefetchNum:5,showSlogan:!0,trickleICE:!0,announceLocation:"eu",trackerZone:void 0,geoIpPreflight:!0,getStats:function(e,t,r){},getPeerId:function(e){},getPeersInfo:function(e){}};const Y={...K,httpLoadTime:0,sharePlaylist:!1,useHttpRange:!0,hlsjsInstance:null,proxyOnly:!1,p2pBlackList:["aac","mp3","vtt","webvtt","key"],live:!0,swFile:"./sw.js",swScope:"./",swAutoRegister:!0,mediaElem:void 0,httpStreamEnabled:!0,diskCacheLimit:{pc:262144e4,mobile:1572864e3},useDiskCache:!0,waitForPeer:!1,waitForPeerTimeout:4,strictSegmentId:!1},X="store not init";function Q(e){return new Promise(((t,r)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>r(e.error)}))}function J(e,t){return t?t("readonly",(t=>Q(t.get(e)))):Promise.reject(X)}function Z(e,t,r){return r?r("readwrite",(r=>(r.put(t,e),Q(r.transaction)))):Promise.reject(X)}function ee(e,t){return t?t("readwrite",(t=>(t.delete(e),Q(t.transaction)))):Promise.reject(X)}function te(e,t){return e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},Q(e.transaction)}const re="size";class ie extends(s()){constructor(e,t){super(),this.name="SegmentStore",this.logger=t.logger,this.logger.info("use SegmentStore"),this.channel=e.channel;const r=e.browserInfo.device;this.isPC=r===O().device.PC_WEB||r===O().device.PC_NATIVE,this.maxBufSize=this.isPC?t.diskCacheLimit.pc:t.diskCacheLimit.mobile,this.overflowed=!1,this.loadingSN=0}async setupStore(){if(navigator.storage&&navigator.storage.estimate){const e=await navigator.storage.estimate(),t=Math.floor(e.quota-e.usage);t<this.maxBufSize&&(this.maxBufSize=t-104857600)}return new Promise((async(e,t)=>{if(this.isPC&&this.maxBufSize<629145600||!this.isPC&&this.maxBufSize<367001600)return void t("disk storage not enough");let r=function(e,t){const r=indexedDB.open(e);r.onupgradeneeded=()=>{const e=r.result;t.forEach((t=>{e.createObjectStore(t)}))};const i=Q(r);return t.map((e=>(t,r)=>i.then((i=>r(i.transaction(e,t).objectStore(e))))))}(this.channel,["segments","id2Sn","metadata"]);this.segmentsStore=r[0],this.id2SnStore=r[1],this.metaStore=r[2];const i=setTimeout((()=>{t("setupStore timeout")}),500);this._initMetaStore().then((()=>{clearTimeout(i),e()})).catch((e=>{t(e)}))}))}_initMetaStore(){return new Promise(((e,t)=>{J(re,this.metaStore).then((t=>{t||(this.logger.info("init MetaStore size"),Z(re,0,this.metaStore)),e()})).catch((e=>{t(e)}))}))}currBufSize(){return J(re,this.metaStore)}async hasSegOfId(e){if(!e)return Promise.resolve(!1);const t=await J(e,this.id2SnStore);return new Promise(((r,i)=>{void 0!==t?J(t,this.segmentsStore).then((t=>{t&&t.length>0&&t.some((t=>t.segId===e))?r(!0):r(!1)})).catch((e=>{this.logger.error(e),r(!1)})):r(!1)}))}async getSegById(e){if(!e)return null;const t=await J(e,this.id2SnStore);return new Promise(((e,r)=>{void 0!==t?J(t,this.segmentsStore).then((t=>{if(t&&t.length>0){const r=t[0];if(!S(r.data))return this.logger.error(`getSegById ${r.sn} is not buffer`),void e(null);e(k.fromSegment(r))}else e(null)})).catch((t=>{this.logger.error(t),e(null)})):e(null)}))}getSegIdBySN(e){return new Promise(((t,r)=>{J(e,this.segmentsStore).then((e=>{e&&e.length>0?t(e[0].segId):t(null)})).catch((e=>{this.logger.error(e),t(null)}))}))}putSeg(t){const{logger:r}=this;S(t.data)?this._addSeg(t).then((t=>{this.emit(`${e.BM_ADDED_SN_}${t.sn}`,t),this.emit(e.BM_SEG_ADDED,t)})).catch((e=>{r.error(e),("QuotaExceededError"===e.name||e.inner&&"QuotaExceededError"===e.inner.name)&&this._trimDisk(!0)})):r.error(`putSeg ${t.sn} is not buffer`)}_addSeg(e){const{segId:t,sn:r}=e;return Z(t,r,this.id2SnStore),new Promise(((i,n)=>{J(r,this.segmentsStore).then((s=>{s?0===s.filter((e=>e.segId===t)).length&&(s.push(this._segmentToCache(e)),Z(r,s,this.segmentsStore).then((()=>{this._increaseBufSize(e.data.byteLength),i(e)})).catch((e=>{n(e)}))):Z(r,[this._segmentToCache(e)],this.segmentsStore).then((()=>{this._increaseBufSize(e.data.byteLength),i(e)})).catch((e=>{n(e)}))})).catch((e=>{n(e)}))}))}async _trimDisk(t=!1){let r=this.maxBufSize;const{logger:i}=this;let n=await this.currBufSize();var s;(t&&(r=n-52428800,r<0&&(r=0)),n<r)||(s=this.segmentsStore,s?s("readonly",(e=>{if(e.getAllKeys)return Q(e.getAllKeys());const t=[];return te(e,(e=>t.push(e.key))).then((()=>t))})):Promise.reject(X)).then((async t=>{const s=t.sort(((e,t)=>e-t));let a=0;do{if(a++>10){console.error("too much loops in SegmentStore");break}const t=s.shift();if(void 0===t){i.error("lastSN not found");continue}if(t>=this.loadingSN){i.warn(`trimDisk failed, loadingSN ${this.loadingSN}`);break}const r=s[0],o=await J(t,this.segmentsStore);if(!o){i.warn("lastSeg not found");continue}let l=0;o.forEach((e=>{l+=e.data.byteLength})),ee(t,this.segmentsStore).then((()=>{this._decreaseBufSize(parseInt(l))})),o.forEach((n=>{ee(n.segId,this.id2SnStore),i.info(`pop seg ${n.segId} size ${n.data.byteLength}`),this.emit(e.BM_LOST,{sn:t,segId:n.segId,next:r,level:n.level})})),n-=l,i.info(`pop sn ${t} size ${l} currBufSize ${n}`),this.overflowed||(this.overflowed=!0)}while(n>=r)}))}_decreaseBufSize(e){J(re,this.metaStore).then((t=>{t&&Z(re,t-e,this.metaStore)})).catch((e=>{this.logger.error(e)}))}_increaseBufSize(e){J(re,this.metaStore).then((t=>{Z(re,t+e,this.metaStore),this._trimDisk()})).catch((e=>{this.logger.error(e)}))}_segmentToCache(e){return{data:e.data,level:e.level,segId:e.segId,sn:e.sn}}clear(){this.logger.warn("clear segment store");try{this._clearDisk()}catch(e){}}_clearDisk(e){return function(e){return new Promise(((t,r)=>{indexedDB.databases().then((i=>{const n=i.filter((t=>t.name!==e)).map((e=>new Promise(((t,r)=>{const i=indexedDB.deleteDatabase(e.name);i.onsuccess=t,i.onerror=r,i.onblocked=r}))));Promise.all(n).then(t).catch(r)})).catch(r)})).catch((e=>{}))}(e)}destroy(){this.clear(),this.removeAllListeners()}}const ne=ie;class se extends(s()){constructor(e,t){super(),this.name="SegmentCache",this.logger=t.logger,this.logger.info("use SegmentCache");const r=e.browserInfo.device;if(this.maxBufSize=r===O().device.PC_WEB||r===O().device.PC_NATIVE?t.memoryCacheLimit.pc:t.memoryCacheLimit.mobile,t.live)this.maxBufSize=31457280;else{const e=function(){const{memory:e}=performance;return e?e.jsHeapSizeLimit-e.usedJSHeapSize:-1}();e>=0&&e<this.maxBufSize&&(this.maxBufSize=e-31457280)}this._segPool=new Map,this._currBufSize=0,this.id2Sn=new Map,this.overflowed=!1,this.loadingSN=0}get currBufSize(){return this._currBufSize}hasSegOfId(e){return new Promise(((t,r)=>{const i=this.id2Sn.get(e);this._segPool.has(i)?t(this._segPool.get(i).some((t=>t.segId===e))):t(!1)}))}getSegById(e){const t=this.id2Sn.get(e);return new Promise(((r,i)=>{if(!this._segPool.has(t))return void r(null);const n=this._segPool.get(t);for(let t of n)if(t.segId===e)return void r(t);r(null)}))}getSegIdBySN(e){return new Promise(((t,r)=>{if(this._segPool.has(e)){t(this._segPool.get(e)[0].segId)}else t(null)}))}_calSegPoolSize(){let e=0;return this._segPool.forEach((t=>{t.forEach((t=>{e+=t.size}))})),e}putSeg(e){this._currBufSize>=1.5*this.maxBufSize&&(this._currBufSize=this._calSegPoolSize(),this._currBufSize>=1.5*this.maxBufSize&&(this.clear(),this.overflowed=!1)),S(e.data)?this._addSeg(e):this.logger.error(`putSeg ${e.sn} is not buffer`)}_addSeg(t){const{logger:r}=this,{segId:i,sn:n,size:s}=t;if(this.id2Sn.set(i,n),this._segPool.has(n)){this._segPool.get(n).push(t)}else this._segPool.set(n,[t]);this._currBufSize+=parseInt(s);const a=this._segPool.size;if(this.emit(`${e.BM_ADDED_SN_}${t.sn}`,t),this.emit(e.BM_SEG_ADDED,t),this._currBufSize<this.maxBufSize||a<=5)return;const o=Array.from(this._segPool.keys()).sort(((e,t)=>e-t));let l=0;do{if(l++>10){console.error("too much loops in SegmentCache");break}const t=o.shift();if(void 0===t){r.error("lastSN not found");continue}const i=o[0],n=this._segPool.get(t);if(!n){r.error("lastSeg not found");continue}let s=0;n.forEach((e=>{s+=e.size})),this._currBufSize-=parseInt(s),this._segPool.delete(t),n.forEach((r=>{this.id2Sn.delete(r.segId),this.emit(e.BM_LOST,{sn:t,segId:r.segId,next:i,level:r.level})})),r.info(`pop sn ${t} size ${s} currBufSize ${this._currBufSize}`),this.overflowed||(this.overflowed=!0)}while(this._currBufSize>=this.maxBufSize&&this._segPool.size>5)}clear(){this.logger.warn("clear segment cache"),this._segPool.clear(),this.id2Sn.clear(),this._currBufSize=0}destroy(){this.clear(),this.removeAllListeners()}}const ae=se;class oe extends z{constructor(e={}){super(e),e.validateSegment||(e.validateSegment=function(e,t){return!0}),this.config=Object.assign({},Y,e),this.rangeTested=!1,this.lastLevel=0,this.multiBitrate=!1}setup(){let{token:e,channelId:t,segmentId:r,strictSegmentId:i}=this.config,n=e=>{const t=P().parseURL(e);return`${t.netLoc.substr(2)+t.path.substring(0,t.path.lastIndexOf("."))}`},s=i?(e,t,r,i)=>{let n=r.split("?")[0];return n.startsWith("http")&&(n=n.split("://")[1]),i?`${n}|${i}`:`${n}`}:(e,t)=>`${e}-${t}`;t&&(n=this.makeChannelId(e,t)),r||(this.config.segmentId=s);return{channelIdMaker:n,signalId:this.makeSignalId(),browserInfo:{...this.commonBrowserInfo,tag:this.config.tag||void 0}}}setupElectron(){this.browserInfo.device===x.device.PC_NATIVE&&(this.browserInfo={...this.browserInfo,app:this.config.appName,bundle:this.config.appId})}getExtraForStats(){const e=super.getExtraForStats();return!this.config.live&&this.media&&(e.pos=Math.round(this.media.currentTime)),this.multiBitrate&&this.currentLevel!==this.lastLevel&&(e.level=this.currentLevel+"",this.lastLevel=this.currentLevel),e}getExtraForPeersRequest(){const e=super.getExtraForPeersRequest();return this.multiBitrate&&(e.level=this.currentLevel+""),e}destroy(){super.destroy()}async initSegmentManager(){const{logger:e,config:t}=this;if(window.indexedDB&&t.useDiskCache&&!t.live){const r=new ne(this,t);try{await r.setupStore(),this.bufMgr=r}catch(r){e.warn(r),this.bufMgr=new ae(this,t)}}else this.bufMgr=new ae(this,t);if(this.bufMgr.maxBufSize<=0)throw new Error("bufMgr state is invalid")}getTagForVod(){const e=`${(0,x.getBrowser)()}${y()?"s":""}`;return this.bufMgr?`${e}_${"SegmentStore"===this.bufMgr.name?"d":"m"}`:e}determineHttpLoadTime(e){let t=2.5;if(e&&e.length>0){const r=e.length;t=r<=3?1:r<=4?1.5:r<=5?2:r<=8?2.5:3}return t}}class le{constructor(){this.method=null,this.key=null,this.iv=null,this._uri=null}get uri(){return!this._uri&&this.reluri&&(this._uri=L.buildAbsoluteURL(this.baseuri,this.reluri,{alwaysNormalize:!0})),this._uri}}class he{constructor(){this._url=null,this._byteRange=null,this._decryptdata=null,this.tagList=[],this.programDateTime=null,this.rawProgramDateTime=null,this._elementaryStreams={[he.ElementaryStreamTypes.AUDIO]:!1,[he.ElementaryStreamTypes.VIDEO]:!1}}static get ElementaryStreamTypes(){return{AUDIO:"audio",VIDEO:"video"}}get url(){return!this._url&&this.relurl&&(this._url=L.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url}set url(e){this._url=e}get byteRange(){if(!this._byteRange&&!this.rawByteRange)return[];if(this._byteRange)return this._byteRange;let e=[];if(this.rawByteRange){const t=this.rawByteRange.split("@",2);if(1===t.length){const t=this.lastByteRangeEndOffset;e[0]=t||0}else e[0]=parseInt(t[1]);e[1]=parseInt(t[0])+e[0],this._byteRange=e}return e}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get decryptdata(){return this._decryptdata||(this._decryptdata=this.fragmentDecryptdataFromLevelkey(this.levelkey,this.sn)),this._decryptdata}get endProgramDateTime(){if(!Number.isFinite(this.programDateTime))return null;let e=Number.isFinite(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){return!(!this.decryptdata||null===this.decryptdata.uri||null!==this.decryptdata.key)}addElementaryStream(e){this._elementaryStreams[e]=!0}hasElementaryStream(e){return!0===this._elementaryStreams[e]}createInitializationVector(e){let t=new Uint8Array(16);for(let r=12;r<16;r++)t[r]=e>>8*(15-r)&255;return t}fragmentDecryptdataFromLevelkey(e,t){let r=e;return e&&e.method&&e.uri&&!e.iv&&(r=new le,r.method=e.method,r.baseuri=e.baseuri,r.reluri=e.reluri,r.iv=this.createInitializationVector(t)),r}}class ue{constructor(e){this.endCC=0,this.endSN=0,this.fragments=[],this.initSegment=null,this.live=!0,this.needSidxRanges=!1,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=e,this.version=null}get hasProgramDateTime(){return!(!this.fragments[0]||!Number.isFinite(this.fragments[0].programDateTime))}}const de=/^(\d+)x(\d+)$/,ce=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g;class fe{constructor(e){"string"==typeof e&&(e=fe.parseAttrList(e));for(let t in e)e.hasOwnProperty(t)&&(this[t]=e[t])}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const r=new Uint8Array(t.length/2);for(let e=0;e<t.length/2;e++)r[e]=parseInt(t.slice(2*e,2*e+2),16);return r}return null}hexadecimalIntegerAsNumber(e){const t=parseInt(this[e],16);return t>Number.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}enumeratedString(e){return this[e]}decimalResolution(e){const t=de.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t,r={};for(ce.lastIndex=0;null!==(t=ce.exec(e));){let e=t[2],i='"';0===e.indexOf(i)&&e.lastIndexOf(i)===e.length-1&&(e=e.slice(1,-1)),r[t[1]]=e}return r}}const ge=fe,pe={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,drac:!0,dvav:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0}};const me=/#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g,ve=/#EXT-X-MEDIA:(.*)/g,ye=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/|(?!#)([\S+ ?]+)/.source,/|#EXT-X-BYTERANGE:*(.+)/.source,/|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/|#.*/.source].join(""),"g"),Ee=/(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)([^:]*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/,Se=/\.(mp4|m4s|m4v|m4a)$/i;class be{static findGroup(e,t){if(!e)return null;let r=null;for(let i=0;i<e.length;i++){const n=e[i];n.id===t&&(r=n)}return r}static convertAVC1ToAVCOTI(e){let t,r=e.split(".");return r.length>2?(t=r.shift()+".",t+=parseInt(r.shift()).toString(16),t+=("000"+parseInt(r.shift()).toString(16)).substr(-4)):t=e,t}static resolve(e,t){return L.buildAbsoluteURL(t,e,{alwaysNormalize:!0})}static parseMasterPlaylist(e,t){let r,i=[];function n(e,t){["video","audio"].forEach((r=>{const i=e.filter((e=>function(e,t){const r=pe[t];return!!r&&!0===r[e.slice(0,4)]}(e,r)));if(i.length){const n=i.filter((e=>0===e.lastIndexOf("avc1",0)||0===e.lastIndexOf("mp4a",0)));t[`${r}Codec`]=n.length>0?n[0]:i[0],e=e.filter((e=>-1===i.indexOf(e)))}})),t.unknownCodecs=e}for(me.lastIndex=0;null!=(r=me.exec(e));){const e={},s=e.attrs=new ge(r[1]);e.url=be.resolve(r[2],t);const a=s.decimalResolution("RESOLUTION");a&&(e.width=a.width,e.height=a.height),e.bitrate=s.decimalInteger("AVERAGE-BANDWIDTH")||s.decimalInteger("BANDWIDTH"),e.name=s.NAME,n([].concat((s.CODECS||"").split(/[ ,]+/)),e),e.videoCodec&&-1!==e.videoCodec.indexOf("avc1")&&(e.videoCodec=be.convertAVC1ToAVCOTI(e.videoCodec)),i.push(e)}return i}static parseMasterPlaylistMedia(e,t,r,i=[]){let n,s=[],a=0;for(ve.lastIndex=0;null!==(n=ve.exec(e));){const e={},o=new ge(n[1]);if(o.TYPE===r){if(e.groupId=o["GROUP-ID"],e.name=o.NAME,e.type=r,e.default="YES"===o.DEFAULT,e.autoselect="YES"===o.AUTOSELECT,e.forced="YES"===o.FORCED,o.URI&&(e.url=be.resolve(o.URI,t)),e.lang=o.LANGUAGE,e.name||(e.name=e.lang),i.length){const t=be.findGroup(i,e.groupId);e.audioCodec=t?t.codec:i[0].codec}e.id=a++,s.push(e)}}return s}static parseLevelPlaylist(e,t){let r,i,n=0,s=0,a=new ue(t),o=new le,l=0,h=null,u=new he,d=null;for(ye.lastIndex=0;null!==(r=ye.exec(e));){const e=r[1];if(e){u.duration=parseFloat(e);const t=(" "+r[2]).slice(1);u.title=t||null,u.tagList.push(t?["INF",e,t]:["INF",e])}else if(r[3]){if(Number.isFinite(u.duration)){const e=n++;u.start=s,u.levelkey=o,u.sn=e,u.cc=l,u.baseurl=t,u.relurl=(" "+r[3]).slice(1),_e(u,h),a.fragments.push(u),h=u,s+=u.duration,u=new he}}else if(r[4]){if(u.rawByteRange=(" "+r[4]).slice(1),h){const e=h.byteRangeEndOffset;e&&(u.lastByteRangeEndOffset=e)}}else if(r[5])u.rawProgramDateTime=(" "+r[5]).slice(1),u.tagList.push(["PROGRAM-DATE-TIME",u.rawProgramDateTime]),null===d&&(d=a.fragments.length);else{for(r=r[0].match(Ee),i=1;i<r.length&&void 0===r[i];i++);const e=(" "+r[i+1]).slice(1),s=(" "+r[i+2]).slice(1);switch(r[i]){case"#":u.tagList.push(s?[e,s]:[e]);break;case"PLAYLIST-TYPE":a.type=e.toUpperCase();break;case"MEDIA-SEQUENCE":n=a.startSN=parseInt(e);break;case"TARGETDURATION":a.targetduration=parseFloat(e);break;case"VERSION":a.version=parseInt(e);break;case"EXTM3U":break;case"ENDLIST":a.live=!1;break;case"DIS":l++,u.tagList.push(["DIS"]);break;case"DISCONTINUITY-SEQ":l=parseInt(e);break;case"KEY":var c=new ge(e),f=c.enumeratedString("METHOD"),g=c.URI,p=c.hexadecimalInteger("IV");f&&(o=new le,g&&["AES-128","SAMPLE-AES","SAMPLE-AES-CENC"].indexOf(f)>=0&&(o.method=f,o.baseuri=t,o.reluri=g,o.key=null,o.iv=p));break;case"START":let i=new ge(e).decimalFloatingPoint("TIME-OFFSET");Number.isFinite(i)&&(a.startTimeOffset=i);break;case"MAP":let h=new ge(e);u.relurl=h.URI,u.rawByteRange=h.BYTERANGE,u.baseurl=t,u.sn="initSegment",a.initSegment=u,u=new he,u.rawProgramDateTime=a.initSegment.rawProgramDateTime;break;default:console.warn(`line parsed but not handled: ${r}`)}}}return u=h,u&&!u.relurl&&(a.fragments.pop(),s-=u.duration),a.totalduration=s,a.averagetargetduration=s/a.fragments.length,a.endSN=n-1,a.startCC=a.fragments[0]?a.fragments[0].cc:0,a.endCC=l,!a.initSegment&&a.fragments.length&&a.fragments.every((e=>Se.test(e.relurl)))&&(console.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"),u=new he,u.relurl=a.fragments[0].relurl,u.baseurl=t,u.level=id,u.sn="initSegment",a.initSegment=u,a.needSidxRanges=!0),d&&function(e,t){let r=e[t];for(let i=t-1;i>=0;i--){const t=e[i];t.programDateTime=r.programDateTime-1e3*t.duration,r=t}}(a.fragments,d),a}}function _e(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Number.isFinite(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}var Te=r(485),Le=r.n(Te),Pe=r(934),Ae=r.n(Pe);const we=e=>{const t=localStorage.getItem(e);try{const e=JSON.parse(t);return e.value?e.value:e}catch(e){return t}},De=(e,t,r)=>{((e,t)=>{"object"==typeof t&&(t=JSON.stringify(t)),localStorage.setItem(e,t)})(e,{value:t,duration:r,startTime:(new Date).getTime()})};class Re{constructor(){this.p2p=0,this.share=0,this.http=0}recordP2p(e){this.p2p+=e}recordShare(e){this.share+=e}recordHttp(e){this.http+=e}resetTraffic(){this.p2p=0,this.share=0,this.http=0}get healthRatio(){if(0===this.http)return 1e3;let e=Math.round((this.p2p+this.share)/this.http*100);return e<=0&&(e=1),e}}const Ie="SW_GEOIP_KEY",Ce="TRACKER_EXPT",ke="IPAPI_ERROR",xe="ZXU",Oe="uY2R",Me="LmNv",Ne="uYnll",Fe="bQ==",Be="aGsuc3d",Ue="hcm1j",Ge="bG91ZC",je="5uZXQ=",He=Symbol("httpDownloaded"),$e=Symbol("p2pDownloaded"),We=Symbol("p2pUploaded");class qe extends(s()){constructor(e,t,r,i,n){let s;super(),this.config=e.config;let a=this.config.announceLocation;switch(this.config.trackerZone&&(a=this.config.trackerZone),a){case"cn":case"eu":s=xe+Oe+Ne+Me+Fe;break;case"hk":s=Be+Ue+Ge+je;break;case"us":s="dXMuaGR0dmNsb3VkLmNvbQ=="}this.engine=e,this.key=t||void 0,this.baseUrl=i||`https://${window.atob(s)}/v1`,this.channelId=window.btoa(r),this.timestamp=f(),this.health=new Re;const o=P().parseURL(this.baseUrl).netLoc;this.announce=o.replace(/\/\//,"");const l=function(e,t,r,i,n,s){let a=location.hostname;"localhost"===a&&s&&(a=`${s}.${a}`);function o(e,t,r,i,n,s){return Le()(e+t+r+i+n,s)}const l=o(a,t,r,i,n,e);return l.substr(0,8)}(this.timestamp,"2.7.13",this.announce,this.channelId,n.type,this.key);this.native=!!n.bundle,this.announceInfo={...n,channel:this.channelId,ts:this.timestamp,version:"2.7.13",v:l,announce:this.announce,token:this.key},this.announceURL=`${this.baseUrl}/channel`,this.reportFails=0,this.statsRequesting=!1,this.forbidden=!1,this.failConns=0,this.totalHTTPDownloaded=0,this.totalP2PDownloaded=0,this.totalP2PUploaded=0,this[He]=0,this[$e]=0,this[We]=0,this.speed=0,this.offline=!1,this.errsBufStalled=0,this.mediaRequests=0,this.errsInternalExpt=0}geoipRequest(){const{logger:e}=this.engine;return new Promise(((t,r)=>{if((e=>{const t=localStorage.getItem(e);try{const e=JSON.parse(t);return!(!e.duration||!e.startTime)&&(new Date).getTime()-e.startTime<e.duration}catch(e){return!1}})(Ie)){const r=we(Ie);e.info("found local geo data"),t(r)}else fetch("//pro.ip-api.com/json?fields=2181826&key=XOpiansRgYxGTho").then((e=>e.json())).then((e=>{if("success"!==e.status){const t=new Error(`preflight status ${e.status}`);throw Ae()(t,ke)}{const r=e.mobile?432e5:2592e5;De(Ie,e,r),t(e)}})).catch((e=>{r(e)}))}))}btAnnouncePreflight(){const{logger:e}=this.engine;return this.announceInfo.asn?this.btAnnounce():(e.info("preflight ip-api"),Promise.race([this.geoipRequest(),new Promise(((e,t)=>{setTimeout((()=>{t(Ae()(new Error("request timeout"),ke))}),600)}))]).then((e=>(this._parseGeoResponse(e),this.btAnnounce()))).catch((t=>{if(t.code!==Ce){const t=we(Ie);return t&&(e.info("use expired ipData"),this._parseGeoResponse(t)),this.btAnnounce()}throw t})))}_parseGeoResponse(e){const{lat:t,lon:r,isp:i,as:n,mobile:s,countryCode:a,continentCode:o}=e;s&&(this.announceInfo.netType="cellular");const l=n.split(" ")[0].substr(2);this.announceInfo={...this.announceInfo,lat:t,lon:r,isp:i,asn:l,country:a}}btAnnounce(){const{logger:e}=this.engine;return this.announceInfo.tag||(this.announceInfo.tag=`${(0,x.getBrowser)()}${y()?"s":""}`),new Promise(((t,r)=>{fetch(this.announceURL,{headers:this._requestHeader,method:"POST",body:JSON.stringify(this.announceInfo)}).then((e=>{if(!e.ok){const t=e.status>=500&&e.status<600;throw Ae()(new Error(`server response code is ${e.status}`),Ce,{retry:t})}return e.json()})).then((e=>{if(!this.engine)throw Ae()(new Error("runtime error"),Ce,{retry:!1});const r=e.data;if(r.f&&(this.forbidden=!0),-1===e.ret){const{code:t,msg:r}=e.data;throw Ae()(new Error(r),Ce,{retry:t>=5e3})}r.info&&console.info(`${r.info}`),r.warn&&console.warn(`${r.warn}`),r.min_conns||(r.min_conns=8),(!r.rejected||r.rejected&&r.share_only)&&r.id&&r.report_interval&&r.peers?(this.peerId=this.id=r.id,r.report_interval<20&&(r.report_interval=20),this.btStats(r.report_interval),this.getPeersURL=`${this.baseUrl}/channel/${this.channelId}/node/${this.peerId}/peers`,this.statsURL=`${this.baseUrl}/channel/${this.channelId}/node/${this.peerId}/stats`,t(r)):this.engine&&(this.engine.p2pEnabled=!1)})).catch((t=>{e.error(`btAnnounce error ${t}`),r(Ae()(t,t.code,{retry:t.retry}))}))}))}btStats(e=10){this.heartbeater=setInterval((()=>{this.postStats()}),1e3*e)}postStatsWithBeacon(){if(this.offline)return;this.offline=!0;let e={off:!0};this.statsRequesting||(e={...e,...this._makeStatsBody()}),this.statsURL&&navigator.sendBeacon(this.statsURL,JSON.stringify(e))}postStats(){const{logger:t}=this.engine;this.statsRequesting=!0,fetch(this.statsURL,{method:"POST",body:JSON.stringify(this._makeStatsBody())}).then((e=>(this.statsRequesting=!1,this.reportFails=0,e.text()))).then((r=>{let i;if(i=r?JSON.parse(r):{ret:0,data:{}},-1===i.ret)clearInterval(this.heartbeater),t.error(`${i.data.msg} code ${i.data.code}`),this.engine.emit(e.RESTART_P2P);else{const{http:e=0,p2p:t=0,share:r=0,failConns:i=0,rebuffers:n=0,requests:s=0,errsInternalExpt:a=0}=this.lastStats||{};this[He]>=e&&(this[He]-=e),this[$e]>=t&&(this[$e]-=t),this[We]>=r&&(this[We]-=r),this.failConns>=i&&(this.failConns-=i),this.errsBufStalled>=n&&(this.errsBufStalled-=n),this.mediaRequests>=s&&(this.mediaRequests-=s),this.errsInternalExpt>=a&&(this.errsInternalExpt-=a),this.exptMsg&&(this.exptMsg=void 0)}})).catch((e=>{t.error(`btStats error ${e}`),this.statsRequesting=!1,this.reportFails++,this.reportFails>=3&&clearInterval(this.heartbeater)}))}btGetPeers(e,t=!1){if(this.reportFails>=3)return;const{logger:r}=this.engine,{asn:i,country:n}=this.announceInfo;let s={exclusions:e,asn:i,country:n,ratio:this.health.healthRatio,urgent:t||void 0},a={};return this.engine.getExtraForPeersRequest&&(a=this.engine.getExtraForPeersRequest()),s=Object.assign({},s,a),new Promise(((e,t)=>{fetch(this.getPeersURL,{headers:this._requestHeader,method:"POST",body:JSON.stringify(s)}).then((e=>e.json())).then((t=>{if(-1===t.ret)throw new Error(t.data.msg);e(t.data)})).catch((e=>{r.error(`btGetPeers error ${e}`),t(e)})).finally((()=>{this.health.resetTraffic()}))}))}increFailConns(){this.failConns++}increRebuffers(){this.errsBufStalled++}increMediaRequests(){this.mediaRequests++}reportFlow(e){const t=Math.round(e/1024);this[He]+=t,this.totalHTTPDownloaded+=t,this.health.recordHttp(t),this._emitStats()}reportDCTraffic(e,t){const r=Math.round(e/1024);this[$e]+=r,this.totalP2PDownloaded+=r,this.health.recordP2p(r),this.speed=Math.round(t),this._emitStats()}reportUploaded(e=0){const t=Math.round(e/1024);this.totalP2PUploaded+=t,this.health.recordShare(t),this[We]+=t,this._emitStats()}destroy(){const{logger:e}=this.engine;e.warn("destroy fetcher"),this.removeAllListeners(),clearInterval(this.heartbeater)}_emitStats(){this.engine.emit("stats",{totalHTTPDownloaded:this.totalHTTPDownloaded,totalP2PDownloaded:this.totalP2PDownloaded,totalP2PUploaded:this.totalP2PUploaded,p2pDownloadSpeed:this.speed});const e=this.config.getStats;e&&"function"==typeof e&&e(this.totalP2PDownloaded,this.totalP2PUploaded,this.totalHTTPDownloaded,this.speed)}_makeStatsBody(){const{asn:e,country:t}=this.announceInfo;let r={totalConns:this.engine.tracker.totalConns,failConns:this.failConns,rebuffers:this.errsBufStalled||void 0,requests:this.mediaRequests||void 0,errsInternalExpt:this.errsInternalExpt,http:Math.round(this[He])||0,p2p:Math.round(this[$e])||0,share:Math.round(this[We])||0,asn:e,country:t},i={};return this.engine.getExtraForStats&&(i=this.engine.getExtraForStats()),r=Object.assign({},r,i),this.lastStats=JSON.parse(JSON.stringify(r)),Object.keys(r).forEach((e=>{0===r[e]&&delete r[e]})),this.exptMsg&&(r.exptMsg="2.7.13 "+this.exptMsg),r}get _requestHeader(){let e={};return this.native&&(e={...e,token:this.key,"User-Agent":"electron",appid:this.announceInfo.bundle}),e}}const Ve=qe;const ze=0,Ke=1,Ye=2,Xe=3,Qe=(e,t,r,i,n)=>e.filter((e=>e.bitset.hasWithId(r,i,n,t)));class Je{constructor(e=!1,t){this.isLive=e,this.levelMap=new Map;for(let e in t){const r=Number(e);if(r<0)continue;const i=new Map;if(t[e])for(let r of t[e])i.set(r,{state:Ke,segId:void 0});this.levelMap.set(r,i)}}totalLevels(){return this.levelMap.size}hasWithId(e,t,r,i=ze){if(t<0)return!1;const n=this._createOrGetSet(t).get(e);return!!n&&((!r||!n.segId||n.segId===r)&&(i===ze||n.state===i))}has(e,t,r=ze){return this.hasWithId(e,t,void 0,r)}hasCompleteOr(e,t,r=Ke){const i=this._createOrGetSet(t).get(e);return!!i&&(i.state===Ke||i.state===r)}getObj(e,t){let r=this._createOrGetSet(t).get(e);return r||(r={}),r}getSegId(e,t){return this.getObj(e,t).segId}getState(e,t){return this.getObj(e,t).state}delete(e,t){return this._createOrGetSet(t).delete(e)}add(e,t,r,i){if("number"!=typeof(n=e)||n%1!=0)return;var n;this._createOrGetSet(t).set(e,{state:i,segId:r}),this.isLive&&this._trimBitset(e)}array(e){const t=this._createOrGetSet(e);return this._keysForStateComplete(t)}allArray(){let e={};return this.levelMap.forEach(((t,r)=>{e[r]=this._keysForStateComplete(t)})),e}clear(){this.levelMap.forEach((e=>{e.clear()}))}size(e){return this._createOrGetSet(e).size}_createOrGetSet(e){"number"!=typeof e&&(e=Number(e));let t=this.levelMap.get(e);return t||(t=new Map,this.levelMap.set(e,t)),t}_trimBitset(e){const t=e-20;t>0&&this.levelMap.forEach((e=>{e.delete(t)}))}_keysForStateComplete(e){const t=[];for(let[r,i]of e)i.state===Ke&&t.push(r);return t}}class Ze{constructor(){this.levelMap=new Map}totalLevels(){return this.levelMap.size}has(e,t){return this._createOrGetMap(t).has(e)}delete(e,t){return this._createOrGetMap(t).delete(e)}decre(e,t){const r=this._createOrGetMap(t);if(r.has(e)){let t=r.get(e);1===t?r.delete(e):r.set(e,t-1)}}incre(e,t){const r=this._createOrGetMap(t);if(r.has(e)){let t=r.get(e);r.set(e,t+1)}else r.set(e,1)}clear(){this.levelMap.forEach((e=>{e.clear()}))}size(e){return this._createOrGetMap(e).size}_createOrGetMap(e){"number"!=typeof e&&(e=Number(e));let t=this.levelMap.get(e);return t||(t=new Map,this.levelMap.set(e,t)),t}}const et=class{constructor(){this.peerMap=new Map}isEmpty(){return 0===this.peerMap.size}size(){return this.peerMap.size}clear(){this.peerMap.clear()}getPeers(){return[...this.peerMap.values()]}getPeerValues(){return this.peerMap.values()}hasPeer(e){return this.peerMap.has(e)}addPeer(e,t){this.peerMap.set(e,t)}getPeerIds(){return[...this.peerMap.keys()]}removePeer(e){this.peerMap.delete(e)}getPeersOrderByWeight(){const e=this.getAvailablePeers();return e.sort(((e,t)=>0===t.weight?1:0===e.weight?-1:t.weight-e.weight)),e}getPeer(e){return this.peerMap.get(e)}getAvailablePeers(){return this.getPeers().filter((e=>e.isAvailableUrgently))}},tt=1,rt=2,it=3,nt=4;class st{constructor(e){this.generator=e,this.status=tt,this.next=this.next.bind(this)}next(e){if(this.status===nt)return console.warn("status is canceled");if(this.status===rt)return console.warn("status is waiting");const t=this.execute.bind(this,this.cb);this.nextInfo=this.generator(t),this.status=rt,this.nextInfo.execute(e)}execute(e,t){this.status=it,e.apply(t,[this.next])}cancel(){this.status=nt,this.nextInfo&&"function"==typeof this.nextInfo.cancel&&this.nextInfo.cancel()}start(e,t){if("function"!=typeof e)throw new SyntaxError("param cb must be a function");this.cb=e,this.next(t)}continue(e){this.status=tt,this.next(e)}}const at=Symbol("shareOnly");class ot extends(s()){constructor(e,t){super(),this.engine=e,this.config=t,this.logger=e.logger,this.bufMgr=null,this.peerManager=new et,this._setupEngine&&this._setupEngine(),this.startCheckConnsTimer(),this.dcDownloadTimeout=t.dcDownloadTimeout,this[at]=!1,this.downloadOnly=!1,this.loadedPeerNum=0}get isMobileNet(){return this.engine.isMobileNet}startCheckConnsTimer(){this.checkConnsTimer=setInterval((()=>{this.logger.info("start check conns");const e=this.getStatsForPeer();let t=this.peersNum;const r=f();this.getPeers().forEach((i=>{t>4&&(r-i.dataExchangeTs>150||r-i.gotStatsTs>=83)?(this.logger.warn(`close dead or different level peer ${i.remotePeerId} level ${i.currentLevel}`),i.close(!1),t--):i.connected&&i.sendMsgStats(t,e)}))}),4e4)}getStatsForPeer(){return{}}requestPeers(){this.logger.info("request peers from peer");const t={event:e.DC_GET_PEERS};for(let e of this.getPeers())e.mobileNet||e.super||e.sendJson(t)}chokePeerRequest(t){const r={event:e.DC_CHOKE};t?t.sendJson(r):this._broadcastToPeers(r)}unchokePeerRequest(t){const r={event:e.DC_UNCHOKE};t?t.sendJson(r):this._broadcastToPeers(r)}stopRequestFromPeers(){for(let e of this.getPeers())e.choked=!0}resumeRequestFromPeers(){for(let e of this.getPeers())e.choked=!1}setShareOnly(){this[at]=!0}deletePeer(e){this.peerManager.hasPeer(e.remotePeerId)&&this.peerManager.removePeer(e.remotePeerId),this._peersStats(this.peerManager.getPeerIds())}getPeers(){return[...this.peerManager.getPeerValues()]}addPeer(e){const{logger:t}=this;this.peerManager.addPeer(e.remotePeerId,e),this[at]&&(e.choked=!0);const r=this.peerManager.getPeerIds();this._peersStats(r),t.info(`add peer ${e.remotePeerId}, now has ${r.length} peers`),!e.mobileNet&&!this.waitForPeer&&e.isInitiator&&this.peersNum<=5&&e.peersConnected>1&&e.sendPeersRequest()}get hasPeers(){return this.peersNum>0}get peersNum(){return this.peerManager.size()}get hasIdlePeers(){const{logger:e}=this,t=this.getIdlePeer().length;if(e.info(`peers: ${this.peersNum} idle peers: ${t}`),t<this.peersNum){const t=this.peerManager.getPeers(),r=t.filter((e=>e.downloading));e.warn(`downloading: ${r.length} choked: ${t.filter((e=>e.choked)).length}`);for(let t of r)e.warn(`${t.remotePeerId} loading ${t.segId} packets ${t.bufArr.length} total ${t.pieceMsg.attachments}`)}return t>0}getIdlePeer(){return this.peerManager.getAvailablePeers()}set bufferManager(t){this.bufMgr=t,t.on(e.BM_LOST,(({sn:t,segId:r,next:i,level:n})=>{this.config.live||this._broadcastToPeers({event:e.DC_LOST,sn:t,seg_id:r,level:n||void 0}),this.onBufferManagerLost(t,r,i,n)})).on(e.BM_SEG_ADDED,(e=>{this.onBufferManagerSegAdded(e)}))}onBufferManagerSegAdded(e){}destroy(){const{logger:e}=this;this.peersNum>0&&this.peerManager.clear(),this.removeAllListeners(),clearInterval(this.checkConnsTimer),this.checkTimer&&this.checkTimer.cancel(),e.warn("destroy BtScheduler")}notifyPeersLoaded(e){}_setupDC(t){const{logger:r}=this;t.on(e.DC_PIECE_ACK,(e=>{e.size&&(this.engine.fetcher.reportUploaded(e.size),r.info(`uploaded ${e.seg_id} size ${e.size} to ${t.remotePeerId}, canceled ${e.canceled||!1}`))})).on(e.DC_PIECE_ABORT,(e=>{r.warn(`peer ${t.remotePeerId} download aborted, reason ${e.reason}`),t.downloading&&this._handlePieceAborted&&this._handlePieceAborted(t.remotePeerId),t.downloading=!1})).on(e.DC_REQUEST,(()=>{})).on(e.DC_SEND_REQUEST,(()=>{}))}_broadcastToPeers(e){for(let t of this.getPeers())t.sendJson(e)}_peersStats(e){this.engine.emit("peers",e);const t=this.engine.config.getPeersInfo;t&&"function"==typeof t&&t(e)}startCheckPeersTimer(e=3e3){this.checkTimer=new st((function(e){let t;return{execute:function(r=1e3){t=setTimeout(e,r)},cancel:function(){clearTimeout(t)}}})),this.checkTimer.start((e=>{this.checkPeers();const t=1e3*(0===(r=this.loadedPeerNum)?3:.5*r+1.67);var r;this.logger.info(`loaded peers ${this.loadedPeerNum} nextDelay ${t}`),this.loadedPeerNum=0,e(t)}),e)}}const lt=ot;class ht extends(s()){constructor(e){super(),this.internalMap=new Map,this.eventName=e}has(e,t){return this.internalMap.has(this._generateId(e,t))}set(e,t,r){const i=this._generateId(e,t);this.internalMap.set(i,r),this.emit(`${this.eventName}${e}-${t}`,r)}get(e,t){return this.internalMap.get(this._generateId(e,t))}delete(e,t){const r=this._generateId(e,t),i=this.internalMap.get(r);return!!i&&(i.destroy(),this.internalMap.delete(r),!0)}clear(){this.internalMap.clear(),this.removeAllListeners()}_generateId(e,t){return"number"!=typeof t&&(t=Number(t)),`${t}-${e}`}}const ut=0,dt=1,ct=2,ft=3;function gt(e,t,r="main"){return"main"!==r}function pt(){const e=performance.now();return{trequest:e,tfirst:0,tload:0,aborted:!1,loaded:0,retry:0,total:0,chunkCount:0,bwEstimate:0,loading:{start:e,first:0,end:0},parsing:{start:0,end:0},buffering:{start:0,first:0,end:0}}}function mt(e,t){let r,i,n,s,a;const o=performance.now();r=o-300,i=o-200,n=o,e.trequest=r,e.tfirst=i,e.tload=n,e.loading={first:r,start:i,end:n},s=a=t,e.loaded=s,e.total=a}class vt extends(s()){constructor(){super(),this.UNSENT=0,this.OPENED=1,this.HEADERS_RECEIVED=2,this.LOADING=3,this.DONE=4,this.timeout=0,this.withCredentials=!1,this.status=0,this.readyState=this.UNSENT,this.headers=new Map,this.responseHeaders=null,this.on("load",(e=>{this.onload&&this.onload(e)})),this.on("abort",(e=>{this.onabort&&this.onabort(e)})),this.on("error",(e=>{this.onerror&&this.onerror(e)})),this.on("loadstart",(e=>{this.onloadstart&&this.onloadstart(e)})),this.on("progress",(e=>{this.onprogress&&this.onprogress(e)})),this.on("timeout",(e=>{this.ontimeout&&this.ontimeout(e)})),this.on("loadend",(e=>{this.onloadend&&this.onloadend(e)})),this.on("readystatechange",(()=>{this.onreadystatechange&&this.onreadystatechange()}))}setRequestHeader(e,t){this.headers.set(e,t)}addEventListener(e,t){this.addListener(e,t)}removeEventListener(e,t){this.removeListener(e,t)}overrideMimeType(){}getAllResponseHeaders(){if(!this.responseHeaders)return null;let e="";return this.responseHeaders.forEach(((t,r)=>{e+=`${r}: ${t}\n`})),e}getResponseHeader(e){return this.responseHeaders?this.responseHeaders.get(e):null}open(){this.readyState=this.OPENED,this.emit("loadstart")}abort(){this.readyState=this.DONE,this.status=0}send(){}_emitEvent(e){this.emit(e,new ProgressEvent(e))}}function yt(){if(window.fetch&&window.AbortController&&window.ReadableStream&&window.Request)try{return new window.ReadableStream({}),!0}catch(e){}return!1}class Et{constructor(e){this.fetchSetup=e.fetchSetup||St,this.xhrSetup=e.xhrSetup,this.controller=new window.AbortController,this.stats=pt(),this.packetSize=u,this.fakeXhr=new vt}destroy(){this.loader=this.callbacks=null,this.abortInternal()}abortInternal(){const e=this.response;e&&e.ok||(this.stats.aborted=!0,this.callbacks&&this.callbacks.onUpdate&&this.callbacks.onUpdate(void 0,!1,!0),this.controller.abort())}abort(){this.abortInternal(),this.callbacks&&this.callbacks.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,r){const i=this.stats;i.trequest=i.loading.start=performance.now();let n=function(e,t){const r={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new window.Headers(Object.assign({},e.headers))};e.rangeEnd&&r.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return r}(e,this.controller.signal);const s="arraybuffer"===e.responseType,a=s?"byteLength":"length",o=r.onUpdate,l=r.onBodyStart;this.context=e,this.config=t,this.callbacks=r,this.xhrSetup&&(this.xhrSetup(this.fakeXhr,e.url),n=function(e,t){e.withCredentials&&(t.credentials="include");for(let[r,i]of e.headers)t.headers.set(r,i);return t}(this.fakeXhr,n)),this.request=this.fetchSetup(e,n),clearTimeout(this.requestTimeout),this.requestTimeout=setTimeout((()=>{this.abortInternal(),this.fakeXhr._emitEvent("timeout"),this.fakeXhr._emitEvent("loadend"),r.onTimeout&&r.onTimeout(i,e,this.response)}),this.fakeXhr.timeout||t.timeout);const{fakeXhr:h}=this;h.readyState=h.OPENED,h.emit("readystatechange"),h._emitEvent("loadstart"),fetch(this.request).then((t=>{if(this.response=this.loader=t,!t.ok){const{status:e,statusText:r}=t;throw o&&o(void 0,!1,!0),new bt(r||"fetch, bad network response",e,t)}i.tfirst=i.loading.first=Math.max(performance.now(),i.loading.start),i.total=parseInt(t.headers.get("Content-Length")||"0");const{fakeXhr:r}=this;return r.readyState=r.HEADERS_RECEIVED,r.responseHeaders=t.headers,r.emit("readystatechange"),o&&"0"!==i.total?(l&&l(i.total),this.loadProgressively(t,i,e,o)):(r.emit("progress",new ProgressEvent("progress",{lengthComputable:!1})),s?t.arrayBuffer():t.text())})).then((t=>{const{response:n}=this;clearTimeout(this.requestTimeout),i.tload=i.loading.end=Math.max(performance.now(),i.loading.first),i.loaded=i.total=t[a];const s={url:n.url,data:t};r.onProgress&&r.onProgress(i,e,t,n),r.onSuccess&&r.onSuccess(s,i,e,n)})).catch((t=>{if(clearTimeout(this.requestTimeout),i.aborted)return;o&&o(void 0,!1,!0);const n=t&&t.code||0,s=t?t.message:null;r.onError&&r.onError({code:n,text:s},e,t?t.details:null)}))}loadProgressively(e,t,r,i){const n=e.body.getReader();let s=0,o=0,l=(0,a.l)(0);const h=()=>n.read().then((({value:r,done:n})=>{const{fakeXhr:d}=this;if(d.readyState!==d.LOADING&&(d.readyState=d.LOADING,d.emit("readystatechange")),r&&(s+=r.length),n){if(l.byteLength>0)if(s<=this.packetSize){const e=(0,a.l)(s);l.copy(e,0,o*this.packetSize,l.byteLength),i(e,!0)}else{const e=function(e,t){const r=e.byteLength-t,i=[];let n=t,s=Math.floor(r/u),o=r%u;for(let t=0;t<s;t++){const t=(0,a.l)(u);e.copy(t,0,n,n+u),i.push(t),n+=u}if(o>0){const t=(0,a.l)(o);e.copy(t,0,n,n+o),i.push(t)}return i}(l,o*this.packetSize);for(let t=0;t<e.length;t++)i(e[t],t===e.length-1)}const t=l.buffer,{fakeXhr:r}=this,{status:n,statusText:h,url:d}=e;return r.readyState=r.DONE,r.responseText=n,r.status=h,r.responseURL=d,r.responseType="arraybuffer",r.response=t,r.emit("readystatechange"),r._emitEvent("load"),r._emitEvent("loadend"),Promise.resolve(t)}if(t.loaded+=r.length,d.emit("progress",new ProgressEvent("progress",{lengthComputable:!0,loaded:t.loaded,total:t.total})),l=a.l.concat([l,r]),s>=this.packetSize){s-=this.packetSize;const e=(0,a.l)(this.packetSize);l.copy(e,0,o*this.packetSize,(o+1)*this.packetSize),o++,i(e,!1)}return h()})).catch((()=>(this.fakeXhr._emitEvent("abort"),this.fakeXhr._emitEvent("loadend"),Promise.reject())));return h()}}function St(e,t){return new window.Request(e.url,t)}class bt extends Error{constructor(e,t,r){super(e),this.code=t,this.details=r}}class _t extends(s()){constructor(e,r,i,n,s,a=!1,o){super(),this.coordinator=e,this.logger=r,this.rangeSupported=a,this.rangeStart=0,this.rangeEnd=0,this.httpLoadTime=2e3,this.proxied=!1,this.pieceMsg={event:t.DC_PIECE,sn:i,level:n,seg_id:s},o&&this.setExtra(o),this.forwardPeer=null,this.reversePeer=null,this.bufArr=[],this.forwardBufList=[],this.reverseBufList=[],this.forwardOffset=-1,this.reverseOffset=1e4,this.timeStart=0,this.timeReceivePiece=0,this.timer=void 0,this.destroyed=!1,this.forwardStreamListeners=[],this.reverseStreamListeners=[],this.rangeRequesting=!1,this.waitingRemain=!1,this.httpLoaded=0,this.p2pLoaded=0,this.deadline=0,this.p2pCanceled=!1}get segId(){return this.pieceMsg.seg_id}isDownloading(){return this.timeReceivePiece>0}isAlmostDeadline(){return!!this.rangeRequesting||this.deadline>0&&this.deadline-performance.now()<400}hasPeer(e){return!!e&&(e===this.forwardPeer||e===this.reversePeer)}streamListeners(){return[...this.reverseStreamListeners,...this.forwardStreamListeners].length}_notifyStreamListeners(e,t,r){const{sn:i,seg_id:n,attachments:s}=this.pieceMsg,a=e&&0===r||!e&&r===s-1,o=e?this.reverseStreamListeners:this.forwardStreamListeners;e?this.reverseBufList.push(t):this.forwardBufList.push(t),a&&(this.forwardBufList.push([...this.reverseBufList].reverse()),this.reverseBufList.push([...this.forwardBufList].reverse()));for(let e of o){const{handler:r}=e;r(i,n,!1,t,a)}a&&(o.length=0)}_notifyStreamListenersAbort(){const e=[...this.reverseStreamListeners,...this.forwardStreamListeners];for(let t of e){const{handler:e}=t;e(void 0,void 0,!0,"aborted by synthesizer")}e.length=0}_notifyStreamListenersRemain(){if(this.forwardStreamListeners.length>0){for(let e=this.forwardOffset+1;e<this.bufArr.length;e++)this._notifyStreamListeners(!1,this.bufArr[e],e);this.forwardStreamListeners=[]}if(this.reverseStreamListeners.length>0){for(let e=this.reverseOffset-1;e>=0;e--)this._notifyStreamListeners(!0,this.bufArr[e],e);this.reverseStreamListeners=[]}}addStreamListener(e,t,r){(e?this.reverseStreamListeners:this.forwardStreamListeners).push({handler:r,peerId:t})}removeStreamListener(e){const t=t=>t.filter((t=>t.peerId!==e||(t.handler(void 0,void 0,!0,"aborted by cancel"),!1)));this.forwardStreamListeners=t(this.forwardStreamListeners),this.reverseStreamListeners=t(this.reverseStreamListeners)}setTimeout(e=0){const t=this.streamListeners();let r=performance.now();if(t>3){if((e/=2)<2500)if(this.timeReceivePiece>0){e=3e3-(r-this.timeReceivePiece)}else e=2500;this.logger.info(`stream listeners ${t}, set timeout ${e}`)}e<=0?setTimeout((()=>{this._handleTimeout(!1,!1)}),0):(this.deadline=r+e,this._startTimer(e))}setExtra(e={}){e.url&&(this.url=e.url),e.rangeStart&&(this.rangeStart=e.rangeStart),e.rangeEnd&&(this.rangeEnd=e.rangeEnd),e.httpLoadTime&&(this.httpLoadTime=e.httpLoadTime),e.proxied&&(this.proxied=!0),e.xhrSetup&&(this.xhrSetup=e.xhrSetup),e.headers&&(this.headers=e.headers),e.segId&&!this.pieceMsg.seg_id&&(this.pieceMsg.seg_id=e.segId)}hasForwardPeer(){return!!this.forwardPeer}hasReversePeer(){return!!this.reversePeer}hasPeerId(e){return this.forwardPeer&&this.forwardPeer.remotePeerId===e||this.reversePeer&&this.reversePeer.remotePeerId===e}isEmpty(){return null===this.forwardPeer&&null===this.reversePeer}isFull(){return this.forwardPeer&&this.reversePeer}setForwardPeer(e){this.forwardPeer=e,this.reversePeer&&this._print(),this._setupPeer(e,!1)}setReversePeer(e){this.reversePeer=e,this.forwardPeer&&this._print(),this._setupPeer(e,!0)}deletePeer(e,t=!1){const r=e===this.reversePeer;this._detachPeer(e),r?(this.reversePeer=null,t&&(this.reverseOffset=this.pieceMsg.attachments||1e4)):(this.forwardPeer=null,t&&(this.forwardOffset=-1)),this.isEmpty()&&this._handleTimeout(!1,!1)}terminate(){this._handleTimeout(!1,!1)}hasPartialBuffer(){return this.hasForwardBuffer()||this.hasReverseBuffer()}hasForwardBuffer(){return this.forwardOffset>=0}hasReverseBuffer(){return this.pieceMsg&&this.reverseOffset<this.pieceMsg.attachments}_cancelP2p(){if(this.p2pCanceled)return;this.p2pCanceled=!0;const{seg_id:e,sn:t,level:r}=this.pieceMsg;[this.forwardPeer,this.reversePeer].filter((e=>!!e)).forEach((i=>{i.cancelDownload(t,r,e)}))}destroy(){this.logger.info("destroy syn"),clearTimeout(this.timer),this._notifyStreamListenersAbort(),this._cancelP2p(),this.removeAllListeners(),this.destroyed=!0,this._detachPeer(this.forwardPeer),this.forwardPeer=null,this.forwardOffset=-1,this._detachPeer(this.reversePeer),this.reversePeer=null,this.reverseOffset=1e4,this.bufArr=[],this.forwardStreamListeners=[],this.reverseStreamListeners=[]}_detachPeer(e){if(!e)return;const r=e===this.reversePeer?this.reverseEvents:this.forwardEvents;e.off(t.DC_PIECE_DATA,r.onPieceData).off(t.DC_PIECE,r.onPiece).off(t.DC_PIECE_NOT_FOUND,r.onPieceNotFound).off(t.DC_PIECE_ABORT,r.onPieceAbort)}_receivePacket(e,r,i,n=!0){const{seg_id:s,sn:o,level:l,size:h}=this.pieceMsg,u=r-1;if(this.bufArr[u])return this.logger.warn(`syn bufArr ${this.pieceMsg.sn} already has ${u} size ${i.byteLength}`),!1;if(n?this.p2pLoaded+=i.byteLength:this.httpLoaded+=i.byteLength,this.bufArr[u]=i,e?this.reverseOffset=u:this.forwardOffset=u,this._notifyStreamListeners(e,i,u),this.forwardOffset!==this.reverseOffset-1)return!0;this.forwardPeer&&(this.forwardPeer.miss=0),this.reversePeer&&(this.reversePeer.miss=0),clearTimeout(this.timer),this._notifyStreamListenersRemain();const d=h/(performance.now()-this.timeStart);let c=a.l.concat(this.bufArr);const f=c.byteLength;if(f===h){let e=c.buffer;const r=new k(o,s,e,this.getFromPeerId(),l);this.emit(t.SYN_OUTPUT,r,{speed:d,p2p:this.p2pLoaded,http:this.httpLoaded})}else{this.logger.error(`${l}-${o} expectedSize ${h} != byteLength ${f} forward ${this.forwardOffset} reverse ${this.reverseOffset}`);for(let e=0;e<this.bufArr.length;e++)this.logger.error(`piece ${e} size ${this.bufArr[e].byteLength}`);this.emit(t.SYN_ERROR,this.pieceMsg,ut)}}_setupPeer(e,r){0===this.timeStart&&(this.timeStart=performance.now());const i=(t,r,i,n,s,a)=>{if(this.destroyed)return;if(!this._validateMsg(t,a.level,r))return void this.logger.warn(`onPieceData ${a.level}-${t} not match ${JSON.stringify(this.pieceMsg)} from ${e.remotePeerId}`);const{reverse:o}=a;this._receivePacket(o,n,i)&&!this.waitingRemain&&!this.rangeRequesting&&this.deadline>0&&this._shouldSwitch()&&(this.logger.warn("should switch to http"),clearTimeout(this.timer),this._handleTimeout(!1,!1))},n=r=>{if(this.destroyed)return;const{attachments:i,size:n,sn:s,level:a,seg_id:o}=r;return n&&this._validateMsg(s,a,o)?this.pieceMsg.size&&n!==this.pieceMsg.size?(this.logger.warn(`onPiece ${r.level}-${r.sn} size not match`),void this.emit(t.SYN_ERROR,this.pieceMsg,ut)):void(0===this.bufArr.length&&(this.pieceMsg={...this.pieceMsg,seg_id:o,size:n,attachments:i},this.reverseOffset=i,this.bufArr=new Array(i),this.timeReceivePiece=performance.now())):(this.logger.warn(`onPiece ${JSON.stringify(r)} not match ${JSON.stringify(this.pieceMsg)}`),void this.deletePeer(e))},s=t=>{this.destroyed||this.deletePeer(e)},a=()=>{this.destroyed||this.deletePeer(e)},o={onPieceData:i,onPiece:n,onPieceNotFound:s,onPieceAbort:a};r?this.reverseEvents=o:this.forwardEvents=o,e.on(t.DC_PIECE_DATA,i).once(t.DC_PIECE,n).once(t.DC_PIECE_NOT_FOUND,s).once(t.DC_PIECE_ABORT,a)}_validateMsg(e,t,r){return(!this.pieceMsg.seg_id||r===this.pieceMsg.seg_id)&&(e===this.pieceMsg.sn&&t===this.pieceMsg.level)}_shouldSwitch(){const e=u,t=this.pieceMsg.size-e*this.loadedPackets();return this.coordinator.shouldSwitchToHttp(t,this.deadline,this.p2pSpeed,e,this.httpLoadTime)}_startTimer(e,t=!0){this.timer=setTimeout(this._handleTimeout.bind(this,t),e)}loadedPackets(){return this.pieceMsg.attachments-(this.reverseOffset-this.forwardOffset-1)}_handleTimeout(e=!1,r=!0){if(this.destroyed)return;const{level:i,sn:n,size:s,attachments:a}=this.pieceMsg;if(!s||0===this.timeReceivePiece)return this.logger.warn(`syn load timeout ${i}-${n} url ${this.url}`),void this.emit(t.SYN_ERROR,this.pieceMsg,ut);if(e&&this.timeReceivePiece>0&&(this.logger.warn(`syn ${this.loadedPackets()} of ${a} packets loaded`),this.shouldWaitForRemain(this.httpLoadTime))){const e=this.httpLoadTime;return this.waitingRemain=!0,this.logger.info(`syn wait for remain ${e}`),void this._startTimer(e,!1)}if(r){const e=[this.forwardPeer,this.reversePeer].filter((e=>!!e)).sort(((e,t)=>e.currentLoadSpeed()-t.currentLoadSpeed())).shift();e&&e.loadtimeout()}if(this._cancelP2p(),this.rangeSupported&&this.url)return this._loadRemainBufferByHttp();this._notifyStreamListenersAbort(),this.emit(t.SYN_ERROR,this.pieceMsg,ft)}shouldWaitForRemain(e){if(e<=0||this.isEmpty()||this.streamListeners()>0)return!1;const t=performance.now()-this.timeStart;return t<500||t<1e3&&this.timeReceivePiece>0&&e>3e3||this.shouldWaitForRemainUrgent(e)}shouldWaitForRemainUrgent(e){if(0===this.timeReceivePiece||e<=0)return!1;const t=this.p2pSpeed;let r=0;[this.forwardPeer,this.reversePeer].forEach((e=>{e&&(r+=e.loadedBytes())}));const i=(this.pieceMsg.size-r)/e;return this.logger.info(`syn remainTime ${e} speed ${t} required ${i}`),t>=i}get p2pSpeed(){let e=0;return[this.forwardPeer,this.reversePeer].forEach((t=>{t&&(e+=t.currentLoadSpeed())})),e}getFromPeerId(){const{forwardPeer:e,reversePeer:t}=this;return this.isFull()&&e!==t?`${e.remotePeerId}:${t.remotePeerId}`:e?`${e.remotePeerId}`:t?`${t.remotePeerId}`:""}_loadRemainBufferByHttp(){if(this.rangeRequesting)return;const{size:e,sn:r,level:i}=this.pieceMsg,n=this.rangeEnd>0?this.rangeEnd-1:0;let s=this.forwardOffset,a=h(s,this.reverseOffset,e,this.rangeStart,n);const l=performance.now();let u=this.deadline+this.httpLoadTime-l+1e3;u<2e3?u=2e3:u>6e3&&(u=6e3),this.logger.info(`continue download ${i}-${r} from ${this.url} range: ${a.rangeStart}-${a.rangeEnd-1} timeout ${u}`),this.rangeRequesting=!0,this.headers&&(this.xhrSetup=e=>{for(const t of Object.keys(this.headers))e.setRequestHeader(t,this.headers[t])}),this.hasPartialBuffer()||(a={});const d=new Et({xhrSetup:this.xhrSetup});let c={url:this.url,...a};this.proxied&&(c={headers:{[o]:"bypass"},...c});const f={timeout:u};let g,p=s+1;const m={onUpdate:(e,r,i)=>{if(!this.destroyed)if(i)this.emit(t.SYN_ERROR,this.pieceMsg,dt);else{if(r){this.rangeRequesting=!1;const e=g/(performance.now()-l);this.coordinator.addHttpSpeed(e)}this.bufArr[p]||this._receivePacket(!1,p+1,e,!1),p++}},onBodyStart:e=>{this.destroyed||(g=e,e===this.pieceMsg.size&&this.hasPartialBuffer()&&(this.logger.warn(`syn range request ${r} resp whole ts`),p=0))},onError:(e,r,i)=>{this.destroyed||(this.rangeRequesting=!1,this.logger.error(i),this.emit(t.SYN_ERROR,this.pieceMsg,dt))},onTimeout:()=>{this.destroyed||(this.rangeRequesting=!1,this.emit(t.SYN_ERROR,this.pieceMsg,ct))}};d.load(c,f,m)}_print(){const{level:e,sn:t}=this.pieceMsg;this.logger.info(`syn parallel loading ${e}-${t}`)}}class Tt{constructor(){this.meanHttpSpeed=0}addHttpSpeed(e){this.meanHttpSpeed=.4*this.meanHttpSpeed+.6*e}shouldSwitchToHttp(e,t,r,i,n){if(this.meanHttpSpeed<=0)return!1;if(r>=this.meanHttpSpeed)return!1;if(this.meanHttpSpeed*n>=e)return!1;return((n+t-performance.now())*this.meanHttpSpeed-e)/(this.meanHttpSpeed-r)*r<i}}class Lt extends lt{constructor(e,r){super(e,r),this.bitset=new Je(r.live||!1),this.bitCounts=new Ze,this.requestingMap=new ht(t.REQUESTING_MAP_HAVE),this.segmentBuilderMap=new ht(t.BUILDER_MAP_HAVE),this.allowP2pLimit=r.httpLoadTime+1.5,this.playlistInfo=new Map,this.isUploader=!1,this.isReceiver=!1,this.targetPeers={},this.mBufferedDuration=0,this.sequential=!0,this.httpTimeouts=0,this.httpRangeErrs=0,this.coordinator=new Tt,this.loadingSegId="",this.loadingSN=0,this.currPlaySN=0,this.currLostSN=-1,this.nextLostSN=-1,this.canReusePlaylist=!1,this.config.live?this.maxPrefetchCount=10:(this.maxPrefetchCount=150,this.startCheckPeersTimer())}get httpRangeSupported(){return this.config.httpRangeSupported}handshakePeer(e){this._setupDC(e),e.sendMetaData(this.bitset.allArray(),!0,this.peersNum,this.isMobileNet)}_receiveDCHave(e,r,i){this.bitset.has(e,r)||this.bitCounts.incre(e,r),this.emit(t.SCH_DCHAVE,i)}_setupDC(e){super._setupDC(e),e.on(t.DC_HAVE,(t=>{if(e.bitset&&t.sn>=0){const{sn:r,level:i,complete:n,seg_id:s}=t;this._receiveDCHave(r,i,s);const a=n?Ke:Ye;e.bitset.add(r,i,s,a),e.isAvailableUrgently&&this._handleDCHave(e,r,i,s,a)}})).on(t.DC_HAVE_REVERSE,(t=>{if(e.bitset&&t.sn>=0){const{sn:r,level:i,seg_id:n}=t;this._receiveDCHave(r,i,n),e.bitset.hasCompleteOr(r,i,Xe)||e.bitset.add(r,i,n,Xe),e.isAvailableUrgently&&this._handleDCHave(e,r,i,n,Xe)}})).on(t.DC_LOST,(t=>{if(!e.bitset)return;const{sn:r,level:i}=t;e.bitset.has(r,i)&&(e.bitset.delete(r,i),this.bitCounts.decre(r,i))})).on(t.DC_PIECE,(e=>{e.ext&&e.ext.incompletes>=7||this.notifyAllPeers(e.sn,e.level,e.seg_id,e.reverse?Xe:Ye)})).on(t.DC_PIECE_CANCEL,(t=>{const{sn:r,level:i}=t,n=this.requestingMap.get(r,i);if(n)return void n.removeStreamListener(e.remotePeerId);const s=this.segmentBuilderMap.get(r,i);s&&s.removeStreamListener(e.remotePeerId)})).on(t.DC_PIECE_NOT_FOUND,(t=>{const{sn:r,level:i}=t;e.bitset.delete(r,i),this.bitCounts.decre(r,i),e.checkIfNeedChoke(!0)})).on(t.DC_REQUEST,(async r=>{const{logger:i}=this,{sn:n,level:s,reverse:a}=r;this.isUploader=!0;let o=r.seg_id;o||(o=await this.bufMgr.getSegIdBySN(n));const l=this.requestingMap.get(n,s);let h=!1;l&&l.isDownloading()&&(h=!0);const u=await this.bufMgr.getSegById(o);if(u)i.info("found seg from bufMgr"),u.level===s?e.sendBuffer(u.sn,u.segId,u.data,{from:"Cache",level:u.level,reverse:a}):e.sendPieceNotFound(n,o,{level:s});else if(h){i.info(`syn had ${l.loadedPackets()} packets, wait remain from upstream ${l.getFromPeerId()}`);const t={...l.pieceMsg,reverse:a},r=a?l.reverseBufList:l.forwardBufList;e.sendPartialBuffer(t,r,{from:l.isFull()?"WaitPartialDouble":"WaitPartialSingle",incompletes:1}),r.length<t.attachments?c(l,e,a):e.uploading=!1}else if(a)e.sendPieceNotFound(n,o,{level:s});else{const r=this.segmentBuilderMap.get(n,s);if(r)i.info(`peer request ${n} wait from builder, sent ${r.bufferList.length}`),d(r,e);else if(n>=this.loadingSN){let r;const l=l=>{this.segmentBuilderMap.off(`${t.BUILDER_MAP_HAVE}${n}-${s}`,r),l&&l.level===s?(i.info(`peer request notify seg ${l.sn}`),e.sendBuffer(l.sn,l.segId,l.data,{from:"NotifySegment",level:l.level,reverse:a})):e.sendPieceNotFound(n,o,{level:s})};r=r=>{this.bufMgr.off(`${t.BM_ADDED_SN_}${n}`,l),d(r,e)},i.info(`peer request ${n} wait from fragLoader`),this.segmentBuilderMap.once(`${t.BUILDER_MAP_HAVE}${n}-${s}`,r),this.bufMgr.once(`${t.BM_ADDED_SN_}${n}`,l)}else e.sendPieceNotFound(n,o,{level:s})}function d(e,t){t.sendPartialBuffer(e.pieceMsg,e.bufferList,{from:e.source,incompletes:1}),e.bufferList.length<e.pieceMsg.attachments?c(e,t,!1):t.uploading=!1}function c(e,t,r){e.addStreamListener(r,t.remotePeerId,((e,r,i,n,s)=>{i?t.sendMsgPieceAbort(n):t.send(n),s&&(t.uploading=!1)}))}}))}handleMetaData(e,t){if(t.field){e.bitset=new Je(this.config.live,t.field);for(let e in t.field){const r=Number(e);if(r<0)continue;t.field[r].forEach((e=>{this.bitset.has(e,r)||this.bitCounts.incre(e,r)}))}this.addPeer(e),this.downloadOnly&&this.chokePeerRequest(e)}}peersHas(e,t){return this.bitCounts.has(e,t)}deletePeer(e){if(this.peerManager.hasPeer(e.remotePeerId)&&e.bitset){const t=e.bitset.allArray();for(let e in t){const r=Number(e),i=t[r];i&&i.forEach((e=>{this.bitCounts.decre(e,r)}))}}this.cleanRequestingMap(e.remotePeerId),super.deletePeer(e)}hasAndSetTargetPeer(e,t,r,i){const{logger:n,config:s}=this;this.waitForPeer&&(this.mBufferedDuration=i=s.waitForPeerTimeout+s.httpLoadTime);let a=1e3*(i-s.httpLoadTime);const o=s.httpLoadTime+1.5;if(n.info(`bufferedDuration ${1e3*i} remainLoadTime ${a}`),i<=o)return!1;if(this.requestingMap.has(e,t)){const l=this.requestingMap.get(e,t);if(!l)return this._searchAvailablePeers(e,t,r);const h=l.segId;if(h&&h!==r)return n.warn(`syn segId ${h} not match ${r}`),this.requestingMap.delete(e,t),this._searchAvailablePeers(e,t,r);if(!l.shouldWaitForRemain(a)){if(n.warn(`syn prefetch timeout at ${e}`),l.isFull())return!1;const a=this.peerManager.getPeersOrderByWeight(),h=Qe(a,Ke,e,t,r);let u=Qe(a,Ye,e,t,r),d=Qe(a,Xe,e,t,r);if(l.hasReversePeer()){if(u=h.concat(u),u.length>0)return this.targetPeers.forwardPeer=u[0],!0}else if(l.hasForwardPeer()){if(d=h.concat(d),d.length>0)return this.targetPeers.reversePeer=d[0],!0}else{if(h.length>0)return l.hasForwardBuffer()?this.targetPeers.reversePeer=h[0]:this.targetPeers.forwardPeer=h[0],!0;{let e=!1;if(u.length>0&&(this.targetPeers.forwardPeer=u[0],e=!0),d.length>0&&(this.targetPeers.reversePeer=d[0],e=!0),e)return!0}}return!l.isEmpty()&&s.httpRangeSupported&&i>o+1}return n.info(`prefetch ${e} wait for remain`),!0}return this._searchAvailablePeers(e,t,r)}_searchAvailablePeers(e,t,r){if(!this.hasIdlePeers||!this.peersHas(e,t))return!1;const i=this.peerManager.getPeersOrderByWeight(),[n,s]=((e,t,r,i)=>{const n=Qe(e,Ke,t,r,i);if(n.length>=2)return[n[0],n[1]];if(1===n.length){const s=Qe(e,Ye,t,r,i);if(s.length>=1)return[s[0],n[0]];const a=Qe(e,Xe,t,r,i);return a.length>=1?[n[0],a[0]]:0===g(0,1)?[null,n[0]]:[n[0],null]}const s=Qe(e,Ye,t,r,i);if(s.length>=1)return[s[0],null];const a=Qe(e,Xe,t,r,i);return a.length>=1?[null,a[0]]:[null,null]})(i,e,t,r);return this.targetPeers={forwardPeer:n,reversePeer:s},[n,s].some((e=>!!e))}reportTraffic(e,t,r){const{fetcher:i}=this.engine;i?(e>0&&i.reportFlow(e),t>0&&i.reportDCTraffic(t,r)):this.logger.error("DC report failed")}notifyAllPeers(e,t,r,i=Ke){if(!r)return void this.logger.error("segId is required");if(this.downloadOnly)return;const{live:n}=this.config;if(this.bitset.has(e,t,i))return;const s=((e,t,r)=>`${e}-${t}-${r}`)(e,t,i);let a;i!==Xe&&(a=i===Ke);const o=this.requestingMap.get(e,t);for(let l of this.getPeers())o&&o.hasPeer(l)||l.notifySet.has(s)||l.bitset.hasCompleteOr(e,t,i)||l.uploading||(l.sendMsgHave(e,r,{level:t,reverse:i===Xe,complete:a}),l.notifySet.add(s),n&&E(l.notifySet,20))}checkPeers(){if(!this.hasPeers)return;const{logger:e,config:t,engine:r}=this,i=t.live,{currentLevel:n}=r;if(e.info(`currentLevel ${n}`),0===this.bitCounts.size(n))return;if(!i&&this.nextLostSN>=0&&this.nextLostSN>=this.currPlaySN-10)return;if(this.mBufferedDuration<this.allowP2pLimit&&(0!==this.mBufferedDuration||this.isHlsjs))return void e.info(`low buffer time ${this.mBufferedDuration}, skip prefetch`);const s=this.peerManager.getPeersOrderByWeight();if(0===s.length)return;const a=[];let{prefetchNum:o,endSN:l,startSN:h}=t;i&&(o=1);let u=0,d=this.loadingSN+1;if(!i)if(this.loadingSN>=l&&!this.bufMgr.overflowed)d=h;else{const e=Math.min(...s.filter((e=>e.endSN>=d)).map((e=>e?e.startSN:1/0)));if(!isFinite(e))return;d<e&&(d=e)}for(;a.length<o&&a.length<s.length&&u<this.maxPrefetchCount;){if(!i&&d>l)return;if(i&&d>this.loadingSN+2)return;if(this.bitset.has(d,n))d++;else{if(d!==this.loadingSN&&this.bitCounts.has(d,n)&&!this.requestingMap.has(d,n))for(let r of s)if(!a.includes(r)&&r.bitset.has(d,n)){const i=r.bitset.getState(d,n);let s;s=i===Ke?0===g(0,1):i===Xe,a.push(r);const o=r.bitset.getSegId(d,n),l=new _t(this.coordinator,this.logger,d,n,o,t.httpRangeSupported);this._setupSynthesizer(l),s?l.setReversePeer(r):l.setForwardPeer(r),this.requestingMap.set(d,n,l),r.requestDataBySN(d,!1,{level:n,reverse:s}),e.info(`request prefetch ${d} level ${n} from peer ${r.remotePeerId} downloadNum ${r.downloadNum} reverse ${s}`);break}u++,d++}}this.loadedPeerNum=a.length}onBufferManagerLost(e,t,r,i){this.currLostSN=e,r&&(this.nextLostSN=r),this.bitset.delete(e,i),this.bitCounts.delete(e,i)}cleanRequestingMap(e){const t=this.peerManager.getPeer(e);if(t)for(let[r,i]of this.requestingMap.internalMap){const n=r.split("-"),s=Number(n[1]),a=Number(n[0]);i.hasPeerId(e)&&(this.logger.info(`delete ${e} in synthesizer`),i.deletePeer(t),this.bitCounts.decre(s,a),t.bitset.delete(s,a))}}shouldWaitForNextSeg(){let e;return e=!this.isUploader&&(!!this.isReceiver||g(0,100)>20),this.isReceiver=this.isUploader=!1,e}updateLoaded(e,t,r){this.bitset.hasCompleteOr(e,t)||(this.bitset.add(e,t,r,Ke),this.bitCounts.delete(e,t))}broadcastPlaylist(e,t){if(!this.config.live)return;const r=function(e){const t=e.split("\n");let r=0,i=0;for(let e of t){const t=/^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(e);if(t&&t[1]){r=parseInt(t[1],10);break}}for(let e of t)e.startsWith("#EXTINF")&&i++;return r+i-1}(t);if(!this.isMobileNet){let i=0;for(let n of this.getPeers())if(i++,n.sendMsgPlaylist(e,t,r),i>=5)break}this.playlistInfo.set(e,{seq:r,data:t}),this.canReusePlaylist=!0}getPlaylistFromPeer(e){if(!this.config.live)return null;const{seq:t,data:r}=this.playlistInfo.get(e);for(let r of this.getPeers()){const i=r.getLatestPlaylist(e,t);if(i)return this.canReusePlaylist=!0,this.playlistInfo.set(e,i),i}return this.canReusePlaylist&&this.loadingSN<t-1&&this.loadingSN>t-5?(this.logger.info(`reuse playlist seq ${t} loadingSN ${this.loadingSN}`),this.canReusePlaylist=!1,{data:r,seq:t}):null}getBufferedDuration(){let{media:e,currentSrc:t}=this.engine;if(!e||e.src!==t&&0===e.currentTime){if(this.logger.info("try get video element"),e=l(this.config.mediaElem,t),!e)return 5;this.engine.media=e}let r=0,i=e.currentTime,n=e.buffered;for(let e=n.length-1;e>=0;e--)if(i>=n.start(e)&&i<=n.end(e)){r=n.end(e)-i;break}return this.mBufferedDuration=r,r>0?r:0}destroy(){super.destroy(),this.requestingMap.clear(),this.segmentBuilderMap.clear()}_handleSynOutput(e){e>0?this.httpTimeouts++:this.httpTimeouts>0&&this.httpTimeouts--}_notifySynthesizer(e,t,r,i,n,s=!0){const{logger:a}=this,o=this.requestingMap.get(r,i);if(!o)return;const l=o.segId;function h(n,s){s?e.requestDataById(t,r,!0,{level:i,reverse:n}):(a.info(`notify syn prefetch ${r}`),e.requestDataBySN(r,!1,{level:i,reverse:n}))}function u(){return n===Ye||n===Ke}function d(){return n===Xe||n===Ke}t&&l&&t!==l?a.warn(`notifySynthesizer segId ${t} not match ${l}`):o.isFull()||(o.isAlmostDeadline()?a.info("almost deadline, ignored"):o.isEmpty()?o.hasForwardBuffer()&&d()?(o.setReversePeer(e),h(!0,s)):o.hasReverseBuffer()&&u()&&(o.setForwardPeer(e),h(!1,s)):!o.hasForwardPeer()&&u()?(o.setForwardPeer(e),h(!1,s)):!o.hasReversePeer()&&d()&&(o.setReversePeer(e),h(!0,s)))}_setupEngine(){}getStatsForPeer(){const{currentLevel:e,media:t}=this.engine,r={level:e};if(t&&!this.config.live){const{currentTime:e}=t;r.pos=Math.round(e)}return r}_handleSynError(e){switch(e){case dt:this.logger.warn("ERROR_SYN_RANGE_REQUEST"),this.httpRangeErrs++;break;case ct:this.logger.warn("ERROR_SYN_HTTP_TIMEOUT"),this.httpTimeouts+=3}this.httpRangeErrs>=5&&(this.config.httpLoadTime<=4.5&&(this.config.httpLoadTime+=.5),this.httpRangeErrs=0)}}class Pt{constructor(t,r,i,n){this.bufferList=[],this.streamListeners=[],this.finished=!1,this.packetSize=u,this.attachments=n%this.packetSize==0?n/this.packetSize:Math.floor(n/this.packetSize)+1,this.pieceMsg={event:e.DC_PIECE,attachments:this.attachments,seg_id:i,sn:t,level:r,size:n,reverse:!1},this.sink=(0,a.l)(0),this.source="HttpStream"}receiveBytes(e,t){e.byteLength&&(this.sink=a.l.concat([this.sink,e]),this.bufferList.push(e),t&&(this.finished=!0),this._notifyStreamListeners(e))}getCompleteBuffer(){return this.sink.buffer}destroy(){this.finished||this._notifyStreamListenersAbort()}addStreamListener(e,t,r){this.streamListeners.push({handler:r,peerId:t})}removeStreamListener(e){this.streamListeners=this.streamListeners.filter((t=>t.peerId!==e||(t.handler(void 0,void 0,!0,"aborted by cancel"),!1)))}_notifyStreamListenersAbort(){for(let e of this.streamListeners){const{handler:t}=e;t(void 0,void 0,!0,"aborted by httpLoader")}this.streamListeners.length=0}_notifyStreamListeners(e){const{sn:t,seg_id:r}=this.pieceMsg;for(let i of this.streamListeners){const{handler:n}=i;n(t,r,!1,e,this.finished)}this.finished&&(this.streamListeners.length=0)}}const At=class extends Lt{constructor(e,t){super(e,t),this.server=t.fetcher,this.p2pEnabled=e.p2pEnabled,this.resolveMap=new Map,this.dcDownloadTimeout=t.live?5:9,this.segmentId=t.segmentId,this.segmentBypass="function"==typeof t.segmentBypass?t.segmentBypass:()=>!1,!0===this.config.httpStreamEnabled?this.streamEnabled=yt():this.streamEnabled=!1}async handleGetMediaData(e,r){const{logger:i,engine:n}=this;let{url:s,range:a}=e;const o=this._getFrag(s,a);if(!o)return i.warn(`cannot get frag ${s}`),r.postMessage({action:t.SW_GET_MEDIA});if(this.segmentBypass(s,o.tagList))return i.info(`bypass frag ${s}`),r.postMessage({action:t.SW_GET_MEDIA});n.currentLevelIndex=o.level;const{sn:l,level:h}=o,u=this.segmentId(String(h),l,s,a),d=u===this.loadingSegId;d&&i.warn(`duplicate request ${u}`),this.loadingSN=l,n.bufMgr&&(n.bufMgr.loadingSN=l),this.loadingSegId=u;const c=await this.bufMgr.getSegById(u);if(c)return i.info(`bufMgr found seg sn ${l} segId ${u}`),o.loaded=c.data.byteLength,o.fromPeerId=c.fromPeerId,n.emit(t.FRAG_LOADED,{url:s,sn:l,level:h,segId:u,loaded:o.loaded,duration:o.duration,byP2p:!0,fromPeerId:c.fromPeerId}),this._onFragLoaded(s,o),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:c.data}});let f=this.getBufferedDuration();f>6.8&&(f=6.8),i.info(`handleGetMediaData sn ${l} bufferedDuration ${f}`);let g=1e3*(f-this.config.httpLoadTime);if(g<0&&(g=0),this.resolveMap.has(l)||d){let e=this.requestingMap.get(l,h);if(e||d){e&&(i.warn(`${l} is requesting, terminate syn wait for seg`),e.terminate());let n=setTimeout((()=>{i.info(`notify seg ${l} timeout`),n=-1,r.postMessage({action:t.SW_GET_MEDIA})}),g);this.bufMgr.once(`${t.BM_ADDED_SN_}${l}`,(e=>{n<0||e&&e.level===h&&(clearTimeout(n),i.info(`notify seg ${e.sn}`),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:e.data}}))}))}else i.warn(`${l} is requesting, fallback`),r.postMessage({action:t.SW_GET_MEDIA})}else if(this.hasAndSetTargetPeer(l,h,u,f)){await this._loadFragByP2p(o,r,l,u,s,h,a,g)||r.postMessage({action:t.SW_GET_MEDIA})}else{const e=this.requestingMap.get(l,h);this.httpRangeSupported&&e&&e.segId===u&&e.hasPartialBuffer()?(i.warn(`syn has partial buffer for ${u}`),e.setTimeout(g)):this._loadFragByHttp(o,r,l,u,s,h,a,6800)}}_loadFragByHttp(e,r,i,n,s,a,l,h){const u=new Et({});let d={url:s,...b(l),headers:{[o]:"bypass"}};const c={timeout:h},f={onError:(e,i,n)=>{this.logger.error(n),r.postMessage({action:t.SW_GET_MEDIA})},onTimeout:()=>{this.logger.warn("http load timeout"),r.postMessage({action:t.SW_GET_MEDIA})},onSuccess:async o=>{this.notifyAllPeers(i,a,n);const{data:l}=o;if(!await this.bufMgr.hasSegOfId(n)){const e=v(l).buffer,t=new k(i,n,e,"",a);this.bufMgr.putSeg(t),this.reportTraffic(l.byteLength,0,0)}this.segmentBuilderMap.delete(i,a),e.segId=n,e.loaded=l.byteLength,this.engine.emit(t.FRAG_LOADED,{url:s,sn:i,level:a,segId:n,loaded:e.loaded,duration:e.duration,byP2p:!1}),this._onFragLoaded(s,e),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:l}})}};if(this.streamEnabled){let e;this.isMobileNet||this.notifyAllPeers(i,a,n,Ye),f.onBodyStart=t=>{!e&&t>0&&(e=new Pt(i,a,n,t),this.segmentBuilderMap.has(i,a)||this.segmentBuilderMap.set(i,a,e))},f.onUpdate=(t,r,n)=>{n?this.segmentBuilderMap.delete(i,a):e&&e.receiveBytes(t,r)}}u.load(d,c,f)}async _loadFragByP2p(e,r,i,n,s,a,o,l){const{logger:h}=this;h.info(`p2p load sn ${i} segId ${n} level ${a}`);const u=await this.load(i,n,a,s,o,l);if(u&&u.data){const{data:o,fromPeerId:l,size:d}=u;if(h.info(`p2p loaded segId ${n} level ${a} size ${o.byteLength}`),!await this.bufMgr.hasSegOfId(n)){const e=new k(i,n,o,l,a);h.info(`bufMgr putSeg ${i} level ${a}`),this.bufMgr.putSeg(e)}return e.loaded=o.byteLength,e.fromPeerId=l,this.engine.emit(t.FRAG_LOADED,{url:s,sn:i,level:a,segId:n,loaded:e.loaded,duration:e.duration,byP2p:!0,fromPeerId:l}),this._onFragLoaded(s,e),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:o,size:d}}),!0}h.warn(`P2P timeout load segId ${n}`);const d=await this.bufMgr.getSegById(n);return!!d&&(h.info(`already loaded seg sn ${i} segId ${n}`),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:d.data}}),!0)}notifySWMessage(e,r,i){if(e===t.SW_GET_MEDIA)this.server.increMediaRequests(),this.handleGetMediaData(r,i);else this.logger.warn(`unknown action ${e}`)}_getFrag(e,t){return t&&(e=`${e}|${t}`),this.fragMap.get(e)}destroy(){super.destroy(),this.logger.warn("destroy HlsSwScheduler")}_onFragLoaded(e,t){if(this.updateLoaded(t.sn,t.level,t.segId),!this.engine)return;const{media:r,targetDuration:i}=this.engine;!this.config.live&&r&&i&&(this.currPlaySN=Math.ceil(r.currentTime/i))}load(e,t,r,i,n,s){const{logger:a,config:o}=this;this.isReceiver=!0;const{forwardPeer:l,reversePeer:h}=this.targetPeers;l||h||(s-=1);let u=this.requestingMap.get(e,r),d={...b(n),proxied:!0,url:i,segId:t,httpLoadTime:1e3*o.httpLoadTime};u?u.setExtra(d):(u=new _t(this.coordinator,this.logger,e,r,t,this.httpRangeSupported,d),this._setupSynthesizer(u),this.requestingMap.set(e,r,u)),l&&(u.setForwardPeer(l),l.requestDataById(t,e,!0,{level:r})),h&&(u.setReversePeer(h),h.requestDataById(t,e,!0,{level:r,reverse:!0})),u.isEmpty()&&(s=0),a.info(`syn setTimeout ${s}`),u.setTimeout(s);const c=new Promise((i=>{const n={resolve:i,sn:e,level:r,segId:t};this.resolveMap.set(e,n)}));return this.targetPeers={},c}_setupSynthesizer(e){e.on(t.SYN_OUTPUT,((t,r)=>{const{config:i,logger:n}=this,{segId:s,sn:a,data:o,level:l}=t,{speed:h,http:u,p2p:d}=r;this._handleSynOutput(u);const c=this.resolveMap.has(a);if(i.validateSegment(s,new Uint8Array(o))){this.notifyAllPeers(a,l,s),this.bitset.has(a,l)||this.reportTraffic(u,d,h);const r=e.getFromPeerId();if(c){n.info(`receive criticalSeg seg_id ${s}`);const e=this.resolveMap.get(a);this.resolveMap.delete(a),e.resolve({data:o,fromPeerId:r})}else this.bitset.has(a,l)||(this.bufMgr.putSeg(t),this.updateLoaded(a,l,s))}else if(n.error(`segment ${s} validate failed`),c){const e=this.resolveMap.get(a);this.resolveMap.delete(a),e.resolve()}this.requestingMap.delete(a,l)})).on(t.SYN_ERROR,((t,r)=>{const{logger:i}=this,{sn:n,level:s}=t;if(console.warn(`SYN_ERROR ${s}-${n}`),this.resolveMap.has(n)){const e=this.resolveMap.get(n);this.resolveMap.delete(n),e.resolve()}r===ft&&e.hasPartialBuffer()?i.warn("syn abort with partial buffer"):(this.requestingMap.delete(n,s),this._handleSynError(r))}))}_handleDCHave(e,t,r,i,n){const s=0!==this.resolveMap.size;this._notifySynthesizer(e,i,t,r,n),this.config.live&&!s&&w()((()=>{this.checkPeers()}))}};var wt=function(e,t){return wt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},wt(e,t)};function Dt(e,t){function r(){this.constructor=e}wt(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function Rt(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var i,n,s=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(i=s.next()).done;)a.push(i.value)}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return a}function It(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(Rt(arguments[t]));return e}var Ct=function(e,t){this.target=t,this.type=e},kt=function(e){function t(t,r){var i=e.call(this,"error",r)||this;return i.message=t.message,i.error=t,i}return Dt(t,e),t}(Ct),xt=function(e){function t(t,r,i){void 0===t&&(t=1e3),void 0===r&&(r="");var n=e.call(this,"close",i)||this;return n.wasClean=!0,n.code=t,n.reason=r,n}return Dt(t,e),t}(Ct),Ot=function(){if("undefined"!=typeof WebSocket)return WebSocket},Mt={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+4e3*Math.random(),minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1};const Nt=function(){function e(e,t,r){var i=this;void 0===r&&(r={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(e){i._debug("open event");var t=i._options.minUptime,r=void 0===t?Mt.minUptime:t;clearTimeout(i._connectTimeout),i._uptimeTimeout=setTimeout((function(){return i._acceptOpen()}),r),i._ws.binaryType=i._binaryType,i._messageQueue.forEach((function(e){return i._ws.send(e)})),i._messageQueue=[],i.onopen&&i.onopen(e),i._listeners.open.forEach((function(t){return i._callEventListener(e,t)}))},this._handleMessage=function(e){i._debug("message event"),i.onmessage&&i.onmessage(e),i._listeners.message.forEach((function(t){return i._callEventListener(e,t)}))},this._handleError=function(e){i._debug("error event",e.message),i._disconnect(void 0,"TIMEOUT"===e.message?"timeout":void 0),i.onerror&&i.onerror(e),i._debug("exec error listeners"),i._listeners.error.forEach((function(t){return i._callEventListener(e,t)})),i._connect()},this._handleClose=function(e){i._debug("close event"),i._clearTimeouts(),i._shouldReconnect&&i._connect(),i.onclose&&i.onclose(e),i._listeners.close.forEach((function(t){return i._callEventListener(e,t)}))},this._url=e,this._protocols=t,this._options=r,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(e,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(e,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CONNECTING",{get:function(){return e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"OPEN",{get:function(){return e.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSING",{get:function(){return e.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSED",{get:function(){return e.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(e){this._binaryType=e,this._ws&&(this._ws.binaryType=e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bufferedAmount",{get:function(){return this._messageQueue.reduce((function(e,t){return"string"==typeof t?e+=t.length:t instanceof Blob?e+=t.size:e+=t.byteLength,e}),0)+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?e.CLOSED:e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),e.prototype.close=function(e,t){void 0===e&&(e=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),this._ws?this._ws.readyState!==this.CLOSED?this._ws.close(e,t):this._debug("close: already closed"):this._debug("close enqueued: no ws instance")},e.prototype.reconnect=function(e,t){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,this._ws&&this._ws.readyState!==this.CLOSED?(this._disconnect(e,t),this._connect()):this._connect()},e.prototype.send=function(e){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",e),this._ws.send(e);else{var t=this._options.maxEnqueuedMessages,r=void 0===t?Mt.maxEnqueuedMessages:t;this._messageQueue.length<r&&(this._debug("enqueue",e),this._messageQueue.push(e))}},e.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},e.prototype.dispatchEvent=function(e){var t,r,i=this._listeners[e.type];if(i)try{for(var n=function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(i),s=n.next();!s.done;s=n.next()){var a=s.value;this._callEventListener(e,a)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return!0},e.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter((function(e){return e!==t})))},e.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,It(["RWS>"],e))},e.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,r=void 0===t?Mt.reconnectionDelayGrowFactor:t,i=e.minReconnectionDelay,n=void 0===i?Mt.minReconnectionDelay:i,s=e.maxReconnectionDelay,a=void 0===s?Mt.maxReconnectionDelay:s,o=0;return this._retryCount>0&&(o=n*Math.pow(r,this._retryCount-1))>a&&(o=a),this._debug("next delay",o),o},e.prototype._wait=function(){var e=this;return new Promise((function(t){setTimeout(t,e._getNextDelay())}))},e.prototype._getNextUrl=function(e){if("string"==typeof e)return Promise.resolve(e);if("function"==typeof e){var t=e();if("string"==typeof t)return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},e.prototype._connect=function(){var e=this;if(!this._connectLock&&this._shouldReconnect){this._connectLock=!0;var t=this._options,r=t.maxRetries,i=void 0===r?Mt.maxRetries:r,n=t.connectionTimeout,s=void 0===n?Mt.connectionTimeout:n,a=t.WebSocket,o=void 0===a?Ot():a;if(this._retryCount>=i)this._debug("max retries reached",this._retryCount,">=",i);else{if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),void 0===(l=o)||!l||2!==l.CLOSING)throw Error("No valid WebSocket class provided");var l;this._wait().then((function(){return e._getNextUrl(e._url)})).then((function(t){e._closeCalled||(e._debug("connect",{url:t,protocols:e._protocols}),e._ws=e._protocols?new o(t,e._protocols):new o(t),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout((function(){return e._handleTimeout()}),s))}))}}},e.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new kt(Error("TIMEOUT"),this))},e.prototype._disconnect=function(e,t){if(void 0===e&&(e=1e3),this._clearTimeouts(),this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new xt(e,t,this))}catch(e){}}},e.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},e.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},e.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},e.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},e.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},e}();class Ft extends(s()){constructor(e,t){super(),this.logger=e,t.startsWith("wss")?this.addr=t.replace("wss","https"):t.startsWith("ws")&&(this.addr=t.replace("ws","http")),this.connected=!1,this.retryCount=0,this.closed=!1,this.msgQueue=[],this.posting=!1}start(){this.closed=!1,this._hello((()=>{this._longPolling()}))}_hello(e){fetch(this.addr+"&hello",{method:"POST"}).then((e=>{if(!e.ok)throw new Error("Network response was not ok");return e.json()})).then((t=>{this.connected=!0,e(),this.onopen&&this.onopen(t.ver)})).catch((e=>{this.connected=!1,this.closed=!0,this.onerror&&this.onerror(e)}))}send(e){this.msgQueue.push(e),this.posting||this._realSend([...this.msgQueue])}_realSend(e){this.posting=!0,this.msgQueue=[],fetch(this.addr,{method:"POST",body:JSON.stringify(e)}).then((()=>{this.posting=!1,this.msgQueue.length>0&&this._realSend([...this.msgQueue])})).catch((e=>{this.logger.error(e),this.posting=!1}))}close(){this.connected&&(this.closed=!0,this.connected=!1,this.abortController&&this.abortController.abort(),this.onclose&&this.onclose())}destroy(){this.close(),this.removeAllListeners()}_longPolling(){if(this.closed)return;this.abortController=new AbortController;const e=this.abortController.signal;fetch(this.addr,{signal:e}).then((e=>{if(!e.ok)throw new Error("Network response was not ok");return e.text()})).then((e=>{e&&this.onmessage&&this.onmessage(JSON.parse(e)),this.retryCount=0,this._longPolling()})).catch((e=>{this.connected&&(this.retryCount<=3?(this.retryCount++,this._longPolling()):(this.connected=!1,this.onerror&&this.onerror(e)))}))}}class Bt extends(s()){constructor(e,t,r,i,n="main"){super(),this.logger=e,this.config=t,this.wsAddr=r,this.serverVersion=0,this.pingInterval=i||60,this.name=n,this.pollingClient=new Ft(e,r);try{this._ws=this._init()}catch(t){e.error(t),this._startPolling()}}_init(){const e={maxRetries:this.config.wsMaxRetries,minReconnectionDelay:g(1e4,6e4),maxReconnectionDelay:6e5,maxEnqueuedMessages:20};let t=new Nt(this.wsAddr,void 0,e);return t.addEventListener("open",(()=>{this.logger.info(`signal ${this.name} ${this.wsAddr} connection opened`),this.pollingClient.connected?this.pollingClient.close():(this.onopen&&this.onopen(),this._startPing(this.pingInterval))})),t.push=t.send,t.send=e=>{let r=JSON.stringify(e);t.push(r)},t.addEventListener("message",(e=>{let t=e.data;const r=JSON.parse(t),i=r.action;if("pong"!==i){if("ver"!==i)return"close"===i?(this.logger.warn(`server close signal ${this.name} reason ${r.reason}`),void this.close()):void(this.onmessage&&this.onmessage(r,this.name));this.serverVersion=r.ver}else clearTimeout(this.pongTimer)})),t.addEventListener("close",(e=>{this.logger.warn(`signal ${this.name} ${this.wsAddr} closed ${e.code} ${e.reason}`),e.code>=5e3||e.code<4e3?(this.onclose&&this.onclose(),this._stopPing()):this.close()})),t.addEventListener("error",(e=>{this.logger.error(`signal ${this.name} ${this.wsAddr} error`),this._stopPing(),this.onerror&&this.onerror(e),this._startPolling()})),t}_startPolling(){this.pollingClient.connected||(this.logger.info("start polling"),this.pollingClient.start(),this._setupPolling(this.pollingClient))}sendSignal(e,t){const r={action:"signal",to_peer_id:e,data:t};this._send(r)}sendReject(e,t,r){const i={action:"reject",to_peer_id:e,reason:t,fatal:r};this._send(i)}_send(e){this.pollingClient.connected?this.pollingClient.send(e):this._ws&&this._ws.send(e)}_startPing(e=120){this.connected&&(this.pingTimer=setInterval((()=>{const e={action:"ping"};this._ws&&this._ws.send(e),this.serverVersion>=22&&this._waitForPong()}),1e3*e))}_waitForPong(){this.pongTimer=setTimeout((()=>{this.logger.warn(`signal ${this.name} wait for pong timeout, reconnect`),this.close(),this.reconnect()}),15e3)}_resetPing(){this._stopPing(),this._startPing(this.pingInterval)}_stopPing(){clearInterval(this.pingTimer),clearTimeout(this.pongTimer),this.pingTimer=null,this.pongTimer=null}close(){this.logger.info(`close signal ${this.name}`),this._stopPing(),(()=>{this._ws&&this._ws.close(1e3,"normal close")})(),this.pollingClient.close()}reconnect(){this._ws&&(this.logger.info(`reconnect signal ${this.name}`),this._ws.reconnect())}destroy(){console.warn("ws destroy"),this.close(),this._ws=null,this.removeAllListeners(),this.pollingClient.destroy()}get connected(){return!!this.pollingClient.connected||this._connected}get _connected(){return!!this._ws&&this._ws.readyState===Nt.OPEN}_setupPolling(e){e.onopen=e=>{e&&(this.serverVersion=e),this.logger.info("polling opened"),this.onopen&&this.onopen()},e.onerror=e=>{this._connected||this.onerror&&this.onerror(e)},e.onclose=()=>{this._connected||this.onclose&&this.onclose()},e.onmessage=e=>{if(this.onmessage)for(let t of e)this.onmessage(t,this.name)}}}const Ut=Bt,Gt=class extends(s()){constructor(e,t,r,i){super(),this.logger=e,this.config=t,this.mainAddr=r,this.backupAddr=i,this.mainWS=this._init(r),this.backupTimer=setTimeout((()=>{this.destroyed||(this.backupWS=this._init(i,"backup"))}),900),this._connected=!1,this.destroyed=!1}_init(e,t){if(!e)return null;let r=new Ut(this.logger,this.config,e,270,t);return r.onopen=()=>{!this._connected&&this.onopen&&(this._connected=!0,this.onopen())},r.onmessage=e=>{this.onmessage&&this.onmessage(e,r.name)},r.onclose=()=>{this._connected&&!this.connected&&this.onclose&&(this._connected=!1,this.onclose())},r.onerror=e=>{this.onerror&&this.onerror(e)},r}sendSignal(e,t,r){if(r){const i=this._getWSByName(r);i&&i.sendSignal(e,t)}else this.mainConnected?this.mainWS.sendSignal(e,t):this.backupConnected?this.backupWS.sendSignal(e,t):this.logger.warn("no signal available")}sendReject(e,t,r,i){if(i){const n=this._getWSByName(i);if(n)return void n.sendReject(e,t,r)}this.mainConnected?this.mainWS.sendReject(e,t,r):this.backupConnected?this.backupWS.sendReject(e,t,r):this.logger.warn("no signal available, send reject failed")}close(){this.mainWS&&this.mainWS.close(),this.backupWS&&this.backupWS.close()}_getWSByName(e){return this.mainWS&&this.mainWS.name===e?this.mainWS:this.backupWS&&this.backupWS.name===e?this.backupWS:null}reconnect(){this.mainWS&&this.mainWS.reconnect(),this.backupWS&&this.backupWS.reconnect()}destroy(){this.close(),clearTimeout(this.backupTimer),this.mainWS=null,this.backupWS=null,this.removeAllListeners(),this.destroyed=!0}get connected(){return this.mainConnected||this.backupConnected}get mainConnected(){return this.mainWS&&this.mainWS.connected}get backupConnected(){return this.backupWS&&this.backupWS.connected}};const jt=function(e,t,r=40){var i=null,n=!1,s=r;return function(r=!1){if(r)return clearTimeout(i),void(n=!1);n||(n=!0,i=setTimeout((function(){e.call(t,s),n=!1,i=null}),1e3*s),s*=1.1)}};class Ht{constructor(e,t,r=15){this.engine=e,this.config=t,this.trickle=t.waitForPeer,this.poolSize=r,this.pool=[];for(let e=0;e<r;e++)this.pool.push(this._createPeer());this.timer=setTimeout((()=>{this.destroy()}),2e4)}_createPeer(){return new N(this.engine,void 0,void 0,!0,this.config,{trickle:this.trickle})}get size(){return this.pool.length}getPeer(){return 0===this.size?this._createPeer():this.pool.shift()}destroy(){for(let e of this.pool)e.destroy(!0);this.pool=[],clearTimeout(this.timer)}}class $t extends(s()){constructor(e,t,r,i){super(),this.engine=e,this.logger=e.logger,this.config=i,this.connected=!1,this.scheduler=r,this.sequential=this.scheduler.sequential,this.DCMap=new Map,this.failedDCSet=new Set,this.notFoundDCSet=new Set;const n=O().isMobile();this.peerPool=new Ht(e,i,n?10:15),this.signalerWs=null,this.fetcher=t,this.peers=[],this.minConns=5,this.stuns=[],this.requestMorePeers=jt(this._requestMorePeers,this),this.maxConns=n?13:22,this.maxConnsActive=n?8:12,this.peersIncrement=0,this.gotPeersFromTracker=!1,this.fuseRate=-1,this.overloaded=!1}get totalConns(){return this.scheduler.peersNum+1}resumeP2P(){if(!this.fetcher)return;const{engine:t,config:r,fetcher:i}=this,{btAnnounce:n,btAnnouncePreflight:s}=i,{wsSignalerAddr:a,wifiOnly:o,geoIpPreflight:l,getPeerId:h}=r;(l?s:n).call(i).then((e=>{if(!this.scheduler)return;t.peerId=this.peerId=e.id,this.minConns=e.min_conns;const r=e.peers;this.scheduler.notifyPeersLoaded(r.length),t.netType=i.announceInfo.netType,(e.wifi_only||o)&&t.isMobileNet&&(this.scheduler.downloadOnly=!0,this.logger.info("downloadOnly mode")),e.overload&&(this.overloaded=!0,this.logger.warn("server is overloaded, degrade"));const n=a.main;let s=a.backup;e.signal&&!e.signal2&&(s=void 0),this.signalerWs=this._initSignalerWs(e.signal||n,e.signal2||s,e.token,e.token2),0===r.length?this.requestMorePeers():this.peers=this._filterPeers(r),t.emit("peerId",this.peerId),h&&"function"==typeof h&&h(this.peerId),e.stun&&e.stun.length>0&&(this.stuns=e.stun),e.debug&&this.logger.enableDebug(),e.fuse_rate&&(this.fuseRate=e.fuse_rate),this.logger.info(`announce request response ${JSON.stringify(e,null,2)}`)})).catch((r=>{if("TRACKER_EXPT"===r.code&&t.emit(e.EXCEPTION,r),this.scheduler.notifyPeersLoaded(0),r.retry){const e=g(15e3,4e4);this.logger.warn(`announce retry after ${e}ms`),this.announceTimer=setTimeout((()=>{this.resumeP2P()}),e)}}))}stopP2P(){this.fetcher.postStatsWithBeacon(),this.fetcher.destroy(),this.fetcher=null,this.requestMorePeers(!0),this.scheduler.destroy(),this.scheduler=null,this.signalerWs&&(this.signalerWs.destroy(),this.signalerWs=null),this.peers=[];for(let e of this.DCMap.values())e.destroy(!0);this.DCMap.clear(),this.peerPool.destroy(),this.peerPool=null,this.failedDCSet.clear(),this.notFoundDCSet.clear(),this.logger.warn("tracker stop p2p")}destroy(){this.stopP2P(),this.removeAllListeners(),clearTimeout(this.announceTimer);const{config:e}=this;e.getStats=e.getPeerId=e.getPeersInfo=null,this.logger.warn("destroy tracker")}_filterPeers(e){const t=[],r=[...this.DCMap.keys(),...this.failedDCSet.keys(),this.peerId];return e.filter((e=>!r.includes(e.id))).forEach((e=>{t.push({id:e.id,intermediator:e.intermediator})})),t}_tryConnectToAllPeers(){if(0!==this.peers.length&&this.signalerWs.connected)for(this.logger.info(`try connect to ${this.peers.length} peers`);this.peers.length>0&&!(this.DCMap.size>=this.maxConnsActive);){let e=this.peers.shift();const t=e.intermediator;this.logger.debug(`new DataChannel ${e.id} intermediator ${t}`),this._createDatachannel(e.id,!0,t)}}_setupDC(t){t.on(e.DC_SIGNAL,((e,r)=>{const i=t.remotePeerId;if(t.intermediator){const r=this.DCMap.get(t.intermediator);if(r){if(r.sendMsgSignal(i,this.peerId,e))return;this.logger.warn(`intermediator ${t.intermediator} relay failed`)}}this.signalerWs.sendSignal(i,e,t.signalName)})).on(e.DC_PEER_SIGNAL,(e=>{const r=e.to_peer_id,i=e.from_peer_id,n=e.action;if(r&&i&&n)if(r!==this.peerId){this.logger.info(`relay signal for ${i}`);const s=this.DCMap.get(r);if(s){if("signal"!==n)return void s.sendMsgSignalReject(r,i,e.reason,e.fatal);if(s.sendMsgSignal(r,i,e.data))return}t.sendMsgSignal(i,r)}else"signal"===n?this._handleSignalMsg(i,e,t.remotePeerId):this._handSignalRejected(i,e)})).on(e.DC_GET_PEERS,(()=>{const e=f(),r=this.scheduler.getPeers().filter((e=>e.peersConnected<(e.mobileWeb?13:22)&&!e.super));if(r&&r.length>0){const i=[];r.forEach((r=>{if(r.remotePeerId===t.remotePeerId||r.remotePeerId===this.peerId)return;if(!this.config.live&&(r.currentPos-t.currentPos>600||r.currentPos<t.currentPos))return;e-r.timeJoin>50&&i.push({id:r.remotePeerId})})),this.logger.info(`send ${i.length} peers to ${t.remotePeerId}`),t.sendPeers(i)}})).on(e.DC_PEERS,(e=>{t.gotPeers=!0;const r=e.peers;if(r&&r.length>0&&this.scheduler.peersNum<10){const e=5;this.logger.info(`receive ${r.length} peers from ${t.remotePeerId}`),r.forEach((e=>{e.intermediator=t.remotePeerId})),this.peers=this._filterPeers(r).slice(0,e),this._tryConnectToAllPeers()}})).once(e.DC_ERROR,(e=>{this.logger.info(`datachannel ${t.channelId} failed fatal ${e}`),this.scheduler&&(this.scheduler.deletePeer(t),this._destroyAndDeletePeer(t.remotePeerId,e),this.requestMorePeers(),this.fetcher&&(t.connected||e&&this.fetcher.increFailConns(),e&&this.failedDCSet.add(t.remotePeerId),this._doSignalFusing(this.scheduler.peersNum),this._tryConnectToAllPeers()))})).once(e.DC_TIMEOUT,(()=>{this.notFoundDCSet.add(t.remotePeerId)})).once(e.DC_CLOSE,(e=>{this.logger.info(`datachannel ${t.channelId} closed fatal ${e}`),this.scheduler&&(this.scheduler.deletePeer(t),this._doSignalFusing(this.scheduler.peersNum)),this._destroyAndDeletePeer(t.remotePeerId,e),e&&this.failedDCSet.add(t.remotePeerId),this.requestMorePeers(),this._tryConnectToAllPeers()})).once(e.DC_OPEN,(()=>{t.isInitiator&&this.scheduler.handshakePeer(t)})).once(e.DC_METADATA,(e=>{const{scheduler:r}=this;t.isInitiator||r.handshakePeer(t),r.handleMetaData(t,e);const i=this.DCMap.size>=this.minConns+3;this.requestMorePeers(i),this.peersIncrement++,this._doSignalFusing(r.peersNum+1)}))}_doSignalFusing(e){if(this.fuseRate<=0)return;const t=this.signalerWs.connected;t&&e>=this.fuseRate+2?(this.logger.warn("reach fuseRate, report stats close signaler"),this.totalConns-1>0&&this.fetcher.postStats(),this.signalerWs.close()):!t&&e<this.fuseRate&&(this.logger.warn("low conns, reconnect signaler"),this.signalerWs.reconnect())}_initSignalerWs(t,r,i,n){const s=(e,t)=>{let r=`${e}?id=${this.peerId}&p=web&v=2.7.13`;return t&&(r=`${r}&token=${t}`),r};let a,o=s(t,i);if(!this.overloaded&&r&&r!==t){let e=s(r,n);a=new Gt(this.logger,this.config,o,e)}else a=new Ut(this.logger,this.config,o,270);return a.onopen=()=>{this.connected=!0,this.engine.emit("serverConnected",!0),this._tryConnectToAllPeers()},a.onmessage=(e,t)=>{let r=e.action;const i=e.from_peer_id||e.from;switch(r){case"signal":this._handleSignalMsg(i,e,null,t);break;case"reject":this._handSignalRejected(i,e);break;default:this.logger.warn(`Signal websocket unknown action ${r}`)}},a.onclose=()=>{this.connected=!1,this.engine.emit("serverConnected",!1)},a.onerror=t=>{t.message&&this.engine.emit(e.EXCEPTION,Ae()(t,"SIGNAL_EXPT"))},a}_handSignalRejected(e,t){this.logger.warn(`signaling ${e} rejected, reason ${t.reason}`);const r=this.DCMap.get(e);r&&!r.connected&&(r.destroy(t.fatal),this.DCMap.delete(e)),this.requestMorePeers(),t.fatal&&this.failedDCSet.add(e),this._tryConnectToAllPeers()}_handleSignalMsg(e,t,r,i){if(!this.scheduler)return;const{logger:n}=this;if(t.data){if(this.failedDCSet.has(e))return void this._sendSignalReject(e,`peer ${e} in blocked list`,r,i,!0);this._handleSignal(e,t.data,r,i)}else{const t=this.DCMap.get(e);if(!t)return;if(this.signalerWs.backupConnected&&t&&t.signalMsgs.length>0&&"main"===i&&!t.useBackupSignal){t.useBackupSignal=!0,t.signalName="backup",n.warn(`${e} not found from main, try backup signal`);for(let r of t.signalMsgs)this.signalerWs.sendSignal(e,r,"backup");return}if(t.useBackupSignal)return;this._destroyAndDeletePeer(e),n.info(`signaling ${e} not found`);const{scheduler:s}=this;s.waitForPeer&&(s.waitingPeers--,0===s.waitingPeers&&s.notifyPeersLoaded(0)),this.requestMorePeers(),this._tryConnectToAllPeers(),r||this.notFoundDCSet.add(e)}}_handleSignal(e,t,r,i){const n=t.type,{logger:s}=this;let a=this.DCMap.get(e);if(a){if(a.connected)return void s.info("datachannel had connected, signal ignored");if("offer"===n){if(!(this.peerId>e))return void s.warn(`signal type wrong ${n}, ignored`);this._destroyAndDeletePeer(e,!1),s.warn(`signal type wrong ${n}, convert to non initiator`),a=this._createDatachannel(e,!1,r)}}else{if("answer"===n){const t=`signal type wrong ${n}`;return s.warn(t),this._sendSignalReject(e,t,r,i),void this._destroyAndDeletePeer(e,!1)}if(s.debug(`receive node ${e} connection request`),this.DCMap.size>=this.maxConns){const t=`peers reach limit ${this.maxConns}`;return s.warn(t),void this._sendSignalReject(e,t,r,i)}a=this._createDatachannel(e,!1,r)}i&&(a.signalName=i),a.receiveSignal(t)}_createDatachannel(e,t,r){let i;if(t&&this.peerPool.size>0)i=this.peerPool.getPeer(),this.logger.info(`get peer from pool, signal size ${i.signalMsgs.length}`),i.assignPeerId(this.peerId,e);else{let n=this.config.trickleICE;r||this.overloaded&&(n=!1),i=new N(this.engine,this.peerId,e,t,this.config,{stuns:this.stuns,intermediator:r,trickle:n})}return this.DCMap.set(e,i),this._setupDC(i),i}_sendSignalReject(e,t,r,i,n){if(r){const i=this.DCMap.get(r);if(i&&i.sendMsgSignalReject(e,this.peerId,t,n))return}this.signalerWs.sendReject(e,t,n,i)}_requestMorePeers(e){const{logger:t}=this;t.info(`requestMorePeers after delay ${e}`);const r=this.scheduler.peersNum,i=this.peersIncrement;this.peersIncrement=0,r>=this.minConns||(0===r||i<=3&&!this.gotPeersFromTracker&&!this.overloaded?(this.failedDCSet.size>50&&(this.failedDCSet=new Set([...this.failedDCSet].slice(-50))),this.notFoundDCSet.size>20&&(this.notFoundDCSet=new Set([...this.notFoundDCSet].slice(-20))),this.fetcher.btGetPeers([...this.DCMap.keys(),...this.failedDCSet.keys(),...this.notFoundDCSet.keys()],0===r).then((e=>{e&&e.peers&&(t.info(`requestMorePeers resp ${JSON.stringify(e,null,2)}`),this.peers=this._filterPeers(e.peers),this._tryConnectToAllPeers())})).catch((e=>{t.error(`requestMorePeers error ${e}`)})),this.gotPeersFromTracker=!0):r<this.maxConnsActive&&(this.scheduler.requestPeers(),this.gotPeersFromTracker=!1))}_destroyAndDeletePeer(e,t=!0){const r=this.DCMap.get(e);return!!r&&(r.destroy(t),this.DCMap.delete(e),!0)}}const Wt=$t;const qt="2.7.10";class Vt extends oe{static get name(){return"HlsSwP2pEngine"}static isServiceWorkerSupported(){return"serviceWorker"in navigator}constructor(e={}){super(e),this.swSupported=isSecureContext,this.levels=[],this.bypassLevels=[],this.currentLevelIndex=0,this.currentSrc="",this.swVersion="",this.media=l(this.config.mediaElem),this.fragMap=new Map,Vt.isServiceWorkerSupported()||(this.swSupported=!1,console.warn("service worker is not supported"));const{channelIdMaker:r,signalId:i,browserInfo:n}=this.setup();this.onLevelLoaded=e=>{const{config:s}=this,a=e.live;s.live=a,this.targetDuration=e.averagetargetduration,this.browserInfo={...n,live:a,abr:this.multiBitrate||void 0,type:"hls_sw"},this.channel=`${r(this.currentSrc)}|${i}[${N.VERSION}]`,this.setupElectron();const o=this.initLogger();o.info("use HlsSwP2pEngine"),o.info(`engine version: ${z.version} hls-proxy version: ${this.swVersion}`),o.info(`channel ${this.channel}`),a||(s.startSN=e.startSN,s.endSN=e.endSN,o.info(`startSN ${e.startSN} endSN ${e.endSN}`)),this._init(this.channel,this.browserInfo),this.off(t.LEVEL_LOADED,this.onLevelLoaded)},0===this.config.httpLoadTime&&(this.config.live?this.on(t.LEVEL_LOADED,(e=>{this.config.httpLoadTime=this.determineHttpLoadTime(e.fragments)})):this.config.httpLoadTime=2.5),this.on(t.LEVEL_LOADED,this.onLevelLoaded),this.onManifestParsed=(e,r)=>{this.multiBitrate=e.length>1,this.currentSrc=r,this.off(t.MANIFEST_PARSED,this.onManifestParsed)},this.on(t.MANIFEST_PARSED,this.onManifestParsed),this.onFragLoaded=({url:e})=>{const{config:r}=this;!this.rangeTested&&this.config.useHttpRange&&(p(e,null,null,2e3,!0).then((e=>{r.httpRangeSupported=!0,r.logger.info("http range is supported")})).catch((e=>{r.httpRangeSupported=!1,r.logger.warn(`http range is not supported, ${e}`)})),this.rangeTested=!0),this.off(t.FRAG_LOADED,this.onFragLoaded)},this.once(t.FRAG_LOADED,this.onFragLoaded),this.swSupported&&(navigator.serviceWorker.onmessage=e=>{const{action:r,data:i}=e.data,n=e.ports[0];if(this.logger&&this.logger.info(`engine onmessage action ${r}`),n.postMessage({action:r,pong:!0}),!this.p2pEnabled||!i)return n.postMessage({action:r});switch(r){case t.SW_PLAYLIST:this.handlePlaylist(i,n);break;case t.SW_GET_PLAYLIST:this.handleGetPlaylist(i,n);break;default:if(!this.config.scheduler)return n.postMessage({action:r});this.config.scheduler.notifySWMessage(r,i,n)}}),this.config.swAutoRegister&&this.registerServiceWorker().then((function(e){})).catch((e=>{console.warn("ServiceWorker registration failed ",e)}))}get currentLevel(){return this.currentLevelIndex}watchRebuffering(e){this.offEventRebuffer=function(e,t){let r=null;const i=()=>{r||(r=setTimeout((()=>{t()}),2500))},n=()=>{null!=r&&(clearTimeout(r),r=null)};return e.addEventListener("waiting",i),e.addEventListener("playing",n),()=>{e.removeEventListener("waiting",i),e.removeEventListener("playing",n)}}(e,(()=>{this.fetcher&&this.fetcher.increRebuffers()}))}handlePlaylist(e,r){const{config:i,logger:n}=this,{url:s,redirectedUrl:a,text:o,ver:l}=e;return this.swVersion=l,-1===function(e,t){for(var r=e.split("."),i=t.split("."),n=0;n<Math.max(r.length,i.length);n++){var s=parseInt(r[n]||0),a=parseInt(i[n]||0);if(s<a)return-1;if(s>a)return 1}return 0}(l,qt)?(console.warn("hls-proxy.js version should >= 2.7.10"),r.postMessage({action:t.SW_PLAYLIST})):0!==o.indexOf("#EXTM3U")||this.bypassLevels.indexOf(s)>=0?(console.warn("no EXTM3U delimiter or bypass audio track"),r.postMessage({action:t.SW_PLAYLIST})):(r.postMessage({action:t.SW_PLAYLIST,data:{active:!0,debug:n&&n.isDebugLevel,sharePlaylist:!!i.sharePlaylist}}),void this._parsePlaylist(o,s.split("?")[0],a))}_parsePlaylist(e,r,i,n=!1){const s=r;i&&(r=i);const{config:a,logger:o}=this;if(e.indexOf("#EXTINF:")>0||e.indexOf("#EXT-X-TARGETDURATION:")>0){let i=0;const o=be.parseLevelPlaylist(e,r);this.levels.length>1?(i=this.levels.indexOf(o.url),-1===i?(this.restartP2p(),this.currentSrc=s,i=0):this.currentLevelIndex=i):(""!==this.currentSrc&&s!==this.currentSrc&&this.restartP2p(),this.currentSrc=s,this.levels=[r]),this.emit(t.LEVEL_LOADED,o),a.live&&function(e,t){if(e.size<=t)return;const r=[...e.keys()];do{e.delete(r.shift())}while(e.size>t)}(this.fragMap,200),o.fragments.forEach((e=>{e.level=i;let t=P().buildAbsoluteURL(e.baseurl,e.relurl,{alwaysNormalize:!0});const r=e.byteRange;2===r.length&&(t=`${t}|bytes=${r[0]}-${r[1]-1}`),this.fragMap.set(t,e)})),!n&&a.sharePlaylist&&a.scheduler&&!a.scheduler.isMobileNet&&a.scheduler.broadcastPlaylist(r.split("?")[0],e)}else{const i=be.parseMasterPlaylist(e,r);if(""!==this.currentSrc&&this.restartP2p(),i.length>0){i.sort(((e,t)=>e.bitrate-t.bitrate)),this.levels=i.map((e=>e.url));const t=i.map((e=>({id:e.attrs.AUDIO,codec:e.audioCodec})));be.parseMasterPlaylistMedia(e,r,"AUDIO",t).forEach((e=>{e.url&&this.bypassLevels.push(e.url)}))}this.emit(t.MANIFEST_PARSED,i,s)}}handleGetPlaylist(e,r){const{config:i,logger:n}=this;if(!n)return r.postMessage({action:t.SW_GET_PLAYLIST});const{scheduler:s}=i;if(!s)return void n.warn("scheduler not found");const{url:a}=e,o=a.split("?")[0];if(s.playlistInfo.has(o)){const e=s.getPlaylistFromPeer(o);if(e&&e.data){const{data:i,seq:s}=e;return n.info(`got playlist from peer seq ${s}`),r.postMessage({action:t.SW_GET_PLAYLIST,data:{text:i}}),void this._parsePlaylist(i,a.split("?")[0],void 0,!0)}}return r.postMessage({action:t.SW_GET_PLAYLIST})}async registerServiceWorker(){const{logger:e,config:t}=this;if(!this.swSupported){let e="sw is not supported";return y||(e="https is required when using ServiceWorker",console.warn(e)),Promise.reject(e)}this.media=l(t.mediaElem),this.media||e&&e.warn("no video element found");const{serviceWorker:r}=navigator;return r.getRegistration(t.swFile).then((e=>e||r.register(t.swFile,{scope:t.swScope}).then((e=>{const t=e.installing||e.waiting;return e.active?e:new Promise(((r,i)=>{const n=()=>{"activated"===t.state?(t.removeEventListener("statechange",n),r(e)):"redundant"===t.state&&i("sw is redundant")};t.addEventListener("statechange",n)}))}))))}unregisterServiceWorker(){const{config:e}=this,t="serviceWorker is not registered";return new Promise(((r,i)=>{const{serviceWorker:n}=navigator;n||i(t),n.getRegistration(e.swFile).then((e=>{e?e.unregister().then((()=>{r()})).catch((()=>{i(t)})):i(t)}))}))}async _init(e,t){if(!this.p2pEnabled)return;const{logger:r}=this;try{await this.initSegmentManager()}catch(e){return void(r&&r.error(e))}t.live||(t.tag=this.getTagForVod());let i=new Ve(this,this.config.token,encodeURIComponent(e),this.config.announce||"",t);this.fetcher=i,this.config.fetcher=i;const n=setInterval((()=>{this.media?(clearInterval(n),this.watchRebuffering(this.media)):this.media=l(this.config.mediaElem)}),3e3);let s=new At(this,this.config);s.bufferManager=this.bufMgr,s.fragMap=this.fragMap,this.tracker=new Wt(this,i,s,this.config),this.config.scheduler=this.tracker.scheduler,this.p2pEnabled&&!this.tracker.connected&&this.tracker.resumeP2P(),this.setupWindowListeners()}restartP2p(){this.logger&&this.logger.warn("restart P2P"),this.disableP2P(),this.enableP2P(),this.on(t.LEVEL_LOADED,this.onLevelLoaded),this.on(t.MANIFEST_PARSED,this.onManifestParsed),this.on(t.FRAG_LOADED,this.onFragLoaded)}enableP2P(){return this.p2pEnabled?null:(this.logger&&this.logger.info("enable P2P"),this.config.p2pEnabled=this.p2pEnabled=!0,this)}disableP2P(){this.logger&&this.logger.warn("disable P2P"),this.offEventRebuffer&&this.offEventRebuffer(),this.p2pEnabled&&(this.config.p2pEnabled=this.p2pEnabled=!1,this.tracker&&this.tracker instanceof Wt&&(this.tracker.stopP2P(),this.tracker={},this.fetcher=null,this.bufMgr.destroy(),this.bufMgr=null)),this.levels=[],this.currentLevelIndex=0,this.lastLevel=0,this.multiBitrate=!1,this.rangeTested=!1,this.currentSrc="",this.media=void 0,this.config.live=!1,this.removeAllListeners(t.MANIFEST_PARSED),this.removeAllListeners(t.LEVEL_LOADED)}}const zt=Vt;const Kt=class extends Lt{constructor(e,t){super(e,t),this.isHlsjs=!0,this.waitForPeer=t.waitForPeer||!1,this.waitForPeerTimeout=t.waitForPeerTimeout,this.waitingPeers=0,this.waitingSeg={}}startWaitPeerTimer(){this.waitForPeer&&(this.waitForPeerTimer=setTimeout((()=>{this.waitForPeer&&(this.waitForPeer=!1,this.emit(t.SCH_WAIT_PEER))}),1e3*(this.waitForPeerTimeout+0)))}updatePlaySN(e){this.currPlaySN=e}load(e,t,r){this.isReceiver=!0;const{logger:i,config:n}=this;this.context=e;const{rangeStart:s,rangeEnd:a,url:o}=e,l=e.frag,{segId:h,sn:u,level:d}=l;this.callbacks=r,this.stats=pt(),this.criticalSeg={sn:u,level:d,segId:h};let c=this.mBufferedDuration-n.httpLoadTime;c>this.dcDownloadTimeout&&(c=this.dcDownloadTimeout);const{forwardPeer:f,reversePeer:g}=this.targetPeers;f||g||(c-=1);let p=this.requestingMap.get(u,d);const m={rangeStart:Number(s),rangeEnd:Number(a),url:o,httpLoadTime:1e3*n.httpLoadTime,xhrSetup:n.xhrSetup,segId:h};p?p.setExtra(m):(p=new _t(this.coordinator,this.logger,u,d,h,this.httpRangeSupported,m),this._setupSynthesizer(p),this.requestingMap.set(u,d,p)),f&&(p.setForwardPeer(f),f.requestDataById(h,u,!0,{level:d})),g&&(p.setReversePeer(g),g.requestDataById(h,u,!0,{level:d,reverse:!0})),p.isEmpty()&&(c=0),i.info(`syn setTimeout ${c}`),p.setTimeout(1e3*c),this.targetPeers={}}waitPeerNotifier(){return new Promise((e=>{this.waitForPeer||e(),setTimeout(e,1e3*this.waitForPeerTimeout),this.once(t.SCH_WAIT_PEER,e)}))}addPeer(e){if(super.addPeer(e),this.waitForPeer){const{level:r,sn:i}=this.waitingSeg,n=e.remotePeerId;e.bitset.has(i,r)?(this.logger.info(`found initial seg ${r}-${i} from peer ${n}`),this.emit(t.SCH_WAIT_PEER)):this.waitingPeers===this.peersNum&&this.emit(t.SCH_WAIT_PEER)}}notifyPeersLoaded(e){this.logger.info(`notifyPeersLoaded ${e}`),this.waitForPeer&&(0===e?(this.waitForPeer=!1,this.emit(t.SCH_WAIT_PEER)):this.waitingPeers=e)}destroy(){super.destroy(),this.logger.warn("destroy HlsjsScheduler"),clearTimeout(this.waitForPeerTimer)}_setupDC(e){super._setupDC(e)}_setupSynthesizer(e){e.on(t.SYN_OUTPUT,((t,r)=>{const{config:i,logger:n}=this,{segId:s,sn:a,data:o,level:l}=t,{speed:h,http:u,p2p:d}=r;this._handleSynOutput(u);const c=this.criticalSeg&&this.criticalSeg.segId===s;if(i.validateSegment(s,new Uint8Array(o))){this.notifyAllPeers(a,l,s),this.bitset.has(a,l)||this.reportTraffic(u,d,h);const r=e.getFromPeerId();if(c){n.info(`receive criticalSeg seg_id ${s}`);let e=this.stats;e.tfirst=e.loading.first=Math.max(e.trequest,performance.now()),e.tload=e.loading.end=e.tfirst,e.loaded=e.total=o.byteLength,this.criticalSeg=null;const{frag:t}=this.context;t.fromPeerId=r,t.loadByP2P=!0,this.callbacks.onSuccess({data:o,url:this.context.url},e,this.context)}else this.bitset.has(a,l)||(this.bufMgr.putSeg(t),this.updateLoaded(a,l,s))}else n.error(`segment ${s} validate failed`),c&&this.callbacks.onTimeout(this.stats,this.context,null);this.requestingMap.delete(a,l),i.live&&!this.criticalSeg&&this.checkPeers()})).on(t.SYN_ERROR,((t,r)=>{const{logger:i}=this,{sn:n,level:s}=t;i.warn(`SYN_ERROR loading ${n} code ${r}`),this.criticalSeg&&this.criticalSeg.sn===n&&(this.criticalSeg=null,this.callbacks.onTimeout(this.stats,this.context,null)),r===ft&&e.hasPartialBuffer()?i.warn("syn abort with partial buffer"):(this.requestingMap.delete(n,s),this._handleSynError(r))}))}_setupEngine(){super._setupEngine(),this.engine.on(t.FRAG_LOADING,(({sn:e,segId:t,byHttp:r,level:i})=>{this.loadingSN=e,this.loadingSegId=t})).on(t.FRAG_LOADED,(({sn:e,segId:t,byP2p:r,level:i})=>{this.requestingMap.delete(e,i),this.updateLoaded(e,i,t)})).on(t.FRAG_CHANGED,(({sn:e})=>{this.updatePlaySN(e)}))}_handleDCHave(e,t,r,i,n){this._notifySynthesizer(e,i,t,r,n),this.config.live&&!this.criticalSeg&&w()((()=>{this.checkPeers()}))}};const Yt=class extends oe{static get name(){return"HlsjsP2pEngine"}constructor(e,t={}){if(super(t),!e)throw new TypeError("hlsjs instance is null");this.hlsjs=e,this.HLSEvents=e.constructor.Events,this.config.isHlsV0="0"===e.constructor.version.split(".")[0],this.config.xhrSetup=e.config.xhrSetup,!0===this.config.httpStreamEnabled&&(e.config.streamEnabled=yt());const{channelIdMaker:r,signalId:i,browserInfo:n}=this.setup();e.config.segmentId=this.config.segmentId,this.config.waitForPeer&&this.config.sourceUrl?(this.config.trickleICE=!0,this.config.httpRangeSupported=!0,this._startEngine(this.config.sourceUrl,this.config.live,n,r,i)):this.config.waitForPeer=!1;const s=(t,a)=>{if(!a)return;const{config:o}=this,l=a.details,h=l.live;this.config.waitForPeer?this.tracker&&this.tracker.scheduler.startWaitPeerTimer():this._startEngine(this.hlsjs.url,h,n,r,i,l),o.waitForPeer&&this.logger.info("waitForPeer mode"),e.off(this.HLSEvents.LEVEL_LOADED,s)};e.on(this.HLSEvents.LEVEL_LOADED,s);const a=(e,t)=>{if(!t)return;const{config:r}=this,{fragments:i}=t.details;r.httpLoadTime=this.determineHttpLoadTime(i)};0===this.config.httpLoadTime&&(this.config.live?e.on(this.HLSEvents.LEVEL_LOADED,a):this.config.httpLoadTime=2.5);const o=(t,r)=>{const i=r.levels.length;this.multiBitrate=i>1,e.off(this.HLSEvents.MANIFEST_PARSED,o)};e.on(this.HLSEvents.MANIFEST_PARSED,o),e.on(this.HLSEvents.DESTROYING,(()=>{e.off(this.HLSEvents.LEVEL_LOADED,a),this.destroy()}))}_startEngine(e,t,r,i,n,s={}){const{config:a}=this;a.live=this.hlsjs.config.live=t,this.browserInfo={...r,live:t,abr:this.multiBitrate||void 0,type:"hls"},this.channel=`${i(e)}|${n}[${N.VERSION}]`,this.setupElectron();const o=this.initLogger();o.info("use HlsjsP2pEngine"),this.logger=this.hlsjs.config.logger=o,o.info(`channel ${this.channel}`),t||(a.startSN=s.startSN,a.endSN=s.endSN,o.info(`startSN ${s.startSN} endSN ${s.endSN}`)),this.eventListened=!1,this._init(this.channel,this.browserInfo)}async _init(e,r){const{logger:i,config:n}=this;if(!this.p2pEnabled)return;this.hlsjs.config.p2pEnabled=this.p2pEnabled,this.hlsjs.config.sharePlaylist=n.sharePlaylist,r.live||(r.tag=this.getTagForVod()),this.media=this.hlsjs.media,this.media&&(this.currentSrc=this.media.src);let a=new Ve(this,n.token,encodeURIComponent(e),n.announce||"",r);this.fetcher=a;const o=new Kt(this,n);this.tracker=new Wt(this,a,o,n);try{await this.initSegmentManager()}catch(e){return void i.error(e)}this.hlsjs.config.bufMgr=this.bufMgr,o.bufferManager=this.bufMgr,this.hlsjs.config.fLoader=function(e,r,i,n,a){return class extends(s()){constructor(t){super(),this.logger=t.logger,this.isHlsV0=n,this.bufMgr=t.bufMgr,this.streamEnabled=t.streamEnabled,this.httpLoader=this.streamEnabled?new Et(t):new t.loader(t),this.p2pEnabled=t.p2pEnabled,this.isLive=t.live,this.scheduler=e,this.fetcher=r,this.segmentId=t.segmentId,this.blockTypes=i,this.forbidden=r.forbidden,this.stats=this.httpLoader.stats||pt(),this.enableWorker=t.enableWorker,this.segmentBypass="function"==typeof a?a:()=>!1}destroy(){this.httpLoader.destroy()}abort(){this.httpLoader.abort()}async load(e,r,i){const{logger:n,scheduler:s}=this,a=e.frag;this.isHlsV0||(a.stats=this.stats);let o=e.frag.segId;if(!o){let t;e.rangeEnd&&(t="bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),o=e.frag.segId=this.segmentId(String(a.level),a.sn,a.url,t)}if(!a.url||gt(a.url,this.blockTypes,a.type)||this.segmentBypass(a.url,a.tagList))return n.info(`HTTP load blockType ${a.url}`),e.frag.loadByHTTP=!0,this.httpLoader.load(e,r,i);if(this.forbidden)return;this.fetcher.increMediaRequests(),r.maxRetry=2;const l=s.getBufferedDuration(),h=await this.bufMgr.getSegById(o);if(this.p2pEnabled&&h){n.info(`bufMgr found seg sn ${a.sn} segId ${o} level ${a.level}`);let t=v(h.data).buffer,r={url:e.url,data:t};return mt(this.stats,h.size),a.loaded=h.size,a.loadByP2P=!0,e.frag.fromPeerId=h.fromPeerId,void w()((()=>{!this.isHlsV0&&i.onProgress&&i.onProgress(this.stats,e,r.data),i.onSuccess(r,this.stats,e)}))}if(this.p2pEnabled&&s.hasAndSetTargetPeer(a.sn,a.level,a.segId,l))this.loadFragByP2p(e,r,i,o);else if(s.waitForPeer&&(n.warn("waitPeerNotifier start"),s.waitingSeg={sn:a.sn,level:a.level},await s.waitPeerNotifier(),n.warn("waitPeerNotifier end"),this.p2pEnabled&&s.hasAndSetTargetPeer(a.sn,a.level,a.segId,l)))this.loadFragByP2p(e,r,i,o);else if(n.info(`fragLoader load ${o} at ${a.sn} level ${a.level} buffered ${1e3*l}`),this.isLive&&s.hasIdlePeers&&l>7&&s.shouldWaitForNextSeg()){let h=l-7;h>4.5&&(h=4.5);const u=n=>{n===o&&(s.off(t.SCH_DCHAVE,u),clearTimeout(this.waitTimer),s.hasAndSetTargetPeer(a.sn,a.level,a.segId,l)?this.loadFragByP2p(e,r,i,o):this.loadFragByHttp(e,r,i,o))};n.info(`wait peer have for ${h}s`),s.on(t.SCH_DCHAVE,u),this.waitTimer=setTimeout((()=>{this.loadFragByHttp(e,r,i,o),s.off(t.SCH_DCHAVE,u)}),1e3*h)}else{const t=s.requestingMap.get(a.sn,a.level);s.httpRangeSupported&&t&&t.segId===a.segId&&t.hasPartialBuffer()?(n.warn(`syn has partial buffer for ${a.segId}`),this.loadFragByP2p(e,r,i,o)):this.loadFragByHttp(e,r,i,o)}}loadFragByHttp(e,t,r,i){const{logger:n,scheduler:s}=this,{segmentBuilderMap:a}=s;s.isReceiver=!1;const o=e.frag,{sn:l,level:h}=o;if(this.streamEnabled){let e;s.isMobileNet||s.notifyAllPeers(l,h,i,Ye),r.onUpdate=(t,r,i)=>{i?a.delete(l,h):e&&e.receiveBytes(t,r)},r.onBodyStart=t=>{!e&&t>0&&(e=new Pt(l,h,i,t),a.has(l,h)||a.set(l,h,e))}}const u=r.onSuccess;r.onSuccess=async(e,t,r)=>{if(!await this.bufMgr.hasSegOfId(i)){const t=v(e.data).buffer,r=new k(l,i,t,this.fetcher.peerId,h);this.bufMgr.putSeg(r)}a.delete(l,h),this.fetcher.reportFlow(t.total);let o=t.tload-t.trequest;n.info(`HTTP loaded ${i} time ${o}`),s.notifyAllPeers(l,h,i),u(e,t,r)};const d=r.onProgress;r.onProgress=(e,t,r)=>{o.loaded=e.total,d(e,t,r&&this.enableWorker?v(r).buffer:r)},e.frag.loadByHTTP=!0,this.httpLoader.load(e,t,r)}loadFragByP2p(e,t,r,i){const{logger:n}=this,s=e.frag;this.scheduler.load(e,t,r);const a=r.onSuccess,o=r.onTimeout;r.onTimeout=(e,l)=>{n.warn(`P2P timeout switched to HTTP load ${s.relurl} at ${s.sn}`),r.onSuccess=a,this.loadFragByHttp(l,t,r,i),r.onTimeout=o},r.onSuccess=async(e,t,o)=>{if(!await this.bufMgr.hasSegOfId(i)){const t=v(e.data).buffer,r=new k(s.sn,i,t,s.fromPeerId||this.fetcher.peerId,s.level);this.bufMgr.putSeg(r)}s.loadByP2P||this.fetcher.reportFlow(t.total),s.loaded=t.loaded,n.info(`${s.loadByP2P?"P2P":"HTTP"} loaded segment id ${i}`),!this.isHlsV0&&r.onProgress&&r.onProgress(t,o,e.data),a(e,t,o)}}}}(o,a,n.p2pBlackList,n.isHlsV0,n.segmentBypass),n.sharePlaylist&&(this.hlsjs.config.pLoader=function(e){return class extends(s()){constructor(t){super(),this.logger=t.logger,this.isHlsV0=t.isHlsV0,this.xhrLoader=new t.loader(t),this.p2pEnabled=t.p2pEnabled,this.scheduler=e,this.stats=this.xhrLoader.stats||pt()}destroy(){this.xhrLoader.destroy()}abort(){this.xhrLoader.abort()}load(e,t,r){const{logger:i}=this,{url:n}=e,s=n.split("?")[0],a=r.onSuccess;if(r.onSuccess=(e,t,r)=>{this.scheduler&&!r.loadedByPeer&&this.scheduler.broadcastPlaylist(s,e.data),a(e,t,r)},this.scheduler&&this.scheduler.playlistInfo.has(s)){const t=this.scheduler.getPlaylistFromPeer(s);if(t&&t.data){const{data:s,seq:a}=t;i.info(`got playlist from peer seq ${a}`),mt(this.stats,s.length);let o={url:n,data:s};return e.loadedByPeer=!0,void w()((()=>{r.onSuccess(o,this.stats,e)}))}}this.xhrLoader.load(e,t,r)}}}(o)),this.trackerTried=!1,this.eventListened||(this.hlsjs.on(this.HLSEvents.FRAG_LOADING,this._onFragLoading.bind(this)),this.hlsjs.on(this.HLSEvents.FRAG_LOADED,this._onFragLoaded.bind(this)),this.hlsjs.on(this.HLSEvents.FRAG_CHANGED,this._onFragChanged.bind(this)),this.hlsjs.on(this.HLSEvents.ERROR,this._onHlsError.bind(this)),this.eventListened=!0),this.setupWindowListeners(),this.trackerTried||this.tracker.connected||!n.p2pEnabled||(this.tracker.resumeP2P(),this.trackerTried=!0)}_onFragLoading(e,r){const i=r.frag;let{sn:n,level:s,segId:a}=i;if(!gt(i.url,this.config.p2pBlackList,i.type)){if(this.logger.debug("loading frag "+n),this.bufMgr&&(this.bufMgr.loadingSN=n),!a){let e;i._byteRange&&(e="bytes="+i._byteRange[0]+"-"+i._byteRange[1]);let t=i.url;a=i.segId=this.config.segmentId(String(s),i.sn,t,e)}this.emit(t.FRAG_LOADING,{sn:n,segId:a,byHttp:i.loadByHTTP,level:s})}}_onFragLoaded(e,r){const{frag:i}=r,{sn:n,segId:s,loaded:a,duration:o,level:l,fromPeerId:h,loadByP2P:u,url:d}=i,{config:c,logger:f}=this;gt(i.url,c.p2pBlackList,i.type)||(this.emit(t.FRAG_LOADED,{url:d,sn:n,level:l,segId:s,loaded:a,duration:o,byP2p:!!u,fromPeerId:h}),!this.rangeTested&&c.useHttpRange&&(p(i.url,void 0,c.xhrSetup).then((()=>{c.httpRangeSupported=!0,f.info("http range is supported")})).catch((e=>{c.httpRangeSupported=!1,f.warn(`http range is not supported, ${e}`)})),this.rangeTested=!0))}_onFragChanged(e,r){const{frag:i}=r;if(!gt(i.url,this.config.p2pBlackList,i.type)){this.logger.debug("frag changed: "+i.sn);const{sn:e,duration:r}=i;this.emit(t.FRAG_CHANGED,{sn:e,duration:r})}}_onHlsError(e,r){if(!r)return;const{logger:i}=this,n=`${r.type} details ${r.details} reason ${r.reason}`;r.fatal?i.error(n):i.warn(n);const s=this.hlsjs.constructor.ErrorDetails;switch(r.details){case s.BUFFER_STALLED_ERROR:this.fetcher&&this.fetcher.increRebuffers();break;case s.INTERNAL_EXCEPTION:"demuxerWorker"!==r.event&&(r.error||(r.error={}),this.fetcher&&r.err&&(this.fetcher.errsInternalExpt++,this.fetcher.exptMsg=`${r.error.message} event ${r.event} ua ${navigator.userAgent}`),i.error(`INTERNAL_EXCEPTION event ${r.event} err ${r.error.message}`),this.emit(t.EXCEPTION,Ae()(r.error,"HLSJS_EXPT")))}}get currentLevel(){const{currentLevel:e}=this.hlsjs;return e>=0?e:0}disableP2P(){this.logger&&this.logger.warn("disable P2P"),this.p2pEnabled&&(this.p2pEnabled=!1,this.config.p2pEnabled=this.hlsjs.config.p2pEnabled=this.p2pEnabled,this.tracker&&(this.tracker.stopP2P(),this.tracker={},this.fetcher=null,this.bufMgr.destroy(),this.bufMgr=null,this.hlsjs.config.fLoader=this.hlsjs.config.pLoader=this.hlsjs.constructor.DefaultConfig.loader))}};function Xt(){const e=function(){if("undefined"!=typeof window)return window.MediaSource||window.WebKitMediaSource}(),t=window.SourceBuffer||window.WebKitSourceBuffer,r=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove;return!!r&&!!i}class Qt{static get Events(){return t}static get TrackerZone(){return z.TrackerZone}static isSupported(){return z.isSupported()&&(Xt()||zt.isServiceWorkerSupported())}static isServiceWorkerSupported(){return zt.isServiceWorkerSupported()}static isMSESupported(){return Xt()}static getBrowser(){return O().getBrowser()}static get ServiceWorkerEngine(){return zt}static get HlsjsEngine(){return Yt}constructor(e={}){const{hlsjsInstance:t}=e;delete e.hlsjsInstance,"1"!==c("_ios")&&!e.proxyOnly&&t&&Xt()?this._realEngine=new Yt(t,e):this._realEngine=new zt(e)}get realEngine(){return this._realEngine}get engineName(){return this._realEngine.constructor.name}once(e,t){return this._realEngine.once(e,t)}on(e,t){return this._realEngine.on(e,t)}off(e,t){return this._realEngine.off(e,t)}removeListener(e,t){return this._realEngine.removeListener(e,t)}removeAllListeners(e){return this._realEngine.removeAllListeners(e)}set p2pEnabled(e){this._realEngine.p2pEnabled=e}get p2pEnabled(){return this._realEngine.p2pEnabled}enableP2P(){this._realEngine.enableP2P()}disableP2P(){this._realEngine.disableP2P()}destroy(){this._realEngine.destroy()}registerServiceWorker(){return"function"==typeof this._realEngine.registerServiceWorker?this._realEngine.registerServiceWorker():Promise.reject("Not supported by this engine")}unregisterServiceWorker(){return"function"==typeof this._realEngine.unregisterServiceWorker?this._realEngine.unregisterServiceWorker():Promise.reject("Not supported by this engine")}get version(){return z.version}}Qt.version=z.version,Qt.protocolVersion=N.VERSION,window&&(window.P2PEngineHls=Qt);const Jt=Qt;var Zt;Zt=r(570);const er={maxBufferLength:12},tr={maxBufferLength:40};class rr extends Zt{static get P2PEvents(){return Jt.Events}static get P2pEngine(){return Jt}constructor(e={}){let t=e.p2pConfig||{};const r=!1===t.live?tr:er;let i=JSON.parse(JSON.stringify(r));i.liveSyncDurationCount=10,i.maxBufferSize=0,i.enableWorker=!1;for(let t in e)"p2pConfig"!==t&&(i[t]=e[t]);super(i),this._restartEvent=()=>{this.restartP2P()},Jt.isSupported()&&(this._p2pEngine=new Jt({...t,hlsjsInstance:this}),this._p2pEngine.on(Jt.Events.RESTART_P2P,this._restartEvent)),this.on(Zt.Events.DESTROYING,(()=>{this._p2pEngine&&(this._p2pEngine.removeListener(Jt.Events.RESTART_P2P,this._restartEvent),this._p2pEngine.hlsjs=null,this._p2pEngine=null)}))}get p2pEngine(){return this._p2pEngine}enableP2P(){this._p2pEngine&&(this._p2pEngine=this._p2pEngine.enableP2P())}disableP2P(){this._p2pEngine&&this._p2pEngine.disableP2P()}restartP2P(){this._p2pEngine&&(this._p2pEngine.disableP2P(),setTimeout((()=>{this.enableP2P()}),2e3),this._p2pEngine.removeListener(Jt.Events.RESTART_P2P,this._restartEvent))}}rr.engineVersion=Jt.version,rr.protocolVersion=Jt.protocolVersion,rr.WEBRTC_SUPPORT=Jt.isSupported();const ir=rr})(),i=i.default})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Hls=t():e.Hls=t()}(self,(()=>(()=>{var e={204:e=>{"use strict";var t,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var n=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(r,i){function n(r){e.removeListener(t,s),i(r)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",n),r([].slice.call(arguments))}p(e,t,s,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&p(e,"error",t,r)}(e,n,{once:!0})}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var a=10;function o(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function h(e,t,r,i){var n,s,a,h;if(o(r),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]),void 0===a)a=s[t]=r,++e._eventsCount;else if("function"==typeof a?a=s[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),(n=l(e))>0&&a.length>n&&!a.warned){a.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=a.length,h=d,console&&console.warn&&console.warn(h)}return e}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function u(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},n=d.bind(i);return n.listener=r,i.wrapFn=n,n}function c(e,t,r){var i=e._events;if(void 0===i)return[];var n=i[t];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(n):g(n,n.length)}function f(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function g(e,t){for(var r=new Array(t),i=0;i<t;++i)r[i]=e[i];return r}function p(e,t,r,i){if("function"==typeof e.on)i.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function n(s){i.once&&e.removeEventListener(t,n),r(s)}))}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return a},set:function(e){if("number"!=typeof e||e<0||n(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");a=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||n(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return l(this)},s.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var n="error"===e,s=this._events;if(void 0!==s)n=n&&void 0===s.error;else if(!n)return!1;if(n){var a;if(t.length>0&&(a=t[0]),a instanceof Error)throw a;var o=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw o.context=a,o}var l=s[e];if(void 0===l)return!1;if("function"==typeof l)i(l,this,t);else{var h=l.length,d=g(l,h);for(r=0;r<h;++r)i(d[r],this,t)}return!0},s.prototype.addListener=function(e,t){return h(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return h(this,e,t,!0)},s.prototype.once=function(e,t){return o(t),this.on(e,u(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){return o(t),this.prependListener(e,u(this,e,t)),this},s.prototype.removeListener=function(e,t){var r,i,n,s,a;if(o(t),void 0===(i=this._events))return this;if(void 0===(r=i[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length-1;s>=0;s--)if(r[s]===t||r[s].listener===t){a=r[s].listener,n=s;break}if(n<0)return this;0===n?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,n),1===r.length&&(i[e]=r[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var t,r,i;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var n,s=Object.keys(r);for(i=0;i<s.length;++i)"removeListener"!==(n=s[i])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this},s.prototype.listeners=function(e){return c(this,e,!0)},s.prototype.rawListeners=function(e){return c(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},s.prototype.listenerCount=f,s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},939:function(e){var t;"undefined"!=typeof window&&(t=()=>(()=>{var e={21:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>h});var i=function(){function e(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}return e.prototype.decrypt=function(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)},e}(),n=function(){function e(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}return e.prototype.expandKey=function(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])},e}(),s=r(145),a=function(){function e(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}var t=e.prototype;return t.uint8ArrayToUint32Array_=function(e){for(var t=new DataView(e),r=new Uint32Array(4),i=0;i<4;i++)r[i]=t.getUint32(4*i);return r},t.initTable=function(){var e=this.sBox,t=this.invSBox,r=this.subMix,i=r[0],n=r[1],s=r[2],a=r[3],o=this.invSubMix,l=o[0],h=o[1],d=o[2],u=o[3],c=new Uint32Array(256),f=0,g=0,p=0;for(p=0;p<256;p++)c[p]=p<128?p<<1:p<<1^283;for(p=0;p<256;p++){var m=g^g<<1^g<<2^g<<3^g<<4;m=m>>>8^255&m^99,e[f]=m,t[m]=f;var v=c[f],y=c[v],E=c[y],S=257*c[m]^16843008*m;i[f]=S<<24|S>>>8,n[f]=S<<16|S>>>16,s[f]=S<<8|S>>>24,a[f]=S,S=16843009*E^65537*y^257*v^16843008*f,l[m]=S<<24|S>>>8,h[m]=S<<16|S>>>16,d[m]=S<<8|S>>>24,u[m]=S,f?(f=v^c[c[c[E^v]]],g^=c[c[g]]):f=g=1}},t.expandKey=function(e){for(var t=this.uint8ArrayToUint32Array_(e),r=!0,i=0;i<t.length&&r;)r=t[i]===this.key[i],i++;if(!r){this.key=t;var n=this.keySize=t.length;if(4!==n&&6!==n&&8!==n)throw new Error("Invalid aes key size="+n);var s,a,o,l,h=this.ksRows=4*(n+6+1),d=this.keySchedule=new Uint32Array(h),u=this.invKeySchedule=new Uint32Array(h),c=this.sBox,f=this.rcon,g=this.invSubMix,p=g[0],m=g[1],v=g[2],y=g[3];for(s=0;s<h;s++)s<n?o=d[s]=t[s]:(l=o,s%n==0?(l=c[(l=l<<8|l>>>24)>>>24]<<24|c[l>>>16&255]<<16|c[l>>>8&255]<<8|c[255&l],l^=f[s/n|0]<<24):n>6&&s%n==4&&(l=c[l>>>24]<<24|c[l>>>16&255]<<16|c[l>>>8&255]<<8|c[255&l]),d[s]=o=(d[s-n]^l)>>>0);for(a=0;a<h;a++)s=h-a,l=3&a?d[s]:d[s-4],u[a]=a<4||s<=4?l:p[c[l>>>24]]^m[c[l>>>16&255]]^v[c[l>>>8&255]]^y[c[255&l]],u[a]=u[a]>>>0}},t.networkToHostOrderSwap=function(e){return e<<24|(65280&e)<<8|(16711680&e)>>8|e>>>24},t.decrypt=function(e,t,r){for(var i,n,s,a,o,l,h,d,u,c,f,g,p,m,v=this.keySize+6,y=this.invKeySchedule,E=this.invSBox,S=this.invSubMix,b=S[0],T=S[1],_=S[2],L=S[3],w=this.uint8ArrayToUint32Array_(r),P=w[0],A=w[1],D=w[2],I=w[3],R=new Int32Array(e),C=new Int32Array(R.length),k=this.networkToHostOrderSwap;t<R.length;){for(u=k(R[t]),c=k(R[t+1]),f=k(R[t+2]),g=k(R[t+3]),o=u^y[0],l=g^y[1],h=f^y[2],d=c^y[3],p=4,m=1;m<v;m++)i=b[o>>>24]^T[l>>16&255]^_[h>>8&255]^L[255&d]^y[p],n=b[l>>>24]^T[h>>16&255]^_[d>>8&255]^L[255&o]^y[p+1],s=b[h>>>24]^T[d>>16&255]^_[o>>8&255]^L[255&l]^y[p+2],a=b[d>>>24]^T[o>>16&255]^_[l>>8&255]^L[255&h]^y[p+3],o=i,l=n,h=s,d=a,p+=4;i=E[o>>>24]<<24^E[l>>16&255]<<16^E[h>>8&255]<<8^E[255&d]^y[p],n=E[l>>>24]<<24^E[h>>16&255]<<16^E[d>>8&255]<<8^E[255&o]^y[p+1],s=E[h>>>24]<<24^E[d>>16&255]<<16^E[o>>8&255]<<8^E[255&l]^y[p+2],a=E[d>>>24]<<24^E[o>>16&255]<<16^E[l>>8&255]<<8^E[255&h]^y[p+3],C[t]=k(i^P),C[t+1]=k(a^A),C[t+2]=k(s^D),C[t+3]=k(n^I),P=u,A=c,D=f,I=g,t+=4}return C.buffer},e}(),o=r(93),l=r(63),h=function(){function e(e,t,r){var i=(void 0===r?{}:r).removePKCS7Padding,n=void 0===i||i;if(this.logEnabled=!0,this.observer=void 0,this.config=void 0,this.removePKCS7Padding=void 0,this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null,this.observer=e,this.config=t,this.removePKCS7Padding=n,n)try{var s=self.crypto;s&&(this.subtle=s.subtle||s.webkitSubtle)}catch(e){}null===this.subtle&&(this.config.enableSoftwareAES=!0)}var t=e.prototype;return t.destroy=function(){this.observer=null},t.isSync=function(){return this.config.enableSoftwareAES},t.flush=function(){var e=this.currentResult;if(e){var t,r,i,n=new Uint8Array(e);return this.reset(),this.removePKCS7Padding?(i=(r=(t=n).byteLength)&&new DataView(t.buffer).getUint8(r-1))?(0,s.sliceUint8)(t,0,r-i):t:n}this.reset()},t.reset=function(){this.currentResult=null,this.currentIV=null,this.remainderData=null,this.softwareDecrypter&&(this.softwareDecrypter=null)},t.decrypt=function(e,t,r,i){if(this.config.enableSoftwareAES){this.softwareDecrypt(new Uint8Array(e),t,r);var n=this.flush();n&&i(n.buffer)}else this.webCryptoDecrypt(new Uint8Array(e),t,r).then(i)},t.softwareDecrypt=function(e,t,r){var i=this.currentIV,n=this.currentResult,o=this.remainderData;this.logOnce("JS AES decrypt"),o&&(e=(0,l.appendUint8Array)(o,e),this.remainderData=null);var h=this.getValidChunk(e);if(!h.length)return null;i&&(r=i);var d=this.softwareDecrypter;d||(d=this.softwareDecrypter=new a),d.expandKey(t);var u=n;return this.currentResult=d.decrypt(h.buffer,0,r),this.currentIV=(0,s.sliceUint8)(h,-16).buffer,u||null},t.webCryptoDecrypt=function(e,t,r){var s=this,a=this.subtle;return this.key===t&&this.fastAesKey||(this.key=t,this.fastAesKey=new n(a,t)),this.fastAesKey.expandKey().then((function(t){return a?new i(a,r).decrypt(e.buffer,t):Promise.reject(new Error("web crypto not initialized"))})).catch((function(i){return s.onWebCryptoError(i,e,t,r)}))},t.onWebCryptoError=function(e,t,r,i){return o.logger.warn("[decrypter.ts]: WebCrypto Error, disable WebCrypto API:",e),this.config.enableSoftwareAES=!0,this.logEnabled=!0,this.softwareDecrypt(t,r,i)},t.getValidChunk=function(e){var t=e,r=e.length-e.length%16;return r!==e.length&&(t=(0,s.sliceUint8)(e,0,r),this.remainderData=(0,s.sliceUint8)(e,r)),t},t.logOnce=function(e){this.logEnabled&&(o.logger.log("[decrypter.ts]: "+e),this.logEnabled=!1)},e}()},181:(e,t,r)=>{"use strict";r.r(t),r.d(t,{canParse:()=>l,decodeFrame:()=>f,getID3Data:()=>a,getID3Frames:()=>c,getTimeStamp:()=>h,isFooter:()=>s,isHeader:()=>n,isTimeStampFrame:()=>d,testables:()=>E,utf8ArrayToStr:()=>y});var i,n=function(e,t){return t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128},s=function(e,t){return t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128},a=function(e,t){for(var r=t,i=0;n(e,t);)i+=10,i+=o(e,t+6),s(e,t+10)&&(i+=10),t+=i;if(i>0)return e.subarray(r,r+i)},o=function(e,t){var r=0;return r=(127&e[t])<<21,r|=(127&e[t+1])<<14,(r|=(127&e[t+2])<<7)|127&e[t+3]},l=function(e,t){return n(e,t)&&o(e,t+6)+10<=e.length-t},h=function(e){for(var t=c(e),r=0;r<t.length;r++){var i=t[r];if(d(i))return v(i)}},d=function(e){return e&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info},u=function(e){var t=String.fromCharCode(e[0],e[1],e[2],e[3]),r=o(e,4);return{type:t,size:r,data:e.subarray(10,10+r)}},c=function(e){for(var t=0,r=[];n(e,t);){for(var i=o(e,t+6),a=(t+=10)+i;t+8<a;){var l=u(e.subarray(t)),h=f(l);h&&r.push(h),t+=l.size+10}s(e,t)&&(t+=10)}return r},f=function(e){return"PRIV"===e.type?g(e):"W"===e.type[0]?m(e):p(e)},g=function(e){if(!(e.size<2)){var t=y(e.data,!0),r=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:r.buffer}}},p=function(e){if(!(e.size<2)){if("TXXX"===e.type){var t=1,r=y(e.data.subarray(t),!0);t+=r.length+1;var i=y(e.data.subarray(t));return{key:e.type,info:r,data:i}}var n=y(e.data.subarray(1));return{key:e.type,data:n}}},m=function(e){if("WXXX"===e.type){if(e.size<2)return;var t=1,r=y(e.data.subarray(t),!0);t+=r.length+1;var i=y(e.data.subarray(t));return{key:e.type,info:r,data:i}}var n=y(e.data);return{key:e.type,data:n}},v=function(e){if(8===e.data.byteLength){var t=new Uint8Array(e.data),r=1&t[3],i=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return i/=45,r&&(i+=47721858.84),Math.round(i)}},y=function(e,t){void 0===t&&(t=!1);var r=S();if(r){var i=r.decode(e);if(t){var n=i.indexOf("\0");return-1!==n?i.substring(0,n):i}return i.replace(/\0/g,"")}for(var s,a,o,l=e.length,h="",d=0;d<l;){if(0===(s=e[d++])&&t)return h;if(0!==s&&3!==s)switch(s>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:h+=String.fromCharCode(s);break;case 12:case 13:a=e[d++],h+=String.fromCharCode((31&s)<<6|63&a);break;case 14:a=e[d++],o=e[d++],h+=String.fromCharCode((15&s)<<12|(63&a)<<6|(63&o)<<0)}}return h},E={decodeTextFrame:p};function S(){return i||void 0===self.TextDecoder||(i=new self.TextDecoder("utf-8")),i}},182:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});var i=r(764),n=r(851),s=r(93),a=r(729);function o(e){var t=new a.EventEmitter,r=function(t,r){e.postMessage({event:t,data:r})};t.on(n.Events.FRAG_DECRYPTED,r),t.on(n.Events.ERROR,r),e.addEventListener("message",(function(n){var a=n.data;switch(a.cmd){case"init":var o=JSON.parse(a.config);e.transmuxer=new i.default(t,a.typeSupported,o,a.vendor,a.id),(0,s.enableLogs)(o.debug,a.id),function(){var e=function(e){s.logger[e]=function(t){r("workerLog",{logType:e,message:t})}};for(var t in s.logger)e(t)}(),r("init",null);break;case"configure":e.transmuxer.configure(a.config);break;case"demux":var h=e.transmuxer.push(a.data,a.decryptdata,a.chunkMeta,a.state);(0,i.isPromise)(h)?h.then((function(t){l(e,t)})):l(e,h);break;case"flush":var u=a.chunkMeta,c=e.transmuxer.flush(u);(0,i.isPromise)(c)?c.then((function(t){d(e,t,u)})):d(e,c,u)}}))}function l(e,t){if(!((r=t.remuxResult).audio||r.video||r.text||r.id3||r.initSegment))return!1;var r,i=[],n=t.remuxResult,s=n.audio,a=n.video;return s&&h(i,s),a&&h(i,a),e.postMessage({event:"transmuxComplete",data:t},i),!0}function h(e,t){t.data1&&e.push(t.data1.buffer),t.data2&&e.push(t.data2.buffer)}function d(e,t,r){t.reduce((function(t,r){return l(e,r)||t}),!1)||e.postMessage({event:"transmuxComplete",data:t[0]}),e.postMessage({event:"flush",data:r})}},764:(e,t,r)=>{"use strict";r.r(t),r.d(t,{TransmuxConfig:()=>Ee,TransmuxState:()=>Se,default:()=>me,isPromise:()=>ye});var i=r(851),n=r(973),s=r(21),a=r(965),o=r(181),l=r(856);function h(e,t){return void 0===e&&(e=""),void 0===t&&(t=9e4),{type:e,id:-1,pid:-1,inputTimeScale:t,sequenceNumber:-1,samples:[],dropped:0}}var d=r(63),u=r(145),c=function(){function e(){this._audioTrack=void 0,this._id3Track=void 0,this.frameIndex=0,this.cachedData=null,this.basePTS=null,this.initPTS=null,this.lastPTS=null}var t=e.prototype;return t.resetInitSegment=function(e,t,r,i){this._id3Track={type:"id3",id:3,pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0}},t.resetTimeStamp=function(e){this.initPTS=e,this.resetContiguity()},t.resetContiguity=function(){this.basePTS=null,this.lastPTS=null,this.frameIndex=0},t.canParse=function(e,t){return!1},t.appendFrame=function(e,t,r){},t.demux=function(e,t){this.cachedData&&(e=(0,d.appendUint8Array)(this.cachedData,e),this.cachedData=null);var r,i=o.getID3Data(e,0),n=i?i.length:0,s=this._audioTrack,c=this._id3Track,g=i?o.getTimeStamp(i):void 0,p=e.length;for((null===this.basePTS||0===this.frameIndex&&(0,a.isFiniteNumber)(g))&&(this.basePTS=f(g,t,this.initPTS),this.lastPTS=this.basePTS),null===this.lastPTS&&(this.lastPTS=this.basePTS),i&&i.length>0&&c.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:i,type:l.MetadataSchema.audioId3,duration:Number.POSITIVE_INFINITY});n<p;){if(this.canParse(e,n)){var m=this.appendFrame(s,e,n);m?(this.frameIndex++,this.lastPTS=m.sample.pts,r=n+=m.length):n=p}else o.canParse(e,n)?(i=o.getID3Data(e,n),c.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:i,type:l.MetadataSchema.audioId3,duration:Number.POSITIVE_INFINITY}),r=n+=i.length):n++;if(n===p&&r!==p){var v=(0,u.sliceUint8)(e,r);this.cachedData?this.cachedData=(0,d.appendUint8Array)(this.cachedData,v):this.cachedData=v}}return{audioTrack:s,videoTrack:h(),id3Track:c,textTrack:h()}},t.demuxSampleAes=function(e,t,r){return Promise.reject(new Error("["+this+"] This demuxer does not support Sample-AES decryption"))},t.flush=function(e){var t=this.cachedData;return t&&(this.cachedData=null,this.demux(t,0)),{audioTrack:this._audioTrack,videoTrack:h(),id3Track:this._id3Track,textTrack:h()}},t.destroy=function(){},e}(),f=function(e,t,r){return(0,a.isFiniteNumber)(e)?90*e:9e4*t+(r||0)};const g=c;var p=r(93);function m(e,t){return 255===e[t]&&240==(246&e[t+1])}function v(e,t){return 1&e[t+1]?7:9}function y(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function E(e,t){return t+1<e.length&&m(e,t)}function S(e,t){if(E(e,t)){var r=v(e,t);if(t+r>=e.length)return!1;var i=y(e,t);if(i<=r)return!1;var n=t+i;return n===e.length||E(e,n)}return!1}function b(e,t,r,s,a){if(!e.samplerate){var o=function(e,t,r,s){var a,o,l,h,d=navigator.userAgent.toLowerCase(),u=s,c=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];a=1+((192&t[r+2])>>>6);var f=(60&t[r+2])>>>2;if(!(f>c.length-1))return l=(1&t[r+2])<<2,l|=(192&t[r+3])>>>6,p.logger.log("manifest codec:"+s+", ADTS type:"+a+", samplingIndex:"+f),/firefox/i.test(d)?f>=6?(a=5,h=new Array(4),o=f-3):(a=2,h=new Array(2),o=f):-1!==d.indexOf("android")?(a=2,h=new Array(2),o=f):(a=5,h=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&f>=6?o=f-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(f>=6&&1===l||/vivaldi/i.test(d))||!s&&1===l)&&(a=2,h=new Array(2)),o=f)),h[0]=a<<3,h[0]|=(14&f)>>1,h[1]|=(1&f)<<7,h[1]|=l<<3,5===a&&(h[1]|=(14&o)>>1,h[2]=(1&o)<<7,h[2]|=8,h[3]=0),{config:h,samplerate:c[f],channelCount:l,codec:"mp4a.40."+a,manifestCodec:u};e.trigger(i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+f})}(t,r,s,a);if(!o)return;e.config=o.config,e.samplerate=o.samplerate,e.channelCount=o.channelCount,e.codec=o.codec,e.manifestCodec=o.manifestCodec,p.logger.log("parsed codec:"+e.codec+", rate:"+o.samplerate+", channels:"+o.channelCount)}}function T(e){return 9216e4/e}function _(e,t,r,i,n){var s,a=i+n*T(e.samplerate),o=function(e,t){var r=v(e,t);if(t+r<=e.length){var i=y(e,t)-r;if(i>0)return{headerLength:r,frameLength:i}}}(t,r);if(o){var l=o.frameLength,h=o.headerLength,d=h+l,u=Math.max(0,r+d-t.length);u?(s=new Uint8Array(d-h)).set(t.subarray(r+h,t.length),0):s=t.subarray(r+h,r+d);var c={unit:s,pts:a};return u||e.samples.push(c),{sample:c,length:d,missing:u}}var f=t.length-r;return(s=new Uint8Array(f)).set(t.subarray(r,t.length),0),{sample:{unit:s,pts:a},length:f,missing:-1}}function L(e,t){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},L(e,t)}const w=function(e){var t,r;function i(t,r){var i;return(i=e.call(this)||this).observer=void 0,i.config=void 0,i.observer=t,i.config=r,i}r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,L(t,r);var n=i.prototype;return n.resetInitSegment=function(t,r,i,n){e.prototype.resetInitSegment.call(this,t,r,i,n),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:r,duration:n,inputTimeScale:9e4,dropped:0}},i.probe=function(e){if(!e)return!1;for(var t=(o.getID3Data(e,0)||[]).length,r=e.length;t<r;t++)if(S(e,t))return p.logger.log("ADTS sync word found !"),!0;return!1},n.canParse=function(e,t){return function(e,t){return function(e,t){return t+5<e.length}(e,t)&&m(e,t)&&y(e,t)<=e.length-t}(e,t)},n.appendFrame=function(e,t,r){b(e,this.observer,t,r,e.manifestCodec);var i=_(e,t,r,this.basePTS,this.frameIndex);if(i&&0===i.missing)return i},i}(g);var P=/\/emsg[-/]ID3/i;const A=function(){function e(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}var t=e.prototype;return t.resetTimeStamp=function(){},t.resetInitSegment=function(e,t,r,i){var n=(0,d.parseInitSegment)(e),s=this.videoTrack=h("video",1),a=this.audioTrack=h("audio",1),o=this.txtTrack=h("text",1);if(this.id3Track=h("id3",1),this.timeOffset=0,n.video){var l=n.video,u=l.id,c=l.timescale,f=l.codec;s.id=u,s.timescale=o.timescale=c,s.codec=f}if(n.audio){var g=n.audio,p=g.id,m=g.timescale,v=g.codec;a.id=p,a.timescale=m,a.codec=v}o.id=d.RemuxerTrackIdConfig.text,s.sampleDuration=0,s.duration=a.duration=i},t.resetContiguity=function(){},e.probe=function(e){return e=e.length>16384?e.subarray(0,16384):e,(0,d.findBox)(e,["moof"]).length>0},t.demux=function(e,t){this.timeOffset=t;var r=e,i=this.videoTrack,n=this.txtTrack;if(this.config.progressive){this.remainderData&&(r=(0,d.appendUint8Array)(this.remainderData,e));var s=(0,d.segmentValidRange)(r);this.remainderData=s.remainder,i.samples=s.valid||new Uint8Array}else i.samples=r;var a=this.extractID3Track(i,t);return n.samples=(0,d.parseSamples)(t,i),{videoTrack:i,audioTrack:this.audioTrack,id3Track:a,textTrack:this.txtTrack}},t.flush=function(){var e=this.timeOffset,t=this.videoTrack,r=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;var i=this.extractID3Track(t,this.timeOffset);return r.samples=(0,d.parseSamples)(e,t),{videoTrack:t,audioTrack:h(),id3Track:i,textTrack:h()}},t.extractID3Track=function(e,t){var r=this.id3Track;if(e.samples.length){var i=(0,d.findBox)(e.samples,["emsg"]);i&&i.forEach((function(e){var i=(0,d.parseEmsg)(e);if(P.test(i.schemeIdUri)){var n=(0,a.isFiniteNumber)(i.presentationTime)?i.presentationTime/i.timeScale:t+i.presentationTimeDelta/i.timeScale,s=4294967295===i.eventDuration?Number.POSITIVE_INFINITY:i.eventDuration/i.timeScale;s<=.001&&(s=Number.POSITIVE_INFINITY);var o=i.payload;r.samples.push({data:o,len:o.byteLength,dts:n,pts:n,type:l.MetadataSchema.emsg,duration:s})}}))}return r},t.demuxSampleAes=function(e,t,r){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))},t.destroy=function(){},e}();var D=null,I=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],R=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],C=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],k=[0,1,1,4];function x(e,t,r,i,n){if(!(r+24>t.length)){var s=O(t,r);if(s&&r+s.frameLength<=t.length){var a=i+n*(9e4*s.samplesPerFrame/s.sampleRate),o={unit:t.subarray(r,r+s.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=s.channelCount,e.samplerate=s.sampleRate,e.samples.push(o),{sample:o,length:s.frameLength,missing:0}}}}function O(e,t){var r=e[t+1]>>3&3,i=e[t+1]>>1&3,n=e[t+2]>>4&15,s=e[t+2]>>2&3;if(1!==r&&0!==n&&15!==n&&3!==s){var a=e[t+2]>>1&1,o=e[t+3]>>6,l=1e3*I[14*(3===r?3-i:3===i?3:4)+n-1],h=R[3*(3===r?0:2===r?1:2)+s],d=3===o?1:2,u=C[r][i],c=k[i],f=8*u*c,g=Math.floor(u*l/h+a)*c;if(null===D){var p=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);D=p?parseInt(p[1]):0}return!!D&&D<=87&&2===i&&l>=224e3&&0===o&&(e[t+3]=128|e[t+3]),{sampleRate:h,channelCount:d,frameLength:g,samplesPerFrame:f}}}function M(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function N(e,t){return t+1<e.length&&M(e,t)}function F(e,t){if(t+1<e.length&&M(e,t)){var r=O(e,t),i=4;null!=r&&r.frameLength&&(i=r.frameLength);var n=t+i;return n===e.length||N(e,n)}return!1}const B=function(){function e(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}var t=e.prototype;return t.loadWord=function(){var e=this.data,t=this.bytesAvailable,r=e.byteLength-t,i=new Uint8Array(4),n=Math.min(4,t);if(0===n)throw new Error("no bytes available");i.set(e.subarray(r,r+n)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*n,this.bytesAvailable-=n},t.skipBits=function(e){var t;this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,e-=(t=e>>3)>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)},t.readBits=function(e){var t=Math.min(this.bitsAvailable,e),r=this.word>>>32-t;return e>32&&p.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0?this.word<<=t:this.bytesAvailable>0&&this.loadWord(),(t=e-t)>0&&this.bitsAvailable?r<<t|this.readBits(t):r},t.skipLZ=function(){var e;for(e=0;e<this.bitsAvailable;++e)if(0!=(this.word&2147483648>>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()},t.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.skipEG=function(){this.skipBits(1+this.skipLZ())},t.readUEG=function(){var e=this.skipLZ();return this.readBits(e+1)-1},t.readEG=function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)},t.readBoolean=function(){return 1===this.readBits(1)},t.readUByte=function(){return this.readBits(8)},t.readUShort=function(){return this.readBits(16)},t.readUInt=function(){return this.readBits(32)},t.skipScalingList=function(e){for(var t=8,r=8,i=0;i<e;i++)0!==r&&(r=(t+this.readEG()+256)%256),t=0===r?t:r},t.readSPS=function(){var e,t,r,i=0,n=0,s=0,a=0,o=this.readUByte.bind(this),l=this.readBits.bind(this),h=this.readUEG.bind(this),d=this.readBoolean.bind(this),u=this.skipBits.bind(this),c=this.skipEG.bind(this),f=this.skipUEG.bind(this),g=this.skipScalingList.bind(this);o();var p=o();if(l(5),u(3),o(),f(),100===p||110===p||122===p||244===p||44===p||83===p||86===p||118===p||128===p){var m=h();if(3===m&&u(1),f(),f(),u(1),d())for(t=3!==m?8:12,r=0;r<t;r++)d()&&g(r<6?16:64)}f();var v=h();if(0===v)h();else if(1===v)for(u(1),c(),c(),e=h(),r=0;r<e;r++)c();f(),u(1);var y=h(),E=h(),S=l(1);0===S&&u(1),u(1),d()&&(i=h(),n=h(),s=h(),a=h());var b=[1,1];if(d()&&d())switch(o()){case 1:b=[1,1];break;case 2:b=[12,11];break;case 3:b=[10,11];break;case 4:b=[16,11];break;case 5:b=[40,33];break;case 6:b=[24,11];break;case 7:b=[20,11];break;case 8:b=[32,11];break;case 9:b=[80,33];break;case 10:b=[18,11];break;case 11:b=[15,11];break;case 12:b=[64,33];break;case 13:b=[160,99];break;case 14:b=[4,3];break;case 15:b=[3,2];break;case 16:b=[2,1];break;case 255:b=[o()<<8|o(),o()<<8|o()]}return{width:Math.ceil(16*(y+1)-2*i-2*n),height:(2-S)*(E+1)*16-(S?2:4)*(s+a),pixelRatio:b}},t.readSliceType=function(){return this.readUByte(),this.readUEG(),this.readUEG()},e}(),U=function(){function e(e,t,r){this.keyData=void 0,this.decrypter=void 0,this.keyData=r,this.decrypter=new s.default(e,t,{removePKCS7Padding:!1})}var t=e.prototype;return t.decryptBuffer=function(e,t){this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer,t)},t.decryptAacSample=function(e,t,r,i){var n=e[t].unit;if(!(n.length<=16)){var s=n.subarray(16,n.length-n.length%16),a=s.buffer.slice(s.byteOffset,s.byteOffset+s.length),o=this;this.decryptBuffer(a,(function(s){var a=new Uint8Array(s);n.set(a,16),i||o.decryptAacSamples(e,t+1,r)}))}},t.decryptAacSamples=function(e,t,r){for(;;t++){if(t>=e.length)return void r();if(!(e[t].unit.length<32)){var i=this.decrypter.isSync();if(this.decryptAacSample(e,t,r,i),!i)return}}},t.getAvcEncryptedData=function(e){for(var t=16*Math.floor((e.length-48)/160)+16,r=new Int8Array(t),i=0,n=32;n<e.length-16;n+=160,i+=16)r.set(e.subarray(n,n+16),i);return r},t.getAvcDecryptedUnit=function(e,t){for(var r=new Uint8Array(t),i=0,n=32;n<e.length-16;n+=160,i+=16)e.set(r.subarray(i,i+16),n);return e},t.decryptAvcSample=function(e,t,r,i,n,s){var a=(0,d.discardEPB)(n.data),o=this.getAvcEncryptedData(a),l=this;this.decryptBuffer(o.buffer,(function(o){n.data=l.getAvcDecryptedUnit(a,o),s||l.decryptAvcSamples(e,t,r+1,i)}))},t.decryptAvcSamples=function(e,t,r,i){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,r=0){if(t>=e.length)return void i();for(var n=e[t].units;!(r>=n.length);r++){var s=n[r];if(!(s.data.length<=48||1!==s.type&&5!==s.type)){var a=this.decrypter.isSync();if(this.decryptAvcSample(e,t,r,i,s,a),!a)return}}}},e}();function G(){return G=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},G.apply(this,arguments)}var $=188;function H(e,t,r,i){return{key:e,frame:!1,pts:t,dts:r,units:[],debug:i,length:0}}function j(e,t){return(31&e[t+10])<<8|e[t+11]}function W(e,t,r,i){var n={audio:-1,avc:-1,id3:-1,segmentCodec:"aac"},s=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t<s;){var a=(31&e[t+1])<<8|e[t+2];switch(e[t]){case 207:if(!i){p.logger.log("ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream");break}case 15:-1===n.audio&&(n.audio=a);break;case 21:-1===n.id3&&(n.id3=a);break;case 219:if(!i){p.logger.log("H.264 with AES-128-CBC slice encryption found in unencrypted stream");break}case 27:-1===n.avc&&(n.avc=a);break;case 3:case 4:!0!==r.mpeg&&!0!==r.mp3?p.logger.log("MPEG audio found, not supported in this browser"):-1===n.audio&&(n.audio=a,n.segmentCodec="mp3");break;case 36:p.logger.warn("Unsupported HEVC stream type found")}t+=5+((15&e[t+3])<<8|e[t+4])}return n}function V(e){var t,r,i,n,s,a=0,o=e.data;if(!e||0===e.size)return null;for(;o[0].length<19&&o.length>1;){var l=new Uint8Array(o[0].length+o[1].length);l.set(o[0]),l.set(o[1],o[0].length),o[0]=l,o.splice(1,1)}if(1===((t=o[0])[0]<<16)+(t[1]<<8)+t[2]){if((r=(t[4]<<8)+t[5])&&r>e.size-6)return null;var h=t[7];192&h&&(n=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&h?n-(s=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2)>54e5&&(p.logger.warn(Math.round((n-s)/9e4)+"s delta between PTS and DTS, align them"),n=s):s=n);var d=(i=t[8])+9;if(e.size<=d)return null;e.size-=d;for(var u=new Uint8Array(e.size),c=0,f=o.length;c<f;c++){var g=(t=o[c]).byteLength;if(d){if(d>g){d-=g;continue}t=t.subarray(d),g-=d,d=0}u.set(t,a),a+=g}return r&&(r-=i+3),{data:u,pts:n,dts:s,len:r}}return null}function q(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){var r=t.samples,i=r.length;if(!i)return void t.dropped++;var n=r[i-1];e.pts=n.pts,e.dts=n.dts}t.samples.push(e)}e.debug.length&&p.logger.log(e.pts+"/"+e.dts+":"+e.debug)}const z=function(){function e(e,t,r){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._avcTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.observer=e,this.config=t,this.typeSupported=r}e.probe=function(t){var r=e.syncOffset(t);return r>0&&p.logger.warn("MPEG2-TS detected but first sync word found @ offset "+r),-1!==r},e.syncOffset=function(e){for(var t=Math.min(940,e.length-376)+1,r=0;r<t;){if(71===e[r]&&71===e[r+$])return r;r++}return-1},e.createTrack=function(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:d.RemuxerTrackIdConfig[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}};var t=e.prototype;return t.resetInitSegment=function(t,r,i,n){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack=e.createTrack("video"),this._audioTrack=e.createTrack("audio",n),this._id3Track=e.createTrack("id3"),this._txtTrack=e.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.avcSample=null,this.remainderData=null,this.audioCodec=r,this.videoCodec=i,this._duration=n},t.resetTimeStamp=function(){},t.resetContiguity=function(){var e=this._audioTrack,t=this._avcTrack,r=this._id3Track;e&&(e.pesData=null),t&&(t.pesData=null),r&&(r.pesData=null),this.aacOverFlow=null,this.avcSample=null,this.remainderData=null},t.demux=function(t,r,s,a){var o;void 0===s&&(s=!1),void 0===a&&(a=!1),s||(this.sampleAes=null);var l=this._avcTrack,h=this._audioTrack,u=this._id3Track,c=this._txtTrack,f=l.pid,g=l.pesData,m=h.pid,v=u.pid,y=h.pesData,E=u.pesData,S=null,b=this.pmtParsed,T=this._pmtId,_=t.length;if(this.remainderData&&(_=(t=(0,d.appendUint8Array)(this.remainderData,t)).length,this.remainderData=null),_<$&&!a)return this.remainderData=t,{audioTrack:h,videoTrack:l,id3Track:u,textTrack:c};var L=Math.max(0,e.syncOffset(t));(_-=(_-L)%$)<t.byteLength&&!a&&(this.remainderData=new Uint8Array(t.buffer,_,t.buffer.byteLength-_));for(var w=0,P=L;P<_;P+=$)if(71===t[P]){var A=!!(64&t[P+1]),D=((31&t[P+1])<<8)+t[P+2],I=void 0;if((48&t[P+3])>>4>1){if((I=P+5+t[P+4])===P+$)continue}else I=P+4;switch(D){case f:A&&(g&&(o=V(g))&&this.parseAVCPES(l,c,o,!1),g={data:[],size:0}),g&&(g.data.push(t.subarray(I,P+$)),g.size+=P+$-I);break;case m:if(A){if(y&&(o=V(y)))switch(h.segmentCodec){case"aac":this.parseAACPES(h,o);break;case"mp3":this.parseMPEGPES(h,o)}y={data:[],size:0}}y&&(y.data.push(t.subarray(I,P+$)),y.size+=P+$-I);break;case v:A&&(E&&(o=V(E))&&this.parseID3PES(u,o),E={data:[],size:0}),E&&(E.data.push(t.subarray(I,P+$)),E.size+=P+$-I);break;case 0:A&&(I+=t[I]+1),T=this._pmtId=j(t,I);break;case T:A&&(I+=t[I]+1);var R=W(t,I,this.typeSupported,s);(f=R.avc)>0&&(l.pid=f),(m=R.audio)>0&&(h.pid=m,h.segmentCodec=R.segmentCodec),(v=R.id3)>0&&(u.pid=v),null===S||b||(p.logger.log("unknown PID '"+S+"' in TS found"),S=null,P=L-188),b=this.pmtParsed=!0;break;case 17:case 8191:break;default:S=D}}else w++;w>0&&this.observer.emit(i.Events.ERROR,i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"Found "+w+" TS packet/s that do not start with 0x47"}),l.pesData=g,h.pesData=y,u.pesData=E;var C={audioTrack:h,videoTrack:l,id3Track:u,textTrack:c};return a&&this.extractRemainingSamples(C),C},t.flush=function(){var e,t=this.remainderData;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._avcTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e},t.extractRemainingSamples=function(e){var t,r=e.audioTrack,i=e.videoTrack,n=e.id3Track,s=e.textTrack,a=i.pesData,o=r.pesData,l=n.pesData;if(a&&(t=V(a))?(this.parseAVCPES(i,s,t,!0),i.pesData=null):i.pesData=a,o&&(t=V(o))){switch(r.segmentCodec){case"aac":this.parseAACPES(r,t);break;case"mp3":this.parseMPEGPES(r,t)}r.pesData=null}else null!=o&&o.size&&p.logger.log("last AAC PES packet truncated,might overlap between fragments"),r.pesData=o;l&&(t=V(l))?(this.parseID3PES(n,t),n.pesData=null):n.pesData=l},t.demuxSampleAes=function(e,t,r){var i=this.demux(e,r,!0,!this.config.progressive),n=this.sampleAes=new U(this.observer,this.config,t);return this.decrypt(i,n)},t.decrypt=function(e,t){return new Promise((function(r){var i=e.audioTrack,n=e.videoTrack;i.samples&&"aac"===i.segmentCodec?t.decryptAacSamples(i.samples,0,(function(){n.samples?t.decryptAvcSamples(n.samples,0,0,(function(){r(e)})):r(e)})):n.samples&&t.decryptAvcSamples(n.samples,0,0,(function(){r(e)}))}))},t.destroy=function(){this._duration=0},t.parseAVCPES=function(e,t,r,i){var n,s=this,a=this.parseAVCNALu(e,r.data),o=this.avcSample,l=!1;r.data=null,o&&a.length&&!e.audFound&&(q(o,e),o=this.avcSample=H(!1,r.pts,r.dts,"")),a.forEach((function(i){switch(i.type){case 1:n=!0,o||(o=s.avcSample=H(!0,r.pts,r.dts,"")),o.frame=!0;var a=i.data;if(l&&a.length>4){var h=new B(a).readSliceType();2!==h&&4!==h&&7!==h&&9!==h||(o.key=!0)}break;case 5:n=!0,o||(o=s.avcSample=H(!0,r.pts,r.dts,"")),o.key=!0,o.frame=!0;break;case 6:n=!0,(0,d.parseSEIMessageFromNALu)(i.data,1,r.pts,t.samples);break;case 7:if(n=!0,l=!0,!e.sps){var u=new B(i.data).readSPS();e.width=u.width,e.height=u.height,e.pixelRatio=u.pixelRatio,e.sps=[i.data],e.duration=s._duration;for(var c=i.data.subarray(1,4),f="avc1.",g=0;g<3;g++){var p=c[g].toString(16);p.length<2&&(p="0"+p),f+=p}e.codec=f}break;case 8:n=!0,e.pps||(e.pps=[i.data]);break;case 9:n=!1,e.audFound=!0,o&&q(o,e),o=s.avcSample=H(!1,r.pts,r.dts,"");break;case 12:n=!0;break;default:n=!1,o&&(o.debug+="unknown NAL "+i.type+" ")}o&&n&&o.units.push(i)})),i&&o&&(q(o,e),this.avcSample=null)},t.getLastNalUnit=function(e){var t,r,i=this.avcSample;if(i&&0!==i.units.length||(i=e[e.length-1]),null!==(t=i)&&void 0!==t&&t.units){var n=i.units;r=n[n.length-1]}return r},t.parseAVCNALu=function(e,t){var r,i,n=t.byteLength,s=e.naluState||0,a=s,o=[],l=0,h=-1,d=0;for(-1===s&&(h=0,d=31&t[0],s=0,l=1);l<n;)if(r=t[l++],s)if(1!==s)if(r)if(1===r){if(h>=0){var u={data:t.subarray(h,l-s-1),type:d};o.push(u)}else{var c=this.getLastNalUnit(e.samples);if(c&&(a&&l<=4-a&&c.state&&(c.data=c.data.subarray(0,c.data.byteLength-a)),(i=l-s-1)>0)){var f=new Uint8Array(c.data.byteLength+i);f.set(c.data,0),f.set(t.subarray(0,i),c.data.byteLength),c.data=f,c.state=0}}l<n?(h=l,d=31&t[l],s=0):s=-1}else s=0;else s=3;else s=r?0:2;else s=r?0:1;if(h>=0&&s>=0){var g={data:t.subarray(h,n),type:d,state:s};o.push(g)}if(0===o.length){var p=this.getLastNalUnit(e.samples);if(p){var m=new Uint8Array(p.data.byteLength+t.byteLength);m.set(p.data,0),m.set(t,p.data.byteLength),p.data=m}}return e.naluState=s,o},t.parseAACPES=function(e,t){var r,s,a,o,l,h=0,d=this.aacOverFlow,u=t.data;if(d){this.aacOverFlow=null;var c=d.missing,f=d.sample.unit.byteLength;if(-1===c){var g=new Uint8Array(f+u.byteLength);g.set(d.sample.unit,0),g.set(u,f),u=g}else{var m=f-c;d.sample.unit.set(u.subarray(0,c),m),e.samples.push(d.sample),h=d.missing}}for(r=h,s=u.length;r<s-1&&!E(u,r);r++);if(r===h||(r<s-1?(a="AAC PES did not start with ADTS header,offset:"+r,o=!1):(a="no ADTS header found in AAC PES",o=!0),p.logger.warn("parsing error:"+a),this.observer.emit(i.Events.ERROR,i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.FRAG_PARSING_ERROR,fatal:o,reason:a}),!o)){if(b(e,this.observer,u,r,this.audioCodec),void 0!==t.pts)l=t.pts;else{if(!d)return void p.logger.warn("[tsdemuxer]: AAC PES unknown PTS");var v=T(e.samplerate);l=d.sample.pts+v}for(var y,S=0;r<s;){if(r+=(y=_(e,u,r,l,S)).length,y.missing){this.aacOverFlow=y;break}for(S++;r<s-1&&!E(u,r);r++);}}},t.parseMPEGPES=function(e,t){var r=t.data,i=r.length,n=0,s=0,a=t.pts;if(void 0!==a)for(;s<i;)if(N(r,s)){var o=x(e,r,s,a,n);if(!o)break;s+=o.length,n++}else s++;else p.logger.warn("[tsdemuxer]: MPEG PES unknown PTS")},t.parseID3PES=function(e,t){if(void 0!==t.pts){var r=G({},t,{type:this._avcTrack?l.MetadataSchema.emsg:l.MetadataSchema.audioId3,duration:Number.POSITIVE_INFINITY});e.samples.push(r)}else p.logger.warn("[tsdemuxer]: ID3 PES unknown PTS")},e}();function K(e,t){return K=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},K(e,t)}const Y=function(e){var t,r;function i(){return e.apply(this,arguments)||this}r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,K(t,r);var n=i.prototype;return n.resetInitSegment=function(t,r,i,n){e.prototype.resetInitSegment.call(this,t,r,i,n),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:r,duration:n,inputTimeScale:9e4,dropped:0}},i.probe=function(e){if(!e)return!1;for(var t=(o.getID3Data(e,0)||[]).length,r=e.length;t<r;t++)if(F(e,t))return p.logger.log("MPEG Audio sync word found !"),!0;return!1},n.canParse=function(e,t){return function(e,t){return M(e,t)&&4<=e.length-t}(e,t)},n.appendFrame=function(e,t,r){if(null!==this.basePTS)return x(e,t,r,this.basePTS,this.frameIndex)},i}(g),X=function(){function e(){}return e.getSilentFrame=function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)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(6===t)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(1===t)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(2===t)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(3===t)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])}},e}();var Q=Math.pow(2,32)-1,J=function(){function e(){}return e.init=function(){var t;for(t in e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var r=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]),i=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.HDLR_TYPES={video:r,audio:i};var n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),s=new Uint8Array([0,0,0,0,0,0,0,0]);e.STTS=e.STSC=e.STCO=s,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var a=new Uint8Array([105,115,111,109]),o=new Uint8Array([97,118,99,49]),l=new Uint8Array([0,0,0,1]);e.FTYP=e.box(e.types.ftyp,a,l,a,o),e.DINF=e.box(e.types.dinf,e.box(e.types.dref,n))},e.box=function(e){for(var t=8,r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];for(var s=i.length,a=s;s--;)t+=i[s].byteLength;var o=new Uint8Array(t);for(o[0]=t>>24&255,o[1]=t>>16&255,o[2]=t>>8&255,o[3]=255&t,o.set(e,4),s=0,t=8;s<a;s++)o.set(i[s],t),t+=i[s].byteLength;return o},e.hdlr=function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])},e.mdat=function(t){return e.box(e.types.mdat,t)},e.mdhd=function(t,r){r*=t;var i=Math.floor(r/(Q+1)),n=Math.floor(r%(Q+1));return e.box(e.types.mdhd,new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,i>>24,i>>16&255,i>>8&255,255&i,n>>24,n>>16&255,n>>8&255,255&n,85,196,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))},e.mfhd=function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))},e.minf=function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))},e.moof=function(t,r,i){return e.box(e.types.moof,e.mfhd(t),e.traf(i,r))},e.moov=function(t){for(var r=t.length,i=[];r--;)i[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(i).concat(e.mvex(t)))},e.mvex=function(t){for(var r=t.length,i=[];r--;)i[r]=e.trex(t[r]);return e.box.apply(null,[e.types.mvex].concat(i))},e.mvhd=function(t,r){r*=t;var i=Math.floor(r/(Q+1)),n=Math.floor(r%(Q+1)),s=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,i>>24,i>>16&255,i>>8&255,255&i,n>>24,n>>16&255,n>>8&255,255&n,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]);return e.box(e.types.mvhd,s)},e.sdtp=function(t){var r,i,n=t.samples||[],s=new Uint8Array(4+n.length);for(r=0;r<n.length;r++)i=n[r].flags,s[r+4]=i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy;return e.box(e.types.sdtp,s)},e.stbl=function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.STTS),e.box(e.types.stsc,e.STSC),e.box(e.types.stsz,e.STSZ),e.box(e.types.stco,e.STCO))},e.avc1=function(t){var r,i,n,s=[],a=[];for(r=0;r<t.sps.length;r++)n=(i=t.sps[r]).byteLength,s.push(n>>>8&255),s.push(255&n),s=s.concat(Array.prototype.slice.call(i));for(r=0;r<t.pps.length;r++)n=(i=t.pps[r]).byteLength,a.push(n>>>8&255),a.push(255&n),a=a.concat(Array.prototype.slice.call(i));var o=e.box(e.types.avcC,new Uint8Array([1,s[3],s[4],s[5],255,224|t.sps.length].concat(s).concat([t.pps.length]).concat(a))),l=t.width,h=t.height,d=t.pixelRatio[0],u=t.pixelRatio[1];return e.box(e.types.avc1,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,l>>8&255,255&l,h>>8&255,255&h,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,u>>24,u>>16&255,u>>8&255,255&u])))},e.esds=function(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))},e.mp4a=function(t){var r=t.samplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),e.box(e.types.esds,e.esds(t)))},e.mp3=function(t){var r=t.samplerate;return e.box(e.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?e.box(e.types.stsd,e.STSD,e.mp3(t)):e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))},e.tkhd=function(t){var r=t.id,i=t.duration*t.timescale,n=t.width,s=t.height,a=Math.floor(i/(Q+1)),o=Math.floor(i%(Q+1));return e.box(e.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,o>>24,o>>16&255,o>>8&255,255&o,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,255&n,0,0,s>>8&255,255&s,0,0]))},e.traf=function(t,r){var i=e.sdtp(t),n=t.id,s=Math.floor(r/(Q+1)),a=Math.floor(r%(Q+1));return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n])),e.box(e.types.tfdt,new Uint8Array([1,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,a>>24,a>>16&255,a>>8&255,255&a])),e.trun(t,i.length+16+20+8+16+8+8),i)},e.trak=function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.trex=function(t){var r=t.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},e.trun=function(t,r){var i,n,s,a,o,l,h=t.samples||[],d=h.length,u=12+16*d,c=new Uint8Array(u);for(r+=8+u,c.set(["video"===t.type?1:0,0,15,1,d>>>24&255,d>>>16&255,d>>>8&255,255&d,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0),i=0;i<d;i++)s=(n=h[i]).duration,a=n.size,o=n.flags,l=n.cts,c.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,a>>>24&255,a>>>16&255,a>>>8&255,255&a,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|o.isNonSync,61440&o.degradPrio,15&o.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*i);return e.box(e.types.trun,c)},e.initSegment=function(t){e.types||e.init();var r=e.moov(t),i=new Uint8Array(e.FTYP.byteLength+r.byteLength);return i.set(e.FTYP),i.set(r,e.FTYP.byteLength),i},e}();J.types=void 0,J.HDLR_TYPES=void 0,J.STTS=void 0,J.STSC=void 0,J.STCO=void 0,J.STSZ=void 0,J.VMHD=void 0,J.SMHD=void 0,J.STSD=void 0,J.FTYP=void 0,J.DINF=void 0;const Z=J;var ee=r(308);function te(e,t){return void 0===t&&(t=!1),function(e,t,r,i){void 0===r&&(r=1),void 0===i&&(i=!1);var n=1e3*e*r;return i?Math.round(n):n}(e,0,1/9e4,t)}function re(){return re=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},re.apply(this,arguments)}var ie=null,ne=null,se=function(){function e(e,t,r,i){if(void 0===i&&(i=""),this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=void 0,this._initDTS=void 0,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.observer=e,this.config=t,this.typeSupported=r,this.ISGenerated=!1,null===ie){var n=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);ie=n?parseInt(n[1]):0}if(null===ne){var s=navigator.userAgent.match(/Safari\/(\d+)/i);ne=s?parseInt(s[1]):0}}var t=e.prototype;return t.destroy=function(){},t.resetTimeStamp=function(e){p.logger.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e},t.resetNextTimestamp=function(){p.logger.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1},t.resetInitSegment=function(){p.logger.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1},t.getVideoStartPts=function(e){var t=!1,r=e.reduce((function(e,r){var i=r.pts-e;return i<-4294967296?(t=!0,ae(e,r.pts)):i>0?e:r.pts}),e[0].pts);return t&&p.logger.debug("PTS rollover detected"),r},t.remux=function(e,t,r,i,n,s,a,o){var l,h,d,u,c,f,g=n,m=n,v=e.pid>-1,y=t.pid>-1,E=t.samples.length,S=e.samples.length>0,b=a&&E>0||E>1;if((!v||S)&&(!y||b)||this.ISGenerated||a){this.ISGenerated||(d=this.generateIS(e,t,n));var T,_=this.isVideoContiguous,L=-1;if(b&&(L=function(e){for(var t=0;t<e.length;t++)if(e[t].key)return t;return-1}(t.samples),!_&&this.config.forceKeyFrameOnDiscontinuity))if(f=!0,L>0){p.logger.warn("[mp4-remuxer]: Dropped "+L+" out of "+E+" video samples due to a missing keyframe");var w=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(L),t.dropped+=L,T=m+=(t.samples[0].pts-w)/t.inputTimeScale}else-1===L&&(p.logger.warn("[mp4-remuxer]: No keyframe found out of "+E+" video samples"),f=!1);if(this.ISGenerated){if(S&&b){var P=this.getVideoStartPts(t.samples),A=(ae(e.samples[0].pts,P)-P)/t.inputTimeScale;g+=Math.max(0,A),m+=Math.max(0,-A)}if(S){if(e.samplerate||(p.logger.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),d=this.generateIS(e,t,n)),h=this.remuxAudio(e,g,this.isAudioContiguous,s,y||b||o===ee.PlaylistLevelType.AUDIO?m:void 0),b){var D=h?h.endPTS-h.startPTS:0;t.inputTimeScale||(p.logger.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),d=this.generateIS(e,t,n)),l=this.remuxVideo(t,m,_,D)}}else b&&(l=this.remuxVideo(t,m,_,0));l&&(l.firstKeyFrame=L,l.independent=-1!==L,l.firstKeyFramePTS=T)}}return this.ISGenerated&&(r.samples.length&&(c=oe(r,n,this._initPTS,this._initDTS)),i.samples.length&&(u=le(i,n,this._initPTS))),{audio:h,video:l,initSegment:d,independent:f,text:u,id3:c}},t.generateIS=function(e,t,r){var i,n,s,o=e.samples,l=t.samples,h=this.typeSupported,d={},u=!(0,a.isFiniteNumber)(this._initPTS),c="audio/mp4";if(u&&(i=n=1/0),e.config&&o.length&&(e.timescale=e.samplerate,"mp3"===e.segmentCodec&&(h.mpeg?(c="audio/mpeg",e.codec=""):h.mp3&&(e.codec="mp3")),d.audio={id:"audio",container:c,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&h.mpeg?new Uint8Array(0):Z.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(s=e.inputTimeScale,i=n=o[0].pts-Math.round(s*r))),t.sps&&t.pps&&l.length&&(t.timescale=t.inputTimeScale,d.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:Z.initSegment([t]),metadata:{width:t.width,height:t.height}},u)){s=t.inputTimeScale;var f=this.getVideoStartPts(l),g=Math.round(s*r);n=Math.min(n,ae(l[0].dts,f)-g),i=Math.min(i,f-g)}if(Object.keys(d).length)return this.ISGenerated=!0,u&&(this._initPTS=i,this._initDTS=n),{tracks:d,initPTS:i,timescale:s}},t.remuxVideo=function(e,t,r,s){var a,o,l=e.inputTimeScale,h=e.samples,d=[],u=h.length,c=this._initPTS,f=this.nextAvcDts,g=8,m=this.videoSampleDuration,v=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,E=!1;r&&null!==f||(f=t*l-(h[0].pts-ae(h[0].dts,h[0].pts)));for(var S=0;S<u;S++){var b=h[S];b.pts=ae(b.pts-c,f),b.dts=ae(b.dts-c,f),b.dts<h[S>0?S-1:S].dts&&(E=!0)}E&&h.sort((function(e,t){var r=e.dts-t.dts,i=e.pts-t.pts;return r||i})),a=h[0].dts;var T=h[h.length-1].dts-a,_=T?Math.round(T/(u-1)):m||e.inputTimeScale/30;if(r){var L=a-f,w=L>_,P=L<-1;if((w||P)&&(w?p.logger.warn("AVC: "+te(L,!0)+" ms ("+L+"dts) hole between fragments detected, filling it"):p.logger.warn("AVC: "+te(-L,!0)+" ms ("+L+"dts) overlapping between fragments detected"),!P||f>h[0].pts)){a=f;var A=h[0].pts-L;h[0].dts=a,h[0].pts=A,p.logger.log("Video: First PTS/DTS adjusted: "+te(A,!0)+"/"+te(a,!0)+", delta: "+te(L,!0)+" ms")}}a=Math.max(0,a);for(var D=0,I=0,R=0;R<u;R++){for(var C=h[R],k=C.units,x=k.length,O=0,M=0;M<x;M++)O+=k[M].data.length;I+=O,D+=x,C.length=O,C.dts=Math.max(C.dts,a),v=Math.min(C.pts,v),y=Math.max(C.pts,y)}o=h[u-1].dts;var N,F=I+4*D+8;try{N=new Uint8Array(F)}catch(e){return void this.observer.emit(i.Events.ERROR,i.Events.ERROR,{type:n.ErrorTypes.MUX_ERROR,details:n.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:F,reason:"fail allocating video mdat "+F})}var B=new DataView(N.buffer);B.setUint32(0,F),N.set(Z.types.mdat,4);for(var U=!1,G=Number.POSITIVE_INFINITY,$=Number.POSITIVE_INFINITY,H=Number.NEGATIVE_INFINITY,j=Number.NEGATIVE_INFINITY,W=0;W<u;W++){for(var V=h[W],q=V.units,z=0,K=0,Y=q.length;K<Y;K++){var X=q[K],Q=X.data,J=X.data.byteLength;B.setUint32(g,J),g+=4,N.set(Q,g),g+=J,z+=4+J}var ee=void 0;if(W<u-1)m=h[W+1].dts-V.dts,ee=h[W+1].pts-V.pts;else{var se=this.config,oe=W>0?V.dts-h[W-1].dts:_;if(ee=W>0?V.pts-h[W-1].pts:_,se.stretchShortVideoTrack&&null!==this.nextAudioPts){var le=Math.floor(se.maxBufferHole*l),de=(s?v+s*l:this.nextAudioPts)-V.pts;de>le?((m=de-oe)<0?m=oe:U=!0,p.logger.log("[mp4-remuxer]: It is approximately "+de/90+" ms to the next segment; using duration "+m/90+" ms for the last video frame.")):m=oe}else m=oe}var ue=Math.round(V.pts-V.dts);G=Math.min(G,m),H=Math.max(H,m),$=Math.min($,ee),j=Math.max(j,ee),d.push(new he(V.key,m,z,ue))}if(d.length)if(ie){if(ie<70){var ce=d[0].flags;ce.dependsOn=2,ce.isNonSync=0}}else if(ne&&j-$<H-G&&_/H<.025&&0===d[0].cts){p.logger.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.");for(var fe=a,ge=0,pe=d.length;ge<pe;ge++){var me=fe+d[ge].duration,ve=fe+d[ge].cts;if(ge<pe-1){var ye=me+d[ge+1].cts;d[ge].duration=ye-ve}else d[ge].duration=ge?d[ge-1].duration:_;d[ge].cts=0,fe=me}}m=U||!m?_:m,this.nextAvcDts=f=o+m,this.videoSampleDuration=m,this.isVideoContiguous=!0;var Ee={data1:Z.moof(e.sequenceNumber++,a,re({},e,{samples:d})),data2:N,startPTS:v/l,endPTS:(y+m)/l,startDTS:a/l,endDTS:f/l,type:"video",hasAudio:!1,hasVideo:!0,nb:d.length,dropped:e.dropped};return e.samples=[],e.dropped=0,Ee},t.remuxAudio=function(e,t,r,s,a){var o=e.inputTimeScale,l=o/(e.samplerate?e.samplerate:o),h="aac"===e.segmentCodec?1024:1152,d=h*l,u=this._initPTS,c="mp3"===e.segmentCodec&&this.typeSupported.mpeg,f=[],g=void 0!==a,m=e.samples,v=c?0:8,y=this.nextAudioPts||-1,E=t*o;if(this.isAudioContiguous=r=r||m.length&&y>0&&(s&&Math.abs(E-y)<9e3||Math.abs(ae(m[0].pts-u,E)-y)<20*d),m.forEach((function(e){e.pts=ae(e.pts-u,E)})),!r||y<0){if(m=m.filter((function(e){return e.pts>=0})),!m.length)return;y=0===a?0:s&&!g?Math.max(0,E):m[0].pts}if("aac"===e.segmentCodec)for(var S=this.config.maxAudioFramesDrift,b=0,T=y;b<m.length;b++){var _=m[b],L=_.pts,w=L-T,P=Math.abs(1e3*w/o);if(w<=-S*d&&g)0===b&&(p.logger.warn("Audio frame @ "+(L/o).toFixed(3)+"s overlaps nextAudioPts by "+Math.round(1e3*w/o)+" ms."),this.nextAudioPts=y=T=L);else if(w>=S*d&&P<1e4&&g){var A=Math.round(w/d);(T=L-A*d)<0&&(A--,T+=d),0===b&&(this.nextAudioPts=y=T),p.logger.warn("[mp4-remuxer]: Injecting "+A+" audio frame @ "+(T/o).toFixed(3)+"s due to "+Math.round(1e3*w/o)+" ms gap.");for(var D=0;D<A;D++){var I=Math.max(T,0),R=X.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);R||(p.logger.log("[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead."),R=_.unit.subarray()),m.splice(b,0,{unit:R,pts:I}),T+=d,b++}}_.pts=T,T+=d}for(var C,k=null,x=null,O=0,M=m.length;M--;)O+=m[M].unit.byteLength;for(var N=0,F=m.length;N<F;N++){var B=m[N],U=B.unit,G=B.pts;if(null!==x)f[N-1].duration=Math.round((G-x)/l);else{if(r&&"aac"===e.segmentCodec&&(G=y),k=G,!(O>0))return;O+=v;try{C=new Uint8Array(O)}catch(e){return void this.observer.emit(i.Events.ERROR,i.Events.ERROR,{type:n.ErrorTypes.MUX_ERROR,details:n.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:O,reason:"fail allocating audio mdat "+O})}c||(new DataView(C.buffer).setUint32(0,O),C.set(Z.types.mdat,4))}C.set(U,v);var $=U.byteLength;v+=$,f.push(new he(!0,h,$,0)),x=G}var H=f.length;if(H){var j=f[f.length-1];this.nextAudioPts=y=x+l*j.duration;var W=c?new Uint8Array(0):Z.moof(e.sequenceNumber++,k/l,re({},e,{samples:f}));e.samples=[];var V=k/o,q=y/o,z={data1:W,data2:C,startPTS:V,endPTS:q,startDTS:V,endDTS:q,type:"audio",hasAudio:!0,hasVideo:!1,nb:H};return this.isAudioContiguous=!0,z}},t.remuxEmptyAudio=function(e,t,r,i){var n=e.inputTimeScale,s=n/(e.samplerate?e.samplerate:n),a=this.nextAudioPts,o=(null!==a?a:i.startDTS*n)+this._initDTS,l=i.endDTS*n+this._initDTS,h=1024*s,d=Math.ceil((l-o)/h),u=X.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(p.logger.warn("[mp4-remuxer]: remux empty Audio"),u){for(var c=[],f=0;f<d;f++){var g=o+f*h;c.push({unit:u,pts:g,dts:g})}return e.samples=c,this.remuxAudio(e,t,r,!1)}p.logger.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec")},e}();function ae(e,t){var r;if(null===t)return e;for(r=t<e?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}function oe(e,t,r,i){var n=e.samples.length;if(n){for(var s=e.inputTimeScale,a=0;a<n;a++){var o=e.samples[a];o.pts=ae(o.pts-r,t*s)/s,o.dts=ae(o.dts-i,t*s)/s}var l=e.samples;return e.samples=[],{samples:l}}}function le(e,t,r){var i=e.samples.length;if(i){for(var n=e.inputTimeScale,s=0;s<i;s++){var a=e.samples[s];a.pts=ae(a.pts-r,t*n)/n}e.samples.sort((function(e,t){return e.pts-t.pts}));var o=e.samples;return e.samples=[],{samples:o}}}var he=function(e,t,r,i){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=r,this.cts=i,this.flags=new de(e)},de=function(e){this.isLeading=0,this.isDependedOn=0,this.hasRedundancy=0,this.degradPrio=0,this.dependsOn=1,this.isNonSync=1,this.dependsOn=e?2:1,this.isNonSync=e?0:1},ue=r(923);function ce(e,t){var r=null==e?void 0:e.codec;return r&&r.length>4?r:"hvc1"===r||"hev1"===r?"hvc1.1.c.L120.90":"av01"===r?"av01.0.04M.08":"avc1"===r||t===ue.ElementaryStreamTypes.VIDEO?"avc1.42e01e":"mp4a.40.5"}const fe=function(){function e(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=void 0,this.initTracks=void 0,this.lastEndTime=null}var t=e.prototype;return t.destroy=function(){},t.resetTimeStamp=function(e){this.initPTS=e,this.lastEndTime=null},t.resetNextTimestamp=function(){this.lastEndTime=null},t.resetInitSegment=function(e,t,r){this.audioCodec=t,this.videoCodec=r,this.generateInitSegment(e),this.emitInitSegment=!0},t.generateInitSegment=function(e){var t=this.audioCodec,r=this.videoCodec;if(!e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);var i=this.initData=(0,d.parseInitSegment)(e);t||(t=ce(i.audio,ue.ElementaryStreamTypes.AUDIO)),r||(r=ce(i.video,ue.ElementaryStreamTypes.VIDEO));var n={};i.audio&&i.video?n.audiovideo={container:"video/mp4",codec:t+","+r,initSegment:e,id:"main"}:i.audio?n.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:i.video?n.video={container:"video/mp4",codec:r,initSegment:e,id:"main"}:p.logger.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=n},t.remux=function(e,t,r,i,n){var s,o=this.initPTS,l=this.lastEndTime,h={audio:void 0,video:void 0,text:i,id3:r,initSegment:void 0};(0,a.isFiniteNumber)(l)||(l=this.lastEndTime=n||0);var u=t.samples;if(!u||!u.length)return h;var c={initPTS:void 0,timescale:1},f=this.initData;if(f&&f.length||(this.generateInitSegment(u),f=this.initData),!f||!f.length)return p.logger.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(c.tracks=this.initTracks,this.emitInitSegment=!1);var g=(0,d.getStartDTS)(f,u);(0,a.isFiniteNumber)(o)||(this.initPTS=c.initPTS=o=g-n);var m=(0,d.getDuration)(u,f),v=e?g-o:l,y=v+m;(0,d.offsetStartDTS)(f,u,o),m>0?this.lastEndTime=y:(p.logger.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());var E=!!f.audio,S=!!f.video,b="";E&&(b+="audio"),S&&(b+="video");var T={data1:u,startPTS:v,startDTS:v,endPTS:y,endDTS:y,type:b,hasAudio:E,hasVideo:S,nb:1,dropped:0};h.audio="audio"===T.type?T:void 0,h.video="audio"!==T.type?T:void 0,h.initSegment=c;var _=null!=(s=this.initPTS)?s:0;return h.id3=oe(r,n,_,_),i.samples.length&&(h.text=le(i,n,_)),h},e}();var ge;try{ge=self.performance.now.bind(self.performance)}catch(e){p.logger.debug("Unable to use Performance API on this environment"),ge=self.Date.now}var pe=[{demux:z,remux:se},{demux:A,remux:fe},{demux:w,remux:se},{demux:Y,remux:se}],me=function(){function e(e,t,r,i,n){this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.vendor=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=e,this.typeSupported=t,this.config=r,this.vendor=i,this.id=n}var t=e.prototype;return t.configure=function(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()},t.push=function(e,t,r,i){var n=this,s=r.transmuxing;s.executeStart=ge();var a=new Uint8Array(e),o=this.config,l=this.currentTransmuxState,h=this.transmuxConfig;i&&(this.currentTransmuxState=i);var d=i||l,u=d.contiguous,c=d.discontinuity,f=d.trackSwitch,g=d.accurateTimeOffset,p=d.timeOffset,m=d.initSegmentChange,v=h.audioCodec,y=h.videoCodec,E=h.defaultInitPts,S=h.duration,b=h.initSegmentData;(c||f||m)&&this.resetInitSegment(b,v,y,S),(c||m)&&this.resetInitialTimestamp(E),u||this.resetContiguity();var T=function(e,t){var r=null;return e.byteLength>0&&null!=t&&null!=t.key&&null!==t.iv&&null!=t.method&&(r=t),r}(a,t);if(T&&"AES-128"===T.method){var _=this.getDecrypter();if(!o.enableSoftwareAES)return this.decryptionPromise=_.webCryptoDecrypt(a,T.key.buffer,T.iv.buffer).then((function(e){var t=n.push(e,null,r);return n.decryptionPromise=null,t})),this.decryptionPromise;var L=_.softwareDecrypt(a,T.key.buffer,T.iv.buffer);if(!L)return s.executeEnd=ge(),ve(r);a=new Uint8Array(L)}this.needsProbing(a,c,f)&&this.configureTransmuxer(a,h);var w=this.transmux(a,T,p,g,r),P=this.currentTransmuxState;return P.contiguous=!0,P.discontinuity=!1,P.trackSwitch=!1,s.executeEnd=ge(),w},t.flush=function(e){var t=this,r=e.transmuxing;r.executeStart=ge();var s=this.decrypter,a=this.currentTransmuxState,o=this.decryptionPromise;if(o)return o.then((function(){return t.flush(e)}));var l=[],h=a.timeOffset;if(s){var d=s.flush();d&&l.push(this.push(d,null,e))}var u=this.demuxer,c=this.remuxer;if(!u||!c)return this.observer.emit(i.Events.ERROR,i.Events.ERROR,{type:n.ErrorTypes.MEDIA_ERROR,details:n.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"no demux matching with content found"}),r.executeEnd=ge(),[ve(e)];var f=u.flush(h);return ye(f)?f.then((function(r){return t.flushRemux(l,r,e),l})):(this.flushRemux(l,f,e),l)},t.flushRemux=function(e,t,r){var i=t.audioTrack,n=t.videoTrack,s=t.id3Track,a=t.textTrack,o=this.currentTransmuxState,l=o.accurateTimeOffset,h=o.timeOffset;p.logger.log("[transmuxer.ts]: Flushed fragment "+r.sn+(r.part>-1?" p: "+r.part:"")+" of level "+r.level);var d=this.remuxer.remux(i,n,s,a,h,l,!0,this.id);e.push({remuxResult:d,chunkMeta:r}),r.transmuxing.executeEnd=ge()},t.resetInitialTimestamp=function(e){var t=this.demuxer,r=this.remuxer;t&&r&&(t.resetTimeStamp(e),r.resetTimeStamp(e))},t.resetContiguity=function(){var e=this.demuxer,t=this.remuxer;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())},t.resetInitSegment=function(e,t,r,i){var n=this.demuxer,s=this.remuxer;n&&s&&(n.resetInitSegment(e,t,r,i),s.resetInitSegment(e,t,r))},t.destroy=function(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)},t.transmux=function(e,t,r,i,n){return t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,r,i,n):this.transmuxUnencrypted(e,r,i,n)},t.transmuxUnencrypted=function(e,t,r,i){var n=this.demuxer.demux(e,t,!1,!this.config.progressive),s=n.audioTrack,a=n.videoTrack,o=n.id3Track,l=n.textTrack;return{remuxResult:this.remuxer.remux(s,a,o,l,t,r,!1,this.id),chunkMeta:i}},t.transmuxSampleAes=function(e,t,r,i,n){var s=this;return this.demuxer.demuxSampleAes(e,t,r).then((function(e){return{remuxResult:s.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,r,i,!1,s.id),chunkMeta:n}}))},t.configureTransmuxer=function(e,t){for(var r,i=this.config,n=this.observer,s=this.typeSupported,a=this.vendor,o=t.audioCodec,l=t.defaultInitPts,h=t.duration,d=t.initSegmentData,u=t.videoCodec,c=0,f=pe.length;c<f;c++)if(pe[c].demux.probe(e)){r=pe[c];break}r||(p.logger.warn("Failed to find demuxer by probing frag, treating as mp4 passthrough"),r={demux:A,remux:fe});var g=this.demuxer,m=this.remuxer,v=r.remux,y=r.demux;m&&m instanceof v||(this.remuxer=new v(n,i,s,a)),g&&g instanceof y||(this.demuxer=new y(n,i,s),this.probe=y.probe),this.resetInitSegment(d,o,u,h),this.resetInitialTimestamp(l)},t.needsProbing=function(e,t,r){return!this.demuxer||!this.remuxer||t||r},t.getDecrypter=function(){var e=this.decrypter;return e||(e=this.decrypter=new s.default(this.observer,this.config)),e},e}(),ve=function(e){return{remuxResult:{},chunkMeta:e}};function ye(e){return"then"in e&&e.then instanceof Function}var Ee=function(e,t,r,i,n){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=r,this.duration=i,this.defaultInitPts=n},Se=function(e,t,r,i,n,s){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=r,this.trackSwitch=i,this.timeOffset=n,this.initSegmentChange=s}},514:e=>{e.exports=void 0},973:(e,t,r)=>{"use strict";var i,n;r.r(t),r.d(t,{ErrorDetails:()=>n,ErrorTypes:()=>i}),function(e){e.NETWORK_ERROR="networkError",e.MEDIA_ERROR="mediaError",e.KEY_SYSTEM_ERROR="keySystemError",e.MUX_ERROR="muxError",e.OTHER_ERROR="otherError"}(i||(i={})),function(e){e.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",e.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",e.KEY_SYSTEM_NO_SESSION="keySystemNoSession",e.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",e.KEY_SYSTEM_NO_INIT_DATA="keySystemNoInitData",e.MANIFEST_LOAD_ERROR="manifestLoadError",e.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",e.MANIFEST_PARSING_ERROR="manifestParsingError",e.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",e.LEVEL_EMPTY_ERROR="levelEmptyError",e.LEVEL_LOAD_ERROR="levelLoadError",e.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",e.LEVEL_SWITCH_ERROR="levelSwitchError",e.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",e.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",e.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",e.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",e.FRAG_LOAD_ERROR="fragLoadError",e.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",e.FRAG_DECRYPT_ERROR="fragDecryptError",e.FRAG_PARSING_ERROR="fragParsingError",e.REMUX_ALLOC_ERROR="remuxAllocError",e.KEY_LOAD_ERROR="keyLoadError",e.KEY_LOAD_TIMEOUT="keyLoadTimeOut",e.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",e.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",e.BUFFER_APPEND_ERROR="bufferAppendError",e.BUFFER_APPENDING_ERROR="bufferAppendingError",e.BUFFER_STALLED_ERROR="bufferStalledError",e.BUFFER_FULL_ERROR="bufferFullError",e.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",e.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",e.INTERNAL_EXCEPTION="internalException",e.INTERNAL_ABORTED="aborted",e.UNKNOWN="unknown"}(n||(n={}))},851:(e,t,r)=>{"use strict";var i;r.r(t),r.d(t,{Events:()=>i}),function(e){e.MEDIA_ATTACHING="hlsMediaAttaching",e.MEDIA_ATTACHED="hlsMediaAttached",e.MEDIA_DETACHING="hlsMediaDetaching",e.MEDIA_DETACHED="hlsMediaDetached",e.BUFFER_RESET="hlsBufferReset",e.BUFFER_CODECS="hlsBufferCodecs",e.BUFFER_CREATED="hlsBufferCreated",e.BUFFER_APPENDING="hlsBufferAppending",e.BUFFER_APPENDED="hlsBufferAppended",e.BUFFER_EOS="hlsBufferEos",e.BUFFER_FLUSHING="hlsBufferFlushing",e.BUFFER_FLUSHED="hlsBufferFlushed",e.MANIFEST_LOADING="hlsManifestLoading",e.MANIFEST_LOADED="hlsManifestLoaded",e.MANIFEST_PARSED="hlsManifestParsed",e.LEVEL_SWITCHING="hlsLevelSwitching",e.LEVEL_SWITCHED="hlsLevelSwitched",e.LEVEL_LOADING="hlsLevelLoading",e.LEVEL_LOADED="hlsLevelLoaded",e.LEVEL_UPDATED="hlsLevelUpdated",e.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",e.LEVELS_UPDATED="hlsLevelsUpdated",e.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",e.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",e.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",e.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",e.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",e.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",e.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",e.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",e.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",e.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",e.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",e.CUES_PARSED="hlsCuesParsed",e.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",e.INIT_PTS_FOUND="hlsInitPtsFound",e.FRAG_LOADING="hlsFragLoading",e.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",e.FRAG_LOADED="hlsFragLoaded",e.FRAG_DECRYPTED="hlsFragDecrypted",e.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",e.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",e.FRAG_PARSING_METADATA="hlsFragParsingMetadata",e.FRAG_PARSED="hlsFragParsed",e.FRAG_BUFFERED="hlsFragBuffered",e.FRAG_CHANGED="hlsFragChanged",e.FPS_DROP="hlsFpsDrop",e.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",e.ERROR="hlsError",e.DESTROYING="hlsDestroying",e.KEY_LOADING="hlsKeyLoading",e.KEY_LOADED="hlsKeyLoaded",e.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",e.BACK_BUFFER_REACHED="hlsBackBufferReached"}(i||(i={}))},392:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>kt});var i,n=r(945),s=r(965),a=r(851),o=r(973),l=r(93),h=r(63),d=/^(\d+)x(\d+)$/,u=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,c=function(){function e(t){for(var r in"string"==typeof t&&(t=e.parseAttrList(t)),t)t.hasOwnProperty(r)&&(this[r]=t[r])}var t=e.prototype;return t.decimalInteger=function(e){var t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t},t.hexadecimalInteger=function(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var r=new Uint8Array(t.length/2),i=0;i<t.length/2;i++)r[i]=parseInt(t.slice(2*i,2*i+2),16);return r}return null},t.hexadecimalIntegerAsNumber=function(e){var t=parseInt(this[e],16);return t>Number.MAX_SAFE_INTEGER?1/0:t},t.decimalFloatingPoint=function(e){return parseFloat(this[e])},t.optionalFloat=function(e,t){var r=this[e];return r?parseFloat(r):t},t.enumeratedString=function(e){return this[e]},t.bool=function(e){return"YES"===this[e]},t.decimalResolution=function(e){var t=d.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}},e.parseAttrList=function(e){var t,r={};for(u.lastIndex=0;null!==(t=u.exec(e));){var i=t[2];0===i.indexOf('"')&&i.lastIndexOf('"')===i.length-1&&(i=i.slice(1,-1)),r[t[1]]=i}return r},e}();function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},f.apply(this,arguments)}!function(e){e.ID="ID",e.CLASS="CLASS",e.START_DATE="START-DATE",e.DURATION="DURATION",e.END_DATE="END-DATE",e.END_ON_NEXT="END-ON-NEXT",e.PLANNED_DURATION="PLANNED-DURATION",e.SCTE35_OUT="SCTE35-OUT",e.SCTE35_IN="SCTE35-IN"}(i||(i={}));var g=function(){function e(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){var r=t.attr;for(var n in r)if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==r[n]){l.logger.warn('DATERANGE tag attribute: "'+n+'" does not match for tags with ID: "'+e.ID+'"'),this._badValueForSameId=n;break}e=f(new c({}),r,e)}if(this.attr=e,this._startDate=new Date(e[i.START_DATE]),i.END_DATE in this.attr){var a=new Date(this.attr[i.END_DATE]);(0,s.isFiniteNumber)(a.getTime())&&(this._endDate=a)}}var t,r;return t=e,(r=[{key:"id",get:function(){return this.attr.ID}},{key:"class",get:function(){return this.attr.CLASS}},{key:"startDate",get:function(){return this._startDate}},{key:"endDate",get:function(){if(this._endDate)return this._endDate;var e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}},{key:"duration",get:function(){if(i.DURATION in this.attr){var e=this.attr.decimalFloatingPoint(i.DURATION);if((0,s.isFiniteNumber)(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}},{key:"plannedDuration",get:function(){return i.PLANNED_DURATION in this.attr?this.attr.decimalFloatingPoint(i.PLANNED_DURATION):null}},{key:"endOnNext",get:function(){return this.attr.bool(i.END_ON_NEXT)}},{key:"isValid",get:function(){return!!this.id&&!this._badValueForSameId&&(0,s.isFiniteNumber)(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}(),p=r(923),m=function(){function e(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.needSidxRanges=!1,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.fragments=[],this.dateRanges={},this.url=e}var t,r;return e.prototype.reloaded=function(e){if(!e)return this.advanced=!0,void(this.updated=!0);var t=this.lastPartSn-e.lastPartSn,r=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!r||!!t,this.advanced=this.endSN>e.endSN||t>0||0===t&&r>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay},t=e,(r=[{key:"hasProgramDateTime",get:function(){return!!this.fragments.length&&(0,s.isFiniteNumber)(this.fragments[this.fragments.length-1].programDateTime)}},{key:"levelTargetDuration",get:function(){return this.averagetargetduration||this.targetduration||10}},{key:"drift",get:function(){var e=this.driftEndTime-this.driftStartTime;return e>0?1e3*(this.driftEnd-this.driftStart)/e:1}},{key:"edge",get:function(){return this.partEnd||this.fragmentEnd}},{key:"partEnd",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}},{key:"fragmentEnd",get:function(){var e;return null!==(e=this.fragments)&&void 0!==e&&e.length?this.fragments[this.fragments.length-1].end:0}},{key:"age",get:function(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}},{key:"lastPartIndex",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].index:-1}},{key:"lastPartSn",get:function(){var e;return null!==(e=this.partList)&&void 0!==e&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}(),v=r(960),y={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,av01:!0,drac:!0,dva1:!0,dvav:!0,dvh1:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0},text:{stpp:!0,wvtt:!0}};function E(e,t){return MediaSource.isTypeSupported((t||"video")+'/mp4;codecs="'+e+'"')}var S=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-SESSION-DATA:([^\r\n]*)[\r\n]+/g,b=/#EXT-X-MEDIA:(.*)/g,T=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[\S ]*)/.source,/#EXT-X-BYTERANGE:*(.+)/.source,/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/#.*/.source].join("|"),"g"),_=new RegExp([/#(EXTM3U)/.source,/#EXT-X-(DATERANGE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|")),L=/\.(mp4|m4s|m4v|m4a)$/i,w=function(){function e(){}return e.findGroup=function(e,t){for(var r=0;r<e.length;r++){var i=e[r];if(i.id===t)return i}},e.convertAVC1ToAVCOTI=function(e){var t=e.split(".");if(t.length>2){var r=t.shift()+".";return(r+=parseInt(t.shift()).toString(16))+("000"+parseInt(t.shift()).toString(16)).slice(-4)}return e},e.resolve=function(e,t){return n.buildAbsoluteURL(t,e,{alwaysNormalize:!0})},e.parseMasterPlaylist=function(t,r){var i,n=[],s=[],a={},o=!1;for(S.lastIndex=0;null!=(i=S.exec(t));)if(i[1]){var l,h=new c(i[1]),d={attrs:h,bitrate:h.decimalInteger("AVERAGE-BANDWIDTH")||h.decimalInteger("BANDWIDTH"),name:h.NAME,url:e.resolve(i[2],r)},u=h.decimalResolution("RESOLUTION");u&&(d.width=u.width,d.height=u.height),P((h.CODECS||"").split(/[ ,]+/).filter((function(e){return e})),d),d.videoCodec&&-1!==d.videoCodec.indexOf("avc1")&&(d.videoCodec=e.convertAVC1ToAVCOTI(d.videoCodec)),null!==(l=d.unknownCodecs)&&void 0!==l&&l.length||s.push(d),n.push(d)}else if(i[3]){var f=new c(i[3]);f["DATA-ID"]&&(o=!0,a[f["DATA-ID"]]=f)}return{levels:s.length>0&&s.length<n.length?s:n,sessionData:o?a:null}},e.parseMasterPlaylistMedia=function(t,r,i,n){var s;void 0===n&&(n=[]);var a=[],o=0;for(b.lastIndex=0;null!==(s=b.exec(t));){var l=new c(s[1]);if(l.TYPE===i){var h={attrs:l,bitrate:0,id:o++,groupId:l["GROUP-ID"],instreamId:l["INSTREAM-ID"],name:l.NAME||l.LANGUAGE||"",type:i,default:l.bool("DEFAULT"),autoselect:l.bool("AUTOSELECT"),forced:l.bool("FORCED"),lang:l.LANGUAGE,url:l.URI?e.resolve(l.URI,r):""};if(n.length){var d=e.findGroup(n,h.groupId)||n[0];A(h,d,"audioCodec"),A(h,d,"textCodec")}a.push(h)}}return a},e.parseLevelPlaylist=function(e,t,r,i,a){var o,h,d,u=new m(t),f=u.fragments,y=null,E=0,S=0,b=0,w=0,P=null,A=new p.Fragment(i,t),R=-1,C=!1;for(T.lastIndex=0,u.m3u8=e;null!==(o=T.exec(e));){C&&(C=!1,(A=new p.Fragment(i,t)).start=b,A.sn=E,A.cc=w,A.level=r,y&&(A.initSegment=y,A.rawProgramDateTime=y.rawProgramDateTime,y.rawProgramDateTime=null));var k=o[1];if(k){A.duration=parseFloat(k);var x=(" "+o[2]).slice(1);A.title=x||null,A.tagList.push(x?["INF",k,x]:["INF",k])}else if(o[3])(0,s.isFiniteNumber)(A.duration)&&(A.start=b,d&&(A.levelkey=d),A.sn=E,A.level=r,A.cc=w,A.urlId=a,f.push(A),A.relurl=(" "+o[3]).slice(1),D(A,P),P=A,b+=A.duration,E++,S=0,C=!0);else if(o[4]){var O=(" "+o[4]).slice(1);P?A.setByteRange(O,P):A.setByteRange(O)}else if(o[5])A.rawProgramDateTime=(" "+o[5]).slice(1),A.tagList.push(["PROGRAM-DATE-TIME",A.rawProgramDateTime]),-1===R&&(R=f.length);else{if(!(o=o[0].match(_))){l.logger.warn("No matches on slow regex match for level playlist!");continue}for(h=1;h<o.length&&void 0===o[h];h++);var M=(" "+o[h]).slice(1),N=(" "+o[h+1]).slice(1),F=o[h+2]?(" "+o[h+2]).slice(1):"";switch(M){case"PLAYLIST-TYPE":u.type=N.toUpperCase();break;case"MEDIA-SEQUENCE":E=u.startSN=parseInt(N);break;case"SKIP":var B=new c(N),U=B.decimalInteger("SKIPPED-SEGMENTS");if((0,s.isFiniteNumber)(U)){u.skippedSegments=U;for(var G=U;G--;)f.unshift(null);E+=U}var $=B.enumeratedString("RECENTLY-REMOVED-DATERANGES");$&&(u.recentlyRemovedDateranges=$.split("\t"));break;case"TARGETDURATION":u.targetduration=parseFloat(N);break;case"VERSION":u.version=parseInt(N);break;case"EXTM3U":break;case"ENDLIST":u.live=!1;break;case"#":(N||F)&&A.tagList.push(F?[N,F]:[N]);break;case"DISCONTINUITY":w++,A.tagList.push(["DIS"]);break;case"GAP":A.tagList.push([M]);break;case"BITRATE":A.tagList.push([M,N]);break;case"DATERANGE":var H=new c(N),j=new g(H,u.dateRanges[H.ID]);j.isValid||u.skippedSegments?u.dateRanges[j.id]=j:l.logger.warn('Ignoring invalid DATERANGE tag: "'+N+'"'),A.tagList.push(["EXT-X-DATERANGE",N]);break;case"DISCONTINUITY-SEQUENCE":w=parseInt(N);break;case"KEY":var W,V=new c(N),q=V.enumeratedString("METHOD"),z=V.URI,K=V.hexadecimalInteger("IV"),Y=V.enumeratedString("KEYFORMATVERSIONS"),X=V.enumeratedString("KEYID"),Q=null!=(W=V.enumeratedString("KEYFORMAT"))?W:"identity";if(["com.apple.streamingkeydelivery","com.microsoft.playready","urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed","com.widevine"].indexOf(Q)>-1){l.logger.warn("Keyformat "+Q+" is not supported from the manifest");continue}if("identity"!==Q)continue;q&&(d=v.LevelKey.fromURL(t,z),z&&["AES-128","SAMPLE-AES","SAMPLE-AES-CENC"].indexOf(q)>=0&&(d.method=q,d.keyFormat=Q,X&&(d.keyID=X),Y&&(d.keyFormatVersions=Y),d.iv=K));break;case"START":var J=new c(N).decimalFloatingPoint("TIME-OFFSET");(0,s.isFiniteNumber)(J)&&(u.startTimeOffset=J);break;case"MAP":var Z=new c(N);if(A.duration){var ee=new p.Fragment(i,t);I(ee,Z,r,d),y=ee,A.initSegment=y,y.rawProgramDateTime&&!A.rawProgramDateTime&&(A.rawProgramDateTime=y.rawProgramDateTime)}else I(A,Z,r,d),y=A,C=!0;break;case"SERVER-CONTROL":var te=new c(N);u.canBlockReload=te.bool("CAN-BLOCK-RELOAD"),u.canSkipUntil=te.optionalFloat("CAN-SKIP-UNTIL",0),u.canSkipDateRanges=u.canSkipUntil>0&&te.bool("CAN-SKIP-DATERANGES"),u.partHoldBack=te.optionalFloat("PART-HOLD-BACK",0),u.holdBack=te.optionalFloat("HOLD-BACK",0);break;case"PART-INF":var re=new c(N);u.partTarget=re.decimalFloatingPoint("PART-TARGET");break;case"PART":var ie=u.partList;ie||(ie=u.partList=[]);var ne=S>0?ie[ie.length-1]:void 0,se=S++,ae=new p.Part(new c(N),A,t,se,ne);ie.push(ae),A.duration+=ae.duration;break;case"PRELOAD-HINT":var oe=new c(N);u.preloadHint=oe;break;case"RENDITION-REPORT":var le=new c(N);u.renditionReports=u.renditionReports||[],u.renditionReports.push(le);break;default:l.logger.warn("line parsed but not handled: "+o)}}}P&&!P.relurl?(f.pop(),b-=P.duration,u.partList&&(u.fragmentHint=P)):u.partList&&(D(A,P),A.cc=w,u.fragmentHint=A);var he=f.length,de=f[0],ue=f[he-1];if((b+=u.skippedSegments*u.targetduration)>0&&he&&ue){u.averagetargetduration=b/he;var ce=ue.sn;u.endSN="initSegment"!==ce?ce:0,de&&(u.startCC=de.cc,de.initSegment||u.fragments.every((function(e){return e.relurl&&(t=e.relurl,L.test(null!=(r=null===(i=n.parseURL(t))||void 0===i?void 0:i.path)?r:""));var t,r,i}))&&(l.logger.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"),(A=new p.Fragment(i,t)).relurl=ue.relurl,A.level=r,A.sn="initSegment",de.initSegment=A,u.needSidxRanges=!0))}else u.endSN=0,u.startCC=0;return u.fragmentHint&&(b+=u.fragmentHint.duration),u.totalduration=b,u.endCC=w,R>0&&function(e,t){for(var r=e[t],i=t;i--;){var n=e[i];if(!n)return;n.programDateTime=r.programDateTime-1e3*n.duration,r=n}}(f,R),u},e}();function P(e,t){["video","audio","text"].forEach((function(r){var i=e.filter((function(e){return function(e,t){var r=y[t];return!!r&&!0===r[e.slice(0,4)]}(e,r)}));if(i.length){var n=i.filter((function(e){return 0===e.lastIndexOf("avc1",0)||0===e.lastIndexOf("mp4a",0)}));t[r+"Codec"]=n.length>0?n[0]:i[0],e=e.filter((function(e){return-1===i.indexOf(e)}))}})),t.unknownCodecs=e}function A(e,t,r){var i=t[r];i&&(e[r]=i)}function D(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),(0,s.isFiniteNumber)(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function I(e,t,r,i){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=r,e.sn="initSegment",i&&(e.levelkey=i),e.initSegment=null}var R=r(308);function C(e,t){var r=e.url;return void 0!==r&&0!==r.indexOf("data:")||(r=t.url),r}const k=function(){function e(e){this.hls=void 0,this.loaders=Object.create(null),this.hls=e,this.registerListeners()}var t=e.prototype;return t.startLoad=function(e){},t.stopLoad=function(){this.destroyInternalLoaders()},t.registerListeners=function(){var e=this.hls;e.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(a.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(a.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(a.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.unregisterListeners=function(){var e=this.hls;e.off(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(a.Events.LEVEL_LOADING,this.onLevelLoading,this),e.off(a.Events.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(a.Events.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)},t.createInternalLoader=function(e){var t=this.hls.config,r=t.pLoader,i=t.loader,n=new(r||i)(t);return e.loader=n,this.loaders[e.type]=n,n},t.getInternalLoader=function(e){return this.loaders[e.type]},t.resetInternalLoader=function(e){this.loaders[e]&&delete this.loaders[e]},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}},t.destroy=function(){this.unregisterListeners(),this.destroyInternalLoaders()},t.onManifestLoading=function(e,t){var r=t.url;this.load({id:null,groupId:null,level:0,responseType:"text",type:R.PlaylistContextType.MANIFEST,url:r,deliveryDirectives:null})},t.onLevelLoading=function(e,t){var r=t.id,i=t.level,n=t.url,s=t.deliveryDirectives;this.load({id:r,groupId:null,level:i,responseType:"text",type:R.PlaylistContextType.LEVEL,url:n,deliveryDirectives:s})},t.onAudioTrackLoading=function(e,t){var r=t.id,i=t.groupId,n=t.url,s=t.deliveryDirectives;this.load({id:r,groupId:i,level:null,responseType:"text",type:R.PlaylistContextType.AUDIO_TRACK,url:n,deliveryDirectives:s})},t.onSubtitleTrackLoading=function(e,t){var r=t.id,i=t.groupId,n=t.url,s=t.deliveryDirectives;this.load({id:r,groupId:i,level:null,responseType:"text",type:R.PlaylistContextType.SUBTITLE_TRACK,url:n,deliveryDirectives:s})},t.load=function(e){var t,r,i,n,s,a,o=this.hls.config,h=this.getInternalLoader(e);if(h){var d=h.context;if(d&&d.url===e.url)return void l.logger.trace("[playlist-loader]: playlist request ongoing");l.logger.log("[playlist-loader]: aborting previous loader for type: "+e.type),h.abort()}switch(e.type){case R.PlaylistContextType.MANIFEST:r=o.manifestLoadingMaxRetry,i=o.manifestLoadingTimeOut,n=o.manifestLoadingRetryDelay,s=o.manifestLoadingMaxRetryTimeout;break;case R.PlaylistContextType.LEVEL:case R.PlaylistContextType.AUDIO_TRACK:case R.PlaylistContextType.SUBTITLE_TRACK:r=0,i=o.levelLoadingTimeOut;break;default:r=o.levelLoadingMaxRetry,i=o.levelLoadingTimeOut,n=o.levelLoadingRetryDelay,s=o.levelLoadingMaxRetryTimeout}if(h=this.createInternalLoader(e),null!==(t=e.deliveryDirectives)&&void 0!==t&&t.part&&(e.type===R.PlaylistContextType.LEVEL&&null!==e.level?a=this.hls.levels[e.level].details:e.type===R.PlaylistContextType.AUDIO_TRACK&&null!==e.id?a=this.hls.audioTracks[e.id].details:e.type===R.PlaylistContextType.SUBTITLE_TRACK&&null!==e.id&&(a=this.hls.subtitleTracks[e.id].details),a)){var u=a.partTarget,c=a.targetduration;u&&c&&(i=Math.min(1e3*Math.max(3*u,.8*c),i))}var f={timeout:i,maxRetry:r,retryDelay:n,maxRetryDelay:s,highWaterMark:0},g={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};h.load(e,f,g)},t.loadsuccess=function(e,t,r,i){if(void 0===i&&(i=null),r.isSidxRequest)return this.handleSidxRequest(e,r),void this.handlePlaylistLoaded(e,t,r,i);this.resetInternalLoader(r.type);var n=e.data;0===n.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),n.indexOf("#EXTINF:")>0||n.indexOf("#EXT-X-TARGETDURATION:")>0?this.handleTrackOrLevelPlaylist(e,t,r,i):this.handleMasterPlaylist(e,t,r,i)):this.handleManifestParsingError(e,r,"no EXTM3U delimiter",i)},t.loaderror=function(e,t,r){void 0===r&&(r=null),this.handleNetworkError(t,r,!1,e)},t.loadtimeout=function(e,t,r){void 0===r&&(r=null),this.handleNetworkError(t,r,!0)},t.handleMasterPlaylist=function(e,t,r,i){var n=this.hls,s=e.data,o=C(e,r),h=w.parseMasterPlaylist(s,o),d=h.levels,u=h.sessionData;if(d.length){var f=d.map((function(e){return{id:e.attrs.AUDIO,audioCodec:e.audioCodec}})),g=d.map((function(e){return{id:e.attrs.SUBTITLES,textCodec:e.textCodec}})),p=w.parseMasterPlaylistMedia(s,o,"AUDIO",f),m=w.parseMasterPlaylistMedia(s,o,"SUBTITLES",g),v=w.parseMasterPlaylistMedia(s,o,"CLOSED-CAPTIONS");p.length&&(p.some((function(e){return!e.url}))||!d[0].audioCodec||d[0].attrs.AUDIO||(l.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),p.unshift({type:"main",name:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new c({}),bitrate:0,url:""}))),n.trigger(a.Events.MANIFEST_LOADED,{levels:d,audioTracks:p,subtitles:m,captions:v,url:o,stats:t,networkDetails:i,sessionData:u})}else this.handleManifestParsingError(e,r,"no level found in manifest",i)},t.handleTrackOrLevelPlaylist=function(e,t,r,i){var n=this.hls,l=r.id,h=r.level,d=r.type,u=C(e,r),f=(0,s.isFiniteNumber)(l)?l:0,g=(0,s.isFiniteNumber)(h)?h:f,p=function(e){switch(e.type){case R.PlaylistContextType.AUDIO_TRACK:return R.PlaylistLevelType.AUDIO;case R.PlaylistContextType.SUBTITLE_TRACK:return R.PlaylistLevelType.SUBTITLE;default:return R.PlaylistLevelType.MAIN}}(r),m=w.parseLevelPlaylist(e.data,u,g,p,f);if(m.fragments.length){if(d===R.PlaylistContextType.MANIFEST){var v={attrs:new c({}),bitrate:0,details:m,name:"",url:u};n.trigger(a.Events.MANIFEST_LOADED,{levels:[v],audioTracks:[],url:u,stats:t,networkDetails:i,sessionData:null})}if(t.parsing.end=performance.now(),m.needSidxRanges){var y,E=null===(y=m.fragments[0].initSegment)||void 0===y?void 0:y.url;this.load({url:E,isSidxRequest:!0,type:d,level:h,levelDetails:m,id:l,groupId:null,rangeStart:0,rangeEnd:2048,responseType:"arraybuffer",deliveryDirectives:null})}else r.levelDetails=m,this.handlePlaylistLoaded(e,t,r,i)}else n.trigger(a.Events.ERROR,{type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.LEVEL_EMPTY_ERROR,fatal:!1,url:u,reason:"no fragments found in level",level:"number"==typeof r.level?r.level:void 0})},t.handleSidxRequest=function(e,t){var r=new Uint8Array(e.data),i=(0,h.findBox)(r,["sidx"])[0];if(i){var n=(0,h.parseSegmentIndex)(i);if(n){var s=n.references,a=t.levelDetails;s.forEach((function(e,t){var i=e.info,n=a.fragments[t];if(0===n.byteRange.length&&n.setByteRange(String(1+i.end-i.start)+"@"+String(i.start)),n.initSegment){var s=(0,h.findBox)(r,["moov"])[0],o=s?s.length:null;n.initSegment.setByteRange(String(o)+"@0")}}))}}},t.handleManifestParsingError=function(e,t,r,i){this.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:t.type===R.PlaylistContextType.MANIFEST,url:e.url,reason:r,response:e,context:t,networkDetails:i})},t.handleNetworkError=function(e,t,r,i){void 0===r&&(r=!1),l.logger.warn("[playlist-loader]: A network "+(r?"timeout":"error")+" occurred while loading "+e.type+" level: "+e.level+" id: "+e.id+' group-id: "'+e.groupId+'"');var n=o.ErrorDetails.UNKNOWN,s=!1,h=this.getInternalLoader(e);switch(e.type){case R.PlaylistContextType.MANIFEST:n=r?o.ErrorDetails.MANIFEST_LOAD_TIMEOUT:o.ErrorDetails.MANIFEST_LOAD_ERROR,s=!0;break;case R.PlaylistContextType.LEVEL:n=r?o.ErrorDetails.LEVEL_LOAD_TIMEOUT:o.ErrorDetails.LEVEL_LOAD_ERROR,s=!1;break;case R.PlaylistContextType.AUDIO_TRACK:n=r?o.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:o.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,s=!1;break;case R.PlaylistContextType.SUBTITLE_TRACK:n=r?o.ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:o.ErrorDetails.SUBTITLE_LOAD_ERROR,s=!1}h&&this.resetInternalLoader(e.type);var d={type:o.ErrorTypes.NETWORK_ERROR,details:n,fatal:s,url:e.url,loader:h,context:e,networkDetails:t};i&&(d.response=i),this.hls.trigger(a.Events.ERROR,d)},t.handlePlaylistLoaded=function(e,t,r,i){var n=r.type,s=r.level,o=r.id,l=r.groupId,h=r.loader,d=r.levelDetails,u=r.deliveryDirectives;if(null!=d&&d.targetduration){if(h)switch(d.live&&(h.getCacheAge&&(d.ageHeader=h.getCacheAge()||0),h.getCacheAge&&!isNaN(d.ageHeader)||(d.ageHeader=0)),n){case R.PlaylistContextType.MANIFEST:case R.PlaylistContextType.LEVEL:this.hls.trigger(a.Events.LEVEL_LOADED,{details:d,level:s||0,id:o||0,stats:t,networkDetails:i,deliveryDirectives:u});break;case R.PlaylistContextType.AUDIO_TRACK:this.hls.trigger(a.Events.AUDIO_TRACK_LOADED,{details:d,id:o||0,groupId:l||"",stats:t,networkDetails:i,deliveryDirectives:u});break;case R.PlaylistContextType.SUBTITLE_TRACK:this.hls.trigger(a.Events.SUBTITLE_TRACK_LOADED,{details:d,id:o||0,groupId:l||"",stats:t,networkDetails:i,deliveryDirectives:u})}}else this.handleManifestParsingError(e,r,"invalid target duration",i)},e}();var x=function(){function e(e){this.hls=void 0,this.loaders={},this.decryptkey=null,this.decrypturl=null,this.hls=e,this.registerListeners()}var t=e.prototype;return t.startLoad=function(e){},t.stopLoad=function(){this.destroyInternalLoaders()},t.registerListeners=function(){this.hls.on(a.Events.KEY_LOADING,this.onKeyLoading,this)},t.unregisterListeners=function(){this.hls.off(a.Events.KEY_LOADING,this.onKeyLoading)},t.destroyInternalLoaders=function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy()}this.loaders={}},t.destroy=function(){this.unregisterListeners(),this.destroyInternalLoaders()},t.onKeyLoading=function(e,t){var r=t.frag,i=r.type,n=this.loaders[i];if(r.decryptdata){var s=r.decryptdata.uri;if(s!==this.decrypturl||null===this.decryptkey){var o=this.hls.config;if(n&&(l.logger.warn("abort previous key loader for type:"+i),n.abort()),!s)return void l.logger.warn("key uri is falsy");var h=o.loader,d=r.loader=this.loaders[i]=new h(o);this.decrypturl=s,this.decryptkey=null;var u={url:s,frag:r,responseType:"arraybuffer"},c={timeout:o.fragLoadingTimeOut,maxRetry:0,retryDelay:o.fragLoadingRetryDelay,maxRetryDelay:o.fragLoadingMaxRetryTimeout,highWaterMark:0},f={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)};d.load(u,c,f)}else this.decryptkey&&(r.decryptdata.key=this.decryptkey,this.hls.trigger(a.Events.KEY_LOADED,{frag:r}))}else l.logger.warn("Missing decryption data on fragment in onKeyLoading")},t.loadsuccess=function(e,t,r){var i=r.frag;i.decryptdata?(this.decryptkey=i.decryptdata.key=new Uint8Array(e.data),i.loader=null,delete this.loaders[i.type],this.hls.trigger(a.Events.KEY_LOADED,{frag:i})):l.logger.error("after key load, decryptdata unset")},t.loaderror=function(e,t){var r=t.frag,i=r.loader;i&&i.abort(),delete this.loaders[r.type],this.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.KEY_LOAD_ERROR,fatal:!1,frag:r,response:e})},t.loadtimeout=function(e,t){var r=t.frag,i=r.loader;i&&i.abort(),delete this.loaders[r.type],this.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.KEY_LOAD_TIMEOUT,fatal:!1,frag:r})},e}();function O(e,t){var r;try{r=new Event("addtrack")}catch(e){(r=document.createEvent("Event")).initEvent("addtrack",!1,!1)}r.track=e,t.dispatchEvent(r)}var M=r(181),N=r(856);function F(){return self.WebKitDataCue||self.VTTCue||self.TextTrackCue}var B=function(){var e=F();try{new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY}();function U(e,t){return e.getTime()/1e3-t}const G=function(){function e(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}var t=e.prototype;return t.destroy=function(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null},t._registerListeners=function(){var e=this.hls;e.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(a.Events.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(a.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(a.Events.LEVEL_UPDATED,this.onLevelUpdated,this)},t._unregisterListeners=function(){var e=this.hls;e.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(a.Events.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(a.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(a.Events.LEVEL_UPDATED,this.onLevelUpdated,this)},t.onMediaAttached=function(e,t){this.media=t.media},t.onMediaDetaching=function(){this.id3Track&&(function(e){var t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(var r=e.cues.length;r--;)e.removeCue(e.cues[r]);"disabled"===t&&(e.mode=t)}(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})},t.onManifestLoading=function(){this.dateRangeCuesAppended={}},t.createTrack=function(e){var t=this.getID3Track(e.textTracks);return t.mode="hidden",t},t.getID3Track=function(e){if(this.media){for(var t=0;t<e.length;t++){var r=e[t];if("metadata"===r.kind&&"id3"===r.label)return O(r,this.media),r}return this.media.addTextTrack("metadata","id3")}},t.onFragParsingMetadata=function(e,t){if(this.media){var r=this.hls.config,i=r.enableEmsgMetadataCues,n=r.enableID3MetadataCues;if(i||n){t.frag;var s=t.samples;t.details,this.id3Track||(this.id3Track=this.createTrack(this.media));for(var a=F(),o=0;o<s.length;o++){var l=s[o].type;if((l!==N.MetadataSchema.emsg||i)&&n){var h=M.getID3Frames(s[o].data);if(h){var d=s[o].pts,u=d+s[o].duration;u>B&&(u=B),u-d<=0&&(u=d+.25);for(var c=0;c<h.length;c++){var f=h[c];if(!M.isTimeStampFrame(f)){this.updateId3CueEnds(d);var g=new a(d,u,"");g.value=f,l&&(g.type=l),this.id3Track.addCue(g)}}}}}}}},t.updateId3CueEnds=function(e){var t,r=null===(t=this.id3Track)||void 0===t?void 0:t.cues;if(r)for(var i=r.length;i--;){var n=r[i];n.startTime<e&&n.endTime===B&&(n.endTime=e)}},t.onBufferFlushing=function(e,t){var r=t.startOffset,i=t.endOffset,n=t.type,s=this.id3Track,a=this.hls;if(a){var o=a.config,l=o.enableEmsgMetadataCues,h=o.enableID3MetadataCues;s&&(l||h)&&function(e,t,r,i){var n=e.mode;if("disabled"===n&&(e.mode="hidden"),e.cues&&e.cues.length>0)for(var s=function(e,t,r){var i=[],n=function(e,t){if(t<e[0].startTime)return 0;var r=e.length-1;if(t>e[r].endTime)return-1;for(var i=0,n=r;i<=n;){var s=Math.floor((n+i)/2);if(t<e[s].startTime)n=s-1;else{if(!(t>e[s].startTime&&i<r))return s;i=s+1}}return e[i].startTime-t<t-e[n].startTime?i:n}(e,t);if(n>-1)for(var s=n,a=e.length;s<a;s++){var o=e[s];if(o.startTime>=t&&o.endTime<=r)i.push(o);else if(o.startTime>r)return i}return i}(e.cues,t,r),a=0;a<s.length;a++)i&&!i(s[a])||e.removeCue(s[a]);"disabled"===n&&(e.mode=n)}(s,r,i,"audio"===n?function(e){return e.type===N.MetadataSchema.audioId3&&h}:"video"===n?function(e){return e.type===N.MetadataSchema.emsg&&l}:function(e){return e.type===N.MetadataSchema.audioId3&&h||e.type===N.MetadataSchema.emsg&&l})}},t.onLevelUpdated=function(e,t){var r=this,n=t.details;if(this.media&&n.hasProgramDateTime&&this.hls.config.enableDateRangeMetadataCues){var a=this.dateRangeCuesAppended,o=this.id3Track,l=n.dateRanges,h=Object.keys(l);if(o)for(var d=Object.keys(a).filter((function(e){return!h.includes(e)})),u=function(e){var t=d[e];Object.keys(a[t].cues).forEach((function(e){o.removeCue(a[t].cues[e])})),delete a[t]},c=d.length;c--;)u(c);var f=n.fragments[n.fragments.length-1];if(0!==h.length&&(0,s.isFiniteNumber)(null==f?void 0:f.programDateTime)){this.id3Track||(this.id3Track=this.createTrack(this.media));for(var g=f.programDateTime/1e3-f.start,p=F(),m=function(e){var t=h[e],n=l[t],s=a[t],o=(null==s?void 0:s.cues)||{},d=(null==s?void 0:s.durationKnown)||!1,u=U(n.startDate,g),c=B,f=n.endDate;if(f)c=U(f,g),d=!0;else if(n.endOnNext&&!d){var m=h.reduce((function(e,t){var r=l[t];return r.class===n.class&&r.id!==t&&r.startDate>n.startDate&&e.push(r),e}),[]).sort((function(e,t){return e.startDate.getTime()-t.startDate.getTime()}))[0];m&&(c=U(m.startDate,g),d=!0)}for(var v,y=Object.keys(n.attr),E=0;E<y.length;E++){var S=y[E];if(S!==i.ID&&S!==i.CLASS&&S!==i.START_DATE&&S!==i.DURATION&&S!==i.END_DATE&&S!==i.END_ON_NEXT){var b=o[S];if(b)d&&!s.durationKnown&&(b.endTime=c);else{var T=n.attr[S];b=new p(u,c,""),S!==i.SCTE35_OUT&&S!==i.SCTE35_IN||(v=T,T=Uint8Array.from(v.replace(/^0x/,"").replace(/([\da-fA-F]{2}) ?/g,"0x$1 ").replace(/ +$/,"").split(" ")).buffer),b.value={key:S,data:T},b.type=N.MetadataSchema.dateRange,r.id3Track.addCue(b),o[S]=b}}}a[t]={cues:o,dateRange:n,durationKnown:d}},v=0;v<h.length;v++)m(v)}}},e}();var $,H=function(){function e(e){var t=this;this.hls=void 0,this.config=void 0,this.media=null,this.levelDetails=null,this.currentTime=0,this.stallCount=0,this._latency=null,this.timeupdateHandler=function(){return t.timeupdate()},this.hls=e,this.config=e.config,this.registerListeners()}var t,r,i=e.prototype;return i.destroy=function(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null},i.registerListeners=function(){this.hls.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(a.Events.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(a.Events.ERROR,this.onError,this)},i.unregisterListeners=function(){this.hls.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached),this.hls.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching),this.hls.off(a.Events.MANIFEST_LOADING,this.onManifestLoading),this.hls.off(a.Events.LEVEL_UPDATED,this.onLevelUpdated),this.hls.off(a.Events.ERROR,this.onError)},i.onMediaAttached=function(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)},i.onMediaDetaching=function(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)},i.onManifestLoading=function(){this.levelDetails=null,this._latency=null,this.stallCount=0},i.onLevelUpdated=function(e,t){var r=t.details;this.levelDetails=r,r.advanced&&this.timeupdate(),!r.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)},i.onError=function(e,t){t.details===o.ErrorDetails.BUFFER_STALLED_ERROR&&(this.stallCount++,l.logger.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))},i.timeupdate=function(){var e=this.media,t=this.levelDetails;if(e&&t){this.currentTime=e.currentTime;var r=this.computeLatency();if(null!==r){this._latency=r;var i=this.config,n=i.lowLatencyMode,s=i.maxLiveSyncPlaybackRate;if(n&&1!==s){var a=this.targetLatency;if(null!==a){var o=r-a,l=o<Math.min(this.maxLatency,a+t.targetduration);if(t.live&&l&&o>.05&&this.forwardBufferLength>1){var h=Math.min(2,Math.max(1,s)),d=Math.round(2/(1+Math.exp(-.75*o-this.edgeStalled))*20)/20;e.playbackRate=Math.min(h,Math.max(1,d))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}}}}},i.estimateLiveEdge=function(){var e=this.levelDetails;return null===e?null:e.edge+e.age},i.computeLatency=function(){var e=this.estimateLiveEdge();return null===e?null:e-this.currentTime},t=e,(r=[{key:"latency",get:function(){return this._latency||0}},{key:"maxLatency",get:function(){var e=this.config,t=this.levelDetails;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}},{key:"targetLatency",get:function(){var e=this.levelDetails;if(null===e)return null;var t=e.holdBack,r=e.partHoldBack,i=e.targetduration,n=this.config,s=n.liveSyncDuration,a=n.liveSyncDurationCount,o=n.lowLatencyMode,l=this.hls.userConfig,h=o&&r||t;(l.liveSyncDuration||l.liveSyncDurationCount||0===h)&&(h=void 0!==s?s:a*i);var d=i;return h+Math.min(1*this.stallCount,d)}},{key:"liveSyncPosition",get:function(){var e=this.estimateLiveEdge(),t=this.targetLatency,r=this.levelDetails;if(null===e||null===t||null===r)return null;var i=r.edge,n=e-t-this.edgeStalled,s=i-r.totalduration,a=i-(this.config.lowLatencyMode&&r.partTarget||r.targetduration);return Math.min(Math.max(s,n),a)}},{key:"drift",get:function(){var e=this.levelDetails;return null===e?1:e.drift}},{key:"edgeStalled",get:function(){var e=this.levelDetails;if(null===e)return 0;var t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}},{key:"forwardBufferLength",get:function(){var e=this.media,t=this.levelDetails;if(!e||!t)return 0;var r=e.buffered.length;return(r?e.buffered.end(r-1):t.edge)-this.currentTime}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();!function(e){e.No="",e.Yes="YES",e.v2="v2"}($||($={}));var j=function(){function e(e,t,r){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=e,this.part=t,this.skip=r}return e.prototype.addDirectives=function(e){var t=new self.URL(e);return void 0!==this.msn&&t.searchParams.set("_HLS_msn",this.msn.toString()),void 0!==this.part&&t.searchParams.set("_HLS_part",this.part.toString()),this.skip&&t.searchParams.set("_HLS_skip",this.skip),t.toString()},e}(),W=function(){function e(e){this.attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.unknownCodecs=void 0,this.audioGroupIds=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.textGroupIds=void 0,this.url=void 0,this._urlId=0,this.url=[e.url],this.attrs=e.attrs,this.bitrate=e.bitrate,e.details&&(this.details=e.details),this.id=e.id||0,this.name=e.name,this.width=e.width||0,this.height=e.height||0,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.unknownCodecs=e.unknownCodecs,this.codecSet=[e.videoCodec,e.audioCodec].filter((function(e){return e})).join(",").replace(/\.[^.,]+/g,"")}var t,r;return t=e,(r=[{key:"maxBitrate",get:function(){return Math.max(this.realBitrate,this.bitrate)}},{key:"uri",get:function(){return this.url[this._urlId]||""}},{key:"urlId",get:function(){return this._urlId},set:function(e){var t=e%this.url.length;this._urlId!==t&&(this.details=void 0,this._urlId=t)}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();function V(){return V=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},V.apply(this,arguments)}function q(e,t,r){switch(t){case"audio":e.audioGroupIds||(e.audioGroupIds=[]),e.audioGroupIds.push(r);break;case"text":e.textGroupIds||(e.textGroupIds=[]),e.textGroupIds.push(r)}}function z(e){var t={};e.forEach((function(e){var r=e.groupId||"";e.id=t[r]=t[r]||0,t[r]++}))}function K(e,t){var r=t.startPTS;if((0,s.isFiniteNumber)(r)){var i,n=0;t.sn>e.sn?(n=r-e.start,i=e):(n=e.start-r,i=t),i.duration!==n&&(i.duration=n)}else t.sn>e.sn?e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration:t.start=Math.max(e.start-t.duration,0)}function Y(e,t,r,i,n,a){i-r<=0&&(l.logger.warn("Fragment should have a positive duration",t),i=r+t.duration,a=n+t.duration);var o=r,h=i,d=t.startPTS,u=t.endPTS;if((0,s.isFiniteNumber)(d)){var c=Math.abs(d-r);(0,s.isFiniteNumber)(t.deltaPTS)?t.deltaPTS=Math.max(c,t.deltaPTS):t.deltaPTS=c,o=Math.max(r,d),r=Math.min(r,d),n=Math.min(n,t.startDTS),h=Math.min(i,u),i=Math.max(i,u),a=Math.max(a,t.endDTS)}t.duration=i-r;var f=r-t.start;t.appendedPTS=i,t.start=t.startPTS=r,t.maxStartPTS=o,t.startDTS=n,t.endPTS=i,t.minEndPTS=h,t.endDTS=a;var g,p=t.sn;if(!e||p<e.startSN||p>e.endSN)return 0;var m=p-e.startSN,v=e.fragments;for(v[m]=t,g=m;g>0;g--)K(v[g],v[g-1]);for(g=m;g<v.length-1;g++)K(v[g],v[g+1]);return e.fragmentHint&&K(v[v.length-1],e.fragmentHint),e.PTSKnown=e.alignedSliding=!0,f}function X(e,t){var r=t.startSN+t.skippedSegments-e.startSN,i=e.fragments;r<0||r>=i.length||function(e,t){if(t){for(var r=e.fragments,i=e.skippedSegments;i<r.length;i++)r[i].start+=t;e.fragmentHint&&(e.fragmentHint.start+=t)}}(t,i[r].start)}var Q=function(){function e(e,t){this.hls=void 0,this.timer=-1,this.canLoad=!1,this.retryCount=0,this.log=void 0,this.warn=void 0,this.log=l.logger.log.bind(l.logger,t+":"),this.warn=l.logger.warn.bind(l.logger,t+":"),this.hls=e}var t=e.prototype;return t.destroy=function(){this.clearTimer(),this.hls=this.log=this.warn=null},t.onError=function(e,t){t.fatal&&t.type===o.ErrorTypes.NETWORK_ERROR&&this.clearTimer()},t.clearTimer=function(){clearTimeout(this.timer),this.timer=-1},t.startLoad=function(){this.canLoad=!0,this.retryCount=0,this.loadPlaylist()},t.stopLoad=function(){this.canLoad=!1,this.clearTimer()},t.switchParams=function(e,t){var r=null==t?void 0:t.renditionReports;if(r)for(var i=0;i<r.length;i++){var n=r[i],a=""+n.URI;if(a===e.slice(-a.length)){var o=parseInt(n["LAST-MSN"]),l=parseInt(n["LAST-PART"]);if(t&&this.hls.config.lowLatencyMode){var h=Math.min(t.age-t.partTarget,t.targetduration);void 0!==l&&h>t.partTarget&&(l+=1)}if((0,s.isFiniteNumber)(o))return new j(o,(0,s.isFiniteNumber)(l)?l:void 0,$.No)}}},t.loadPlaylist=function(e){},t.shouldLoadTrack=function(e){return this.canLoad&&e&&!!e.url&&(!e.details||e.details.live)},t.playlistLoaded=function(e,t,r){var i=this,n=t.details,a=t.stats,o=a.loading.end?Math.max(0,self.performance.now()-a.loading.end):0;if(n.advancedDateTime=Date.now()-o,n.live||null!=r&&r.live){if(n.reloaded(r),r&&this.log("live playlist "+e+" "+(n.advanced?"REFRESHED "+n.lastPartSn+"-"+n.lastPartIndex:"MISSED")),r&&n.fragments.length>0&&function(e,t){for(var r=null,i=e.fragments,n=i.length-1;n>=0;n--){var a=i[n].initSegment;if(a){r=a;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;var o,h,d,u,c,f=0;if(function(e,t,r){for(var i=t.skippedSegments,n=Math.max(e.startSN,t.startSN)-t.startSN,s=(e.fragmentHint?1:0)+(i?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,o=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,h=n;h<=s;h++){var d=l[a+h],u=o[h];i&&!u&&h<i&&(u=t.fragments[h]=d),d&&u&&r(d,u)}}(e,t,(function(e,i){e.relurl&&(f=e.cc-i.cc),(0,s.isFiniteNumber)(e.startPTS)&&(0,s.isFiniteNumber)(e.endPTS)&&(i.start=i.startPTS=e.startPTS,i.startDTS=e.startDTS,i.appendedPTS=e.appendedPTS,i.maxStartPTS=e.maxStartPTS,i.endPTS=e.endPTS,i.endDTS=e.endDTS,i.minEndPTS=e.minEndPTS,i.duration=e.endPTS-e.startPTS,i.duration&&(o=i),t.PTSKnown=t.alignedSliding=!0),i.elementaryStreams=e.elementaryStreams,i.loader=e.loader,i.stats=e.stats,i.urlId=e.urlId,e.initSegment&&(i.initSegment=e.initSegment,r=e.initSegment)})),r&&(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((function(e){var t;e.initSegment&&e.initSegment.relurl!==(null===(t=r)||void 0===t?void 0:t.relurl)||(e.initSegment=r)})),t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((function(e){return!e})),t.deltaUpdateFailed){l.logger.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(var p=t.skippedSegments;p--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=(h=e.dateRanges,d=t.dateRanges,u=t.recentlyRemovedDateranges,c=V({},h),u&&u.forEach((function(e){delete c[e]})),Object.keys(d).forEach((function(e){var t=new g(d[e].attr,c[e]);t.isValid?c[e]=t:l.logger.warn('Ignoring invalid Playlist Delta Update DATERANGE tag: "'+JSON.stringify(d[e].attr)+'"')})),c));var m=t.fragments;if(f){l.logger.warn("discontinuity sliding from playlist, take drift into account");for(var v=0;v<m.length;v++)m[v].cc+=f}t.skippedSegments&&(t.startCC=t.fragments[0].cc),function(e,t,r){if(e&&t)for(var i=0,n=0,s=e.length;n<=s;n++){var a=e[n],o=t[n+i];a&&o&&a.index===o.index&&a.fragment.sn===o.fragment.sn?(l=a,(h=o).elementaryStreams=l.elementaryStreams,h.stats=l.stats):i--}var l,h}(e.partList,t.partList),o?Y(t,o,o.startPTS,o.endPTS,o.startDTS,o.endDTS):X(e,t),m.length&&(t.totalduration=t.edge-m[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;var y=t.advancedDateTime;if(t.advanced&&y){var E=t.edge;t.driftStart||(t.driftStartTime=y,t.driftStart=E),t.driftEndTime=y,t.driftEnd=E}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}(r,n),!this.canLoad||!n.live)return;var h,d=void 0,u=void 0;if(n.canBlockReload&&n.endSN&&n.advanced){var c=this.hls.config.lowLatencyMode,f=n.lastPartSn,p=n.endSN,m=n.lastPartIndex,v=f===p;-1!==m?(d=v?p+1:f,u=v?c?0:m:m+1):d=p+1;var y=n.age,E=y+n.ageHeader,S=Math.min(E-n.partTarget,1.5*n.targetduration);if(S>0){if(r&&S>r.tuneInGoal)this.warn("CDN Tune-in goal increased from: "+r.tuneInGoal+" to: "+S+" with playlist age: "+n.age),S=0;else{var b=Math.floor(S/n.targetduration);d+=b,void 0!==u&&(u+=Math.round(S%n.targetduration/n.partTarget)),this.log("CDN Tune-in age: "+n.ageHeader+"s last advanced "+y.toFixed(2)+"s goal: "+S+" skip sn "+b+" to part "+u)}n.tuneInGoal=S}if(h=this.getDeliveryDirectives(n,t.deliveryDirectives,d,u),c||!v)return void this.loadPlaylist(h)}else h=this.getDeliveryDirectives(n,t.deliveryDirectives,d,u);var T=function(e,t){var r,i=1e3*e.levelTargetDuration,n=i/2,s=e.age,a=s>0&&s<3*i,o=t.loading.end-t.loading.start,l=e.availabilityDelay;if(!1===e.updated)if(a){var h=333*e.misses;r=Math.max(Math.min(n,2*o),h),e.availabilityDelay=(e.availabilityDelay||0)+r}else r=n;else a?(l=Math.min(l||i/2,s),e.availabilityDelay=l,r=l+i-s):r=i-o;return Math.round(r)}(n,a);void 0!==d&&n.canBlockReload&&(T-=n.partTarget||1),this.log("reload live playlist "+e+" in "+Math.round(T)+" ms"),this.timer=self.setTimeout((function(){return i.loadPlaylist(h)}),T)}else this.clearTimer()},t.getDeliveryDirectives=function(e,t,r,i){var n=function(e,t){var r=e.canSkipUntil,i=e.canSkipDateRanges,n=e.endSN;return r&&(void 0!==t?t-n:0)<r?i?$.v2:$.Yes:$.No}(e,r);return null!=t&&t.skip&&e.deltaUpdateFailed&&(r=t.msn,i=t.part,n=$.No),new j(r,i,n)},t.retryLoadingOrFail=function(e){var t,r=this,i=this.hls.config,n=this.retryCount<i.levelLoadingMaxRetry;if(n)if(this.retryCount++,e.details.indexOf("LoadTimeOut")>-1&&null!==(t=e.context)&&void 0!==t&&t.deliveryDirectives)this.warn("retry playlist loading #"+this.retryCount+' after "'+e.details+'"'),this.loadPlaylist();else{var s=Math.min(Math.pow(2,this.retryCount)*i.levelLoadingRetryDelay,i.levelLoadingMaxRetryTimeout);this.timer=self.setTimeout((function(){return r.loadPlaylist()}),s),this.warn("retry playlist loading #"+this.retryCount+" in "+s+' ms after "'+e.details+'"')}else this.warn('cannot recover from error "'+e.details+'"'),this.clearTimer(),e.fatal=!0;return n},e}();function J(){return J=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},J.apply(this,arguments)}function Z(e,t){return Z=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Z(e,t)}var ee,te=/chrome|firefox/.test(navigator.userAgent.toLowerCase()),re=function(e){var t,r;function i(t){var r;return(r=e.call(this,t,"[level-controller]")||this)._levels=[],r._firstLevel=-1,r._startLevel=void 0,r.currentLevelIndex=-1,r.manualLevelIndex=-1,r.onParsedComplete=void 0,r._registerListeners(),r}r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,Z(t,r);var n,s,l=i.prototype;return l._registerListeners=function(){var e=this.hls;e.on(a.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(a.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(a.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(a.Events.ERROR,this.onError,this)},l._unregisterListeners=function(){var e=this.hls;e.off(a.Events.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(a.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(a.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(a.Events.ERROR,this.onError,this)},l.destroy=function(){this._unregisterListeners(),this.manualLevelIndex=-1,this._levels.length=0,e.prototype.destroy.call(this)},l.startLoad=function(){this._levels.forEach((function(e){e.loadError=0})),e.prototype.startLoad.call(this)},l.onManifestLoaded=function(e,t){var r,i,n=[],s=[],l=[],h={},d=!1,u=!1,c=!1;if(t.levels.forEach((function(e){var t=e.attrs;d=d||!(!e.width||!e.height),u=u||!!e.videoCodec,c=c||!!e.audioCodec,te&&e.audioCodec&&-1!==e.audioCodec.indexOf("mp4a.40.34")&&(e.audioCodec=void 0);var r=e.bitrate+"-"+e.attrs.RESOLUTION+"-"+e.attrs.CODECS;(i=h[r])?i.url.push(e.url):(i=new W(e),h[r]=i,n.push(i)),t&&(t.AUDIO&&q(i,"audio",t.AUDIO),t.SUBTITLES&&q(i,"text",t.SUBTITLES))})),(d||u)&&c&&(n=n.filter((function(e){var t=e.videoCodec,r=e.width,i=e.height;return!!t||!(!r||!i)}))),n=n.filter((function(e){var t=e.audioCodec,r=e.videoCodec;return(!t||E(t,"audio"))&&(!r||E(r,"video"))})),t.audioTracks&&z(s=t.audioTracks.filter((function(e){return!e.audioCodec||E(e.audioCodec,"audio")}))),t.subtitles&&z(l=t.subtitles),n.length>0){r=n[0].bitrate,n.sort((function(e,t){return e.bitrate-t.bitrate})),this._levels=n;for(var f=0;f<n.length;f++)if(n[f].bitrate===r){this._firstLevel=f,this.log("manifest loaded, "+n.length+" level(s) found, first bitrate: "+r);break}var g=c&&!u,p={levels:n,audioTracks:s,subtitleTracks:l,firstLevel:this._firstLevel,stats:t.stats,audio:c,video:u,altAudio:!g&&s.some((function(e){return!!e.url}))};this.hls.trigger(a.Events.MANIFEST_PARSED,p),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}else this.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,reason:"no level with compatible codecs found in manifest"})},l.onError=function(t,r){var i;if(e.prototype.onError.call(this,t,r),!r.fatal){var n=r.context,s=this._levels[this.currentLevelIndex];if(n&&(n.type===R.PlaylistContextType.AUDIO_TRACK&&s.audioGroupIds&&n.groupId===s.audioGroupIds[s.urlId]||n.type===R.PlaylistContextType.SUBTITLE_TRACK&&s.textGroupIds&&n.groupId===s.textGroupIds[s.urlId]))this.redundantFailover(this.currentLevelIndex);else{var a,l=!1,h=!0;switch(r.details){case o.ErrorDetails.FRAG_LOAD_ERROR:case o.ErrorDetails.FRAG_LOAD_TIMEOUT:case o.ErrorDetails.KEY_LOAD_ERROR:case o.ErrorDetails.KEY_LOAD_TIMEOUT:if(r.frag){var d=r.frag.type===R.PlaylistLevelType.MAIN?r.frag.level:this.currentLevelIndex,u=this._levels[d];u?(u.fragmentError++,u.fragmentError>this.hls.config.fragLoadingMaxRetry&&(a=d)):a=d}break;case o.ErrorDetails.LEVEL_LOAD_ERROR:case o.ErrorDetails.LEVEL_LOAD_TIMEOUT:n&&(n.deliveryDirectives&&(h=!1),a=n.level),l=!0;break;case o.ErrorDetails.REMUX_ALLOC_ERROR:a=null!=(i=r.level)?i:this.currentLevelIndex,l=!0}void 0!==a&&this.recoverLevel(r,a,l,h)}}},l.recoverLevel=function(e,t,r,i){var n=e.details,s=this._levels[t];if(s.loadError++,r){if(!this.retryLoadingOrFail(e))return void(this.currentLevelIndex=-1);e.levelRetry=!0}if(i){var a=s.url.length;if(a>1&&s.loadError<a)e.levelRetry=!0,this.redundantFailover(t);else if(-1===this.manualLevelIndex){for(var o=-1,l=this._levels,h=l.length;h--;){var d=(h+this.currentLevelIndex)%l.length;if(d!==this.currentLevelIndex&&0===l[d].loadError){o=d;break}}o>-1&&this.currentLevelIndex!==o&&(this.warn(n+": switch to "+o),e.levelRetry=!0,this.hls.nextAutoLevel=o)}}},l.redundantFailover=function(e){var t=this._levels[e],r=t.url.length;if(r>1){var i=(t.urlId+1)%r;this.warn("Switching to redundant URL-id "+i),this._levels.forEach((function(e){e.urlId=i})),this.level=e}},l.onFragLoaded=function(e,t){var r=t.frag;if(void 0!==r&&r.type===R.PlaylistLevelType.MAIN){var i=this._levels[r.level];void 0!==i&&(i.fragmentError=0,i.loadError=0)}},l.onLevelLoaded=function(e,t){var r,i,n=t.level,s=t.details,a=this._levels[n];if(!a)return this.warn("Invalid level index "+n),void(null!==(i=t.deliveryDirectives)&&void 0!==i&&i.skip&&(s.deltaUpdateFailed=!0));n===this.currentLevelIndex?(0===a.fragmentError&&(a.loadError=0,this.retryCount=0),this.playlistLoaded(n,t,a.details)):null!==(r=t.deliveryDirectives)&&void 0!==r&&r.skip&&(s.deltaUpdateFailed=!0)},l.onAudioTrackSwitched=function(e,t){var r=this.hls.levels[this.currentLevelIndex];if(r&&r.audioGroupIds){for(var i=-1,n=this.hls.audioTracks[t.id].groupId,s=0;s<r.audioGroupIds.length;s++)if(r.audioGroupIds[s]===n){i=s;break}i!==r.urlId&&(r.urlId=i,this.startLoad())}},l.loadPlaylist=function(e){var t=this.currentLevelIndex,r=this._levels[t];if(this.canLoad&&r&&r.url.length>0){var i=r.urlId,n=r.url[i];if(e)try{n=e.addDirectives(n)}catch(e){this.warn("Could not construct new URL with HLS Delivery Directives: "+e)}this.log("Attempt loading level index "+t+(e?" at sn "+e.msn+" part "+e.part:"")+" with URL-id "+i+" "+n),this.clearTimer(),this.hls.trigger(a.Events.LEVEL_LOADING,{url:n,level:t,id:i,deliveryDirectives:e||null})}},l.removeLevel=function(e,t){var r=function(e,r){return r!==t},i=this._levels.filter((function(i,n){return n!==e||i.url.length>1&&void 0!==t&&(i.url=i.url.filter(r),i.audioGroupIds&&(i.audioGroupIds=i.audioGroupIds.filter(r)),i.textGroupIds&&(i.textGroupIds=i.textGroupIds.filter(r)),i.urlId=0,!0)})).map((function(e,t){var r=e.details;return null!=r&&r.fragments&&r.fragments.forEach((function(e){e.level=t})),e}));this._levels=i,this.hls.trigger(a.Events.LEVELS_UPDATED,{levels:i})},n=i,(s=[{key:"levels",get:function(){return 0===this._levels.length?null:this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(e){var t,r=this._levels;if(0!==r.length&&(this.currentLevelIndex!==e||null===(t=r[e])||void 0===t||!t.details)){if(e<0||e>=r.length){var i=e<0;if(this.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.OTHER_ERROR,details:o.ErrorDetails.LEVEL_SWITCH_ERROR,level:e,fatal:i,reason:"invalid level idx"}),i)return;e=Math.min(e,r.length-1)}this.clearTimer();var n=this.currentLevelIndex,s=r[n],l=r[e];this.log("switching to level "+e+" from "+n),this.currentLevelIndex=e;var h=J({},l,{level:e,maxBitrate:l.maxBitrate,uri:l.uri,urlId:l.urlId});delete h._urlId,this.hls.trigger(a.Events.LEVEL_SWITCHING,h);var d=l.details;if(!d||d.live){var u=this.switchParams(l.uri,null==s?void 0:s.details);this.loadPlaylist(u)}}}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var e=this.hls.config.startLevel;return void 0!==e?e:this._firstLevel}return this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(n.prototype,s),Object.defineProperty(n,"prototype",{writable:!1}),i}(Q);!function(e){e.NOT_LOADED="NOT_LOADED",e.APPENDING="APPENDING",e.PARTIAL="PARTIAL",e.OK="OK"}(ee||(ee={}));var ie=function(){function e(e){this.activeFragment=null,this.activeParts=null,this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hls=e,this._registerListeners()}var t=e.prototype;return t._registerListeners=function(){var e=this.hls;e.on(a.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.on(a.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(a.Events.FRAG_LOADED,this.onFragLoaded,this)},t._unregisterListeners=function(){var e=this.hls;e.off(a.Events.BUFFER_APPENDED,this.onBufferAppended,this),e.off(a.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(a.Events.FRAG_LOADED,this.onFragLoaded,this)},t.destroy=function(){this._unregisterListeners(),this.fragments=this.timeRanges=null},t.getAppendedFrag=function(e,t){if(t===R.PlaylistLevelType.MAIN){var r=this.activeFragment,i=this.activeParts;if(!r)return null;if(i)for(var n=i.length;n--;){var s=i[n],a=s?s.end:r.appendedPTS;if(s.start<=e&&void 0!==a&&e<=a)return n>9&&(this.activeParts=i.slice(n-9)),s}else if(r.start<=e&&void 0!==r.appendedPTS&&e<=r.appendedPTS)return r}return this.getBufferedFrag(e,t)},t.getBufferedFrag=function(e,t){for(var r=this.fragments,i=Object.keys(r),n=i.length;n--;){var s=r[i[n]];if((null==s?void 0:s.body.type)===t&&s.buffered){var a=s.body;if(a.start<=e&&e<=a.end)return a}}return null},t.detectEvictedFragments=function(e,t,r){var i=this;Object.keys(this.fragments).forEach((function(n){var s=i.fragments[n];if(s)if(s.buffered){var a=s.range[e];a&&a.time.some((function(e){var r=!i.isTimeBuffered(e.startPTS,e.endPTS,t);return r&&i.removeFragment(s.body),r}))}else s.body.type===r&&i.removeFragment(s.body)}))},t.detectPartialFragments=function(e){var t=this,r=this.timeRanges,i=e.frag,n=e.part;if(r&&"initSegment"!==i.sn){var s=se(i),a=this.fragments[s];a&&(Object.keys(r).forEach((function(e){var s=i.elementaryStreams[e];if(s){var o=r[e],l=null!==n||!0===s.partial;a.range[e]=t.getBufferedTimes(i,n,l,o)}})),a.loaded=null,Object.keys(a.range).length?a.buffered=!0:this.removeFragment(a.body))}},t.fragBuffered=function(e){var t=se(e),r=this.fragments[t];r&&(r.loaded=null,r.buffered=!0)},t.getBufferedTimes=function(e,t,r,i){for(var n={time:[],partial:r},s=t?t.start:e.start,a=t?t.end:e.end,o=e.minEndPTS||a,l=e.maxStartPTS||s,h=0;h<i.length;h++){var d=i.start(h)-this.bufferPadding,u=i.end(h)+this.bufferPadding;if(l>=d&&o<=u){n.time.push({startPTS:Math.max(s,i.start(h)),endPTS:Math.min(a,i.end(h))});break}if(s<u&&a>d)n.partial=!0,n.time.push({startPTS:Math.max(s,i.start(h)),endPTS:Math.min(a,i.end(h))});else if(a<=d)break}return n},t.getPartialFragment=function(e){var t,r,i,n=null,s=0,a=this.bufferPadding,o=this.fragments;return Object.keys(o).forEach((function(l){var h=o[l];h&&ne(h)&&(r=h.body.start-a,i=h.body.end+a,e>=r&&e<=i&&(t=Math.min(e-r,i-e),s<=t&&(n=h.body,s=t)))})),n},t.getState=function(e){var t=se(e),r=this.fragments[t];return r?r.buffered?ne(r)?ee.PARTIAL:ee.OK:ee.APPENDING:ee.NOT_LOADED},t.isTimeBuffered=function(e,t,r){for(var i,n,s=0;s<r.length;s++){if(i=r.start(s)-this.bufferPadding,n=r.end(s)+this.bufferPadding,e>=i&&t<=n)return!0;if(t<=i)return!1}return!1},t.onFragLoaded=function(e,t){var r=t.frag,i=t.part;if("initSegment"!==r.sn&&!r.bitrateTest&&!i){var n=se(r);this.fragments[n]={body:r,loaded:t,buffered:!1,range:Object.create(null)}}},t.onBufferAppended=function(e,t){var r=this,i=t.frag,n=t.part,s=t.timeRanges;if(i.type===R.PlaylistLevelType.MAIN)if(this.activeFragment=i,n){var a=this.activeParts;a||(this.activeParts=a=[]),a.push(n)}else this.activeParts=null;this.timeRanges=s,Object.keys(s).forEach((function(e){var t=s[e];if(r.detectEvictedFragments(e,t),!n)for(var a=0;a<t.length;a++)i.appendedPTS=Math.max(t.end(a),i.appendedPTS||0)}))},t.onFragBuffered=function(e,t){this.detectPartialFragments(t)},t.hasFragment=function(e){var t=se(e);return!!this.fragments[t]},t.removeFragmentsInRange=function(e,t,r){var i=this;Object.keys(this.fragments).forEach((function(n){var s=i.fragments[n];if(s&&s.buffered){var a=s.body;a.type===r&&a.start<t&&a.end>e&&i.removeFragment(a)}}))},t.removeFragment=function(e){var t=se(e);e.stats.loaded=0,e.clearElementaryStreamInfo(),delete this.fragments[t]},t.removeAllFragments=function(){this.fragments=Object.create(null),this.activeFragment=null,this.activeParts=null},e}();function ne(e){var t,r;return e.buffered&&((null===(t=e.range.video)||void 0===t?void 0:t.partial)||(null===(r=e.range.audio)||void 0===r?void 0:r.partial))}function se(e){return e.type+"_"+e.level+"_"+e.urlId+"_"+e.sn}var ae=function(){function e(){this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}var t=e.prototype;return t.destroy=function(){this.onHandlerDestroying(),this.onHandlerDestroyed()},t.onHandlerDestroying=function(){this.clearNextTick(),this.clearInterval()},t.onHandlerDestroyed=function(){},t.hasInterval=function(){return!!this._tickInterval},t.hasNextTick=function(){return!!this._tickTimer},t.setInterval=function(e){return!this._tickInterval&&(this._tickInterval=self.setInterval(this._boundTick,e),!0)},t.clearInterval=function(){return!!this._tickInterval&&(self.clearInterval(this._tickInterval),this._tickInterval=null,!0)},t.clearNextTick=function(){return!!this._tickTimer&&(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0)},t.tick=function(){this._tickCallCount++,1===this._tickCallCount&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)},t.tickImmediate=function(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)},t.doTick=function(){},e}(),oe={length:0,start:function(){return 0},end:function(){return 0}},le=function(){function e(){}return e.isBuffered=function(t,r){try{if(t)for(var i=e.getBuffered(t),n=0;n<i.length;n++)if(r>=i.start(n)&&r<=i.end(n))return!0}catch(e){}return!1},e.bufferInfo=function(t,r,i){try{if(t){var n,s=e.getBuffered(t),a=[];for(n=0;n<s.length;n++)a.push({start:s.start(n),end:s.end(n)});return this.bufferedInfo(a,r,i)}}catch(e){}return{len:0,start:r,end:r,nextStart:void 0}},e.bufferedInfo=function(e,t,r){t=Math.max(0,t),e.sort((function(e,t){return e.start-t.start||t.end-e.end}));var i=[];if(r)for(var n=0;n<e.length;n++){var s=i.length;if(s){var a=i[s-1].end;e[n].start-a<r?e[n].end>a&&(i[s-1].end=e[n].end):i.push(e[n])}else i.push(e[n])}else i=e;for(var o,l=0,h=t,d=t,u=0;u<i.length;u++){var c=i[u].start,f=i[u].end;if(t+r>=c&&t<f)h=c,l=(d=f)-t;else if(t+r<c){o=c;break}}return{len:l,start:h||0,end:d||0,nextStart:o}},e.getBuffered=function(e){try{return e.buffered}catch(e){return l.logger.log("failed to get media.buffered",e),oe}},e}(),he=function(e,t,r,i,n,s){void 0===i&&(i=0),void 0===n&&(n=-1),void 0===s&&(s=!1),this.level=void 0,this.sn=void 0,this.part=void 0,this.id=void 0,this.size=void 0,this.partial=void 0,this.transmuxing={start:0,executeStart:0,executeEnd:0,end:0},this.buffering={audio:{start:0,executeStart:0,executeEnd:0,end:0},video:{start:0,executeStart:0,executeEnd:0,end:0},audiovideo:{start:0,executeStart:0,executeEnd:0,end:0}},this.level=e,this.sn=t,this.id=r,this.size=i,this.part=n,this.partial=s};function de(e,t){if(e){var r=e.start+t;e.start=e.startPTS=r,e.endPTS=r+e.duration}}function ue(e,t){for(var r=t.fragments,i=0,n=r.length;i<n;i++)de(r[i],e);t.fragmentHint&&de(t.fragmentHint,e),t.alignedSliding=!0}const ce=function(e,t){for(var r=0,i=e.length-1,n=null,s=null;r<=i;){var a=t(s=e[n=(r+i)/2|0]);if(a>0)r=n+1;else{if(!(a<0))return s;i=n-1}}return null};function fe(e,t,r){void 0===e&&(e=0),void 0===t&&(t=0);var i=Math.min(t,r.duration+(r.deltaPTS?r.deltaPTS:0));return r.start+r.duration-i<=e?1:r.start-i>e&&r.start?-1:0}function ge(e,t,r){var i=1e3*Math.min(t,r.duration+(r.deltaPTS?r.deltaPTS:0));return(r.endProgramDateTime||0)-i>e}function pe(e){var t="function"==typeof Map?new Map:void 0;return pe=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return me(e,arguments,Ee(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),ye(i,e)},pe(e)}function me(e,t,r){return me=ve()?Reflect.construct.bind():function(e,t,r){var i=[null];i.push.apply(i,t);var n=new(Function.bind.apply(e,i));return r&&ye(n,r.prototype),n},me.apply(null,arguments)}function ve(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function ye(e,t){return ye=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ye(e,t)}function Ee(e){return Ee=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Ee(e)}var Se=Math.pow(2,17),be=function(){function e(e){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=e}var t=e.prototype;return t.destroy=function(){this.loader&&(this.loader.destroy(),this.loader=null)},t.abort=function(){this.loader&&this.loader.abort()},t.load=function(e,t){var r=this,i=e.url;if(!i)return Promise.reject(new _e({type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,networkDetails:null},"Fragment does not have a "+(i?"part list":"url")));this.abort();var n=this.config,s=n.fLoader,a=n.loader;return new Promise((function(i,l){r.loader&&r.loader.destroy();var h=r.loader=e.loader=s?new s(n):new a(n),d=Te(e),u={timeout:n.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:n.fragLoadingMaxRetryTimeout,highWaterMark:"initSegment"===e.sn?1/0:Se};e.stats=h.stats,h.load(d,u,{onSuccess:function(t,n,s,a){r.resetLoader(e,h),i({frag:e,part:null,payload:t.data,networkDetails:a})},onError:function(t,i,n){r.resetLoader(e,h),l(new _e({type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:t,networkDetails:n}))},onAbort:function(t,i,n){r.resetLoader(e,h),l(new _e({type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,networkDetails:n}))},onTimeout:function(t,i,n){r.resetLoader(e,h),l(new _e({type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,networkDetails:n}))},onProgress:function(r,i,n,s){t&&t({frag:e,part:null,payload:n,networkDetails:s})}})}))},t.loadPart=function(e,t,r){var i=this;this.abort();var n=this.config,s=n.fLoader,a=n.loader;return new Promise((function(l,h){i.loader&&i.loader.destroy();var d=i.loader=e.loader=s?new s(n):new a(n),u=Te(e,t),c={timeout:n.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:n.fragLoadingMaxRetryTimeout,highWaterMark:Se};t.stats=d.stats,d.load(u,c,{onSuccess:function(n,s,a,o){i.resetLoader(e,d),i.updateStatsFromPart(e,t);var h={frag:e,part:t,payload:n.data,networkDetails:o};r(h),l(h)},onError:function(r,n,s){i.resetLoader(e,d),h(new _e({type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:r,networkDetails:s}))},onAbort:function(r,n,s){e.stats.aborted=t.stats.aborted,i.resetLoader(e,d),h(new _e({type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,networkDetails:s}))},onTimeout:function(r,n,s){i.resetLoader(e,d),h(new _e({type:o.ErrorTypes.NETWORK_ERROR,details:o.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,networkDetails:s}))}})}))},t.updateStatsFromPart=function(e,t){var r=e.stats,i=t.stats,n=i.total;if(r.loaded+=i.loaded,n){var s=Math.round(e.duration/t.duration),a=Math.min(Math.round(r.loaded/n),s),o=(s-a)*Math.round(r.loaded/a);r.total=r.loaded+o}else r.total=Math.max(r.loaded,r.total);var l=r.loading,h=i.loading;l.start?l.first+=h.first-h.start:(l.start=h.start,l.first=h.first),l.end=h.end},t.resetLoader=function(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()},e}();function Te(e,t){void 0===t&&(t=null);var r=t||e,i={frag:e,part:t,responseType:"arraybuffer",url:r.url,headers:{},rangeStart:0,rangeEnd:0},n=r.byteRangeStartOffset,a=r.byteRangeEndOffset;return(0,s.isFiniteNumber)(n)&&(0,s.isFiniteNumber)(a)&&(i.rangeStart=n,i.rangeEnd=a),i}var _e=function(e){var t,r;function i(t){for(var r,i=arguments.length,n=new Array(i>1?i-1:0),s=1;s<i;s++)n[s-1]=arguments[s];return(r=e.call.apply(e,[this].concat(n))||this).data=void 0,r.data=t,r}return r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,ye(t,r),i}(pe(Error)),Le=r(21);function we(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Pe(e,t){return Pe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Pe(e,t)}var Ae="STOPPED",De="IDLE",Ie="KEY_LOADING",Re="FRAG_LOADING",Ce="FRAG_LOADING_WAITING_RETRY",ke="PARSING",xe="PARSED",Oe="ENDED",Me="ERROR",Ne="WAITING_LEVEL",Fe=function(e){var t,r;function i(t,r,i){var n;return(n=e.call(this)||this).hls=void 0,n.fragPrevious=null,n.fragCurrent=null,n.fragmentTracker=void 0,n.transmuxer=null,n._state=Ae,n.media=null,n.mediaBuffer=null,n.config=void 0,n.bitrateTest=!1,n.lastCurrentTime=0,n.nextLoadPosition=0,n.startPosition=0,n.loadedmetadata=!1,n.fragLoadError=0,n.retryDate=0,n.levels=null,n.fragmentLoader=void 0,n.levelLastLoaded=null,n.startFragRequested=!1,n.decrypter=void 0,n.initPTS=[],n.onvseeking=null,n.onvended=null,n.logPrefix="",n.log=void 0,n.warn=void 0,n.logPrefix=i,n.log=l.logger.log.bind(l.logger,i+":"),n.warn=l.logger.warn.bind(l.logger,i+":"),n.hls=t,n.fragmentLoader=new be(t.config),n.fragmentTracker=r,n.config=t.config,n.decrypter=new Le.default(t,t.config),t.on(a.Events.KEY_LOADED,n.onKeyLoaded,we(n)),t.on(a.Events.LEVEL_SWITCHING,n.onLevelSwitching,we(n)),n}r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,Pe(t,r);var n,d,u=i.prototype;return u.doTick=function(){this.onTickEnd()},u.onTickEnd=function(){},u.startLoad=function(e){},u.stopLoad=function(){this.fragmentLoader.abort();var e=this.fragCurrent;e&&this.fragmentTracker.removeFragment(e),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=Ae},u._streamEnded=function(e,t){var r=this.fragCurrent,i=this.fragmentTracker;if(!t.live&&r&&this.media&&r.sn>=t.endSN&&!e.nextStart){var n=t.partList;if(null!=n&&n.length){var s=n[n.length-1];return le.isBuffered(this.media,s.start+s.duration/2)}var a=i.getState(r);return a===ee.PARTIAL||a===ee.OK}return!1},u.onMediaAttached=function(e,t){var r=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),r.addEventListener("seeking",this.onvseeking),r.addEventListener("ended",this.onvended);var i=this.config;this.levels&&i.autoStartLoad&&this.state===Ae&&this.startLoad(i.startPosition)},u.onMediaDetaching=function(){var e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()},u.onMediaSeeking=function(){var e=this.config,t=this.fragCurrent,r=this.media,i=this.mediaBuffer,n=this.state,a=r?r.currentTime:0,o=le.bufferInfo(i||r,a,e.maxBufferHole);if(this.log("media seeking to "+((0,s.isFiniteNumber)(a)?a.toFixed(3):a)+", state: "+n),n===Oe)this.resetLoadingState();else if(t){var l=e.maxFragLookUpTolerance,h=t.start-l,d=t.start+t.duration+l;if(!o.len||d<o.start||h>o.end){var u=a>d;(a<h||u)&&(u&&t.loader&&(this.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),t.loader.abort()),this.resetLoadingState())}}r&&(this.lastCurrentTime=a),this.loadedmetadata||o.len||(this.nextLoadPosition=this.startPosition=a),this.tickImmediate()},u.onMediaEnded=function(){this.startPosition=this.lastCurrentTime=0},u.onKeyLoaded=function(e,t){if(this.state===Ie&&t.frag===this.fragCurrent&&this.levels){this.state=De;var r=this.levels[t.frag.level].details;r&&this.loadFragment(t.frag,r,t.frag.start)}},u.onLevelSwitching=function(e,t){this.fragLoadError=0},u.onHandlerDestroying=function(){this.stopLoad(),e.prototype.onHandlerDestroying.call(this)},u.onHandlerDestroyed=function(){this.state=Ae,this.hls.off(a.Events.KEY_LOADED,this.onKeyLoaded,this),this.hls.off(a.Events.LEVEL_SWITCHING,this.onLevelSwitching,this),this.fragmentLoader&&this.fragmentLoader.destroy(),this.decrypter&&this.decrypter.destroy(),this.hls=this.log=this.warn=this.decrypter=this.fragmentLoader=this.fragmentTracker=null,e.prototype.onHandlerDestroyed.call(this)},u.loadKey=function(e,t){this.log("Loading key for "+e.sn+" of ["+t.startSN+"-"+t.endSN+"], "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level),this.state=Ie,this.fragCurrent=e,this.hls.trigger(a.Events.KEY_LOADING,{frag:e})},u.loadFragment=function(e,t,r){this._loadFragForPlayback(e,t,r)},u._loadFragForPlayback=function(e,t,r){var i=this;this._doFragLoad(e,t,r,(function(t){if(i.fragContextChanged(e))return i.warn("Fragment "+e.sn+(t.part?" p: "+t.part.index:"")+" of level "+e.level+" was dropped during download."),void i.fragmentTracker.removeFragment(e);e.stats.chunkCount++,i._handleFragmentLoadProgress(t)})).then((function(t){if(t){i.fragLoadError=0;var r=i.state;i.fragContextChanged(e)?(r===Re||!i.fragCurrent&&r===ke)&&(i.fragmentTracker.removeFragment(e),i.state=De):("payload"in t&&(i.log("Loaded fragment "+e.sn+" of level "+e.level),i.hls.trigger(a.Events.FRAG_LOADED,t)),i._handleFragmentLoadComplete(t))}})).catch((function(t){i.state!==Ae&&i.state!==Me&&(i.warn(t),i.resetFragmentLoading(e))}))},u.flushMainBuffer=function(e,t,r){if(void 0===r&&(r=null),e-t){var i={startOffset:e,endOffset:t,type:r};this.fragLoadError=0,this.hls.trigger(a.Events.BUFFER_FLUSHING,i)}},u._loadInitSegment=function(e){var t=this;this._doFragLoad(e).then((function(r){if(!r||t.fragContextChanged(e)||!t.levels)throw new Error("init load aborted");return r})).then((function(r){var i=t.hls,n=r.payload,s=e.decryptdata;if(n&&n.byteLength>0&&s&&s.key&&s.iv&&"AES-128"===s.method){var o=self.performance.now();return t.decrypter.webCryptoDecrypt(new Uint8Array(n),s.key.buffer,s.iv.buffer).then((function(t){var n=self.performance.now();return i.trigger(a.Events.FRAG_DECRYPTED,{frag:e,payload:t,stats:{tstart:o,tdecrypt:n}}),r.payload=t,r}))}return r})).then((function(r){var i=t.fragCurrent,n=t.hls,s=t.levels;if(!s)throw new Error("init load aborted, missing levels");s[e.level].details;var o=e.stats;t.state=De,t.fragLoadError=0,e.data=new Uint8Array(r.payload),o.parsing.start=o.buffering.start=self.performance.now(),o.parsing.end=o.buffering.end=self.performance.now(),r.frag===i&&n.trigger(a.Events.FRAG_BUFFERED,{stats:o,frag:i,part:null,id:e.type}),t.tick()})).catch((function(r){t.state!==Ae&&t.state!==Me&&(t.warn(r),t.resetFragmentLoading(e))}))},u.fragContextChanged=function(e){var t=this.fragCurrent;return!e||!t||e.level!==t.level||e.sn!==t.sn||e.urlId!==t.urlId},u.fragBufferedComplete=function(e,t){var r,i,n=this.mediaBuffer?this.mediaBuffer:this.media;this.log("Buffered "+e.type+" sn: "+e.sn+(t?" part: "+t.index:"")+" of "+("[stream-controller]"===this.logPrefix?"level":"track")+" "+e.level+" "+(n?function(e){for(var t="",r=e.length,i=0;i<r;i++)t+="["+e.start(i).toFixed(3)+","+e.end(i).toFixed(3)+"]";return t}(le.getBuffered(n)):"(detached)")),this.state=De,n&&(!this.loadedmetadata&&e.type==R.PlaylistLevelType.MAIN&&n.buffered.length&&(null===(r=this.fragCurrent)||void 0===r?void 0:r.sn)===(null===(i=this.fragPrevious)||void 0===i?void 0:i.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())},u.seekToStartPos=function(){},u._handleFragmentLoadComplete=function(e){var t=this.transmuxer;if(t){var r=e.frag,i=e.part,n=e.partsLoaded,s=!n||0===n.length||n.some((function(e){return!e})),a=new he(r.level,r.sn,r.stats.chunkCount+1,0,i?i.index:-1,!s);t.flush(a)}},u._handleFragmentLoadProgress=function(e){},u._doFragLoad=function(e,t,r,i){var n=this;if(void 0===r&&(r=null),!this.levels)throw new Error("frag load aborted, missing levels");if(r=Math.max(e.start,r||0),this.config.lowLatencyMode&&t){var o=t.partList;if(o&&i){r>e.end&&t.fragmentHint&&(e=t.fragmentHint);var l=this.getNextPart(o,e,r);if(l>-1){var h=o[l];return this.log("Loading part sn: "+e.sn+" p: "+h.index+" cc: "+e.cc+" of playlist ["+t.startSN+"-"+t.endSN+"] parts [0-"+l+"-"+(o.length-1)+"] "+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(r.toFixed(3))),this.nextLoadPosition=h.start+h.duration,this.state=Re,this.hls.trigger(a.Events.FRAG_LOADING,{frag:e,part:o[l],targetBufferTime:r}),this.doFragPartsLoad(e,o,l,i).catch((function(e){return n.handleFragLoadError(e)}))}if(!e.url||this.loadedEndOfParts(o,r))return Promise.resolve(null)}}return this.log("Loading fragment "+e.sn+" cc: "+e.cc+" "+(t?"of ["+t.startSN+"-"+t.endSN+"] ":"")+("[stream-controller]"===this.logPrefix?"level":"track")+": "+e.level+", target: "+parseFloat(r.toFixed(3))),(0,s.isFiniteNumber)(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=Re,this.hls.trigger(a.Events.FRAG_LOADING,{frag:e,targetBufferTime:r}),this.fragmentLoader.load(e,i).catch((function(e){return n.handleFragLoadError(e)}))},u.doFragPartsLoad=function(e,t,r,i){var n=this;return new Promise((function(s,o){var l=[];!function r(h){var d=t[h];n.fragmentLoader.loadPart(e,d,i).then((function(i){l[d.index]=i;var o=i.part;n.hls.trigger(a.Events.FRAG_LOADED,i);var u=t[h+1];if(!u||u.fragment!==e)return s({frag:e,part:o,partsLoaded:l});r(h+1)})).catch(o)}(r)}))},u.handleFragLoadError=function(e){var t=e.data;return t&&t.details===o.ErrorDetails.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(a.Events.ERROR,t),null},u._handleTransmuxerFlush=function(e){var t=this.getCurrentContext(e);if(t&&this.state===ke){var r=t.frag,i=t.part,n=t.level,s=self.performance.now();r.stats.parsing.end=s,i&&(i.stats.parsing.end=s),this.updateLevelTiming(r,i,n,e.partial)}else this.fragCurrent||(this.state=De)},u.getCurrentContext=function(e){var t=this.levels,r=e.level,i=e.sn,n=e.part;if(!t||!t[r])return this.warn("Levels object was unset while buffering fragment "+i+" of level "+r+". The current chunk will not be buffered."),null;var s=t[r],a=n>-1?function(e,t,r){if(!e||!e.details)return null;var i=e.details.partList;if(i)for(var n=i.length;n--;){var s=i[n];if(s.index===r&&s.fragment.sn===t)return s}return null}(s,i,n):null,o=a?a.fragment:function(e,t,r){if(!e||!e.details)return null;var i=e.details,n=i.fragments[t-i.startSN];return n||((n=i.fragmentHint)&&n.sn===t?n:t<i.startSN&&r&&r.sn===t?r:null)}(s,i,this.fragCurrent);return o?{frag:o,part:a,level:s}:null},u.bufferFragmentData=function(e,t,r,i){if(e&&this.state===ke){var n=e.data1,s=e.data2,o=n;if(n&&s&&(o=(0,h.appendUint8Array)(n,s)),o&&o.length){var l={type:e.type,frag:t,part:r,chunkMeta:i,parent:t.type,data:o};this.hls.trigger(a.Events.BUFFER_APPENDING,l),e.dropped&&e.independent&&!r&&this.flushBufferGap(t)}}},u.flushBufferGap=function(e){var t=this.media;if(t)if(le.isBuffered(t,t.currentTime)){var r=t.currentTime,i=le.bufferInfo(t,r,0),n=e.duration,s=Math.min(2*this.config.maxFragLookUpTolerance,.25*n),a=Math.max(Math.min(e.start-s,i.end-s),r+s);e.start-a>s&&this.flushMainBuffer(a,e.start)}else this.flushMainBuffer(0,e.start)},u.getFwdBufferInfo=function(e,t){var r=this.config,i=this.getLoadPosition();if(!(0,s.isFiniteNumber)(i))return null;var n=le.bufferInfo(e,i,r.maxBufferHole);if(0===n.len&&void 0!==n.nextStart){var a=this.fragmentTracker.getBufferedFrag(i,t);if(a&&n.nextStart<a.end)return le.bufferInfo(e,i,Math.max(n.nextStart,r.maxBufferHole))}return n},u.getMaxBufferLength=function(e){var t,r=this.config;return t=e?Math.max(8*r.maxBufferSize/e,r.maxBufferLength):r.maxBufferLength,Math.min(t,r.maxMaxBufferLength)},u.reduceMaxBufferLength=function(e){var t=this.config,r=e||t.maxBufferLength;return t.maxMaxBufferLength>=r&&(t.maxMaxBufferLength/=2,this.warn("Reduce max buffer length to "+t.maxMaxBufferLength+"s"),!0)},u.getNextFragment=function(e,t){var r=t.fragments,i=r.length;if(!i)return null;var n,s=this.config,a=r[0].start;if(t.live){var o=s.initialLiveManifestSize;if(i<o)return this.warn("Not enough fragments to start playback (have: "+i+", need: "+o+")"),null;t.PTSKnown||this.startFragRequested||-1!==this.startPosition||(n=this.getInitialLiveFragment(t,r),this.startPosition=n?this.hls.liveSyncPosition||n.start:e)}else e<=a&&(n=r[0]);if(!n){var l=s.lowLatencyMode?t.partEnd:t.fragmentEnd;n=this.getFragmentAtPosition(e,l,t)}return this.mapToInitFragWhenRequired(n)},u.mapToInitFragWhenRequired=function(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment},u.getNextPart=function(e,t,r){for(var i=-1,n=!1,s=!0,a=0,o=e.length;a<o;a++){var l=e[a];if(s=s&&!l.independent,i>-1&&r<l.start)break;var h=l.loaded;!h&&(n||l.independent||s)&&l.fragment===t&&(i=a),n=h}return i},u.loadedEndOfParts=function(e,t){var r=e[e.length-1];return r&&t>r.start&&r.loaded},u.getInitialLiveFragment=function(e,t){var r=this.fragPrevious,i=null;if(r){if(e.hasProgramDateTime&&(this.log("Live playlist, switching playlist, load frag with same PDT: "+r.programDateTime),i=function(e,t,r){if(null===t||!Array.isArray(e)||!e.length||!(0,s.isFiniteNumber)(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;r=r||0;for(var i=0;i<e.length;++i){var n=e[i];if(ge(t,r,n))return n}return null}(t,r.endProgramDateTime,this.config.maxFragLookUpTolerance)),!i){var n=r.sn+1;if(n>=e.startSN&&n<=e.endSN){var a=t[n-e.startSN];r.cc===a.cc&&(i=a,this.log("Live playlist, switching playlist, load frag with next SN: "+i.sn))}i||(i=function(e,t){return ce(e,(function(e){return e.cc<t?1:e.cc>t?-1:0}))}(t,r.cc),i&&this.log("Live playlist, switching playlist, load frag with same CC: "+i.sn))}}else{var o=this.hls.liveSyncPosition;null!==o&&(i=this.getFragmentAtPosition(o,this.bitrateTest?e.fragmentEnd:e.edge,e))}return i},u.getFragmentAtPosition=function(e,t,r){var i,n=this.config,s=this.fragPrevious,a=r.fragments,o=r.endSN,l=r.fragmentHint,h=n.maxFragLookUpTolerance,d=!!(n.lowLatencyMode&&r.partList&&l);if(d&&l&&!this.bitrateTest&&(a=a.concat(l),o=l.sn),i=e<t?function(e,t,r,i){void 0===r&&(r=0),void 0===i&&(i=0);var n=null;return e?n=t[e.sn-t[0].sn+1]||null:0===r&&0===t[0].start&&(n=t[0]),n&&0===fe(r,i,n)?n:ce(t,fe.bind(null,r,i))||n}(s,a,e,e>t-h?0:h):a[a.length-1],i){var u=i.sn-r.startSN;if(this.fragmentTracker.getState(i)===ee.OK&&(s=i),s&&i.sn===s.sn&&!d&&s&&i.level===s.level){var c=a[u+1];i.sn<o&&this.fragmentTracker.getState(c)!==ee.OK?(this.log("SN "+i.sn+" just loaded, load next one: "+c.sn),i=c):i=null}}return i},u.synchronizeToLiveEdge=function(e){var t=this.config,r=this.media;if(r){var i=this.hls.liveSyncPosition,n=r.currentTime,s=e.fragments[0].start,a=e.edge,o=n>=s-t.maxFragLookUpTolerance&&n<=a;if(null!==i&&r.duration>i&&(n<i||!o)){var l=void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:t.liveMaxLatencyDurationCount*e.targetduration;(!o&&r.readyState<4||n<a-l)&&(this.loadedmetadata||(this.nextLoadPosition=i),r.readyState&&(this.warn("Playback: "+n.toFixed(3)+" is located too far from the end of live sliding playlist: "+a+", reset currentTime to : "+i.toFixed(3)),r.currentTime=i))}}},u.alignPlaylists=function(e,t){var r=this.levels,i=this.levelLastLoaded,n=this.fragPrevious,a=null!==i?r[i]:null,o=e.fragments.length;if(!o)return this.warn("No fragments in live playlist"),0;var h=e.fragments[0].start,d=!t,u=e.alignedSliding&&(0,s.isFiniteNumber)(h);if(d||!u&&!h){!function(e,t,r){t&&(function(e,t,r){if(function(e,t,r){return!(!t.details||!(r.endCC>r.startCC||e&&e.cc<r.startCC))}(e,r,t)){var i=function(e,t,r){void 0===r&&(r=0);var i=e.fragments,n=t.fragments;if(n.length&&i.length){var s=function(e,t){for(var r=null,i=0,n=e.length;i<n;i++){var s=e[i];if(s&&s.cc===t){r=s;break}}return r}(i,n[0].cc);if(s&&(!s||s.startPTS))return s;l.logger.log("No frag in previous level to align on")}else l.logger.log("No fragments to align")}(r.details,t);i&&(0,s.isFiniteNumber)(i.start)&&(l.logger.log("Adjusting PTS using last level due to CC increase within current level "+t.url),ue(i.start,t))}}(e,r,t),!r.alignedSliding&&t.details&&function(e,t){if(t.fragments.length&&e.hasProgramDateTime&&t.hasProgramDateTime){var r=t.fragments[0].programDateTime,i=e.fragments[0].programDateTime,n=(i-r)/1e3+t.fragments[0].start;n&&(0,s.isFiniteNumber)(n)&&(l.logger.log("Adjusting PTS using programDateTime delta "+(i-r)+"ms, sliding:"+n.toFixed(3)+" "+e.url+" "),ue(n,e))}}(r,t.details),r.alignedSliding||!t.details||r.skippedSegments||X(t.details,r))}(n,a,e);var c=e.fragments[0].start;return this.log("Live playlist sliding: "+c.toFixed(2)+" start-sn: "+(t?t.startSN:"na")+"->"+e.startSN+" prev-sn: "+(n?n.sn:"na")+" fragments: "+o),c}return h},u.waitForCdnTuneIn=function(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)},u.setStartPosition=function(e,t){var r=this.startPosition;if(r<t&&(r=-1),-1===r||-1===this.lastCurrentTime){var i=e.startTimeOffset;(0,s.isFiniteNumber)(i)?(r=t+i,i<0&&(r+=e.totalduration),r=Math.min(Math.max(t,r),t+e.totalduration),this.log("Start time offset "+i+" found in playlist, adjust startPosition to "+r),this.startPosition=r):e.live?r=this.hls.liveSyncPosition||t:this.startPosition=r=0,this.lastCurrentTime=r}this.nextLoadPosition=r},u.getLoadPosition=function(){var e=this.media,t=0;return this.loadedmetadata&&e?t=e.currentTime:this.nextLoadPosition&&(t=this.nextLoadPosition),t},u.handleFragLoadAborted=function(e,t){this.transmuxer&&"initSegment"!==e.sn&&e.stats.aborted&&(this.warn("Fragment "+e.sn+(t?" part"+t.index:"")+" of level "+e.level+" was aborted"),this.resetFragmentLoading(e))},u.resetFragmentLoading=function(e){this.fragCurrent&&(this.fragContextChanged(e)||this.state===Ce)||(this.state=De)},u.onFragmentOrKeyLoadError=function(e,t){if(!t.fatal){var r=t.frag;if(r&&r.type===e){this.fragCurrent;var i=this.config;if(this.fragLoadError+1<=i.fragLoadingMaxRetry){this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition);var n=Math.min(Math.pow(2,this.fragLoadError)*i.fragLoadingRetryDelay,i.fragLoadingMaxRetryTimeout);this.warn("Fragment "+r.sn+" of "+e+" "+r.level+" failed to load, retrying in "+n+"ms"),this.retryDate=self.performance.now()+n,this.fragLoadError++,this.state=Ce}else t.levelRetry?(e===R.PlaylistLevelType.AUDIO&&(this.fragCurrent=null),this.fragLoadError=0,this.state=De):(l.logger.error(t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.hls.stopLoad(),this.state=Me)}}},u.afterBufferFlushed=function(e,t,r){if(e){var i=le.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,i,r),this.state===Oe&&this.resetLoadingState()}},u.resetLoadingState=function(){this.fragCurrent=null,this.fragPrevious=null,this.state=De},u.resetStartWhenNotLoaded=function(e){if(!this.loadedmetadata){this.startFragRequested=!1;var t=this.levels?this.levels[e].details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}},u.updateLevelTiming=function(e,t,r,i){var n=this,s=r.details;Object.keys(e.elementaryStreams).reduce((function(t,o){var l=e.elementaryStreams[o];if(l){var h=l.endPTS-l.startPTS;if(h<=0)return n.warn("Could not parse fragment "+e.sn+" "+o+" duration reliably ("+h+")"),t||!1;var d=i?0:Y(s,e,l.startPTS,l.endPTS,l.startDTS,l.endDTS);return n.hls.trigger(a.Events.LEVEL_PTS_UPDATED,{details:s,level:r,drift:d,type:o,frag:e,start:l.startPTS,end:l.endPTS}),!0}return t}),!1)||(this.warn("Found no media in fragment "+e.sn+" of level "+r.id+" resetting transmuxer to fallback to playlist timing"),this.resetTransmuxer()),this.state=xe,this.hls.trigger(a.Events.FRAG_PARSED,{frag:e,part:t})},u.resetTransmuxer=function(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)},n=i,(d=[{key:"state",get:function(){return this._state},set:function(e){var t=this._state;t!==e&&(this._state=e,this.log(t+"->"+e))}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(n.prototype,d),Object.defineProperty(n,"prototype",{writable:!1}),i}(ae);function Be(){return self.MediaSource||self.WebKitMediaSource}function Ue(){return self.SourceBuffer||self.WebKitSourceBuffer}var Ge=function(){var e=ENTRY_MODULE,t={},r=function r(i){var n=t[i];if(void 0!==n)return n.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,r),s.exports};r.m=e,r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i=r(ENTRY_MODULE);return i.default||i}.toString().split("ENTRY_MODULE"),$e="\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)";function He(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function je(e,t,i){var n={};n[i]=[];var s=t.toString().replace(/^"[^"]+"/,"function"),a=s.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/)||s.match(/^\(\w+,\s*\w+,\s*(\w+)\)\s?\=\s?\>/);if(!a)return n;for(var o,l=a[1],h=new RegExp("(\\\\n|\\W)"+He(l)+$e,"g");o=h.exec(s);)"dll-reference"!==o[3]&&n[i].push(o[3]);for(h=new RegExp("\\("+He(l)+'\\("(dll-reference\\s([\\.|\\-|\\+|\\w|/|@]+))"\\)\\)'+$e,"g");o=h.exec(s);)e[o[2]]||(n[i].push(o[1]),e[o[2]]=r(o[1]).m),n[o[2]]=n[o[2]]||[],n[o[2]].push(o[4]);for(var d,u=Object.keys(n),c=0;c<u.length;c++)for(var f=0;f<n[u[c]].length;f++)d=n[u[c]][f],isNaN(1*d)||(n[u[c]][f]=1*n[u[c]][f]);return n}function We(e){return Object.keys(e).reduce((function(t,r){return t||e[r].length>0}),!1)}function Ve(e,t,r,i){var n=e[i].map((function(e){return'"'+e+'": '+t[i][e].toString().replace(/^"[^"]+"/,"function")})).join(",");return Ge[0]+"{"+n+"}"+Ge[1]+'"'+r+'"'+Ge[2]}var qe=r(764),ze=r(729),Ke=Be()||{isTypeSupported:function(){return!1}},Ye=function(){function e(e,t,i,n){var s=this;this.hls=void 0,this.id=void 0,this.observer=void 0,this.frag=null,this.part=null,this.useWorker=void 0,this.worker=void 0,this.onwmsg=void 0,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0;var h=e.config;this.hls=e,this.id=t,this.useWorker=!!h.enableWorker,this.onTransmuxComplete=i,this.onFlush=n;var d=function(e,t){(t=t||{}).frag=s.frag,t.id=s.id,s.hls.trigger(e,t)};this.observer=new ze.EventEmitter,this.observer.on(a.Events.FRAG_DECRYPTED,d),this.observer.on(a.Events.ERROR,d);var u={mp4:Ke.isTypeSupported("video/mp4"),mpeg:Ke.isTypeSupported("audio/mpeg"),mp3:Ke.isTypeSupported('audio/mp4; codecs="mp3"')},c=navigator.vendor;if(this.useWorker&&"undefined"!=typeof Worker){var f;l.logger.log("demuxing in webworker");try{f=this.worker=function(e,t){t=t||{};var i={main:r.m},n=t.all?{main:Object.keys(i.main)}:function(e,t){for(var r={main:[182]},i={main:[]},n={main:{}};We(r);)for(var s=Object.keys(r),a=0;a<s.length;a++){var o=s[a],l=r[o].pop();if(n[o]=n[o]||{},!n[o][l]&&e[o][l]){n[o][l]=!0,i[o]=i[o]||[],i[o].push(l);for(var h=je(e,e[o][l],o),d=Object.keys(h),u=0;u<d.length;u++)r[d[u]]=r[d[u]]||[],r[d[u]]=r[d[u]].concat(h[d[u]])}}return i}(i),s="";Object.keys(n).filter((function(e){return"main"!==e})).forEach((function(e){for(var t=0;n[e][t];)t++;n[e].push(t),i[e][t]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",s=s+"var "+e+" = ("+Ve(n,i,t,modules)+")();\n"})),s=s+"new (("+Ve(n,i,182,"main")+")())(self);";var a=new window.Blob([s],{type:"text/javascript"}),o=(window.URL||window.webkitURL||window.mozURL||window.msURL).createObjectURL(a),l=new window.Worker(o);return l.objectURL=o,l}(),this.onwmsg=this.onWorkerMessage.bind(this),f.addEventListener("message",this.onwmsg),f.onerror=function(e){s.useWorker=!1,l.logger.warn("Exception in webworker, fallback to inline"),s.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.OTHER_ERROR,details:o.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:new Error(e.message+" ("+e.filename+":"+e.lineno+")")})},f.postMessage({cmd:"init",typeSupported:u,vendor:c,id:t,config:JSON.stringify(h)})}catch(e){l.logger.warn("Error in worker:",e),l.logger.error("Error while initializing DemuxerWorker, fallback to inline"),f&&self.URL.revokeObjectURL(f.objectURL),this.transmuxer=new qe.default(this.observer,u,h,c,t),this.worker=null}}else this.transmuxer=new qe.default(this.observer,u,h,c,t)}var t=e.prototype;return t.destroy=function(){var e=this.worker;if(e)e.removeEventListener("message",this.onwmsg),e.terminate(),this.worker=null,this.onwmsg=void 0;else{var t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}var r=this.observer;r&&r.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null},t.push=function(e,t,r,i,n,s,a,o,h,d){var u,c,f=this;h.transmuxing.start=self.performance.now();var g=this.transmuxer,p=this.worker,m=s?s.start:n.start,v=n.decryptdata,y=this.frag,E=!(y&&n.cc===y.cc),S=!(y&&h.level===y.level),b=y?h.sn-y.sn:-1,T=this.part?h.part-this.part.index:-1,_=0===b&&h.id>1&&h.id===(null==y?void 0:y.stats.chunkCount),L=!S&&(1===b||0===b&&(1===T||_&&T<=0)),w=self.performance.now();(S||b||0===n.stats.parsing.start)&&(n.stats.parsing.start=w),!s||!T&&L||(s.stats.parsing.start=w);var P=!(y&&(null===(u=n.initSegment)||void 0===u?void 0:u.url)===(null===(c=y.initSegment)||void 0===c?void 0:c.url)),A=new qe.TransmuxState(E,L,o,S,m,P);if(!L||E||P){l.logger.log("[transmuxer-interface, "+n.type+"]: Starting new transmux session for sn: "+h.sn+" p: "+h.part+" level: "+h.level+" id: "+h.id+"\n discontinuity: "+E+"\n trackSwitch: "+S+"\n contiguous: "+L+"\n accurateTimeOffset: "+o+"\n timeOffset: "+m+"\n initSegmentChange: "+P);var D=new qe.TransmuxConfig(r,i,t,a,d);this.configureTransmuxer(D)}if(this.frag=n,this.part=s,p)p.postMessage({cmd:"demux",data:e,decryptdata:v,chunkMeta:h,state:A},e instanceof ArrayBuffer?[e]:[]);else if(g){var I=g.push(e,v,h,A);(0,qe.isPromise)(I)?I.then((function(e){f.handleTransmuxComplete(e)})):this.handleTransmuxComplete(I)}},t.flush=function(e){var t=this;e.transmuxing.start=self.performance.now();var r=this.transmuxer,i=this.worker;if(i)i.postMessage({cmd:"flush",chunkMeta:e});else if(r){var n=r.flush(e);(0,qe.isPromise)(n)?n.then((function(r){t.handleFlushResult(r,e)})):this.handleFlushResult(n,e)}},t.handleFlushResult=function(e,t){var r=this;e.forEach((function(e){r.handleTransmuxComplete(e)})),this.onFlush(t)},t.onWorkerMessage=function(e){var t=e.data,r=this.hls;switch(t.event){case"init":self.URL.revokeObjectURL(this.worker.objectURL);break;case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":l.logger[t.data.logType]&&l.logger[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,r.trigger(t.event,t.data)}},t.configureTransmuxer=function(e){var t=this.worker,r=this.transmuxer;t?t.postMessage({cmd:"configure",config:e}):r&&r.configure(e)},t.handleTransmuxComplete=function(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)},e}(),Xe=function(){function e(e,t,r,i){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=r,this.hls=i}var t=e.prototype;return t.destroy=function(){this.media=null,this.hls=this.fragmentTracker=null},t.poll=function(e,t){var r=this.config,i=this.media,n=this.stalled;if(null!==i){var s=i.currentTime,a=i.seeking,o=this.seeking&&!a,h=!this.seeking&&a;if(this.seeking=a,s===e){if((h||o)&&(this.stalled=null),!(i.paused&&!a||i.ended||0===i.playbackRate)&&le.getBuffered(i).length){var d=le.bufferInfo(i,s,0),u=d.len>0,c=d.nextStart||0;if(u||c){if(a){var f=d.len>2,g=!c||t&&t.start<=s||c-s>2&&!this.fragmentTracker.getPartialFragment(s);if(f||g)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var p,m=Math.max(c,d.start||0)-s,v=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,y=(null==v||null===(p=v.details)||void 0===p?void 0:p.live)?2*v.details.targetduration:2;if(m>0&&m<=y)return void this._trySkipBufferHole(null)}var E=self.performance.now();if(null!==n){var S=E-n;if(a||!(S>=250)||(this._reportStall(d),this.media)){var b=le.bufferInfo(i,s,r.maxBufferHole);this._tryFixBufferStall(b,S)}}else this.stalled=E}}}else if(this.moved=!0,null!==n){if(this.stallReported){var T=self.performance.now()-n;l.logger.warn("playback not stuck anymore @"+s+", after "+Math.round(T)+"ms"),this.stallReported=!1}this.stalled=null,this.nudgeRetry=0}}},t._tryFixBufferStall=function(e,t){var r=this.config,i=this.fragmentTracker,n=this.media;if(null!==n){var s=n.currentTime,a=i.getPartialFragment(s);if(a&&(this._trySkipBufferHole(a)||!this.media))return;e.len>r.maxBufferHole&&t>1e3*r.highBufferWatchdogPeriod&&(l.logger.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}},t._reportStall=function(e){var t=this.hls,r=this.media;!this.stallReported&&r&&(this.stallReported=!0,l.logger.warn("Playback stalling at @"+r.currentTime+" due to low buffer ("+JSON.stringify(e)+")"),t.trigger(a.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1,buffer:e.len}))},t._trySkipBufferHole=function(e){var t=this.config,r=this.hls,i=this.media;if(null===i)return 0;for(var n=i.currentTime,s=0,h=le.getBuffered(i),d=0;d<h.length;d++){var u=h.start(d);if(n+t.maxBufferHole>=s&&n<u){var c=Math.max(u+.05,i.currentTime+.1);return l.logger.warn("skipping hole, adjusting currentTime from "+n+" to "+c),this.moved=!0,this.stalled=null,i.currentTime=c,e&&r.trigger(a.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,reason:"fragment loaded with buffer holes, seeking from "+n+" to "+c,frag:e}),c}s=h.end(d)}return 0},t._tryNudgeBuffer=function(){var e=this.config,t=this.hls,r=this.media,i=this.nudgeRetry;if(null!==r){var n=r.currentTime;if(this.nudgeRetry++,i<e.nudgeMaxRetry){var s=n+(i+1)*e.nudgeOffset;l.logger.warn("Nudging 'currentTime' from "+n+" to "+s),r.currentTime=s,t.trigger(a.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.BUFFER_NUDGE_ON_STALL,fatal:!1})}else l.logger.error("Playhead still not moving while enough data buffered @"+n+" after "+e.nudgeMaxRetry+" nudges"),t.trigger(a.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!0})}},e}();function Qe(e,t){return Qe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Qe(e,t)}var Je=function(e){var t,r;function i(t,r){var i;return(i=e.call(this,t,r,"[stream-controller]")||this).audioCodecSwap=!1,i.gapController=null,i.level=-1,i._forceStartLoad=!1,i.altAudio=!1,i.audioOnly=!1,i.fragPlaying=null,i.onvplaying=null,i.onvseeked=null,i.fragLastKbps=0,i.couldBacktrack=!1,i.backtrackFragment=null,i.audioCodecSwitch=!1,i.videoBuffer=null,i._registerListeners(),i}r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,Qe(t,r);var n,l,h=i.prototype;return h._registerListeners=function(){var e=this.hls;e.on(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.on(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(a.Events.LEVEL_LOADING,this.onLevelLoading,this),e.on(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(a.Events.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.on(a.Events.ERROR,this.onError,this),e.on(a.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(a.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(a.Events.BUFFER_CREATED,this.onBufferCreated,this),e.on(a.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(a.Events.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(a.Events.FRAG_BUFFERED,this.onFragBuffered,this)},h._unregisterListeners=function(){var e=this.hls;e.off(a.Events.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(a.Events.MANIFEST_LOADING,this.onManifestLoading,this),e.off(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(a.Events.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.off(a.Events.ERROR,this.onError,this),e.off(a.Events.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(a.Events.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(a.Events.BUFFER_CREATED,this.onBufferCreated,this),e.off(a.Events.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(a.Events.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(a.Events.FRAG_BUFFERED,this.onFragBuffered,this)},h.onHandlerDestroying=function(){this._unregisterListeners(),this.onMediaDetaching()},h.startLoad=function(e){if(this.levels){var t=this.lastCurrentTime,r=this.hls;if(this.stopLoad(),this.setInterval(100),this.level=-1,this.fragLoadError=0,!this.startFragRequested){var i=r.startLevel;-1===i&&(r.config.testBandwidth&&this.levels.length>1?(i=0,this.bitrateTest=!0):i=r.nextAutoLevel),this.level=r.nextLoadLevel=i,this.loadedmetadata=!1}t>0&&-1===e&&(this.log("Override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t),this.state=De,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Ae},h.stopLoad=function(){this._forceStartLoad=!1,e.prototype.stopLoad.call(this)},h.doTick=function(){switch(this.state){case De:this.doTickIdle();break;case Ne:var e,t=this.levels,r=this.level,i=null==t||null===(e=t[r])||void 0===e?void 0:e.details;if(i&&(!i.live||this.levelLastLoaded===this.level)){if(this.waitForCdnTuneIn(i))break;this.state=De;break}break;case Ce:var n,s=self.performance.now(),a=this.retryDate;(!a||s>=a||null!==(n=this.media)&&void 0!==n&&n.seeking)&&(this.log("retryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(this.level),this.state=De)}this.onTickEnd()},h.onTickEnd=function(){e.prototype.onTickEnd.call(this),this.checkBuffer(),this.checkFragmentChanged()},h.doTickIdle=function(){var e,t,r=this.hls,i=this.levelLastLoaded,n=this.levels,s=this.media,o=r.config,l=r.nextLoadLevel;if(null!==i&&(s||!this.startFragRequested&&o.startFragPrefetch)&&(!this.altAudio||!this.audioOnly)&&n&&n[l]){var h=n[l];this.level=r.nextLoadLevel=l;var d=h.details;if(!d||this.state===Ne||d.live&&this.levelLastLoaded!==l)this.state=Ne;else{var u=this.getMainFwdBufferInfo();if(null!==u&&!(u.len>=this.getMaxBufferLength(h.maxBitrate))){if(this._streamEnded(u,d)){var c={};return this.altAudio&&(c.type="video"),this.hls.trigger(a.Events.BUFFER_EOS,c),void(this.state=Oe)}this.backtrackFragment&&this.backtrackFragment.start>u.end&&(this.backtrackFragment=null);var f=this.backtrackFragment?this.backtrackFragment.start:u.end,g=this.getNextFragment(f,d);if(this.couldBacktrack&&!this.fragPrevious&&g&&"initSegment"!==g.sn&&this.fragmentTracker.getState(g)!==ee.OK){var m,v=(null!=(m=this.backtrackFragment)?m:g).sn-d.startSN,y=d.fragments[v-1];y&&g.cc===y.cc&&(g=y,this.fragmentTracker.removeFragment(y))}else this.backtrackFragment&&u.len&&(this.backtrackFragment=null);if(g&&this.fragmentTracker.getState(g)===ee.OK&&this.nextLoadPosition>f){var E=this.audioOnly&&!this.altAudio?p.ElementaryStreamTypes.AUDIO:p.ElementaryStreamTypes.VIDEO;s&&this.afterBufferFlushed(s,E,R.PlaylistLevelType.MAIN),g=this.getNextFragment(this.nextLoadPosition,d)}g&&(!g.initSegment||g.initSegment.data||this.bitrateTest||(g=g.initSegment),"identity"!==(null===(e=g.decryptdata)||void 0===e?void 0:e.keyFormat)||null!==(t=g.decryptdata)&&void 0!==t&&t.key?this.loadFragment(g,d,f):this.loadKey(g,d))}}}},h.loadFragment=function(t,r,i){var n,s=this.fragmentTracker.getState(t);this.fragCurrent=t,s===ee.NOT_LOADED?"initSegment"===t.sn?this._loadInitSegment(t):this.bitrateTest?(this.log("Fragment "+t.sn+" of level "+t.level+" is being downloaded to test bitrate and will not be buffered"),this._loadBitrateTestFrag(t)):(this.startFragRequested=!0,e.prototype.loadFragment.call(this,t,r,i)):s===ee.APPENDING?this.reduceMaxBufferLength(t.duration)&&this.fragmentTracker.removeFragment(t):0===(null===(n=this.media)||void 0===n?void 0:n.buffered.length)&&this.fragmentTracker.removeAllFragments()},h.getAppendedFrag=function(e){var t=this.fragmentTracker.getAppendedFrag(e,R.PlaylistLevelType.MAIN);return t&&"fragment"in t?t.fragment:t},h.getBufferedFrag=function(e){return this.fragmentTracker.getBufferedFrag(e,R.PlaylistLevelType.MAIN)},h.followingBufferedFrag=function(e){return e?this.getBufferedFrag(e.end+.5):null},h.immediateLevelSwitch=function(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},h.nextLevelSwitch=function(){var e=this.levels,t=this.media;if(null!=t&&t.readyState){var r,i=this.getAppendedFrag(t.currentTime);if(i&&i.start>1&&this.flushMainBuffer(0,i.start-1),!t.paused&&e){var n=e[this.hls.nextLoadLevel],s=this.fragLastKbps;r=s&&this.fragCurrent?this.fragCurrent.duration*n.maxBitrate/(1e3*s)+1:0}else r=0;var a=this.getBufferedFrag(t.currentTime+r);if(a){var o=this.followingBufferedFrag(a);if(o){this.abortCurrentFrag();var l=o.maxStartPTS?o.maxStartPTS:o.start,h=o.duration,d=Math.max(a.end,l+Math.min(Math.max(h-this.config.maxFragLookUpTolerance,.5*h),.75*h));this.flushMainBuffer(d,Number.POSITIVE_INFINITY)}}}},h.abortCurrentFrag=function(){var e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,null!=e&&e.loader&&e.loader.abort(),this.state){case Ie:case Re:case Ce:case ke:case xe:this.state=De}this.nextLoadPosition=this.getLoadPosition()},h.flushMainBuffer=function(t,r){e.prototype.flushMainBuffer.call(this,t,r,this.altAudio?"video":null)},h.onMediaAttached=function(t,r){e.prototype.onMediaAttached.call(this,t,r);var i=r.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new Xe(this.config,i,this.fragmentTracker,this.hls)},h.onMediaDetaching=function(){var t=this.media;t&&this.onvplaying&&this.onvseeked&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),e.prototype.onMediaDetaching.call(this)},h.onMediaPlaying=function(){this.tick()},h.onMediaSeeked=function(){var e=this.media,t=e?e.currentTime:null;(0,s.isFiniteNumber)(t)&&this.log("Media seeked to "+t.toFixed(3)),this.tick()},h.onManifestLoading=function(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(a.Events.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=0,this.fragPlaying=null,this.backtrackFragment=null},h.onManifestParsed=function(e,t){var r,i,n,s=!1,a=!1;t.levels.forEach((function(e){(r=e.audioCodec)&&(-1!==r.indexOf("mp4a.40.2")&&(s=!0),-1!==r.indexOf("mp4a.40.5")&&(a=!0))})),this.audioCodecSwitch=s&&a&&!("function"==typeof(null==(n=Ue())||null===(i=n.prototype)||void 0===i?void 0:i.changeType)),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1},h.onLevelLoading=function(e,t){var r=this.levels;if(r&&this.state===De){var i=r[t.level];(!i.details||i.details.live&&this.levelLastLoaded!==t.level||this.waitForCdnTuneIn(i.details))&&(this.state=Ne)}},h.onLevelLoaded=function(e,t){var r,i=this.levels,n=t.level,s=t.details,o=s.totalduration;if(i){this.log("Level "+n+" loaded ["+s.startSN+","+s.endSN+"], cc ["+s.startCC+", "+s.endCC+"] duration:"+o);var l=this.fragCurrent;!l||this.state!==Re&&this.state!==Ce||l.level!==t.level&&l.loader&&(this.state=De,this.backtrackFragment=null,l.loader.abort());var h=i[n],d=0;if(s.live||null!==(r=h.details)&&void 0!==r&&r.live){if(s.fragments[0]||(s.deltaUpdateFailed=!0),s.deltaUpdateFailed)return;d=this.alignPlaylists(s,h.details)}if(h.details=s,this.levelLastLoaded=n,this.hls.trigger(a.Events.LEVEL_UPDATED,{details:s,level:n}),this.state===Ne){if(this.waitForCdnTuneIn(s))return;this.state=De}this.startFragRequested?s.live&&this.synchronizeToLiveEdge(s):this.setStartPosition(s,d),this.tick()}else this.warn("Levels were reset while loading level "+n)},h._handleFragmentLoadProgress=function(e){var t,r=e.frag,i=e.part,n=e.payload,s=this.levels;if(s){var a=s[r.level],o=a.details;if(o){var l=a.videoCodec,h=o.PTSKnown||!o.live,d=null===(t=r.initSegment)||void 0===t?void 0:t.data,u=this._getAudioCodec(a),c=this.transmuxer=this.transmuxer||new Ye(this.hls,R.PlaylistLevelType.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=i?i.index:-1,g=-1!==f,p=new he(r.level,r.sn,r.stats.chunkCount,n.byteLength,f,g),m=this.initPTS[r.cc];c.push(n,d,u,l,r,i,o.totalduration,h,p,m)}else this.warn("Dropping fragment "+r.sn+" of level "+r.level+" after level details were reset")}else this.warn("Levels were reset while fragment load was in progress. Fragment "+r.sn+" of level "+r.level+" will not be buffered")},h.onAudioTrackSwitching=function(e,t){var r=this.altAudio,i=!!t.url,n=t.id;if(!i){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var s=this.fragCurrent;null!=s&&s.loader&&(this.log("Switching to main audio track, cancel main fragment load"),s.loader.abort()),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();var o=this.hls;r&&o.trigger(a.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),o.trigger(a.Events.AUDIO_TRACK_SWITCHED,{id:n})}},h.onAudioTrackSwitched=function(e,t){var r=t.id,i=!!this.hls.audioTracks[r].url;if(i){var n=this.videoBuffer;n&&this.mediaBuffer!==n&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=n)}this.altAudio=i,this.tick()},h.onBufferCreated=function(e,t){var r,i,n=t.tracks,s=!1;for(var a in n){var o=n[a];if("main"===o.id){if(i=a,r=o,"video"===a){var l=n[a];l&&(this.videoBuffer=l.buffer)}}else s=!0}s&&r?(this.log("Alternate track found, use "+i+".buffered to schedule main fragment loading"),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media},h.onFragBuffered=function(e,t){var r=t.frag,i=t.part;if(!r||r.type===R.PlaylistLevelType.MAIN){if(this.fragContextChanged(r))return this.warn("Fragment "+r.sn+(i?" p: "+i.index:"")+" of level "+r.level+" finished buffering, but was aborted. state: "+this.state),void(this.state===xe&&(this.state=De));var n=i?i.stats:r.stats;this.fragLastKbps=Math.round(8*n.total/(n.buffering.end-n.loading.first)),"initSegment"!==r.sn&&(this.fragPrevious=r),this.fragBufferedComplete(r,i)}},h.onError=function(e,t){switch(t.details){case o.ErrorDetails.FRAG_LOAD_ERROR:case o.ErrorDetails.FRAG_LOAD_TIMEOUT:case o.ErrorDetails.KEY_LOAD_ERROR:case o.ErrorDetails.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(R.PlaylistLevelType.MAIN,t);break;case o.ErrorDetails.LEVEL_LOAD_ERROR:case o.ErrorDetails.LEVEL_LOAD_TIMEOUT:this.state!==Me&&(t.fatal?(this.warn(""+t.details),this.state=Me):t.levelRetry||this.state!==Ne||(this.state=De));break;case o.ErrorDetails.BUFFER_FULL_ERROR:if("main"===t.parent&&(this.state===ke||this.state===xe)){var r=!0,i=this.getFwdBufferInfo(this.media,R.PlaylistLevelType.MAIN);i&&i.len>.5&&(r=!this.reduceMaxBufferLength(i.len)),r&&(this.warn("buffer full error also media.currentTime is not buffered, flush main"),this.immediateLevelSwitch()),this.resetLoadingState()}}},h.checkBuffer=function(){var e=this.media,t=this.gapController;if(e&&t&&e.readyState){if(this.loadedmetadata||!le.getBuffered(e).length){var r=this.state!==De?this.fragCurrent:null;t.poll(this.lastCurrentTime,r)}this.lastCurrentTime=e.currentTime}},h.onFragLoadEmergencyAborted=function(){this.state=De,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()},h.onBufferFlushed=function(e,t){var r=t.type;if(r!==p.ElementaryStreamTypes.AUDIO||this.audioOnly&&!this.altAudio){var i=(r===p.ElementaryStreamTypes.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(i,r,R.PlaylistLevelType.MAIN)}},h.onLevelsUpdated=function(e,t){this.levels=t.levels},h.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},h.seekToStartPos=function(){var e=this.media;if(e){var t=e.currentTime,r=this.startPosition;if(r>=0&&t<r){if(e.seeking)return void this.log("could not seek to "+r+", already seeking at "+t);var i=le.getBuffered(e),n=(i.length?i.start(0):0)-r;n>0&&(n<this.config.maxBufferHole||n<this.config.maxFragLookUpTolerance)&&(this.log("adjusting start position by "+n+" to match buffer start"),r+=n,this.startPosition=r),this.log("seek to target start position "+r+" from current time "+t),e.currentTime=r}}},h._getAudioCodec=function(e){var t=this.config.defaultAudioCodec||e.audioCodec;return this.audioCodecSwap&&t&&(this.log("Swapping audio codec"),t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),t},h._loadBitrateTestFrag=function(e){var t=this;e.bitrateTest=!0,this._doFragLoad(e).then((function(r){var i=t.hls;if(r&&!i.nextLoadLevel&&!t.fragContextChanged(e)){t.fragLoadError=0,t.state=De,t.startFragRequested=!1,t.bitrateTest=!1;var n=e.stats;n.parsing.start=n.parsing.end=n.buffering.start=n.buffering.end=self.performance.now(),i.trigger(a.Events.FRAG_LOADED,r),e.bitrateTest=!1}}))},h._handleTransmuxComplete=function(e){var t,r="main",i=this.hls,n=e.remuxResult,o=e.chunkMeta,l=this.getCurrentContext(o);if(!l)return this.warn("The loading context changed while buffering fragment "+o.sn+" of level "+o.level+". This chunk will not be buffered."),void this.resetStartWhenNotLoaded(o.level);var h=l.frag,d=l.part,u=l.level,c=n.video,f=n.text,g=n.id3,m=n.initSegment,v=u.details,y=this.altAudio?void 0:n.audio;if(!this.fragContextChanged(h)){if(this.state=ke,m){m.tracks&&(this._bufferInitSegment(u,m.tracks,h,o),i.trigger(a.Events.FRAG_PARSING_INIT_SEGMENT,{frag:h,id:r,tracks:m.tracks}));var E=m.initPTS,S=m.timescale;(0,s.isFiniteNumber)(E)&&(this.initPTS[h.cc]=E,i.trigger(a.Events.INIT_PTS_FOUND,{frag:h,id:r,initPTS:E,timescale:S}))}if(c&&!1!==n.independent){if(v){var b=c.startPTS,T=c.endPTS,_=c.startDTS,L=c.endDTS;if(d)d.elementaryStreams[c.type]={startPTS:b,endPTS:T,startDTS:_,endDTS:L};else if(c.firstKeyFrame&&c.independent&&(this.couldBacktrack=!0),c.dropped&&c.independent){var w=this.getMainFwdBufferInfo();if((w?w.end:this.getLoadPosition())+this.config.maxBufferHole<(c.firstKeyFramePTS?c.firstKeyFramePTS:b)-this.config.maxBufferHole)return void this.backtrack(h);h.setElementaryStreamInfo(c.type,h.start,T,h.start,L,!0)}h.setElementaryStreamInfo(c.type,b,T,_,L),this.backtrackFragment&&(this.backtrackFragment=h),this.bufferFragmentData(c,h,d,o)}}else if(!1===n.independent)return void this.backtrack(h);if(y){var P=y.startPTS,A=y.endPTS,D=y.startDTS,I=y.endDTS;d&&(d.elementaryStreams[p.ElementaryStreamTypes.AUDIO]={startPTS:P,endPTS:A,startDTS:D,endDTS:I}),h.setElementaryStreamInfo(p.ElementaryStreamTypes.AUDIO,P,A,D,I),this.bufferFragmentData(y,h,d,o)}if(v&&null!=g&&null!==(t=g.samples)&&void 0!==t&&t.length){var R={id:r,frag:h,details:v,samples:g.samples};i.trigger(a.Events.FRAG_PARSING_METADATA,R)}if(v&&f){var C={id:r,frag:h,details:v,samples:f.samples};i.trigger(a.Events.FRAG_PARSING_USERDATA,C)}}},h._bufferInitSegment=function(e,t,r,i){var n=this;if(this.state===ke){this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;var s=t.audio,o=t.video,l=t.audiovideo;if(s){var h=e.audioCodec,d=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(h&&(h=-1!==h.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==s.metadata.channelCount&&-1===d.indexOf("firefox")&&(h="mp4a.40.5")),-1!==d.indexOf("android")&&"audio/mpeg"!==s.container&&(h="mp4a.40.2",this.log("Android: force audio codec to "+h)),e.audioCodec&&e.audioCodec!==h&&this.log('Swapping manifest audio codec "'+e.audioCodec+'" for "'+h+'"'),s.levelCodec=h,s.id="main",this.log("Init audio buffer, container:"+s.container+", codecs[selected/level/parsed]=["+(h||"")+"/"+(e.audioCodec||"")+"/"+s.codec+"]")}o&&(o.levelCodec=e.videoCodec,o.id="main",this.log("Init video buffer, container:"+o.container+", codecs[level/parsed]=["+(e.videoCodec||"")+"/"+o.codec+"]")),l&&this.log("Init audiovideo buffer, container:"+l.container+", codecs[level/parsed]=["+(e.attrs.CODECS||"")+"/"+l.codec+"]"),this.hls.trigger(a.Events.BUFFER_CODECS,t),Object.keys(t).forEach((function(e){var s=t[e].initSegment;null!=s&&s.byteLength&&n.hls.trigger(a.Events.BUFFER_APPENDING,{type:e,data:s,frag:r,part:null,chunkMeta:i,parent:r.type})})),this.tick()}},h.getMainFwdBufferInfo=function(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,R.PlaylistLevelType.MAIN)},h.backtrack=function(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=De},h.checkFragmentChanged=function(){var e=this.media,t=null;if(e&&e.readyState>1&&!1===e.seeking){var r=e.currentTime;if(le.isBuffered(e,r)?t=this.getAppendedFrag(r):le.isBuffered(e,r+.1)&&(t=this.getAppendedFrag(r+.1)),t){this.backtrackFragment=null;var i=this.fragPlaying,n=t.level;i&&t.sn===i.sn&&i.level===n&&t.urlId===i.urlId||(this.hls.trigger(a.Events.FRAG_CHANGED,{frag:t}),i&&i.level===n||this.hls.trigger(a.Events.LEVEL_SWITCHED,{level:n}),this.fragPlaying=t)}}},n=i,(l=[{key:"nextLevel",get:function(){var e=this.nextBufferedFrag;return e?e.level:-1}},{key:"currentFrag",get:function(){var e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}},{key:"currentProgramDateTime",get:function(){var e=this.media;if(e){var t=e.currentTime,r=this.currentFrag;if(r&&(0,s.isFiniteNumber)(t)&&(0,s.isFiniteNumber)(r.programDateTime)){var i=r.programDateTime+1e3*(t-r.start);return new Date(i)}}return null}},{key:"currentLevel",get:function(){var e=this.currentFrag;return e?e.level:-1}},{key:"nextBufferedFrag",get:function(){var e=this.currentFrag;return e?this.followingBufferedFrag(e):null}},{key:"forceStartLoad",get:function(){return this._forceStartLoad}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(n.prototype,l),Object.defineProperty(n,"prototype",{writable:!1}),i}(Fe);const Ze=function(){function e(e,t,r){void 0===t&&(t=0),void 0===r&&(r=0),this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=r}var t=e.prototype;return t.sample=function(e,t){var r=Math.pow(this.alpha_,e);this.estimate_=t*(1-r)+r*this.estimate_,this.totalWeight_+=e},t.getTotalWeight=function(){return this.totalWeight_},t.getEstimate=function(){if(this.alpha_){var e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_},e}(),et=function(){function e(e,t,r){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultEstimate_=r,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new Ze(e),this.fast_=new Ze(t)}var t=e.prototype;return t.update=function(e,t){var r=this.slow_,i=this.fast_;this.slow_.halfLife!==e&&(this.slow_=new Ze(e,r.getEstimate(),r.getTotalWeight())),this.fast_.halfLife!==t&&(this.fast_=new Ze(t,i.getEstimate(),i.getTotalWeight()))},t.sample=function(e,t){var r=(e=Math.max(e,this.minDelayMs_))/1e3,i=8*t/r;this.fast_.sample(r,i),this.slow_.sample(r,i)},t.canEstimate=function(){var e=this.fast_;return e&&e.getTotalWeight()>=this.minWeight_},t.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.destroy=function(){},e}(),tt=function(){function e(e){this.hls=void 0,this.lastLoadedFragLevel=0,this._nextAutoLevel=-1,this.timer=void 0,this.onCheck=this._abandonRulesCheck.bind(this),this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this.hls=e;var t=e.config;this.bwEstimator=new et(t.abrEwmaSlowVoD,t.abrEwmaFastVoD,t.abrEwmaDefaultEstimate),this.registerListeners()}var t,r,i=e.prototype;return i.registerListeners=function(){var e=this.hls;e.on(a.Events.FRAG_LOADING,this.onFragLoading,this),e.on(a.Events.FRAG_LOADED,this.onFragLoaded,this),e.on(a.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.on(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.on(a.Events.ERROR,this.onError,this)},i.unregisterListeners=function(){var e=this.hls;e.off(a.Events.FRAG_LOADING,this.onFragLoading,this),e.off(a.Events.FRAG_LOADED,this.onFragLoaded,this),e.off(a.Events.FRAG_BUFFERED,this.onFragBuffered,this),e.off(a.Events.LEVEL_LOADED,this.onLevelLoaded,this),e.off(a.Events.ERROR,this.onError,this)},i.destroy=function(){this.unregisterListeners(),this.clearTimer(),this.hls=this.onCheck=null,this.fragCurrent=this.partCurrent=null},i.onFragLoading=function(e,t){var r,i=t.frag;i.type===R.PlaylistLevelType.MAIN&&(this.timer||(this.fragCurrent=i,this.partCurrent=null!=(r=t.part)?r:null,this.timer=self.setInterval(this.onCheck,100)))},i.onLevelLoaded=function(e,t){var r=this.hls.config;t.details.live?this.bwEstimator.update(r.abrEwmaSlowLive,r.abrEwmaFastLive):this.bwEstimator.update(r.abrEwmaSlowVoD,r.abrEwmaFastVoD)},i._abandonRulesCheck=function(){var e=this.fragCurrent,t=this.partCurrent,r=this.hls,i=r.autoLevelEnabled,n=(r.config,r.media);if(e&&n){var o=t?t.stats:e.stats,h=t?t.duration:e.duration;if(o.aborted||o.loaded&&o.loaded===o.total||0===e.level)return this.clearTimer(),void(this._nextAutoLevel=-1);if(i&&!n.paused&&n.playbackRate&&n.readyState){var d=r.mainForwardBufferInfo;if(null!==d){var u=performance.now()-o.loading.start,c=Math.abs(n.playbackRate);if(!(u<=500*h/c)){var f=o.loaded&&o.loading.first,g=this.bwEstimator.getEstimate(),p=r.levels,m=r.minAutoLevel,v=p[e.level],y=o.total||Math.max(o.loaded,Math.round(h*v.maxBitrate/8)),E=f?1e3*o.loaded/u:0,S=E?(y-o.loaded)/E:8*y/g,b=d.len/c;if(!(S<=b)){var T,_=Number.POSITIVE_INFINITY;for(T=e.level-1;T>m;T--){var L=p[T].maxBitrate;if((_=E?h*L/(6.4*E):h*L/g)<b)break}_>=S||(l.logger.warn("Fragment "+e.sn+(t?" part "+t.index:"")+" of level "+e.level+" is loading too slowly and will cause an underbuffer; aborting and switching to level "+T+"\n Current BW estimate: "+((0,s.isFiniteNumber)(g)?(g/1024).toFixed(3):"Unknown")+" Kb/s\n Estimated load time for current fragment: "+S.toFixed(3)+" s\n Estimated load time for the next fragment: "+_.toFixed(3)+" s\n Time to underbuffer: "+b.toFixed(3)+" s"),r.nextLoadLevel=T,f&&this.bwEstimator.sample(u,o.loaded),this.clearTimer(),e.loader&&(this.fragCurrent=this.partCurrent=null,e.loader.abort()),r.trigger(a.Events.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:o}))}}}}}},i.onFragLoaded=function(e,t){var r=t.frag,i=t.part;if(r.type===R.PlaylistLevelType.MAIN&&(0,s.isFiniteNumber)(r.sn)){var n=i?i.stats:r.stats,o=i?i.duration:r.duration;if(this.clearTimer(),this.lastLoadedFragLevel=r.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var l=this.hls.levels[r.level],h=(l.loaded?l.loaded.bytes:0)+n.loaded,d=(l.loaded?l.loaded.duration:0)+o;l.loaded={bytes:h,duration:d},l.realBitrate=Math.round(8*h/d)}if(r.bitrateTest){var u={stats:n,frag:r,part:i,id:r.type};this.onFragBuffered(a.Events.FRAG_BUFFERED,u)}}},i.onFragBuffered=function(e,t){var r=t.frag,i=t.part,n=i?i.stats:r.stats;if(!n.aborted&&r.type===R.PlaylistLevelType.MAIN&&"initSegment"!==r.sn){var s=n.parsing.end-n.loading.start;this.bwEstimator.sample(s,n.loaded),n.bwEstimate=this.bwEstimator.getEstimate(),r.bitrateTest?this.bitrateTestDelay=s/1e3:this.bitrateTestDelay=0}},i.onError=function(e,t){switch(t.details){case o.ErrorDetails.FRAG_LOAD_ERROR:case o.ErrorDetails.FRAG_LOAD_TIMEOUT:this.clearTimer()}},i.clearTimer=function(){self.clearInterval(this.timer),this.timer=void 0},i.getNextABRAutoLevel=function(){var e=this.fragCurrent,t=this.partCurrent,r=this.hls,i=r.maxAutoLevel,n=r.config,s=r.minAutoLevel,a=r.media,o=t?t.duration:e?e.duration:0,h=(a&&a.currentTime,a&&0!==a.playbackRate?Math.abs(a.playbackRate):1),d=this.bwEstimator?this.bwEstimator.getEstimate():n.abrEwmaDefaultEstimate,u=r.mainForwardBufferInfo,c=(u?u.len:0)/h,f=this.findBestLevel(d,s,i,c,n.abrBandWidthFactor,n.abrBandWidthUpFactor);if(f>=0)return f;l.logger.trace((c?"rebuffering expected":"buffer is empty")+", finding optimal quality level");var g=o?Math.min(o,n.maxStarvationDelay):n.maxStarvationDelay,p=n.abrBandWidthFactor,m=n.abrBandWidthUpFactor;if(!c){var v=this.bitrateTestDelay;v&&(g=(o?Math.min(o,n.maxLoadingDelay):n.maxLoadingDelay)-v,l.logger.trace("bitrate test took "+Math.round(1e3*v)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*g)+" ms"),p=m=1)}return f=this.findBestLevel(d,s,i,c+g,p,m),Math.max(f,0)},i.findBestLevel=function(e,t,r,i,n,a){for(var o,h=this.fragCurrent,d=this.partCurrent,u=this.lastLoadedFragLevel,c=this.hls.levels,f=c[u],g=!(null==f||null===(o=f.details)||void 0===o||!o.live),p=null==f?void 0:f.codecSet,m=d?d.duration:h?h.duration:0,v=r;v>=t;v--){var y=c[v];if(y&&(!p||y.codecSet===p)){var E,S=y.details,b=(d?null==S?void 0:S.partTarget:null==S?void 0:S.averagetargetduration)||m;E=v<=u?n*e:a*e;var T=c[v].maxBitrate,_=T*b/E;if(l.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+v+"/"+Math.round(E)+"/"+T+"/"+b+"/"+i+"/"+_),E>T&&(0===_||!(0,s.isFiniteNumber)(_)||g&&!this.bitrateTestDelay||_<i))return v}}return-1},t=e,(r=[{key:"nextAutoLevel",get:function(){var e=this._nextAutoLevel,t=this.bwEstimator;if(-1!==e&&!t.canEstimate())return e;var r=this.getNextABRAutoLevel();return-1!==e&&this.hls.levels[r].loadError?e:(-1!==e&&(r=Math.min(e,r)),r)},set:function(e){this._nextAutoLevel=e}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}();var rt=r(514),it=r.n(rt),nt=function(){function e(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}var t=e.prototype;return t.append=function(e,t){var r=this.queues[t];r.push(e),1===r.length&&this.buffers[t]&&this.executeNext(t)},t.insertAbort=function(e,t){this.queues[t].unshift(e),this.executeNext(t)},t.appendBlocker=function(e){var t,r=new Promise((function(e){t=e})),i={execute:t,onStart:function(){},onComplete:function(){},onError:function(){}};return this.append(i,e),r},t.executeNext=function(e){var t=this.buffers,r=this.queues,i=t[e],n=r[e];if(n.length){var s=n[0];try{s.execute()}catch(t){l.logger.warn("[buffer-operation-queue]: Unhandled exception executing the current operation"),s.onError(t),i&&i.updating||(n.shift(),this.executeNext(e))}}},t.shiftAndExecuteNext=function(e){this.queues[e].shift(),this.executeNext(e)},t.current=function(e){return this.queues[e][0]},e}(),st=Be(),at=/([ha]vc.)(?:\.[^.,]+)+/,ot=function(){function e(e){var t=this;this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.appendError=0,this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this._onMediaSourceOpen=function(){var e=t.hls,r=t.media,i=t.mediaSource;l.logger.log("[buffer-controller]: Media source opened"),r&&(t.updateMediaElementDuration(),e.trigger(a.Events.MEDIA_ATTACHED,{media:r})),i&&i.removeEventListener("sourceopen",t._onMediaSourceOpen),t.checkPendingTracks()},this._onMediaSourceClose=function(){l.logger.log("[buffer-controller]: Media source closed")},this._onMediaSourceEnded=function(){l.logger.log("[buffer-controller]: Media source ended")},this.hls=e,this._initSourceBuffer(),this.registerListeners()}var t=e.prototype;return t.hasSourceTypes=function(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0},t.destroy=function(){this.unregisterListeners(),this.details=null},t.registerListeners=function(){var e=this.hls;e.on(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(a.Events.BUFFER_RESET,this.onBufferReset,this),e.on(a.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.on(a.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(a.Events.BUFFER_EOS,this.onBufferEos,this),e.on(a.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(a.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(a.Events.FRAG_PARSED,this.onFragParsed,this),e.on(a.Events.FRAG_CHANGED,this.onFragChanged,this)},t.unregisterListeners=function(){var e=this.hls;e.off(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(a.Events.BUFFER_RESET,this.onBufferReset,this),e.off(a.Events.BUFFER_APPENDING,this.onBufferAppending,this),e.off(a.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(a.Events.BUFFER_EOS,this.onBufferEos,this),e.off(a.Events.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(a.Events.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(a.Events.FRAG_PARSED,this.onFragParsed,this),e.off(a.Events.FRAG_CHANGED,this.onFragChanged,this)},t._initSourceBuffer=function(){this.sourceBuffer={},this.operationQueue=new nt(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]}},t.onManifestParsed=function(e,t){var r=2;(t.audio&&!t.video||!t.altAudio)&&(r=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=r,this.details=null,l.logger.log(this.bufferCodecEventsExpected+" bufferCodec event(s) expected")},t.onMediaAttaching=function(e,t){var r=this.media=t.media;if(r&&st){var i=this.mediaSource=new st;i.addEventListener("sourceopen",this._onMediaSourceOpen),i.addEventListener("sourceended",this._onMediaSourceEnded),i.addEventListener("sourceclose",this._onMediaSourceClose),r.src=self.URL.createObjectURL(i),this._objectUrl=r.src}},t.onMediaDetaching=function(){var e=this.media,t=this.mediaSource,r=this._objectUrl;if(t){if(l.logger.log("[buffer-controller]: media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){l.logger.warn("[buffer-controller]: onMediaDetaching: "+e.message+" while calling endOfStream")}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),e&&(r&&self.URL.revokeObjectURL(r),e.src===r?(e.removeAttribute("src"),e.load()):l.logger.warn("[buffer-controller]: media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(a.Events.MEDIA_DETACHED,void 0)},t.onBufferReset=function(){var e=this;this.getSourceBufferTypes().forEach((function(t){var r=e.sourceBuffer[t];try{r&&(e.removeBufferListeners(t),e.mediaSource&&e.mediaSource.removeSourceBuffer(r),e.sourceBuffer[t]=void 0)}catch(e){l.logger.warn("[buffer-controller]: Failed to reset the "+t+" buffer",e)}})),this._initSourceBuffer()},t.onBufferCodecs=function(e,t){var r=this,i=this.getSourceBufferTypes().length;Object.keys(t).forEach((function(e){if(i){var n=r.tracks[e];if(n&&"function"==typeof n.buffer.changeType){var s=t[e],a=s.id,o=s.codec,h=s.levelCodec,d=s.container,u=s.metadata,c=(n.levelCodec||n.codec).replace(at,"$1"),f=(h||o).replace(at,"$1");if(c!==f){var g=d+";codecs="+(h||o);r.appendChangeType(e,g),l.logger.log("[buffer-controller]: switching codec "+c+" to "+f),r.tracks[e]={buffer:n.buffer,codec:o,container:d,levelCodec:h,metadata:u,id:a}}}}else r.pendingTracks[e]=t[e]})),i||(this.bufferCodecEventsExpected=Math.max(this.bufferCodecEventsExpected-1,0),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks())},t.appendChangeType=function(e,t){var r=this,i=this.operationQueue,n={execute:function(){var n=r.sourceBuffer[e];n&&(l.logger.log("[buffer-controller]: changing "+e+" sourceBuffer type to "+t),n.changeType(t)),i.shiftAndExecuteNext(e)},onStart:function(){},onComplete:function(){},onError:function(t){l.logger.warn("[buffer-controller]: Failed to change "+e+" SourceBuffer type",t)}};i.append(n,e)},t.onBufferAppending=function(e,t){var r=this,i=this.hls,n=this.operationQueue,s=this.tracks,h=t.data,d=t.type,u=t.frag,c=t.part,f=t.chunkMeta,g=f.buffering[d],p=self.performance.now();g.start=p;var m=u.stats.buffering,v=c?c.stats.buffering:null;0===m.start&&(m.start=p),v&&0===v.start&&(v.start=p);var y=s.audio,E="audio"===d&&1===f.id&&"audio/mpeg"===(null==y?void 0:y.container),S={execute:function(){if(g.executeStart=self.performance.now(),E){var e=r.sourceBuffer[d];if(e){var t=u.start-e.timestampOffset;Math.abs(t)>=.1&&(l.logger.log("[buffer-controller]: Updating audio SourceBuffer timestampOffset to "+u.start+" (delta: "+t+") sn: "+u.sn+")"),e.timestampOffset=u.start)}}r.appendExecutor(h,d)},onStart:function(){},onComplete:function(){var e=self.performance.now();g.executeEnd=g.end=e,0===m.first&&(m.first=e),v&&0===v.first&&(v.first=e);var t=r.sourceBuffer,i={};for(var n in t)i[n]=le.getBuffered(t[n]);r.appendError=0,r.hls.trigger(a.Events.BUFFER_APPENDED,{type:d,frag:u,part:c,chunkMeta:f,parent:u.type,timeRanges:i})},onError:function(e){l.logger.error("[buffer-controller]: Error encountered while trying to append to the "+d+" SourceBuffer",e);var t={type:o.ErrorTypes.MEDIA_ERROR,parent:u.type,details:o.ErrorDetails.BUFFER_APPEND_ERROR,err:e,fatal:!1};e.code===DOMException.QUOTA_EXCEEDED_ERR?t.details=o.ErrorDetails.BUFFER_FULL_ERROR:(r.appendError++,t.details=o.ErrorDetails.BUFFER_APPEND_ERROR,r.appendError>i.config.appendErrorMaxRetry&&(l.logger.error("[buffer-controller]: Failed "+i.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),t.fatal=!0,i.stopLoad())),i.trigger(a.Events.ERROR,t)}};n.append(S,d)},t.onBufferFlushing=function(e,t){var r=this,i=this.operationQueue,n=function(e){return{execute:r.removeExecutor.bind(r,e,t.startOffset,t.endOffset),onStart:function(){},onComplete:function(){r.hls.trigger(a.Events.BUFFER_FLUSHED,{type:e})},onError:function(t){l.logger.warn("[buffer-controller]: Failed to remove from "+e+" SourceBuffer",t)}}};t.type?i.append(n(t.type),t.type):this.getSourceBufferTypes().forEach((function(e){i.append(n(e),e)}))},t.onFragParsed=function(e,t){var r=this,i=t.frag,n=t.part,s=[],o=n?n.elementaryStreams:i.elementaryStreams;o[p.ElementaryStreamTypes.AUDIOVIDEO]?s.push("audiovideo"):(o[p.ElementaryStreamTypes.AUDIO]&&s.push("audio"),o[p.ElementaryStreamTypes.VIDEO]&&s.push("video")),0===s.length&&l.logger.warn("Fragments must have at least one ElementaryStreamType set. type: "+i.type+" level: "+i.level+" sn: "+i.sn),this.blockBuffers((function(){var e=self.performance.now();i.stats.buffering.end=e,n&&(n.stats.buffering.end=e);var t=n?n.stats:i.stats;r.hls.trigger(a.Events.FRAG_BUFFERED,{frag:i,part:n,stats:t,id:i.type})}),s)},t.onFragChanged=function(e,t){this.flushBackBuffer()},t.onBufferEos=function(e,t){var r=this;this.getSourceBufferTypes().reduce((function(e,i){var n=r.sourceBuffer[i];return t.type&&t.type!==i||n&&!n.ended&&(n.ended=!0,l.logger.log("[buffer-controller]: "+i+" sourceBuffer now EOS")),e&&!(n&&!n.ended)}),!0)&&this.blockBuffers((function(){var e=r.mediaSource;e&&"open"===e.readyState&&e.endOfStream()}))},t.onLevelUpdated=function(e,t){var r=t.details;r.fragments.length&&(this.details=r,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())},t.flushBackBuffer=function(){var e=this.hls,t=this.details,r=this.media,i=this.sourceBuffer;if(r&&null!==t){var n=this.getSourceBufferTypes();if(n.length){var o=t.live&&null!==e.config.liveBackBufferLength?e.config.liveBackBufferLength:e.config.backBufferLength;if((0,s.isFiniteNumber)(o)&&!(o<0)){var l=r.currentTime,h=t.levelTargetDuration,d=Math.max(o,h),u=Math.floor(l/h)*h-d;n.forEach((function(r){var n=i[r];if(n){var s=le.getBuffered(n);s.length>0&&u>s.start(0)&&(e.trigger(a.Events.BACK_BUFFER_REACHED,{bufferEnd:u}),t.live&&e.trigger(a.Events.LIVE_BACK_BUFFER_REACHED,{bufferEnd:u}),e.trigger(a.Events.BUFFER_FLUSHING,{startOffset:0,endOffset:u,type:r}))}}))}}}},t.updateMediaElementDuration=function(){if(this.details&&this.media&&this.mediaSource&&"open"===this.mediaSource.readyState){var e=this.details,t=this.hls,r=this.media,i=this.mediaSource,n=e.fragments[0].start+e.totalduration,a=r.duration,o=(0,s.isFiniteNumber)(i.duration)?i.duration:0;e.live&&t.config.liveDurationInfinity?(l.logger.log("[buffer-controller]: Media Source duration is set to Infinity"),i.duration=1/0,this.updateSeekableRange(e)):(n>o&&n>a||!(0,s.isFiniteNumber)(a))&&(l.logger.log("[buffer-controller]: Updating Media Source duration to "+n.toFixed(3)),i.duration=n)}},t.updateSeekableRange=function(e){var t=this.mediaSource,r=e.fragments;if(r.length&&e.live&&null!=t&&t.setLiveSeekableRange){var i=Math.max(0,r[0].start),n=Math.max(i,i+e.totalduration);t.setLiveSeekableRange(i,n)}},t.checkPendingTracks=function(){var e=this.bufferCodecEventsExpected,t=this.operationQueue,r=this.pendingTracks,i=Object.keys(r).length;if(i&&!e||2===i){this.createSourceBuffers(r),this.pendingTracks={};var n=this.getSourceBufferTypes();if(0===n.length)return void this.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,reason:"could not create source buffer for media codec(s)"});n.forEach((function(e){t.executeNext(e)}))}},t.createSourceBuffers=function(e){var t=this.sourceBuffer,r=this.mediaSource;if(!r)throw Error("createSourceBuffers called when mediaSource was null");var i=0;for(var n in e)if(!t[n]){var s=e[n];if(!s)throw Error("source buffer exists for track "+n+", however track does not");var h=s.levelCodec||s.codec,d=s.container+";codecs="+h;l.logger.log("[buffer-controller]: creating sourceBuffer("+d+")");try{var u=t[n]=r.addSourceBuffer(d),c=n;this.addBufferListener(c,"updatestart",this._onSBUpdateStart),this.addBufferListener(c,"updateend",this._onSBUpdateEnd),this.addBufferListener(c,"error",this._onSBUpdateError),this.tracks[n]={buffer:u,codec:h,container:s.container,levelCodec:s.levelCodec,metadata:s.metadata,id:s.id},i++}catch(e){l.logger.error("[buffer-controller]: error while trying to add sourceBuffer: "+e.message),this.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,mimeType:d})}}i&&this.hls.trigger(a.Events.BUFFER_CREATED,{tracks:this.tracks})},t._onSBUpdateStart=function(e){this.operationQueue.current(e).onStart()},t._onSBUpdateEnd=function(e){var t=this.operationQueue;t.current(e).onComplete(),t.shiftAndExecuteNext(e)},t._onSBUpdateError=function(e,t){l.logger.error("[buffer-controller]: "+e+" SourceBuffer error",t),this.hls.trigger(a.Events.ERROR,{type:o.ErrorTypes.MEDIA_ERROR,details:o.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1});var r=this.operationQueue.current(e);r&&r.onError(t)},t.removeExecutor=function(e,t,r){var i=this.media,n=this.mediaSource,a=this.operationQueue,o=this.sourceBuffer[e];if(!i||!n||!o)return l.logger.warn("[buffer-controller]: Attempting to remove from the "+e+" SourceBuffer, but it does not exist"),void a.shiftAndExecuteNext(e);var h=(0,s.isFiniteNumber)(i.duration)?i.duration:1/0,d=(0,s.isFiniteNumber)(n.duration)?n.duration:1/0,u=Math.max(0,t),c=Math.min(r,h,d);c>u?(l.logger.log("[buffer-controller]: Removing ["+u+","+c+"] from the "+e+" SourceBuffer"),o.remove(u,c)):a.shiftAndExecuteNext(e)},t.appendExecutor=function(e,t){var r=this.operationQueue,i=this.sourceBuffer[t];if(!i)return l.logger.warn("[buffer-controller]: Attempting to append to the "+t+" SourceBuffer, but it does not exist"),void r.shiftAndExecuteNext(t);i.ended=!1,i.appendBuffer(e)},t.blockBuffers=function(e,t){var r=this;if(void 0===t&&(t=this.getSourceBufferTypes()),!t.length)return l.logger.log("[buffer-controller]: Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);var i=this.operationQueue,n=t.map((function(e){return i.appendBlocker(e)}));Promise.all(n).then((function(){e(),t.forEach((function(e){var t=r.sourceBuffer[e];t&&t.updating||i.shiftAndExecuteNext(e)}))}))},t.getSourceBufferTypes=function(){return Object.keys(this.sourceBuffer)},t.addBufferListener=function(e,t,r){var i=this.sourceBuffer[e];if(i){var n=r.bind(this,e);this.listeners[e].push({event:t,listener:n}),i.addEventListener(t,n)}},t.removeBufferListeners=function(e){var t=this.sourceBuffer[e];t&&this.listeners[e].forEach((function(e){t.removeEventListener(e.event,e.listener)}))},e}();const lt=function(){function e(e){this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.hls=void 0,this.streamController=void 0,this.clientRect=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}var t,r,i=e.prototype;return i.setStreamController=function(e){this.streamController=e},i.destroy=function(){this.unregisterListener(),this.hls.config.capLevelToPlayerSize&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null},i.registerListeners=function(){var e=this.hls;e.on(a.Events.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.on(a.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.on(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this)},i.unregisterListener=function(){var e=this.hls;e.off(a.Events.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(a.Events.MANIFEST_PARSED,this.onManifestParsed,this),e.off(a.Events.BUFFER_CODECS,this.onBufferCodecs,this),e.off(a.Events.MEDIA_DETACHING,this.onMediaDetaching,this)},i.onFpsDropLevelCapping=function(t,r){e.isLevelAllowed(r.droppedLevel,this.restrictedLevels)&&this.restrictedLevels.push(r.droppedLevel)},i.onMediaAttaching=function(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null},i.onManifestParsed=function(e,t){var r=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,r.config.capLevelToPlayerSize&&t.video&&this.startCapping()},i.onBufferCodecs=function(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()},i.onMediaDetaching=function(){this.stopCapping()},i.detectPlayerSize=function(){if(this.media&&this.mediaHeight>0&&this.mediaWidth>0){var e=this.hls.levels;if(e.length){var t=this.hls;t.autoLevelCapping=this.getMaxLevel(e.length-1),t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}},i.getMaxLevel=function(t){var r=this,i=this.hls.levels;if(!i.length)return-1;var n=i.filter((function(i,n){return e.isLevelAllowed(n,r.restrictedLevels)&&n<=t}));return this.clientRect=null,e.getMaxLevelByMediaSize(n,this.mediaWidth,this.mediaHeight)},i.startCapping=function(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.hls.firstLevel=this.getMaxLevel(this.firstLevel),self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},i.stopCapping=function(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)},i.getDimensions=function(){if(this.clientRect)return this.clientRect;var e=this.media,t={width:0,height:0};if(e){var r=e.getBoundingClientRect();t.width=r.width,t.height=r.height,t.width||t.height||(t.width=r.right-r.left||e.width||0,t.height=r.bottom-r.top||e.height||0)}return this.clientRect=t,t},e.isLevelAllowed=function(e,t){return void 0===t&&(t=[]),-1===t.indexOf(e)},e.getMaxLevelByMediaSize=function(e,t,r){if(!e||!e.length)return-1;for(var i,n,s=e.length-1,a=0;a<e.length;a+=1){var o=e[a];if((o.width>=t||o.height>=r)&&(i=o,!(n=e[a+1])||i.width!==n.width||i.height!==n.height)){s=a;break}}return s},t=e,(r=[{key:"mediaWidth",get:function(){return this.getDimensions().width*this.contentScaleFactor}},{key:"mediaHeight",get:function(){return this.getDimensions().height*this.contentScaleFactor}},{key:"contentScaleFactor",get:function(){var e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}(),ht=function(){function e(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}var t=e.prototype;return t.setStreamController=function(e){this.streamController=e},t.registerListeners=function(){this.hls.on(a.Events.MEDIA_ATTACHING,this.onMediaAttaching,this)},t.unregisterListeners=function(){this.hls.off(a.Events.MEDIA_ATTACHING,this.onMediaAttaching)},t.destroy=function(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null},t.onMediaAttaching=function(e,t){var r=this.hls.config;if(r.capLevelOnFPSDrop){var i=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=i,i&&"function"==typeof i.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),r.fpsDroppedMonitoringPeriod)}},t.checkFPS=function(e,t,r){var i=performance.now();if(t){if(this.lastTime){var n=i-this.lastTime,s=r-this.lastDroppedFrames,o=t-this.lastDecodedFrames,h=1e3*s/n,d=this.hls;if(d.trigger(a.Events.FPS_DROP,{currentDropped:s,currentDecoded:o,totalDroppedFrames:r}),h>0&&s>d.config.fpsDroppedMonitoringThreshold*o){var u=d.currentLevel;l.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+u),u>0&&(-1===d.autoLevelCapping||d.autoLevelCapping>=u)&&(u-=1,d.trigger(a.Events.FPS_DROP_LEVEL_CAPPING,{level:u,droppedLevel:d.currentLevel}),d.autoLevelCapping=u,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=r,this.lastDecodedFrames=t}},t.checkFPSInterval=function(){var e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){var t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)},e}();var dt=r(408),ut=/^age:\s*[\d.]+\s*$/m;const ct=function(){function e(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=void 0,this.loader=null,this.stats=void 0,this.xhrSetup=e?e.xhrSetup:null,this.stats=new dt.LoadStats,this.retryDelay=0}var t=e.prototype;return t.destroy=function(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null},t.abortInternal=function(){var e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))},t.abort=function(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)},t.load=function(e,t,r){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=r,this.retryDelay=t.retryDelay,this.loadInternal()},t.loadInternal=function(){var e=this.config,t=this.context;if(e){var r=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0;var n=this.xhrSetup;try{if(n)try{n(r,t.url)}catch(e){r.open("GET",t.url,!0),n(r,t.url)}r.readyState||r.open("GET",t.url,!0);var s=this.context.headers;if(s)for(var a in s)r.setRequestHeader(a,s[a])}catch(e){return void this.callbacks.onError({code:r.status,text:e.message},t,r)}t.rangeEnd&&r.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),r.onreadystatechange=this.readystatechange.bind(this),r.onprogress=this.loadprogress.bind(this),r.responseType=t.responseType,self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),e.timeout),r.send()}},t.readystatechange=function(){var e=this.context,t=this.loader,r=this.stats;if(e&&t){var i=t.readyState,n=this.config;if(!r.aborted&&i>=2)if(self.clearTimeout(this.requestTimeout),0===r.loading.first&&(r.loading.first=Math.max(self.performance.now(),r.loading.start)),4===i){t.onreadystatechange=null,t.onprogress=null;var s=t.status,a="arraybuffer"===t.responseType;if(s>=200&&s<300&&(a&&t.response||null!==t.responseText)){var o,h;if(r.loading.end=Math.max(self.performance.now(),r.loading.first),h=a?(o=t.response).byteLength:(o=t.responseText).length,r.loaded=r.total=h,!this.callbacks)return;var d=this.callbacks.onProgress;if(d&&d(r,e,o,t),!this.callbacks)return;var u={url:t.responseURL,data:o};this.callbacks.onSuccess(u,r,e,t)}else r.retry>=n.maxRetry||s>=400&&s<499?(l.logger.error(s+" while loading "+e.url),this.callbacks.onError({code:s,text:t.statusText},e,t)):(l.logger.warn(s+" while loading "+e.url+", retrying in "+this.retryDelay+"..."),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,n.maxRetryDelay),r.retry++)}else self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),n.timeout)}},t.loadtimeout=function(){l.logger.warn("timeout while loading "+this.context.url);var e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))},t.loadprogress=function(e){var t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)},t.getCacheAge=function(){var e=null;if(this.loader&&ut.test(this.loader.getAllResponseHeaders())){var t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e},e}();var ft=function(){function e(){this.chunks=[],this.dataLength=0}var t=e.prototype;return t.push=function(e){this.chunks.push(e),this.dataLength+=e.length},t.flush=function(){var e,t=this.chunks,r=this.dataLength;return t.length?(e=1===t.length?t[0]:function(e,t){for(var r=new Uint8Array(t),i=0,n=0;n<e.length;n++){var s=e[n];r.set(s,i),i+=s.length}return r}(t,r),this.reset(),e):new Uint8Array(0)},t.reset=function(){this.chunks.length=0,this.dataLength=0},e}();function gt(e){var t="function"==typeof Map?new Map:void 0;return gt=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return pt(e,arguments,yt(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),vt(i,e)},gt(e)}function pt(e,t,r){return pt=mt()?Reflect.construct.bind():function(e,t,r){var i=[null];i.push.apply(i,t);var n=new(Function.bind.apply(e,i));return r&&vt(n,r.prototype),n},pt.apply(null,arguments)}function mt(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function vt(e,t){return vt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},vt(e,t)}function yt(e){return yt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},yt(e)}function Et(){return Et=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},Et.apply(this,arguments)}var St=function(){function e(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=void 0,this.response=void 0,this.controller=void 0,this.context=void 0,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||bt,this.controller=new self.AbortController,this.stats=new dt.LoadStats}var t=e.prototype;return t.destroy=function(){this.loader=this.callbacks=null,this.abortInternal()},t.abortInternal=function(){var e=this.response;e&&e.ok||(this.stats.aborted=!0,this.controller.abort())},t.abort=function(){var e;this.abortInternal(),null!==(e=this.callbacks)&&void 0!==e&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)},t.load=function(e,t,r){var i=this,n=this.stats;if(n.loading.start)throw new Error("Loader can only be used once.");n.loading.start=self.performance.now();var a=function(e,t){var r={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Et({},e.headers))};return e.rangeEnd&&r.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1)),r}(e,this.controller.signal),o=r.onProgress,l="arraybuffer"===e.responseType,h=l?"byteLength":"length";this.context=e,this.config=t,this.callbacks=r,this.request=this.fetchSetup(e,a),self.clearTimeout(this.requestTimeout),this.requestTimeout=self.setTimeout((function(){i.abortInternal(),r.onTimeout(n,e,i.response)}),t.timeout),self.fetch(this.request).then((function(r){if(i.response=i.loader=r,!r.ok){var a=r.status,h=r.statusText;throw new Tt(h||"fetch, bad network response",a,r)}return n.loading.first=Math.max(self.performance.now(),n.loading.start),n.total=parseInt(r.headers.get("Content-Length")||"0"),o&&(0,s.isFiniteNumber)(t.highWaterMark)?i.loadProgressively(r,n,e,t.highWaterMark,o):l?r.arrayBuffer():r.text()})).then((function(a){var l=i.response;self.clearTimeout(i.requestTimeout),n.loading.end=Math.max(self.performance.now(),n.loading.first);var d=a[h];d&&(n.loaded=n.total=d);var u={url:l.url,data:a};o&&!(0,s.isFiniteNumber)(t.highWaterMark)&&o(n,e,a,l),r.onSuccess(u,n,e,l)})).catch((function(t){if(self.clearTimeout(i.requestTimeout),!n.aborted){var s=t&&t.code||0,a=t?t.message:null;r.onError({code:s,text:a},e,t?t.details:null)}}))},t.getCacheAge=function(){var e=null;if(this.response){var t=this.response.headers.get("age");e=t?parseFloat(t):null}return e},t.loadProgressively=function(e,t,r,i,n){void 0===i&&(i=0);var s=new ft,a=e.body.getReader();return function o(){return a.read().then((function(a){if(a.done)return s.dataLength&&n(t,r,s.flush(),e),Promise.resolve(new ArrayBuffer(0));var l=a.value,h=l.length;return t.loaded+=h,h<i||s.dataLength?(s.push(l),s.dataLength>=i&&n(t,r,s.flush(),e)):n(t,r,l,e),o()})).catch((function(){return Promise.reject()}))}()},e}();function bt(e,t){return new self.Request(e.url,t)}var Tt=function(e){var t,r;function i(t,r,i){var n;return(n=e.call(this,t)||this).code=void 0,n.details=void 0,n.code=r,n.details=i,n}return r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,vt(t,r),i}(gt(Error));const _t=St;var Lt;!function(e){e.WIDEVINE="com.widevine.alpha",e.PLAYREADY="com.microsoft.playready"}(Lt||(Lt={}));var wt="undefined"!=typeof self&&self.navigator&&self.navigator.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;function Pt(){return Pt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},Pt.apply(this,arguments)}function At(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function Dt(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?At(Object(r),!0).forEach((function(t){It(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):At(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function It(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Rt=Dt(Dt({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:ct,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:tt,bufferController:ot,capLevelController:lt,fpsController:ht,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystemOptions:{},requestMediaKeySystemAccessFunc:wt,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0},{cueHandler:it(),enableWebVTT:!1,enableIMSC1:!1,enableCEA708Captions:!1,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:void 0,subtitleTrackController:void 0,timelineController:void 0,audioStreamController:void 0,audioTrackController:void 0,emeController:void 0,cmcdController:void 0});function Ct(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var kt=function(){function e(t){void 0===t&&(t={}),this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new ze.EventEmitter,this._autoLevelCapping=void 0,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null;var r=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');return Pt({},e,t)}(e.DefaultConfig,t);this.userConfig=t,(0,l.enableLogs)(r.debug,"Hls instance"),this._autoLevelCapping=-1,r.progressive&&function(e){var t=e.loader;t!==_t&&t!==ct?(l.logger.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1):function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1}()&&(e.loader=_t,e.progressive=!0,e.enableSoftwareAES=!0,l.logger.log("[config]: Progressive streaming enabled, using FetchLoader"))}(r);var i=r.abrController,n=r.bufferController,s=r.capLevelController,a=r.fpsController,o=this.abrController=new i(this),h=this.bufferController=new n(this),d=this.capLevelController=new s(this),u=new a(this),c=new k(this),f=new x(this),g=new G(this),p=this.levelController=new re(this),m=new ie(this),v=this.streamController=new Je(this,m);d.setStreamController(v),u.setStreamController(v);var y=[c,f,p,v];this.networkControllers=y;var E=[o,h,d,u,g,m];this.audioTrackController=this.createController(r.audioTrackController,null,y),this.createController(r.audioStreamController,m,y),this.subtitleTrackController=this.createController(r.subtitleTrackController,null,y),this.createController(r.subtitleStreamController,m,y),this.createController(r.timelineController,null,E),this.emeController=this.createController(r.emeController,null,E),this.cmcdController=this.createController(r.cmcdController,null,E),this.latencyController=this.createController(H,null,E),this.coreComponents=E}e.isSupported=function(){return function(){var e=Be();if(!e)return!1;var t=Ue(),r=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove;return!!r&&!!i}()};var t,r,i,s=e.prototype;return s.createController=function(e,t,r){if(e){var i=t?new e(this,t):new e(this);return r&&r.push(i),i}return null},s.on=function(e,t,r){void 0===r&&(r=this),this._emitter.on(e,t,r)},s.once=function(e,t,r){void 0===r&&(r=this),this._emitter.once(e,t,r)},s.removeAllListeners=function(e){this._emitter.removeAllListeners(e)},s.off=function(e,t,r,i){void 0===r&&(r=this),this._emitter.off(e,t,r,i)},s.listeners=function(e){return this._emitter.listeners(e)},s.emit=function(e,t,r){return this._emitter.emit(e,t,r)},s.trigger=function(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){l.logger.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),this.trigger(a.Events.ERROR,{type:o.ErrorTypes.OTHER_ERROR,details:o.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:e,error:t})}return!1},s.listenerCount=function(e){return this._emitter.listenerCount(e)},s.destroy=function(){l.logger.log("destroy"),this.trigger(a.Events.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((function(e){return e.destroy()})),this.networkControllers.length=0,this.coreComponents.forEach((function(e){return e.destroy()})),this.coreComponents.length=0},s.attachMedia=function(e){l.logger.log("attachMedia"),this._media=e,this.trigger(a.Events.MEDIA_ATTACHING,{media:e})},s.detachMedia=function(){l.logger.log("detachMedia"),this.trigger(a.Events.MEDIA_DETACHING,void 0),this._media=null},s.loadSource=function(e){this.stopLoad();var t=this.media,r=this.url,i=this.url=n.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});l.logger.log("loadSource:"+i),t&&r&&r!==i&&this.bufferController.hasSourceTypes()&&(this.detachMedia(),this.attachMedia(t)),this.trigger(a.Events.MANIFEST_LOADING,{url:e})},s.startLoad=function(e){void 0===e&&(e=-1),l.logger.log("startLoad("+e+")"),this.networkControllers.forEach((function(t){t.startLoad(e)}))},s.stopLoad=function(){l.logger.log("stopLoad"),this.networkControllers.forEach((function(e){e.stopLoad()}))},s.swapAudioCodec=function(){l.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()},s.recoverMediaError=function(){l.logger.log("recoverMediaError");var e=this._media;this.detachMedia(),e&&this.attachMedia(e)},s.removeLevel=function(e,t){void 0===t&&(t=0),this.levelController.removeLevel(e,t)},t=e,i=[{key:"version",get:function(){return"1.2.9"}},{key:"Events",get:function(){return a.Events}},{key:"ErrorTypes",get:function(){return o.ErrorTypes}},{key:"ErrorDetails",get:function(){return o.ErrorDetails}},{key:"DefaultConfig",get:function(){return e.defaultConfig?e.defaultConfig:Rt},set:function(t){e.defaultConfig=t}}],(r=[{key:"levels",get:function(){return this.levelController.levels||[]}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(e){l.logger.log("set currentLevel:"+e),this.loadLevel=e,this.abrController.clearTimer(),this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(e){l.logger.log("set nextLevel:"+e),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(e){l.logger.log("set loadLevel:"+e),this.levelController.manualLevel=e}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(e){l.logger.log("set firstLevel:"+e),this.levelController.firstLevel=e}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(e){l.logger.log("set startLevel:"+e),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}},{key:"capLevelToPlayerSize",get:function(){return this.config.capLevelToPlayerSize},set:function(e){var t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){this._autoLevelCapping!==e&&(l.logger.log("set autoLevelCapping:"+e),this._autoLevelCapping=e)}},{key:"bandwidthEstimate",get:function(){var e=this.abrController.bwEstimator;return e?e.getEstimate():NaN}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){var e=this.levels,t=this.config.minAutoBitrate;if(!e)return 0;for(var r=e.length,i=0;i<r;i++)if(e[i].maxBitrate>=t)return i;return 0}},{key:"maxAutoLevel",get:function(){var e=this.levels,t=this.autoLevelCapping;return-1===t&&e&&e.length?e.length-1:t}},{key:"nextAutoLevel",get:function(){return Math.min(Math.max(this.abrController.nextAutoLevel,this.minAutoLevel),this.maxAutoLevel)},set:function(e){this.abrController.nextAutoLevel=Math.max(this.minAutoLevel,e)}},{key:"playingDate",get:function(){return this.streamController.currentProgramDateTime}},{key:"mainForwardBufferInfo",get:function(){return this.streamController.getMainFwdBufferInfo()}},{key:"audioTracks",get:function(){var e=this.audioTrackController;return e?e.audioTracks:[]}},{key:"audioTrack",get:function(){var e=this.audioTrackController;return e?e.audioTrack:-1},set:function(e){var t=this.audioTrackController;t&&(t.audioTrack=e)}},{key:"subtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTrack:-1},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}},{key:"media",get:function(){return this._media}},{key:"subtitleDisplay",get:function(){var e=this.subtitleTrackController;return!!e&&e.subtitleDisplay},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}},{key:"lowLatencyMode",get:function(){return this.config.lowLatencyMode},set:function(e){this.config.lowLatencyMode=e}},{key:"liveSyncPosition",get:function(){return this.latencyController.liveSyncPosition}},{key:"latency",get:function(){return this.latencyController.latency}},{key:"maxLatency",get:function(){return this.latencyController.maxLatency}},{key:"targetLatency",get:function(){return this.latencyController.targetLatency}},{key:"drift",get:function(){return this.latencyController.drift}},{key:"forceStartLoad",get:function(){return this.streamController.forceStartLoad}}])&&Ct(t.prototype,r),i&&Ct(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();kt.defaultConfig=void 0},923:(e,t,r)=>{"use strict";r.r(t),r.d(t,{BaseSegment:()=>f,ElementaryStreamTypes:()=>i,Fragment:()=>g,Part:()=>p});var i,n=r(965),s=r(945),a=r(93),o=r(960),l=r(408);function h(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,d(e,t)}function d(e,t){return d=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},d(e,t)}function u(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function c(e,t,r){return t&&u(e.prototype,t),r&&u(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}!function(e){e.AUDIO="audio",e.VIDEO="video",e.AUDIOVIDEO="audiovideo"}(i||(i={}));var f=function(){function e(e){var t;this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams=((t={})[i.AUDIO]=null,t[i.VIDEO]=null,t[i.AUDIOVIDEO]=null,t),this.baseurl=e}return e.prototype.setByteRange=function(e,t){var r=e.split("@",2),i=[];1===r.length?i[0]=t?t.byteRangeEndOffset:0:i[0]=parseInt(r[1]),i[1]=parseInt(r[0])+i[0],this._byteRange=i},c(e,[{key:"byteRange",get:function(){return this._byteRange?this._byteRange:[]}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"url",get:function(){return!this._url&&this.baseurl&&this.relurl&&(this._url=(0,s.buildAbsoluteURL)(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""},set:function(e){this._url=e}}]),e}(),g=function(e){function t(t,r){var i;return(i=e.call(this,r)||this)._decryptdata=null,i.rawProgramDateTime=null,i.programDateTime=null,i.tagList=[],i.duration=0,i.sn=0,i.levelkey=void 0,i.type=void 0,i.loader=null,i.level=-1,i.cc=0,i.startPTS=void 0,i.endPTS=void 0,i.appendedPTS=void 0,i.startDTS=void 0,i.endDTS=void 0,i.start=0,i.deltaPTS=void 0,i.maxStartPTS=void 0,i.minEndPTS=void 0,i.stats=new l.LoadStats,i.urlId=0,i.data=void 0,i.bitrateTest=!1,i.title=null,i.initSegment=null,i.type=t,i}h(t,e);var r=t.prototype;return r.createInitializationVector=function(e){for(var t=new Uint8Array(16),r=12;r<16;r++)t[r]=e>>8*(15-r)&255;return t},r.setDecryptDataFromLevelKey=function(e,t){var r=e;return"AES-128"===(null==e?void 0:e.method)&&e.uri&&!e.iv&&((r=o.LevelKey.fromURI(e.uri)).method=e.method,r.iv=this.createInitializationVector(t),r.keyFormat="identity"),r},r.setElementaryStreamInfo=function(e,t,r,i,n,s){void 0===s&&(s=!1);var a=this.elementaryStreams,o=a[e];o?(o.startPTS=Math.min(o.startPTS,t),o.endPTS=Math.max(o.endPTS,r),o.startDTS=Math.min(o.startDTS,i),o.endDTS=Math.max(o.endDTS,n)):a[e]={startPTS:t,endPTS:r,startDTS:i,endDTS:n,partial:s}},r.clearElementaryStreamInfo=function(){var e=this.elementaryStreams;e[i.AUDIO]=null,e[i.VIDEO]=null,e[i.AUDIOVIDEO]=null},c(t,[{key:"decryptdata",get:function(){if(!this.levelkey&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkey){var e=this.sn;"number"!=typeof e&&(this.levelkey&&"AES-128"===this.levelkey.method&&!this.levelkey.iv&&a.logger.warn('missing IV for initialization segment with method="'+this.levelkey.method+'" - compliance issue'),e=0),this._decryptdata=this.setDecryptDataFromLevelKey(this.levelkey,e)}return this._decryptdata}},{key:"end",get:function(){return this.start+this.duration}},{key:"endProgramDateTime",get:function(){if(null===this.programDateTime)return null;if(!(0,n.isFiniteNumber)(this.programDateTime))return null;var e=(0,n.isFiniteNumber)(this.duration)?this.duration:0;return this.programDateTime+1e3*e}},{key:"encrypted",get:function(){var e;return!(null===(e=this.decryptdata)||void 0===e||!e.keyFormat||!this.decryptdata.uri)}}]),t}(f),p=function(e){function t(t,r,i,n,s){var a;(a=e.call(this,i)||this).fragOffset=0,a.duration=0,a.gap=!1,a.independent=!1,a.relurl=void 0,a.fragment=void 0,a.index=void 0,a.stats=new l.LoadStats,a.duration=t.decimalFloatingPoint("DURATION"),a.gap=t.bool("GAP"),a.independent=t.bool("INDEPENDENT"),a.relurl=t.enumeratedString("URI"),a.fragment=r,a.index=n;var o=t.enumeratedString("BYTERANGE");return o&&a.setByteRange(o,s),s&&(a.fragOffset=s.fragOffset+s.duration),a}return h(t,e),c(t,[{key:"start",get:function(){return this.fragment.start+this.fragOffset}},{key:"end",get:function(){return this.start+this.duration}},{key:"loaded",get:function(){var e=this.elementaryStreams;return!!(e.audio||e.video||e.audiovideo)}}]),t}(f)},960:(e,t,r)=>{"use strict";r.r(t),r.d(t,{LevelKey:()=>n});var i=r(945),n=function(){function e(e,t){this._uri=null,this.method=null,this.keyFormat=null,this.keyFormatVersions=null,this.keyID=null,this.key=null,this.iv=null,this._uri=t?(0,i.buildAbsoluteURL)(e,t,{alwaysNormalize:!0}):e}var t,r;return e.fromURL=function(t,r){return new e(t,r)},e.fromURI=function(t){return new e(t)},t=e,(r=[{key:"uri",get:function(){return this._uri}}])&&function(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}()},408:(e,t,r)=>{"use strict";r.r(t),r.d(t,{LoadStats:()=>i});var i=function(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}},965:(e,t,r)=>{"use strict";r.r(t),r.d(t,{MAX_SAFE_INTEGER:()=>n,isFiniteNumber:()=>i});var i=Number.isFinite||function(e){return"number"==typeof e&&isFinite(e)},n=Number.MAX_SAFE_INTEGER||9007199254740991},856:(e,t,r)=>{"use strict";var i;r.r(t),r.d(t,{MetadataSchema:()=>i}),function(e){e.audioId3="org.id3",e.dateRange="com.apple.quicktime.HLS",e.emsg="https://aomedia.org/emsg/ID3"}(i||(i={}))},308:(e,t,r)=>{"use strict";var i,n;r.r(t),r.d(t,{PlaylistContextType:()=>i,PlaylistLevelType:()=>n}),function(e){e.MANIFEST="manifest",e.LEVEL="level",e.AUDIO_TRACK="audioTrack",e.SUBTITLE_TRACK="subtitleTrack"}(i||(i={})),function(e){e.MAIN="main",e.AUDIO="audio",e.SUBTITLE="subtitle"}(n||(n={}))},93:(e,t,r)=>{"use strict";r.r(t),r.d(t,{enableLogs:()=>o,logger:()=>l});var i=function(){},n={trace:i,debug:i,log:i,warn:i,info:i,error:i},s=n;function a(e){var t=self.console[e];return t?t.bind(self.console,"["+e+"] >"):i}function o(e,t){if(self.console&&!0===e||"object"==typeof e){!function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];r.forEach((function(t){s[t]=e[t]?e[t].bind(e):a(t)}))}(e,"debug","log","info","warn","error");try{s.log('Debug logs enabled for "'+t+'"')}catch(e){s=n}}else s=n}var l=n},63:(e,t,r)=>{"use strict";r.r(t),r.d(t,{RemuxerTrackIdConfig:()=>l,appendUint8Array:()=>T,bin2str:()=>h,computeRawDurationFromSamples:()=>E,discardEPB:()=>P,findBox:()=>g,getDuration:()=>y,getStartDTS:()=>v,offsetStartDTS:()=>S,parseEmsg:()=>A,parseInitSegment:()=>m,parseSEIMessageFromNALu:()=>w,parseSamples:()=>_,parseSegmentIndex:()=>p,readSint32:()=>c,readUint16:()=>d,readUint32:()=>u,segmentValidRange:()=>b,writeUint32:()=>f});var i=r(145),n=r(923),s=r(181),a=Math.pow(2,32)-1,o=[].push,l={video:1,audio:2,id3:3,text:4};function h(e){return String.fromCharCode.apply(null,e)}function d(e,t){var r=e[t]<<8|e[t+1];return r<0?65536+r:r}function u(e,t){var r=c(e,t);return r<0?4294967296+r:r}function c(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}function f(e,t,r){e[t]=r>>24,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r}function g(e,t){var r=[];if(!t.length)return r;for(var i=e.byteLength,n=0;n<i;){var s=u(e,n),a=s>1?n+s:i;if(h(e.subarray(n+4,n+8))===t[0])if(1===t.length)r.push(e.subarray(n+8,a));else{var l=g(e.subarray(n+8,a),t.slice(1));l.length&&o.apply(r,l)}n=a}return r}function p(e){var t=[],r=e[0],i=8,n=u(e,i);i+=4,i+=0===r?8:16,i+=2;var s=e.length+0,a=d(e,i);i+=2;for(var o=0;o<a;o++){var l=i,h=u(e,l);l+=4;var c=2147483647&h;if(1==(2147483648&h)>>>31)return console.warn("SIDX has hierarchical references (not supported)"),null;var f=u(e,l);l+=4,t.push({referenceSize:c,subsegmentDuration:f,info:{duration:f/n,start:s,end:s+c-1}}),s+=c,i=l+=4}return{earliestPresentationTime:0,timescale:n,version:r,referencesCount:a,references:t}}function m(e){for(var t=[],r=g(e,["moov","trak"]),i=0;i<r.length;i++){var s=r[i],a=g(s,["tkhd"])[0];if(a){var o=a[0],l=0===o?12:20,d=u(a,l),c=g(s,["mdia","mdhd"])[0];if(c){var f=u(c,l=0===(o=c[0])?12:20),p=g(s,["mdia","hdlr"])[0];if(p){var m=h(p.subarray(8,12)),v={soun:n.ElementaryStreamTypes.AUDIO,vide:n.ElementaryStreamTypes.VIDEO}[m];if(v){var y=g(s,["mdia","minf","stbl","stsd"])[0],E=void 0;y&&(E=h(y.subarray(12,16))),t[d]={timescale:f,type:v},t[v]={timescale:f,id:d,codec:E}}}}}}return g(e,["moov","mvex","trex"]).forEach((function(e){var r=u(e,4),i=t[r];i&&(i.default={duration:u(e,12),flags:u(e,20)})})),t}function v(e,t){return g(t,["moof","traf"]).reduce((function(t,r){var i=g(r,["tfdt"])[0],n=i[0],s=g(r,["tfhd"]).reduce((function(t,r){var s=u(r,4),a=e[s];if(a){var o=u(i,4);1===n&&(o*=Math.pow(2,32),o+=u(i,8));var l=o/(a.timescale||9e4);if(isFinite(l)&&(null===t||l<t))return l}return t}),null);return null!==s&&isFinite(s)&&(null===t||s<t)?s:t}),null)||0}function y(e,t){for(var r=0,i=0,s=0,a=g(e,["moof","traf"]),o=0;o<a.length;o++){var l=a[o],h=g(l,["tfhd"])[0],d=t[u(h,4)];if(d){var c=d.default,f=u(h,0)|(null==c?void 0:c.flags),m=null==c?void 0:c.duration;8&f&&(m=u(h,2&f?12:8));for(var v=d.timescale||9e4,y=g(l,["trun"]),S=0;S<y.length;S++)!(r=E(y[S]))&&m&&(r=m*u(y[S],4)),d.type===n.ElementaryStreamTypes.VIDEO?i+=r/v:d.type===n.ElementaryStreamTypes.AUDIO&&(s+=r/v)}}if(0===i&&0===s){for(var b=0,T=g(e,["sidx"]),_=0;_<T.length;_++){var L=p(T[_]);null!=L&&L.references&&(b+=L.references.reduce((function(e,t){return e+t.info.duration||0}),0))}return b}return i||s}function E(e){var t=u(e,0),r=8;1&t&&(r+=4),4&t&&(r+=4);for(var i=0,n=u(e,4),s=0;s<n;s++)256&t&&(i+=u(e,r),r+=4),512&t&&(r+=4),1024&t&&(r+=4),2048&t&&(r+=4);return i}function S(e,t,r){g(t,["moof","traf"]).forEach((function(t){g(t,["tfhd"]).forEach((function(i){var n=u(i,4),s=e[n];if(s){var o=s.timescale||9e4;g(t,["tfdt"]).forEach((function(e){var t=e[0],i=u(e,4);if(0===t)i-=r*o,f(e,4,i=Math.max(i,0));else{i*=Math.pow(2,32),i+=u(e,8),i-=r*o,i=Math.max(i,0);var n=Math.floor(i/(a+1)),s=Math.floor(i%(a+1));f(e,4,n),f(e,8,s)}}))}}))}))}function b(e){var t={valid:null,remainder:null},r=g(e,["moof"]);if(!r)return t;if(r.length<2)return t.remainder=e,t;var n=r[r.length-1];return t.valid=(0,i.sliceUint8)(e,0,n.byteOffset-8),t.remainder=(0,i.sliceUint8)(e,n.byteOffset-8),t}function T(e,t){var r=new Uint8Array(e.length+t.length);return r.set(e),r.set(t,e.length),r}function _(e,t){var r=[],i=t.samples,s=t.timescale,a=t.id,o=!1;return g(i,["moof"]).map((function(l){var h=l.byteOffset-8;g(l,["traf"]).map((function(l){var d=g(l,["tfdt"]).map((function(e){var t=e[0],r=u(e,4);return 1===t&&(r*=Math.pow(2,32),r+=u(e,8)),r/s}))[0];return void 0!==d&&(e=d),g(l,["tfhd"]).map((function(d){var f=u(d,4),p=16777215&u(d,0),m=0,v=0!=(16&p),y=0,E=0!=(32&p),S=8;f===a&&(0!=(1&p)&&(S+=8),0!=(2&p)&&(S+=4),0!=(8&p)&&(m=u(d,S),S+=4),v&&(y=u(d,S),S+=4),E&&(S+=4),"video"===t.type&&(o=function(e){if(!e)return!1;var t=e.indexOf("."),r=t<0?e:e.substring(0,t);return"hvc1"===r||"hev1"===r||"dvh1"===r||"dvhe"===r}(t.codec)),g(l,["trun"]).map((function(a){var l=a[0],d=16777215&u(a,0),f=0!=(1&d),g=0,p=0!=(4&d),v=0!=(256&d),E=0,S=0!=(512&d),b=0,T=0!=(1024&d),_=0!=(2048&d),P=0,A=u(a,4),D=8;f&&(g=u(a,D),D+=4),p&&(D+=4);for(var I=g+h,R=0;R<A;R++){if(v?(E=u(a,D),D+=4):E=m,S?(b=u(a,D),D+=4):b=y,T&&(D+=4),_&&(P=0===l?u(a,D):c(a,D),D+=4),t.type===n.ElementaryStreamTypes.VIDEO)for(var C=0;C<b;){var k=u(i,I);L(o,i[I+=4])&&w(i.subarray(I,I+k),o?2:1,e+P/s,r),I+=k,C+=k+4}e+=E/s}})))}))}))})),r}function L(e,t){if(e){var r=t>>1&63;return 39===r||40===r}return 6==(31&t)}function w(e,t,r,i){var n=P(e),a=0;a+=t;for(var o=0,l=0,h=!1,c=0;a<n.length;){o=0;do{if(a>=n.length)break;o+=c=n[a++]}while(255===c);l=0;do{if(a>=n.length)break;l+=c=n[a++]}while(255===c);var f=n.length-a;if(!h&&4===o&&a<n.length){if(h=!0,181===n[a++]){var g=d(n,a);if(a+=2,49===g){var p=u(n,a);if(a+=4,1195456820===p){var m=n[a++];if(3===m){var v=n[a++],y=64&v,E=y?2+3*(31&v):0,S=new Uint8Array(E);if(y){S[0]=v;for(var b=1;b<E;b++)S[b]=n[a++]}i.push({type:m,payloadType:o,pts:r,bytes:S})}}}}}else if(5===o&&l<f){if(h=!0,l>16){for(var T=[],_=0;_<16;_++){var L=n[a++].toString(16);T.push(1==L.length?"0"+L:L),3!==_&&5!==_&&7!==_&&9!==_||T.push("-")}for(var w=l-16,A=new Uint8Array(w),D=0;D<w;D++)A[D]=n[a++];i.push({payloadType:o,pts:r,uuid:T.join(""),userData:(0,s.utf8ArrayToStr)(A),userDataBytes:A})}}else if(l<f)a+=l;else if(l>f)break}}function P(e){for(var t=e.byteLength,r=[],i=1;i<t-2;)0===e[i]&&0===e[i+1]&&3===e[i+2]?(r.push(i+2),i+=2):i++;if(0===r.length)return e;var n=t-r.length,s=new Uint8Array(n),a=0;for(i=0;i<n;a++,i++)a===r[0]&&(a++,r.shift()),s[i]=e[a];return s}function A(e){var t=e[0],r="",i="",n=0,s=0,a=0,o=0,l=0,d=0;if(0===t){for(;"\0"!==h(e.subarray(d,d+1));)r+=h(e.subarray(d,d+1)),d+=1;for(r+=h(e.subarray(d,d+1)),d+=1;"\0"!==h(e.subarray(d,d+1));)i+=h(e.subarray(d,d+1)),d+=1;i+=h(e.subarray(d,d+1)),d+=1,n=u(e,12),s=u(e,16),o=u(e,20),l=u(e,24),d=28}else if(1===t){n=u(e,d+=4);var c=u(e,d+=4),f=u(e,d+=4);for(d+=4,a=Math.pow(2,32)*c+f,Number.isSafeInteger(a)||(a=Number.MAX_SAFE_INTEGER,console.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=u(e,d),l=u(e,d+=4),d+=4;"\0"!==h(e.subarray(d,d+1));)r+=h(e.subarray(d,d+1)),d+=1;for(r+=h(e.subarray(d,d+1)),d+=1;"\0"!==h(e.subarray(d,d+1));)i+=h(e.subarray(d,d+1)),d+=1;i+=h(e.subarray(d,d+1)),d+=1}return{schemeIdUri:r,value:i,timeScale:n,presentationTime:a,presentationTimeDelta:s,eventDuration:o,id:l,payload:e.subarray(d,e.byteLength)}}},145:(e,t,r)=>{"use strict";function i(e,t,r){return Uint8Array.prototype.slice?e.slice(t,r):new Uint8Array(Array.prototype.slice.call(e,t,r))}r.r(t),r.d(t,{sliceUint8:()=>i})},729:e=>{"use strict";var t=Object.prototype.hasOwnProperty,r="~";function i(){}function n(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function s(e,t,i,s,a){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new n(i,s||e,a),l=r?r+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],o]:e._events[l].push(o):(e._events[l]=o,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(r=!1)),o.prototype.eventNames=function(){var e,i,n=[];if(0===this._eventsCount)return n;for(i in e=this._events)t.call(e,i)&&n.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},o.prototype.listeners=function(e){var t=r?r+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,a=new Array(s);n<s;n++)a[n]=i[n].fn;return a},o.prototype.listenerCount=function(e){var t=r?r+e:e,i=this._events[t];return i?i.fn?1:i.length:0},o.prototype.emit=function(e,t,i,n,s,a){var o=r?r+e:e;if(!this._events[o])return!1;var l,h,d=this._events[o],u=arguments.length;if(d.fn){switch(d.once&&this.removeListener(e,d.fn,void 0,!0),u){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,t),!0;case 3:return d.fn.call(d.context,t,i),!0;case 4:return d.fn.call(d.context,t,i,n),!0;case 5:return d.fn.call(d.context,t,i,n,s),!0;case 6:return d.fn.call(d.context,t,i,n,s,a),!0}for(h=1,l=new Array(u-1);h<u;h++)l[h-1]=arguments[h];d.fn.apply(d.context,l)}else{var c,f=d.length;for(h=0;h<f;h++)switch(d[h].once&&this.removeListener(e,d[h].fn,void 0,!0),u){case 1:d[h].fn.call(d[h].context);break;case 2:d[h].fn.call(d[h].context,t);break;case 3:d[h].fn.call(d[h].context,t,i);break;case 4:d[h].fn.call(d[h].context,t,i,n);break;default:if(!l)for(c=1,l=new Array(u-1);c<u;c++)l[c-1]=arguments[c];d[h].fn.apply(d[h].context,l)}}return!0},o.prototype.on=function(e,t,r){return s(this,e,t,r,!1)},o.prototype.once=function(e,t,r){return s(this,e,t,r,!0)},o.prototype.removeListener=function(e,t,i,n){var s=r?r+e:e;if(!this._events[s])return this;if(!t)return a(this,s),this;var o=this._events[s];if(o.fn)o.fn!==t||n&&!o.once||i&&o.context!==i||a(this,s);else{for(var l=0,h=[],d=o.length;l<d;l++)(o[l].fn!==t||n&&!o[l].once||i&&o[l].context!==i)&&h.push(o[l]);h.length?this._events[s]=1===h.length?h[0]:h:a(this,s)}return this},o.prototype.removeAllListeners=function(e){var t;return e?(t=r?r+e:e,this._events[t]&&a(this,t)):(this._events=new i,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=r,o.EventEmitter=o,e.exports=o},945:function(e){var t,r,i,n,s;t=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,r=/^(?=([^\/?#]*))\1([^]*)$/,i=/(?:\/|^)\.(?=\/)/g,n=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,s={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var n=s.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");return n.path=s.normalizePath(n.path),s.buildURLFromParts(n)}var a=s.parseURL(t);if(!a)throw new Error("Error trying to parse relative URL.");if(a.scheme)return i.alwaysNormalize?(a.path=s.normalizePath(a.path),s.buildURLFromParts(a)):t;var o=s.parseURL(e);if(!o)throw new Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var l=r.exec(o.path);o.netLoc=l[1],o.path=l[2]}o.netLoc&&!o.path&&(o.path="/");var h={scheme:o.scheme,netLoc:a.netLoc,path:null,params:a.params,query:a.query,fragment:a.fragment};if(!a.netLoc&&(h.netLoc=o.netLoc,"/"!==a.path[0]))if(a.path){var d=o.path,u=d.substring(0,d.lastIndexOf("/")+1)+a.path;h.path=s.normalizePath(u)}else h.path=o.path,a.params||(h.params=o.params,a.query||(h.query=o.query));return null===h.path&&(h.path=i.alwaysNormalize?s.normalizePath(a.path):a.path),s.buildURLFromParts(h)},parseURL:function(e){var r=t.exec(e);return r?{scheme:r[1]||"",netLoc:r[2]||"",path:r[3]||"",params:r[4]||"",query:r[5]||"",fragment:r[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(i,"");e.length!==(e=e.replace(n,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=s}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,r),s.exports}return r.m=e,r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(392).default})(),e.exports=t())},622:function(e){!function(t){var r=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,i=/^(?=([^\/?#]*))\1([^]*)$/,n=/(?:\/|^)\.(?=\/)/g,s=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,r){if(r=r||{},e=e.trim(),!(t=t.trim())){if(!r.alwaysNormalize)return e;var n=a.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");return n.path=a.normalizePath(n.path),a.buildURLFromParts(n)}var s=a.parseURL(t);if(!s)throw new Error("Error trying to parse relative URL.");if(s.scheme)return r.alwaysNormalize?(s.path=a.normalizePath(s.path),a.buildURLFromParts(s)):t;var o=a.parseURL(e);if(!o)throw new Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var l=i.exec(o.path);o.netLoc=l[1],o.path=l[2]}o.netLoc&&!o.path&&(o.path="/");var h={scheme:o.scheme,netLoc:s.netLoc,path:null,params:s.params,query:s.query,fragment:s.fragment};if(!s.netLoc&&(h.netLoc=o.netLoc,"/"!==s.path[0]))if(s.path){var d=o.path,u=d.substring(0,d.lastIndexOf("/")+1)+s.path;h.path=a.normalizePath(u)}else h.path=o.path,s.params||(h.params=o.params,s.query||(h.query=o.query));return null===h.path&&(h.path=r.alwaysNormalize?a.normalizePath(s.path):s.path),a.buildURLFromParts(h)},parseURL:function(e){var t=r.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(n,"");e.length!==(e=e.replace(s,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}};e.exports=a}()},47:(e,t)=>{"use strict";t.l=n;var r=2147483647;function i(e){if(e>r)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return t.__proto__=n.prototype,t}function n(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return o(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!n.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|d(e,t),s=i(r),a=s.write(e,t);a!==r&&(s=s.slice(0,a));return s}(e,t);if(ArrayBuffer.isView(e))return l(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(v(e,ArrayBuffer)||e&&v(e.buffer,ArrayBuffer))return function(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var i;i=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r);return i.__proto__=n.prototype,i}(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var s=e.valueOf&&e.valueOf();if(null!=s&&s!==e)return n.from(s,t,r);var a=function(e){if(n.isBuffer(e)){var t=0|h(e.length),r=i(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||y(e.length)?i(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(a)return a;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return n.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function a(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function o(e){return a(e),i(e<0?0:0|h(e))}function l(e){for(var t=e.length<0?0:0|h(e.length),r=i(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function h(e){if(e>=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|e}function d(e,t){if(n.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||v(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;for(var s=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return m(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;default:if(s)return i?-1:m(e).length;t=(""+t).toLowerCase(),s=!0}}function u(e,t,r,i){r=Number(r)||0;const n=e.length-r;i?(i=Number(i))>n&&(i=n):i=n;const s=t.length;let a;for(i>s/2&&(i=s/2),a=0;a<i;++a){const i=parseInt(t.substr(2*a,2),16);if(y(i))return a;e[r+a]=i}return a}function c(e,t,r,i){return p(m(t,e.length-r),e,r,i)}function f(e,t,r,i){return p(function(e){const t=[];for(let r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,i)}function g(e,t,r,i){return p(function(e,t){let r,i,n;const s=[];for(let a=0;a<e.length&&!((t-=2)<0);++a)r=e.charCodeAt(a),i=r>>8,n=r%256,s.push(n),s.push(i);return s}(t,e.length-r),e,r,i)}function p(e,t,r,i){let n;for(n=0;n<i&&!(n+r>=t.length||n>=e.length);++n)t[n+r]=e[n];return n}function m(e,t){var r;t=t||1/0;for(var i=e.length,n=null,s=[],a=0;a<i;++a){if((r=e.charCodeAt(a))>55295&&r<57344){if(!n){if(r>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(a+1===i){(t-=3)>-1&&s.push(239,191,189);continue}n=r;continue}if(r<56320){(t-=3)>-1&&s.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(t-=3)>-1&&s.push(239,191,189);if(n=null,r<128){if((t-=1)<0)break;s.push(r)}else if(r<2048){if((t-=2)<0)break;s.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;s.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return s}function v(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function y(e){return e!=e}"undefined"!=typeof Symbol&&null!=Symbol.species&&n[Symbol.species]===n&&Object.defineProperty(n,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),n.from=function(e,t,r){return s(e,t,r)},n.prototype.__proto__=Uint8Array.prototype,n.__proto__=Uint8Array,n.alloc=function(e,t,r){return function(e,t,r){return a(e),e<=0?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}(e,t,r)},n.allocUnsafe=function(e){return o(e)},n.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==n.prototype},n.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},n.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return n.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var i=n.allocUnsafe(t),s=0;for(r=0;r<e.length;++r){var a=e[r];if(v(a,Uint8Array)&&(a=n.from(a)),!n.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(i,s),s+=a.length}return i},n.byteLength=d,n.prototype._isBuffer=!0,n.prototype.copy=function(e,t,r,i){if(!n.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i<r&&(i=r),i===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t<i-r&&(i=e.length-t+r);var s=i-r;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,r,i);else if(this===e&&r<t&&t<i)for(var a=s-1;a>=0;--a)e[a+t]=this[a+r];else Uint8Array.prototype.set.call(e,this.subarray(r,i),t);return s},n.prototype.write=function(e,t,r,i){if(void 0===t)i="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)i=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-t;if((void 0===r||r>n)&&(r=n),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let s=!1;for(;;)switch(i){case"hex":return u(this,e,t,r);case"utf8":case"utf-8":return c(this,e,t,r);case"ascii":case"latin1":case"binary":return f(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return g(this,e,t,r);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}}},934:e=>{"use strict";function t(e,t){for(const r in t)Object.defineProperty(e,r,{value:t[r],enumerable:!0,configurable:!0});return e}e.exports=function(e,r,i){if(!e||"string"==typeof e)throw new TypeError("Please pass an Error to err-code");i||(i={}),"object"==typeof r&&(i=r,r=void 0),null!=r&&(i.code=r);try{return t(e,i)}catch(r){i.message=e.message,i.stack=e.stack;const n=function(){};return n.prototype=Object.create(Object.getPrototypeOf(e)),t(new n,i)}}},485:function(e,t,r){var i;!function(n){"use strict";function s(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function a(e,t,r,i,n,a){return s((o=s(s(t,e),s(i,a)))<<(l=n)|o>>>32-l,r);var o,l}function o(e,t,r,i,n,s,o){return a(t&r|~t&i,e,t,n,s,o)}function l(e,t,r,i,n,s,o){return a(t&i|r&~i,e,t,n,s,o)}function h(e,t,r,i,n,s,o){return a(t^r^i,e,t,n,s,o)}function d(e,t,r,i,n,s,o){return a(r^(t|~i),e,t,n,s,o)}function u(e,t){var r,i,n,a,u;e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;var c=1732584193,f=-271733879,g=-1732584194,p=271733878;for(r=0;r<e.length;r+=16)i=c,n=f,a=g,u=p,c=o(c,f,g,p,e[r],7,-680876936),p=o(p,c,f,g,e[r+1],12,-389564586),g=o(g,p,c,f,e[r+2],17,606105819),f=o(f,g,p,c,e[r+3],22,-1044525330),c=o(c,f,g,p,e[r+4],7,-176418897),p=o(p,c,f,g,e[r+5],12,1200080426),g=o(g,p,c,f,e[r+6],17,-1473231341),f=o(f,g,p,c,e[r+7],22,-45705983),c=o(c,f,g,p,e[r+8],7,1770035416),p=o(p,c,f,g,e[r+9],12,-1958414417),g=o(g,p,c,f,e[r+10],17,-42063),f=o(f,g,p,c,e[r+11],22,-1990404162),c=o(c,f,g,p,e[r+12],7,1804603682),p=o(p,c,f,g,e[r+13],12,-40341101),g=o(g,p,c,f,e[r+14],17,-1502002290),c=l(c,f=o(f,g,p,c,e[r+15],22,1236535329),g,p,e[r+1],5,-165796510),p=l(p,c,f,g,e[r+6],9,-1069501632),g=l(g,p,c,f,e[r+11],14,643717713),f=l(f,g,p,c,e[r],20,-373897302),c=l(c,f,g,p,e[r+5],5,-701558691),p=l(p,c,f,g,e[r+10],9,38016083),g=l(g,p,c,f,e[r+15],14,-660478335),f=l(f,g,p,c,e[r+4],20,-405537848),c=l(c,f,g,p,e[r+9],5,568446438),p=l(p,c,f,g,e[r+14],9,-1019803690),g=l(g,p,c,f,e[r+3],14,-187363961),f=l(f,g,p,c,e[r+8],20,1163531501),c=l(c,f,g,p,e[r+13],5,-1444681467),p=l(p,c,f,g,e[r+2],9,-51403784),g=l(g,p,c,f,e[r+7],14,1735328473),c=h(c,f=l(f,g,p,c,e[r+12],20,-1926607734),g,p,e[r+5],4,-378558),p=h(p,c,f,g,e[r+8],11,-2022574463),g=h(g,p,c,f,e[r+11],16,1839030562),f=h(f,g,p,c,e[r+14],23,-35309556),c=h(c,f,g,p,e[r+1],4,-1530992060),p=h(p,c,f,g,e[r+4],11,1272893353),g=h(g,p,c,f,e[r+7],16,-155497632),f=h(f,g,p,c,e[r+10],23,-1094730640),c=h(c,f,g,p,e[r+13],4,681279174),p=h(p,c,f,g,e[r],11,-358537222),g=h(g,p,c,f,e[r+3],16,-722521979),f=h(f,g,p,c,e[r+6],23,76029189),c=h(c,f,g,p,e[r+9],4,-640364487),p=h(p,c,f,g,e[r+12],11,-421815835),g=h(g,p,c,f,e[r+15],16,530742520),c=d(c,f=h(f,g,p,c,e[r+2],23,-995338651),g,p,e[r],6,-198630844),p=d(p,c,f,g,e[r+7],10,1126891415),g=d(g,p,c,f,e[r+14],15,-1416354905),f=d(f,g,p,c,e[r+5],21,-57434055),c=d(c,f,g,p,e[r+12],6,1700485571),p=d(p,c,f,g,e[r+3],10,-1894986606),g=d(g,p,c,f,e[r+10],15,-1051523),f=d(f,g,p,c,e[r+1],21,-2054922799),c=d(c,f,g,p,e[r+8],6,1873313359),p=d(p,c,f,g,e[r+15],10,-30611744),g=d(g,p,c,f,e[r+6],15,-1560198380),f=d(f,g,p,c,e[r+13],21,1309151649),c=d(c,f,g,p,e[r+4],6,-145523070),p=d(p,c,f,g,e[r+11],10,-1120210379),g=d(g,p,c,f,e[r+2],15,718787259),f=d(f,g,p,c,e[r+9],21,-343485551),c=s(c,i),f=s(f,n),g=s(g,a),p=s(p,u);return[c,f,g,p]}function c(e){var t,r="",i=32*e.length;for(t=0;t<i;t+=8)r+=String.fromCharCode(e[t>>5]>>>t%32&255);return r}function f(e){var t,r=[];for(r[(e.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;var i=8*e.length;for(t=0;t<i;t+=8)r[t>>5]|=(255&e.charCodeAt(t/8))<<t%32;return r}function g(e){var t,r,i="0123456789abcdef",n="";for(r=0;r<e.length;r+=1)t=e.charCodeAt(r),n+=i.charAt(t>>>4&15)+i.charAt(15&t);return n}function p(e){return unescape(encodeURIComponent(e))}function m(e){return function(e){return c(u(f(e),8*e.length))}(p(e))}function v(e,t){return function(e,t){var r,i,n=f(e),s=[],a=[];for(s[15]=a[15]=void 0,n.length>16&&(n=u(n,8*e.length)),r=0;r<16;r+=1)s[r]=909522486^n[r],a[r]=1549556828^n[r];return i=u(s.concat(f(t)),512+8*t.length),c(u(a.concat(i),640))}(p(e),p(t))}function y(e,t,r){return t?r?v(t,e):g(v(t,e)):r?m(e):g(m(e))}void 0===(i=function(){return y}.call(t,r,t,e))||(e.exports=i)}()},422:e=>{const t={ANDROID_WEB:"android-web",IOS_WEB:"iOS-web",PC_NATIVE:"PC-native",PC_WEB:"PC-web"};var r={getNetType:function(){let e=(new RegExp("nettype\\/(\\w*)").exec(i())||[,""])[1].toLowerCase();if(!e&&navigator.connection){switch(navigator.connection.type){case"ethernet":e="ethernet";break;case"cellular":e="cellular";break;default:e="wifi"}}return e},getPlatform:function(){return r.isAndroid()?t.ANDROID_WEB:r.isIOS()?t.IOS_WEB:r.isElectron()?t.PC_NATIVE:t.PC_WEB},isX5:function(){return this.isAndroid()&&/\s(TBS|X5Core)\/[\w\.\-]+/i.test(i())},isPC:function(){return!s(n("os "))&&!s(n("android[/ ]"))},isIOS:function(){return s(n("os "))},isAndroid:function(){return s(n("android[/ ]"))},isIOSSafari:function(){return this.isIOS()&&this.isSafari()},isElectron:function(){return/electron/i.test(i())},isMobile:function(){return r.isAndroid()||r.isIOS()},isSafari:function(){return/^((?!chrome|android).)*safari/i.test(i())},isFirefox:function(){return/firefox/i.test(i())},isChrome:function(){return/chrome/i.test(i())},isLocalHost:function(){return"localhost"===location.hostname},device:t,getBrowser:function(){return r.isX5()?"X5":r.isChrome()?"Chrome":r.isFirefox()?"Firefox":r.isIOSSafari()?"iOS-Safari":r.isSafari()?"Mac-Safari":"Unknown"}};function i(){return navigator.userAgent.toLowerCase()}function n(e){return""+(new RegExp(e+"(\\d+((\\.|_)\\d+)*)").exec(i())||[,0])[1]||void 0}function s(e){return parseFloat((e||"").replace(/\_/g,"."))||0}e.exports=r},77:e=>{let t;e.exports="function"==typeof queueMicrotask?queueMicrotask.bind(globalThis):e=>(t||(t=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0)))}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var s=t[i]={exports:{}};return e[i].call(s.exports,s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var i={};return(()=>{"use strict";r.d(i,{default:()=>ar});const e={DC_SIGNAL:"SIGNAL",DC_OPEN:"OPEN",DC_REQUEST:"REQUEST",DC_SEND_REQUEST:"SEND_REQUEST",DC_PIECE_NOT_FOUND:"PIECE_NOT_FOUND",DC_PIECE_ABORT:"PIECE_ABORT",DC_PIECE_CANCEL:"PIECE_CANCEL",DC_CLOSE:"CLOSE",DC_RESPONSE:"RESPONSE",DC_ERROR:"ERROR",DC_PIECE:"PIECE",DC_PIECE_DATA:"PIECE_DATA",DC_TIMEOUT:"TIMEOUT",DC_PIECE_ACK:"PIECE_ACK",DC_METADATA:"METADATA",DC_PLAT_ANDROID:"ANDROID",DC_PLAT_IOS:"IOS",DC_PLAT_WEB:"WEB",DC_CHOKE:"CHOKE",DC_UNCHOKE:"UNCHOKE",DC_HAVE:"HAVE",DC_HAVE_REVERSE:"HAVE_REVERSE",DC_LOST:"LOST",DC_GET_PEERS:"GET_PEERS",DC_PEERS:"PEERS",DC_STATS:"STATS",DC_PEER_SIGNAL:"PEER_SIGNAL",DC_PLAYLIST:"PLAYLIST",BM_LOST:"lost",BM_ADDED_SEG_:"BM_ADDED_SEG_",BM_ADDED_SN_:"BM_ADDED_SN_",BM_SEG_ADDED:"BM_SEG_ADDED",FRAG_CHANGED:"FRAG_CHANGED",FRAG_LOADED:"FRAG_LOADED",FRAG_LOADING:"FRAG_LOADING",RESTART_P2P:"RESTART_P2P",EXCEPTION:"exception",REQUESTING_MAP_HAVE:"REQUESTING_MAP_HAVE",BUILDER_MAP_HAVE:"BUILDER_MAP_HAVE",SYN_OUTPUT:"SYN_OUTPUT",SYN_ERROR:"SYN_ERROR",SYN_PARTIAL:"SYN_PARTIAL"},t={...e,SCH_DCHAVE:"SCH_DCHAVE",SCH_WAIT_PEER:"SCH_WAIT_PEER",SW_PLAYLIST:"SW_PLAYLIST",SW_GET_PLAYLIST:"SW_GET_PLAYLIST",SW_GET_MEDIA:"SW_GET_MEDIA",LEVEL_LOADED:"LEVEL_LOADED",MANIFEST_PARSED:"MANIFEST_PARSED"};var n=r(204),s=r.n(n),a=r(47);const o="__sw_proxy__",l=64e3;function h(){return!0}function d(e){return new URL(location.href).searchParams.get(e)}function u(){return Date.parse(new Date)/1e3}function c(e,t){return parseInt(Math.random()*(t-e+1)+e,10)}function f(e,t,r,i=2e3,n=!1){const s=new XMLHttpRequest;return new Promise(((a,l)=>{s.open("GET",e,!0),s.responseType="arraybuffer",s.timeout=i,s.onreadystatechange=e=>{if(4===s.readyState){const e=s.status;206===e?a(s.response):l(`status ${e}`)}},s.onerror=e=>{l("request error")},s.ontimeout=e=>{l("timeout")},s.setRequestHeader("Range",t||"bytes=0-0"),r&&r(s,e),n&&s.setRequestHeader(o,"bypass"),s.send()}))}function g(){if("undefined"==typeof window)return null;var e={RTCPeerConnection:window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection,RTCSessionDescription:window.RTCSessionDescription||window.mozRTCSessionDescription||window.webkitRTCSessionDescription,RTCIceCandidate:window.RTCIceCandidate||window.mozRTCIceCandidate||window.webkitRTCIceCandidate};return e.RTCPeerConnection?e:null}function p(e){const t=a.l.from(e),r=new a.l(e.byteLength);return t.copy(r),r}function m(){return location.protocol.startsWith("https")}function v(e,t){if(e.size<=t)return;const r=[...e.values()];do{e.delete(r.shift())}while(e.size>t)}function y(e){return e instanceof ArrayBuffer&&0!==e.byteLength}function E(e){if(!e)return{};const t=(e=e.substring(6)).split("-");if(2!==t.length)return{};const r=Number(t[0]),i=t[1]?Number(t[1]):-1;return{rangeStart:r,rangeEnd:i>=0?i+1:void 0}}const S={debug:0,info:1,warn:2,error:3,none:4};const b=class{constructor(e){this.logLevel=e,this.onlineDebug=!1,console.debug=console.log,"debug"!==e&&"info"!==e||(this.logLevel="error"),!0===e?this.logLevel="warn":!1===e?this.logLevel="none":e in S||(this.logLevel="error"),this.resetLogger()}enableDebug(){this.onlineDebug=!0;for(let e in S)this[e]=console[e]}resetLogger(){this.onlineDebug=!1;for(let e in S)S[e]<S[this.logLevel]?this[e]=h:this[e]=console[e]}get isDebugLevel(){return S[this.logLevel]<=2||this.onlineDebug}};var T=r(622),_=r.n(T),L=r(77),w=r.n(L);const P=65536;function A(e){return e.replace(/a=ice-options:trickle\s\n/g,"")}class D extends(s()){constructor(e){super(),this.channelName=e.initiator?e.channelName:null,this.initiator=e.initiator||!1,this.channelConfig=e.channelConfig||D.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},D.config,e.config),this.offerOptions=e.offerOptions||{},this.answerOptions=e.answerOptions||{},this.sdpTransform=e.sdpTransform||(e=>e),this.trickle=void 0===e.trickle||e.trickle,this.allowHalfTrickle=void 0!==e.allowHalfTrickle&&e.allowHalfTrickle,this.iceCompleteTimeout=e.iceCompleteTimeout||5e3,this.destroyed=!1,this.destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,this._wrtc=e.wrtc&&"object"==typeof e.wrtc?e.wrtc:g(),this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._senderMap=new Map,this._closingInterval=null,this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new this._wrtc.RTCPeerConnection(this.config)}catch(e){return void w()((()=>this.destroy(e)))}this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=e=>{this._onIceCandidate(e)},this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=e=>{this._setupData(e)},this._needsNegotiation()}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&"open"===this._channel.readyState}signal(e){if(!this.destroyed&&this._pc){if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}if(e.renegotiate&&this.initiator&&this._needsNegotiation(),e.candidate)if(this._pc.remoteDescription&&this._pc.remoteDescription.type)try{this._addIceCandidate(e.candidate)}catch(e){}else this._pendingCandidates.push(e.candidate);e.sdp&&this._pc.setRemoteDescription(new this._wrtc.RTCSessionDescription(e)).then((()=>{this.destroyed||(this._pendingCandidates.forEach((e=>{try{this._addIceCandidate(e)}catch(e){}})),this._pendingCandidates=[],"offer"===this._pc.remoteDescription.type&&this._createAnswer())})).catch((e=>{this.destroy(e)})),e.sdp||e.candidate||e.renegotiate||e.transceiverRequest||this.destroy(new Error("signal() called with invalid signal data"))}}_addIceCandidate(e){const t=new this._wrtc.RTCIceCandidate(e);this._pc.addIceCandidate(t).catch((e=>{var r;!t.address||t.address.endsWith(".local")?(r="Ignoring unsupported ICE candidate.",console.warn(r)):this.destroy(e)}))}send(e){if("string"==typeof e){RTCDataChannel.prototype.send.toString().includes("[native code]")&&this._channel.send(e)}else this._channel.send(e)}_needsNegotiation(){this._batchedNegotiation||(this._batchedNegotiation=!0,w()((()=>{this._batchedNegotiation=!1,!this.initiator&&this._firstNegotiation||this.negotiate(),this._firstNegotiation=!1})))}negotiate(){this.initiator?this._isNegotiating?this._queuedNegotiation=!0:setTimeout((()=>{this._createOffer()}),0):this._isNegotiating?this._queuedNegotiation=!0:this.emit("signal",{type:"renegotiate",renegotiate:!0}),this._isNegotiating=!0}destroy(e){this._destroy(e)}_destroy(e){this.destroyed||this.destroying||(this.destroying=!0,w()((()=>{if(this.destroyed=!0,this.destroying=!1,this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._channel){try{this._channel.close()}catch(e){}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch(e){}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,e&&this.emit("error",e),this.emit("close")})))}_setupData(e){if(!e.channel)return this.destroy(new Error("Data channel event is missing `channel` property"));this._channel=e.channel,this._channel.binaryType="arraybuffer","number"==typeof this._channel.bufferedAmountLowThreshold&&(this._channel.bufferedAmountLowThreshold=P),this.channelName=this._channel.label,this._channel.onmessage=e=>{this._onChannelMessage(e)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClose()},this._channel.onerror=e=>{this.destroy(e)};let t=!1;this._closingInterval=setInterval((()=>{this._channel&&"closing"===this._channel.readyState?(t&&this._onChannelClose(),t=!0):t=!1}),5e3)}get isBufferedAmountHigh(){return this._channel.bufferedAmount>P}write(e,t){if(this.destroyed)return t(new Error("cannot write after peer is destroyed"));if(this._connected){try{this.send(e)}catch(e){return this.destroy(e)}this.isBufferedAmountHigh?this._cb=t:t(null)}else this._chunk=e,this._cb=t}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._iceCompleteTimer=setTimeout((()=>{this._iceComplete||(this._iceComplete=!0,this.emit("iceTimeout"),this.emit("_iceComplete"))}),this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then((e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=A(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(this.destroyed)return;const t=this._pc.localDescription||e;this.emit("signal",{type:t.type,sdp:t.sdp})};this._pc.setLocalDescription(e).then((()=>{this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))})).catch((e=>{this.destroy(e)}))})).catch((e=>{this.destroy(e)}))}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then((e=>{if(this.destroyed)return;this.trickle||this.allowHalfTrickle||(e.sdp=A(e.sdp)),e.sdp=this.sdpTransform(e.sdp);const t=()=>{if(this.destroyed)return;const t=this._pc.localDescription||e;this.emit("signal",{type:t.type,sdp:t.sdp})};this._pc.setLocalDescription(e).then((()=>{this.destroyed||(this.trickle||this._iceComplete?t():this.once("_iceComplete",t))})).catch((e=>{this.destroy(e)}))})).catch((e=>{this.destroy(e)}))}_onConnectionStateChange(){this.destroyed||"failed"===this._pc.connectionState&&this.destroy(new Error("Connection failed."))}_onIceStateChange(){if(this.destroyed)return;const e=this._pc.iceConnectionState,t=this._pc.iceGatheringState;this.emit("iceStateChange",e,t),"connected"!==e&&"completed"!==e||(this._pcReady=!0,this._maybeReady()),"failed"===e&&this.destroy(new Error("Ice connection failed.")),"closed"===e&&this.destroy(new Error("Ice connection closed."))}getStats(e){const t=e=>("[object Array]"===Object.prototype.toString.call(e.values)&&e.values.forEach((t=>{Object.assign(e,t)})),e);0===this._pc.getStats.length?this._pc.getStats().then((r=>{const i=[];r.forEach((e=>{i.push(t(e))})),e(null,i)}),(t=>e(t))):this._pc.getStats.length>0?this._pc.getStats((r=>{if(this.destroyed)return;const i=[];r.result().forEach((e=>{const r={};e.names().forEach((t=>{r[t]=e.stat(t)})),r.id=e.id,r.type=e.type,r.timestamp=e.timestamp,i.push(t(r))})),e(null,i)}),(t=>e(t))):e(null,[])}_maybeReady(){if(this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;const e=()=>{this.destroyed||this.getStats(((t,r)=>{if(this.destroyed)return;t&&(r=[]);const i={},n={},s={};let a=!1;r.forEach((e=>{"remotecandidate"!==e.type&&"remote-candidate"!==e.type||(i[e.id]=e),"localcandidate"!==e.type&&"local-candidate"!==e.type||(n[e.id]=e),"candidatepair"!==e.type&&"candidate-pair"!==e.type||(s[e.id]=e)}));const o=e=>{a=!0;let t=n[e.localCandidateId];t&&(t.ip||t.address)?(this.localAddress=t.ip||t.address,this.localPort=Number(t.port)):t&&t.ipAddress?(this.localAddress=t.ipAddress,this.localPort=Number(t.portNumber)):"string"==typeof e.googLocalAddress&&(t=e.googLocalAddress.split(":"),this.localAddress=t[0],this.localPort=Number(t[1])),this.localAddress&&(this.localFamily=this.localAddress.includes(":")?"IPv6":"IPv4");let r=i[e.remoteCandidateId];r&&(r.ip||r.address)?(this.remoteAddress=r.ip||r.address,this.remotePort=Number(r.port)):r&&r.ipAddress?(this.remoteAddress=r.ipAddress,this.remotePort=Number(r.portNumber)):"string"==typeof e.googRemoteAddress&&(r=e.googRemoteAddress.split(":"),this.remoteAddress=r[0],this.remotePort=Number(r[1])),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4")};if(r.forEach((e=>{"transport"===e.type&&e.selectedCandidatePairId&&o(s[e.selectedCandidatePairId]),("googCandidatePair"===e.type&&"true"===e.googActiveConnection||("candidatepair"===e.type||"candidate-pair"===e.type)&&e.selected)&&o(e)})),a||Object.keys(s).length&&!Object.keys(n).length){if(this._connecting=!1,this._connected=!0,this._chunk){try{this.send(this._chunk)}catch(t){return this.destroy(t)}this._chunk=null;const e=this._cb;this._cb=null,e(null)}"number"!=typeof this._channel.bufferedAmountLowThreshold&&(this._interval=setInterval((()=>this._onInterval()),150),this._interval.unref&&this._interval.unref()),this.emit("connect")}else setTimeout(e,100)}))};e()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>P||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||("stable"===this._pc.signalingState&&(this._isNegotiating=!1,this._sendersAwaitingStable.forEach((e=>{this._pc.removeTrack(e),this._queuedNegotiation=!0})),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._queuedNegotiation=!1,this._needsNegotiation()):this.emit("negotiated")),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidate(e){this.destroyed||(e.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex,sdpMid:e.candidate.sdpMid}}):e.candidate||this._iceComplete||(this._iceComplete=!0,this.emit("_iceComplete")),e.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(e){if(this.destroyed)return;let t=e.data;t instanceof ArrayBuffer&&(t=a.l.from(t)),this.emit("data",t)}_onChannelBufferedAmountLow(){if(this.destroyed||!this._cb)return;const e=this._cb;this._cb=null,e(null)}_onChannelOpen(){this._connected||this.destroyed||(this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||this.destroy()}}D.config={iceServers:[{urls:["stun:stun.l.google.com:19302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"},D.channelConfig={};const I=D;class R{constructor(e,t,r,i,n=0){this.sn=e,this.segId=t,this.data=r,this.fromPeerId=i,this.level=n||0}static fromSegment(e){const t=new R(e.sn,e.segId,e.data,e.fromPeerId,e.level);return t.from=e.from,t}get size(){return this.data.byteLength}get isSequential(){return this.sn>=0}}var C=r(422),k=r.n(C);class x extends(s()){static get defaultPacketSize(){return l}static get VERSION(){return"8"}constructor(e,t,r,i,n,s={}){super(),this.channel=e.fetcher.channelId,this.logger=e.logger,this.config=n,this.isInitiator=i,this.options=s,this.intermediator=s.intermediator||null,this.signalMsgs=[],this.assignPeerId(t,r),this.platform="unknown",this.super=!1,this.mobile=!1,this.mobileWeb=!1,this.mobileNet=!1,this.connected=!1,this.msgQueue=[],this.miss=0,this.notifySet=new Set,this.bufArr=[],this.packetSize=l,this.sendReqQueue=[],this.downloading=!1,this.uploading=!1,this.choked=!1,this.streamListeners=[],this.pieceMsg={},this.uploadInterrupter={targetSegId:void 0,currentSegId:void 0,canceled:!1},this.datasToSend=[],this.bytesUploaded=0,this.dataWriting=!1,this.timeSendRequest=0,this.timeReceivePiece=0,this.timeSendPiece=0,this.weight=0,this.peersConnected=1,this.uploadSpeed=0,this.gotPeers=!1,this.currentLevel=0,this.currentPos=0,this.useBackupSignal=!1,this.webRTCConfig={};const{stuns:a}=this.options;if(a&&a.length>0){const e=[];a.forEach((t=>{this.logger.info(`use stun ${t}`),e.push({urls:t})})),this.webRTCConfig.iceServers=e}this.config.webRTCConfig&&(this.webRTCConfig={...this.config.webRTCConfig,...this.webRTCConfig}),this.playlistMap=new Map,this._initPeerChannel(),this.notFatalClosed=!1,this.startSN=Number.MAX_SAFE_INTEGER,this.endSN=-1,this._loadedBytes=0}assignPeerId(t,r){this.remotePeerId=r,this.channelId=this.isInitiator?`${t}-${r}`:`${r}-${t}`,r&&(this.timeJoin=u(),this.dataExchangeTs=this.timeJoin,this.gotStatsTs=this.timeJoin,this._startTimer()),setTimeout((()=>{for(let t of this.signalMsgs)this.emit(e.DC_SIGNAL,t,!0)}),0)}_startTimer(){this.connTimeout=setTimeout((()=>{this.logger.warn(`dc ${this.channelId} connection timeout`),this.emit(e.DC_TIMEOUT)}),25e3)}get isAvailable(){return this.downloadNum<2&&!this.choked}get isAvailableUrgently(){return!this.downloading&&!this.choked}cancelDownload(t,r,i){if(i&&this.downloading&&!(this.streamListeners.length>0||this.remainAttachments<=2))return this.logger.info(`cancel download ${i} remain packets ${this.remainAttachments}`),this.timeReceivePiece=0,this.sendJson({event:e.DC_PIECE_CANCEL,sn:t,level:r,seg_id:i})}addStreamListener(e,t,r){this.streamListeners.push({handler:r,peerId:t})}removeStreamListener(e){this.streamListeners=this.streamListeners.filter((t=>t.peerId!==e||(t.handler(void 0,void 0,!0,"aborted by cancel"),!1)))}_initPeerChannel(){const t=new I({initiator:this.isInitiator,trickle:this.options.trickle||!1,config:this.webRTCConfig});this._datachannel=t,t.on("error",(t=>{let r=!0;"Ice connection failed."===t.message&&this.notFatalClosed&&(r=!1),this.emit(e.DC_ERROR,r)})),t.on("signal",(t=>{this.signalMsgs.push(t),this.emit(e.DC_SIGNAL,t)}));t.on("connect",(()=>{for(this.logger.info(`datachannel CONNECTED to ${this.remotePeerId} from ${this.intermediator?"peer":"server"}`),this.connected=!0,clearTimeout(this.connTimeout),this.signalMsgs=[],this.emit(e.DC_OPEN);this.msgQueue.length>0;){let e=this.msgQueue.shift();this.emit(e.event,e)}})),t.on("data",(t=>{const{logger:r}=this;if("string"==typeof t){let i=JSON.parse(t);if(!i)return void r.error("dc received string is null");if(!this.connected)return void this.msgQueue.push(i);let n,s=i.event;switch(n=s!==e.DC_PLAYLIST&&s!==e.DC_PEER_SIGNAL?`string: ${t}`:`event: ${s}`,r.debug(`datachannel receive ${n} from ${this.remotePeerId}`),s){case e.DC_HAVE:if(this.emit(i.event,i),!i.sn)return;this.config.live||(i.sn<this.startSN&&(this.startSN=i.sn),i.sn>this.endSN&&(this.endSN=i.sn));break;case e.DC_PIECE:this.downloading=!0,this.dataExchangeTs=u(),this.timeReceivePiece=performance.now(),this.pieceMsg=i,this._prepareForBinary(i.attachments,i.seg_id,i.sn,i.size),this.emit(i.event,i);break;case e.DC_PIECE_CANCEL:this.uploadInterrupter.targetSegId=i.seg_id,this.emit(i.event,i);break;case e.DC_PIECE_NOT_FOUND:this._sendNextReq()||(this.downloading=!1),this.emit(i.event,i);break;case e.DC_REQUEST:this._handleRequestMsg(i);break;case e.DC_PIECE_ACK:this.uploadInterrupter.canceled||(this._handlePieceAck(i.size,i.miss),this.emit(i.event,i));break;case e.DC_STATS:this._handleStats(i);break;case e.DC_PLAYLIST:this.config.sharePlaylist&&this._handlePlaylist(i);break;case e.DC_METADATA:this._handleMetadata(i);break;case e.DC_PIECE_ABORT:this.downloading&&(this._notifyDownloadListenersAbort("aborted by upstream peer"),this.emit(e.DC_PIECE_ABORT,i));break;case e.DC_CHOKE:r.info(`choke peer ${this.remotePeerId}`),this.choked=!0;break;case e.DC_UNCHOKE:r.info(`unchoke peer ${this.remotePeerId}`),this.choked=!1;break;case e.DC_CLOSE:this.emit(i.event,i.fatal||!1);break;default:this.emit(i.event,i)}}else{if(!t)return void r.error("datachannel on data is undefined!");if(!this.downloading)return void r.warn(`peer not downloading, data size ${t.byteLength} pieceMsg ${JSON.stringify(this.pieceMsg)}`);this._handleBinaryMsg(t)}})),t.once("close",(()=>{this.emit(e.DC_CLOSE,!1)})),t.on("iceStateChange",((e,t)=>{"disconnected"===e&&(this.logger.warn(`${this.remotePeerId} disconnected`),this.connected=!1)}))}sendJson(t){t.event!==e.DC_PLAYLIST&&t.event!==e.DC_PEER_SIGNAL?this.logger.debug(`dc bufferSize ${this._datachannel.bufferSize} send ${JSON.stringify(t)} to ${this.remotePeerId}`):this.logger.debug(`dc send event ${t.event} to ${this.remotePeerId}`);const r=JSON.stringify(t);return r.length>l?(this.logger.error("string to send is too large"),!1):this.send(r,!1)}send(e,t=!0){return t?(this.datasToSend.push(e),this.dataWriting||this._sendDataSync(),!0):this.sendImmediately(e)}_checkIfNeedInterrupt(){const{targetSegId:t,currentSegId:r,canceled:i}=this.uploadInterrupter;return!!i||!(!t||t!==r)&&(this.logger.info("cancel send data"),this.sendMsgPieceAbort(`${r} transfer canceled`),this.datasToSend=[],this.uploadInterrupter.canceled=!0,this._handlePieceAck(this.bytesUploaded,0),this.emit(e.DC_PIECE_ACK,{seg_id:r,size:this.bytesUploaded,canceled:!0}),!0)}_sendDataSync(){if(this._checkIfNeedInterrupt()||0===this.datasToSend.length)return void(this.dataWriting=!1);this.dataWriting=!0;const t=this.datasToSend.shift();t?(this.bytesUploaded+=t.byteLength,this._datachannel.write(t,(t=>{if(t)return this.dataWriting=!1,this.logger.warn(t.message),void this.emit(e.DC_ERROR,!1);this._sendDataSync()}))):this.logger.error("sendDataSync data is undefined!")}sendImmediately(t){if(this._datachannel.connected)try{return this._datachannel.send(t),!0}catch(t){this.logger.warn(`datachannel ${this.channelId} send data failed, close it`),this.emit(e.DC_ERROR,!1)}return!1}sendMsgHave(t,r,i={}){const n=i.reverse||void 0;delete i.reverse,this.sendJson({event:n?e.DC_HAVE_REVERSE:e.DC_HAVE,sn:t,seg_id:r,...i})}sendPieceNotFound(t,r,i={}){this.uploading=!1,this.sendJson({event:e.DC_PIECE_NOT_FOUND,seg_id:r,sn:t,...i})}sendPeers(t){this.sendJson({event:e.DC_PEERS,peers:t})}sendPeersRequest(){this.sendJson({event:e.DC_GET_PEERS})}sendMsgStats(t,r={}){const i={event:e.DC_STATS,total_conns:t,...r};this.sendJson(i)}sendMsgPlaylist(t,r,i){const n=this.playlistMap.get(t);if(n&&n.seq>=i)return;const s={event:e.DC_PLAYLIST,url:t,data:r,seq:i};this.playlistMap.set(t,{data:r,seq:i}),this.sendJson(s)}sendMsgSignal(t,r,i){return this.sendJson({event:e.DC_PEER_SIGNAL,action:"signal",to_peer_id:t,from_peer_id:r,data:i})}sendMsgSignalReject(t,r,i,n=!1){return this.sendJson({event:e.DC_PEER_SIGNAL,action:"reject",to_peer_id:t,from_peer_id:r,reason:i,fatal:n})}sendMetaData(t,r,i,n=!1){this.isInitiator&&(this.timeSendRequest=performance.now()),this.sendJson({event:e.DC_METADATA,field:t,platform:e.DC_PLAT_WEB,mobile:!!k().isMobile(),mobile_net:n,channel:this.channel,version:"2.8.4",sequential:r,peers:i})}sendPartialBuffer(e,t,r={}){this.sendMsgPiece(e,r);for(let e=0;e<t.length;e++)this.send(t[e])}sendMsgPiece(e,t={}){const{targetSegId:r}=this.uploadInterrupter;if(r&&r===e.seg_id)return this.logger.info("cancel send piece msg"),this.sendMsgPieceAbort(`${r} piece canceled`),void(this.uploadInterrupter.canceled=!0);this.uploadInterrupter={currentSegId:e.seg_id,targetSegId:void 0,canceled:!1},this.datasToSend=[],this.bytesUploaded=0,e.ext||(e.ext={}),e.ext.from&&t.from&&(t.from=`${e.ext.from}->${t.from}`),t.incompletes&&e.ext.incompletes&&(t.incompletes+=e.ext.incompletes),t=Object.assign({},e.ext,t);const i={...e,ext:t};this.sendJson(i)}sendBuffer(t,r,i,n={}){const s=n.reverse||void 0;if(delete n.reverse,!i)return void this.logger.error("sendBuffer payload is undefined!");let a=i.byteLength,o=0,l=0;a%this.packetSize==0?l=a/this.packetSize:(l=Math.floor(a/this.packetSize)+1,o=a%this.packetSize);let h={event:e.DC_PIECE,attachments:l,seg_id:r,sn:t,level:n.level,size:a,reverse:s};delete n.level,this.sendMsgPiece(h,n);const d=function(e,t,r,i){let n=[];if(i){let s;for(let i=0;i<r-1;i++)s=e.slice(i*t,(i+1)*t),n.push(s);s=e.slice(e.byteLength-i,e.byteLength),n.push(s)}else{let i;for(let s=0;s<r;s++)i=e.slice(s*t,(s+1)*t),n.push(i)}return n}(i,this.packetSize,l,o);this._sendBufferArray(d,s),this.uploading=!1,this.timeSendPiece=performance.now()}get downloadNum(){return this.downloading?this.sendReqQueue.length+1:0}requestDataById(t,r,i=!1,n={}){const s={event:e.DC_REQUEST,seg_id:t,sn:r,...n,urgent:i};this.downloading?(this.logger.info(`${this.remotePeerId} add req ${t} in queue`),i?this.sendReqQueue.unshift(s):this.sendReqQueue.push(s)):this._realRequestData(s)}requestDataBySN(t,r=!1,i={}){const n={event:e.DC_REQUEST,sn:t,...i,urgent:r};this.downloading?(this.logger.info(`add req ${t} in queue`),r?this.sendReqQueue.unshift(n):this.sendReqQueue.push(n)):this._realRequestData(n)}_sendBufferArray(e,t=!1){const r=t?e.reverse():e;for(let e=0;e<r.length;e++)this.send(r[e])}_realRequestData(t){this.sendJson(t),this.timeSendRequest=performance.now(),this.downloading=!0,this.emit(e.DC_SEND_REQUEST)}shouldWaitForRemain(e){return 0!==this.bufArrSize&&(0!==this.timeReceivePiece&&this.currentLoadSpeed()>=this.minRequiredSpeed(e))}close(t){t||(this.notFatalClosed=!0),this.emit(e.DC_CLOSE,t)}receiveSignal(e){e&&this._datachannel.signal(e)}_notifyDownloadListenersAbort(e){for(let t of this.streamListeners){const{handler:r}=t;r(void 0,void 0,!0,e)}this.streamListeners=[]}destroy(t=!0){this.logger.info(`destroy datachannel ${this.channelId}`),this.chokeTimer&&clearTimeout(this.chokeTimer),this.connTimeout&&clearTimeout(this.connTimeout),this.uploading&&this.sendMsgPieceAbort("peer is closing"),this._notifyDownloadListenersAbort("upstream peer is closed");let r={event:e.DC_CLOSE,fatal:t};this.sendJson(r),this._datachannel.removeAllListeners(),this.removeAllListeners(),this._datachannel.destroy()}_handleBinaryMsg(t){const{attachments:r,level:i,reverse:n}=this.pieceMsg;this.listenerCount(e.DC_RESPONSE)>0&&this.bufArr.push(t),this._loadedBytes+=t.byteLength,this.remainAttachments--;let s=n?this.remainAttachments+1:r-this.remainAttachments;const a=0===this.remainAttachments;if(this.emit(e.DC_PIECE_DATA,this.bufSN,this.segId,t,s,a,this.pieceMsg),this.streamListeners.length>0)for(let e of this.streamListeners){const{handler:r}=e;r(this.bufSN,this.segId,!1,t,a)}if(a){if(this.streamListeners=[],this.timeSendRequest>0)if(this.super)this.weight=1;else{const e=this.expectedSize/(performance.now()-this.timeSendRequest);this.weight=this.weight>0?.6*this.weight+.4*e:e}this.sendJson({event:e.DC_PIECE_ACK,sn:this.bufSN,seg_id:this.segId,level:i,size:this.expectedSize,miss:this.miss||void 0}),this.timeSendRequest=0,this.timeReceivePiece=0,this._sendNextReq()||(this.downloading=!1),this._handleBinaryData(n)}}_sendNextReq(){if(this.sendReqQueue.length>0){const e=this.sendReqQueue.shift();return this.logger.info(`get msg from sendReqQueue ${JSON.stringify(e)}`),this._realRequestData(e),!0}return!1}_handlePlaylist(e){const{url:t,data:r,seq:i}=e;this.playlistMap.set(t,{data:r,seq:i})}getLatestPlaylist(e,t){if(!this.playlistMap.has(e))return null;const r=this.playlistMap.get(e);return r.seq<=t||r.seq>t+2?null:r}_handleMetadata(t){const{logger:r}=this;if(this.isInitiator){const e=performance.now()-this.timeSendRequest;e>0&&(this.weight=1e5/e,r.info(`handle Metadata from ${this.remotePeerId} initial weight ${this.weight}`)),this.timeSendRequest=0}const i=t.channel;if(this.channel!==i)return r.error(`peer channel ${i} not matched!`),void this.emit(e.DC_ERROR,!0);if(t.super){r.info(`got super peer ${this.remotePeerId}`),this.super=!0;const{token:i}=this.config;if(i&&t.token!==i)return r.warn(`super peer token ${t.token} not matched!`),void this.emit(e.DC_ERROR,!0)}switch(t.platform){case e.DC_PLAT_ANDROID:this.platform=e.DC_PLAT_ANDROID;break;case e.DC_PLAT_IOS:this.platform=e.DC_PLAT_IOS;break;case e.DC_PLAT_WEB:this.platform=e.DC_PLAT_WEB}if(this.mobile=t.mobile||!1,this.mobileNet=t.mobile_net||!1,this.mobileWeb=this.mobile&&this.platform===e.DC_PLAT_WEB||!1,this.sequential=t.sequential,r.info(`${this.remotePeerId} platform ${this.platform} sequential ${this.sequential}`),t.peers&&(this.peersConnected+=t.peers,r.info(`${this.remotePeerId} now has ${this.peersConnected} peers`)),this.emit(e.DC_METADATA,t),t.field&&!this.config.live&&t.sequential){const{field:e}=t;if(Array.isArray(e))this._handleField(e);else for(let t in e)this._handleField(e[t])}}_handleField(e){e.forEach((e=>{e>=0&&(e<this.startSN&&(this.startSN=e),e>this.endSN&&(this.endSN=e))}))}_handleStats(e){this.gotStatsTs=u();const t=e.total_conns;t>0&&this.peersConnected!==t&&(this.peersConnected=t,this.logger.info(`${this.remotePeerId} now has ${this.peersConnected} peers`)),e.level&&(this.currentLevel=e.level),e.pos&&(this.currentPos=e.pos)}_handleRequestMsg(t){if(this.dataExchangeTs=u(),this.uploading)return this.logger.warn(`${this.remotePeerId} is uploading when receive request`),void this.sendPieceNotFound(t.sn,t.seg_id,{level:t.level});this.uploading=!0,this.emit(e.DC_REQUEST,t)}_handlePieceAck(e,t){0!==this.timeSendPiece&&(this.uploadSpeed=Math.round(e/(performance.now()-this.timeSendPiece)*2),this.timeSendPiece=0,this.logger.info(`${this.remotePeerId} uploadSpeed is ${this.uploadSpeed}`)),t>0&&this.logger.warn(`peer ${this.remotePeerId} miss ${t}`)}_prepareForBinary(e,t,r,i){this.bufArr=[],this._loadedBytes=0,this.remainAttachments=e,this.segId=t,this.bufSN=r,this.expectedSize=i}_handleBinaryData(t=!1){if(this.listenerCount(e.DC_RESPONSE)>0){t&&this.bufArr.reverse();let r=a.l.concat(this.bufArr);const i=r.byteLength;if(i===this.expectedSize){let t=r.buffer;const i=new R(this.bufSN,this.segId,t,this.remotePeerId,this.pieceMsg.level);this.emit(e.DC_RESPONSE,i,this.weight)}else this.logger.error(`${this.segId} expectedSize ${this.expectedSize} != byteLength ${i}`)}this.segId="",this.bufArr=[]}checkIfNeedChoke(e=!1){const{logger:t}=this,r=performance.now()-this.timeSendRequest;if(!e&&r<1500)t.info(`duration ${r} no need choke`);else if(this.miss++,t.info(`${this.remotePeerId} miss ${this.miss}`),this.miss>2&&!this.choked){this.choked=!0;const e=30*this.miss;e<=150?(t.warn(`datachannel ${this.channelId} is choked`),this.chokeTimer=setTimeout((()=>{this.choked=!1,t.warn(`datachannel ${this.channelId} is unchoked`)}),1e3*e)):t.warn(`datachannel ${this.channelId} is choked permanently`)}}get bufArrSize(){return this.downloading?this.pieceMsg.attachments-this.remainAttachments:0}loadtimeout(){const{logger:e,pieceMsg:t}=this;return e.warn(`timeout while downloading from ${this.remotePeerId}, ${this.bufArrSize} of ${t.attachments} packets loaded`),this.checkIfNeedChoke(),!0}sendMsgPieceAbort(t){(this.uploading||0!==this.datasToSend.length)&&(this.uploading=!1,this.sendJson({event:e.DC_PIECE_ABORT,reason:t}))}loadedBytes(){return this._loadedBytes}currentLoadSpeed(){return 0===this.timeReceivePiece?0:this.loadedBytes()/(performance.now()-this.timeReceivePiece)}minRequiredSpeed(e){return(this.pieceMsg.size-this.loadedBytes())/e}}const O=x,M={DPlayer:"dplayer",CBPlayer:"cbplayer",jwplayer:"jwplayer",videojs:"videojs",Clappr:"clappr",ckplayer:"ckplayer",MediaElementPlayer:"mediaelement",MediaElement:"mediaelement",TcPlayer:"tcplayer",flowplayer:"flowplayer",Chimee:"chimee",ChimeePlayer:"chimee",HlsJsPlayer:"xgplayer",fluidPlayer:"fluidplayer",OpenPlayer:"openplayer",Plyr:"plyr",Playerjs:"playerjs",Aliplayer:"aliplayer",shaka:"shakaplayer"};function N(){let e;for(let t in M)if(window[t]){e=M[t];break}return e}const F="nllL",B="d3NzJ",U="==",G="TNBLy9z",$="aWduY",H="mNvbQ",j="WwuY2RuY";class W extends(s()){constructor(e={}){if(super(),this.p2pEnabled=!(!1===e.p2pEnabled||"0"===d("_p2p")),e.tag&&e.tag.length>20)throw new Error("Tag is too long");if(e.appName&&e.appName.length>30)throw new Error("appName is too long");if(e.appId&&e.appId.length>30)throw new Error("appId is too long");if(e.token&&e.token.length>20)throw new Error("Token is too long")}initLogger(){const{config:e}=this;e.showSlogan&&"en"==("zh-CN"===(navigator.language||navigator.userLanguage)?"cn":"en")&&console.log(`%cLet the browsers become your unlimitedly scalable CDN!\n%c${window.atob("aHR0cHM6Ly9zd2FybWNsb3VkLm5ldC9lbi8=")}`,"color: dodgerblue; padding:20px 0; font-size: x-large","font-size: medium; padding-bottom:15px");const t=new b(e.logLevel);return e.logger=this.logger=t,t}getExtraForStats(){return{}}getExtraForPeersRequest(){const e={};return e.num_want=this._getNumWant(),e}_getNumWant(){const{tracker:e}=this;if(!e.scheduler)return;const t=e.scheduler.peersNum;return t>0&&e.maxConnsActive-t>0?e.maxConnsActive-t:void 0}makeChannelId(e,t){if(!e||"string"!=typeof e){const e="token is required while using customized channelId!";throw console.error(e),new Error(e)}return"function"==typeof t?(r,i)=>`${e}-${t(r,i)}`:()=>`${e}-${t}`}makeSignalId(){let e="";const{config:t}=this,r=decodeURIComponent(window.atob(B+G+$+j+F+H+U)),{wsSignalerAddr:i}=t;if(i){let n;"object"==typeof i?(i.main||(i.main=r),n=i.main):"string"==typeof i&&(n=i,t.wsSignalerAddr={main:n}),n===r&&(n=void 0),n&&!t.wsSignalerAddr.backup&&(e=_().parseURL(n).netLoc.substr(2))}else t.wsSignalerAddr={main:r,byDefault:!0};return e}get commonBrowserInfo(){const e=k().getPlatform(),t=k().getNetType()||"wifi";this.netType=t;const{main:r,backup:i,byDefault:n}=this.config.wsSignalerAddr||{};return{signal:n?void 0:r,signal2:i,device:e,netType:t,player:N()||void 0}}get isMobileNet(){return"wifi"!==this.netType&&"ethernet"!==this.netType}setupWindowListeners(e){const t=["iPad","iPhone"].indexOf(navigator.platform)>=0?"pagehide":"beforeunload",r=()=>{this.fetcher&&this.fetcher.postStatsWithBeacon(),this.p2pEnabled&&this.disableP2P(),window.removeEventListener(t,r)};e?window.removeEventListener(t,r):window.addEventListener(t,r)}destroy(){this.disableP2P(!0),this.removeAllListeners(),this.setupWindowListeners(!0)}enableP2P(){return this.p2pEnabled?null:(this.logger&&this.logger.info("enable P2P"),this.config.p2pEnabled=this.p2pEnabled=!0,this.browserInfo?(this._init(this.channel,this.browserInfo),this):null)}get version(){return W.version}static isSupported(){const e=g();return!(!e||void 0===e.RTCPeerConnection.prototype.createDataChannel)}static get TrackerZone(){return{CN:"eu",EU:"eu",HK:"hk",USA:"us"}}}W.version="2.8.4",W.protocolVersion=O.VERSION;const V=W;function q(e,t){let r;if(e&&("string"==typeof e?r=document.querySelector(e):e instanceof HTMLMediaElement&&(r=e)),!r){const e=[...document.getElementsByTagName("video"),...document.getElementsByTagName("audio")];1===e.length?r=e[0]:(t&&(r=e.find((e=>e.src===t))),r||(r=e.find((e=>e.currentTime>0))))}return r}function z(e,t,r,i=0,n=0){const s=l;let a=i,o=n||r-1;const h=Math.floor(r/s),d=r%s>0?h+1:h;if(e>=0&&(a+=(e+1)*s),t>=0&&t<d){o-=r%s+(d-t-1)*s}return{rangeStart:a,rangeEnd:o+1}}let K={wsMaxRetries:10,p2pEnabled:!0,wifiOnly:!1,memoryCacheLimit:{pc:419430400,mobile:104857600},dcDownloadTimeout:25,logLevel:"error",tag:"",webRTCConfig:{},token:void 0,appName:void 0,appId:void 0,prefetchNum:5,showSlogan:!0,trickleICE:!0,announceLocation:"eu",trackerZone:void 0,geoIpPreflight:!0,getStats:function(e,t,r){},getPeerId:function(e){},getPeersInfo:function(e){}};const Y={...K,httpLoadTime:0,sharePlaylist:!1,useHttpRange:!0,hlsjsInstance:null,proxyOnly:!1,p2pBlackList:["aac","mp3","vtt","webvtt","key"],live:!0,swFile:"./sw.js",swScope:"./",swAutoRegister:!0,mediaElem:void 0,httpStreamEnabled:!0,diskCacheLimit:{pc:262144e4,mobile:1572864e3},useDiskCache:!0,waitForPeer:!1,waitForPeerTimeout:4,strictSegmentId:!1},X="store not init";function Q(e){return new Promise(((t,r)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>r(e.error)}))}function J(e,t){return t?t("readonly",(t=>Q(t.get(e)))):Promise.reject(X)}function Z(e,t,r){return r?r("readwrite",(r=>(r.put(t,e),Q(r.transaction)))):Promise.reject(X)}function ee(e,t){return t?t("readwrite",(t=>(t.delete(e),Q(t.transaction)))):Promise.reject(X)}function te(e){return e?e("readwrite",(e=>(e.clear(),Q(e.transaction)))):Promise.reject(X)}function re(e,t){return e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},Q(e.transaction)}const ie="size";class ne extends(s()){constructor(e,t){super(),this.name="SegmentStore",this.logger=t.logger,this.logger.info("use SegmentStore"),this.channel=e.channel;const r=e.browserInfo.device;this.isPC=r===k().device.PC_WEB||r===k().device.PC_NATIVE,this.maxBufSize=this.isPC?t.diskCacheLimit.pc:t.diskCacheLimit.mobile,this.overflowed=!1,this.loadingSN=0}async setupStore(){if(navigator.storage&&navigator.storage.estimate){const e=await navigator.storage.estimate(),t=Math.floor(e.quota-e.usage);t<this.maxBufSize&&(this.maxBufSize=t-104857600)}return new Promise((async(e,t)=>{if(this.isPC&&this.maxBufSize<419430400||!this.isPC&&this.maxBufSize<104857600)return void t("disk storage not enough");const r=["segments","id2Sn","metadata"];let i;try{i=function(e,t){const r=indexedDB.open(e);r.onupgradeneeded=()=>{const e=r.result;t.forEach((t=>{e.createObjectStore(t)}))};const i=Q(r);return t.map((e=>(t,r)=>i.then((i=>r(i.transaction(e,t).objectStore(e))))))}(this.channel,r)}catch(e){return void t(e)}this.segmentsStore=i[0],this.id2SnStore=i[1],this.metaStore=i[2];const n=setTimeout((()=>{t("setupStore timeout")}),500);this._initMetaStore().then((()=>{clearTimeout(n),e()})).catch((e=>{t(e)}))}))}_initMetaStore(){return this.logger.info("init MetaStore size"),Z(ie,0,this.metaStore)}currBufSize(){return J(ie,this.metaStore)}async hasSegOfId(e){if(!e)return Promise.resolve(!1);const t=await J(e,this.id2SnStore);return new Promise(((r,i)=>{void 0!==t?J(t,this.segmentsStore).then((t=>{t&&t.length>0&&t.some((t=>t.segId===e))?r(!0):r(!1)})).catch((e=>{this.logger.error(e),r(!1)})):r(!1)}))}async getSegById(e){if(!e)return null;const t=await J(e,this.id2SnStore);return new Promise(((e,r)=>{void 0!==t?J(t,this.segmentsStore).then((t=>{if(t&&t.length>0){const r=t[0];if(!y(r.data))return this.logger.error(`getSegById ${r.sn} is not buffer`),void e(null);e(R.fromSegment(r))}else e(null)})).catch((t=>{this.logger.error(t),e(null)})):e(null)}))}getSegIdBySN(e){return new Promise(((t,r)=>{J(e,this.segmentsStore).then((e=>{e&&e.length>0?t(e[0].segId):t(null)})).catch((e=>{this.logger.error(e),t(null)}))}))}putSeg(t){const{logger:r}=this;y(t.data)?this._addSeg(t).then((t=>{this.emit(`${e.BM_ADDED_SN_}${t.sn}`,t),this.emit(e.BM_SEG_ADDED,t)})).catch((e=>{e&&(r.error(e),("QuotaExceededError"===e.name||e.inner&&"QuotaExceededError"===e.inner.name)&&this._trimDisk(!0))})):r.error(`putSeg ${t.sn} is not buffer`)}_addSeg(e){const{segId:t,sn:r}=e;return Z(t,r,this.id2SnStore),new Promise(((i,n)=>{J(r,this.segmentsStore).then((s=>{s?0===s.filter((e=>e.segId===t)).length&&(s.push(this._segmentToCache(e)),Z(r,s,this.segmentsStore).then((()=>{this._increaseBufSize(e.data.byteLength),i(e)})).catch((e=>{n(e)}))):Z(r,[this._segmentToCache(e)],this.segmentsStore).then((()=>{this._increaseBufSize(e.data.byteLength),i(e)})).catch((e=>{n(e)}))})).catch((e=>{n(e)}))}))}async _trimDisk(t=!1){let r=this.maxBufSize;const{logger:i}=this;let n=await this.currBufSize();var s;(t&&(r=n-104857600,r<0&&(r=0)),n<r)||(s=this.segmentsStore,s?s("readonly",(e=>{if(e.getAllKeys)return Q(e.getAllKeys());const t=[];return re(e,(e=>t.push(e.key))).then((()=>t))})):Promise.reject(X)).then((async t=>{const s=t.sort(((e,t)=>e-t));let a=0;do{if(a++>10){console.error("too much loops in SegmentStore");break}const t=s.shift();if(void 0===t){i.error("lastSN not found");continue}if(t>=this.loadingSN){i.warn(`trimDisk failed, loadingSN ${this.loadingSN}`);break}const r=s[0],o=await J(t,this.segmentsStore);if(!o){i.warn("lastSeg not found");continue}let l=0;o.forEach((e=>{l+=e.data.byteLength})),ee(t,this.segmentsStore).then((()=>{this._decreaseBufSize(parseInt(l))})),o.forEach((n=>{ee(n.segId,this.id2SnStore),i.info(`pop seg ${n.segId} size ${n.data.byteLength}`),this.emit(e.BM_LOST,{sn:t,segId:n.segId,next:r,level:n.level})})),n-=l,i.info(`pop sn ${t} size ${l} currBufSize ${n}`),this.overflowed||(this.overflowed=!0)}while(n>=r)}))}_decreaseBufSize(e){J(ie,this.metaStore).then((t=>{t&&Z(ie,t-e,this.metaStore)})).catch((e=>{this.logger.error(e)}))}_increaseBufSize(e){J(ie,this.metaStore).then((t=>{Z(ie,t+e,this.metaStore),this._trimDisk()})).catch((e=>{this.logger.error(e)}))}_segmentToCache(e){return{data:e.data,level:e.level,segId:e.segId,sn:e.sn}}clear(){this.logger.warn("clear segment store");try{this._clearDisk()}catch(e){}}_clearDisk(){te(this.segmentsStore),te(this.id2SnStore),te(this.metaStore)}destroy(){this.clear(),this.removeAllListeners()}}const se=ne;class ae extends(s()){constructor(e,t){super(),this.name="SegmentCache",this.logger=t.logger,this.logger.info("use SegmentCache");const r=e.browserInfo.device;if(this.maxBufSize=r===k().device.PC_WEB||r===k().device.PC_NATIVE?t.memoryCacheLimit.pc:t.memoryCacheLimit.mobile,t.live)this.maxBufSize=31457280;else{if(0===this.maxBufSize)throw new Error("cannot use SegmentCache");const e=function(){const{memory:e}=performance;return e?e.jsHeapSizeLimit-e.usedJSHeapSize:-1}();e>=0&&e<this.maxBufSize&&(this.maxBufSize=e-31457280)}this._segPool=new Map,this._currBufSize=0,this.id2Sn=new Map,this.overflowed=!1,this.loadingSN=0}get currBufSize(){return this._currBufSize}hasSegOfId(e){return new Promise(((t,r)=>{const i=this.id2Sn.get(e);this._segPool.has(i)?t(this._segPool.get(i).some((t=>t.segId===e))):t(!1)}))}getSegById(e){const t=this.id2Sn.get(e);return new Promise(((r,i)=>{if(!this._segPool.has(t))return void r(null);const n=this._segPool.get(t);for(let t of n)if(t.segId===e)return void r(t);r(null)}))}getSegIdBySN(e){return new Promise(((t,r)=>{if(this._segPool.has(e)){t(this._segPool.get(e)[0].segId)}else t(null)}))}_calSegPoolSize(){let e=0;return this._segPool.forEach((t=>{t.forEach((t=>{e+=t.size}))})),e}putSeg(e){this._currBufSize>=1.5*this.maxBufSize&&(this._currBufSize=this._calSegPoolSize(),this._currBufSize>=1.5*this.maxBufSize&&(this.clear(),this.overflowed=!1)),y(e.data)?this._addSeg(e):this.logger.error(`putSeg ${e.sn} is not buffer`)}_addSeg(t){const{logger:r}=this,{segId:i,sn:n,size:s}=t;if(this.id2Sn.set(i,n),this._segPool.has(n)){this._segPool.get(n).push(t)}else this._segPool.set(n,[t]);this._currBufSize+=parseInt(s);const a=this._segPool.size;if(this.emit(`${e.BM_ADDED_SN_}${t.sn}`,t),this.emit(e.BM_SEG_ADDED,t),this._currBufSize<this.maxBufSize||a<=5)return;const o=Array.from(this._segPool.keys()).sort(((e,t)=>e-t));let l=0;do{if(l++>10){console.error("too much loops in SegmentCache");break}const t=o.shift();if(void 0===t){r.error("lastSN not found");continue}const i=o[0],n=this._segPool.get(t);if(!n){r.error("lastSeg not found");continue}let s=0;n.forEach((e=>{s+=e.size})),this._currBufSize-=parseInt(s),this._segPool.delete(t),n.forEach((r=>{this.id2Sn.delete(r.segId),this.emit(e.BM_LOST,{sn:t,segId:r.segId,next:i,level:r.level})})),r.info(`pop sn ${t} size ${s} currBufSize ${this._currBufSize}`),this.overflowed||(this.overflowed=!0)}while(this._currBufSize>=this.maxBufSize&&this._segPool.size>5)}clear(){this.logger.warn("clear segment cache"),this._segPool.clear(),this.id2Sn.clear(),this._currBufSize=0}destroy(){this.clear(),this.removeAllListeners()}}const oe=ae;class le extends V{constructor(e={}){super(e),e.validateSegment||(e.validateSegment=function(e,t){return!0}),this.config=Object.assign({},Y,e),this.rangeTested=!1,this.lastLevel=0,this.multiBitrate=!1}setup(){let{token:e,channelId:t,segmentId:r,strictSegmentId:i}=this.config,n=e=>{const t=_().parseURL(e);return`${t.netLoc.substr(2)+t.path.substring(0,t.path.lastIndexOf("."))}`},s=i?(e,t,r,i)=>{let n=r.split("?")[0];return n.startsWith("http")&&(n=n.split("://")[1]),i?`${n}|${i}`:`${n}`}:(e,t)=>`${e}-${t}`;t&&(n=this.makeChannelId(e,t)),r||(this.config.segmentId=s);return{channelIdMaker:n,signalId:this.makeSignalId(),browserInfo:{...this.commonBrowserInfo,tag:this.config.tag||void 0}}}setupElectron(){this.browserInfo.device===C.device.PC_NATIVE&&(this.browserInfo={...this.browserInfo,app:this.config.appName,bundle:this.config.appId})}getExtraForStats(){const e=super.getExtraForStats();return!this.config.live&&this.media&&(e.pos=Math.round(this.media.currentTime)),this.multiBitrate&&this.currentLevel!==this.lastLevel&&(e.level=this.currentLevel+"",this.lastLevel=this.currentLevel),e}getExtraForPeersRequest(){const e=super.getExtraForPeersRequest();return this.multiBitrate&&(e.level=this.currentLevel+""),e}destroy(){super.destroy()}async initSegmentManager(){const{logger:e,config:t}=this;if(window.indexedDB&&t.useDiskCache&&!t.live){const r=new se(this,t);try{await r.setupStore(),this.bufMgr=r}catch(r){e.warn(r),this.bufMgr=new oe(this,t)}}else this.bufMgr=new oe(this,t);if(this.bufMgr.maxBufSize<=0)throw new Error("bufMgr state is invalid")}getTagForVod(){const e=`${(0,C.getBrowser)()}${m()?"s":""}`;return this.bufMgr?`${e}_${"SegmentStore"===this.bufMgr.name?"d":"m"}`:e}determineHttpLoadTime(e){let t=2.5;if(e&&e.length>0){const r=e.length;t=r<=3?1:r<=4?1.5:r<=5?2:r<=8?2.5:3}return t}}class he{constructor(){this.method=null,this.key=null,this.iv=null,this._uri=null}get uri(){return!this._uri&&this.reluri&&(this._uri=T.buildAbsoluteURL(this.baseuri,this.reluri,{alwaysNormalize:!0})),this._uri}}class de{constructor(){this._url=null,this._byteRange=null,this._decryptdata=null,this.tagList=[],this.programDateTime=null,this.rawProgramDateTime=null,this._elementaryStreams={[de.ElementaryStreamTypes.AUDIO]:!1,[de.ElementaryStreamTypes.VIDEO]:!1}}static get ElementaryStreamTypes(){return{AUDIO:"audio",VIDEO:"video"}}get url(){return!this._url&&this.relurl&&(this._url=T.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url}set url(e){this._url=e}get byteRange(){if(!this._byteRange&&!this.rawByteRange)return[];if(this._byteRange)return this._byteRange;let e=[];if(this.rawByteRange){const t=this.rawByteRange.split("@",2);if(1===t.length){const t=this.lastByteRangeEndOffset;e[0]=t||0}else e[0]=parseInt(t[1]);e[1]=parseInt(t[0])+e[0],this._byteRange=e}return e}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get decryptdata(){return this._decryptdata||(this._decryptdata=this.fragmentDecryptdataFromLevelkey(this.levelkey,this.sn)),this._decryptdata}get endProgramDateTime(){if(!Number.isFinite(this.programDateTime))return null;let e=Number.isFinite(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){return!(!this.decryptdata||null===this.decryptdata.uri||null!==this.decryptdata.key)}addElementaryStream(e){this._elementaryStreams[e]=!0}hasElementaryStream(e){return!0===this._elementaryStreams[e]}createInitializationVector(e){let t=new Uint8Array(16);for(let r=12;r<16;r++)t[r]=e>>8*(15-r)&255;return t}fragmentDecryptdataFromLevelkey(e,t){let r=e;return e&&e.method&&e.uri&&!e.iv&&(r=new he,r.method=e.method,r.baseuri=e.baseuri,r.reluri=e.reluri,r.iv=this.createInitializationVector(t)),r}}class ue{constructor(e){this.endCC=0,this.endSN=0,this.fragments=[],this.initSegment=null,this.live=!0,this.needSidxRanges=!1,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=e,this.version=null}get hasProgramDateTime(){return!(!this.fragments[0]||!Number.isFinite(this.fragments[0].programDateTime))}}const ce=/^(\d+)x(\d+)$/,fe=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g;class ge{constructor(e){"string"==typeof e&&(e=ge.parseAttrList(e));for(let t in e)e.hasOwnProperty(t)&&(this[t]=e[t])}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const r=new Uint8Array(t.length/2);for(let e=0;e<t.length/2;e++)r[e]=parseInt(t.slice(2*e,2*e+2),16);return r}return null}hexadecimalIntegerAsNumber(e){const t=parseInt(this[e],16);return t>Number.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}enumeratedString(e){return this[e]}decimalResolution(e){const t=ce.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t,r={};for(fe.lastIndex=0;null!==(t=fe.exec(e));){let e=t[2],i='"';0===e.indexOf(i)&&e.lastIndexOf(i)===e.length-1&&(e=e.slice(1,-1)),r[t[1]]=e}return r}}const pe=ge,me={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,drac:!0,dvav:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0}};const ve=/#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g,ye=/#EXT-X-MEDIA:(.*)/g,Ee=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/|(?!#)([\S+ ?]+)/.source,/|#EXT-X-BYTERANGE:*(.+)/.source,/|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/|#.*/.source].join(""),"g"),Se=/(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)([^:]*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/,be=/\.(mp4|m4s|m4v|m4a)$/i;class Te{static findGroup(e,t){if(!e)return null;let r=null;for(let i=0;i<e.length;i++){const n=e[i];n.id===t&&(r=n)}return r}static convertAVC1ToAVCOTI(e){let t,r=e.split(".");return r.length>2?(t=r.shift()+".",t+=parseInt(r.shift()).toString(16),t+=("000"+parseInt(r.shift()).toString(16)).substr(-4)):t=e,t}static resolve(e,t){return T.buildAbsoluteURL(t,e,{alwaysNormalize:!0})}static parseMasterPlaylist(e,t){let r,i=[];function n(e,t){["video","audio"].forEach((r=>{const i=e.filter((e=>function(e,t){const r=me[t];return!!r&&!0===r[e.slice(0,4)]}(e,r)));if(i.length){const n=i.filter((e=>0===e.lastIndexOf("avc1",0)||0===e.lastIndexOf("mp4a",0)));t[`${r}Codec`]=n.length>0?n[0]:i[0],e=e.filter((e=>-1===i.indexOf(e)))}})),t.unknownCodecs=e}for(ve.lastIndex=0;null!=(r=ve.exec(e));){const e={},s=e.attrs=new pe(r[1]);e.url=Te.resolve(r[2],t);const a=s.decimalResolution("RESOLUTION");a&&(e.width=a.width,e.height=a.height),e.bitrate=s.decimalInteger("AVERAGE-BANDWIDTH")||s.decimalInteger("BANDWIDTH"),e.name=s.NAME,n([].concat((s.CODECS||"").split(/[ ,]+/)),e),e.videoCodec&&-1!==e.videoCodec.indexOf("avc1")&&(e.videoCodec=Te.convertAVC1ToAVCOTI(e.videoCodec)),i.push(e)}return i}static parseMasterPlaylistMedia(e,t,r,i=[]){let n,s=[],a=0;for(ye.lastIndex=0;null!==(n=ye.exec(e));){const e={},o=new pe(n[1]);if(o.TYPE===r){if(e.groupId=o["GROUP-ID"],e.name=o.NAME,e.type=r,e.default="YES"===o.DEFAULT,e.autoselect="YES"===o.AUTOSELECT,e.forced="YES"===o.FORCED,o.URI&&(e.url=Te.resolve(o.URI,t)),e.lang=o.LANGUAGE,e.name||(e.name=e.lang),i.length){const t=Te.findGroup(i,e.groupId);e.audioCodec=t?t.codec:i[0].codec}e.id=a++,s.push(e)}}return s}static parseLevelPlaylist(e,t){let r,i,n=0,s=0,a=new ue(t),o=new he,l=0,h=null,d=new de,u=null;for(Ee.lastIndex=0;null!==(r=Ee.exec(e));){const e=r[1];if(e){d.duration=parseFloat(e);const t=(" "+r[2]).slice(1);d.title=t||null,d.tagList.push(t?["INF",e,t]:["INF",e])}else if(r[3]){if(Number.isFinite(d.duration)){const e=n++;d.start=s,d.levelkey=o,d.sn=e,d.cc=l,d.baseurl=t,d.relurl=(" "+r[3]).slice(1),_e(d,h),a.fragments.push(d),h=d,s+=d.duration,d=new de}}else if(r[4]){if(d.rawByteRange=(" "+r[4]).slice(1),h){const e=h.byteRangeEndOffset;e&&(d.lastByteRangeEndOffset=e)}}else if(r[5])d.rawProgramDateTime=(" "+r[5]).slice(1),d.tagList.push(["PROGRAM-DATE-TIME",d.rawProgramDateTime]),null===u&&(u=a.fragments.length);else{for(r=r[0].match(Se),i=1;i<r.length&&void 0===r[i];i++);const e=(" "+r[i+1]).slice(1),s=(" "+r[i+2]).slice(1);switch(r[i]){case"#":d.tagList.push(s?[e,s]:[e]);break;case"PLAYLIST-TYPE":a.type=e.toUpperCase();break;case"MEDIA-SEQUENCE":n=a.startSN=parseInt(e);break;case"TARGETDURATION":a.targetduration=parseFloat(e);break;case"VERSION":a.version=parseInt(e);break;case"EXTM3U":break;case"ENDLIST":a.live=!1;break;case"DIS":l++,d.tagList.push(["DIS"]);break;case"DISCONTINUITY-SEQ":l=parseInt(e);break;case"KEY":var c=new pe(e),f=c.enumeratedString("METHOD"),g=c.URI,p=c.hexadecimalInteger("IV");f&&(o=new he,g&&["AES-128","SAMPLE-AES","SAMPLE-AES-CENC"].indexOf(f)>=0&&(o.method=f,o.baseuri=t,o.reluri=g,o.key=null,o.iv=p));break;case"START":let i=new pe(e).decimalFloatingPoint("TIME-OFFSET");Number.isFinite(i)&&(a.startTimeOffset=i);break;case"MAP":let h=new pe(e);d.relurl=h.URI,d.rawByteRange=h.BYTERANGE,d.baseurl=t,d.sn="initSegment",a.initSegment=d,d=new de,d.rawProgramDateTime=a.initSegment.rawProgramDateTime;break;default:console.warn(`line parsed but not handled: ${r}`)}}}return d=h,d&&!d.relurl&&(a.fragments.pop(),s-=d.duration),a.totalduration=s,a.averagetargetduration=s/a.fragments.length,a.endSN=n-1,a.startCC=a.fragments[0]?a.fragments[0].cc:0,a.endCC=l,!a.initSegment&&a.fragments.length&&a.fragments.every((e=>be.test(e.relurl)))&&(console.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"),d=new de,d.relurl=a.fragments[0].relurl,d.baseurl=t,d.level=id,d.sn="initSegment",a.initSegment=d,a.needSidxRanges=!0),u&&function(e,t){let r=e[t];for(let i=t-1;i>=0;i--){const t=e[i];t.programDateTime=r.programDateTime-1e3*t.duration,r=t}}(a.fragments,u),a}}function _e(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Number.isFinite(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}var Le=r(485),we=r.n(Le),Pe=r(934),Ae=r.n(Pe);const De=e=>{const t=localStorage.getItem(e);try{const e=JSON.parse(t);return e.value?e.value:e}catch(e){return t}},Ie=(e,t,r)=>{((e,t)=>{"object"==typeof t&&(t=JSON.stringify(t)),localStorage.setItem(e,t)})(e,{value:t,duration:r,startTime:(new Date).getTime()})};class Re{constructor(){this.p2p=0,this.share=0,this.http=0}recordP2p(e){this.p2p+=e}recordShare(e){this.share+=e}recordHttp(e){this.http+=e}resetTraffic(){this.p2p=0,this.share=0,this.http=0}get healthRatio(){if(0===this.http)return 1e3;let e=Math.round((this.p2p+this.share)/this.http*100);return e<=0&&(e=1),e}}const Ce=window.atob("Ly9wcm8uaXAtYXBpLmNvbS9qc29uP2ZpZWxkcz0yMTgxODI2JmtleT1YT3BpYW5zUmdZeEdUaG8="),ke="SW_GEOIP_KEY",xe="TRACKER_EXPT",Oe="IPAPI_ERROR",Me="ZXU",Ne="uY2R",Fe="LmNv",Be="uYnll",Ue="bQ==",Ge="aGsuc3d",$e="hcm1j",He="bG91ZC",je="5uZXQ=",We=Symbol("httpDownloaded"),Ve=Symbol("p2pDownloaded"),qe=Symbol("p2pUploaded");class ze extends(s()){constructor(e,t,r,i,n){let s;super(),this.config=e.config;let a=this.config.announceLocation;switch(this.config.trackerZone&&(a=this.config.trackerZone),a){case"cn":case"eu":s=Me+Ne+Be+Fe+Ue;break;case"hk":s=Ge+$e+He+je;break;case"us":s="dXMuaGR0dmNsb3VkLmNvbQ=="}this.engine=e,this.key=t||void 0,this.baseUrl=i||`https://${window.atob(s)}/v1`,this.channelId=window.btoa(r),this.timestamp=u(),this.health=new Re;const o=_().parseURL(this.baseUrl).netLoc;this.announce=o.replace(/\/\//,"");const l=function(e,t,r,i,n,s){let a=location.hostname;"localhost"===a&&s&&(a=`${s}.${a}`);function o(e,t,r,i,n,s){return we()(e+t+r+i+n,s)}const l=o(a,t,r,i,n,e);return l.substr(0,8)}(this.timestamp,"2.8.4",this.announce,this.channelId,n.type,this.key);this.native=!!n.bundle,this.announceInfo={...n,channel:this.channelId,ts:this.timestamp,version:"2.8.4",v:l,announce:this.announce,token:this.key},this.announceURL=`${this.baseUrl}/channel`,this.reportFails=0,this.statsRequesting=!1,this.forbidden=!1,this.failConns=0,this.totalHTTPDownloaded=0,this.totalP2PDownloaded=0,this.totalP2PUploaded=0,this[We]=0,this[Ve]=0,this[qe]=0,this.speed=0,this.offline=!1,this.errsBufStalled=0,this.mediaRequests=0,this.errsInternalExpt=0}geoipRequest(){const{logger:e}=this.engine;return new Promise(((t,r)=>{if((e=>{const t=localStorage.getItem(e);try{const e=JSON.parse(t);return!(!e.duration||!e.startTime)&&(new Date).getTime()-e.startTime<e.duration}catch(e){return!1}})(ke)){const r=De(ke);e.info("found local geo data"),t(r)}else fetch(Ce).then((e=>e.json())).then((e=>{if("success"!==e.status){const t=new Error(`preflight status ${e.status}`);throw Ae()(t,Oe)}{const r=e.mobile?432e5:2592e5;Ie(ke,e,r),t(e)}})).catch((e=>{r(e)}))}))}btAnnouncePreflight(){const{logger:e}=this.engine;return this.announceInfo.asn?this.btAnnounce():(e.info("preflight ip-api"),Promise.race([this.geoipRequest(),new Promise(((e,t)=>{setTimeout((()=>{t(Ae()(new Error("request timeout"),Oe))}),600)}))]).then((e=>(this._parseGeoResponse(e),this.btAnnounce()))).catch((t=>{if(t.code!==xe){const t=De(ke);return t&&(e.info("use expired ipData"),this._parseGeoResponse(t)),this.btAnnounce()}throw t})))}_parseGeoResponse(e){const{lat:t,lon:r,isp:i,as:n,mobile:s,countryCode:a,continentCode:o}=e;s&&(this.announceInfo.netType="cellular");const l=n.split(" ")[0].substr(2);this.announceInfo={...this.announceInfo,lat:t,lon:r,isp:i,asn:l,country:a}}btAnnounce(){const{logger:e}=this.engine;return this.announceInfo.tag||(this.announceInfo.tag=`${(0,C.getBrowser)()}${m()?"s":""}`),new Promise(((t,r)=>{fetch(this.announceURL,{headers:this._requestHeader,method:"POST",body:JSON.stringify(this.announceInfo)}).then((e=>{if(!e.ok){const t=e.status>=500&&e.status<600;throw Ae()(new Error(`server response code is ${e.status}`),xe,{retry:t})}return e.json()})).then((e=>{if(!this.engine)throw Ae()(new Error("runtime error"),xe,{retry:!1});const r=e.data;if(r.f&&(this.forbidden=!0),-1===e.ret){const{code:t,msg:r}=e.data;throw Ae()(new Error(r),xe,{retry:t>=5e3})}r.info&&console.info(`${r.info}`),r.warn&&console.warn(`${r.warn}`),r.min_conns||(r.min_conns=8),(!r.rejected||r.rejected&&r.share_only)&&r.id&&r.report_interval&&r.peers?(this.peerId=this.id=r.id,r.report_interval<20&&(r.report_interval=20),this.btStats(r.report_interval),this.getPeersURL=`${this.baseUrl}/channel/${this.channelId}/node/${this.peerId}/peers`,this.statsURL=`${this.baseUrl}/channel/${this.channelId}/node/${this.peerId}/stats`,t(r)):this.engine&&(this.engine.p2pEnabled=!1)})).catch((t=>{e.error(`btAnnounce error ${t}`),r(Ae()(t,t.code,{retry:t.retry}))}))}))}btStats(e=10){this.heartbeater=setInterval((()=>{this.postStats()}),1e3*e)}postStatsWithBeacon(){if(this.offline)return;this.offline=!0;let e={off:!0};this.statsRequesting||(e={...e,...this._makeStatsBody()}),this.statsURL&&navigator.sendBeacon&&navigator.sendBeacon(this.statsURL,JSON.stringify(e))}postStats(){const{logger:t}=this.engine;this.statsRequesting=!0,fetch(this.statsURL,{method:"POST",body:JSON.stringify(this._makeStatsBody())}).then((e=>(this.statsRequesting=!1,this.reportFails=0,e.text()))).then((r=>{let i;if(i=r?JSON.parse(r):{ret:0,data:{}},-1===i.ret)clearInterval(this.heartbeater),t.error(`${i.data.msg} code ${i.data.code}`),this.engine.emit(e.RESTART_P2P);else{const{http:e=0,p2p:t=0,share:r=0,failConns:i=0,rebuffers:n=0,requests:s=0,errsInternalExpt:a=0}=this.lastStats||{};this[We]>=e&&(this[We]-=e),this[Ve]>=t&&(this[Ve]-=t),this[qe]>=r&&(this[qe]-=r),this.failConns>=i&&(this.failConns-=i),this.errsBufStalled>=n&&(this.errsBufStalled-=n),this.mediaRequests>=s&&(this.mediaRequests-=s),this.errsInternalExpt>=a&&(this.errsInternalExpt-=a),this.exptMsg&&(this.exptMsg=void 0)}})).catch((e=>{t.error(`btStats error ${e}`),this.statsRequesting=!1,this.reportFails++,this.reportFails>=3&&clearInterval(this.heartbeater)}))}btGetPeers(e,t=!1){const{logger:r}=this.engine,{asn:i,country:n}=this.announceInfo;let s={exclusions:e,asn:i,country:n,ratio:this.health.healthRatio,urgent:t||void 0},a={};return this.engine.getExtraForPeersRequest&&(a=this.engine.getExtraForPeersRequest()),s=Object.assign({},s,a),new Promise(((e,t)=>{this.reportFails>=3?t(new Error("reportFails >= 3")):fetch(this.getPeersURL,{headers:this._requestHeader,method:"POST",body:JSON.stringify(s)}).then((e=>e.json())).then((t=>{if(-1===t.ret)throw new Error(t.data.msg);e(t.data)})).catch((e=>{r.error(`btGetPeers error ${e}`),t(e)})).finally((()=>{this.health.resetTraffic()}))}))}increFailConns(){this.failConns++}increRebuffers(){this.errsBufStalled++}increMediaRequests(){this.mediaRequests++}reportFlow(e){const t=Math.round(e/1024);this[We]+=t,this.totalHTTPDownloaded+=t,this.health.recordHttp(t),this._emitStats()}reportDCTraffic(e,t){const r=Math.round(e/1024);this[Ve]+=r,this.totalP2PDownloaded+=r,this.health.recordP2p(r),this.speed=Math.round(t),this._emitStats()}reportUploaded(e=0){const t=Math.round(e/1024);this.totalP2PUploaded+=t,this.health.recordShare(t),this[qe]+=t,this._emitStats()}destroy(){const{logger:e}=this.engine;e.warn("destroy fetcher"),this.removeAllListeners(),clearInterval(this.heartbeater)}_emitStats(){this.engine.emit("stats",{totalHTTPDownloaded:this.totalHTTPDownloaded,totalP2PDownloaded:this.totalP2PDownloaded,totalP2PUploaded:this.totalP2PUploaded,p2pDownloadSpeed:this.speed});const e=this.config.getStats;e&&"function"==typeof e&&e(this.totalP2PDownloaded,this.totalP2PUploaded,this.totalHTTPDownloaded,this.speed)}_makeStatsBody(){const{asn:e,country:t}=this.announceInfo;let r={totalConns:this.engine.tracker.totalConns,failConns:this.failConns,rebuffers:this.errsBufStalled||void 0,requests:this.mediaRequests||void 0,errsInternalExpt:this.errsInternalExpt,http:Math.round(this[We])||0,p2p:Math.round(this[Ve])||0,share:Math.round(this[qe])||0,asn:e,country:t},i={};return this.engine.getExtraForStats&&(i=this.engine.getExtraForStats()),r=Object.assign({},r,i),this.lastStats=JSON.parse(JSON.stringify(r)),Object.keys(r).forEach((e=>{0===r[e]&&delete r[e]})),this.exptMsg&&(r.exptMsg="2.8.4 "+this.exptMsg),r}get _requestHeader(){let e={};return this.native&&(e={...e,token:this.key,"User-Agent":"electron",appid:this.announceInfo.bundle}),e}}const Ke=ze;const Ye=0,Xe=1,Qe=2,Je=3,Ze=(e,t,r,i,n)=>e.filter((e=>e.bitset.hasWithId(r,i,n,t)));class et{constructor(e=!1,t){this.isLive=e,this.levelMap=new Map;for(let e in t){const r=Number(e);if(r<0)continue;const i=new Map;if(t[e])for(let r of t[e])i.set(r,{state:Xe,segId:void 0});this.levelMap.set(r,i)}}totalLevels(){return this.levelMap.size}hasWithId(e,t,r,i=Ye){if(t<0)return!1;const n=this._createOrGetSet(t).get(e);return!!n&&((!r||!n.segId||n.segId===r)&&(i===Ye||n.state===i))}has(e,t,r=Ye){return this.hasWithId(e,t,void 0,r)}hasCompleteOr(e,t,r=Xe){const i=this._createOrGetSet(t).get(e);return!!i&&(i.state===Xe||i.state===r)}getObj(e,t){let r=this._createOrGetSet(t).get(e);return r||(r={}),r}getSegId(e,t){return this.getObj(e,t).segId}getState(e,t){return this.getObj(e,t).state}delete(e,t){return this._createOrGetSet(t).delete(e)}add(e,t,r,i){if("number"!=typeof(n=e)||n%1!=0)return;var n;this._createOrGetSet(t).set(e,{state:i,segId:r}),this.isLive&&this._trimBitset(e)}array(e){const t=this._createOrGetSet(e);return this._keysForStateComplete(t)}allArray(){let e={};return this.levelMap.forEach(((t,r)=>{e[r]=this._keysForStateComplete(t)})),e}clear(){this.levelMap.forEach((e=>{e.clear()}))}size(e){return this._createOrGetSet(e).size}_createOrGetSet(e){"number"!=typeof e&&(e=Number(e));let t=this.levelMap.get(e);return t||(t=new Map,this.levelMap.set(e,t)),t}_trimBitset(e){const t=e-20;t>0&&this.levelMap.forEach((e=>{e.delete(t)}))}_keysForStateComplete(e){const t=[];for(let[r,i]of e)i.state===Xe&&t.push(r);return t}}class tt{constructor(){this.levelMap=new Map}totalLevels(){return this.levelMap.size}has(e,t){return this._createOrGetMap(t).has(e)}delete(e,t){return this._createOrGetMap(t).delete(e)}decre(e,t){const r=this._createOrGetMap(t);if(r.has(e)){let t=r.get(e);1===t?r.delete(e):r.set(e,t-1)}}incre(e,t){const r=this._createOrGetMap(t);if(r.has(e)){let t=r.get(e);r.set(e,t+1)}else r.set(e,1)}clear(){this.levelMap.forEach((e=>{e.clear()}))}size(e){return this._createOrGetMap(e).size}_createOrGetMap(e){"number"!=typeof e&&(e=Number(e));let t=this.levelMap.get(e);return t||(t=new Map,this.levelMap.set(e,t)),t}}const rt=class{constructor(){this.peerMap=new Map}isEmpty(){return 0===this.peerMap.size}size(){return this.peerMap.size}clear(){this.peerMap.clear()}getPeers(){return[...this.peerMap.values()]}getPeerValues(){return this.peerMap.values()}hasPeer(e){return this.peerMap.has(e)}addPeer(e,t){this.peerMap.set(e,t)}getPeerIds(){return[...this.peerMap.keys()]}removePeer(e){this.peerMap.delete(e)}getPeersOrderByWeight(){const e=this.getAvailablePeers();return e.sort(((e,t)=>0===t.weight?1:0===e.weight?-1:t.weight-e.weight)),e}getPeer(e){return this.peerMap.get(e)}getAvailablePeers(){return this.getPeers().filter((e=>e.isAvailableUrgently))}},it=1,nt=2,st=3,at=4;class ot{constructor(e){this.generator=e,this.status=it,this.next=this.next.bind(this)}next(e){if(this.status===at)return console.warn("status is canceled");if(this.status===nt)return console.warn("status is waiting");const t=this.execute.bind(this,this.cb);this.nextInfo=this.generator(t),this.status=nt,this.nextInfo.execute(e)}execute(e,t){this.status=st,e.apply(t,[this.next])}cancel(){this.status=at,this.nextInfo&&"function"==typeof this.nextInfo.cancel&&this.nextInfo.cancel()}start(e,t){if("function"!=typeof e)throw new SyntaxError("param cb must be a function");this.cb=e,this.next(t)}continue(e){this.status=it,this.next(e)}}const lt=Symbol("shareOnly");class ht extends(s()){constructor(e,t){super(),this.engine=e,this.config=t,this.logger=e.logger,this.bufMgr=null,this.peerManager=new rt,this._setupEngine&&this._setupEngine(),this.startCheckConnsTimer(),this.dcDownloadTimeout=t.dcDownloadTimeout,this[lt]=!1,this.downloadOnly=!1,this.loadedPeerNum=0}get isMobileNet(){return this.engine.isMobileNet}startCheckConnsTimer(){this.checkConnsTimer=setInterval((()=>{this.logger.info("start check conns");const e=this.getStatsForPeer();let t=this.peersNum;const r=u();this.getPeers().forEach((i=>{t>4&&(r-i.dataExchangeTs>120||r-i.gotStatsTs>=83)?(this.logger.warn(`close dead or different level peer ${i.remotePeerId} level ${i.currentLevel}`),i.close(!1),t--):i.connected&&i.sendMsgStats(t,e)}))}),4e4)}getStatsForPeer(){return{}}requestPeers(){this.logger.info("request peers from peer");const t={event:e.DC_GET_PEERS};for(let e of this.getPeers())e.mobileNet||e.super||e.sendJson(t)}chokePeerRequest(t){const r={event:e.DC_CHOKE};t?t.sendJson(r):this._broadcastToPeers(r)}unchokePeerRequest(t){const r={event:e.DC_UNCHOKE};t?t.sendJson(r):this._broadcastToPeers(r)}stopRequestFromPeers(){for(let e of this.getPeers())e.choked=!0}resumeRequestFromPeers(){for(let e of this.getPeers())e.choked=!1}setShareOnly(){this[lt]=!0}deletePeer(e){this.peerManager.hasPeer(e.remotePeerId)&&this.peerManager.removePeer(e.remotePeerId),this._peersStats(this.peerManager.getPeerIds())}getPeers(){return[...this.peerManager.getPeerValues()]}addPeer(e){const{logger:t}=this;this.peerManager.addPeer(e.remotePeerId,e),this[lt]&&(e.choked=!0);const r=this.peerManager.getPeerIds();this._peersStats(r),t.info(`add peer ${e.remotePeerId}, now has ${r.length} peers`),!e.mobileNet&&!this.waitForPeer&&e.isInitiator&&this.peersNum<=5&&e.peersConnected>1&&e.sendPeersRequest()}get hasPeers(){return this.peersNum>0}get peersNum(){return this.peerManager.size()}get hasIdlePeers(){const{logger:e}=this,t=this.getIdlePeer().length;if(e.info(`peers: ${this.peersNum} idle peers: ${t}`),t<this.peersNum){const t=this.peerManager.getPeers(),r=t.filter((e=>e.downloading));e.warn(`downloading: ${r.length} choked: ${t.filter((e=>e.choked)).length}`);for(let t of r)e.warn(`${t.remotePeerId} loading ${t.segId} packets ${t.bufArr.length} total ${t.pieceMsg.attachments}`)}return t>0}getIdlePeer(){return this.peerManager.getAvailablePeers()}set bufferManager(t){this.bufMgr=t,t.on(e.BM_LOST,(({sn:t,segId:r,next:i,level:n})=>{this.config.live||this._broadcastToPeers({event:e.DC_LOST,sn:t,seg_id:r,level:n||void 0}),this.onBufferManagerLost(t,r,i,n)})).on(e.BM_SEG_ADDED,(e=>{this.onBufferManagerSegAdded(e)}))}onBufferManagerSegAdded(e){}destroy(){const{logger:e}=this;this.peersNum>0&&this.peerManager.clear(),this.removeAllListeners(),clearInterval(this.checkConnsTimer),this.checkTimer&&this.checkTimer.cancel(),e.warn("destroy BtScheduler")}notifyPeersLoaded(e){}_setupDC(t){const{logger:r}=this;t.on(e.DC_PIECE_ACK,(e=>{e.size&&(this.engine.fetcher.reportUploaded(e.size),r.info(`uploaded ${e.seg_id} size ${e.size} to ${t.remotePeerId}, canceled ${e.canceled||!1}`))})).on(e.DC_PIECE_ABORT,(e=>{r.warn(`peer ${t.remotePeerId} download aborted, reason ${e.reason}`),t.downloading&&this._handlePieceAborted&&this._handlePieceAborted(t.remotePeerId),t.downloading=!1})).on(e.DC_REQUEST,(()=>{})).on(e.DC_SEND_REQUEST,(()=>{}))}_broadcastToPeers(e){for(let t of this.getPeers())t.sendJson(e)}_peersStats(e){this.engine.emit("peers",e);const t=this.engine.config.getPeersInfo;t&&"function"==typeof t&&t(e)}startCheckPeersTimer(e=3e3){this.checkTimer=new ot((function(e){let t;return{execute:function(r=1e3){t=setTimeout(e,r)},cancel:function(){clearTimeout(t)}}})),this.checkTimer.start((e=>{this.checkPeers();const t=1e3*(0===(r=this.loadedPeerNum)?3:.5*r+1.67);var r;this.logger.debug(`loaded peers ${this.loadedPeerNum} nextDelay ${t}`),this.loadedPeerNum=0,e(t)}),e)}}const dt=ht;class ut extends(s()){constructor(e){super(),this.internalMap=new Map,this.eventName=e}has(e,t){return this.internalMap.has(this._generateId(e,t))}set(e,t,r){const i=this._generateId(e,t);this.internalMap.set(i,r),this.emit(`${this.eventName}${e}-${t}`,r)}get(e,t){return this.internalMap.get(this._generateId(e,t))}delete(e,t){const r=this._generateId(e,t),i=this.internalMap.get(r);return!!i&&(i.destroy(),this.internalMap.delete(r),!0)}clear(){this.internalMap.clear(),this.removeAllListeners()}_generateId(e,t){return"number"!=typeof t&&(t=Number(t)),`${t}-${e}`}}const ct=0,ft=1,gt=2,pt=3;function mt(e,t,r="main"){return"main"!==r}function vt(){const e=performance.now();return{trequest:e,tfirst:0,tload:0,aborted:!1,loaded:0,retry:0,total:0,chunkCount:0,bwEstimate:0,loading:{start:e,first:0,end:0},parsing:{start:0,end:0},buffering:{start:0,first:0,end:0}}}function yt(e,t){let r,i,n,s,a;const o=performance.now();r=o-300,i=o-200,n=o,e.trequest=r,e.tfirst=i,e.tload=n,e.loading={first:r,start:i,end:n},s=a=t,e.loaded=s,e.total=a}class Et extends(s()){constructor(){super(),this.UNSENT=0,this.OPENED=1,this.HEADERS_RECEIVED=2,this.LOADING=3,this.DONE=4,this.timeout=0,this.withCredentials=!1,this.status=0,this.readyState=this.UNSENT,this.headers=new Map,this.responseHeaders=null,this.on("load",(e=>{this.onload&&this.onload(e)})),this.on("abort",(e=>{this.onabort&&this.onabort(e)})),this.on("error",(e=>{this.onerror&&this.onerror(e)})),this.on("loadstart",(e=>{this.onloadstart&&this.onloadstart(e)})),this.on("progress",(e=>{this.onprogress&&this.onprogress(e)})),this.on("timeout",(e=>{this.ontimeout&&this.ontimeout(e)})),this.on("loadend",(e=>{this.onloadend&&this.onloadend(e)})),this.on("readystatechange",(()=>{this.onreadystatechange&&this.onreadystatechange()}))}setRequestHeader(e,t){this.headers.set(e,t)}addEventListener(e,t){this.addListener(e,t)}removeEventListener(e,t){this.removeListener(e,t)}overrideMimeType(){}getAllResponseHeaders(){if(!this.responseHeaders)return null;let e="";return this.responseHeaders.forEach(((t,r)=>{e+=`${r}: ${t}\n`})),e}getResponseHeader(e){return this.responseHeaders?this.responseHeaders.get(e):null}open(){this.readyState=this.OPENED,this.emit("loadstart")}abort(){this.readyState=this.DONE,this.status=0}send(){}_emitEvent(e){this.emit(e,new ProgressEvent(e))}}function St(){if(window.fetch&&window.AbortController&&window.ReadableStream&&window.Request)try{return new window.ReadableStream({}),!0}catch(e){}return!1}class bt{constructor(e){this.fetchSetup=e.fetchSetup||Tt,this.xhrSetup=e.xhrSetup,function(e){try{new e}catch(e){return!1}return!0}(window.AbortController)&&(this.controller=new window.AbortController),this.stats=vt(),this.packetSize=l,this.fakeXhr=new Et}destroy(){this.loader=this.callbacks=null,this.abortInternal()}abortInternal(){const e=this.response;e&&e.ok||(this.stats.aborted=!0,this.callbacks&&this.callbacks.onUpdate&&this.callbacks.onUpdate(void 0,!1,!0),this.controller&&this.controller.abort())}abort(){this.abortInternal(),this.callbacks&&this.callbacks.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,r){const i=this.stats;i.trequest=i.loading.start=performance.now();let n=function(e,t){const r={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new window.Headers(Object.assign({},e.headers))};e.rangeEnd&&r.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return r}(e,this.controller?this.controller.signal:void 0);const s="arraybuffer"===e.responseType,a=s?"byteLength":"length",o=r.onUpdate,l=r.onBodyStart;this.context=e,this.config=t,this.callbacks=r,this.xhrSetup&&(this.xhrSetup(this.fakeXhr,e.url),n=function(e,t){e.withCredentials&&(t.credentials="include");for(let[r,i]of e.headers)t.headers.set(r,i);return t}(this.fakeXhr,n)),this.request=this.fetchSetup(e,n),clearTimeout(this.requestTimeout),this.requestTimeout=setTimeout((()=>{this.abortInternal(),this.fakeXhr._emitEvent("timeout"),this.fakeXhr._emitEvent("loadend"),r.onTimeout&&r.onTimeout(i,e,this.response)}),this.fakeXhr.timeout||t.timeout);const{fakeXhr:h}=this;h.readyState=h.OPENED,h.emit("readystatechange"),h._emitEvent("loadstart"),fetch(this.request).then((t=>{if(this.response=this.loader=t,!t.ok){const{status:e,statusText:r}=t;throw o&&o(void 0,!1,!0),new _t(r||"fetch, bad network response",e,t)}i.tfirst=i.loading.first=Math.max(performance.now(),i.loading.start),i.total=parseInt(t.headers.get("Content-Length")||"0");const{fakeXhr:r}=this;return r.readyState=r.HEADERS_RECEIVED,r.responseHeaders=t.headers,r.emit("readystatechange"),o&&"0"!==i.total?(l&&l(i.total),this.loadProgressively(t,i,e,o)):(r.emit("progress",new ProgressEvent("progress",{lengthComputable:!1})),s?t.arrayBuffer():t.text())})).then((t=>{const{response:n}=this;clearTimeout(this.requestTimeout),i.tload=i.loading.end=Math.max(performance.now(),i.loading.first),i.loaded=i.total=t[a];const s={url:n.url,data:t};r.onProgress&&r.onProgress(i,e,t,n),r.onSuccess&&r.onSuccess(s,i,e,n)})).catch((t=>{if(clearTimeout(this.requestTimeout),i.aborted)return;o&&o(void 0,!1,!0);const n=t&&t.code||0,s=t?t.message:null;r.onError&&r.onError({code:n,text:s},e,t?t.details:null)}))}loadProgressively(e,t,r,i){const n=e.body.getReader();let s=0,o=0,h=(0,a.l)(0);const d=()=>n.read().then((({value:r,done:n})=>{const{fakeXhr:u}=this;if(u.readyState!==u.LOADING&&(u.readyState=u.LOADING,u.emit("readystatechange")),r&&(s+=r.length),n){if(h.byteLength>0)if(s<=this.packetSize){const e=(0,a.l)(s);h.copy(e,0,o*this.packetSize,h.byteLength),i(e,!0)}else{const e=function(e,t){const r=e.byteLength-t,i=[];let n=t,s=Math.floor(r/l),o=r%l;for(let t=0;t<s;t++){const t=(0,a.l)(l);e.copy(t,0,n,n+l),i.push(t),n+=l}if(o>0){const t=(0,a.l)(o);e.copy(t,0,n,n+o),i.push(t)}return i}(h,o*this.packetSize);for(let t=0;t<e.length;t++)i(e[t],t===e.length-1)}const t=h.buffer,{fakeXhr:r}=this,{status:n,statusText:d,url:u}=e;return r.readyState=r.DONE,r.responseText=n,r.status=d,r.responseURL=u,r.responseType="arraybuffer",r.response=t,r.emit("readystatechange"),r._emitEvent("load"),r._emitEvent("loadend"),Promise.resolve(t)}if(t.loaded+=r.length,u.emit("progress",new ProgressEvent("progress",{lengthComputable:!0,loaded:t.loaded,total:t.total})),h=a.l.concat([h,r]),s>=this.packetSize){s-=this.packetSize;const e=(0,a.l)(this.packetSize);h.copy(e,0,o*this.packetSize,(o+1)*this.packetSize),o++,i(e,!1)}return d()})).catch((()=>(this.fakeXhr._emitEvent("abort"),this.fakeXhr._emitEvent("loadend"),Promise.reject())));return d()}}function Tt(e,t){return new window.Request(e.url,t)}class _t extends Error{constructor(e,t,r){super(e),this.code=t,this.details=r}}class Lt extends(s()){constructor(e,r,i,n,s,a=!1,o){super(),this.coordinator=e,this.logger=r,this.rangeSupported=a,this.rangeStart=0,this.rangeEnd=0,this.httpLoadTime=2e3,this.proxied=!1,this.pieceMsg={event:t.DC_PIECE,sn:i,level:n,seg_id:s},o&&this.setExtra(o),this.forwardPeer=null,this.reversePeer=null,this.bufArr=[],this.forwardBufList=[],this.reverseBufList=[],this.forwardOffset=-1,this.reverseOffset=1e4,this.timeStart=0,this.timeReceivePiece=0,this.timer=void 0,this.destroyed=!1,this.forwardStreamListeners=[],this.reverseStreamListeners=[],this.rangeRequesting=!1,this.waitingRemain=!1,this.httpLoaded=0,this.p2pLoaded=0,this.deadline=0,this.p2pCanceled=!1}get segId(){return this.pieceMsg.seg_id}isDownloading(){return this.timeReceivePiece>0}isAlmostDeadline(){return!!this.rangeRequesting||this.deadline>0&&this.deadline-performance.now()<400}hasPeer(e){return!!e&&(e===this.forwardPeer||e===this.reversePeer)}streamListeners(){return[...this.reverseStreamListeners,...this.forwardStreamListeners].length}_notifyStreamListeners(e,t,r){const{sn:i,seg_id:n,attachments:s}=this.pieceMsg,a=e&&0===r||!e&&r===s-1,o=e?this.reverseStreamListeners:this.forwardStreamListeners;e?this.reverseBufList.push(t):this.forwardBufList.push(t),a&&(this.forwardBufList.push([...this.reverseBufList].reverse()),this.reverseBufList.push([...this.forwardBufList].reverse()));for(let e of o){const{handler:r}=e;r(i,n,!1,t,a)}a&&(o.length=0)}_notifyStreamListenersAbort(){const e=[...this.reverseStreamListeners,...this.forwardStreamListeners];for(let t of e){const{handler:e}=t;e(void 0,void 0,!0,"aborted by synthesizer")}e.length=0}_notifyStreamListenersRemain(){if(this.forwardStreamListeners.length>0){for(let e=this.forwardOffset+1;e<this.bufArr.length;e++)this._notifyStreamListeners(!1,this.bufArr[e],e);this.forwardStreamListeners=[]}if(this.reverseStreamListeners.length>0){for(let e=this.reverseOffset-1;e>=0;e--)this._notifyStreamListeners(!0,this.bufArr[e],e);this.reverseStreamListeners=[]}}addStreamListener(e,t,r){(e?this.reverseStreamListeners:this.forwardStreamListeners).push({handler:r,peerId:t})}removeStreamListener(e){const t=t=>t.filter((t=>t.peerId!==e||(t.handler(void 0,void 0,!0,"aborted by cancel"),!1)));this.forwardStreamListeners=t(this.forwardStreamListeners),this.reverseStreamListeners=t(this.reverseStreamListeners)}setTimeout(e=0){const t=this.streamListeners();let r=performance.now();if(t>2){if((e/=2)<2500)if(this.timeReceivePiece>0){e=3e3-(r-this.timeReceivePiece)}else e=2500;this.logger.info(`stream listeners ${t}, set timeout ${e}`)}e<=0?setTimeout((()=>{this._handleTimeout(!1,!1)}),0):(this.deadline=r+e,this._startTimer(e))}setExtra(e={}){e.url&&(this.url=e.url),e.rangeStart&&(this.rangeStart=e.rangeStart),e.rangeEnd&&(this.rangeEnd=e.rangeEnd),e.httpLoadTime&&(this.httpLoadTime=e.httpLoadTime),e.proxied&&(this.proxied=!0),e.xhrSetup&&(this.xhrSetup=e.xhrSetup),e.headers&&(this.headers=e.headers),e.segId&&!this.pieceMsg.seg_id&&(this.pieceMsg.seg_id=e.segId)}hasForwardPeer(){return!!this.forwardPeer}hasReversePeer(){return!!this.reversePeer}hasPeerId(e){return this.forwardPeer&&this.forwardPeer.remotePeerId===e||this.reversePeer&&this.reversePeer.remotePeerId===e}isEmpty(){return null===this.forwardPeer&&null===this.reversePeer}isFull(){return this.forwardPeer&&this.reversePeer}setForwardPeer(e){this.forwardPeer=e,this.reversePeer&&this._print(),this._setupPeer(e,!1)}setReversePeer(e){this.reversePeer=e,this.forwardPeer&&this._print(),this._setupPeer(e,!0)}deletePeer(e,t=!1){const r=e===this.reversePeer;this._detachPeer(e),r?(this.reversePeer=null,t&&(this.reverseOffset=this.pieceMsg.attachments||1e4)):(this.forwardPeer=null,t&&(this.forwardOffset=-1)),this.isEmpty()&&this._handleTimeout(!1,!1)}terminate(){this._handleTimeout(!1,!1)}hasPartialBuffer(){return this.hasForwardBuffer()||this.hasReverseBuffer()}hasForwardBuffer(){return this.forwardOffset>=0}hasReverseBuffer(){return this.pieceMsg&&this.reverseOffset<this.pieceMsg.attachments}_cancelP2p(){if(this.p2pCanceled)return;this.p2pCanceled=!0;const{seg_id:e,sn:t,level:r}=this.pieceMsg;[this.forwardPeer,this.reversePeer].filter((e=>!!e)).forEach((i=>{i.cancelDownload(t,r,e)}))}destroy(){this.logger.info("destroy syn"),clearTimeout(this.timer),this._notifyStreamListenersAbort(),this._cancelP2p(),this.removeAllListeners(),this.destroyed=!0,this._detachPeer(this.forwardPeer),this.forwardPeer=null,this.forwardOffset=-1,this._detachPeer(this.reversePeer),this.reversePeer=null,this.reverseOffset=1e4,this.bufArr=[],this.forwardStreamListeners=[],this.reverseStreamListeners=[]}_detachPeer(e){if(!e)return;const r=e===this.reversePeer?this.reverseEvents:this.forwardEvents;r&&e.off(t.DC_PIECE_DATA,r.onPieceData).off(t.DC_PIECE,r.onPiece).off(t.DC_PIECE_NOT_FOUND,r.onPieceNotFound).off(t.DC_PIECE_ABORT,r.onPieceAbort)}_receivePacket(e,r,i,n=!0){const{seg_id:s,sn:o,level:l,size:h}=this.pieceMsg,d=r-1;if(this.bufArr[d])return this.logger.warn(`syn bufArr ${this.pieceMsg.sn} already has ${d} size ${i.byteLength}`),!1;if(n?this.p2pLoaded+=i.byteLength:this.httpLoaded+=i.byteLength,this.bufArr[d]=i,e?this.reverseOffset=d:this.forwardOffset=d,this._notifyStreamListeners(e,i,d),this.forwardOffset!==this.reverseOffset-1)return!0;this.forwardPeer&&(this.forwardPeer.miss=0),this.reversePeer&&(this.reversePeer.miss=0),clearTimeout(this.timer),this._notifyStreamListenersRemain();const u=h/(performance.now()-this.timeStart);let c=a.l.concat(this.bufArr);const f=c.byteLength;if(f===h){let e=c.buffer;const r=new R(o,s,e,this.getFromPeerId(),l);this.emit(t.SYN_OUTPUT,r,{speed:u,p2p:this.p2pLoaded,http:this.httpLoaded})}else{this.logger.error(`${l}-${o} expectedSize ${h} != byteLength ${f} forward ${this.forwardOffset} reverse ${this.reverseOffset}`);for(let e=0;e<this.bufArr.length;e++)this.logger.error(`piece ${e} size ${this.bufArr[e].byteLength}`);this.emit(t.SYN_ERROR,this.pieceMsg,ct)}}_setupPeer(e,r){0===this.timeStart&&(this.timeStart=performance.now());const i=(t,r,i,n,s,a)=>{if(this.destroyed)return;if(!this._validateMsg(t,a.level,r))return void this.logger.warn(`onPieceData ${a.level}-${t} not match ${JSON.stringify(this.pieceMsg)} from ${e.remotePeerId}`);const{reverse:o}=a;this._receivePacket(o,n,i)&&!this.waitingRemain&&!this.rangeRequesting&&this.deadline>0&&this._shouldSwitch()&&(this.logger.warn("should switch to http"),clearTimeout(this.timer),this._handleTimeout(!1,!1))},n=r=>{if(this.destroyed)return;const{attachments:i,size:n,sn:s,level:a,seg_id:o}=r;return n&&this._validateMsg(s,a,o)?this.pieceMsg.size&&n!==this.pieceMsg.size?(this.logger.warn(`onPiece ${r.level}-${r.sn} size not match`),void this.emit(t.SYN_ERROR,this.pieceMsg,ct)):void(0===this.bufArr.length&&(this.pieceMsg={...this.pieceMsg,seg_id:o,size:n,attachments:i},this.reverseOffset=i,this.bufArr=new Array(i),this.timeReceivePiece=performance.now())):(this.logger.warn(`onPiece ${JSON.stringify(r)} not match ${JSON.stringify(this.pieceMsg)}`),void this.deletePeer(e))},s=t=>{this.destroyed||this.deletePeer(e)},a=()=>{this.destroyed||this.deletePeer(e)},o={onPieceData:i,onPiece:n,onPieceNotFound:s,onPieceAbort:a};r?this.reverseEvents=o:this.forwardEvents=o,e.on(t.DC_PIECE_DATA,i).once(t.DC_PIECE,n).once(t.DC_PIECE_NOT_FOUND,s).once(t.DC_PIECE_ABORT,a)}_validateMsg(e,t,r){return(!this.pieceMsg.seg_id||r===this.pieceMsg.seg_id)&&(e===this.pieceMsg.sn&&t===this.pieceMsg.level)}_shouldSwitch(){const e=this.pieceMsg.size-64e3*this.loadedPackets();return this.coordinator.shouldSwitchToHttp(e,this.deadline,this.p2pSpeed,64e3,this.httpLoadTime)}_startTimer(e,t=!0){this.timer=setTimeout(this._handleTimeout.bind(this,t),e)}loadedPackets(){return this.pieceMsg.attachments-(this.reverseOffset-this.forwardOffset-1)}_handleTimeout(e=!1,r=!0){if(this.destroyed)return;const{level:i,sn:n,size:s,attachments:a}=this.pieceMsg;if(!s||0===this.timeReceivePiece)return this.logger.warn(`syn load timeout ${i}-${n} url ${this.url}`),void this.emit(t.SYN_ERROR,this.pieceMsg,ct);if(e&&this.timeReceivePiece>0&&(this.logger.warn(`syn ${this.loadedPackets()} of ${a} packets loaded`),this.shouldWaitForRemain(this.httpLoadTime))){const e=this.httpLoadTime;return this.waitingRemain=!0,this.logger.info(`syn wait for remain ${e}`),void this._startTimer(e,!1)}if(r){const e=[this.forwardPeer,this.reversePeer].filter((e=>!!e)).sort(((e,t)=>e.currentLoadSpeed()-t.currentLoadSpeed())).shift();e&&e.loadtimeout()}if(this._cancelP2p(),this.rangeSupported&&this.url)return this._loadRemainBufferByHttp();this._notifyStreamListenersAbort(),this.emit(t.SYN_ERROR,this.pieceMsg,pt)}shouldWaitForRemain(e){if(e<=0||this.isEmpty()||this.streamListeners()>0)return!1;const t=performance.now()-this.timeStart;return t<500||t<1e3&&this.timeReceivePiece>0&&e>3e3||this.shouldWaitForRemainUrgent(e)}shouldWaitForRemainUrgent(e){if(0===this.timeReceivePiece||e<=0)return!1;const t=this.p2pSpeed;let r=0;[this.forwardPeer,this.reversePeer].forEach((e=>{e&&(r+=e.loadedBytes())}));const i=(this.pieceMsg.size-r)/e;return this.logger.info(`syn remainTime ${e} speed ${t} required ${i}`),t>=i}get p2pSpeed(){let e=0;return[this.forwardPeer,this.reversePeer].forEach((t=>{t&&(e+=t.currentLoadSpeed())})),e}getFromPeerId(){const{forwardPeer:e,reversePeer:t}=this;return this.isFull()&&e!==t?`${e.remotePeerId}:${t.remotePeerId}`:e?`${e.remotePeerId}`:t?`${t.remotePeerId}`:""}_loadRemainBufferByHttp(){if(this.rangeRequesting)return;const{size:e,sn:r,level:i}=this.pieceMsg,n=this.rangeEnd>0?this.rangeEnd-1:0;let s=this.forwardOffset,a=z(s,this.reverseOffset,e,this.rangeStart,n);const l=performance.now();let h=this.deadline+this.httpLoadTime-l+1e3;h<2e3?h=2e3:h>6e3&&(h=6e3),this.logger.info(`continue download ${i}-${r} from ${this.url} range: ${a.rangeStart}-${a.rangeEnd-1} timeout ${h}`),this.rangeRequesting=!0,this.headers&&(this.xhrSetup=e=>{for(const t of Object.keys(this.headers))e.setRequestHeader(t,this.headers[t])}),this.hasPartialBuffer()||(a={});const d=new bt({xhrSetup:this.xhrSetup});let u={url:this.url,...a};this.proxied&&(u={headers:{[o]:"bypass"},...u});const c={timeout:h};let f,g=s+1;const p={onUpdate:(e,r,i)=>{if(!this.destroyed)if(i)this.emit(t.SYN_ERROR,this.pieceMsg,ft);else{if(r){this.rangeRequesting=!1;const e=f/(performance.now()-l);this.coordinator.addHttpSpeed(e)}this.bufArr[g]||this._receivePacket(!1,g+1,e,!1),g++}},onBodyStart:e=>{this.destroyed||(f=e,e===this.pieceMsg.size&&this.hasPartialBuffer()&&(this.logger.warn(`syn range request ${r} resp whole ts`),g=0))},onError:(e,r,i)=>{this.destroyed||(this.rangeRequesting=!1,this.logger.error(i),this.emit(t.SYN_ERROR,this.pieceMsg,ft))},onTimeout:()=>{this.destroyed||(this.rangeRequesting=!1,this.emit(t.SYN_ERROR,this.pieceMsg,gt))}};d.load(u,c,p)}_print(){const{level:e,sn:t}=this.pieceMsg;this.logger.info(`syn parallel loading ${e}-${t}`)}}class wt{constructor(){this.meanHttpSpeed=0}addHttpSpeed(e){this.meanHttpSpeed=.4*this.meanHttpSpeed+.6*e}shouldSwitchToHttp(e,t,r,i,n){if(this.meanHttpSpeed<=0)return!1;if(r>=this.meanHttpSpeed)return!1;if(this.meanHttpSpeed*n>=e)return!1;return((n+t-performance.now())*this.meanHttpSpeed-e)/(this.meanHttpSpeed-r)*r<i}}class Pt extends dt{constructor(e,r){super(e,r),this.bitset=new et(r.live||!1),this.bitCounts=new tt,this.requestingMap=new ut(t.REQUESTING_MAP_HAVE),this.segmentBuilderMap=new ut(t.BUILDER_MAP_HAVE),this.allowP2pLimit=r.httpLoadTime+1.5,this.playlistInfo=new Map,this.isUploader=!1,this.isReceiver=!1,this.targetPeers={},this.mBufferedDuration=0,this.sequential=!0,this.httpTimeouts=0,this.httpRangeErrs=0,this.coordinator=new wt,this.loadingSegId="",this.loadingSN=0,this.currPlaySN=0,this.currLostSN=-1,this.nextLostSN=-1,this.config.live?this.maxPrefetchCount=10:(this.maxPrefetchCount=150,this.startCheckPeersTimer())}get httpRangeSupported(){return this.config.httpRangeSupported}handshakePeer(e){this._setupDC(e),e.sendMetaData(this.bitset.allArray(),!0,this.peersNum,this.isMobileNet)}_receiveDCHave(e,r,i,n){this.bitset.has(e,r)||this.bitCounts.incre(e,r),n.isAvailableUrgently&&this.emit(t.SCH_DCHAVE,i)}_setupDC(e){super._setupDC(e),e.on(t.DC_HAVE,(t=>{if(e.bitset&&t.sn>=0){const{sn:r,level:i,complete:n,seg_id:s}=t;this._receiveDCHave(r,i,s,e);const a=n?Xe:Qe;e.bitset.add(r,i,s,a),e.isAvailableUrgently&&this._handleDCHave(e,r,i,s,a)}})).on(t.DC_HAVE_REVERSE,(t=>{if(e.bitset&&t.sn>=0){const{sn:r,level:i,seg_id:n}=t;this._receiveDCHave(r,i,n,e),e.bitset.hasCompleteOr(r,i,Je)||e.bitset.add(r,i,n,Je),e.isAvailableUrgently&&this._handleDCHave(e,r,i,n,Je)}})).on(t.DC_LOST,(t=>{if(!e.bitset)return;const{sn:r,level:i}=t;e.bitset.has(r,i)&&(e.bitset.delete(r,i),this.bitCounts.decre(r,i))})).on(t.DC_PIECE,(e=>{e.ext&&e.ext.incompletes>=7||this.notifyAllPeers(e.sn,e.level,e.seg_id,e.reverse?Je:Qe)})).on(t.DC_PIECE_CANCEL,(t=>{const{sn:r,level:i}=t,n=this.requestingMap.get(r,i);if(n)return void n.removeStreamListener(e.remotePeerId);const s=this.segmentBuilderMap.get(r,i);s&&s.removeStreamListener(e.remotePeerId)})).on(t.DC_PIECE_NOT_FOUND,(t=>{const{sn:r,level:i}=t;e.bitset.delete(r,i),this.bitCounts.decre(r,i),e.checkIfNeedChoke(!0)})).on(t.DC_REQUEST,(async r=>{const{logger:i}=this,{sn:n,level:s,reverse:a}=r;this.isUploader=!0;let o=r.seg_id;o||(o=await this.bufMgr.getSegIdBySN(n));const l=this.requestingMap.get(n,s);let h=!1;l&&l.isDownloading()&&(h=!0);const d=await this.bufMgr.getSegById(o);if(d)i.info("found seg from bufMgr"),d.level===s?e.sendBuffer(d.sn,d.segId,d.data,{from:"Cache",level:d.level,reverse:a}):e.sendPieceNotFound(n,o,{level:s});else if(h){i.info(`syn had ${l.loadedPackets()} packets, wait remain from upstream ${l.getFromPeerId()}`);const t={...l.pieceMsg,reverse:a},r=a?l.reverseBufList:l.forwardBufList;e.sendPartialBuffer(t,r,{from:l.isFull()?"WaitPartialDouble":"WaitPartialSingle",incompletes:1}),r.length<t.attachments?c(l,e,a):e.uploading=!1}else if(a)e.sendPieceNotFound(n,o,{level:s});else{const r=this.segmentBuilderMap.get(n,s);if(r)i.info(`peer request ${n} wait from builder, sent ${r.bufferList.length}`),u(r,e);else if(n>=this.loadingSN){let r;const l=l=>{this.segmentBuilderMap.off(`${t.BUILDER_MAP_HAVE}${n}-${s}`,r),l&&l.level===s?(i.info(`peer request notify seg ${l.sn}`),e.sendBuffer(l.sn,l.segId,l.data,{from:"NotifySegment",level:l.level,reverse:a})):e.sendPieceNotFound(n,o,{level:s})};r=r=>{this.bufMgr.off(`${t.BM_ADDED_SN_}${n}`,l),u(r,e)},i.info(`peer request ${n} wait from fragLoader`),this.segmentBuilderMap.once(`${t.BUILDER_MAP_HAVE}${n}-${s}`,r),this.bufMgr.once(`${t.BM_ADDED_SN_}${n}`,l)}else e.sendPieceNotFound(n,o,{level:s})}function u(e,t){t.sendPartialBuffer(e.pieceMsg,e.bufferList,{from:e.source,incompletes:1}),e.bufferList.length<e.pieceMsg.attachments?c(e,t,!1):t.uploading=!1}function c(e,t,r){e.addStreamListener(r,t.remotePeerId,((e,r,i,n,s)=>{i?t.sendMsgPieceAbort(n):t.send(n),s&&(t.uploading=!1)}))}}))}handleMetaData(e,t){if(t.field){e.bitset=new et(this.config.live,t.field);for(let e in t.field){const r=Number(e);if(r<0)continue;t.field[r].forEach((e=>{this.bitset.has(e,r)||this.bitCounts.incre(e,r)}))}this.addPeer(e),this.downloadOnly&&this.chokePeerRequest(e)}}peersHas(e,t){return this.bitCounts.has(e,t)}deletePeer(e){if(this.peerManager.hasPeer(e.remotePeerId)&&e.bitset){const t=e.bitset.allArray();for(let e in t){const r=Number(e),i=t[r];i&&i.forEach((e=>{this.bitCounts.decre(e,r)}))}}this.cleanRequestingMap(e.remotePeerId),super.deletePeer(e)}hasAndSetTargetPeer(e,t,r,i){const{logger:n,config:s}=this;this.waitForPeer&&(this.mBufferedDuration=i=s.waitForPeerTimeout+s.httpLoadTime);let a=1e3*(i-s.httpLoadTime);const o=s.httpLoadTime+1.5;if(n.info(`bufferedDuration ${1e3*i} remainLoadTime ${a}`),i<=o)return!1;if(this.requestingMap.has(e,t)){const l=this.requestingMap.get(e,t);if(!l)return this._searchAvailablePeers(e,t,r);const h=l.segId;if(h&&h!==r)return n.warn(`syn segId ${h} not match ${r}`),this.requestingMap.delete(e,t),this._searchAvailablePeers(e,t,r);if(!l.shouldWaitForRemain(a)){if(n.warn(`syn prefetch timeout at ${e}`),l.isFull())return!1;const a=this.peerManager.getPeersOrderByWeight(),h=Ze(a,Xe,e,t,r);let d=Ze(a,Qe,e,t,r),u=Ze(a,Je,e,t,r);if(l.hasReversePeer()){if(d=h.concat(d),d.length>0)return this.targetPeers.forwardPeer=d[0],!0}else if(l.hasForwardPeer()){if(u=h.concat(u),u.length>0)return this.targetPeers.reversePeer=u[0],!0}else{if(h.length>0)return l.hasForwardBuffer()?this.targetPeers.reversePeer=h[0]:this.targetPeers.forwardPeer=h[0],!0;{let e=!1;if(d.length>0&&(this.targetPeers.forwardPeer=d[0],e=!0),u.length>0&&(this.targetPeers.reversePeer=u[0],e=!0),e)return!0}}return!l.isEmpty()&&s.httpRangeSupported&&i>o+1}return n.info(`prefetch ${e} wait for remain`),!0}return this._searchAvailablePeers(e,t,r)}_searchAvailablePeers(e,t,r){if(!this.hasIdlePeers||!this.peersHas(e,t))return!1;const i=this.peerManager.getPeersOrderByWeight(),[n,s]=((e,t,r,i)=>{const n=Ze(e,Xe,t,r,i);if(n.length>=2)return[n[0],n[1]];if(1===n.length){const s=Ze(e,Qe,t,r,i);if(s.length>=1)return[s[0],n[0]];const a=Ze(e,Je,t,r,i);return a.length>=1?[n[0],a[0]]:0===c(0,1)?[null,n[0]]:[n[0],null]}const s=Ze(e,Qe,t,r,i);if(s.length>=1)return[s[0],null];const a=Ze(e,Je,t,r,i);return a.length>=1?[null,a[0]]:[null,null]})(i,e,t,r);return this.targetPeers={forwardPeer:n,reversePeer:s},[n,s].some((e=>!!e))}reportTraffic(e,t,r){const{fetcher:i}=this.engine;i?(e>0&&i.reportFlow(e),t>0&&i.reportDCTraffic(t,r)):this.logger.error("DC report failed")}notifyAllPeers(e,t,r,i=Xe){if(!r)return void this.logger.error("segId is required");if(this.downloadOnly)return;const{live:n}=this.config;if(this.bitset.has(e,t,i))return;const s=((e,t,r)=>`${e}-${t}-${r}`)(e,t,i);let a;i!==Je&&(a=i===Xe);const o=this.requestingMap.get(e,t);for(let l of this.getPeers())o&&o.hasPeer(l)||l.notifySet.has(s)||l.bitset.hasCompleteOr(e,t,i)||l.uploading||(l.sendMsgHave(e,r,{level:t,reverse:i===Je,complete:a}),l.notifySet.add(s),n&&v(l.notifySet,20))}checkPeers(){if(!this.hasPeers)return;const{logger:e,config:t,engine:r}=this,i=t.live,{currentLevel:n}=r;if(e.info(`currentLevel ${n}`),0===this.bitCounts.size(n))return;if(!i&&this.nextLostSN>=0&&this.nextLostSN>=this.currPlaySN-10)return;if(this.mBufferedDuration<this.allowP2pLimit&&(0!==this.mBufferedDuration||this.isHlsjs))return void e.info(`low buffer time ${this.mBufferedDuration}, skip prefetch`);const s=this.peerManager.getPeersOrderByWeight();if(0===s.length)return;const a=[];let{prefetchNum:o,endSN:l,startSN:h}=t;i&&(o=1);let d=0,u=this.loadingSN+1;if(!i)if(this.loadingSN>=l&&!this.bufMgr.overflowed)u=h;else{const e=Math.min(...s.filter((e=>e.endSN>=u)).map((e=>e?e.startSN:1/0)));if(!isFinite(e))return;u<e&&(u=e)}for(;a.length<o&&a.length<s.length&&d<this.maxPrefetchCount;){if(!i&&u>l)return;if(i&&u>this.loadingSN+2)return;if(this.bitset.has(u,n))u++;else{if(u!==this.loadingSN&&this.bitCounts.has(u,n)&&!this.requestingMap.has(u,n))for(let r of s)if(!a.includes(r)&&r.bitset.has(u,n)){const i=r.bitset.getState(u,n);let s;s=i===Xe?0===c(0,1):i===Je,a.push(r);const o=r.bitset.getSegId(u,n),l=new Lt(this.coordinator,this.logger,u,n,o,t.httpRangeSupported);this._setupSynthesizer(l),s?l.setReversePeer(r):l.setForwardPeer(r),this.requestingMap.set(u,n,l),r.requestDataBySN(u,!1,{level:n,reverse:s}),e.info(`request prefetch ${u} level ${n} from peer ${r.remotePeerId} downloadNum ${r.downloadNum} reverse ${s}`);break}d++,u++}}this.loadedPeerNum=a.length}onBufferManagerLost(e,t,r,i){this.currLostSN=e,r&&(this.nextLostSN=r),this.bitset.delete(e,i),this.bitCounts.delete(e,i)}cleanRequestingMap(e){const t=this.peerManager.getPeer(e);if(t)for(let[r,i]of this.requestingMap.internalMap){const n=r.split("-"),s=Number(n[1]),a=Number(n[0]);i.hasPeerId(e)&&(this.logger.info(`delete ${e} in synthesizer`),i.deletePeer(t),this.bitCounts.decre(s,a),t.bitset.delete(s,a))}}shouldWaitForNextSeg(){let e;return e=!this.isUploader&&(!!this.isReceiver||c(0,100)>20),this.isReceiver=this.isUploader=!1,e}updateLoaded(e,t,r){this.bitset.hasCompleteOr(e,t)||(this.bitset.add(e,t,r,Xe),this.bitCounts.delete(e,t))}broadcastPlaylist(e,t){if(!this.config.live)return;const r=function(e){const t=e.split("\n");let r=0,i=0;for(let e of t){const t=/^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(e);if(t&&t[1]){r=parseInt(t[1],10);break}}for(let e of t)e.startsWith("#EXTINF")&&i++;return r+i-1}(t);if(!this.isMobileNet){let i=0;for(let n of this.getPeers())if(i++,n.sendMsgPlaylist(e,t,r),i>=5)break}this.playlistInfo.set(e,{seq:r,data:t})}getPlaylistFromPeer(e){if(!this.config.live)return null;const{seq:t,data:r}=this.playlistInfo.get(e);for(let r of this.getPeers()){const i=r.getLatestPlaylist(e,t);if(i)return this.playlistInfo.set(e,i),i}return null}getBufferedDuration(){let{media:e,currentSrc:t}=this.engine;if(!e||e.src!==t&&0===e.currentTime){if(this.logger.info("try get video element"),e=q(this.config.mediaElem,t),!e)return 5;this.engine.media=e}let r=0,i=e.currentTime,n=e.buffered;for(let e=n.length-1;e>=0;e--)if(i>=n.start(e)&&i<=n.end(e)){r=n.end(e)-i;break}return this.mBufferedDuration=r,r>0?r:0}destroy(){super.destroy(),this.requestingMap.clear(),this.segmentBuilderMap.clear()}_handleSynOutput(e){e>0?this.httpTimeouts++:this.httpTimeouts>0&&this.httpTimeouts--}_notifySynthesizer(e,t,r,i,n,s=!0){const{logger:a}=this,o=this.requestingMap.get(r,i);if(!o)return;const l=o.segId;function h(n,s){s?e.requestDataById(t,r,!0,{level:i,reverse:n}):(a.info(`notify syn prefetch ${r}`),e.requestDataBySN(r,!1,{level:i,reverse:n}))}function d(){return n===Qe||n===Xe}function u(){return n===Je||n===Xe}t&&l&&t!==l?a.warn(`notifySynthesizer segId ${t} not match ${l}`):o.isFull()||(o.isAlmostDeadline()?a.info("almost deadline, ignored"):o.isEmpty()?o.hasForwardBuffer()&&u()?(o.setReversePeer(e),h(!0,s)):o.hasReverseBuffer()&&d()&&(o.setForwardPeer(e),h(!1,s)):!o.hasForwardPeer()&&d()?(o.setForwardPeer(e),h(!1,s)):!o.hasReversePeer()&&u()&&(o.setReversePeer(e),h(!0,s)))}_setupEngine(){}getStatsForPeer(){const{currentLevel:e,media:t}=this.engine,r={level:e};if(t&&!this.config.live){const{currentTime:e}=t;r.pos=Math.round(e)}return r}_handleSynError(e){switch(e){case ft:this.logger.warn("ERROR_SYN_RANGE_REQUEST"),this.httpRangeErrs++;break;case gt:this.logger.warn("ERROR_SYN_HTTP_TIMEOUT"),this.httpTimeouts+=3}this.httpRangeErrs>=5&&(this.config.httpLoadTime<=4.5&&(this.config.httpLoadTime+=.5),this.httpRangeErrs=0)}}class At{constructor(t,r,i,n){this.bufferList=[],this.streamListeners=[],this.finished=!1,this.packetSize=l,this.attachments=n%this.packetSize==0?n/this.packetSize:Math.floor(n/this.packetSize)+1,this.pieceMsg={event:e.DC_PIECE,attachments:this.attachments,seg_id:i,sn:t,level:r,size:n,reverse:!1},this.sink=(0,a.l)(0),this.source="HttpStream"}receiveBytes(e,t){e.byteLength&&(this.sink=a.l.concat([this.sink,e]),this.bufferList.push(e),t&&(this.finished=!0),this._notifyStreamListeners(e))}getCompleteBuffer(){return this.sink.buffer}destroy(){this.finished||this._notifyStreamListenersAbort()}addStreamListener(e,t,r){this.streamListeners.push({handler:r,peerId:t})}removeStreamListener(e){this.streamListeners=this.streamListeners.filter((t=>t.peerId!==e||(t.handler(void 0,void 0,!0,"aborted by cancel"),!1)))}_notifyStreamListenersAbort(){for(let e of this.streamListeners){const{handler:t}=e;t(void 0,void 0,!0,"aborted by httpLoader")}this.streamListeners.length=0}_notifyStreamListeners(e){const{sn:t,seg_id:r}=this.pieceMsg;for(let i of this.streamListeners){const{handler:n}=i;n(t,r,!1,e,this.finished)}this.finished&&(this.streamListeners.length=0)}}const Dt=class extends Pt{constructor(e,t){super(e,t),this.server=t.fetcher,this.p2pEnabled=e.p2pEnabled,this.resolveMap=new Map,this.dcDownloadTimeout=t.live?5:9,this.segmentId=t.segmentId,this.segmentBypass="function"==typeof t.segmentBypass?t.segmentBypass:()=>!1,!0===this.config.httpStreamEnabled?this.streamEnabled=St():this.streamEnabled=!1}async handleGetMediaData(e,r){const{logger:i,engine:n}=this;let{url:s,range:a}=e;const o=this._getFrag(s,a);if(!o)return i.warn(`cannot get frag ${s}`),r.postMessage({action:t.SW_GET_MEDIA});if(this.segmentBypass(s,o.tagList))return i.info(`bypass frag ${s}`),r.postMessage({action:t.SW_GET_MEDIA});n.currentLevelIndex=o.level;const{sn:l,level:h}=o,d=this.segmentId(String(h),l,s,a),u=d===this.loadingSegId;u&&i.warn(`duplicate request ${d}`),this.loadingSN=l,n.bufMgr&&(n.bufMgr.loadingSN=l),this.loadingSegId=d;const c=await this.bufMgr.getSegById(d);if(c)return i.info(`bufMgr found seg sn ${l} segId ${d}`),o.loaded=c.data.byteLength,o.fromPeerId=c.fromPeerId,n.emit(t.FRAG_LOADED,{url:s,sn:l,level:h,segId:d,loaded:o.loaded,duration:o.duration,byP2p:!0,fromPeerId:c.fromPeerId}),this._onFragLoaded(s,o),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:c.data}});let f=this.getBufferedDuration();f>6.8&&(f=6.8),i.info(`handleGetMediaData sn ${l} bufferedDuration ${f}`);let g=1e3*(f-this.config.httpLoadTime);if(g<0&&(g=0),this.resolveMap.has(l)||u){let e=this.requestingMap.get(l,h);if(e||u){e&&(i.warn(`${l} is requesting, terminate syn wait for seg`),e.terminate());let n=setTimeout((()=>{i.info(`notify seg ${l} timeout`),n=-1,r.postMessage({action:t.SW_GET_MEDIA})}),g);this.bufMgr.once(`${t.BM_ADDED_SN_}${l}`,(e=>{n<0||e&&e.level===h&&(clearTimeout(n),i.info(`notify seg ${e.sn}`),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:e.data}}))}))}else i.warn(`${l} is requesting, fallback`),r.postMessage({action:t.SW_GET_MEDIA})}else if(this.hasAndSetTargetPeer(l,h,d,f)){await this._loadFragByP2p(o,r,l,d,s,h,a,g)||r.postMessage({action:t.SW_GET_MEDIA})}else{const e=this.requestingMap.get(l,h);this.httpRangeSupported&&e&&e.segId===d&&e.hasPartialBuffer()?(i.warn(`syn has partial buffer for ${d}`),e.setTimeout(g)):this._loadFragByHttp(o,r,l,d,s,h,a,6800)}}_loadFragByHttp(e,r,i,n,s,a,l,h){const d=new bt({});let u={url:s,...E(l),headers:{[o]:"bypass"}};const c={timeout:h},f={onError:(e,i,n)=>{this.logger.error(n),r.postMessage({action:t.SW_GET_MEDIA})},onTimeout:()=>{this.logger.warn("http load timeout"),r.postMessage({action:t.SW_GET_MEDIA})},onSuccess:async o=>{this.notifyAllPeers(i,a,n);const{data:l}=o;if(!await this.bufMgr.hasSegOfId(n)){const e=p(l).buffer,t=new R(i,n,e,"",a);this.bufMgr.putSeg(t),this.reportTraffic(l.byteLength,0,0)}this.segmentBuilderMap.delete(i,a),e.segId=n,e.loaded=l.byteLength,this.engine.emit(t.FRAG_LOADED,{url:s,sn:i,level:a,segId:n,loaded:e.loaded,duration:e.duration,byP2p:!1}),this._onFragLoaded(s,e),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:l}})}};if(this.streamEnabled){let e;this.isMobileNet||this.notifyAllPeers(i,a,n,Qe),f.onBodyStart=t=>{!e&&t>0&&(e=new At(i,a,n,t),this.segmentBuilderMap.has(i,a)||this.segmentBuilderMap.set(i,a,e))},f.onUpdate=(t,r,n)=>{n?this.segmentBuilderMap.delete(i,a):e&&e.receiveBytes(t,r)}}d.load(u,c,f)}async _loadFragByP2p(e,r,i,n,s,a,o,l){const{logger:h}=this;h.info(`p2p load sn ${i} segId ${n} level ${a}`);const d=await this.load(i,n,a,s,o,l);if(d&&d.data){const{data:o,fromPeerId:l,size:u}=d;if(h.info(`p2p loaded segId ${n} level ${a} size ${o.byteLength}`),!await this.bufMgr.hasSegOfId(n)){const e=new R(i,n,o,l,a);h.info(`bufMgr putSeg ${i} level ${a}`),this.bufMgr.putSeg(e)}return e.loaded=o.byteLength,e.fromPeerId=l,this.engine.emit(t.FRAG_LOADED,{url:s,sn:i,level:a,segId:n,loaded:e.loaded,duration:e.duration,byP2p:!0,fromPeerId:l}),this._onFragLoaded(s,e),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:o,size:u}}),!0}h.warn(`P2P timeout load segId ${n}`);const u=await this.bufMgr.getSegById(n);return!!u&&(h.info(`already loaded seg sn ${i} segId ${n}`),r.postMessage({action:t.SW_GET_MEDIA,data:{url:s,buffer:u.data}}),!0)}notifySWMessage(e,r,i){if(e===t.SW_GET_MEDIA)this.server.increMediaRequests(),this.handleGetMediaData(r,i);else this.logger.warn(`unknown action ${e}`)}_getFrag(e,t){return t&&(e=`${e}|${t}`),this.fragMap.get(e)}destroy(){super.destroy(),this.logger.warn("destroy HlsSwScheduler")}_onFragLoaded(e,t){if(this.updateLoaded(t.sn,t.level,t.segId),!this.engine)return;const{media:r,targetDuration:i}=this.engine;!this.config.live&&r&&i&&(this.currPlaySN=Math.ceil(r.currentTime/i))}load(e,t,r,i,n,s){const{logger:a,config:o}=this;this.isReceiver=!0;const{forwardPeer:l,reversePeer:h}=this.targetPeers;l||h||(s-=1);let d=this.requestingMap.get(e,r),u={...E(n),proxied:!0,url:i,segId:t,httpLoadTime:1e3*o.httpLoadTime};d?d.setExtra(u):(d=new Lt(this.coordinator,this.logger,e,r,t,this.httpRangeSupported,u),this._setupSynthesizer(d),this.requestingMap.set(e,r,d)),l&&(d.setForwardPeer(l),l.requestDataById(t,e,!0,{level:r})),h&&(d.setReversePeer(h),h.requestDataById(t,e,!0,{level:r,reverse:!0})),d.isEmpty()&&(s=0),a.info(`syn setTimeout ${s}`),d.setTimeout(s);const c=new Promise((i=>{const n={resolve:i,sn:e,level:r,segId:t};this.resolveMap.set(e,n)}));return this.targetPeers={},c}_setupSynthesizer(e){e.on(t.SYN_OUTPUT,((t,r)=>{const{config:i,logger:n}=this,{segId:s,sn:a,data:o,level:l}=t,{speed:h,http:d,p2p:u}=r;this._handleSynOutput(d);const c=this.resolveMap.has(a);if(i.validateSegment(s,new Uint8Array(o))){this.notifyAllPeers(a,l,s),this.bitset.has(a,l)||this.reportTraffic(d,u,h);const r=e.getFromPeerId();if(c){n.info(`receive criticalSeg seg_id ${s}`);const e=this.resolveMap.get(a);this.resolveMap.delete(a),e.resolve({data:o,fromPeerId:r})}else this.bitset.has(a,l)||(this.bufMgr.putSeg(t),this.updateLoaded(a,l,s))}else if(n.error(`segment ${s} validate failed`),c){const e=this.resolveMap.get(a);this.resolveMap.delete(a),e.resolve()}this.requestingMap.delete(a,l)})).on(t.SYN_ERROR,((t,r)=>{const{logger:i}=this,{sn:n,level:s}=t;if(console.warn(`SYN_ERROR ${s}-${n}`),this.resolveMap.has(n)){const e=this.resolveMap.get(n);this.resolveMap.delete(n),e.resolve()}r===pt&&e.hasPartialBuffer()?i.warn("syn abort with partial buffer"):(this.requestingMap.delete(n,s),this._handleSynError(r))}))}_handleDCHave(e,t,r,i,n){const s=0!==this.resolveMap.size;this._notifySynthesizer(e,i,t,r,n),this.config.live&&!s&&w()((()=>{this.checkPeers()}))}};var It=function(e,t){return It=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},It(e,t)};function Rt(e,t){function r(){this.constructor=e}It(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function Ct(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var i,n,s=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(i=s.next()).done;)a.push(i.value)}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return a}function kt(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(Ct(arguments[t]));return e}var xt=function(e,t){this.target=t,this.type=e},Ot=function(e){function t(t,r){var i=e.call(this,"error",r)||this;return i.message=t.message,i.error=t,i}return Rt(t,e),t}(xt),Mt=function(e){function t(t,r,i){void 0===t&&(t=1e3),void 0===r&&(r="");var n=e.call(this,"close",i)||this;return n.wasClean=!0,n.code=t,n.reason=r,n}return Rt(t,e),t}(xt),Nt=function(){if("undefined"!=typeof WebSocket)return WebSocket},Ft={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+4e3*Math.random(),minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1};const Bt=function(){function e(e,t,r){var i=this;void 0===r&&(r={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(e){i._debug("open event");var t=i._options.minUptime,r=void 0===t?Ft.minUptime:t;clearTimeout(i._connectTimeout),i._uptimeTimeout=setTimeout((function(){return i._acceptOpen()}),r),i._ws.binaryType=i._binaryType,i._messageQueue.forEach((function(e){return i._ws.send(e)})),i._messageQueue=[],i.onopen&&i.onopen(e),i._listeners.open.forEach((function(t){return i._callEventListener(e,t)}))},this._handleMessage=function(e){i._debug("message event"),i.onmessage&&i.onmessage(e),i._listeners.message.forEach((function(t){return i._callEventListener(e,t)}))},this._handleError=function(e){i._debug("error event",e.message),i._disconnect(void 0,"TIMEOUT"===e.message?"timeout":void 0),i.onerror&&i.onerror(e),i._debug("exec error listeners"),i._listeners.error.forEach((function(t){return i._callEventListener(e,t)})),i._connect()},this._handleClose=function(e){i._debug("close event"),i._clearTimeouts(),i._shouldReconnect&&i._connect(),i.onclose&&i.onclose(e),i._listeners.close.forEach((function(t){return i._callEventListener(e,t)}))},this._url=e,this._protocols=t,this._options=r,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(e,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(e,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CONNECTING",{get:function(){return e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"OPEN",{get:function(){return e.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSING",{get:function(){return e.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSED",{get:function(){return e.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(e){this._binaryType=e,this._ws&&(this._ws.binaryType=e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bufferedAmount",{get:function(){return this._messageQueue.reduce((function(e,t){return"string"==typeof t?e+=t.length:t instanceof Blob?e+=t.size:e+=t.byteLength,e}),0)+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?e.CLOSED:e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),e.prototype.close=function(e,t){void 0===e&&(e=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),this._ws?this._ws.readyState!==this.CLOSED?this._ws.close(e,t):this._debug("close: already closed"):this._debug("close enqueued: no ws instance")},e.prototype.reconnect=function(e,t){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,this._ws&&this._ws.readyState!==this.CLOSED?(this._disconnect(e,t),this._connect()):this._connect()},e.prototype.send=function(e){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",e),this._ws.send(e);else{var t=this._options.maxEnqueuedMessages,r=void 0===t?Ft.maxEnqueuedMessages:t;this._messageQueue.length<r&&(this._debug("enqueue",e),this._messageQueue.push(e))}},e.prototype.addEventListener=function(e,t){this._listeners[e]&&this._listeners[e].push(t)},e.prototype.dispatchEvent=function(e){var t,r,i=this._listeners[e.type];if(i)try{for(var n=function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(i),s=n.next();!s.done;s=n.next()){var a=s.value;this._callEventListener(e,a)}}catch(e){t={error:e}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return!0},e.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter((function(e){return e!==t})))},e.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._options.debug&&console.log.apply(console,kt(["RWS>"],e))},e.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,r=void 0===t?Ft.reconnectionDelayGrowFactor:t,i=e.minReconnectionDelay,n=void 0===i?Ft.minReconnectionDelay:i,s=e.maxReconnectionDelay,a=void 0===s?Ft.maxReconnectionDelay:s,o=0;return this._retryCount>0&&(o=n*Math.pow(r,this._retryCount-1))>a&&(o=a),this._debug("next delay",o),o},e.prototype._wait=function(){var e=this;return new Promise((function(t){setTimeout(t,e._getNextDelay())}))},e.prototype._getNextUrl=function(e){if("string"==typeof e)return Promise.resolve(e);if("function"==typeof e){var t=e();if("string"==typeof t)return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},e.prototype._connect=function(){var e=this;if(!this._connectLock&&this._shouldReconnect){this._connectLock=!0;var t=this._options,r=t.maxRetries,i=void 0===r?Ft.maxRetries:r,n=t.connectionTimeout,s=void 0===n?Ft.connectionTimeout:n,a=t.WebSocket,o=void 0===a?Nt():a;if(this._retryCount>=i)this._debug("max retries reached",this._retryCount,">=",i);else{if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),void 0===(l=o)||!l||2!==l.CLOSING)throw Error("No valid WebSocket class provided");var l;this._wait().then((function(){return e._getNextUrl(e._url)})).then((function(t){e._closeCalled||(e._debug("connect",{url:t,protocols:e._protocols}),e._ws=e._protocols?new o(t,e._protocols):new o(t),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout((function(){return e._handleTimeout()}),s))}))}}},e.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new Ot(Error("TIMEOUT"),this))},e.prototype._disconnect=function(e,t){if(void 0===e&&(e=1e3),this._clearTimeouts(),this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new Mt(e,t,this))}catch(e){}}},e.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},e.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},e.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},e.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},e.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},e}();class Ut extends(s()){constructor(e,t){super(),this.logger=e,t.startsWith("wss")?this.addr=t.replace("wss","https"):t.startsWith("ws")&&(this.addr=t.replace("ws","http")),this.connected=!1,this.retryCount=0,this.closed=!1,this.msgQueue=[],this.posting=!1}start(){this.closed=!1,this._hello((()=>{this._longPolling()}))}_hello(e){fetch(this.addr+"&hello",{method:"POST"}).then((e=>{if(!e.ok)throw new Error("hello response was not ok");return e.json()})).then((t=>{this.connected=!0,e(),this.onopen&&this.onopen(t.ver)})).catch((e=>{this.closed=!0,this.onerror&&this.onerror(e)}))}send(e){this.msgQueue.push(e),this.posting||this._realSend([...this.msgQueue])}_realSend(e){0!==e.length&&(this.posting=!0,this.msgQueue=[],fetch(this.addr,{method:"POST",body:JSON.stringify(e)}).then((()=>{this.posting=!1,this.msgQueue.length>0&&this._realSend([...this.msgQueue])})).catch((e=>{this.logger.error(e),this.posting=!1})))}close(){this.connected&&(this.closed=!0,this.connected=!1,this.abortController&&this.abortController.abort(),this.onclose&&this.onclose())}destroy(){this.close(),this.removeAllListeners()}_longPolling(){if(this.closed)return;this.abortController=new AbortController;const e=this.abortController.signal;fetch(this.addr,{signal:e}).then((e=>{if(!e.ok)throw new Error("polling response was not ok");return e.text()})).then((e=>{e&&this.onmessage&&this.onmessage(JSON.parse(e)),this.retryCount=0,this._longPolling()})).catch((e=>{this.connected&&(this.retryCount<=3?(this.retryCount++,this._longPolling()):(this.connected=!1,this.onerror&&this.onerror(e)))}))}}class Gt extends(s()){constructor(e,t,r,i,n="main"){super(),this.logger=e,this.config=t,this.wsAddr=r,this.serverVersion=0,this.pingInterval=i||60,this.name=n,this.pollingClient=new Ut(e,r);try{this._ws=this._init()}catch(t){e.error(t),this._startPolling()}}_init(){const e={maxRetries:this.config.wsMaxRetries,minReconnectionDelay:c(1e4,6e4),maxReconnectionDelay:6e5,maxEnqueuedMessages:20};let t=new Bt(this.wsAddr,void 0,e);return t.addEventListener("open",(()=>{this.logger.info(`signal ${this.name} ${this.wsAddr} connection opened`),this.pollingClient.connected?this.pollingClient.close():(this.onopen&&this.onopen(),this._startPing(this.pingInterval))})),t.push=t.send,t.send=e=>{let r=JSON.stringify(e);t.push(r)},t.addEventListener("message",(e=>{let t=e.data;const r=JSON.parse(t),i=r.action;if("pong"!==i){if("ver"!==i)return"close"===i?(this.logger.warn(`server close signal ${this.name} reason ${r.reason}`),void this.close()):void(this.onmessage&&this.onmessage(r,this.name));this.serverVersion=r.ver}else clearTimeout(this.pongTimer)})),t.addEventListener("close",(e=>{this.logger.warn(`signal ${this.name} ${this.wsAddr} closed ${e.code} ${e.reason}`),e.code>=5e3||e.code<4e3?(this.onclose&&this.onclose(),this._stopPing()):this.close()})),t.addEventListener("error",(e=>{this._stopPing(),this.onerror&&this.onerror(e),this._startPolling()})),t}_startPolling(){this.pollingClient.connected||(this.logger.info("start polling"),this.pollingClient.start(),this._setupPolling(this.pollingClient))}sendSignal(e,t){const r={action:"signal",to_peer_id:e,data:t};this._send(r)}sendReject(e,t,r){const i={action:"reject",to_peer_id:e,reason:t,fatal:r};this._send(i)}_send(e){this.pollingClient.connected?this.pollingClient.send(e):this._ws&&this._ws.send(e)}_startPing(e=120){this.connected&&(this.pingTimer=setInterval((()=>{const e={action:"ping"};this._ws&&this._ws.send(e),this.serverVersion>=22&&this._waitForPong()}),1e3*e))}_waitForPong(){this.pongTimer=setTimeout((()=>{this.logger.warn(`signal ${this.name} wait for pong timeout, reconnect`),this.close(),this.reconnect()}),15e3)}_resetPing(){this._stopPing(),this._startPing(this.pingInterval)}_stopPing(){clearInterval(this.pingTimer),clearTimeout(this.pongTimer),this.pingTimer=null,this.pongTimer=null}close(){this.logger.info(`close signal ${this.name}`),this._stopPing(),(()=>{this._ws&&this._ws.close(1e3,"normal close")})(),this.pollingClient.close()}reconnect(){this._ws&&(this.logger.info(`reconnect signal ${this.name}`),this._ws.reconnect())}destroy(){this.close(),this._ws=null,this.removeAllListeners(),this.pollingClient.destroy()}get connected(){return!!this.pollingClient.connected||this._connected}get _connected(){return!!this._ws&&this._ws.readyState===Bt.OPEN}_setupPolling(e){e.onopen=e=>{e&&(this.serverVersion=e),this.logger.info("polling opened"),this.onopen&&this.onopen()},e.onerror=e=>{this._connected||this.onerror&&this.onerror(e)},e.onclose=()=>{this._connected||this.onclose&&this.onclose()},e.onmessage=e=>{if(this.onmessage)for(let t of e)this.onmessage(t,this.name)}}}const $t=Gt,Ht=class extends(s()){constructor(e,t,r,i){super(),this.logger=e,this.config=t,this.mainAddr=r,this.backupAddr=i,this.mainWS=this._init(r),this.backupTimer=setTimeout((()=>{this.destroyed||(this.backupWS=this._init(i,"backup"))}),900),this._connected=!1,this.destroyed=!1}_init(e,t){if(!e)return null;let r=new $t(this.logger,this.config,e,270,t);return r.onopen=()=>{!this._connected&&this.onopen&&(this._connected=!0,this.onopen())},r.onmessage=e=>{this.onmessage&&this.onmessage(e,r.name)},r.onclose=()=>{this._connected&&!this.connected&&this.onclose&&(this._connected=!1,this.onclose())},r.onerror=e=>{this.onerror&&this.onerror(e)},r}sendSignal(e,t,r){if(r){const i=this._getWSByName(r);i&&i.sendSignal(e,t)}else this.mainConnected?this.mainWS.sendSignal(e,t):this.backupConnected?this.backupWS.sendSignal(e,t):this.logger.warn("no signal available")}sendReject(e,t,r,i){if(i){const n=this._getWSByName(i);if(n)return void n.sendReject(e,t,r)}this.mainConnected?this.mainWS.sendReject(e,t,r):this.backupConnected?this.backupWS.sendReject(e,t,r):this.logger.warn("no signal available, send reject failed")}close(){this.mainWS&&this.mainWS.close(),this.backupWS&&this.backupWS.close()}_getWSByName(e){return this.mainWS&&this.mainWS.name===e?this.mainWS:this.backupWS&&this.backupWS.name===e?this.backupWS:null}reconnect(){this.mainWS&&this.mainWS.reconnect(),this.backupWS&&this.backupWS.reconnect()}destroy(){this.close(),clearTimeout(this.backupTimer),this.mainWS=null,this.backupWS=null,this.removeAllListeners(),this.destroyed=!0}get connected(){return this.mainConnected||this.backupConnected}get mainConnected(){return this.mainWS&&this.mainWS.connected}get backupConnected(){return this.backupWS&&this.backupWS.connected}};const jt=function(e,t,r=40){var i=null,n=!1,s=r;return function(r=!1){if(r)return clearTimeout(i),void(n=!1);n||(n=!0,i=setTimeout((function(){e.call(t,s),n=!1,i=null}),1e3*s),s*=1.1)}};class Wt{constructor(e,t,r=15){this.engine=e,this.config=t,this.trickle=t.waitForPeer,this.poolSize=r,this.pool=[];for(let e=0;e<r;e++)this.pool.push(this._createPeer());this.timer=setTimeout((()=>{this.destroy()}),2e4)}_createPeer(){return new O(this.engine,void 0,void 0,!0,this.config,{trickle:this.trickle})}get size(){return this.pool.length}getPeer(){return 0===this.size?this._createPeer():this.pool.shift()}destroy(){for(let e of this.pool)e.destroy(!0);this.pool=[],clearTimeout(this.timer)}}class Vt extends(s()){constructor(e,t,r,i){super(),this.engine=e,this.logger=e.logger,this.config=i,this.connected=!1,this.scheduler=r,this.sequential=this.scheduler.sequential,this.DCMap=new Map,this.failedDCSet=new Set,this.notFoundDCSet=new Set;const n=k().isMobile();this.peerPool=new Wt(e,i,n?10:15),this.signalerWs=null,this.fetcher=t,this.peers=[],this.minConns=5,this.stuns=[],this.requestMorePeers=jt(this._requestMorePeers,this),this.maxConns=n?13:22,this.maxConnsActive=n?8:12,this.peersIncrement=0,this.gotPeersFromTracker=!1,this.fuseRate=-1,this.overloaded=!1}get totalConns(){return this.scheduler.peersNum+1}resumeP2P(){if(!this.fetcher)return;const{engine:t,config:r,fetcher:i}=this,{btAnnounce:n,btAnnouncePreflight:s}=i,{wsSignalerAddr:a,wifiOnly:o,geoIpPreflight:l,getPeerId:h}=r;(l?s:n).call(i).then((e=>{if(!this.scheduler)return;t.peerId=this.peerId=e.id,this.minConns=e.min_conns;const r=e.peers;this.scheduler.notifyPeersLoaded(r.length),t.netType=i.announceInfo.netType,(e.wifi_only||o)&&t.isMobileNet&&(this.scheduler.downloadOnly=!0,this.logger.info("downloadOnly mode")),e.overload&&(this.overloaded=!0,this.logger.warn("server is overloaded, degrade"));const n=a.main;let s=a.backup;e.signal&&!e.signal2&&(s=void 0),this.signalerWs=this._initSignalerWs(e.signal||n,e.signal2||s,e.token,e.token2),0===r.length?this.requestMorePeers():this.peers=this._filterPeers(r),t.emit("peerId",this.peerId),h&&"function"==typeof h&&h(this.peerId),e.stun&&e.stun.length>0&&(this.stuns=e.stun),e.debug&&this.logger.enableDebug(),e.fuse_rate&&(this.fuseRate=e.fuse_rate),this.logger.info(`announce request response ${JSON.stringify(e,null,2)}`)})).catch((r=>{if(this.scheduler&&("TRACKER_EXPT"===r.code&&t.emit(e.EXCEPTION,r),this.scheduler.notifyPeersLoaded(0),r.retry)){const e=c(15e3,4e4);this.logger.warn(`announce retry after ${e}ms`),this.announceTimer=setTimeout((()=>{this.resumeP2P()}),e)}}))}stopP2P(){this.fetcher.postStatsWithBeacon(),this.fetcher.destroy(),this.fetcher=null,this.requestMorePeers(!0),this.scheduler.destroy(),this.scheduler=null,this.signalerWs&&(this.signalerWs.destroy(),this.signalerWs=null),this.peers=[];for(let e of this.DCMap.values())e.destroy(!0);this.DCMap.clear(),this.peerPool.destroy(),this.peerPool=null,this.failedDCSet.clear(),this.notFoundDCSet.clear(),this.logger.warn("tracker stop p2p")}destroy(){this.stopP2P(),this.removeAllListeners(),clearTimeout(this.announceTimer);const{config:e}=this;e.getStats=e.getPeerId=e.getPeersInfo=null,this.logger.warn("destroy tracker")}_filterPeers(e){const t=[],r=[...this.DCMap.keys(),...this.failedDCSet.keys(),this.peerId];return e.filter((e=>!r.includes(e.id))).forEach((e=>{t.push({id:e.id,intermediator:e.intermediator})})),t}_tryConnectToAllPeers(){if(0!==this.peers.length&&this.signalerWs.connected)for(this.logger.info(`try connect to ${this.peers.length} peers`);this.peers.length>0&&!(this.DCMap.size>=this.maxConnsActive);){let e=this.peers.shift();const t=e.intermediator;this.logger.debug(`new DataChannel ${e.id} intermediator ${t}`),this._createDatachannel(e.id,!0,t)}}_setupDC(t){t.on(e.DC_SIGNAL,((e,r)=>{const i=t.remotePeerId;if(t.intermediator){const r=this.DCMap.get(t.intermediator);if(r){if(r.sendMsgSignal(i,this.peerId,e))return;this.logger.warn(`intermediator ${t.intermediator} relay failed`)}}this.signalerWs.sendSignal(i,e,t.signalName)})).on(e.DC_PEER_SIGNAL,(e=>{const r=e.to_peer_id,i=e.from_peer_id,n=e.action;if(r&&i&&n)if(r!==this.peerId){this.logger.info(`relay signal for ${i}`);const s=this.DCMap.get(r);if(s){if("signal"!==n)return void s.sendMsgSignalReject(r,i,e.reason,e.fatal);if(s.sendMsgSignal(r,i,e.data))return}t.sendMsgSignal(i,r)}else"signal"===n?this._handleSignalMsg(i,e,t.remotePeerId):this._handSignalRejected(i,e)})).on(e.DC_GET_PEERS,(()=>{const e=u(),r=this.scheduler.getPeers().filter((e=>e.peersConnected<(e.mobileWeb?13:22)&&!e.super));if(r&&r.length>0){const i=[];r.forEach((r=>{if(r.remotePeerId===t.remotePeerId||r.remotePeerId===this.peerId)return;if(!this.config.live&&(r.currentPos-t.currentPos>600||r.currentPos<t.currentPos))return;e-r.timeJoin>50&&i.push({id:r.remotePeerId})})),this.logger.info(`send ${i.length} peers to ${t.remotePeerId}`),t.sendPeers(i)}})).on(e.DC_PEERS,(e=>{t.gotPeers=!0;const r=e.peers;if(r&&r.length>0&&this.scheduler.peersNum<10){const e=5;this.logger.info(`receive ${r.length} peers from ${t.remotePeerId}`),r.forEach((e=>{e.intermediator=t.remotePeerId})),this.peers=this._filterPeers(r).slice(0,e),this._tryConnectToAllPeers()}})).once(e.DC_ERROR,(e=>{this.logger.info(`datachannel ${t.channelId} failed fatal ${e}`),this.scheduler&&(this.scheduler.deletePeer(t),this._destroyAndDeletePeer(t.remotePeerId,e),this.requestMorePeers(),this.fetcher&&(t.connected||e&&this.fetcher.increFailConns(),e&&this.failedDCSet.add(t.remotePeerId),this._doSignalFusing(this.scheduler.peersNum),this._tryConnectToAllPeers()))})).once(e.DC_TIMEOUT,(()=>{this.notFoundDCSet.add(t.remotePeerId)})).once(e.DC_CLOSE,(e=>{this.logger.info(`datachannel ${t.channelId} closed fatal ${e}`),this.scheduler&&(this.scheduler.deletePeer(t),this._doSignalFusing(this.scheduler.peersNum)),this._destroyAndDeletePeer(t.remotePeerId,e),e&&this.failedDCSet.add(t.remotePeerId),this.requestMorePeers(),this._tryConnectToAllPeers()})).once(e.DC_OPEN,(()=>{t.isInitiator&&this.scheduler.handshakePeer(t)})).once(e.DC_METADATA,(e=>{const{scheduler:r}=this;t.isInitiator||r.handshakePeer(t),r.handleMetaData(t,e);const i=this.DCMap.size>=this.minConns+3;this.requestMorePeers(i),this.peersIncrement++,this._doSignalFusing(r.peersNum+1)}))}_doSignalFusing(e){if(this.fuseRate<=0)return;const t=this.signalerWs.connected;t&&e>=this.fuseRate+2?(this.logger.warn("reach fuseRate, report stats close signaler"),this.totalConns-1>0&&this.fetcher.postStats(),this.signalerWs.close()):!t&&e<this.fuseRate&&(this.logger.warn("low conns, reconnect signaler"),this.signalerWs.reconnect())}_initSignalerWs(t,r,i,n){const s=(e,t)=>{let r=`${e}?id=${this.peerId}&p=web&v=2.8.4`;return t&&(r=`${r}&token=${t}`),r};let a,o=s(t,i);if(!this.overloaded&&r&&r!==t){let e=s(r,n);a=new Ht(this.logger,this.config,o,e)}else a=new $t(this.logger,this.config,o,270);return a.onopen=()=>{this.connected=!0,this.engine.emit("serverConnected",!0),this._tryConnectToAllPeers()},a.onmessage=(e,t)=>{let r=e.action;const i=e.from_peer_id||e.from;switch(r){case"signal":this._handleSignalMsg(i,e,null,t);break;case"reject":this._handSignalRejected(i,e);break;default:this.logger.warn(`Signal websocket unknown action ${r}`)}},a.onclose=()=>{this.connected=!1,this.engine.emit("serverConnected",!1)},a.onerror=t=>{t.message&&this.engine.emit(e.EXCEPTION,Ae()(t,"SIGNAL_EXPT"))},a}_handSignalRejected(e,t){this.logger.warn(`signaling ${e} rejected, reason ${t.reason}`);const r=this.DCMap.get(e);r&&!r.connected&&(r.destroy(t.fatal),this.DCMap.delete(e)),this.requestMorePeers(),t.fatal&&this.failedDCSet.add(e),this._tryConnectToAllPeers()}_handleSignalMsg(e,t,r,i){if(!this.scheduler)return;const{logger:n}=this;if(t.data){if(this.failedDCSet.has(e))return void this._sendSignalReject(e,`peer ${e} in blocked list`,r,i,!0);this._handleSignal(e,t.data,r,i)}else{const t=this.DCMap.get(e);if(!t)return;if(this.signalerWs.backupConnected&&t&&t.signalMsgs.length>0&&"main"===i&&!t.useBackupSignal){t.useBackupSignal=!0,t.signalName="backup",n.warn(`${e} not found from main, try backup signal`);for(let r of t.signalMsgs)this.signalerWs.sendSignal(e,r,"backup");return}if(t.useBackupSignal)return;this._destroyAndDeletePeer(e),n.info(`signaling ${e} not found`);const{scheduler:s}=this;s.waitForPeer&&(s.waitingPeers--,0===s.waitingPeers&&s.notifyPeersLoaded(0)),this.requestMorePeers(),this._tryConnectToAllPeers(),r||this.notFoundDCSet.add(e)}}_handleSignal(e,t,r,i){const n=t.type,{logger:s}=this;let a=this.DCMap.get(e);if(a){if(a.connected)return void s.info("datachannel had connected, signal ignored");if("offer"===n){if(!(this.peerId>e))return void s.warn(`signal type wrong ${n}, ignored`);this._destroyAndDeletePeer(e,!1),s.warn(`signal type wrong ${n}, convert to non initiator`),a=this._createDatachannel(e,!1,r)}}else{if("answer"===n){const t=`signal type wrong ${n}`;return s.warn(t),this._sendSignalReject(e,t,r,i),void this._destroyAndDeletePeer(e,!1)}if(s.debug(`receive node ${e} connection request`),this.DCMap.size>=this.maxConns){const t=`peers reach limit ${this.maxConns}`;return s.warn(t),void this._sendSignalReject(e,t,r,i)}a=this._createDatachannel(e,!1,r)}a&&(i&&(a.signalName=i),a.receiveSignal(t))}_createDatachannel(e,t,r){if(!this.engine.fetcher)return;let i;if(t&&this.peerPool.size>0)i=this.peerPool.getPeer(),this.logger.info(`get peer from pool, signal size ${i.signalMsgs.length}`),i.intermediator=r,i.assignPeerId(this.peerId,e);else{let n=this.config.trickleICE;r||this.overloaded&&(n=!1),i=new O(this.engine,this.peerId,e,t,this.config,{stuns:this.stuns,intermediator:r,trickle:n})}return this.DCMap.set(e,i),this._setupDC(i),i}_sendSignalReject(e,t,r,i,n){if(r){const i=this.DCMap.get(r);if(i&&i.sendMsgSignalReject(e,this.peerId,t,n))return}this.signalerWs.sendReject(e,t,n,i)}_requestMorePeers(e){if(!this.fetcher)return;const{logger:t}=this;t.info(`requestMorePeers after delay ${e}`);const r=this.scheduler.peersNum,i=this.peersIncrement;this.peersIncrement=0,r>=this.minConns||(0===r||i<=3&&!this.gotPeersFromTracker&&!this.overloaded?(this.failedDCSet.size>50&&(this.failedDCSet=new Set([...this.failedDCSet].slice(-50))),this.notFoundDCSet.size>20&&(this.notFoundDCSet=new Set([...this.notFoundDCSet].slice(-20))),this.fetcher.btGetPeers([...this.DCMap.keys(),...this.failedDCSet.keys(),...this.notFoundDCSet.keys()],0===r).then((e=>{e&&e.peers&&(t.info(`requestMorePeers resp ${JSON.stringify(e,null,2)}`),this.peers=this._filterPeers(e.peers),this._tryConnectToAllPeers())})).catch((e=>{t.error(`requestMorePeers error ${e}`)})),this.gotPeersFromTracker=!0):r<this.maxConnsActive&&(this.scheduler.requestPeers(),this.gotPeersFromTracker=!1))}_destroyAndDeletePeer(e,t=!0){const r=this.DCMap.get(e);return!!r&&(r.destroy(t),this.DCMap.delete(e),!0)}}const qt=Vt;const zt="2.7.10";class Kt extends le{static get name(){return"HlsSwP2pEngine"}static isServiceWorkerSupported(){return"serviceWorker"in navigator}constructor(e={}){super(e),this.swSupported=window.isSecureContext,this.levels=[],this.bypassLevels=[],this.currentLevelIndex=0,this.currentSrc="",this.swVersion="",this.media=q(this.config.mediaElem),this.workerKeepAliveInterval=null,this.fragMap=new Map,Kt.isServiceWorkerSupported()||(this.swSupported=!1,console.warn("service worker is not supported"));const{channelIdMaker:r,signalId:i,browserInfo:n}=this.setup();if(this.onLevelLoaded=e=>{const{config:s}=this,a=e.live;s.live=a,this.targetDuration=e.averagetargetduration,this.browserInfo={...n,live:a,abr:this.multiBitrate||void 0,type:"hls_sw"},this.channel=`${r(this.currentSrc)}|${i}[${O.VERSION}]`,this.setupElectron();const o=this.initLogger();o.info("use HlsSwP2pEngine"),o.info(`engine version: ${V.version} hls-proxy version: ${this.swVersion}`),o.info(`channel ${this.channel}`),a||(s.startSN=e.startSN,s.endSN=e.endSN,o.info(`startSN ${e.startSN} endSN ${e.endSN}`)),this._init(this.channel,this.browserInfo),this.off(t.LEVEL_LOADED,this.onLevelLoaded)},0===this.config.httpLoadTime&&(this.config.live?this.on(t.LEVEL_LOADED,(e=>{this.config.httpLoadTime=this.determineHttpLoadTime(e.fragments)})):this.config.httpLoadTime=2.5),this.on(t.LEVEL_LOADED,this.onLevelLoaded),this.onManifestParsed=(e,r)=>{this.multiBitrate=e.length>1,this.currentSrc=r,this.off(t.MANIFEST_PARSED,this.onManifestParsed)},this.on(t.MANIFEST_PARSED,this.onManifestParsed),this.onFragLoaded=({url:e})=>{const{config:r}=this;!this.rangeTested&&this.config.useHttpRange&&(f(e,null,null,2e3,!1).then((e=>{r.httpRangeSupported=!0,r.logger.info("http range is supported")})).catch((e=>{r.httpRangeSupported=!1,r.logger.warn(`http range is not supported, ${e}`)})),this.rangeTested=!0),this.off(t.FRAG_LOADED,this.onFragLoaded)},this.once(t.FRAG_LOADED,this.onFragLoaded),this.swSupported){const{serviceWorker:e}=navigator;e.onmessage=e=>{const{action:r,data:i}=e.data,n=e.ports[0];if(this.logger&&this.logger.info(`engine onmessage action ${r}`),n.postMessage({action:r,pong:!0}),!this.p2pEnabled||!i)return n.postMessage({action:r});switch(r){case t.SW_PLAYLIST:this.handlePlaylist(i,n);break;case t.SW_GET_PLAYLIST:this.handleGetPlaylist(i,n);break;default:if(!this.config.scheduler)return n.postMessage({action:r});this.config.scheduler.notifySWMessage(r,i,n)}}}this.config.swAutoRegister&&this.registerServiceWorker().then((function(e){})).catch((e=>{console.warn("ServiceWorker registration failed ",e)}))}get currentLevel(){return this.currentLevelIndex}watchRebuffering(e){this.offEventRebuffer=function(e,t){let r=null;const i=()=>{r||(r=setTimeout((()=>{t()}),2500))},n=()=>{null!=r&&(clearTimeout(r),r=null)};return e.addEventListener("waiting",i),e.addEventListener("playing",n),()=>{e.removeEventListener("waiting",i),e.removeEventListener("playing",n)}}(e,(()=>{this.fetcher&&this.fetcher.increRebuffers()}))}handlePlaylist(e,r){const{config:i,logger:n}=this,{url:s,redirectedUrl:a,text:o,ver:l}=e;return this.swVersion=l,-1===function(e,t){for(var r=e.split("."),i=t.split("."),n=0;n<Math.max(r.length,i.length);n++){var s=parseInt(r[n]||0),a=parseInt(i[n]||0);if(s<a)return-1;if(s>a)return 1}return 0}(l,zt)?(console.warn("hls-proxy.js version should >= 2.7.10"),r.postMessage({action:t.SW_PLAYLIST})):0!==o.indexOf("#EXTM3U")||this.bypassLevels.indexOf(s)>=0?(console.warn("no EXTM3U delimiter or bypass audio track"),r.postMessage({action:t.SW_PLAYLIST})):(r.postMessage({action:t.SW_PLAYLIST,data:{active:!0,debug:n&&n.isDebugLevel,sharePlaylist:!!i.sharePlaylist}}),this._parsePlaylist(o,s.split("?")[0],a),void(this.workerKeepAliveInterval||navigator.serviceWorker.getRegistration().then((e=>{if(!i.live&&e&&e.active&&"activated"===e.active.state){const t=new URL(e.scope);this.pathname=t.pathname+"__PROXY_IDENTIFIER__";const r=()=>{clearInterval(this.workerKeepAliveInterval),this.workerKeepAliveInterval=null};this.workerKeepAliveInterval=setInterval((()=>fetch(`${this.pathname}/keepalive/`).then((e=>{e.ok||r()})).catch((e=>{console.error(e),r()}))),2e4)}}))))}_parsePlaylist(e,r,i,n=!1){const s=r;i&&(r=i);const{config:a,logger:o}=this;if(e.indexOf("#EXTINF:")>0||e.indexOf("#EXT-X-TARGETDURATION:")>0){let i=0;const o=Te.parseLevelPlaylist(e,r);this.levels.length>1?(i=this.levels.indexOf(o.url),-1===i?(this.restartP2p(),this.currentSrc=s,i=0):this.currentLevelIndex=i):(""!==this.currentSrc&&s!==this.currentSrc&&this.restartP2p(),this.currentSrc=s,this.levels=[r]),this.emit(t.LEVEL_LOADED,o),a.live&&function(e,t){if(e.size<=t)return;const r=[...e.keys()];do{e.delete(r.shift())}while(e.size>t)}(this.fragMap,200),o.fragments.forEach((e=>{e.level=i;let t=_().buildAbsoluteURL(e.baseurl,e.relurl,{alwaysNormalize:!0});const r=e.byteRange;2===r.length&&(t=`${t}|bytes=${r[0]}-${r[1]-1}`),this.fragMap.set(t,e)})),!n&&a.sharePlaylist&&a.scheduler&&!a.scheduler.isMobileNet&&a.scheduler.broadcastPlaylist(r.split("?")[0],e)}else{const i=Te.parseMasterPlaylist(e,r);if(""!==this.currentSrc&&this.restartP2p(),i.length>0){i.sort(((e,t)=>e.bitrate-t.bitrate)),this.levels=i.map((e=>e.url));const t=i.map((e=>({id:e.attrs.AUDIO,codec:e.audioCodec})));Te.parseMasterPlaylistMedia(e,r,"AUDIO",t).forEach((e=>{e.url&&this.bypassLevels.push(e.url)}))}this.emit(t.MANIFEST_PARSED,i,s)}}handleGetPlaylist(e,r){const{config:i,logger:n}=this;if(!n)return r.postMessage({action:t.SW_GET_PLAYLIST});const{scheduler:s}=i;if(!s)return void n.warn("scheduler not found");const{url:a}=e,o=a.split("?")[0];if(s.playlistInfo.has(o)){const e=s.getPlaylistFromPeer(o);if(e&&e.data){const{data:i,seq:s}=e;return n.info(`got playlist from peer seq ${s}`),r.postMessage({action:t.SW_GET_PLAYLIST,data:{text:i}}),void this._parsePlaylist(i,a.split("?")[0],void 0,!0)}}return r.postMessage({action:t.SW_GET_PLAYLIST})}async registerServiceWorker(){const{logger:e,config:t}=this;if(!this.swSupported){let e="sw is not supported";return m||(e="https is required when using ServiceWorker",console.warn(e)),Promise.reject(e)}return this.media=q(t.mediaElem),this.media||e&&e.warn("no video element found"),er.registerServiceWorker(t)}async unregisterServiceWorker(){const{config:e}=this;clearInterval(this.workerKeepAliveInterval),this.workerKeepAliveInterval=null;const t="serviceWorker is not registered";return new Promise(((e,r)=>{const{serviceWorker:i}=navigator;i||r(t),i.getRegistration().then((i=>{i?i.unregister().then((()=>{e()})).catch((e=>{r(e)})):r(t)}))}))}async _init(e,t){if(!this.p2pEnabled)return;const{logger:r}=this;try{await this.initSegmentManager()}catch(e){return void(r&&r.warn(e))}t.live||(t.tag=this.getTagForVod(),this.media&&(t.pos=Math.round(this.media.currentTime)));let i=new Ke(this,this.config.token,encodeURIComponent(e),this.config.announce||"",t);this.fetcher=i,this.config.fetcher=i;const n=setInterval((()=>{this.media?(clearInterval(n),this.watchRebuffering(this.media)):this.media=q(this.config.mediaElem)}),3e3);let s=new Dt(this,this.config);s.bufferManager=this.bufMgr,s.fragMap=this.fragMap,this.tracker=new qt(this,i,s,this.config),this.config.scheduler=this.tracker.scheduler,this.p2pEnabled&&!this.tracker.connected&&this.tracker.resumeP2P(),this.setupWindowListeners()}restartP2p(){this.logger&&this.logger.warn("restart P2P"),this.disableP2P(),this.enableP2P(),this.on(t.LEVEL_LOADED,this.onLevelLoaded),this.on(t.MANIFEST_PARSED,this.onManifestParsed),this.on(t.FRAG_LOADED,this.onFragLoaded)}enableP2P(){return this.p2pEnabled?null:(this.logger&&this.logger.info("enable P2P"),this.config.p2pEnabled=this.p2pEnabled=!0,this)}disableP2P(){this.logger&&this.logger.warn("disable P2P"),this.offEventRebuffer&&this.offEventRebuffer(),this.p2pEnabled&&(this.config.p2pEnabled=this.p2pEnabled=!1,this.tracker&&this.tracker instanceof qt&&(this.tracker.stopP2P(),this.tracker={},this.fetcher=null,this.bufMgr.destroy(),this.bufMgr=null)),this.levels=[],this.currentLevelIndex=0,this.lastLevel=0,this.multiBitrate=!1,this.rangeTested=!1,this.currentSrc="",this.media=void 0,this.config.live=!1,this.removeAllListeners(t.MANIFEST_PARSED),this.removeAllListeners(t.LEVEL_LOADED),clearInterval(this.workerKeepAliveInterval),this.workerKeepAliveInterval=null}}const Yt=Kt;const Xt=class extends Pt{constructor(e,t){super(e,t),this.isHlsjs=!0,this.waitForPeer=t.waitForPeer||!1,this.waitForPeerTimeout=t.waitForPeerTimeout,this.waitingPeers=0,this.waitingSeg={}}startWaitPeerTimer(){this.waitForPeer&&(this.waitForPeerTimer=setTimeout((()=>{this.waitForPeer&&(this.waitForPeer=!1,this.emit(t.SCH_WAIT_PEER))}),1e3*(this.waitForPeerTimeout+0)))}updatePlaySN(e){this.currPlaySN=e}load(e,t,r){this.isReceiver=!0;const{logger:i,config:n}=this;this.context=e;const{rangeStart:s,rangeEnd:a,url:o}=e,l=e.frag,{segId:h,sn:d,level:u}=l;this.callbacks=r,this.stats=vt(),this.criticalSeg={sn:d,level:u,segId:h};let c=this.mBufferedDuration-n.httpLoadTime;c>this.dcDownloadTimeout&&(c=this.dcDownloadTimeout);const{forwardPeer:f,reversePeer:g}=this.targetPeers;f||g||(c-=1);let p=this.requestingMap.get(d,u);const m={rangeStart:Number(s),rangeEnd:Number(a),url:o,httpLoadTime:1e3*n.httpLoadTime-500,xhrSetup:n.xhrSetup,segId:h};p?p.setExtra(m):(p=new Lt(this.coordinator,this.logger,d,u,h,this.httpRangeSupported,m),this._setupSynthesizer(p),this.requestingMap.set(d,u,p)),f&&(p.setForwardPeer(f),f.requestDataById(h,d,!0,{level:u})),g&&(p.setReversePeer(g),g.requestDataById(h,d,!0,{level:u,reverse:!0})),p.isEmpty()&&(c=0),i.info(`syn setTimeout ${c}`),p.setTimeout(1e3*c),this.targetPeers={}}waitPeerNotifier(){return new Promise((e=>{this.waitForPeer||e(),setTimeout(e,1e3*this.waitForPeerTimeout),this.once(t.SCH_WAIT_PEER,e)}))}addPeer(e){if(super.addPeer(e),this.waitForPeer){const{level:r,sn:i}=this.waitingSeg,n=e.remotePeerId;e.bitset.has(i,r)?(this.logger.info(`found initial seg ${r}-${i} from peer ${n}`),this.emit(t.SCH_WAIT_PEER)):this.waitingPeers===this.peersNum&&this.emit(t.SCH_WAIT_PEER)}}notifyPeersLoaded(e){this.logger.info(`notifyPeersLoaded ${e}`),this.waitForPeer&&(0===e?(this.waitForPeer=!1,this.emit(t.SCH_WAIT_PEER)):this.waitingPeers=e)}destroy(){super.destroy(),this.logger.warn("destroy HlsjsScheduler"),clearTimeout(this.waitForPeerTimer)}_setupDC(e){super._setupDC(e)}_setupSynthesizer(e){const r=()=>{this.bitCounts.has(this.loadingSN,this.engine.currentLevel)&&this.emit(t.SCH_DCHAVE,this.loadingSegId),this.criticalSeg||this.checkPeers()};e.on(t.SYN_OUTPUT,((t,i)=>{const{config:n,logger:s}=this,{segId:a,sn:o,data:l,level:h}=t,{speed:d,http:u,p2p:c}=i;this._handleSynOutput(u);const f=this.criticalSeg&&this.criticalSeg.segId===a;if(n.validateSegment(a,new Uint8Array(l))){this.notifyAllPeers(o,h,a),this.bitset.has(o,h)||this.reportTraffic(u,c,d);const r=e.getFromPeerId();if(f){s.info(`receive criticalSeg seg_id ${a}`);let e=this.stats;e.tfirst=e.loading.first=Math.max(e.trequest,performance.now()),e.tload=e.loading.end=e.tfirst,e.loaded=e.total=l.byteLength,this.criticalSeg=null;const{frag:t}=this.context;t.fromPeerId=r,t.loadByP2P=!0,this.callbacks.onSuccess({data:l,url:this.context.url},e,this.context)}else this.bitset.has(o,h)||(this.bufMgr.putSeg(t),this.updateLoaded(o,h,a))}else s.error(`segment ${a} validate failed`),f&&this.callbacks.onTimeout(this.stats,this.context,null);this.requestingMap.delete(o,h),n.live&&r()})).on(t.SYN_ERROR,((t,i)=>{const{config:n,logger:s}=this,{sn:a,level:o}=t;s.warn(`SYN_ERROR loading ${a} code ${i}`),this.criticalSeg&&this.criticalSeg.sn===a&&(this.criticalSeg=null,this.callbacks.onTimeout(this.stats,this.context,null)),i===pt&&e.hasPartialBuffer()?s.warn("syn abort with partial buffer"):(this.requestingMap.delete(a,o),this._handleSynError(i)),n.live&&r()}))}_setupEngine(){super._setupEngine(),this.engine.on(t.FRAG_LOADING,(({sn:e,segId:t,byHttp:r,level:i})=>{this.loadingSN=e,this.loadingSegId=t})).on(t.FRAG_LOADED,(({sn:e,segId:t,byP2p:r,level:i})=>{this.requestingMap.delete(e,i),this.updateLoaded(e,i,t)})).on(t.FRAG_CHANGED,(({sn:e})=>{this.updatePlaySN(e)}))}_handleDCHave(e,t,r,i,n){this._notifySynthesizer(e,i,t,r,n),this.config.live&&!this.criticalSeg&&w()((()=>{this.checkPeers()}))}};const Qt=class extends le{static get name(){return"HlsjsP2pEngine"}constructor(e,t={}){if(super(t),!e)throw new TypeError("hlsjs instance is null");this.hlsjs=e,this.HLSEvents=e.constructor.Events,this.config.isHlsV0="0"===e.constructor.version.split(".")[0],this.config.xhrSetup=e.config.xhrSetup,!0===this.config.httpStreamEnabled&&(e.config.streamEnabled=St());const{channelIdMaker:r,signalId:i,browserInfo:n}=this.setup();e.config.segmentId=this.config.segmentId,this.config.waitForPeer&&this.config.sourceUrl?(this.config.trickleICE=!0,this.config.httpRangeSupported=!0,this._startEngine(this.config.sourceUrl,this.config.live,n,r,i)):this.config.waitForPeer=!1;const s=(t,a)=>{if(!a)return;const{config:o}=this,l=a.details,h=l.live;this.config.waitForPeer?this.tracker&&this.tracker.scheduler.startWaitPeerTimer():this._startEngine(this.hlsjs.url,h,n,r,i,l),o.waitForPeer&&this.logger.info("waitForPeer mode"),e.off(this.HLSEvents.LEVEL_LOADED,s)};e.on(this.HLSEvents.LEVEL_LOADED,s);const a=(e,t)=>{if(!t)return;const{config:r}=this,{fragments:i}=t.details;r.httpLoadTime=this.determineHttpLoadTime(i)};0===this.config.httpLoadTime&&(this.config.live?e.on(this.HLSEvents.LEVEL_LOADED,a):this.config.httpLoadTime=2.5);const o=(t,r)=>{const i=r.levels.length;this.multiBitrate=i>1,e.off(this.HLSEvents.MANIFEST_PARSED,o)};e.on(this.HLSEvents.MANIFEST_PARSED,o),e.on(this.HLSEvents.DESTROYING,(()=>{e.off(this.HLSEvents.LEVEL_LOADED,a),this.destroy()}))}_startEngine(e,t,r,i,n,s={}){const{config:a}=this;a.live=this.hlsjs.config.live=t,this.browserInfo={...r,live:t,abr:this.multiBitrate||void 0,type:"hls"},this.channel=`${i(e)}|${n}[${O.VERSION}]`,this.setupElectron();const o=this.initLogger();o.info("use HlsjsP2pEngine"),this.logger=this.hlsjs.config.logger=o,o.info(`channel ${this.channel}`),t||(a.startSN=s.startSN,a.endSN=s.endSN,o.info(`startSN ${s.startSN} endSN ${s.endSN}`)),this.eventListened=!1,this._init(this.channel,this.browserInfo)}async _init(e,r){const{logger:i,config:n}=this;if(!this.p2pEnabled)return;this.hlsjs.config.p2pEnabled=this.p2pEnabled,this.hlsjs.config.sharePlaylist=n.sharePlaylist;try{await this.initSegmentManager()}catch(e){return void i.warn(e)}this.media=this.hlsjs.media,this.media&&(this.currentSrc=this.media.src),r.live||(r.tag=this.getTagForVod(),this.media&&(r.pos=Math.round(this.media.currentTime)));let a=new Ke(this,n.token,encodeURIComponent(e),n.announce||"",r);this.fetcher=a;const o=new Xt(this,n);this.tracker=new qt(this,a,o,n),this.hlsjs.config.bufMgr=this.bufMgr,o.bufferManager=this.bufMgr,this.hlsjs.config.fLoader=function(e,r,i,n,a){return class extends(s()){constructor(t){super(),this.logger=t.logger,this.isHlsV0=n,this.bufMgr=t.bufMgr,this.streamEnabled=t.streamEnabled,this.httpLoader=this.streamEnabled?new bt(t):new t.loader(t),this.p2pEnabled=t.p2pEnabled,this.isLive=t.live,this.scheduler=e,this.fetcher=r,this.segmentId=t.segmentId,this.blockTypes=i,this.forbidden=r.forbidden,this.stats=this.httpLoader.stats||vt(),this.enableWorker=t.enableWorker,this.segmentBypass="function"==typeof a?a:()=>!1}destroy(){this.httpLoader.destroy()}abort(){this.httpLoader.abort()}async load(e,r,i){const{logger:n,scheduler:s}=this,a=e.frag;this.isHlsV0||(a.stats=this.stats);let o=e.frag.segId;if(!o){let t;e.rangeEnd&&(t="bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),o=e.frag.segId=this.segmentId(String(a.level),a.sn,a.url,t)}if(!a.url||mt(a.url,this.blockTypes,a.type)||this.segmentBypass(a.url,a.tagList))return n.info(`HTTP load blockType ${a.url}`),e.frag.loadByHTTP=!0,this.httpLoader.load(e,r,i);if(this.forbidden)return;this.fetcher.increMediaRequests(),r.maxRetry=2;const l=s.getBufferedDuration(),h=await this.bufMgr.getSegById(o);if(this.p2pEnabled&&h){n.info(`bufMgr found seg sn ${a.sn} segId ${o} level ${a.level}`);let t=p(h.data).buffer,r={url:e.url,data:t};return yt(this.stats,h.size),a.loaded=h.size,a.loadByP2P=!0,e.frag.fromPeerId=h.fromPeerId,void w()((()=>{!this.isHlsV0&&i.onProgress&&i.onProgress(this.stats,e,r.data),i.onSuccess(r,this.stats,e)}))}if(this.p2pEnabled&&s.hasAndSetTargetPeer(a.sn,a.level,a.segId,l))this.loadFragByP2p(e,r,i,o);else if(s.waitForPeer&&(n.warn("waitPeerNotifier start"),s.waitingSeg={sn:a.sn,level:a.level},await s.waitPeerNotifier(),n.warn("waitPeerNotifier end"),this.p2pEnabled&&s.hasAndSetTargetPeer(a.sn,a.level,a.segId,l)))this.loadFragByP2p(e,r,i,o);else if(n.info(`fragLoader load ${o} at ${a.sn} level ${a.level} buffered ${1e3*l}`),this.isLive&&s.hasPeers&&l>7&&s.shouldWaitForNextSeg()){let h=l-7;h>4.5&&(h=4.5);const d=n=>{n===o&&(s.off(t.SCH_DCHAVE,d),clearTimeout(this.waitTimer),s.hasAndSetTargetPeer(a.sn,a.level,a.segId,l)?this.loadFragByP2p(e,r,i,o):this.loadFragByHttp(e,r,i,o))};n.info(`wait peer have for ${h}s`),s.on(t.SCH_DCHAVE,d),this.waitTimer=setTimeout((()=>{this.loadFragByHttp(e,r,i,o),s.off(t.SCH_DCHAVE,d)}),1e3*h)}else{const t=s.requestingMap.get(a.sn,a.level);s.httpRangeSupported&&t&&t.segId===a.segId&&t.hasPartialBuffer()?(n.warn(`syn has partial buffer for ${a.segId}`),this.loadFragByP2p(e,r,i,o)):this.loadFragByHttp(e,r,i,o)}}loadFragByHttp(e,t,r,i){const{logger:n,scheduler:s}=this,{segmentBuilderMap:a}=s;s.isReceiver=!1;const o=e.frag,{sn:l,level:h}=o;if(this.streamEnabled){let e;s.isMobileNet||s.notifyAllPeers(l,h,i,Qe),r.onUpdate=(t,r,i)=>{i?a.delete(l,h):e&&e.receiveBytes(t,r)},r.onBodyStart=t=>{!e&&t>0&&(e=new At(l,h,i,t),a.has(l,h)||a.set(l,h,e))}}const d=r.onSuccess;r.onSuccess=async(e,t,r)=>{if(!await this.bufMgr.hasSegOfId(i)){const t=p(e.data).buffer,r=new R(l,i,t,this.fetcher.peerId,h);this.bufMgr.putSeg(r)}a.delete(l,h),this.fetcher.reportFlow(t.total);let o=t.tload-t.trequest;n.info(`HTTP loaded ${i} time ${o}`),s.notifyAllPeers(l,h,i),d(e,t,r)};const u=r.onProgress;r.onProgress=(e,t,r)=>{o.loaded=e.total,u(e,t,r&&this.enableWorker?p(r).buffer:r)},e.frag.loadByHTTP=!0,this.httpLoader.load(e,t,r)}loadFragByP2p(e,t,r,i){const{logger:n}=this,s=e.frag;this.scheduler.load(e,t,r);const a=r.onSuccess,o=r.onTimeout;r.onTimeout=(e,l)=>{n.warn(`P2P timeout switched to HTTP load ${s.relurl} at ${s.sn}`),r.onSuccess=a,this.loadFragByHttp(l,t,r,i),r.onTimeout=o},r.onSuccess=async(e,t,o)=>{if(!await this.bufMgr.hasSegOfId(i)){const t=p(e.data).buffer,r=new R(s.sn,i,t,s.fromPeerId||this.fetcher.peerId,s.level);this.bufMgr.putSeg(r)}s.loadByP2P||this.fetcher.reportFlow(t.total),s.loaded=t.loaded,n.info(`${s.loadByP2P?"P2P":"HTTP"} loaded segment id ${i}`),!this.isHlsV0&&r.onProgress&&r.onProgress(t,o,e.data),a(e,t,o)}}}}(o,a,n.p2pBlackList,n.isHlsV0,n.segmentBypass),n.sharePlaylist&&(this.hlsjs.config.pLoader=function(e){return class extends(s()){constructor(t){super(),this.logger=t.logger,this.isHlsV0=t.isHlsV0,this.xhrLoader=new t.loader(t),this.p2pEnabled=t.p2pEnabled,this.scheduler=e,this.stats=this.xhrLoader.stats||vt()}destroy(){this.xhrLoader.destroy()}abort(){this.xhrLoader.abort()}load(e,t,r){const{logger:i}=this,{url:n}=e,s=n.split("?")[0],a=r.onSuccess;if(r.onSuccess=(e,t,r)=>{this.scheduler&&!r.loadedByPeer&&this.scheduler.broadcastPlaylist(s,e.data),a(e,t,r)},this.scheduler&&this.scheduler.playlistInfo.has(s)){const t=this.scheduler.getPlaylistFromPeer(s);if(t&&t.data){const{data:s,seq:a}=t;i.info(`got playlist from peer seq ${a}`),yt(this.stats,s.length);let o={url:n,data:s};return e.loadedByPeer=!0,void w()((()=>{r.onSuccess(o,this.stats,e)}))}}this.xhrLoader.load(e,t,r)}}}(o)),this.trackerTried=!1,this.eventListened||(this.hlsjs.on(this.HLSEvents.FRAG_LOADING,this._onFragLoading.bind(this)),this.hlsjs.on(this.HLSEvents.FRAG_LOADED,this._onFragLoaded.bind(this)),this.hlsjs.on(this.HLSEvents.FRAG_CHANGED,this._onFragChanged.bind(this)),this.hlsjs.on(this.HLSEvents.ERROR,this._onHlsError.bind(this)),this.eventListened=!0),this.setupWindowListeners(),this.trackerTried||this.tracker.connected||!n.p2pEnabled||(this.tracker.resumeP2P(),this.trackerTried=!0)}_onFragLoading(e,r){const i=r.frag;let{sn:n,level:s,segId:a}=i;if(!mt(i.url,this.config.p2pBlackList,i.type)){if(this.logger.debug("loading frag "+n),this.bufMgr&&(this.bufMgr.loadingSN=n),!a){let e;i._byteRange&&(e="bytes="+i._byteRange[0]+"-"+i._byteRange[1]);let t=i.url;a=i.segId=this.config.segmentId(String(s),i.sn,t,e)}this.emit(t.FRAG_LOADING,{sn:n,segId:a,byHttp:i.loadByHTTP,level:s})}}_onFragLoaded(e,r){const{frag:i}=r,{sn:n,segId:s,loaded:a,duration:o,level:l,fromPeerId:h,loadByP2P:d,url:u}=i,{config:c,logger:g}=this;mt(i.url,c.p2pBlackList,i.type)||(this.emit(t.FRAG_LOADED,{url:u,sn:n,level:l,segId:s,loaded:a,duration:o,byP2p:!!d,fromPeerId:h}),!this.rangeTested&&c.useHttpRange&&(f(i.url,void 0,c.xhrSetup).then((()=>{c.httpRangeSupported=!0,g.info("http range is supported")})).catch((e=>{c.httpRangeSupported=!1,console.warn(i.url),g.warn(`http range is not supported, ${e}`)})),this.rangeTested=!0))}_onFragChanged(e,r){const{frag:i}=r;if(!mt(i.url,this.config.p2pBlackList,i.type)){this.logger.debug("frag changed: "+i.sn);const{sn:e,duration:r}=i;this.emit(t.FRAG_CHANGED,{sn:e,duration:r})}}_onHlsError(e,r){if(!r)return;const{logger:i}=this,n=`${r.type} details ${r.details} reason ${r.reason}`;r.fatal?i.error(n):i.warn(n);const s=this.hlsjs.constructor.ErrorDetails;switch(r.details){case s.BUFFER_STALLED_ERROR:this.fetcher&&this.fetcher.increRebuffers();break;case s.INTERNAL_EXCEPTION:"demuxerWorker"!==r.event&&(r.error||(r.error={}),this.fetcher&&r.err&&(this.fetcher.errsInternalExpt++,this.fetcher.exptMsg=`${r.error.message} event ${r.event} ua ${navigator.userAgent}`),i.error(`INTERNAL_EXCEPTION event ${r.event} err ${r.error.message}`),this.emit(t.EXCEPTION,Ae()(r.error,"HLSJS_EXPT")))}}get currentLevel(){const{currentLevel:e}=this.hlsjs;return e>=0?e:0}disableP2P(){this.logger&&this.logger.warn("disable P2P"),this.p2pEnabled&&(this.p2pEnabled=!1,this.config.p2pEnabled=this.hlsjs.config.p2pEnabled=this.p2pEnabled,this.tracker&&(this.tracker.stopP2P(),this.tracker={},this.fetcher=null,this.bufMgr.destroy(),this.bufMgr=null,this.hlsjs.config.fLoader=this.hlsjs.config.pLoader=this.hlsjs.constructor.DefaultConfig.loader))}};function Jt(){const e=function(){if("undefined"!=typeof window)return window.MediaSource||window.WebKitMediaSource}(),t=window.SourceBuffer||window.WebKitSourceBuffer,r=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove;return!!r&&!!i}class Zt{static get Events(){return t}static get TrackerZone(){return V.TrackerZone}static isSupported(){return V.isSupported()&&(Jt()||Yt.isServiceWorkerSupported())}static isServiceWorkerSupported(){return Yt.isServiceWorkerSupported()}static isMSESupported(){return Jt()}static getBrowser(){return k().getBrowser()}static get ServiceWorkerEngine(){return Yt}static get HlsjsEngine(){return Qt}static async tryRegisterServiceWorker({swFile:e="./sw.js",swScope:t="./"}={}){return Zt.registerServiceWorker({swFile:e,swScope:t})}static async registerServiceWorker({swFile:e="./sw.js",swScope:t="./",hlsjsInstance:r}={}){const{serviceWorker:i}=navigator;return!i||r?Promise.resolve():i.getRegistration().then((r=>{return r||Promise.race([i.register(e,{scope:t}).then((e=>function(e){return new Promise(((t,r)=>{const i=e.installing||e.waiting||e.active,n=()=>"activated"===i.state&&(i.removeEventListener("statechange",n),t(e),!0);n()||i.addEventListener("statechange",n)}))}(e))),(n=300,new Promise((e=>setTimeout(e,n))))]);var n})).catch((()=>{Promise.resolve()}))}constructor(e={}){const{hlsjsInstance:t}=e;delete e.hlsjsInstance,"1"!==d("_ios")&&!e.proxyOnly&&t&&Jt()?this._realEngine=new Qt(t,e):this._realEngine=new Yt(e)}get realEngine(){return this._realEngine}get engineName(){return this._realEngine.constructor.name}once(e,t){return this._realEngine.once(e,t)}on(e,t){return this._realEngine.on(e,t)}off(e,t){return this._realEngine.off(e,t)}removeListener(e,t){return this._realEngine.removeListener(e,t)}removeAllListeners(e){return this._realEngine.removeAllListeners(e)}set p2pEnabled(e){this._realEngine.p2pEnabled=e}get p2pEnabled(){return this._realEngine.p2pEnabled}enableP2P(){this._realEngine.enableP2P()}disableP2P(){this._realEngine.disableP2P()}destroy(){this._realEngine.destroy()}async registerServiceWorker(){return"function"==typeof this._realEngine.registerServiceWorker?this._realEngine.registerServiceWorker():Promise.reject("Not supported by this engine")}async unregisterServiceWorker(){return"function"==typeof this._realEngine.unregisterServiceWorker?this._realEngine.unregisterServiceWorker():Promise.reject("Not supported by this engine")}get version(){return V.version}}Zt.version=V.version,Zt.protocolVersion=O.VERSION,window&&(window.P2PEngineHls=Zt);const er=Zt;var tr=r(939),rr=r.n(tr);const ir={maxBufferLength:12},nr={maxBufferLength:40};class sr extends(rr()){static get P2PEvents(){return er.Events}static get P2pEngine(){return er}constructor(e={}){let t=e.p2pConfig||{};const r=!1===t.live?nr:ir;let i=JSON.parse(JSON.stringify(r));i.liveSyncDurationCount=10,i.maxBufferSize=0,i.enableWorker=!1;for(let t in e)"p2pConfig"!==t&&(i[t]=e[t]);super(i),this._restartEvent=()=>{this.restartP2P()},er.isSupported()&&(this._p2pEngine=new er({...t,hlsjsInstance:this}),this._p2pEngine.on(er.Events.RESTART_P2P,this._restartEvent)),this.on(rr().Events.DESTROYING,(()=>{this._p2pEngine&&(this._p2pEngine.removeListener(er.Events.RESTART_P2P,this._restartEvent),this._p2pEngine.hlsjs=null,this._p2pEngine=null)}))}get p2pEngine(){return this._p2pEngine}enableP2P(){this._p2pEngine&&(this._p2pEngine=this._p2pEngine.enableP2P())}disableP2P(){this._p2pEngine&&this._p2pEngine.disableP2P()}restartP2P(){this._p2pEngine&&(this._p2pEngine.disableP2P(),setTimeout((()=>{this.enableP2P()}),2e3),this._p2pEngine.removeListener(er.Events.RESTART_P2P,this._restartEvent))}}sr.engineVersion=er.version,sr.protocolVersion=er.protocolVersion,sr.WEBRTC_SUPPORT=er.isSupported();const ar=sr})(),i=i.default})()));
|