@asicupv/paella-video-plugins
Version:
More video formats for Paella Player
1,545 lines (1,544 loc) • 492 kB
JavaScript
//#region ../../node_modules/hls.js/dist/hls.mjs
function e(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var t = { exports: {} };
(function(e, t) {
(function(t) {
var n = /^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/, r = /^(?=([^\/?#]*))\1([^]*)$/, i = /(?:\/|^)\.(?=\/)/g, a = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g, o = {
buildAbsoluteURL: function(e, t, n) {
if (n ||= {}, e = e.trim(), t = t.trim(), !t) {
if (!n.alwaysNormalize) return e;
var i = o.parseURL(e);
if (!i) throw Error("Error trying to parse base URL.");
return i.path = o.normalizePath(i.path), o.buildURLFromParts(i);
}
var a = o.parseURL(t);
if (!a) throw Error("Error trying to parse relative URL.");
if (a.scheme) return n.alwaysNormalize ? (a.path = o.normalizePath(a.path), o.buildURLFromParts(a)) : t;
var s = o.parseURL(e);
if (!s) throw Error("Error trying to parse base URL.");
if (!s.netLoc && s.path && s.path[0] !== "/") {
var c = r.exec(s.path);
s.netLoc = c[1], s.path = c[2];
}
s.netLoc && !s.path && (s.path = "/");
var l = {
scheme: s.scheme,
netLoc: a.netLoc,
path: null,
params: a.params,
query: a.query,
fragment: a.fragment
};
if (!a.netLoc && (l.netLoc = s.netLoc, a.path[0] !== "/")) if (!a.path) l.path = s.path, a.params || (l.params = s.params, a.query || (l.query = s.query));
else {
var u = s.path, d = u.substring(0, u.lastIndexOf("/") + 1) + a.path;
l.path = o.normalizePath(d);
}
return l.path === null && (l.path = n.alwaysNormalize ? o.normalizePath(a.path) : a.path), o.buildURLFromParts(l);
},
parseURL: function(e) {
var t = n.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(i, ""); 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;
})();
})(t);
var n = t.exports;
function r(e, t) {
var n = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var r = Object.getOwnPropertySymbols(e);
t && (r = r.filter(function(t) {
return Object.getOwnPropertyDescriptor(e, t).enumerable;
})), n.push.apply(n, r);
}
return n;
}
function i(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t] == null ? {} : arguments[t];
t % 2 ? r(Object(n), !0).forEach(function(t) {
s(e, t, n[t]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : r(Object(n)).forEach(function(t) {
Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
});
}
return e;
}
function a(e, t) {
if (typeof e != "object" || !e) return e;
var n = e[Symbol.toPrimitive];
if (n !== void 0) {
var r = n.call(e, t || "default");
if (typeof r != "object") return r;
throw TypeError("@@toPrimitive must return a primitive value.");
}
return (t === "string" ? String : Number)(e);
}
function o(e) {
var t = a(e, "string");
return typeof t == "symbol" ? t : String(t);
}
function s(e, t, n) {
return t = o(t), t in e ? Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[t] = n, e;
}
function c() {
return c = Object.assign ? Object.assign.bind() : function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]);
}
return e;
}, c.apply(this, arguments);
}
var l = Number.isFinite || function(e) {
return typeof e == "number" && isFinite(e);
}, u = Number.isSafeInteger || function(e) {
return typeof e == "number" && Math.abs(e) <= d;
}, d = 2 ** 53 - 1 || 9007199254740991, f = /* @__PURE__ */ function(e) {
return 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.MAX_AUTO_LEVEL_UPDATED = "hlsMaxAutoLevelUpdated", 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", e.STEERING_MANIFEST_LOADED = "hlsSteeringManifestLoaded", e;
}({}), p = /* @__PURE__ */ function(e) {
return e.NETWORK_ERROR = "networkError", e.MEDIA_ERROR = "mediaError", e.KEY_SYSTEM_ERROR = "keySystemError", e.MUX_ERROR = "muxError", e.OTHER_ERROR = "otherError", e;
}({}), m = /* @__PURE__ */ function(e) {
return e.KEY_SYSTEM_NO_KEYS = "keySystemNoKeys", e.KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess", e.KEY_SYSTEM_NO_SESSION = "keySystemNoSession", e.KEY_SYSTEM_NO_CONFIGURED_LICENSE = "keySystemNoConfiguredLicense", e.KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed", e.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = "keySystemServerCertificateRequestFailed", e.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = "keySystemServerCertificateUpdateFailed", e.KEY_SYSTEM_SESSION_UPDATE_FAILED = "keySystemSessionUpdateFailed", e.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = "keySystemStatusOutputRestricted", e.KEY_SYSTEM_STATUS_INTERNAL_ERROR = "keySystemStatusInternalError", 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_PARSING_ERROR = "levelParsingError", 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.FRAG_GAP = "fragGap", 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", e;
}({}), h = function() {}, g = {
trace: h,
debug: h,
log: h,
warn: h,
info: h,
error: h
}, _ = g;
function v(e) {
let t = self.console[e];
return t ? t.bind(self.console, `[${e}] >`) : h;
}
function y(e, ...t) {
t.forEach(function(t) {
_[t] = e[t] ? e[t].bind(e) : v(t);
});
}
function b(e, t) {
if (typeof console == "object" && e === !0 || typeof e == "object") {
y(e, "debug", "log", "info", "warn", "error");
try {
_.log(`Debug logs enabled for "${t}" in hls.js version 1.5.20`);
} catch {
_ = g;
}
} else _ = g;
}
var x = _, S = /^(\d+)x(\d+)$/, C = /(.+?)=(".*?"|.*?)(?:,|$)/g, w = class e {
constructor(t) {
typeof t == "string" && (t = e.parseAttrList(t)), c(this, t);
}
get clientAttrs() {
return Object.keys(this).filter((e) => e.substring(0, 2) === "X-");
}
decimalInteger(e) {
let t = parseInt(this[e], 10);
return t > 2 ** 53 - 1 ? Infinity : t;
}
hexadecimalInteger(e) {
if (this[e]) {
let t = (this[e] || "0x").slice(2);
t = (t.length & 1 ? "0" : "") + t;
let n = new Uint8Array(t.length / 2);
for (let e = 0; e < t.length / 2; e++) n[e] = parseInt(t.slice(e * 2, e * 2 + 2), 16);
return n;
} else return null;
}
hexadecimalIntegerAsNumber(e) {
let t = parseInt(this[e], 16);
return t > 2 ** 53 - 1 ? Infinity : t;
}
decimalFloatingPoint(e) {
return parseFloat(this[e]);
}
optionalFloat(e, t) {
let n = this[e];
return n ? parseFloat(n) : t;
}
enumeratedString(e) {
return this[e];
}
bool(e) {
return this[e] === "YES";
}
decimalResolution(e) {
let t = S.exec(this[e]);
if (t !== null) return {
width: parseInt(t[1], 10),
height: parseInt(t[2], 10)
};
}
static parseAttrList(e) {
let t, n = {};
for (C.lastIndex = 0; (t = C.exec(e)) !== null;) {
let e = t[2];
e.indexOf("\"") === 0 && e.lastIndexOf("\"") === e.length - 1 && (e = e.slice(1, -1));
let r = t[1].trim();
n[r] = e;
}
return n;
}
};
function T(e) {
return e !== "ID" && e !== "CLASS" && e !== "START-DATE" && e !== "DURATION" && e !== "END-DATE" && e !== "END-ON-NEXT";
}
function E(e) {
return e === "SCTE35-OUT" || e === "SCTE35-IN";
}
var D = class {
constructor(e, t) {
if (this.attr = void 0, this._startDate = void 0, this._endDate = void 0, this._badValueForSameId = void 0, t) {
let n = t.attr;
for (let t in n) if (Object.prototype.hasOwnProperty.call(e, t) && e[t] !== n[t]) {
x.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`), this._badValueForSameId = t;
break;
}
e = c(new w({}), n, e);
}
if (this.attr = e, this._startDate = new Date(e["START-DATE"]), "END-DATE" in this.attr) {
let e = new Date(this.attr["END-DATE"]);
l(e.getTime()) && (this._endDate = e);
}
}
get id() {
return this.attr.ID;
}
get class() {
return this.attr.CLASS;
}
get startDate() {
return this._startDate;
}
get endDate() {
if (this._endDate) return this._endDate;
let e = this.duration;
return e === null ? null : new Date(this._startDate.getTime() + e * 1e3);
}
get duration() {
if ("DURATION" in this.attr) {
let e = this.attr.decimalFloatingPoint("DURATION");
if (l(e)) return e;
} else if (this._endDate) return (this._endDate.getTime() - this._startDate.getTime()) / 1e3;
return null;
}
get plannedDuration() {
return "PLANNED-DURATION" in this.attr ? this.attr.decimalFloatingPoint("PLANNED-DURATION") : null;
}
get endOnNext() {
return this.attr.bool("END-ON-NEXT");
}
get isValid() {
return !!this.id && !this._badValueForSameId && l(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);
}
}, O = class {
constructor() {
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
};
}
}, k = {
AUDIO: "audio",
VIDEO: "video",
AUDIOVIDEO: "audiovideo"
}, A = class {
constructor(e) {
this._byteRange = null, this._url = null, this.baseurl = void 0, this.relurl = void 0, this.elementaryStreams = {
[k.AUDIO]: null,
[k.VIDEO]: null,
[k.AUDIOVIDEO]: null
}, this.baseurl = e;
}
setByteRange(e, t) {
let n = e.split("@", 2), r;
r = n.length === 1 ? t?.byteRangeEndOffset || 0 : parseInt(n[1]), this._byteRange = [r, parseInt(n[0]) + r];
}
get byteRange() {
return this._byteRange ? this._byteRange : [];
}
get byteRangeStartOffset() {
return this.byteRange[0];
}
get byteRangeEndOffset() {
return this.byteRange[1];
}
get url() {
return !this._url && this.baseurl && this.relurl && (this._url = n.buildAbsoluteURL(this.baseurl, this.relurl, { alwaysNormalize: !0 })), this._url || "";
}
set url(e) {
this._url = e;
}
}, j = class extends A {
constructor(e, t) {
super(t), this._decryptdata = null, this.rawProgramDateTime = null, this.programDateTime = null, this.tagList = [], this.duration = 0, this.sn = 0, this.levelkeys = void 0, this.type = void 0, this.loader = null, this.keyLoader = null, this.level = -1, this.cc = 0, this.startPTS = void 0, this.endPTS = void 0, this.startDTS = void 0, this.endDTS = void 0, this.start = 0, this.deltaPTS = void 0, this.maxStartPTS = void 0, this.minEndPTS = void 0, this.stats = new O(), this.data = void 0, this.bitrateTest = !1, this.title = null, this.initSegment = null, this.endList = void 0, this.gap = void 0, this.urlId = 0, this.type = e;
}
get decryptdata() {
let { levelkeys: e } = this;
if (!e && !this._decryptdata) return null;
if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {
let e = this.levelkeys.identity;
if (e) this._decryptdata = e.getDecryptData(this.sn);
else {
let e = Object.keys(this.levelkeys);
if (e.length === 1) return this._decryptdata = this.levelkeys[e[0]].getDecryptData(this.sn);
}
}
return this._decryptdata;
}
get end() {
return this.start + this.duration;
}
get endProgramDateTime() {
if (this.programDateTime === null || !l(this.programDateTime)) return null;
let e = l(this.duration) ? this.duration : 0;
return this.programDateTime + e * 1e3;
}
get encrypted() {
var e;
if ((e = this._decryptdata) != null && e.encrypted) return !0;
if (this.levelkeys) {
let e = Object.keys(this.levelkeys), t = e.length;
if (t > 1 || t === 1 && this.levelkeys[e[0]].encrypted) return !0;
}
return !1;
}
setKeyFormat(e) {
if (this.levelkeys) {
let t = this.levelkeys[e];
t && !this._decryptdata && (this._decryptdata = t.getDecryptData(this.sn));
}
}
abortRequests() {
var e, t;
(e = this.loader) == null || e.abort(), (t = this.keyLoader) == null || t.abort();
}
setElementaryStreamInfo(e, t, n, r, i, a = !1) {
let { elementaryStreams: o } = this, s = o[e];
if (!s) {
o[e] = {
startPTS: t,
endPTS: n,
startDTS: r,
endDTS: i,
partial: a
};
return;
}
s.startPTS = Math.min(s.startPTS, t), s.endPTS = Math.max(s.endPTS, n), s.startDTS = Math.min(s.startDTS, r), s.endDTS = Math.max(s.endDTS, i);
}
clearElementaryStreamInfo() {
let { elementaryStreams: e } = this;
e[k.AUDIO] = null, e[k.VIDEO] = null, e[k.AUDIOVIDEO] = null;
}
}, M = class extends A {
constructor(e, t, n, r, i) {
super(n), this.fragOffset = 0, this.duration = 0, this.gap = !1, this.independent = !1, this.relurl = void 0, this.fragment = void 0, this.index = void 0, this.stats = new O(), this.duration = e.decimalFloatingPoint("DURATION"), this.gap = e.bool("GAP"), this.independent = e.bool("INDEPENDENT"), this.relurl = e.enumeratedString("URI"), this.fragment = t, this.index = r;
let a = e.enumeratedString("BYTERANGE");
a && this.setByteRange(a, i), i && (this.fragOffset = i.fragOffset + i.duration);
}
get start() {
return this.fragment.start + this.fragOffset;
}
get end() {
return this.start + this.duration;
}
get loaded() {
let { elementaryStreams: e } = this;
return !!(e.audio || e.video || e.audiovideo);
}
}, ee = 10, te = class {
constructor(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.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.encryptedFragments = void 0, this.playlistParsingError = null, this.variableList = null, this.hasVariableRefs = !1, this.fragments = [], this.encryptedFragments = [], this.dateRanges = {}, this.url = e;
}
reloaded(e) {
if (!e) {
this.advanced = !0, this.updated = !0;
return;
}
let t = this.lastPartSn - e.lastPartSn, n = this.lastPartIndex - e.lastPartIndex;
this.updated = this.endSN !== e.endSN || !!n || !!t || !this.live, this.advanced = this.endSN > e.endSN || t > 0 || t === 0 && n > 0, this.updated || this.advanced ? this.misses = Math.floor(e.misses * .6) : this.misses = e.misses + 1, this.availabilityDelay = e.availabilityDelay;
}
get hasProgramDateTime() {
return this.fragments.length ? l(this.fragments[this.fragments.length - 1].programDateTime) : !1;
}
get levelTargetDuration() {
return this.averagetargetduration || this.targetduration || ee;
}
get drift() {
let e = this.driftEndTime - this.driftStartTime;
return e > 0 ? (this.driftEnd - this.driftStart) * 1e3 / e : 1;
}
get edge() {
return this.partEnd || this.fragmentEnd;
}
get partEnd() {
var e;
return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].end : this.fragmentEnd;
}
get fragmentEnd() {
var e;
return (e = this.fragments) != null && e.length ? this.fragments[this.fragments.length - 1].end : 0;
}
get age() {
return this.advancedDateTime ? Math.max(Date.now() - this.advancedDateTime, 0) / 1e3 : 0;
}
get lastPartIndex() {
var e;
return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].index : -1;
}
get lastPartSn() {
var e;
return (e = this.partList) != null && e.length ? this.partList[this.partList.length - 1].fragment.sn : this.endSN;
}
};
function ne(e) {
return Uint8Array.from(atob(e), (e) => e.charCodeAt(0));
}
function re(e) {
let t = oe(e).subarray(0, 16), n = new Uint8Array(16);
return n.set(t, 16 - t.length), n;
}
function ie(e) {
let t = function(e, t, n) {
let r = e[t];
e[t] = e[n], e[n] = r;
};
t(e, 0, 3), t(e, 1, 2), t(e, 4, 5), t(e, 6, 7);
}
function ae(e) {
let t = e.split(":"), n = null;
if (t[0] === "data" && t.length === 2) {
let e = t[1].split(";"), r = e[e.length - 1].split(",");
if (r.length === 2) {
let t = r[0] === "base64", i = r[1];
t ? (e.splice(-1, 1), n = ne(i)) : n = re(i);
}
}
return n;
}
function oe(e) {
return Uint8Array.from(unescape(encodeURIComponent(e)), (e) => e.charCodeAt(0));
}
var se = typeof self < "u" ? self : void 0, N = {
CLEARKEY: "org.w3.clearkey",
FAIRPLAY: "com.apple.fps",
PLAYREADY: "com.microsoft.playready",
WIDEVINE: "com.widevine.alpha"
}, P = {
CLEARKEY: "org.w3.clearkey",
FAIRPLAY: "com.apple.streamingkeydelivery",
PLAYREADY: "com.microsoft.playready",
WIDEVINE: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
};
function ce(e) {
switch (e) {
case P.FAIRPLAY: return N.FAIRPLAY;
case P.PLAYREADY: return N.PLAYREADY;
case P.WIDEVINE: return N.WIDEVINE;
case P.CLEARKEY: return N.CLEARKEY;
}
}
var le = {
CENC: "1077efecc0b24d02ace33c1e52e2fb4b",
CLEARKEY: "e2719d58a985b3c9781ab030af78d30e",
FAIRPLAY: "94ce86fb07ff4f43adb893d2fa968ca2",
PLAYREADY: "9a04f07998404286ab92e65be0885f95",
WIDEVINE: "edef8ba979d64acea3c827dcd51d21ed"
};
function ue(e) {
if (e === le.WIDEVINE) return N.WIDEVINE;
if (e === le.PLAYREADY) return N.PLAYREADY;
if (e === le.CENC || e === le.CLEARKEY) return N.CLEARKEY;
}
function de(e) {
switch (e) {
case N.FAIRPLAY: return P.FAIRPLAY;
case N.PLAYREADY: return P.PLAYREADY;
case N.WIDEVINE: return P.WIDEVINE;
case N.CLEARKEY: return P.CLEARKEY;
}
}
function fe(e) {
let { drmSystems: t, widevineLicenseUrl: n } = e, r = t ? [
N.FAIRPLAY,
N.WIDEVINE,
N.PLAYREADY,
N.CLEARKEY
].filter((e) => !!t[e]) : [];
return !r[N.WIDEVINE] && n && r.push(N.WIDEVINE), r;
}
var pe = function(e) {
return se != null && (e = se.navigator) != null && e.requestMediaKeySystemAccess ? self.navigator.requestMediaKeySystemAccess.bind(self.navigator) : null;
}();
function me(e, t, n, r) {
let i;
switch (e) {
case N.FAIRPLAY:
i = ["cenc", "sinf"];
break;
case N.WIDEVINE:
case N.PLAYREADY:
i = ["cenc"];
break;
case N.CLEARKEY:
i = ["cenc", "keyids"];
break;
default: throw Error(`Unknown key-system: ${e}`);
}
return he(i, t, n, r);
}
function he(e, t, n, r) {
return [{
initDataTypes: e,
persistentState: r.persistentState || "optional",
distinctiveIdentifier: r.distinctiveIdentifier || "optional",
sessionTypes: r.sessionTypes || [r.sessionType || "temporary"],
audioCapabilities: t.map((e) => ({
contentType: `audio/mp4; codecs="${e}"`,
robustness: r.audioRobustness || "",
encryptionScheme: r.audioEncryptionScheme || null
})),
videoCapabilities: n.map((e) => ({
contentType: `video/mp4; codecs="${e}"`,
robustness: r.videoRobustness || "",
encryptionScheme: r.videoEncryptionScheme || null
}))
}];
}
function ge(e) {
let t = new Uint16Array(e.buffer, e.byteOffset, e.byteLength / 2), n = String.fromCharCode.apply(null, Array.from(t)), r = n.substring(n.indexOf("<"), n.length), i = new DOMParser().parseFromString(r, "text/xml").getElementsByTagName("KID")[0];
if (i) {
let e = i.childNodes[0] ? i.childNodes[0].nodeValue : i.getAttribute("VALUE");
if (e) {
let t = ne(e).subarray(0, 16);
return ie(t), t;
}
}
return null;
}
function _e(e, t, n) {
return Uint8Array.prototype.slice ? e.slice(t, n) : new Uint8Array(Array.prototype.slice.call(e, t, n));
}
var ve = (e, t) => t + 10 <= e.length && e[t] === 73 && e[t + 1] === 68 && e[t + 2] === 51 && e[t + 3] < 255 && e[t + 4] < 255 && e[t + 6] < 128 && e[t + 7] < 128 && e[t + 8] < 128 && e[t + 9] < 128, ye = (e, t) => t + 10 <= e.length && e[t] === 51 && e[t + 1] === 68 && e[t + 2] === 73 && e[t + 3] < 255 && e[t + 4] < 255 && e[t + 6] < 128 && e[t + 7] < 128 && e[t + 8] < 128 && e[t + 9] < 128, be = (e, t) => {
let n = t, r = 0;
for (; ve(e, t);) {
r += 10;
let n = xe(e, t + 6);
r += n, ye(e, t + 10) && (r += 10), t += r;
}
if (r > 0) return e.subarray(n, n + r);
}, xe = (e, t) => {
let n = 0;
return n = (e[t] & 127) << 21, n |= (e[t + 1] & 127) << 14, n |= (e[t + 2] & 127) << 7, n |= e[t + 3] & 127, n;
}, Se = (e, t) => ve(e, t) && xe(e, t + 6) + 10 <= e.length - t, Ce = (e) => {
let t = Ee(e);
for (let e = 0; e < t.length; e++) {
let n = t[e];
if (we(n)) return je(n);
}
}, we = (e) => e && e.key === "PRIV" && e.info === "com.apple.streaming.transportStreamTimestamp", Te = (e) => {
let t = String.fromCharCode(e[0], e[1], e[2], e[3]), n = xe(e, 4);
return {
type: t,
size: n,
data: e.subarray(10, 10 + n)
};
}, Ee = (e) => {
let t = 0, n = [];
for (; ve(e, t);) {
let r = xe(e, t + 6);
t += 10;
let i = t + r;
for (; t + 8 < i;) {
let r = Te(e.subarray(t)), i = De(r);
i && n.push(i), t += r.size + 10;
}
ye(e, t) && (t += 10);
}
return n;
}, De = (e) => e.type === "PRIV" ? Oe(e) : e.type[0] === "W" ? Ae(e) : ke(e), Oe = (e) => {
if (e.size < 2) return;
let t = Me(e.data, !0), n = new Uint8Array(e.data.subarray(t.length + 1));
return {
key: e.type,
info: t,
data: n.buffer
};
}, ke = (e) => {
if (e.size < 2) return;
if (e.type === "TXXX") {
let t = 1, n = Me(e.data.subarray(t), !0);
t += n.length + 1;
let r = Me(e.data.subarray(t));
return {
key: e.type,
info: n,
data: r
};
}
let t = Me(e.data.subarray(1));
return {
key: e.type,
data: t
};
}, Ae = (e) => {
if (e.type === "WXXX") {
if (e.size < 2) return;
let t = 1, n = Me(e.data.subarray(t), !0);
t += n.length + 1;
let r = Me(e.data.subarray(t));
return {
key: e.type,
info: n,
data: r
};
}
let t = Me(e.data);
return {
key: e.type,
data: t
};
}, je = (e) => {
if (e.data.byteLength === 8) {
let t = new Uint8Array(e.data), n = t[3] & 1, r = (t[4] << 23) + (t[5] << 15) + (t[6] << 7) + t[7];
return r /= 45, n && (r += 47721858.84), Math.round(r);
}
}, Me = (e, t = !1) => {
let n = Pe();
if (n) {
let r = n.decode(e);
if (t) {
let e = r.indexOf("\0");
return e === -1 ? r : r.substring(0, e);
}
return r.replace(/\0/g, "");
}
let r = e.length, i, a, o, s = "", c = 0;
for (; c < r;) {
if (i = e[c++], i === 0 && t) return s;
if (!(i === 0 || i === 3)) switch (i >> 4) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
s += String.fromCharCode(i);
break;
case 12:
case 13:
a = e[c++], s += String.fromCharCode((i & 31) << 6 | a & 63);
break;
case 14:
a = e[c++], o = e[c++], s += String.fromCharCode((i & 15) << 12 | (a & 63) << 6 | (o & 63) << 0);
break;
}
}
return s;
}, Ne;
function Pe() {
if (!navigator.userAgent.includes("PlayStation 4")) return !Ne && self.TextDecoder !== void 0 && (Ne = new self.TextDecoder("utf-8")), Ne;
}
var Fe = { hexDump: function(e) {
let t = "";
for (let n = 0; n < e.length; n++) {
let r = e[n].toString(16);
r.length < 2 && (r = "0" + r), t += r;
}
return t;
} }, Ie = 2 ** 32 - 1, Le = [].push, Re = {
video: 1,
audio: 2,
id3: 3,
text: 4
};
function F(e) {
return String.fromCharCode.apply(null, e);
}
function ze(e, t) {
let n = e[t] << 8 | e[t + 1];
return n < 0 ? 65536 + n : n;
}
function I(e, t) {
let n = Ve(e, t);
return n < 0 ? 4294967296 + n : n;
}
function Be(e, t) {
let n = I(e, t);
return n *= 2 ** 32, n += I(e, t + 4), n;
}
function Ve(e, t) {
return e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3];
}
function He(e, t, n) {
e[t] = n >> 24, e[t + 1] = n >> 16 & 255, e[t + 2] = n >> 8 & 255, e[t + 3] = n & 255;
}
function Ue(e) {
let t = e.byteLength;
for (let n = 0; n < t;) {
let r = I(e, n);
if (r > 8 && e[n + 4] === 109 && e[n + 5] === 111 && e[n + 6] === 111 && e[n + 7] === 102) return !0;
n = r > 1 ? n + r : t;
}
return !1;
}
function L(e, t) {
let n = [];
if (!t.length) return n;
let r = e.byteLength;
for (let i = 0; i < r;) {
let a = I(e, i), o = F(e.subarray(i + 4, i + 8)), s = a > 1 ? i + a : r;
if (o === t[0]) if (t.length === 1) n.push(e.subarray(i + 8, s));
else {
let r = L(e.subarray(i + 8, s), t.slice(1));
r.length && Le.apply(n, r);
}
i = s;
}
return n;
}
function We(e) {
let t = [], n = e[0], r = 8, i = I(e, r);
r += 4;
let a = 0, o = 0;
n === 0 ? (a = I(e, r), o = I(e, r + 4), r += 8) : (a = Be(e, r), o = Be(e, r + 8), r += 16), r += 2;
let s = e.length + o, c = ze(e, r);
r += 2;
for (let n = 0; n < c; n++) {
let n = r, a = I(e, n);
n += 4;
let o = a & 2147483647;
if ((a & 2147483648) >>> 31 == 1) return x.warn("SIDX has hierarchical references (not supported)"), null;
let c = I(e, n);
n += 4, t.push({
referenceSize: o,
subsegmentDuration: c,
info: {
duration: c / i,
start: s,
end: s + o - 1
}
}), s += o, n += 4, r = n;
}
return {
earliestPresentationTime: a,
timescale: i,
version: n,
referencesCount: c,
references: t
};
}
function Ge(e) {
let t = [], n = L(e, ["moov", "trak"]);
for (let e = 0; e < n.length; e++) {
let r = n[e], a = L(r, ["tkhd"])[0];
if (a) {
let e = a[0], n = I(a, e === 0 ? 12 : 20), o = L(r, ["mdia", "mdhd"])[0];
if (o) {
e = o[0];
let a = I(o, e === 0 ? 12 : 20), s = L(r, ["mdia", "hdlr"])[0];
if (s) {
let e = F(s.subarray(8, 12)), o = {
soun: k.AUDIO,
vide: k.VIDEO
}[e];
if (o) {
let e = L(r, [
"mdia",
"minf",
"stbl",
"stsd"
])[0], s = Ke(e);
t[n] = {
timescale: a,
type: o
}, t[o] = i({
timescale: a,
id: n
}, s);
}
}
}
}
}
return L(e, [
"moov",
"mvex",
"trex"
]).forEach((e) => {
let n = t[I(e, 4)];
n && (n.default = {
duration: I(e, 12),
flags: I(e, 20)
});
}), t;
}
function Ke(e) {
let t = e.subarray(8), n = t.subarray(86), r = F(t.subarray(4, 8)), i = r, a = r === "enca" || r === "encv";
switch (a && L(L(t, [r])[0].subarray(r === "enca" ? 28 : 78), ["sinf"]).forEach((e) => {
let t = L(e, ["schm"])[0];
if (t) {
let n = F(t.subarray(4, 8));
if (n === "cbcs" || n === "cenc") {
let t = L(e, ["frma"])[0];
t && (i = F(t));
}
}
}), i) {
case "avc1":
case "avc2":
case "avc3":
case "avc4": {
let e = L(n, ["avcC"])[0];
i += "." + Je(e[1]) + Je(e[2]) + Je(e[3]);
break;
}
case "mp4a": {
let e = L(t, [r])[0], n = L(e.subarray(28), ["esds"])[0];
if (n && n.length > 12) {
let e = 4;
if (n[e++] !== 3) break;
e = qe(n, e), e += 2;
let t = n[e++];
if (t & 128 && (e += 2), t & 64 && (e += n[e++]), n[e++] !== 4) break;
e = qe(n, e);
let r = n[e++];
if (r === 64) i += "." + Je(r);
else break;
if (e += 12, n[e++] !== 5) break;
e = qe(n, e);
let a = n[e++], o = (a & 248) >> 3;
o === 31 && (o += 1 + ((a & 7) << 3) + ((n[e] & 224) >> 5)), i += "." + o;
}
break;
}
case "hvc1":
case "hev1": {
let e = L(n, ["hvcC"])[0], t = e[1], r = [
"",
"A",
"B",
"C"
][t >> 6], a = t & 31, o = I(e, 2), s = (t & 32) >> 5 ? "H" : "L", c = e[12], l = e.subarray(6, 12);
i += "." + r + a, i += "." + o.toString(16).toUpperCase(), i += "." + s + c;
let u = "";
for (let e = l.length; e--;) {
let t = l[e];
(t || u) && (u = "." + t.toString(16).toUpperCase() + u);
}
i += u;
break;
}
case "dvh1":
case "dvhe": {
let e = L(n, ["dvcC"])[0], t = e[2] >> 1 & 127, r = e[2] << 5 & 32 | e[3] >> 3 & 31;
i += "." + Ye(t) + "." + Ye(r);
break;
}
case "vp09": {
let e = L(n, ["vpcC"])[0], t = e[4], r = e[5], a = e[6] >> 4 & 15;
i += "." + Ye(t) + "." + Ye(r) + "." + Ye(a);
break;
}
case "av01": {
let e = L(n, ["av1C"])[0], t = e[1] >>> 5, r = e[1] & 31, a = e[2] >>> 7 ? "H" : "M", o = (e[2] & 64) >> 6, s = (e[2] & 32) >> 5, c = t === 2 && o ? s ? 12 : 10 : o ? 10 : 8, l = (e[2] & 16) >> 4, u = (e[2] & 8) >> 3, d = (e[2] & 4) >> 2, f = e[2] & 3;
i += "." + t + "." + Ye(r) + a + "." + Ye(c) + "." + l + "." + u + d + f + "." + Ye(1) + "." + Ye(1) + "." + Ye(1) + ".0";
break;
}
}
return {
codec: i,
encrypted: a
};
}
function qe(e, t) {
let n = t + 5;
for (; e[t++] & 128 && t < n;);
return t;
}
function Je(e) {
return ("0" + e.toString(16).toUpperCase()).slice(-2);
}
function Ye(e) {
return (e < 10 ? "0" : "") + e;
}
function Xe(e, t) {
if (!e || !t) return e;
let n = t.keyId;
return n && t.isCommonEncryption && L(e, ["moov", "trak"]).forEach((e) => {
let t = L(e, [
"mdia",
"minf",
"stbl",
"stsd"
])[0].subarray(8), r = L(t, ["enca"]), i = r.length > 0;
i || (r = L(t, ["encv"])), r.forEach((e) => {
L(i ? e.subarray(28) : e.subarray(78), ["sinf"]).forEach((e) => {
let t = Ze(e);
if (t) {
let e = t.subarray(8, 24);
e.some((e) => e !== 0) || (x.log(`[eme] Patching keyId in 'enc${i ? "a" : "v"}>sinf>>tenc' box: ${Fe.hexDump(e)} -> ${Fe.hexDump(n)}`), t.set(n, 8));
}
});
});
}), e;
}
function Ze(e) {
let t = L(e, ["schm"])[0];
if (t) {
let n = F(t.subarray(4, 8));
if (n === "cbcs" || n === "cenc") return L(e, ["schi", "tenc"])[0];
}
return null;
}
function Qe(e, t) {
return L(t, ["moof", "traf"]).reduce((t, n) => {
let r = L(n, ["tfdt"])[0], i = r[0], a = L(n, ["tfhd"]).reduce((t, n) => {
let a = e[I(n, 4)];
if (a) {
let e = I(r, 4);
if (i === 1) {
if (e === Ie) return x.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"), t;
e *= Ie + 1, e += I(r, 8);
}
let n = a.timescale || 9e4, o = e / n;
if (l(o) && (t === null || o < t)) return o;
}
return t;
}, null);
return a !== null && l(a) && (t === null || a < t) ? a : t;
}, null);
}
function $e(e, t) {
let n = 0, r = 0, i = 0, a = L(e, ["moof", "traf"]);
for (let e = 0; e < a.length; e++) {
let o = a[e], s = L(o, ["tfhd"])[0], c = t[I(s, 4)];
if (!c) continue;
let l = c.default, u = I(s, 0) | l?.flags, d = l?.duration;
u & 8 && (d = u & 2 ? I(s, 12) : I(s, 8));
let f = c.timescale || 9e4, p = L(o, ["trun"]);
for (let e = 0; e < p.length; e++) {
if (n = et(p[e]), !n && d) {
let t = I(p[e], 4);
n = d * t;
}
c.type === k.VIDEO ? r += n / f : c.type === k.AUDIO && (i += n / f);
}
}
if (r === 0 && i === 0) {
let t = Infinity, n = 0, r = 0, i = L(e, ["sidx"]);
for (let e = 0; e < i.length; e++) {
let a = We(i[e]);
if (a != null && a.references) {
t = Math.min(t, a.earliestPresentationTime / a.timescale);
let e = a.references.reduce((e, t) => e + t.info.duration || 0, 0);
n = Math.max(n, e + a.earliestPresentationTime / a.timescale), r = n - t;
}
}
if (r && l(r)) return r;
}
return r || i;
}
function et(e) {
let t = I(e, 0), n = 8;
t & 1 && (n += 4), t & 4 && (n += 4);
let r = 0, i = I(e, 4);
for (let a = 0; a < i; a++) {
if (t & 256) {
let t = I(e, n);
r += t, n += 4;
}
t & 512 && (n += 4), t & 1024 && (n += 4), t & 2048 && (n += 4);
}
return r;
}
function tt(e, t, n) {
L(t, ["moof", "traf"]).forEach((t) => {
L(t, ["tfhd"]).forEach((r) => {
let i = e[I(r, 4)];
if (!i) return;
let a = i.timescale || 9e4;
L(t, ["tfdt"]).forEach((e) => {
let t = e[0], r = n * a;
if (r) {
let n = I(e, 4);
if (t === 0) n -= r, n = Math.max(n, 0), He(e, 4, n);
else {
n *= 2 ** 32, n += I(e, 8), n -= r, n = Math.max(n, 0);
let t = Math.floor(n / (Ie + 1)), i = Math.floor(n % (Ie + 1));
He(e, 4, t), He(e, 8, i);
}
}
});
});
});
}
function nt(e) {
let t = {
valid: null,
remainder: null
}, n = L(e, ["moof"]);
if (n.length < 2) return t.remainder = e, t;
let r = n[n.length - 1];
return t.valid = _e(e, 0, r.byteOffset - 8), t.remainder = _e(e, r.byteOffset - 8), t;
}
function R(e, t) {
let n = new Uint8Array(e.length + t.length);
return n.set(e), n.set(t, e.length), n;
}
function rt(e, t) {
let n = [], r = t.samples, i = t.timescale, a = t.id, o = !1;
return L(r, ["moof"]).map((s) => {
let c = s.byteOffset - 8;
L(s, ["traf"]).map((s) => {
let l = L(s, ["tfdt"]).map((e) => {
let t = e[0], n = I(e, 4);
return t === 1 && (n *= 2 ** 32, n += I(e, 8)), n / i;
})[0];
return l !== void 0 && (e = l), L(s, ["tfhd"]).map((l) => {
let u = I(l, 4), d = I(l, 0) & 16777215, f = (d & 1) != 0, p = (d & 2) != 0, m = (d & 8) != 0, h = 0, g = (d & 16) != 0, _ = 0, v = (d & 32) != 0, y = 8;
u === a && (f && (y += 8), p && (y += 4), m && (h = I(l, y), y += 4), g && (_ = I(l, y), y += 4), v && (y += 4), t.type === "video" && (o = it(t.codec)), L(s, ["trun"]).map((a) => {
let s = a[0], l = I(a, 0) & 16777215, u = (l & 1) != 0, d = 0, f = (l & 4) != 0, p = (l & 256) != 0, m = 0, g = (l & 512) != 0, v = 0, y = (l & 1024) != 0, b = (l & 2048) != 0, x = 0, S = I(a, 4), C = 8;
u && (d = I(a, C), C += 4), f && (C += 4);
let w = d + c;
for (let c = 0; c < S; c++) {
if (p ? (m = I(a, C), C += 4) : m = h, g ? (v = I(a, C), C += 4) : v = _, y && (C += 4), b && (x = s === 0 ? I(a, C) : Ve(a, C), C += 4), t.type === k.VIDEO) {
let t = 0;
for (; t < v;) {
let a = I(r, w);
w += 4, at(o, r[w]) && ot(r.subarray(w, w + a), o ? 2 : 1, e + x / i, n), w += a, t += a + 4;
}
}
e += m / i;
}
}));
});
});
}), n;
}
function it(e) {
if (!e) return !1;
let t = e.indexOf("."), n = t < 0 ? e : e.substring(0, t);
return n === "hvc1" || n === "hev1" || n === "dvh1" || n === "dvhe";
}
function at(e, t) {
if (e) {
let e = t >> 1 & 63;
return e === 39 || e === 40;
} else return (t & 31) == 6;
}
function ot(e, t, n, r) {
let i = st(e), a = 0;
a += t;
let o = 0, s = 0, c = 0;
for (; a < i.length;) {
o = 0;
do {
if (a >= i.length) break;
c = i[a++], o += c;
} while (c === 255);
s = 0;
do {
if (a >= i.length) break;
c = i[a++], s += c;
} while (c === 255);
let e = i.length - a, t = a;
if (s < e) a += s;
else if (s > e) {
x.error(`Malformed SEI payload. ${s} is too small, only ${e} bytes left to parse.`);
break;
}
if (o === 4) {
if (i[t++] === 181) {
let e = ze(i, t);
if (t += 2, e === 49) {
let e = I(i, t);
if (t += 4, e === 1195456820) {
let e = i[t++];
if (e === 3) {
let a = i[t++], s = 31 & a, c = 64 & a, l = c ? 2 + s * 3 : 0, u = new Uint8Array(l);
if (c) {
u[0] = a;
for (let e = 1; e < l; e++) u[e] = i[t++];
}
r.push({
type: e,
payloadType: o,
pts: n,
bytes: u
});
}
}
}
}
} else if (o === 5 && s > 16) {
let e = [];
for (let n = 0; n < 16; n++) {
let r = i[t++].toString(16);
e.push(r.length == 1 ? "0" + r : r), (n === 3 || n === 5 || n === 7 || n === 9) && e.push("-");
}
let a = s - 16, c = new Uint8Array(a);
for (let e = 0; e < a; e++) c[e] = i[t++];
r.push({
payloadType: o,
pts: n,
uuid: e.join(""),
userData: Me(c),
userDataBytes: c
});
}
}
}
function st(e) {
let t = e.byteLength, n = [], r = 1;
for (; r < t - 2;) e[r] === 0 && e[r + 1] === 0 && e[r + 2] === 3 ? (n.push(r + 2), r += 2) : r++;
if (n.length === 0) return e;
let i = t - n.length, a = new Uint8Array(i), o = 0;
for (r = 0; r < i; o++, r++) o === n[0] && (o++, n.shift()), a[r] = e[o];
return a;
}
function ct(e) {
let t = e[0], n = "", r = "", i = 0, a = 0, o = 0, s = 0, c = 0, l = 0;
if (t === 0) {
for (; F(e.subarray(l, l + 1)) !== "\0";) n += F(e.subarray(l, l + 1)), l += 1;
for (n += F(e.subarray(l, l + 1)), l += 1; F(e.subarray(l, l + 1)) !== "\0";) r += F(e.subarray(l, l + 1)), l += 1;
r += F(e.subarray(l, l + 1)), l += 1, i = I(e, 12), a = I(e, 16), s = I(e, 20), c = I(e, 24), l = 28;
} else if (t === 1) {
l += 4, i = I(e, l), l += 4;
let t = I(e, l);
l += 4;
let a = I(e, l);
for (l += 4, o = 2 ** 32 * t + a, u(o) || (o = 2 ** 53 - 1, x.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")), s = I(e, l), l += 4, c = I(e, l), l += 4; F(e.subarray(l, l + 1)) !== "\0";) n += F(e.subarray(l, l + 1)), l += 1;
for (n += F(e.subarray(l, l + 1)), l += 1; F(e.subarray(l, l + 1)) !== "\0";) r += F(e.subarray(l, l + 1)), l += 1;
r += F(e.subarray(l, l + 1)), l += 1;
}
let d = e.subarray(l, e.byteLength);
return {
schemeIdUri: n,
value: r,
timeScale: i,
presentationTime: o,
presentationTimeDelta: a,
eventDuration: s,
id: c,
payload: d
};
}
function lt(e, ...t) {
let n = t.length, r = 8, i = n;
for (; i--;) r += t[i].byteLength;
let a = new Uint8Array(r);
for (a[0] = r >> 24 & 255, a[1] = r >> 16 & 255, a[2] = r >> 8 & 255, a[3] = r & 255, a.set(e, 4), i = 0, r = 8; i < n; i++) a.set(t[i], r), r += t[i].byteLength;
return a;
}
function ut(e, t, n) {
if (e.byteLength !== 16) throw RangeError("Invalid system id");
let r, i;
if (t) {
r = 1, i = new Uint8Array(t.length * 16);
for (let e = 0; e < t.length; e++) {
let n = t[e];
if (n.byteLength !== 16) throw RangeError("Invalid key");
i.set(n, e * 16);
}
} else r = 0, i = new Uint8Array();
let a;
r > 0 ? (a = new Uint8Array(4), t.length > 0 && new DataView(a.buffer).setUint32(0, t.length, !1)) : a = new Uint8Array();
let o = new Uint8Array(4);
return n && n.byteLength > 0 && new DataView(o.buffer).setUint32(0, n.byteLength, !1), lt([
112,
115,
115,
104
], new Uint8Array([
r,
0,
0,
0
]), e, a, i, o, n || new Uint8Array());
}
function dt(e) {
let t = [];
if (e instanceof ArrayBuffer) {
let n = e.byteLength, r = 0;
for (; r + 32 < n;) {
let n = ft(new DataView(e, r));
t.push(n), r += n.size;
}
}
return t;
}
function ft(e) {
let t = e.getUint32(0), n = e.byteOffset, r = e.byteLength;
if (r < t) return {
offset: n,
size: r
};
if (e.getUint32(4) !== 1886614376) return {
offset: n,
size: t
};
let i = e.getUint32(8) >>> 24;
if (i !== 0 && i !== 1) return {
offset: n,
size: t
};
let a = e.buffer, o = Fe.hexDump(new Uint8Array(a, n + 12, 16)), s = e.getUint32(28), c = null, l = null;
if (i === 0) {
if (t - 32 < s || s < 22) return {
offset: n,
size: t
};
l = new Uint8Array(a, n + 32, s);
} else if (i === 1) {
if (!s || r < n + 32 + s * 16 + 16) return {
offset: n,
size: t
};
c = [];
for (let e = 0; e < s; e++) c.push(new Uint8Array(a, n + 32 + e * 16, 16));
}
return {
version: i,
systemId: o,
kids: c,
data: l,
offset: n,
size: t
};
}
var pt = {}, mt = class e {
static clearKeyUriToKeyIdMap() {
pt = {};
}
constructor(e, t, n, r = [1], i = null) {
this.uri = void 0, this.method = void 0, this.keyFormat = void 0, this.keyFormatVersions = void 0, this.encrypted = void 0, this.isCommonEncryption = void 0, this.iv = null, this.key = null, this.keyId = null, this.pssh = null, this.method = e, this.uri = t, this.keyFormat = n, this.keyFormatVersions = r, this.iv = i, this.encrypted = e ? e !== "NONE" : !1, this.isCommonEncryption = this.encrypted && e !== "AES-128";
}
isSupported() {
if (this.method) {
if (this.method === "AES-128" || this.method === "NONE") return !0;
if (this.keyFormat === "identity") return this.method === "SAMPLE-AES";
switch (this.keyFormat) {
case P.FAIRPLAY:
case P.WIDEVINE:
case P.PLAYREADY:
case P.CLEARKEY: return [
"ISO-23001-7",
"SAMPLE-AES",
"SAMPLE-AES-CENC",
"SAMPLE-AES-CTR"
].indexOf(this.method) !== -1;
}
}
return !1;
}
getDecryptData(t) {
if (!this.encrypted || !this.uri) return null;
if (this.method === "AES-128" && this.uri && !this.iv) {
typeof t != "number" && (this.method === "AES-128" && !this.iv && x.warn(`missing IV for initialization segment with method="${this.method}" - compliance issue`), t = 0);
let n = ht(t);
return new e(this.method, this.uri, "identity", this.keyFormatVersions, n);
}
let n = ae(this.uri);
if (n) switch (this.keyFormat) {
case P.WIDEVINE:
this.pssh = n, n.length >= 22 && (this.keyId = n.subarray(n.length - 22, n.length - 6));
break;
case P.PLAYREADY: {
let e = new Uint8Array([
154,
4,
240,
121,
152,
64,
66,
134,
171,
146,
230,
91,
224,
136,
95,
149
]);
this.pssh = ut(e, null, n), this.keyId = ge(n);
break;
}
default: {
let e = n.subarray(0, 16);
if (e.length !== 16) {
let t = new Uint8Array(16);
t.set(e, 16 - e.length), e = t;
}
this.keyId = e;
break;
}
}
if (!this.keyId || this.keyId.byteLength !== 16) {
let e = pt[this.uri];
if (!e) {
let t = Object.keys(pt).length % (2 ** 53 - 1);
e = new Uint8Array(16), new DataView(e.buffer, 12, 4).setUint32(0, t), pt[this.uri] = e;
}
this.keyId = e;
}
return this;
}
};
function ht(e) {
let t = new Uint8Array(16);
for (let n = 12; n < 16; n++) t[n] = e >> 8 * (15 - n) & 255;
return t;
}
var gt = /\{\$([a-zA-Z0-9-_]+)\}/g;
function _t(e) {
return gt.test(e);
}
function z(e, t, n) {
if (e.variableList !== null || e.hasVariableRefs) for (let r = n.length; r--;) {
let i = n[r], a = t[i];
a && (t[i] = vt(e, a));
}
}
function vt(e, t) {
if (e.variableList !== null || e.hasVariableRefs) {
let n = e.variableList;
return t.replace(gt, (t) => {
let r = t.substring(2, t.length - 1), i = n?.[r];
return i === void 0 ? (e.playlistParsingError ||= /* @__PURE__ */ Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${r}"`), t) : i;
});
}
return t;
}
function yt(e, t, n) {
let r = e.variableList;
r || (e.variableList = r = {});
let i, a;
if ("QUERYPARAM" in t) {
i = t.QUERYPARAM;
try {
let e = new self.URL(n).searchParams;
if (e.has(i)) a = e.get(i);
else throw Error(`"${i}" does not match any query parameter in URI: "${n}"`);
} catch (t) {
e.playlistParsingError ||= /* @__PURE__ */ Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`);
}
} else i = t.NAME, a = t.VALUE;
i in r ? e.playlistParsingError ||= /* @__PURE__ */ Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${i}"`) : r[i] = a || "";
}
function bt(e, t, n) {
let r = t.IMPORT;
if (n && r in n) {
let t = e.variableList;
t || (e.variableList = t = {}), t[r] = n[r];
} else e.playlistParsingError ||= /* @__PURE__ */ Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${r}"`);
}
function xt(e = !0) {
if (!(typeof self > "u")) return (e || !self.MediaSource) && self.ManagedMediaSource || self.MediaSource || self.WebKitMediaSource;
}
function St(e) {
return typeof self < "u" && e === self.ManagedMediaSource;
}
var Ct = {
audio: {
a3ds: 1,
"ac-3": .95,
"ac-4": 1,
alac: .9,
alaw: 1,
dra1: 1,
"dts+": 1,
"dts-": 1,
dtsc: 1,
dtse: 1,
dtsh: 1,
"ec-3": .9,
enca: 1,
fLaC: .9,
flac: .9,
FLAC: .9,
g719: 1,
g726: 1,
m4ae: 1,
mha1: 1,
mha2: 1,
mhm1: 1,
mhm2: 1,
mlpa: 1,
mp4a: 1,
"raw ": 1,
Opus: 1,
opus: 1,
samr: 1,
sawb: 1,
sawp: 1,
sevc: 1,
sqcp: 1,
ssmv: 1,
twos: 1,
ulaw: 1
},
video: {
avc1: 1,
avc2: 1,
avc3: 1,
avc4: 1,
avcp: 1,
av01: .8,
drac: 1,
dva1: 1,
dvav: 1,
dvh1: .7,
dvhe: .7,
encv: 1,
hev1: .75,
hvc1: .75,
mjp2: 1,
mp4v: 1,
mvc1: 1,
mvc2: 1,
mvc3: 1,
mvc4: 1,
resv: 1,
rv60: 1,
s263: 1,
svc1: 1,
svc2: 1,
"vc-1": 1,
vp08: 1,
vp09: .9
},
text: {
stpp: 1,
wvtt: 1
}
};
function wt(e, t) {
let n = Ct[t];
return !!n && !!n[e.slice(0, 4)];
}
function Tt(e, t, n = !0) {
return !e.split(",").some((e) => !Et(e, t, n));
}
function Et(e, t, n = !0) {
return xt(n)?.isTypeSupported(Dt(e, t)) ?? !1;
}
function Dt(e, t) {
return `${t}/mp4;codecs="${e}"`;
}
function Ot(e) {
if (e) {
let t = e.substring(0, 4);
return Ct.video[t];
}
return 2;
}
function kt(e) {
return e.split(",").reduce((e, t) => {
let n = Ct.video[t];
return n ? (n * 2 + e) / (e ? 3 : 2) : (Ct.audio[t] + e) / (e ? 2 : 1);
}, 0);
}
var At = {};
function jt(e, t = !0) {
if (At[e]) return At[e];
let n = {
flac: [
"flac",
"fLaC",
"FLAC"
],
opus: ["opus", "Opus"]
}[e];
for (let r = 0; r < n.length; r++) if (Et(n[r], "audio", t)) return At[e] = n[r], n[r];
return e;
}
var Mt = /flac|opus/i;
function Nt(e, t = !0) {
return e.replace(Mt, (e) => jt(e.toLowerCase(), t));
}
function Pt(e, t) {
return e && e !== "mp4a" ? e : t && t.split(",")[0];
}
function Ft(e) {
let t = e.split(",");
for (let e = 0; e < t.length; e++) {
let n = t[e].split(".");
if (n.length > 2) {
let r = n.shift() + ".";
r += parseInt(n.shift()).toString(16), r += ("000" + parseInt(n.shift()).toString(16)).slice(-4), t[e] = r;
}
}
return t.join(",");
}
var It = /#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g, Lt = /#EXT-X-MEDIA:(.*)/g, Rt = /^#EXT(?:INF|-X-TARGETDURATION):/m, zt = new RegExp([
"#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?",
"(?!#) *(\\S[^\\r\\n]*)",
"#EXT-X-BYTERANGE:*(.+)",
"#EXT-X-PROGRAM-DATE-TIME:(.+)",
"#.*"
].join("|"), "g"), Bt = new RegExp([
"#(EXTM3U)",
"#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)",
"#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)",
"#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)",
"(#)([^:]*):(.*)",
"(#)(.*)(?:.*)\\r?\\n?"
].join("|")), Vt = class e {
static findGroup(e, t) {
for (let n = 0; n < e.length; n++) {
let r = e[n];
if (r.id === t) return r;
}
}
static resolve(e, t) {
return n.buildAbsoluteURL(t, e, { alwaysNormalize: !0 });
}
static isMediaPlaylist(e) {
return Rt.test(e);
}
static parseMasterPlaylist(t, n) {
let r = {
contentSteering: null,
levels: [],
playlistParsingError: null,
sessionData: null,
sessionKeys: null,