/**
* @license
* Video.js 7.17.0
* Copyright Brightcove, Inc.
* Available under Apache License Version 2.0
*
*
* Includes vtt.js
* Available under Apache License Version 2.0
*
*/
!(function (e, t) {
'object' == typeof exports && 'undefined' != typeof module ? (module.exports = t()) : 'function' == typeof define && define.amd ? define(t) : ((e = 'undefined' != typeof globalThis ? globalThis : e || self).videojs = t());
})(this, function () {
'use strict';
for (
var e,
u = '7.17.0',
i = {},
a = function (e, t) {
return (i[e] = i[e] || []), t && (i[e] = i[e].concat(t)), i[e];
},
n = function (e, t) {
t = a(e).indexOf(t);
return !(t <= -1) && ((i[e] = i[e].slice()), i[e].splice(t, 1), !0);
},
l = { prefixed: !0 },
t = [
['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'],
['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'],
['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'],
['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen'],
],
r = t[0],
s = 0;
s < t.length;
s++
)
if (t[s][1] in document) {
e = t[s];
break;
}
if (e) {
for (var o = 0; o < e.length; o++) l[r[o]] = e[o];
l.prefixed = e[0] !== r[0];
}
var c = [],
d = function (a, s) {
return function (e, t, i) {
var n,
r = s.levels[t],
t = new RegExp('^(' + r + ')$');
'log' !== e && i.unshift(e.toUpperCase() + ':'), i.unshift(a + ':'), c && (c.push([].concat(i)), (n = c.length - 1e3), c.splice(0, 0 < n ? n : 0)), !window.console || ((n = !(n = window.console[e]) && 'debug' === e ? window.console.info || window.console.log : n) && r && t.test(e) && n[Array.isArray(i) ? 'apply' : 'call'](window.console, i));
};
};
var h = (function t(i) {
function n() {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
a('log', r, t);
}
var r = 'info',
a = d(i, n);
return (
(n.createLogger = function (e) {
return t(i + ': ' + e);
}),
(n.levels = { all: 'debug|log|warn|error', off: '', debug: 'debug|log|warn|error', info: 'log|warn|error', warn: 'warn|error', error: 'error', DEFAULT: r }),
(n.level = function (e) {
if ('string' == typeof e) {
if (!n.levels.hasOwnProperty(e)) throw new Error('"' + e + '" in not a valid log level');
r = e;
}
return r;
}),
((n.history = function () {
return c ? [].concat(c) : [];
}).filter = function (t) {
return (c || []).filter(function (e) {
return new RegExp('.*' + t + '.*').test(e[0]);
});
}),
(n.history.clear = function () {
c && (c.length = 0);
}),
(n.history.disable = function () {
null !== c && ((c.length = 0), (c = null));
}),
(n.history.enable = function () {
null === c && (c = []);
}),
(n.error = function () {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
return a('error', r, t);
}),
(n.warn = function () {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
return a('warn', r, t);
}),
(n.debug = function () {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
return a('debug', r, t);
}),
n
);
})('VIDEOJS'),
p = h.createLogger,
f = 'undefined' != typeof globalThis ? globalThis : 'undefined' != typeof window ? window : 'undefined' != typeof global ? global : 'undefined' != typeof self ? self : {};
function m(e, t) {
return e((t = { exports: {} }), t.exports), t.exports;
}
var g = m(function (e) {
function t() {
return (
(e.exports = t =
Object.assign ||
function (e) {
for (var t = 1; t < arguments.length; t++) {
var i,
n = arguments[t];
for (i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]);
}
return e;
}),
t.apply(this, arguments)
);
}
e.exports = t;
}),
y = Object.prototype.toString,
v = function (e) {
return T(e) ? Object.keys(e) : [];
};
function _(t, i) {
v(t).forEach(function (e) {
return i(t[e], e);
});
}
function b(i) {
for (var e = arguments.length, t = new Array(1 < e ? e - 1 : 0), n = 1; n < e; n++) t[n - 1] = arguments[n];
return Object.assign
? g.apply(void 0, [i].concat(t))
: (t.forEach(function (e) {
e &&
_(e, function (e, t) {
i[t] = e;
});
}),
i);
}
function T(e) {
return !!e && 'object' == typeof e;
}
function w(e) {
return T(e) && '[object Object]' === y.call(e) && e.constructor === Object;
}
function S(e, t) {
if (!e || !t) return '';
if ('function' != typeof window.getComputedStyle) return '';
var i;
try {
i = window.getComputedStyle(e);
} catch (e) {
return '';
}
return i ? i.getPropertyValue(t) || i[t] : '';
}
var E = (window.navigator && window.navigator.userAgent) || '',
k = /AppleWebKit\/([\d.]+)/i.exec(E),
C = k ? parseFloat(k.pop()) : null,
I = /iPod/i.test(E),
x = (jt = E.match(/OS (\d+)_/i)) && jt[1] ? jt[1] : null,
A = /Android/i.test(E),
P = (function () {
var e = E.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);
if (!e) return null;
var t = e[1] && parseFloat(e[1]),
i = e[2] && parseFloat(e[2]);
return t && i ? parseFloat(e[1] + '.' + e[2]) : t || null;
})(),
L = A && P < 5 && C < 537,
D = /Firefox/i.test(E),
O = /Edg/i.test(E),
R = !O && (/Chrome/i.test(E) || /CriOS/i.test(E)),
M = (Gt = E.match(/(Chrome|CriOS)\/(\d+)/)) && Gt[2] ? parseFloat(Gt[2]) : null,
N = (Xt = !(Xt = (Xt = /MSIE\s(\d+)\.\d/.exec(E)) && parseFloat(Xt[1])) && /Trident\/7.0/i.test(E) && /rv:11.0/.test(E) ? 11 : Xt),
U = /Safari/i.test(E) && !R && !A && !O,
B = /Windows/i.test(E),
F = Boolean(X() && ('ontouchstart' in window || window.navigator.maxTouchPoints || (window.DocumentTouch && window.document instanceof window.DocumentTouch))),
j = /iPad/i.test(E) || (U && F && !/iPhone/i.test(E)),
H = /iPhone/i.test(E) && !j,
q = H || j || I,
V = (U || q) && !R,
W = Object.freeze({ __proto__: null, IS_IPOD: I, IOS_VERSION: x, IS_ANDROID: A, ANDROID_VERSION: P, IS_NATIVE_ANDROID: L, IS_FIREFOX: D, IS_EDGE: O, IS_CHROME: R, CHROME_VERSION: M, IE_VERSION: N, IS_SAFARI: U, IS_WINDOWS: B, TOUCH_ENABLED: F, IS_IPAD: j, IS_IPHONE: H, IS_IOS: q, IS_ANY_SAFARI: V });
function z(e) {
return 'string' == typeof e && Boolean(e.trim());
}
function G(e) {
if (0 <= e.indexOf(' ')) throw new Error('class has illegal whitespace characters');
}
function X() {
return document === window.document;
}
function K(e) {
return T(e) && 1 === e.nodeType;
}
function Y() {
try {
return window.parent !== window.self;
} catch (e) {
return !0;
}
}
function Q(i) {
return function (e, t) {
if (!z(e)) return document[i](null);
t = K((t = z(t) ? document.querySelector(t) : t)) ? t : document;
return t[i] && t[i](e);
};
}
function $(e, i, t, n) {
void 0 === e && (e = 'div'), void 0 === i && (i = {}), void 0 === t && (t = {});
var r = document.createElement(e);
return (
Object.getOwnPropertyNames(i).forEach(function (e) {
var t = i[e];
-1 !== e.indexOf('aria-') || 'role' === e || 'type' === e ? (h.warn('Setting attributes in the second argument of createEl()\nhas been deprecated. Use the third argument instead.\ncreateEl(type, properties, attributes). Attempting to set ' + e + ' to ' + t + '.'), r.setAttribute(e, t)) : 'textContent' === e ? J(r, t) : (r[e] === t && 'tabIndex' !== e) || (r[e] = t);
}),
Object.getOwnPropertyNames(t).forEach(function (e) {
r.setAttribute(e, t[e]);
}),
n && ye(r, n),
r
);
}
function J(e, t) {
return 'undefined' == typeof e.textContent ? (e.innerText = t) : (e.textContent = t), e;
}
function Z(e, t) {
t.firstChild ? t.insertBefore(e, t.firstChild) : t.appendChild(e);
}
function ee(e, t) {
return G(t), e.classList ? e.classList.contains(t) : new RegExp('(^|\\s)' + t + '($|\\s)').test(e.className);
}
function te(e, t) {
return e.classList ? e.classList.add(t) : ee(e, t) || (e.className = (e.className + ' ' + t).trim()), e;
}
function ie(e, t) {
return e
? (e.classList
? e.classList.remove(t)
: (G(t),
(e.className = e.className
.split(/\s+/)
.filter(function (e) {
return e !== t;
})
.join(' '))),
e)
: (h.warn("removeClass was called with an element that doesn't exist"), null);
}
function ne(e, t, i) {
var n = ee(e, t);
if ((i = 'boolean' != typeof (i = 'function' == typeof i ? i(e, t) : i) ? !n : i) !== n) return (i ? te : ie)(e, t), e;
}
function re(i, n) {
Object.getOwnPropertyNames(n).forEach(function (e) {
var t = n[e];
null === t || 'undefined' == typeof t || !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? '' : t);
});
}
function ae(e) {
var t = {},
i = ',autoplay,controls,playsinline,loop,muted,default,defaultMuted,';
if (e && e.attributes && 0 < e.attributes.length)
for (var n = e.attributes, r = n.length - 1; 0 <= r; r--) {
var a = n[r].name,
s = n[r].value;
('boolean' != typeof e[a] && -1 === i.indexOf(',' + a + ',')) || (s = null !== s), (t[a] = s);
}
return t;
}
function se(e, t) {
return e.getAttribute(t);
}
function oe(e, t, i) {
e.setAttribute(t, i);
}
function ue(e, t) {
e.removeAttribute(t);
}
function le() {
document.body.focus(),
(document.onselectstart = function () {
return !1;
});
}
function ce() {
document.onselectstart = function () {
return !0;
};
}
function de(e) {
if (e && e.getBoundingClientRect && e.parentNode) {
var t = e.getBoundingClientRect(),
i = {};
return (
['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (e) {
void 0 !== t[e] && (i[e] = t[e]);
}),
i.height || (i.height = parseFloat(S(e, 'height'))),
i.width || (i.width = parseFloat(S(e, 'width'))),
i
);
}
}
function he(e) {
if (!e || (e && !e.offsetParent)) return { left: 0, top: 0, width: 0, height: 0 };
for (var t = e.offsetWidth, i = e.offsetHeight, n = 0, r = 0; e.offsetParent && e !== document[l.fullscreenElement]; ) (n += e.offsetLeft), (r += e.offsetTop), (e = e.offsetParent);
return { left: n, top: r, width: t, height: i };
}
function pe(e, t) {
var i = { x: 0, y: 0 };
if (q)
for (var n = e; n && 'html' !== n.nodeName.toLowerCase(); ) {
var r,
a = S(n, 'transform');
/^matrix/.test(a) ? ((r = a.slice(7, -1).split(/,\s/).map(Number)), (i.x += r[4]), (i.y += r[5])) : /^matrix3d/.test(a) && ((a = a.slice(9, -1).split(/,\s/).map(Number)), (i.x += a[12]), (i.y += a[13])), (n = n.parentNode);
}
var s = {},
o = he(t.target),
u = he(e),
l = u.width,
c = u.height,
e = t.offsetY - (u.top - o.top),
o = t.offsetX - (u.left - o.left);
return t.changedTouches && ((o = t.changedTouches[0].pageX - u.left), (e = t.changedTouches[0].pageY + u.top), q && ((o -= i.x), (e -= i.y))), (s.y = 1 - Math.max(0, Math.min(1, e / c))), (s.x = Math.max(0, Math.min(1, o / l))), s;
}
function fe(e) {
return T(e) && 3 === e.nodeType;
}
function me(e) {
for (; e.firstChild; ) e.removeChild(e.firstChild);
return e;
}
function ge(e) {
return (
'function' == typeof e && (e = e()),
(Array.isArray(e) ? e : [e])
.map(function (e) {
return K((e = 'function' == typeof e ? e() : e)) || fe(e) ? e : 'string' == typeof e && /\S/.test(e) ? document.createTextNode(e) : void 0;
})
.filter(function (e) {
return e;
})
);
}
function ye(t, e) {
return (
ge(e).forEach(function (e) {
return t.appendChild(e);
}),
t
);
}
function ve(e, t) {
return ye(me(e), t);
}
function _e(e) {
return (void 0 === e.button && void 0 === e.buttons) || (0 === e.button && void 0 === e.buttons) || ('mouseup' === e.type && 0 === e.button && 0 === e.buttons) || (0 === e.button && 1 === e.buttons);
}
var be,
Te = Q('querySelector'),
we = Q('querySelectorAll'),
Se = Object.freeze({ __proto__: null, isReal: X, isEl: K, isInFrame: Y, createEl: $, textContent: J, prependTo: Z, hasClass: ee, addClass: te, removeClass: ie, toggleClass: ne, setAttributes: re, getAttributes: ae, getAttribute: se, setAttribute: oe, removeAttribute: ue, blockTextSelection: le, unblockTextSelection: ce, getBoundingClientRect: de, findPosition: he, getPointerPosition: pe, isTextNode: fe, emptyEl: me, normalizeContent: ge, appendContent: ye, insertContent: ve, isSingleLeftClick: _e, $: Te, $$: we }),
Ee = !1,
ke = function () {
if (!1 !== be.options.autoSetup) {
var e = Array.prototype.slice.call(document.getElementsByTagName('video')),
t = Array.prototype.slice.call(document.getElementsByTagName('audio')),
i = Array.prototype.slice.call(document.getElementsByTagName('video-js')),
n = e.concat(t, i);
if (n && 0 < n.length)
for (var r = 0, a = n.length; r < a; r++) {
var s = n[r];
if (!s || !s.getAttribute) {
Ce(1);
break;
}
void 0 === s.player && null !== s.getAttribute('data-setup') && be(s);
}
else Ee || Ce(1);
}
};
function Ce(e, t) {
X() && (t && (be = t), window.setTimeout(ke, e));
}
function Ie() {
(Ee = !0), window.removeEventListener('load', Ie);
}
X() && ('complete' === document.readyState ? Ie() : window.addEventListener('load', Ie));
function xe(e) {
var t = document.createElement('style');
return (t.className = e), t;
}
function Ae(e, t) {
e.styleSheet ? (e.styleSheet.cssText = t) : (e.textContent = t);
}
var Pe = 3;
window.WeakMap ||
(ui = (function () {
function e() {
(this.vdata = 'vdata' + Math.floor((window.performance && window.performance.now()) || Date.now())), (this.data = {});
}
var t = e.prototype;
return (
(t.set = function (e, t) {
var i = e[this.vdata] || Pe++;
return e[this.vdata] || (e[this.vdata] = i), (this.data[i] = t), this;
}),
(t.get = function (e) {
var t = e[this.vdata];
if (t) return this.data[t];
h('We have no data for this element', e);
}),
(t.has = function (e) {
return e[this.vdata] in this.data;
}),
(t.delete = function (e) {
var t = e[this.vdata];
t && (delete this.data[t], delete e[this.vdata]);
}),
e
);
})());
var Le,
De = new (window.WeakMap ? WeakMap : ui)();
function Oe(e, t) {
var i;
De.has(e) && (0 === (i = De.get(e)).handlers[t].length && (delete i.handlers[t], e.removeEventListener ? e.removeEventListener(t, i.dispatcher, !1) : e.detachEvent && e.detachEvent('on' + t, i.dispatcher)), Object.getOwnPropertyNames(i.handlers).length <= 0 && (delete i.handlers, delete i.dispatcher, delete i.disabled), 0 === Object.getOwnPropertyNames(i).length && De.delete(e));
}
function Re(t, i, e, n) {
e.forEach(function (e) {
t(i, e, n);
});
}
function Me(e) {
if (e.fixed_) return e;
function t() {
return !0;
}
function i() {
return !1;
}
if (!e || !e.isPropagationStopped || !e.isImmediatePropagationStopped) {
var n,
r,
a,
s = e || window.event;
for (n in ((e = {}), s)) 'layerX' !== n && 'layerY' !== n && 'keyLocation' !== n && 'webkitMovementX' !== n && 'webkitMovementY' !== n && (('returnValue' === n && s.preventDefault) || (e[n] = s[n]));
e.target || (e.target = e.srcElement || document),
e.relatedTarget || (e.relatedTarget = e.fromElement === e.target ? e.toElement : e.fromElement),
(e.preventDefault = function () {
s.preventDefault && s.preventDefault(), (e.returnValue = !1), (s.returnValue = !1), (e.defaultPrevented = !0);
}),
(e.defaultPrevented = !1),
(e.stopPropagation = function () {
s.stopPropagation && s.stopPropagation(), (e.cancelBubble = !0), (s.cancelBubble = !0), (e.isPropagationStopped = t);
}),
(e.isPropagationStopped = i),
(e.stopImmediatePropagation = function () {
s.stopImmediatePropagation && s.stopImmediatePropagation(), (e.isImmediatePropagationStopped = t), e.stopPropagation();
}),
(e.isImmediatePropagationStopped = i),
null !== e.clientX && void 0 !== e.clientX && ((r = document.documentElement), (a = document.body), (e.pageX = e.clientX + ((r && r.scrollLeft) || (a && a.scrollLeft) || 0) - ((r && r.clientLeft) || (a && a.clientLeft) || 0)), (e.pageY = e.clientY + ((r && r.scrollTop) || (a && a.scrollTop) || 0) - ((r && r.clientTop) || (a && a.clientTop) || 0))),
(e.which = e.charCode || e.keyCode),
null !== e.button && void 0 !== e.button && (e.button = 1 & e.button ? 0 : 4 & e.button ? 1 : 2 & e.button ? 2 : 0);
}
return (e.fixed_ = !0), e;
}
var Ne = function () {
if ('boolean' != typeof Le) {
Le = !1;
try {
var e = Object.defineProperty({}, 'passive', {
get: function () {
Le = !0;
},
});
window.addEventListener('test', null, e), window.removeEventListener('test', null, e);
} catch (e) {}
}
return Le;
},
Ue = ['touchstart', 'touchmove'];
function Be(s, e, t) {
if (Array.isArray(e)) return Re(Be, s, e, t);
De.has(s) || De.set(s, {});
var o = De.get(s);
o.handlers || (o.handlers = {}),
o.handlers[e] || (o.handlers[e] = []),
t.guid || (t.guid = Pe++),
o.handlers[e].push(t),
o.dispatcher ||
((o.disabled = !1),
(o.dispatcher = function (e, t) {
if (!o.disabled) {
e = Me(e);
var i = o.handlers[e.type];
if (i)
for (var n = i.slice(0), r = 0, a = n.length; r < a && !e.isImmediatePropagationStopped(); r++)
try {
n[r].call(s, e, t);
} catch (e) {
h.error(e);
}
}
})),
1 === o.handlers[e].length && (s.addEventListener ? ((t = !1), Ne() && -1 < Ue.indexOf(e) && (t = { passive: !0 }), s.addEventListener(e, o.dispatcher, t)) : s.attachEvent && s.attachEvent('on' + e, o.dispatcher));
}
function Fe(e, t, i) {
if (De.has(e)) {
var n = De.get(e);
if (n.handlers) {
if (Array.isArray(t)) return Re(Fe, e, t, i);
var r = function (e, t) {
(n.handlers[t] = []), Oe(e, t);
};
if (void 0 !== t) {
var a = n.handlers[t];
if (a)
if (i) {
if (i.guid) for (var s = 0; s < a.length; s++) a[s].guid === i.guid && a.splice(s--, 1);
Oe(e, t);
} else r(e, t);
} else for (var o in n.handlers) Object.prototype.hasOwnProperty.call(n.handlers || {}, o) && r(e, o);
}
}
}
function je(e, t, i) {
var n = De.has(e) ? De.get(e) : {},
r = e.parentNode || e.ownerDocument;
return 'string' == typeof t ? (t = { type: t, target: e }) : t.target || (t.target = e), (t = Me(t)), n.dispatcher && n.dispatcher.call(e, t, i), r && !t.isPropagationStopped() && !0 === t.bubbles ? je.call(null, r, t, i) : !r && !t.defaultPrevented && t.target && t.target[t.type] && (De.has(t.target) || De.set(t.target, {}), (r = De.get(t.target)), t.target[t.type] && ((r.disabled = !0), 'function' == typeof t.target[t.type] && t.target[t.type](), (r.disabled = !1))), !t.defaultPrevented;
}
function He(e, t, i) {
if (Array.isArray(t)) return Re(He, e, t, i);
function n() {
Fe(e, t, n), i.apply(this, arguments);
}
(n.guid = i.guid = i.guid || Pe++), Be(e, t, n);
}
function qe(e, t, i) {
function n() {
Fe(e, t, n), i.apply(this, arguments);
}
(n.guid = i.guid = i.guid || Pe++), Be(e, t, n);
}
function Ve(e, t, i) {
return t.guid || (t.guid = Pe++), ((e = t.bind(e)).guid = i ? i + '_' + t.guid : t.guid), e;
}
function We(t, i) {
var n = window.performance.now();
return function () {
var e = window.performance.now();
i <= e - n && (t.apply(void 0, arguments), (n = e));
};
}
function ze(n, r, a, s) {
var o;
function e() {
var e = this,
t = arguments,
i = function () {
(i = o = null), a || n.apply(e, t);
};
!o && a && n.apply(e, t), s.clearTimeout(o), (o = s.setTimeout(i, r));
}
return (
void 0 === s && (s = window),
(e.cancel = function () {
s.clearTimeout(o), (o = null);
}),
e
);
}
function Ge() {}
var Xe,
Ke = Object.freeze({ __proto__: null, fixEvent: Me, on: Be, off: Fe, trigger: je, one: He, any: qe });
(Ge.prototype.allowedEvents_ = {}),
(Ge.prototype.addEventListener = Ge.prototype.on =
function (e, t) {
var i = this.addEventListener;
(this.addEventListener = function () {}), Be(this, e, t), (this.addEventListener = i);
}),
(Ge.prototype.removeEventListener = Ge.prototype.off =
function (e, t) {
Fe(this, e, t);
}),
(Ge.prototype.one = function (e, t) {
var i = this.addEventListener;
(this.addEventListener = function () {}), He(this, e, t), (this.addEventListener = i);
}),
(Ge.prototype.any = function (e, t) {
var i = this.addEventListener;
(this.addEventListener = function () {}), qe(this, e, t), (this.addEventListener = i);
}),
(Ge.prototype.dispatchEvent = Ge.prototype.trigger =
function (e) {
var t = e.type || e;
(e = Me((e = 'string' == typeof e ? { type: t } : e))), this.allowedEvents_[t] && this['on' + t] && this['on' + t](e), je(this, e);
}),
(Ge.prototype.queueTrigger = function (e) {
var t = this;
Xe = Xe || new Map();
var i = e.type || e,
n = Xe.get(this);
n || ((n = new Map()), Xe.set(this, n));
var r = n.get(i);
n.delete(i), window.clearTimeout(r);
r = window.setTimeout(function () {
0 === n.size && ((n = null), Xe.delete(t)), t.trigger(e);
}, 0);
n.set(i, r);
});
function Ye(e) {
return 'function' == typeof e.name ? e.name() : 'string' == typeof e.name ? e.name : e.name_ || (e.constructor && e.constructor.name ? e.constructor.name : typeof e);
}
function Qe(e) {
return ('string' == typeof e && /\S/.test(e)) || (Array.isArray(e) && !!e.length);
}
function $e(e, t, i) {
if (!e || (!e.nodeName && !it(e))) throw new Error('Invalid target for ' + Ye(t) + '#' + i + '; must be a DOM node or evented object.');
}
function Je(e, t, i) {
if (!Qe(e)) throw new Error('Invalid event type for ' + Ye(t) + '#' + i + '; must be a non-empty string or array.');
}
function Ze(e, t, i) {
if ('function' != typeof e) throw new Error('Invalid listener for ' + Ye(t) + '#' + i + '; must be a function.');
}
function et(e, t, i) {
var n,
r,
a = t.length < 3 || t[0] === e || t[0] === e.eventBusEl_,
t = a ? ((n = e.eventBusEl_), 3 <= t.length && t.shift(), (r = t[0]), t[1]) : ((n = t[0]), (r = t[1]), t[2]);
return $e(n, e, i), Je(r, e, i), Ze(t, e, i), { isTargetingSelf: a, target: n, type: r, listener: (t = Ve(e, t)) };
}
function tt(e, t, i, n) {
$e(e, e, t), e.nodeName ? Ke[t](e, i, n) : e[t](i, n);
}
var it = function (t) {
return (
t instanceof Ge ||
(!!t.eventBusEl_ &&
['on', 'one', 'off', 'trigger'].every(function (e) {
return 'function' == typeof t[e];
}))
);
},
nt = {
on: function () {
for (var e = this, t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n];
var r,
a = et(this, i, 'on'),
s = a.isTargetingSelf,
o = a.target,
u = a.type,
l = a.listener;
tt(o, 'on', u, l),
s ||
(((r = function () {
return e.off(o, u, l);
}).guid = l.guid),
((s = function () {
return e.off('dispose', r);
}).guid = l.guid),
tt(this, 'on', 'dispose', r),
tt(o, 'on', 'dispose', s));
},
one: function () {
for (var r = this, e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
var n = et(this, t, 'one'),
a = n.isTargetingSelf,
s = n.target,
o = n.type,
u = n.listener;
a
? tt(s, 'one', o, u)
: (((a = function e() {
r.off(s, o, e);
for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n];
u.apply(null, i);
}).guid = u.guid),
tt(s, 'one', o, a));
},
any: function () {
for (var r = this, e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
var n = et(this, t, 'any'),
a = n.isTargetingSelf,
s = n.target,
o = n.type,
u = n.listener;
a
? tt(s, 'any', o, u)
: (((a = function e() {
r.off(s, o, e);
for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n];
u.apply(null, i);
}).guid = u.guid),
tt(s, 'any', o, a));
},
off: function (e, t, i) {
!e || Qe(e) ? Fe(this.eventBusEl_, e, t) : ((t = t), $e((e = e), this, 'off'), Je(t, this, 'off'), Ze(i, this, 'off'), (i = Ve(this, i)), this.off('dispose', i), e.nodeName ? (Fe(e, t, i), Fe(e, 'dispose', i)) : it(e) && (e.off(t, i), e.off('dispose', i)));
},
trigger: function (e, t) {
$e(this.eventBusEl_, this, 'trigger');
var i = e && 'string' != typeof e ? e.type : e;
if (!Qe(i)) {
i = 'Invalid event type for ' + Ye(this) + '#trigger; must be a non-empty string or object with a type key that has a non-empty value.';
if (!e) throw new Error(i);
(this.log || h).error(i);
}
return je(this.eventBusEl_, e, t);
},
};
function rt(e, t) {
t = (t = void 0 === t ? {} : t).eventBusKey;
if (t) {
if (!e[t].nodeName) throw new Error('The eventBusKey "' + t + '" does not refer to an element.');
e.eventBusEl_ = e[t];
} else e.eventBusEl_ = $('span', { className: 'vjs-event-bus' });
return (
b(e, nt),
e.eventedCallbacks &&
e.eventedCallbacks.forEach(function (e) {
e();
}),
e.on('dispose', function () {
e.off(),
[e, e.el_, e.eventBusEl_].forEach(function (e) {
e && De.has(e) && De.delete(e);
}),
window.setTimeout(function () {
e.eventBusEl_ = null;
}, 0);
}),
e
);
}
var at = {
state: {},
setState: function (e) {
var i,
n = this;
return (
_((e = 'function' == typeof e ? e() : e), function (e, t) {
n.state[t] !== e && ((i = i || {})[t] = { from: n.state[t], to: e }), (n.state[t] = e);
}),
i && it(this) && this.trigger({ changes: i, type: 'statechanged' }),
i
);
},
};
function st(e, t) {
return b(e, at), (e.state = b({}, e.state, t)), 'function' == typeof e.handleStateChanged && it(e) && e.on('statechanged', e.handleStateChanged), e;
}
function ot(e) {
return 'string' != typeof e
? e
: e.replace(/./, function (e) {
return e.toLowerCase();
});
}
function ut(e) {
return 'string' != typeof e
? e
: e.replace(/./, function (e) {
return e.toUpperCase();
});
}
function lt() {
for (var i = {}, e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n];
return (
t.forEach(function (e) {
e &&
_(e, function (e, t) {
w(e) ? (w(i[t]) || (i[t] = {}), (i[t] = lt(i[t], e))) : (i[t] = e);
});
}),
i
);
}
var ct =
window.Map ||
(function () {
function e() {
this.map_ = {};
}
var t = e.prototype;
return (
(t.has = function (e) {
return e in this.map_;
}),
(t.delete = function (e) {
var t = this.has(e);
return delete this.map_[e], t;
}),
(t.set = function (e, t) {
return (this.map_[e] = t), this;
}),
(t.forEach = function (e, t) {
for (var i in this.map_) e.call(t, this.map_[i], i, this);
}),
e
);
})(),
dt =
window.Set ||
(function () {
function e() {
this.set_ = {};
}
var t = e.prototype;
return (
(t.has = function (e) {
return e in this.set_;
}),
(t.delete = function (e) {
var t = this.has(e);
return delete this.set_[e], t;
}),
(t.add = function (e) {
return (this.set_[e] = 1), this;
}),
(t.forEach = function (e, t) {
for (var i in this.set_) e.call(t, i, i, this);
}),
e
);
})(),
ht = (function () {
function s(e, t, i) {
!e && this.play ? (this.player_ = e = this) : (this.player_ = e), (this.isDisposed_ = !1), (this.parentComponent_ = null), (this.options_ = lt({}, this.options_)), (t = this.options_ = lt(this.options_, t)), (this.id_ = t.id || (t.el && t.el.id)), this.id_ || ((e = (e && e.id && e.id()) || 'no_player'), (this.id_ = e + '_component_' + Pe++)), (this.name_ = t.name || null), t.el ? (this.el_ = t.el) : !1 !== t.createEl && (this.el_ = this.createEl()), !1 !== t.evented && (rt(this, { eventBusKey: this.el_ ? 'el_' : null }), (this.handleLanguagechange = this.handleLanguagechange.bind(this)), this.on(this.player_, 'languagechange', this.handleLanguagechange)), st(this, this.constructor.defaultState), (this.children_ = []), (this.childIndex_ = {}), (this.childNameIndex_ = {}), (this.setTimeoutIds_ = new dt()), (this.setIntervalIds_ = new dt()), (this.rafIds_ = new dt()), (this.namedRafs_ = new ct()), (this.clearingTimersOnDispose_ = !1) !== t.initChildren && this.initChildren(), this.ready(i), !1 !== t.reportTouchActivity && this.enableTouchActivity();
}
var e = s.prototype;
return (
(e.dispose = function () {
if (!this.isDisposed_) {
if ((this.readyQueue_ && (this.readyQueue_.length = 0), this.trigger({ type: 'dispose', bubbles: !1 }), (this.isDisposed_ = !0), this.children_)) for (var e = this.children_.length - 1; 0 <= e; e--) this.children_[e].dispose && this.children_[e].dispose();
(this.children_ = null), (this.childIndex_ = null), (this.childNameIndex_ = null), (this.parentComponent_ = null), this.el_ && (this.el_.parentNode && this.el_.parentNode.removeChild(this.el_), (this.el_ = null)), (this.player_ = null);
}
}),
(e.isDisposed = function () {
return Boolean(this.isDisposed_);
}),
(e.player = function () {
return this.player_;
}),
(e.options = function (e) {
return e && (this.options_ = lt(this.options_, e)), this.options_;
}),
(e.el = function () {
return this.el_;
}),
(e.createEl = function (e, t, i) {
return $(e, t, i);
}),
(e.localize = function (e, i, t) {
void 0 === t && (t = e);
var n = this.player_.language && this.player_.language(),
r = this.player_.languages && this.player_.languages(),
a = r && r[n],
n = n && n.split('-')[0],
n = r && r[n],
t = t;
return (
a && a[e] ? (t = a[e]) : n && n[e] && (t = n[e]),
(t = i
? t.replace(/\{(\d+)\}/g, function (e, t) {
t = i[t - 1];
return 'undefined' == typeof t ? e : t;
})
: t)
);
}),
(e.handleLanguagechange = function () {}),
(e.contentEl = function () {
return this.contentEl_ || this.el_;
}),
(e.id = function () {
return this.id_;
}),
(e.name = function () {
return this.name_;
}),
(e.children = function () {
return this.children_;
}),
(e.getChildById = function (e) {
return this.childIndex_[e];
}),
(e.getChild = function (e) {
if (e) return this.childNameIndex_[e];
}),
(e.getDescendant = function () {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
for (
var t = t.reduce(function (e, t) {
return e.concat(t);
}, []),
n = this,
r = 0;
r < t.length;
r++
)
if (!(n = n.getChild(t[r])) || !n.getChild) return;
return n;
}),
(e.addChild = function (e, t, i) {
if ((void 0 === t && (t = {}), void 0 === i && (i = this.children_.length), 'string' == typeof e)) {
var n = ut(e),
r = t.componentClass || n;
t.name = n;
var a = s.getComponent(r);
if (!a) throw new Error('Component ' + r + ' does not exist');
if ('function' != typeof a) return null;
a = new a(this.player_ || this, t);
} else a = e;
return a.parentComponent_ && a.parentComponent_.removeChild(a), this.children_.splice(i, 0, a), (a.parentComponent_ = this), 'function' == typeof a.id && (this.childIndex_[a.id()] = a), (n = n || (a.name && ut(a.name()))) && ((this.childNameIndex_[n] = a), (this.childNameIndex_[ot(n)] = a)), 'function' == typeof a.el && a.el() && ((n = null), this.children_[i + 1] && (this.children_[i + 1].el_ ? (n = this.children_[i + 1].el_) : K(this.children_[i + 1]) && (n = this.children_[i + 1])), this.contentEl().insertBefore(a.el(), n)), a;
}),
(e.removeChild = function (e) {
if ((e = 'string' == typeof e ? this.getChild(e) : e) && this.children_) {
for (var t, i = !1, n = this.children_.length - 1; 0 <= n; n--)
if (this.children_[n] === e) {
(i = !0), this.children_.splice(n, 1);
break;
}
i && ((e.parentComponent_ = null), (this.childIndex_[e.id()] = null), (this.childNameIndex_[ut(e.name())] = null), (this.childNameIndex_[ot(e.name())] = null), (t = e.el()) && t.parentNode === this.contentEl() && this.contentEl().removeChild(e.el()));
}
}),
(e.initChildren = function () {
var i,
t,
e,
n = this,
r = this.options_.children;
r &&
((i = this.options_),
(t = s.getComponent('Tech')),
(e = Array.isArray(r) ? r : Object.keys(r))
.concat(
Object.keys(this.options_).filter(function (t) {
return !e.some(function (e) {
return 'string' == typeof e ? t === e : t === e.name;
});
})
)
.map(function (e) {
var t,
e = 'string' == typeof e ? r[(t = e)] || n.options_[t] || {} : ((t = e.name), e);
return { name: t, opts: e };
})
.filter(function (e) {
e = s.getComponent(e.opts.componentClass || ut(e.name));
return e && !t.isTech(e);
})
.forEach(function (e) {
var t = e.name,
e = e.opts;
!1 !== (e = void 0 !== i[t] ? i[t] : e) && (((e = !0 === e ? {} : e).playerOptions = n.options_.playerOptions), (e = n.addChild(t, e)) && (n[t] = e));
}));
}),
(e.buildCSSClass = function () {
return '';
}),
(e.ready = function (e, t) {
if ((void 0 === t && (t = !1), e)) return this.isReady_ ? void (t ? e.call(this) : this.setTimeout(e, 1)) : ((this.readyQueue_ = this.readyQueue_ || []), void this.readyQueue_.push(e));
}),
(e.triggerReady = function () {
(this.isReady_ = !0),
this.setTimeout(function () {
var e = this.readyQueue_;
(this.readyQueue_ = []),
e &&
0 < e.length &&
e.forEach(function (e) {
e.call(this);
}, this),
this.trigger('ready');
}, 1);
}),
(e.$ = function (e, t) {
return Te(e, t || this.contentEl());
}),
(e.$$ = function (e, t) {
return we(e, t || this.contentEl());
}),
(e.hasClass = function (e) {
return ee(this.el_, e);
}),
(e.addClass = function (e) {
te(this.el_, e);
}),
(e.removeClass = function (e) {
ie(this.el_, e);
}),
(e.toggleClass = function (e, t) {
ne(this.el_, e, t);
}),
(e.show = function () {
this.removeClass('vjs-hidden');
}),
(e.hide = function () {
this.addClass('vjs-hidden');
}),
(e.lockShowing = function () {
this.addClass('vjs-lock-showing');
}),
(e.unlockShowing = function () {
this.removeClass('vjs-lock-showing');
}),
(e.getAttribute = function (e) {
return se(this.el_, e);
}),
(e.setAttribute = function (e, t) {
oe(this.el_, e, t);
}),
(e.removeAttribute = function (e) {
ue(this.el_, e);
}),
(e.width = function (e, t) {
return this.dimension('width', e, t);
}),
(e.height = function (e, t) {
return this.dimension('height', e, t);
}),
(e.dimensions = function (e, t) {
this.width(e, !0), this.height(t);
}),
(e.dimension = function (e, t, i) {
if (void 0 !== t) return -1 !== ('' + (t = null === t || t != t ? 0 : t)).indexOf('%') || -1 !== ('' + t).indexOf('px') ? (this.el_.style[e] = t) : (this.el_.style[e] = 'auto' === t ? '' : t + 'px'), void (i || this.trigger('componentresize'));
if (!this.el_) return 0;
(t = this.el_.style[e]), (i = t.indexOf('px'));
return -1 !== i ? parseInt(t.slice(0, i), 10) : parseInt(this.el_['offset' + ut(e)], 10);
}),
(e.currentDimension = function (e) {
var t = 0;
if ('width' !== e && 'height' !== e) throw new Error('currentDimension only accepts width or height value');
return (t = S(this.el_, e)), (0 !== (t = parseFloat(t)) && !isNaN(t)) || ((e = 'offset' + ut(e)), (t = this.el_[e])), t;
}),
(e.currentDimensions = function () {
return { width: this.currentDimension('width'), height: this.currentDimension('height') };
}),
(e.currentWidth = function () {
return this.currentDimension('width');
}),
(e.currentHeight = function () {
return this.currentDimension('height');
}),
(e.focus = function () {
this.el_.focus();
}),
(e.blur = function () {
this.el_.blur();
}),
(e.handleKeyDown = function (e) {
this.player_ && (e.stopPropagation(), this.player_.handleKeyDown(e));
}),
(e.handleKeyPress = function (e) {
this.handleKeyDown(e);
}),
(e.emitTapEvents = function () {
var i,
t = 0,
n = null;
this.on('touchstart', function (e) {
1 === e.touches.length && ((n = { pageX: e.touches[0].pageX, pageY: e.touches[0].pageY }), (t = window.performance.now()), (i = !0));
}),
this.on('touchmove', function (e) {
var t;
1 < e.touches.length ? (i = !1) : n && ((t = e.touches[0].pageX - n.pageX), (e = e.touches[0].pageY - n.pageY), 10 < Math.sqrt(t * t + e * e) && (i = !1));
});
function e() {
i = !1;
}
this.on('touchleave', e),
this.on('touchcancel', e),
this.on('touchend', function (e) {
!(n = null) === i && window.performance.now() - t < 200 && (e.preventDefault(), this.trigger('tap'));
});
}),
(e.enableTouchActivity = function () {
var t, i, e;
this.player() &&
this.player().reportUserActivity &&
((t = Ve(this.player(), this.player().reportUserActivity)),
this.on('touchstart', function () {
t(), this.clearInterval(i), (i = this.setInterval(t, 250));
}),
(e = function (e) {
t(), this.clearInterval(i);
}),
this.on('touchmove', t),
this.on('touchend', e),
this.on('touchcancel', e));
}),
(e.setTimeout = function (e, t) {
var i,
n = this;
return (
(e = Ve(this, e)),
this.clearTimersOnDispose_(),
(i = window.setTimeout(function () {
n.setTimeoutIds_.has(i) && n.setTimeoutIds_.delete(i), e();
}, t)),
this.setTimeoutIds_.add(i),
i
);
}),
(e.clearTimeout = function (e) {
return this.setTimeoutIds_.has(e) && (this.setTimeoutIds_.delete(e), window.clearTimeout(e)), e;
}),
(e.setInterval = function (e, t) {
(e = Ve(this, e)), this.clearTimersOnDispose_();
t = window.setInterval(e, t);
return this.setIntervalIds_.add(t), t;
}),
(e.clearInterval = function (e) {
return this.setIntervalIds_.has(e) && (this.setIntervalIds_.delete(e), window.clearInterval(e)), e;
}),
(e.requestAnimationFrame = function (e) {
var t,
i = this;
return this.supportsRaf_
? (this.clearTimersOnDispose_(),
(e = Ve(this, e)),
(t = window.requestAnimationFrame(function () {
i.rafIds_.has(t) && i.rafIds_.delete(t), e();
})),
this.rafIds_.add(t),
t)
: this.setTimeout(e, 1e3 / 60);
}),
(e.requestNamedAnimationFrame = function (e, t) {
var i = this;
if (!this.namedRafs_.has(e)) {
this.clearTimersOnDispose_(), (t = Ve(this, t));
var n = this.requestAnimationFrame(function () {
t(), i.namedRafs_.has(e) && i.namedRafs_.delete(e);
});
return this.namedRafs_.set(e, n), e;
}
}),
(e.cancelNamedAnimationFrame = function (e) {
this.namedRafs_.has(e) && (this.cancelAnimationFrame(this.namedRafs_.get(e)), this.namedRafs_.delete(e));
}),
(e.cancelAnimationFrame = function (e) {
return this.supportsRaf_ ? (this.rafIds_.has(e) && (this.rafIds_.delete(e), window.cancelAnimationFrame(e)), e) : this.clearTimeout(e);
}),
(e.clearTimersOnDispose_ = function () {
var n = this;
this.clearingTimersOnDispose_ ||
((this.clearingTimersOnDispose_ = !0),
this.one('dispose', function () {
[
['namedRafs_', 'cancelNamedAnimationFrame'],
['rafIds_', 'cancelAnimationFrame'],
['setTimeoutIds_', 'clearTimeout'],
['setIntervalIds_', 'clearInterval'],
].forEach(function (e) {
var t = e[0],
i = e[1];
n[t].forEach(function (e, t) {
return n[i](t);
});
}),
(n.clearingTimersOnDispose_ = !1);
}));
}),
(s.registerComponent = function (e, t) {
if ('string' != typeof e || !e) throw new Error('Illegal component name, "' + e + '"; must be a non-empty string.');
var i = s.getComponent('Tech'),
n = i && i.isTech(t),
i = s === t || s.prototype.isPrototypeOf(t.prototype);
if (n || !i) {
var r = n ? 'techs must be registered using Tech.registerTech()' : 'must be a Component subclass';
throw new Error('Illegal component, "' + e + '"; ' + r + '.');
}
(e = ut(e)), s.components_ || (s.components_ = {});
r = s.getComponent('Player');
if ('Player' === e && r && r.players) {
var a = r.players,
r = Object.keys(a);
if (
a &&
0 < r.length &&
r
.map(function (e) {
return a[e];
})
.every(Boolean)
)
throw new Error('Can not register Player component after player has been created.');
}
return (s.components_[e] = t), (s.components_[ot(e)] = t);
}),
(s.getComponent = function (e) {
if (e && s.components_) return s.components_[e];
}),
s
);
})();
(ht.prototype.supportsRaf_ = 'function' == typeof window.requestAnimationFrame && 'function' == typeof window.cancelAnimationFrame), ht.registerComponent('Component', ht);
var pt = function (e) {
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return e;
};
var ft = function (e, t) {
(e.prototype = Object.create(t.prototype)), ((e.prototype.constructor = e).__proto__ = t);
};
function mt(e, t, i, n) {
return (
(function (e, t, i) {
if ('number' != typeof t || t < 0 || i < t) throw new Error("Failed to execute '" + e + "' on 'TimeRanges': The index provided (" + t + ') is non-numeric or out of bounds (0-' + i + ').');
})(e, n, i.length - 1),
i[n][t]
);
}
function gt(e) {
var t =
void 0 === e || 0 === e.length
? {
length: 0,
start: function () {
throw new Error('This TimeRanges object is empty');
},
end: function () {
throw new Error('This TimeRanges object is empty');
},
}
: { length: e.length, start: mt.bind(null, 'start', 0, e), end: mt.bind(null, 'end', 1, e) };
return (
window.Symbol &&
window.Symbol.iterator &&
(t[window.Symbol.iterator] = function () {
return (e || []).values();
}),
t
);
}
function yt(e, t) {
return Array.isArray(e) ? gt(e) : void 0 === e || void 0 === t ? gt() : gt([[e, t]]);
}
function vt(e, t) {
var i,
n,
r = 0;
if (!t) return 0;
(e && e.length) || (e = yt(0, 0));
for (var a = 0; a < e.length; a++) (i = e.start(a)), (r += (n = t < (n = e.end(a)) ? t : n) - i);
return r / t;
}
function _t(e) {
if (e instanceof _t) return e;
'number' == typeof e ? (this.code = e) : 'string' == typeof e ? (this.message = e) : T(e) && ('number' == typeof e.code && (this.code = e.code), b(this, e)), this.message || (this.message = _t.defaultMessages[this.code] || '');
}
(_t.prototype.code = 0), (_t.prototype.message = ''), (_t.prototype.status = null), (_t.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED']), (_t.defaultMessages = { 1: 'You aborted the media playback', 2: 'A network error caused the media download to fail part-way.', 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.', 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.', 5: 'The media is encrypted and we do not have the keys to decrypt it.' });
for (var bt = 0; bt < _t.errorTypes.length; bt++) (_t[_t.errorTypes[bt]] = bt), (_t.prototype[_t.errorTypes[bt]] = bt);
var Tt = function (e, t) {
var i,
n = null;
try {
i = JSON.parse(e, t);
} catch (e) {
n = e;
}
return [n, i];
};
function wt(e) {
return null != e && 'function' == typeof e.then;
}
function St(e) {
wt(e) && e.then(null, function (e) {});
}
function Et(n) {
return ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(
function (e, t, i) {
return n[t] && (e[t] = n[t]), e;
},
{
cues:
n.cues &&
Array.prototype.map.call(n.cues, function (e) {
return { startTime: e.startTime, endTime: e.endTime, text: e.text, id: e.id };
}),
}
);
}
var kt = function (e) {
var t = e.$$('track'),
i = Array.prototype.map.call(t, function (e) {
return e.track;
});
return Array.prototype.map
.call(t, function (e) {
var t = Et(e.track);
return e.src && (t.src = e.src), t;
})
.concat(
Array.prototype.filter
.call(e.textTracks(), function (e) {
return -1 === i.indexOf(e);
})
.map(Et)
);
},
Ct = function (e, i) {
return (
e.forEach(function (e) {
var t = i.addRemoteTextTrack(e).track;
!e.src &&
e.cues &&
e.cues.forEach(function (e) {
return t.addCue(e);
});
}),
i.textTracks()
);
},
It = m(function (e, t) {
function i(e) {
if ((!e || 'object' != typeof e || ((t = e.which || e.keyCode || e.charCode) && (e = t)), 'number' == typeof e)) return o[e];
var t = String(e),
e = n[t.toLowerCase()];
return e || ((e = r[t.toLowerCase()]) ? e : 1 === t.length ? t.charCodeAt(0) : void 0);
}
i.isEventKey = function (e, t) {
if (e && 'object' == typeof e) {
var i = e.which || e.keyCode || e.charCode;
if (null == i) return !1;
if ('string' == typeof t) {
e = n[t.toLowerCase()];
if (e) return e === i;
if ((e = r[t.toLowerCase()])) return e === i;
} else if ('number' == typeof t) return t === i;
return !1;
}
};
for (var n = ((t = e.exports = i).code = t.codes = { backspace: 8, tab: 9, enter: 13, shift: 16, ctrl: 17, alt: 18, 'pause/break': 19, 'caps lock': 20, esc: 27, space: 32, 'page up': 33, 'page down': 34, end: 35, home: 36, left: 37, up: 38, right: 39, down: 40, insert: 45, delete: 46, command: 91, 'left command': 91, 'right command': 93, 'numpad *': 106, 'numpad +': 107, 'numpad -': 109, 'numpad .': 110, 'numpad /': 111, 'num lock': 144, 'scroll lock': 145, 'my computer': 182, 'my calculator': 183, ';': 186, '=': 187, ',': 188, '-': 189, '.': 190, '/': 191, '`': 192, '[': 219, '\\': 220, ']': 221, "'": 222 }), r = (t.aliases = { windows: 91, '⇧': 16, '⌥': 18, '⌃': 17, '⌘': 91, ctl: 17, control: 17, option: 18, pause: 19, break: 19, caps: 20, return: 13, escape: 27, spc: 32, spacebar: 32, pgup: 33, pgdn: 34, ins: 45, del: 46, cmd: 91 }), a = 97; a < 123; a++) n[String.fromCharCode(a)] = a - 32;
for (var a = 48; a < 58; a++) n[a - 48] = a;
for (a = 1; a < 13; a++) n['f' + a] = a + 111;
for (a = 0; a < 10; a++) n['numpad ' + a] = a + 96;
var s,
o = (t.names = t.title = {});
for (a in n) o[n[a]] = a;
for (s in r) n[s] = r[s];
});
It.code, It.codes, It.aliases, It.names, It.title;
var xt = 'vjs-modal-dialog',
At = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
(i.handleKeyDown_ = function (e) {
return i.handleKeyDown(e);
}),
(i.close_ = function (e) {
return i.close(e);
}),
(i.opened_ = i.hasBeenOpened_ = i.hasBeenFilled_ = !1),
i.closeable(!i.options_.uncloseable),
i.content(i.options_.content),
(i.contentEl_ = $('div', { className: xt + '-content' }, { role: 'document' })),
(i.descEl_ = $('p', { className: xt + '-description vjs-control-text', id: i.el().getAttribute('aria-describedby') })),
J(i.descEl_, i.description()),
i.el_.appendChild(i.descEl_),
i.el_.appendChild(i.contentEl_),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function () {
return n.prototype.createEl.call(this, 'div', { className: this.buildCSSClass(), tabIndex: -1 }, { 'aria-describedby': this.id() + '_description', 'aria-hidden': 'true', 'aria-label': this.label(), role: 'dialog' });
}),
(t.dispose = function () {
(this.contentEl_ = null), (this.descEl_ = null), (this.previouslyActiveEl_ = null), n.prototype.dispose.call(this);
}),
(t.buildCSSClass = function () {
return xt + ' vjs-hidden ' + n.prototype.buildCSSClass.call(this);
}),
(t.label = function () {
return this.localize(this.options_.label || 'Modal Window');
}),
(t.description = function () {
var e = this.options_.description || this.localize('This is a modal window.');
return this.closeable() && (e += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.')), e;
}),
(t.open = function () {
var e;
this.opened_ || ((e = this.player()), this.trigger('beforemodalopen'), (this.opened_ = !0), (!this.options_.fillAlways && (this.hasBeenOpened_ || this.hasBeenFilled_)) || this.fill(), (this.wasPlaying_ = !e.paused()), this.options_.pauseOnOpen && this.wasPlaying_ && e.pause(), this.on('keydown', this.handleKeyDown_), (this.hadControls_ = e.controls()), e.controls(!1), this.show(), this.conditionalFocus_(), this.el().setAttribute('aria-hidden', 'false'), this.trigger('modalopen'), (this.hasBeenOpened_ = !0));
}),
(t.opened = function (e) {
return 'boolean' == typeof e && this[e ? 'open' : 'close'](), this.opened_;
}),
(t.close = function () {
var e;
this.opened_ && ((e = this.player()), this.trigger('beforemodalclose'), (this.opened_ = !1), this.wasPlaying_ && this.options_.pauseOnOpen && e.play(), this.off('keydown', this.handleKeyDown_), this.hadControls_ && e.controls(!0), this.hide(), this.el().setAttribute('aria-hidden', 'true'), this.trigger('modalclose'), this.conditionalBlur_(), this.options_.temporary && this.dispose());
}),
(t.closeable = function (e) {
var t, i;
return 'boolean' == typeof e && ((t = this.closeable_ = !!e), (i = this.getChild('closeButton')), t && !i && ((e = this.contentEl_), (this.contentEl_ = this.el_), (i = this.addChild('closeButton', { controlText: 'Close Modal Dialog' })), (this.contentEl_ = e), this.on(i, 'close', this.close_)), !t && i && (this.off(i, 'close', this.close_), this.removeChild(i), i.dispose())), this.closeable_;
}),
(t.fill = function () {
this.fillWith(this.content());
}),
(t.fillWith = function (e) {
var t = this.contentEl(),
i = t.parentNode,
n = t.nextSibling;
this.trigger('beforemodalfill'), (this.hasBeenFilled_ = !0), i.removeChild(t), this.empty(), ve(t, e), this.trigger('modalfill'), n ? i.insertBefore(t, n) : i.appendChild(t);
t = this.getChild('closeButton');
t && i.appendChild(t.el_);
}),
(t.empty = function () {
this.trigger('beforemodalempty'), me(this.contentEl()), this.trigger('modalempty');
}),
(t.content = function (e) {
return 'undefined' != typeof e && (this.content_ = e), this.content_;
}),
(t.conditionalFocus_ = function () {
var e = document.activeElement,
t = this.player_.el_;
(this.previouslyActiveEl_ = null), (!t.contains(e) && t !== e) || ((this.previouslyActiveEl_ = e), this.focus());
}),
(t.conditionalBlur_ = function () {
this.previouslyActiveEl_ && (this.previouslyActiveEl_.focus(), (this.previouslyActiveEl_ = null));
}),
(t.handleKeyDown = function (e) {
if ((e.stopPropagation(), It.isEventKey(e, 'Escape') && this.closeable())) return e.preventDefault(), void this.close();
if (It.isEventKey(e, 'Tab')) {
for (var t, i = this.focusableEls_(), n = this.el_.querySelector(':focus'), r = 0; r < i.length; r++)
if (n === i[r]) {
t = r;
break;
}
document.activeElement === this.el_ && (t = 0), e.shiftKey && 0 === t ? (i[i.length - 1].focus(), e.preventDefault()) : e.shiftKey || t !== i.length - 1 || (i[0].focus(), e.preventDefault());
}
}),
(t.focusableEls_ = function () {
var e = this.el_.querySelectorAll('*');
return Array.prototype.filter.call(e, function (e) {
return ((e instanceof window.HTMLAnchorElement || e instanceof window.HTMLAreaElement) && e.hasAttribute('href')) || ((e instanceof window.HTMLInputElement || e instanceof window.HTMLSelectElement || e instanceof window.HTMLTextAreaElement || e instanceof window.HTMLButtonElement) && !e.hasAttribute('disabled')) || e instanceof window.HTMLIFrameElement || e instanceof window.HTMLObjectElement || e instanceof window.HTMLEmbedElement || (e.hasAttribute('tabindex') && -1 !== e.getAttribute('tabindex')) || e.hasAttribute('contenteditable');
});
}),
e
);
})(ht);
(At.prototype.options_ = { pauseOnOpen: !0, temporary: !0 }), ht.registerComponent('ModalDialog', At);
var Pt,
Lt = (function (n) {
function e(e) {
var t;
void 0 === e && (e = []),
((t = n.call(this) || this).tracks_ = []),
Object.defineProperty(pt(t), 'length', {
get: function () {
return this.tracks_.length;
},
});
for (var i = 0; i < e.length; i++) t.addTrack(e[i]);
return t;
}
ft(e, n);
var t = e.prototype;
return (
(t.addTrack = function (e) {
var t = this,
i = this.tracks_.length;
'' + i in this ||
Object.defineProperty(this, i, {
get: function () {
return this.tracks_[i];
},
}),
-1 === this.tracks_.indexOf(e) && (this.tracks_.push(e), this.trigger({ track: e, type: 'addtrack', target: this })),
(e.labelchange_ = function () {
t.trigger({ track: e, type: 'labelchange', target: t });
}),
it(e) && e.addEventListener('labelchange', e.labelchange_);
}),
(t.removeTrack = function (e) {
for (var t, i = 0, n = this.length; i < n; i++)
if (this[i] === e) {
(t = this[i]).off && t.off(), this.tracks_.splice(i, 1);
break;
}
t && this.trigger({ track: t, type: 'removetrack', target: this });
}),
(t.getTrackById = function (e) {
for (var t = null, i = 0, n = this.length; i < n; i++) {
var r = this[i];
if (r.id === e) {
t = r;
break;
}
}
return t;
}),
e
);
})(Ge);
for (Pt in ((Lt.prototype.allowedEvents_ = { change: 'change', addtrack: 'addtrack', removetrack: 'removetrack', labelchange: 'labelchange' }), Lt.prototype.allowedEvents_)) Lt.prototype['on' + Pt] = null;
function Dt(e, t) {
for (var i = 0; i < e.length; i++) Object.keys(e[i]).length && t.id !== e[i].id && (e[i].enabled = !1);
}
function Ot(e, t) {
for (var i = 0; i < e.length; i++) Object.keys(e[i]).length && t.id !== e[i].id && (e[i].selected = !1);
}
function Rt(e) {
var t = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'],
i = document.createElement('a');
i.href = e;
for (var n = {}, r = 0; r < t.length; r++) n[t[r]] = i[t[r]];
return 'http:' === n.protocol && (n.host = n.host.replace(/:80$/, '')), 'https:' === n.protocol && (n.host = n.host.replace(/:443$/, '')), n.protocol || (n.protocol = window.location.protocol), n.host || (n.host = window.location.host), n;
}
function Mt(e) {
var t;
return e.match(/^https?:\/\//) || (((t = document.createElement('a')).href = e), (e = t.href)), e;
}
function Nt(e) {
if ('string' == typeof e) {
e = /^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/.exec(e);
if (e) return e.pop().toLowerCase();
}
return '';
}
function Ut(e, t) {
return void 0 === t && (t = window.location), (':' === (e = Rt(e)).protocol ? t : e).protocol + e.host !== t.protocol + t.host;
}
var Bt = (function (n) {
function e(e) {
for (var t, i = (e = void 0 === e ? [] : e).length - 1; 0 <= i; i--)
if (e[i].enabled) {
Dt(e, e[i]);
break;
}
return ((t = n.call(this, e) || this).changing_ = !1), t;
}
ft(e, n);
var t = e.prototype;
return (
(t.addTrack = function (e) {
var t = this;
e.enabled && Dt(this, e),
n.prototype.addTrack.call(this, e),
e.addEventListener &&
((e.enabledChange_ = function () {
t.changing_ || ((t.changing_ = !0), Dt(t, e), (t.changing_ = !1), t.trigger('change'));
}),
e.addEventListener('enabledchange', e.enabledChange_));
}),
(t.removeTrack = function (e) {
n.prototype.removeTrack.call(this, e), e.removeEventListener && e.enabledChange_ && (e.removeEventListener('enabledchange', e.enabledChange_), (e.enabledChange_ = null));
}),
e
);
})(Lt),
Ft = (function (n) {
function e(e) {
for (var t, i = (e = void 0 === e ? [] : e).length - 1; 0 <= i; i--)
if (e[i].selected) {
Ot(e, e[i]);
break;
}
return (
((t = n.call(this, e) || this).changing_ = !1),
Object.defineProperty(pt(t), 'selectedIndex', {
get: function () {
for (var e = 0; e < this.length; e++) if (this[e].selected) return e;
return -1;
},
set: function () {},
}),
t
);
}
ft(e, n);
var t = e.prototype;
return (
(t.addTrack = function (e) {
var t = this;
e.selected && Ot(this, e),
n.prototype.addTrack.call(this, e),
e.addEventListener &&
((e.selectedChange_ = function () {
t.changing_ || ((t.changing_ = !0), Ot(t, e), (t.changing_ = !1), t.trigger('change'));
}),
e.addEventListener('selectedchange', e.selectedChange_));
}),
(t.removeTrack = function (e) {
n.prototype.removeTrack.call(this, e), e.removeEventListener && e.selectedChange_ && (e.removeEventListener('selectedchange', e.selectedChange_), (e.selectedChange_ = null));
}),
e
);
})(Lt),
k = (function (i) {
function e() {
return i.apply(this, arguments) || this;
}
ft(e, i);
var t = e.prototype;
return (
(t.addTrack = function (e) {
var t = this;
i.prototype.addTrack.call(this, e),
this.queueChange_ ||
(this.queueChange_ = function () {
return t.queueTrigger('change');
}),
this.triggerSelectedlanguagechange ||
(this.triggerSelectedlanguagechange_ = function () {
return t.trigger('selectedlanguagechange');
}),
e.addEventListener('modechange', this.queueChange_);
-1 === ['metadata', 'chapters'].indexOf(e.kind) && e.addEventListener('modechange', this.triggerSelectedlanguagechange_);
}),
(t.removeTrack = function (e) {
i.prototype.removeTrack.call(this, e), e.removeEventListener && (this.queueChange_ && e.removeEventListener('modechange', this.queueChange_), this.selectedlanguagechange_ && e.removeEventListener('modechange', this.triggerSelectedlanguagechange_));
}),
e
);
})(Lt),
jt = (function () {
function e(e) {
void 0 === e && (e = []),
(this.trackElements_ = []),
Object.defineProperty(this, 'length', {
get: function () {
return this.trackElements_.length;
},
});
for (var t = 0, i = e.length; t < i; t++) this.addTrackElement_(e[t]);
}
var t = e.prototype;
return (
(t.addTrackElement_ = function (e) {
var t = this.trackElements_.length;
'' + t in this ||
Object.defineProperty(this, t, {
get: function () {
return this.trackElements_[t];
},
}),
-1 === this.trackElements_.indexOf(e) && this.trackElements_.push(e);
}),
(t.getTrackElementByTrack_ = function (e) {
for (var t, i = 0, n = this.trackElements_.length; i < n; i++)
if (e === this.trackElements_[i].track) {
t = this.trackElements_[i];
break;
}
return t;
}),
(t.removeTrackElement_ = function (e) {
for (var t = 0, i = this.trackElements_.length; t < i; t++)
if (e === this.trackElements_[t]) {
this.trackElements_[t].track && 'function' == typeof this.trackElements_[t].track.off && this.trackElements_[t].track.off(), 'function' == typeof this.trackElements_[t].off && this.trackElements_[t].off(), this.trackElements_.splice(t, 1);
break;
}
}),
e
);
})(),
Ht = (function () {
function t(e) {
t.prototype.setCues_.call(this, e),
Object.defineProperty(this, 'length', {
get: function () {
return this.length_;
},
});
}
var e = t.prototype;
return (
(e.setCues_ = function (e) {
var t = this.length || 0,
i = 0,
n = e.length;
(this.cues_ = e), (this.length_ = e.length);
function r(e) {
'' + e in this ||
Object.defineProperty(this, '' + e, {
get: function () {
return this.cues_[e];
},
});
}
if (t < n) for (i = t; i < n; i++) r.call(this, i);
}),
(e.getCueById = function (e) {
for (var t = null, i = 0, n = this.length; i < n; i++) {
var r = this[i];
if (r.id === e) {
t = r;
break;
}
}
return t;
}),
t
);
})(),
qt = { alternative: 'alternative', captions: 'captions', main: 'main', sign: 'sign', subtitles: 'subtitles', commentary: 'commentary' },
Vt = { alternative: 'alternative', descriptions: 'descriptions', main: 'main', 'main-desc': 'main-desc', translation: 'translation', commentary: 'commentary' },
Wt = { subtitles: 'subtitles', captions: 'captions', descriptions: 'descriptions', chapters: 'chapters', metadata: 'metadata' },
zt = { disabled: 'disabled', hidden: 'hidden', showing: 'showing' },
C = (function (a) {
function e(e) {
void 0 === e && (e = {});
var t,
i = a.call(this) || this,
n = { id: e.id || 'vjs_track_' + Pe++, kind: e.kind || '', language: e.language || '' },
r = e.label || '';
for (t in n)
!(function (e) {
Object.defineProperty(pt(i), e, {
get: function () {
return n[e];
},
set: function () {},
});
})(t);
return (
Object.defineProperty(pt(i), 'label', {
get: function () {
return r;
},
set: function (e) {
e !== r && ((r = e), this.trigger('labelchange'));
},
}),
i
);
}
return ft(e, a), e;
})(Ge),
Gt = Object.freeze({ __proto__: null, parseUrl: Rt, getAbsoluteURL: Mt, getFileExtension: Nt, isCrossOrigin: Ut }),
Xt = 'undefined' != typeof window ? window : 'undefined' != typeof f ? f : 'undefined' != typeof self ? self : {},
Kt = Xt,
Yt = function (e) {
if (!e) return !1;
var t = Qt.call(e);
return '[object Function]' === t || ('function' == typeof e && '[object RegExp]' !== t) || ('undefined' != typeof window && (e === window.setTimeout || e === window.alert || e === window.confirm || e === window.prompt));
},
Qt = Object.prototype.toString;
ei.httpHandler = function (n, r) {
return (
void 0 === r && (r = !1),
function (e, t, i) {
if (e) n(e);
else if (400 <= t.statusCode && t.statusCode <= 599) {
e = i;
if (r)
if (Kt.TextDecoder) {
t = (function (e) {
void 0 === e && (e = '');
return e
.toLowerCase()
.split(';')
.reduce(function (e, t) {
var i = t.split('='),
t = i[0],
i = i[1];
return 'charset' === t.trim() ? i.trim() : e;
}, 'utf-8');
})(t.headers && t.headers['content-type']);
try {
e = new TextDecoder(t).decode(i);
} catch (e) {}
} else e = String.fromCharCode.apply(null, new Uint8Array(i));
n({ cause: e });
} else n(null, i);
}
);
};
/**
* @license
* slighly modified parse-headers 2.0.2
* Copyright (c) 2014 David Björklund
* Available under the MIT license
*
*/
var $t = function (e) {
var n = {};
return (
e &&
e
.trim()
.split('\n')
.forEach(function (e) {
var t = e.indexOf(':'),
i = e.slice(0, t).trim().toLowerCase(),
t = e.slice(t + 1).trim();
'undefined' == typeof n[i] ? (n[i] = t) : Array.isArray(n[i]) ? n[i].push(t) : (n[i] = [n[i], t]);
}),
n
);
},
Jt = ei,
I = ei;
function Zt(e, t, i) {
var n = e;
return Yt(t) ? ((i = t), 'string' == typeof e && (n = { uri: e })) : (n = g({}, t, { uri: e })), (n.callback = i), n;
}
function ei(e, t, i) {
return ti((t = Zt(e, t, i)));
}
function ti(n) {
if ('undefined' == typeof n.callback) throw new Error('callback argument missing');
var r = !1,
a = function (e, t, i) {
r || ((r = !0), n.callback(e, t, i));
};
function s() {
var e = void 0,
e =
l.response ||
l.responseText ||
(function (e) {
try {
if ('document' === e.responseType) return e.responseXML;
var t = e.responseXML && 'parsererror' === e.responseXML.documentElement.nodeName;
if ('' === e.responseType && !t) return e.responseXML;
} catch (e) {}
return null;
})(l);
if (m)
try {
e = JSON.parse(e);
} catch (e) {}
return e;
}
function t(e) {
return clearTimeout(u), ((e = !(e instanceof Error) ? new Error('' + (e || 'Unknown XMLHttpRequest Error')) : e).statusCode = 0), a(e, g);
}
function e() {
if (!o) {
clearTimeout(u);
var e = n.useXDR && void 0 === l.status ? 200 : 1223 === l.status ? 204 : l.status,
t = g,
i = null;
return 0 !== e ? ((t = { body: s(), statusCode: e, method: d, headers: {}, url: c, rawRequest: l }), l.getAllResponseHeaders && (t.headers = $t(l.getAllResponseHeaders()))) : (i = new Error('Internal XMLHttpRequest Error')), a(i, t, t.body);
}
}
var i,
o,
u,
l = n.xhr || null,
c = ((l = l || new (n.cors || n.useXDR ? ei.XDomainRequest : ei.XMLHttpRequest)()).url = n.uri || n.url),
d = (l.method = n.method || 'GET'),
h = n.body || n.data,
p = (l.headers = n.headers || {}),
f = !!n.sync,
m = !1,
g = { body: void 0, headers: {}, statusCode: 0, method: d, url: c, rawRequest: l };
if (
('json' in n && !1 !== n.json && ((m = !0), p.accept || p.Accept || (p.Accept = 'application/json'), 'GET' !== d && 'HEAD' !== d && (p['content-type'] || p['Content-Type'] || (p['Content-Type'] = 'application/json'), (h = JSON.stringify(!0 === n.json ? h : n.json)))),
(l.onreadystatechange = function () {
4 === l.readyState && setTimeout(e, 0);
}),
(l.onload = e),
(l.onerror = t),
(l.onprogress = function () {}),
(l.onabort = function () {
o = !0;
}),
(l.ontimeout = t),
l.open(d, c, !f, n.username, n.password),
f || (l.withCredentials = !!n.withCredentials),
!f &&
0 < n.timeout &&
(u = setTimeout(function () {
var e;
o || ((o = !0), l.abort('timeout'), ((e = new Error('XMLHttpRequest timeout')).code = 'ETIMEDOUT'), t(e));
}, n.timeout)),
l.setRequestHeader)
)
for (i in p) p.hasOwnProperty(i) && l.setRequestHeader(i, p[i]);
else if (
n.headers &&
!(function (e) {
for (var t in e) if (e.hasOwnProperty(t)) return;
return 1;
})(n.headers)
)
throw new Error('Headers cannot be set on an XDomainRequest object');
return 'responseType' in n && (l.responseType = n.responseType), 'beforeSend' in n && 'function' == typeof n.beforeSend && n.beforeSend(l), l.send(h || null), l;
}
(ei.XMLHttpRequest = Kt.XMLHttpRequest || function () {}),
(ei.XDomainRequest = 'withCredentials' in new ei.XMLHttpRequest() ? ei.XMLHttpRequest : Kt.XDomainRequest),
(function (e, t) {
for (var i = 0; i < e.length; i++) t(e[i]);
})(['get', 'put', 'post', 'patch', 'head', 'delete'], function (n) {
ei['delete' === n ? 'del' : n] = function (e, t, i) {
return ((t = Zt(e, t, i)).method = n.toUpperCase()), ti(t);
};
}),
(Jt.default = I);
function ii(e, t) {
var i = new window.WebVTT.Parser(window, window.vttjs, window.WebVTT.StringDecoder()),
n = [];
(i.oncue = function (e) {
t.addCue(e);
}),
(i.onparsingerror = function (e) {
n.push(e);
}),
(i.onflush = function () {
t.trigger({ type: 'loadeddata', target: t });
}),
i.parse(e),
0 < n.length &&
(window.console && window.console.groupCollapsed && window.console.groupCollapsed('Text Track parsing errors for ' + t.src),
n.forEach(function (e) {
return h.error(e);
}),
window.console && window.console.groupEnd && window.console.groupEnd()),
i.flush();
}
function ni(e, n) {
var t = { uri: e };
(e = Ut(e)) && (t.cors = e),
(e = 'use-credentials' === n.tech_.crossOrigin()) && (t.withCredentials = e),
Jt(
t,
Ve(this, function (e, t, i) {
return e
? h.error(e, t)
: ((n.loaded_ = !0),
void ('function' != typeof window.WebVTT
? n.tech_ &&
n.tech_.any(['vttjsloaded', 'vttjserror'], function (e) {
return 'vttjserror' !== e.type ? ii(i, n) : void h.error('vttjs failed to load, stopping trying to process ' + n.src);
})
: ii(i, n)));
})
);
}
var ri = (function (u) {
function e(e) {
var t;
if (!(e = void 0 === e ? {} : e).tech) throw new Error('A tech was not provided.');
var e = lt(e, { kind: Wt[e.kind] || 'subtitles', language: e.language || e.srclang || '' }),
i = zt[e.mode] || 'disabled',
n = e.default;
('metadata' !== e.kind && 'chapters' !== e.kind) || (i = 'hidden'), ((t = u.call(this, e) || this).tech_ = e.tech), (t.cues_ = []), (t.activeCues_ = []), (t.preload_ = !1 !== t.tech_.preloadTextTracks);
var r = new Ht(t.cues_),
s = new Ht(t.activeCues_),
o = !1,
a = Ve(pt(t), function () {
this.tech_.isReady_ && !this.tech_.isDisposed() && ((this.activeCues = this.activeCues), o && (this.trigger('cuechange'), (o = !1)));
});
return (
t.tech_.one('dispose', function () {
t.tech_.off('timeupdate', a);
}),
'disabled' !== i && t.tech_.on('timeupdate', a),
Object.defineProperties(pt(t), {
default: {
get: function () {
return n;
},
set: function () {},
},
mode: {
get: function () {
return i;
},
set: function (e) {
zt[e] && i !== e && ((i = e), this.preload_ || 'disabled' === i || 0 !== this.cues.length || ni(this.src, this), this.tech_.off('timeupdate', a), 'disabled' !== i && this.tech_.on('timeupdate', a), this.trigger('modechange'));
},
},
cues: {
get: function () {
return this.loaded_ ? r : null;
},
set: function () {},
},
activeCues: {
get: function () {
if (!this.loaded_) return null;
if (0 === this.cues.length) return s;
for (var e = this.tech_.currentTime(), t = [], i = 0, n = this.cues.length; i < n; i++) {
var r = this.cues[i];
((r.startTime <= e && r.endTime >= e) || (r.startTime === r.endTime && r.startTime <= e && r.startTime + 0.5 >= e)) && t.push(r);
}
if (((o = !1), t.length !== this.activeCues_.length)) o = !0;
else for (var a = 0; a < t.length; a++) -1 === this.activeCues_.indexOf(t[a]) && (o = !0);
return (this.activeCues_ = t), s.setCues_(this.activeCues_), s;
},
set: function () {},
},
}),
e.src ? ((t.src = e.src), t.preload_ || (t.loaded_ = !0), (t.preload_ || ('subtitles' !== e.kind && 'captions' !== e.kind)) && ni(t.src, pt(t))) : (t.loaded_ = !0),
t
);
}
ft(e, u);
var t = e.prototype;
return (
(t.addCue = function (e) {
var t = e;
if (window.vttjs && !(e instanceof window.vttjs.VTTCue)) {
for (var i in ((t = new window.vttjs.VTTCue(e.startTime, e.endTime, e.text)), e)) i in t || (t[i] = e[i]);
(t.id = e.id), (t.originalCue_ = e);
}
for (var n = this.tech_.textTracks(), r = 0; r < n.length; r++) n[r] !== this && n[r].removeCue(t);
this.cues_.push(t), this.cues.setCues_(this.cues_);
}),
(t.removeCue = function (e) {
for (var t = this.cues_.length; t--; ) {
var i = this.cues_[t];
if (i === e || (i.originalCue_ && i.originalCue_ === e)) {
this.cues_.splice(t, 1), this.cues.setCues_(this.cues_);
break;
}
}
}),
e
);
})(C);
ri.prototype.allowedEvents_ = { cuechange: 'cuechange' };
(x = (function (n) {
function e(e) {
var t = lt((e = void 0 === e ? {} : e), { kind: Vt[e.kind] || '' }),
e = n.call(this, t) || this,
i = !1;
return (
Object.defineProperty(pt(e), 'enabled', {
get: function () {
return i;
},
set: function (e) {
'boolean' == typeof e && e !== i && ((i = e), this.trigger('enabledchange'));
},
}),
t.enabled && (e.enabled = t.enabled),
(e.loaded_ = !0),
e
);
}
return ft(e, n), e;
})(C)),
(U = (function (n) {
function e(e) {
var t = lt((e = void 0 === e ? {} : e), { kind: qt[e.kind] || '' }),
e = n.call(this, t) || this,
i = !1;
return (
Object.defineProperty(pt(e), 'selected', {
get: function () {
return i;
},
set: function (e) {
'boolean' == typeof e && e !== i && ((i = e), this.trigger('selectedchange'));
},
}),
t.selected && (e.selected = t.selected),
e
);
}
return ft(e, n), e;
})(C)),
(j = (function (r) {
function e(e) {
var t;
void 0 === e && (e = {});
var i = r.call(this) || this,
n = new ri(e);
return (
(i.kind = n.kind),
(i.src = n.src),
(i.srclang = n.language),
(i.label = n.label),
(i.default = n.default),
Object.defineProperties(pt(i), {
readyState: {
get: function () {
return t;
},
},
track: {
get: function () {
return n;
},
},
}),
(t = 0),
n.addEventListener('loadeddata', function () {
(t = 2), i.trigger({ type: 'load', target: pt(i) });
}),
i
);
}
return ft(e, r), e;
})(Ge));
(j.prototype.allowedEvents_ = { load: 'load' }), (j.NONE = 0), (j.LOADING = 1), (j.LOADED = 2), (j.ERROR = 3);
var ai = { audio: { ListClass: Bt, TrackClass: x, capitalName: 'Audio' }, video: { ListClass: Ft, TrackClass: U, capitalName: 'Video' }, text: { ListClass: k, TrackClass: ri, capitalName: 'Text' } };
Object.keys(ai).forEach(function (e) {
(ai[e].getterName = e + 'Tracks'), (ai[e].privateName = e + 'Tracks_');
});
var si = { remoteText: { ListClass: k, TrackClass: ri, capitalName: 'RemoteText', getterName: 'remoteTextTracks', privateName: 'remoteTextTracks_' }, remoteTextEl: { ListClass: jt, TrackClass: j, capitalName: 'RemoteTextTrackEls', getterName: 'remoteTextTrackEls', privateName: 'remoteTextTrackEls_' } },
oi = g({}, ai, si);
(si.names = Object.keys(si)), (ai.names = Object.keys(ai)), (oi.names = [].concat(si.names).concat(ai.names));
var ui = 'undefined' != typeof f ? f : 'undefined' != typeof window ? window : {},
li = 'undefined' != typeof document ? document : (li = ui['__GLOBAL_DOCUMENT_CACHE@4']) || (ui['__GLOBAL_DOCUMENT_CACHE@4'] = {}),
Xt = li,
ci =
Object.create ||
function (e) {
if (1 !== arguments.length) throw new Error('Object.create shim only accepts one parameter.');
return (di.prototype = e), new di();
};
function di() {}
function hi(e, t) {
(this.name = 'ParsingError'), (this.code = e.code), (this.message = t || e.message);
}
function pi(e) {
function t(e, t, i, n) {
return 3600 * (0 | e) + 60 * (0 | t) + (0 | i) + (0 | n) / 1e3;
}
e = e.match(/^(\d+):(\d{1,2})(:\d{1,2})?\.(\d{3})/);
return e ? (e[3] ? t(e[1], e[2], e[3].replace(':', ''), e[4]) : 59 < e[1] ? t(e[1], e[2], 0, e[4]) : t(0, e[1], e[2], e[4])) : null;
}
function fi() {
this.values = ci(null);
}
function mi(e, t, i, n) {
var r,
a,
s = n ? e.split(n) : [e];
for (r in s) 'string' == typeof s[r] && 2 === (a = s[r].split(i)).length && t(a[0], a[1]);
}
function gi(t, e, s) {
var i = t;
function n() {
var e = pi(t);
if (null === e) throw new hi(hi.Errors.BadTimeStamp, 'Malformed timestamp: ' + i);
return (t = t.replace(/^[^\sa-zA-Z-]+/, '')), e;
}
function r() {
t = t.replace(/^\s+/, '');
}
if ((r(), (e.startTime = n()), r(), '--\x3e' !== t.substr(0, 3))) throw new hi(hi.Errors.BadTimeStamp, "Malformed time stamp (time stamps must be separated by '--\x3e'): " + i);
(t = t.substr(3)),
r(),
(e.endTime = n()),
r(),
(function (e, t) {
var a = new fi();
mi(
e,
function (e, t) {
switch (e) {
case 'region':
for (var i = s.length - 1; 0 <= i; i--)
if (s[i].id === t) {
a.set(e, s[i].region);
break;
}
break;
case 'vertical':
a.alt(e, t, ['rl', 'lr']);
break;
case 'line':
var n = t.split(','),
r = n[0];
a.integer(e, r), a.percent(e, r) && a.set('snapToLines', !1), a.alt(e, r, ['auto']), 2 === n.length && a.alt('lineAlign', n[1], ['start', 'center', 'end']);
break;
case 'position':
(n = t.split(',')), a.percent(e, n[0]), 2 === n.length && a.alt('positionAlign', n[1], ['start', 'center', 'end']);
break;
case 'size':
a.percent(e, t);
break;
case 'align':
a.alt(e, t, ['start', 'center', 'end', 'left', 'right']);
}
},
/:/,
/\s/
),
(t.region = a.get('region', null)),
(t.vertical = a.get('vertical', ''));
try {
t.line = a.get('line', 'auto');
} catch (e) {}
(t.lineAlign = a.get('lineAlign', 'start')), (t.snapToLines = a.get('snapToLines', !0)), (t.size = a.get('size', 100));
try {
t.align = a.get('align', 'center');
} catch (e) {
t.align = a.get('align', 'middle');
}
try {
t.position = a.get('position', 'auto');
} catch (e) {
t.position = a.get('position', { start: 0, left: 0, center: 50, middle: 50, end: 100, right: 100 }, t.align);
}
t.positionAlign = a.get('positionAlign', { start: 'start', left: 'start', center: 'center', middle: 'center', end: 'end', right: 'end' }, t.align);
})(t, e);
}
(((hi.prototype = ci(Error.prototype)).constructor = hi).Errors = { BadSignature: { code: 0, message: 'Malformed WebVTT signature.' }, BadTimeStamp: { code: 1, message: 'Malformed time stamp.' } }),
(fi.prototype = {
set: function (e, t) {
this.get(e) || '' === t || (this.values[e] = t);
},
get: function (e, t, i) {
return i ? (this.has(e) ? this.values[e] : t[i]) : this.has(e) ? this.values[e] : t;
},
has: function (e) {
return e in this.values;
},
alt: function (e, t, i) {
for (var n = 0; n < i.length; ++n)
if (t === i[n]) {
this.set(e, t);
break;
}
},
integer: function (e, t) {
/^-?\d+$/.test(t) && this.set(e, parseInt(t, 10));
},
percent: function (e, t) {
return !!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/) && 0 <= (t = parseFloat(t)) && t <= 100) && (this.set(e, t), !0);
},
});
var yi = Xt.createElement && Xt.createElement('textarea'),
vi = { c: 'span', i: 'i', b: 'b', u: 'u', ruby: 'ruby', rt: 'rt', v: 'span', lang: 'span' },
_i = { white: 'rgba(255,255,255,1)', lime: 'rgba(0,255,0,1)', cyan: 'rgba(0,255,255,1)', red: 'rgba(255,0,0,1)', yellow: 'rgba(255,255,0,1)', magenta: 'rgba(255,0,255,1)', blue: 'rgba(0,0,255,1)', black: 'rgba(0,0,0,1)' },
bi = { v: 'title', lang: 'lang' },
Ti = { rt: 'ruby' };
function wi(e, t) {
for (
var i, n, r, a, s, o, u, l, c, d, h = e.document.createElement('div'), p = h, f = [];
null !==
(i = (function () {
if (!t) return null;
var e = t.match(/^([^<]*)(<[^>]*>?)?/);
return (e = e[1] || e[2]), (t = t.substr(e.length)), e;
})());
)
'<' !== i[0]
? p.appendChild(e.document.createTextNode(((s = i), (yi.innerHTML = s), (s = yi.textContent), (yi.textContent = ''), s)))
: '/' !== i[1]
? (a = pi(i.substr(1, i.length - 2)))
? ((n = e.document.createProcessingInstruction('timestamp', a)), p.appendChild(n))
: (r = i.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/)) &&
((l = r[1]),
(c = r[3]),
(d = void 0),
(d = vi[l]),
(n = d ? ((d = e.document.createElement(d)), (l = bi[l]) && c && (d[l] = c.trim()), d) : null) &&
((o = p),
(Ti[(u = n).localName] && Ti[u.localName] !== o.localName) ||
(r[2] &&
((a = r[2].split('.')).forEach(function (e) {
var t = /^bg_/.test(e),
e = t ? e.slice(3) : e;
_i.hasOwnProperty(e) && ((e = _i[e]), (n.style[t ? 'background-color' : 'color'] = e));
}),
(n.className = a.join(' '))),
f.push(r[1]),
p.appendChild(n),
(p = n))))
: f.length && f[f.length - 1] === i.substr(2).replace('>', '') && (f.pop(), (p = p.parentNode));
return h;
}
var Si = [
[1470, 1470],
[1472, 1472],
[1475, 1475],
[1478, 1478],
[1488, 1514],
[1520, 1524],
[1544, 1544],
[1547, 1547],
[1549, 1549],
[1563, 1563],
[1566, 1610],
[1645, 1647],
[1649, 1749],
[1765, 1766],
[1774, 1775],
[1786, 1805],
[1807, 1808],
[1810, 1839],
[1869, 1957],
[1969, 1969],
[1984, 2026],
[2036, 2037],
[2042, 2042],
[2048, 2069],
[2074, 2074],
[2084, 2084],
[2088, 2088],
[2096, 2110],
[2112, 2136],
[2142, 2142],
[2208, 2208],
[2210, 2220],
[8207, 8207],
[64285, 64285],
[64287, 64296],
[64298, 64310],
[64312, 64316],
[64318, 64318],
[64320, 64321],
[64323, 64324],
[64326, 64449],
[64467, 64829],
[64848, 64911],
[64914, 64967],
[65008, 65020],
[65136, 65140],
[65142, 65276],
[67584, 67589],
[67592, 67592],
[67594, 67637],
[67639, 67640],
[67644, 67644],
[67647, 67669],
[67671, 67679],
[67840, 67867],
[67872, 67897],
[67903, 67903],
[67968, 68023],
[68030, 68031],
[68096, 68096],
[68112, 68115],
[68117, 68119],
[68121, 68147],
[68160, 68167],
[68176, 68184],
[68192, 68223],
[68352, 68405],
[68416, 68437],
[68440, 68466],
[68472, 68479],
[68608, 68680],
[126464, 126467],
[126469, 126495],
[126497, 126498],
[126500, 126500],
[126503, 126503],
[126505, 126514],
[126516, 126519],
[126521, 126521],
[126523, 126523],
[126530, 126530],
[126535, 126535],
[126537, 126537],
[126539, 126539],
[126541, 126543],
[126545, 126546],
[126548, 126548],
[126551, 126551],
[126553, 126553],
[126555, 126555],
[126557, 126557],
[126559, 126559],
[126561, 126562],
[126564, 126564],
[126567, 126570],
[126572, 126578],
[126580, 126583],
[126585, 126588],
[126590, 126590],
[126592, 126601],
[126603, 126619],
[126625, 126627],
[126629, 126633],
[126635, 126651],
[1114109, 1114109],
];
function Ei(e) {
var t = [],
i = '';
if (!e || !e.childNodes) return 'ltr';
function a(e, t) {
for (var i = t.childNodes.length - 1; 0 <= i; i--) e.push(t.childNodes[i]);
}
for (
a(t, e);
(i = (function e(t) {
if (!t || !t.length) return null;
var i = t.pop(),
n = i.textContent || i.innerText;
if (n) {
var r = n.match(/^.*(\n|\r)/);
return r ? r[(t.length = 0)] : n;
}
return 'ruby' === i.tagName ? e(t) : i.childNodes ? (a(t, i), e(t)) : void 0;
})(t));
)
for (var n = 0; n < i.length; n++)
if (
(function (e) {
for (var t = 0; t < Si.length; t++) {
var i = Si[t];
if (e >= i[0] && e <= i[1]) return 1;
}
})(i.charCodeAt(n))
)
return 'rtl';
return 'ltr';
}
function ki() {}
function Ci(e, t, i) {
ki.call(this), (this.cue = t), (this.cueDiv = wi(e, t.text));
var n = { color: 'rgba(255, 255, 255, 1)', backgroundColor: 'rgba(0, 0, 0, 0.8)', position: 'relative', left: 0, right: 0, top: 0, bottom: 0, display: 'inline', writingMode: '' === t.vertical ? 'horizontal-tb' : 'lr' === t.vertical ? 'vertical-lr' : 'vertical-rl', unicodeBidi: 'plaintext' };
this.applyStyles(n, this.cueDiv), (this.div = e.document.createElement('div')), (n = { direction: Ei(this.cueDiv), writingMode: '' === t.vertical ? 'horizontal-tb' : 'lr' === t.vertical ? 'vertical-lr' : 'vertical-rl', unicodeBidi: 'plaintext', textAlign: 'middle' === t.align ? 'center' : t.align, font: i.font, whiteSpace: 'pre-line', position: 'absolute' }), this.applyStyles(n), this.div.appendChild(this.cueDiv);
var r = 0;
switch (t.positionAlign) {
case 'start':
r = t.position;
break;
case 'center':
r = t.position - t.size / 2;
break;
case 'end':
r = t.position - t.size;
}
'' === t.vertical ? this.applyStyles({ left: this.formatStyle(r, '%'), width: this.formatStyle(t.size, '%') }) : this.applyStyles({ top: this.formatStyle(r, '%'), height: this.formatStyle(t.size, '%') }),
(this.move = function (e) {
this.applyStyles({ top: this.formatStyle(e.top, 'px'), bottom: this.formatStyle(e.bottom, 'px'), left: this.formatStyle(e.left, 'px'), right: this.formatStyle(e.right, 'px'), height: this.formatStyle(e.height, 'px'), width: this.formatStyle(e.width, 'px') });
});
}
function Ii(e) {
var t, i, n, r;
e.div && ((t = e.div.offsetHeight), (i = e.div.offsetWidth), (n = e.div.offsetTop), (r = (r = e.div.childNodes) && (r = r[0]) && r.getClientRects && r.getClientRects()), (e = e.div.getBoundingClientRect()), (r = r ? Math.max((r[0] && r[0].height) || 0, e.height / r.length) : 0)), (this.left = e.left), (this.right = e.right), (this.top = e.top || n), (this.height = e.height || t), (this.bottom = e.bottom || n + (e.height || t)), (this.width = e.width || i), (this.lineHeight = void 0 !== r ? r : e.lineHeight);
}
function xi(e, t, o, u) {
var i,
n = new Ii(t),
r = t.cue,
a = (function (e) {
if ('number' == typeof e.line && (e.snapToLines || (0 <= e.line && e.line <= 100))) return e.line;
if (!e.track || !e.track.textTrackList || !e.track.textTrackList.mediaElement) return -1;
for (var t = e.track, i = t.textTrackList, n = 0, r = 0; r < i.length && i[r] !== t; r++) 'showing' === i[r].mode && n++;
return -1 * ++n;
})(r),
s = [];
if (r.snapToLines) {
switch (r.vertical) {
case '':
(s = ['+y', '-y']), (i = 'height');
break;
case 'rl':
(s = ['+x', '-x']), (i = 'width');
break;
case 'lr':
(s = ['-x', '+x']), (i = 'width');
}
var l = n.lineHeight,
c = l * Math.round(a),
d = o[i] + l,
h = s[0];
Math.abs(c) > d && ((c = c < 0 ? -1 : 1), (c *= Math.ceil(d / l) * l)), a < 0 && ((c += '' === r.vertical ? o.height : o.width), (s = s.reverse())), n.move(h, c);
} else {
var p = (n.lineHeight / o.height) * 100;
switch (r.lineAlign) {
case 'center':
a -= p / 2;
break;
case 'end':
a -= p;
}
switch (r.vertical) {
case '':
t.applyStyles({ top: t.formatStyle(a, '%') });
break;
case 'rl':
t.applyStyles({ left: t.formatStyle(a, '%') });
break;
case 'lr':
t.applyStyles({ right: t.formatStyle(a, '%') });
}
(s = ['+y', '-x', '+x', '-y']), (n = new Ii(t));
}
n = (function (e, t) {
for (var i, n = new Ii(e), r = 1, a = 0; a < t.length; a++) {
for (; e.overlapsOppositeAxis(o, t[a]) || (e.within(o) && e.overlapsAny(u)); ) e.move(t[a]);
if (e.within(o)) return e;
var s = e.intersectPercentage(o);
s < r && ((i = new Ii(e)), (r = s)), (e = new Ii(n));
}
return i || n;
})(n, s);
t.move(n.toCSSCompatValues(o));
}
function Ai() {}
(ki.prototype.applyStyles = function (e, t) {
for (var i in ((t = t || this.div), e)) e.hasOwnProperty(i) && (t.style[i] = e[i]);
}),
(ki.prototype.formatStyle = function (e, t) {
return 0 === e ? 0 : e + t;
}),
((Ci.prototype = ci(ki.prototype)).constructor = Ci),
(Ii.prototype.move = function (e, t) {
switch (((t = void 0 !== t ? t : this.lineHeight), e)) {
case '+x':
(this.left += t), (this.right += t);
break;
case '-x':
(this.left -= t), (this.right -= t);
break;
case '+y':
(this.top += t), (this.bottom += t);
break;
case '-y':
(this.top -= t), (this.bottom -= t);
}
}),
(Ii.prototype.overlaps = function (e) {
return this.left < e.right && this.right > e.left && this.top < e.bottom && this.bottom > e.top;
}),
(Ii.prototype.overlapsAny = function (e) {
for (var t = 0; t < e.length; t++) if (this.overlaps(e[t])) return !0;
return !1;
}),
(Ii.prototype.within = function (e) {
return this.top >= e.top && this.bottom <= e.bottom && this.left >= e.left && this.right <= e.right;
}),
(Ii.prototype.overlapsOppositeAxis = function (e, t) {
switch (t) {
case '+x':
return this.left < e.left;
case '-x':
return this.right > e.right;
case '+y':
return this.top < e.top;
case '-y':
return this.bottom > e.bottom;
}
}),
(Ii.prototype.intersectPercentage = function (e) {
return (Math.max(0, Math.min(this.right, e.right) - Math.max(this.left, e.left)) * Math.max(0, Math.min(this.bottom, e.bottom) - Math.max(this.top, e.top))) / (this.height * this.width);
}),
(Ii.prototype.toCSSCompatValues = function (e) {
return { top: this.top - e.top, bottom: e.bottom - this.bottom, left: this.left - e.left, right: e.right - this.right, height: this.height, width: this.width };
}),
(Ii.getSimpleBoxPosition = function (e) {
var t = e.div ? e.div.offsetHeight : e.tagName ? e.offsetHeight : 0,
i = e.div ? e.div.offsetWidth : e.tagName ? e.offsetWidth : 0,
n = e.div ? e.div.offsetTop : e.tagName ? e.offsetTop : 0;
return { left: (e = e.div ? e.div.getBoundingClientRect() : e.tagName ? e.getBoundingClientRect() : e).left, right: e.right, top: e.top || n, height: e.height || t, bottom: e.bottom || n + (e.height || t), width: e.width || i };
}),
(Ai.StringDecoder = function () {
return {
decode: function (e) {
if (!e) return '';
if ('string' != typeof e) throw new Error('Error - expected string data.');
return decodeURIComponent(encodeURIComponent(e));
},
};
}),
(Ai.convertCueToDOMTree = function (e, t) {
return e && t ? wi(e, t) : null;
});
(Ai.processCues = function (n, r, e) {
if (!n || !r || !e) return null;
for (; e.firstChild; ) e.removeChild(e.firstChild);
var a = n.document.createElement('div');
if (
((a.style.position = 'absolute'),
(a.style.left = '0'),
(a.style.right = '0'),
(a.style.top = '0'),
(a.style.bottom = '0'),
(a.style.margin = '1.5%'),
e.appendChild(a),
(function (e) {
for (var t = 0; t < e.length; t++) if (e[t].hasBeenReset || !e[t].displayState) return 1;
})(r))
) {
var s = [],
o = Ii.getSimpleBoxPosition(a),
u = { font: Math.round(0.05 * o.height * 100) / 100 + 'px sans-serif' };
!(function () {
for (var e, t, i = 0; i < r.length; i++) (t = r[i]), (e = new Ci(n, t, u)), a.appendChild(e.div), xi(0, e, o, s), (t.displayState = e.div), s.push(Ii.getSimpleBoxPosition(e));
})();
} else for (var t = 0; t < r.length; t++) a.appendChild(r[t].displayState);
}),
((Ai.Parser = function (e, t, i) {
i || ((i = t), (t = {})), (t = t || {}), (this.window = e), (this.vttjs = t), (this.state = 'INITIAL'), (this.buffer = ''), (this.decoder = i || new TextDecoder('utf8')), (this.regionList = []);
}).prototype = {
reportOrThrowError: function (e) {
if (!(e instanceof hi)) throw e;
this.onparsingerror && this.onparsingerror(e);
},
parse: function (e) {
var n = this;
function t() {
for (var e = n.buffer, t = 0; t < e.length && '\r' !== e[t] && '\n' !== e[t]; ) ++t;
var i = e.substr(0, t);
return '\r' === e[t] && ++t, '\n' === e[t] && ++t, (n.buffer = e.substr(t)), i;
}
function i(e) {
e.match(/X-TIMESTAMP-MAP/)
? mi(
e,
function (e, t) {
var i;
'X-TIMESTAMP-MAP' === e &&
((t = t),
(i = new fi()),
mi(
t,
function (e, t) {
switch (e) {
case 'MPEGT':
i.integer(e + 'S', t);
break;
case 'LOCA':
i.set(e + 'L', pi(t));
}
},
/[^\d]:/,
/,/
),
n.ontimestampmap && n.ontimestampmap({ MPEGTS: i.get('MPEGTS'), LOCAL: i.get('LOCAL') }));
},
/=/
)
: mi(
e,
function (e, t) {
var r;
'Region' === e &&
((t = t),
(r = new fi()),
mi(
t,
function (e, t) {
switch (e) {
case 'id':
r.set(e, t);
break;
case 'width':
r.percent(e, t);
break;
case 'lines':
r.integer(e, t);
break;
case 'regionanchor':
case 'viewportanchor':
var i = t.split(',');
if (2 !== i.length) break;
var n = new fi();
if ((n.percent('x', i[0]), n.percent('y', i[1]), !n.has('x') || !n.has('y'))) break;
r.set(e + 'X', n.get('x')), r.set(e + 'Y', n.get('y'));
break;
case 'scroll':
r.alt(e, t, ['up']);
}
},
/=/,
/\s/
),
r.has('id') && (((t = new (n.vttjs.VTTRegion || n.window.VTTRegion)()).width = r.get('width', 100)), (t.lines = r.get('lines', 3)), (t.regionAnchorX = r.get('regionanchorX', 0)), (t.regionAnchorY = r.get('regionanchorY', 100)), (t.viewportAnchorX = r.get('viewportanchorX', 0)), (t.viewportAnchorY = r.get('viewportanchorY', 100)), (t.scroll = r.get('scroll', '')), n.onregion && n.onregion(t), n.regionList.push({ id: r.get('id'), region: t })));
},
/:/
);
}
e && (n.buffer += n.decoder.decode(e, { stream: !0 }));
try {
if ('INITIAL' === n.state) {
if (!/\r\n|\n/.test(n.buffer)) return this;
var r,
a = (r = t()).match(/^WEBVTT([ \t].*)?$/);
if (!a || !a[0]) throw new hi(hi.Errors.BadSignature);
n.state = 'HEADER';
}
for (var s = !1; n.buffer; ) {
if (!/\r\n|\n/.test(n.buffer)) return this;
switch ((s ? (s = !1) : (r = t()), n.state)) {
case 'HEADER':
/:/.test(r) ? i(r) : r || (n.state = 'ID');
continue;
case 'NOTE':
r || (n.state = 'ID');
continue;
case 'ID':
if (/^NOTE($|[ \t])/.test(r)) {
n.state = 'NOTE';
break;
}
if (!r) continue;
n.cue = new (n.vttjs.VTTCue || n.window.VTTCue)(0, 0, '');
try {
n.cue.align = 'center';
} catch (e) {
n.cue.align = 'middle';
}
if (((n.state = 'CUE'), -1 === r.indexOf('--\x3e'))) {
n.cue.id = r;
continue;
}
case 'CUE':
try {
gi(r, n.cue, n.regionList);
} catch (e) {
n.reportOrThrowError(e), (n.cue = null), (n.state = 'BADCUE');
continue;
}
n.state = 'CUETEXT';
continue;
case 'CUETEXT':
var o = -1 !== r.indexOf('--\x3e');
if (!r || (o && (s = !0))) {
n.oncue && n.oncue(n.cue), (n.cue = null), (n.state = 'ID');
continue;
}
n.cue.text && (n.cue.text += '\n'), (n.cue.text += r.replace(/\u2028/g, '\n').replace(/u2029/g, '\n'));
continue;
case 'BADCUE':
r || (n.state = 'ID');
continue;
}
}
} catch (e) {
n.reportOrThrowError(e), 'CUETEXT' === n.state && n.cue && n.oncue && n.oncue(n.cue), (n.cue = null), (n.state = 'INITIAL' === n.state ? 'BADWEBVTT' : 'BADCUE');
}
return this;
},
flush: function () {
var t = this;
try {
if (((t.buffer += t.decoder.decode()), (!t.cue && 'HEADER' !== t.state) || ((t.buffer += '\n\n'), t.parse()), 'INITIAL' === t.state)) throw new hi(hi.Errors.BadSignature);
} catch (e) {
t.reportOrThrowError(e);
}
return t.onflush && t.onflush(), this;
},
});
var Pi = Ai,
Li = { '': 1, lr: 1, rl: 1 },
Di = { start: 1, center: 1, end: 1, left: 1, right: 1, auto: 1, 'line-left': 1, 'line-right': 1 };
function Oi(e) {
return 'string' == typeof e && !!Di[e.toLowerCase()] && e.toLowerCase();
}
function Ri(e, t, i) {
this.hasBeenReset = !1;
var n = '',
r = !1,
a = e,
s = t,
o = i,
u = null,
l = '',
c = !0,
d = 'auto',
h = 'start',
p = 'auto',
f = 'auto',
m = 100,
g = 'center';
Object.defineProperties(this, {
id: {
enumerable: !0,
get: function () {
return n;
},
set: function (e) {
n = '' + e;
},
},
pauseOnExit: {
enumerable: !0,
get: function () {
return r;
},
set: function (e) {
r = !!e;
},
},
startTime: {
enumerable: !0,
get: function () {
return a;
},
set: function (e) {
if ('number' != typeof e) throw new TypeError('Start time must be set to a number.');
(a = e), (this.hasBeenReset = !0);
},
},
endTime: {
enumerable: !0,
get: function () {
return s;
},
set: function (e) {
if ('number' != typeof e) throw new TypeError('End time must be set to a number.');
(s = e), (this.hasBeenReset = !0);
},
},
text: {
enumerable: !0,
get: function () {
return o;
},
set: function (e) {
(o = '' + e), (this.hasBeenReset = !0);
},
},
region: {
enumerable: !0,
get: function () {
return u;
},
set: function (e) {
(u = e), (this.hasBeenReset = !0);
},
},
vertical: {
enumerable: !0,
get: function () {
return l;
},
set: function (e) {
e = 'string' == typeof (e = e) && !!Li[e.toLowerCase()] && e.toLowerCase();
if (!1 === e) throw new SyntaxError('Vertical: an invalid or illegal direction string was specified.');
(l = e), (this.hasBeenReset = !0);
},
},
snapToLines: {
enumerable: !0,
get: function () {
return c;
},
set: function (e) {
(c = !!e), (this.hasBeenReset = !0);
},
},
line: {
enumerable: !0,
get: function () {
return d;
},
set: function (e) {
if ('number' != typeof e && 'auto' !== e) throw new SyntaxError('Line: an invalid number or illegal string was specified.');
(d = e), (this.hasBeenReset = !0);
},
},
lineAlign: {
enumerable: !0,
get: function () {
return h;
},
set: function (e) {
e = Oi(e);
e && ((h = e), (this.hasBeenReset = !0));
},
},
position: {
enumerable: !0,
get: function () {
return p;
},
set: function (e) {
if (e < 0 || 100 < e) throw new Error('Position must be between 0 and 100.');
(p = e), (this.hasBeenReset = !0);
},
},
positionAlign: {
enumerable: !0,
get: function () {
return f;
},
set: function (e) {
e = Oi(e);
e && ((f = e), (this.hasBeenReset = !0));
},
},
size: {
enumerable: !0,
get: function () {
return m;
},
set: function (e) {
if (e < 0 || 100 < e) throw new Error('Size must be between 0 and 100.');
(m = e), (this.hasBeenReset = !0);
},
},
align: {
enumerable: !0,
get: function () {
return g;
},
set: function (e) {
e = Oi(e);
if (!e) throw new SyntaxError('align: an invalid or illegal alignment string was specified.');
(g = e), (this.hasBeenReset = !0);
},
},
}),
(this.displayState = void 0);
}
Ri.prototype.getCueAsHTML = function () {
return WebVTT.convertCueToDOMTree(window, this.text);
};
var Mi = Ri,
Ni = { '': !0, up: !0 };
function Ui(e) {
return 'number' == typeof e && 0 <= e && e <= 100;
}
function Bi() {
var t = 100,
i = 3,
n = 0,
r = 100,
a = 0,
s = 100,
o = '';
Object.defineProperties(this, {
width: {
enumerable: !0,
get: function () {
return t;
},
set: function (e) {
if (!Ui(e)) throw new Error('Width must be between 0 and 100.');
t = e;
},
},
lines: {
enumerable: !0,
get: function () {
return i;
},
set: function (e) {
if ('number' != typeof e) throw new TypeError('Lines must be set to a number.');
i = e;
},
},
regionAnchorY: {
enumerable: !0,
get: function () {
return r;
},
set: function (e) {
if (!Ui(e)) throw new Error('RegionAnchorX must be between 0 and 100.');
r = e;
},
},
regionAnchorX: {
enumerable: !0,
get: function () {
return n;
},
set: function (e) {
if (!Ui(e)) throw new Error('RegionAnchorY must be between 0 and 100.');
n = e;
},
},
viewportAnchorY: {
enumerable: !0,
get: function () {
return s;
},
set: function (e) {
if (!Ui(e)) throw new Error('ViewportAnchorY must be between 0 and 100.');
s = e;
},
},
viewportAnchorX: {
enumerable: !0,
get: function () {
return a;
},
set: function (e) {
if (!Ui(e)) throw new Error('ViewportAnchorX must be between 0 and 100.');
a = e;
},
},
scroll: {
enumerable: !0,
get: function () {
return o;
},
set: function (e) {
e = 'string' == typeof (e = e) && !!Ni[e.toLowerCase()] && e.toLowerCase();
!1 === e || (o = e);
},
},
});
}
var Fi = m(function (e) {
e = e.exports = { WebVTT: Pi, VTTCue: Mi, VTTRegion: Bi };
(Kt.vttjs = e), (Kt.WebVTT = e.WebVTT);
var t = e.VTTCue,
i = e.VTTRegion,
n = Kt.VTTCue,
r = Kt.VTTRegion;
(e.shim = function () {
(Kt.VTTCue = t), (Kt.VTTRegion = i);
}),
(e.restore = function () {
(Kt.VTTCue = n), (Kt.VTTRegion = r);
}),
Kt.VTTCue || e.shim();
});
Fi.WebVTT, Fi.VTTCue, Fi.VTTRegion;
var ji = (function (n) {
function i(t, e) {
var i;
return (
void 0 === e && (e = function () {}),
((t = void 0 === t ? {} : t).reportTouchActivity = !1),
((i = n.call(this, null, t, e) || this).onDurationChange_ = function (e) {
return i.onDurationChange(e);
}),
(i.trackProgress_ = function (e) {
return i.trackProgress(e);
}),
(i.trackCurrentTime_ = function (e) {
return i.trackCurrentTime(e);
}),
(i.stopTrackingCurrentTime_ = function (e) {
return i.stopTrackingCurrentTime(e);
}),
(i.disposeSourceHandler_ = function (e) {
return i.disposeSourceHandler(e);
}),
(i.hasStarted_ = !1),
i.on('playing', function () {
this.hasStarted_ = !0;
}),
i.on('loadstart', function () {
this.hasStarted_ = !1;
}),
oi.names.forEach(function (e) {
e = oi[e];
t && t[e.getterName] && (i[e.privateName] = t[e.getterName]);
}),
i.featuresProgressEvents || i.manualProgressOn(),
i.featuresTimeupdateEvents || i.manualTimeUpdatesOn(),
['Text', 'Audio', 'Video'].forEach(function (e) {
!1 === t['native' + e + 'Tracks'] && (i['featuresNative' + e + 'Tracks'] = !1);
}),
!1 === t.nativeCaptions || !1 === t.nativeTextTracks ? (i.featuresNativeTextTracks = !1) : (!0 !== t.nativeCaptions && !0 !== t.nativeTextTracks) || (i.featuresNativeTextTracks = !0),
i.featuresNativeTextTracks || i.emulateTextTracks(),
(i.preloadTextTracks = !1 !== t.preloadTextTracks),
(i.autoRemoteTextTracks_ = new oi.text.ListClass()),
i.initTrackListeners(),
t.nativeControlsForTouch || i.emitTapEvents(),
i.constructor && (i.name_ = i.constructor.name || 'Unknown Tech'),
i
);
}
ft(i, n);
var e = i.prototype;
return (
(e.triggerSourceset = function (e) {
var t = this;
this.isReady_ ||
this.one('ready', function () {
return t.setTimeout(function () {
return t.triggerSourceset(e);
}, 1);
}),
this.trigger({ src: e, type: 'sourceset' });
}),
(e.manualProgressOn = function () {
this.on('durationchange', this.onDurationChange_), (this.manualProgress = !0), this.one('ready', this.trackProgress_);
}),
(e.manualProgressOff = function () {
(this.manualProgress = !1), this.stopTrackingProgress(), this.off('durationchange', this.onDurationChange_);
}),
(e.trackProgress = function (e) {
this.stopTrackingProgress(),
(this.progressInterval = this.setInterval(
Ve(this, function () {
var e = this.bufferedPercent();
this.bufferedPercent_ !== e && this.trigger('progress'), 1 === (this.bufferedPercent_ = e) && this.stopTrackingProgress();
}),
500
));
}),
(e.onDurationChange = function (e) {
this.duration_ = this.duration();
}),
(e.buffered = function () {
return yt(0, 0);
}),
(e.bufferedPercent = function () {
return vt(this.buffered(), this.duration_);
}),
(e.stopTrackingProgress = function () {
this.clearInterval(this.progressInterval);
}),
(e.manualTimeUpdatesOn = function () {
(this.manualTimeUpdates = !0), this.on('play', this.trackCurrentTime_), this.on('pause', this.stopTrackingCurrentTime_);
}),
(e.manualTimeUpdatesOff = function () {
(this.manualTimeUpdates = !1), this.stopTrackingCurrentTime(), this.off('play', this.trackCurrentTime_), this.off('pause', this.stopTrackingCurrentTime_);
}),
(e.trackCurrentTime = function () {
this.currentTimeInterval && this.stopTrackingCurrentTime(),
(this.currentTimeInterval = this.setInterval(function () {
this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 });
}, 250));
}),
(e.stopTrackingCurrentTime = function () {
this.clearInterval(this.currentTimeInterval), this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 });
}),
(e.dispose = function () {
this.clearTracks(ai.names), this.manualProgress && this.manualProgressOff(), this.manualTimeUpdates && this.manualTimeUpdatesOff(), n.prototype.dispose.call(this);
}),
(e.clearTracks = function (e) {
var r = this;
(e = [].concat(e)).forEach(function (e) {
for (var t = r[e + 'Tracks']() || [], i = t.length; i--; ) {
var n = t[i];
'text' === e && r.removeRemoteTextTrack(n), t.removeTrack(n);
}
});
}),
(e.cleanupAutoTextTracks = function () {
for (var e = this.autoRemoteTextTracks_ || [], t = e.length; t--; ) {
var i = e[t];
this.removeRemoteTextTrack(i);
}
}),
(e.reset = function () {}),
(e.crossOrigin = function () {}),
(e.setCrossOrigin = function () {}),
(e.error = function (e) {
return void 0 !== e && ((this.error_ = new _t(e)), this.trigger('error')), this.error_;
}),
(e.played = function () {
return this.hasStarted_ ? yt(0, 0) : yt();
}),
(e.play = function () {}),
(e.setScrubbing = function () {}),
(e.scrubbing = function () {}),
(e.setCurrentTime = function () {
this.manualTimeUpdates && this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 });
}),
(e.initTrackListeners = function () {
var r = this;
ai.names.forEach(function (e) {
function t() {
r.trigger(e + 'trackchange');
}
var i = ai[e],
n = r[i.getterName]();
n.addEventListener('removetrack', t),
n.addEventListener('addtrack', t),
r.on('dispose', function () {
n.removeEventListener('removetrack', t), n.removeEventListener('addtrack', t);
});
});
}),
(e.addWebVttScript_ = function () {
var e,
t = this;
window.WebVTT ||
(document.body.contains(this.el())
? !this.options_['vtt.js'] && w(Fi) && 0 < Object.keys(Fi).length
? this.trigger('vttjsloaded')
: (((e = document.createElement('script')).src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js'),
(e.onload = function () {
t.trigger('vttjsloaded');
}),
(e.onerror = function () {
t.trigger('vttjserror');
}),
this.on('dispose', function () {
(e.onload = null), (e.onerror = null);
}),
(window.WebVTT = !0),
this.el().parentNode.appendChild(e))
: this.ready(this.addWebVttScript_));
}),
(e.emulateTextTracks = function () {
function t(e) {
return n.addTrack(e.track);
}
function i(e) {
return n.removeTrack(e.track);
}
var e = this,
n = this.textTracks(),
r = this.remoteTextTracks();
r.on('addtrack', t), r.on('removetrack', i), this.addWebVttScript_();
function a() {
return e.trigger('texttrackchange');
}
function s() {
a();
for (var e = 0; e < n.length; e++) {
var t = n[e];
t.removeEventListener('cuechange', a), 'showing' === t.mode && t.addEventListener('cuechange', a);
}
}
s(),
n.addEventListener('change', s),
n.addEventListener('addtrack', s),
n.addEventListener('removetrack', s),
this.on('dispose', function () {
r.off('addtrack', t), r.off('removetrack', i), n.removeEventListener('change', s), n.removeEventListener('addtrack', s), n.removeEventListener('removetrack', s);
for (var e = 0; e < n.length; e++) n[e].removeEventListener('cuechange', a);
});
}),
(e.addTextTrack = function (e, t, i) {
if (!e) throw new Error('TextTrack kind is required but was not provided');
return (function (e, t, i, n, r) {
void 0 === r && (r = {});
var a = e.textTracks();
return (r.kind = t), i && (r.label = i), n && (r.language = n), (r.tech = e), (r = new oi.text.TrackClass(r)), a.addTrack(r), r;
})(this, e, t, i);
}),
(e.createRemoteTextTrack = function (e) {
e = lt(e, { tech: this });
return new si.remoteTextEl.TrackClass(e);
}),
(e.addRemoteTextTrack = function (e, t) {
var i = this,
n = this.createRemoteTextTrack((e = void 0 === e ? {} : e));
return (
!0 !== t && !1 !== t && (h.warn('Calling addRemoteTextTrack without explicitly setting the "manualCleanup" parameter to `true` is deprecated and default to `false` in future version of video.js'), (t = !0)),
this.remoteTextTrackEls().addTrackElement_(n),
this.remoteTextTracks().addTrack(n.track),
!0 !== t &&
this.ready(function () {
return i.autoRemoteTextTracks_.addTrack(n.track);
}),
n
);
}),
(e.removeRemoteTextTrack = function (e) {
var t = this.remoteTextTrackEls().getTrackElementByTrack_(e);
this.remoteTextTrackEls().removeTrackElement_(t), this.remoteTextTracks().removeTrack(e), this.autoRemoteTextTracks_.removeTrack(e);
}),
(e.getVideoPlaybackQuality = function () {
return {};
}),
(e.requestPictureInPicture = function () {
var e = this.options_.Promise || window.Promise;
if (e) return e.reject();
}),
(e.disablePictureInPicture = function () {
return !0;
}),
(e.setDisablePictureInPicture = function () {}),
(e.setPoster = function () {}),
(e.playsinline = function () {}),
(e.setPlaysinline = function () {}),
(e.overrideNativeAudioTracks = function () {}),
(e.overrideNativeVideoTracks = function () {}),
(e.canPlayType = function () {
return '';
}),
(i.canPlayType = function () {
return '';
}),
(i.canPlaySource = function (e, t) {
return i.canPlayType(e.type);
}),
(i.isTech = function (e) {
return e.prototype instanceof i || e instanceof i || e === i;
}),
(i.registerTech = function (e, t) {
if ((i.techs_ || (i.techs_ = {}), !i.isTech(t))) throw new Error('Tech ' + e + ' must be a Tech');
if (!i.canPlayType) throw new Error('Techs must have a static canPlayType method on them');
if (!i.canPlaySource) throw new Error('Techs must have a static canPlaySource method on them');
return (e = ut(e)), (i.techs_[e] = t), (i.techs_[ot(e)] = t), 'Tech' !== e && i.defaultTechOrder_.push(e), t;
}),
(i.getTech = function (e) {
if (e) return i.techs_ && i.techs_[e] ? i.techs_[e] : ((e = ut(e)), window && window.videojs && window.videojs[e] ? (h.warn('The ' + e + ' tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)'), window.videojs[e]) : void 0);
}),
i
);
})(ht);
oi.names.forEach(function (e) {
var t = oi[e];
ji.prototype[t.getterName] = function () {
return (this[t.privateName] = this[t.privateName] || new t.ListClass()), this[t.privateName];
};
}),
(ji.prototype.featuresVolumeControl = !0),
(ji.prototype.featuresMuteControl = !0),
(ji.prototype.featuresFullscreenResize = !1),
(ji.prototype.featuresPlaybackRate = !1),
(ji.prototype.featuresProgressEvents = !1),
(ji.prototype.featuresSourceset = !1),
(ji.prototype.featuresTimeupdateEvents = !1),
(ji.prototype.featuresNativeTextTracks = !1),
(ji.withSourceHandlers = function (r) {
(r.registerSourceHandler = function (e, t) {
var i = (i = r.sourceHandlers) || (r.sourceHandlers = []);
void 0 === t && (t = i.length), i.splice(t, 0, e);
}),
(r.canPlayType = function (e) {
for (var t, i = r.sourceHandlers || [], n = 0; n < i.length; n++) if ((t = i[n].canPlayType(e))) return t;
return '';
}),
(r.selectSourceHandler = function (e, t) {
for (var i = r.sourceHandlers || [], n = 0; n < i.length; n++) if (i[n].canHandleSource(e, t)) return i[n];
return null;
}),
(r.canPlaySource = function (e, t) {
var i = r.selectSourceHandler(e, t);
return i ? i.canHandleSource(e, t) : '';
});
['seekable', 'seeking', 'duration'].forEach(function (e) {
var t = this[e];
'function' == typeof t &&
(this[e] = function () {
return this.sourceHandler_ && this.sourceHandler_[e] ? this.sourceHandler_[e].apply(this.sourceHandler_, arguments) : t.apply(this, arguments);
});
}, r.prototype),
(r.prototype.setSource = function (e) {
var t = r.selectSourceHandler(e, this.options_);
t || (r.nativeSourceHandler ? (t = r.nativeSourceHandler) : h.error('No source handler found for the current source.')), this.disposeSourceHandler(), this.off('dispose', this.disposeSourceHandler_), t !== r.nativeSourceHandler && (this.currentSource_ = e), (this.sourceHandler_ = t.handleSource(e, this, this.options_)), this.one('dispose', this.disposeSourceHandler_);
}),
(r.prototype.disposeSourceHandler = function () {
this.currentSource_ && (this.clearTracks(['audio', 'video']), (this.currentSource_ = null)), this.cleanupAutoTextTracks(), this.sourceHandler_ && (this.sourceHandler_.dispose && this.sourceHandler_.dispose(), (this.sourceHandler_ = null));
});
}),
ht.registerComponent('Tech', ji),
ji.registerTech('Tech', ji),
(ji.defaultTechOrder_ = []);
var Hi = {},
qi = {},
Vi = {};
function Wi(e, t, i) {
e.setTimeout(function () {
return (function i(n, e, r, a, s, o) {
void 0 === n && (n = {});
void 0 === e && (e = []);
void 0 === s && (s = []);
void 0 === o && (o = !1);
var t = e,
e = t[0],
u = t.slice(1);
if ('string' == typeof e) i(n, Hi[e], r, a, s, o);
else if (e) {
var l = Qi(a, e);
if (!l.setSource) return s.push(l), i(n, u, r, a, s, o);
l.setSource(b({}, n), function (e, t) {
return e ? i(n, u, r, a, s, o) : (s.push(l), void i(t, n.type === t.type ? u : Hi[t.type], r, a, s, o));
});
} else u.length ? i(n, u, r, a, s, o) : o ? r(n, s) : i(n, Hi['*'], r, a, s, !0);
})(t, Hi[t.type], i, e);
}, 1);
}
function zi(e, t, i, n) {
void 0 === n && (n = null);
var r = 'call' + ut(i),
r = e.reduce(Yi(r), n),
n = r === Vi,
r = n ? null : t[i](r);
return (
(function (e, t, i, n) {
for (var r = e.length - 1; 0 <= r; r--) {
var a = e[r];
a[t] && a[t](n, i);
}
})(e, i, r, n),
r
);
}
var Gi = { buffered: 1, currentTime: 1, duration: 1, muted: 1, played: 1, paused: 1, seekable: 1, volume: 1, ended: 1 },
Xi = { setCurrentTime: 1, setMuted: 1, setVolume: 1 },
Ki = { play: 1, pause: 1 };
function Yi(i) {
return function (e, t) {
return e === Vi ? Vi : t[i] ? t[i](e) : e;
};
}
function Qi(e, t) {
var i = qi[e.id()],
n = null;
if (null == i) return (n = t(e)), (qi[e.id()] = [[t, n]]), n;
for (var r = 0; r < i.length; r++) {
var a = i[r],
s = a[0],
a = a[1];
s === t && (n = a);
}
return null === n && ((n = t(e)), i.push([t, n])), n;
}
function $i(e) {
return (e = Nt((e = void 0 === e ? '' : e))), Zi[e.toLowerCase()] || '';
}
function Ji(e) {
var t;
return (e = Array.isArray(e)
? ((t = []),
e.forEach(function (e) {
(e = Ji(e)), Array.isArray(e) ? (t = t.concat(e)) : T(e) && t.push(e);
}),
t)
: 'string' == typeof e && e.trim()
? [en({ src: e })]
: T(e) && 'string' == typeof e.src && e.src && e.src.trim()
? [en(e)]
: []);
}
var Zi = { opus: 'video/ogg', ogv: 'video/ogg', mp4: 'video/mp4', mov: 'video/mp4', m4v: 'video/mp4', mkv: 'video/x-matroska', m4a: 'audio/mp4', mp3: 'audio/mpeg', aac: 'audio/aac', caf: 'audio/x-caf', flac: 'audio/flac', oga: 'audio/ogg', wav: 'audio/wav', m3u8: 'application/x-mpegURL', jpg: 'image/jpeg', jpeg: 'image/jpeg', gif: 'image/gif', png: 'image/png', svg: 'image/svg+xml', webp: 'image/webp' };
function en(e) {
var t;
return e.type || ((t = $i(e.src)) && (e.type = t)), e;
}
I = (function (u) {
function e(e, t, i) {
var n = lt({ createEl: !1 }, t),
i = u.call(this, e, n, i) || this;
if (t.playerOptions.sources && 0 !== t.playerOptions.sources.length) e.src(t.playerOptions.sources);
else
for (var r = 0, a = t.playerOptions.techOrder; r < a.length; r++) {
var s = ut(a[r]),
o = ji.getTech(s);
if ((o = !s ? ht.getComponent(s) : o) && o.isSupported()) {
e.loadTech_(s);
break;
}
}
return i;
}
return ft(e, u), e;
})(ht);
ht.registerComponent('MediaLoader', I);
C = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
(i.handleMouseOver_ = function (e) {
return i.handleMouseOver(e);
}),
(i.handleMouseOut_ = function (e) {
return i.handleMouseOut(e);
}),
(i.handleClick_ = function (e) {
return i.handleClick(e);
}),
(i.handleKeyDown_ = function (e) {
return i.handleKeyDown(e);
}),
i.emitTapEvents(),
i.enable(),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function (e, t, i) {
void 0 === e && (e = 'div'), void 0 === t && (t = {}), void 0 === i && (i = {}), (t = b({ className: this.buildCSSClass(), tabIndex: 0 }, t)), 'button' === e && h.error('Creating a ClickableComponent with an HTML element of ' + e + ' is not supported; use a Button instead.'), (i = b({ role: 'button' }, i)), (this.tabIndex_ = t.tabIndex);
i = $(e, t, i);
return i.appendChild($('span', { className: 'vjs-icon-placeholder' }, { 'aria-hidden': !0 })), this.createControlTextEl(i), i;
}),
(t.dispose = function () {
(this.controlTextEl_ = null), n.prototype.dispose.call(this);
}),
(t.createControlTextEl = function (e) {
return (this.controlTextEl_ = $('span', { className: 'vjs-control-text' }, { 'aria-live': 'polite' })), e && e.appendChild(this.controlTextEl_), this.controlText(this.controlText_, e), this.controlTextEl_;
}),
(t.controlText = function (e, t) {
if ((void 0 === t && (t = this.el()), void 0 === e)) return this.controlText_ || 'Need Text';
var i = this.localize(e);
(this.controlText_ = e), J(this.controlTextEl_, i), this.nonIconControl || this.player_.options_.noUITitleAttributes || t.setAttribute('title', i);
}),
(t.buildCSSClass = function () {
return 'vjs-control vjs-button ' + n.prototype.buildCSSClass.call(this);
}),
(t.enable = function () {
this.enabled_ || ((this.enabled_ = !0), this.removeClass('vjs-disabled'), this.el_.setAttribute('aria-disabled', 'false'), 'undefined' != typeof this.tabIndex_ && this.el_.setAttribute('tabIndex', this.tabIndex_), this.on(['tap', 'click'], this.handleClick_), this.on('keydown', this.handleKeyDown_));
}),
(t.disable = function () {
(this.enabled_ = !1), this.addClass('vjs-disabled'), this.el_.setAttribute('aria-disabled', 'true'), 'undefined' != typeof this.tabIndex_ && this.el_.removeAttribute('tabIndex'), this.off('mouseover', this.handleMouseOver_), this.off('mouseout', this.handleMouseOut_), this.off(['tap', 'click'], this.handleClick_), this.off('keydown', this.handleKeyDown_);
}),
(t.handleLanguagechange = function () {
this.controlText(this.controlText_);
}),
(t.handleClick = function (e) {
this.options_.clickHandler && this.options_.clickHandler.call(this, arguments);
}),
(t.handleKeyDown = function (e) {
It.isEventKey(e, 'Space') || It.isEventKey(e, 'Enter') ? (e.preventDefault(), e.stopPropagation(), this.trigger('click')) : n.prototype.handleKeyDown.call(this, e);
}),
e
);
})(ht);
ht.registerComponent('ClickableComponent', C),
ht.registerComponent(
'PosterImage',
(function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.update(),
(i.update_ = function (e) {
return i.update(e);
}),
e.on('posterchange', i.update_),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.dispose = function () {
this.player().off('posterchange', this.update_), n.prototype.dispose.call(this);
}),
(t.createEl = function () {
return $('div', { className: 'vjs-poster', tabIndex: -1 });
}),
(t.update = function (e) {
var t = this.player().poster();
this.setSrc(t), t ? this.show() : this.hide();
}),
(t.setSrc = function (e) {
this.el_.style.backgroundImage = e ? 'url("' + e + '")' : '';
}),
(t.handleClick = function (e) {
var t;
this.player_.controls() && ((t = this.player_.usingPlugin('eme') && this.player_.eme.sessions && 0 < this.player_.eme.sessions.length), !this.player_.tech(!0) || ((N || O) && t) || this.player_.tech(!0).focus(), this.player_.paused() ? St(this.player_.play()) : this.player_.pause());
}),
e
);
})(C)
);
var tn = '#222',
nn = { monospace: 'monospace', sansSerif: 'sans-serif', serif: 'serif', monospaceSansSerif: '"Andale Mono", "Lucida Console", monospace', monospaceSerif: '"Courier New", monospace', proportionalSansSerif: 'sans-serif', proportionalSerif: 'serif', casual: '"Comic Sans MS", Impact, fantasy', script: '"Monotype Corsiva", cursive', smallcaps: '"Andale Mono", "Lucida Console", monospace, sans-serif' };
function rn(e, t) {
var i;
if (4 === e.length) i = e[1] + e[1] + e[2] + e[2] + e[3] + e[3];
else {
if (7 !== e.length) throw new Error('Invalid color code provided, ' + e + '; must be formatted as e.g. #f0e or #f604e2.');
i = e.slice(1);
}
return 'rgba(' + parseInt(i.slice(0, 2), 16) + ',' + parseInt(i.slice(2, 4), 16) + ',' + parseInt(i.slice(4, 6), 16) + ',' + t + ')';
}
function an(e, t, i) {
try {
e.style[t] = i;
} catch (e) {
return;
}
}
ht.registerComponent(
'TextTrackDisplay',
(function (a) {
function e(i, e, t) {
function n(e) {
return r.updateDisplay(e);
}
var r = a.call(this, i, e, t) || this;
return (
i.on('loadstart', function (e) {
return r.toggleDisplay(e);
}),
i.on('texttrackchange', n),
i.on('loadedmetadata', function (e) {
return r.preselectTrack(e);
}),
i.ready(
Ve(pt(r), function () {
if (i.tech_ && i.tech_.featuresNativeTextTracks) this.hide();
else {
i.on('fullscreenchange', n),
i.on('playerresize', n),
window.addEventListener('orientationchange', n),
i.on('dispose', function () {
return window.removeEventListener('orientationchange', n);
});
for (var e = this.options_.playerOptions.tracks || [], t = 0; t < e.length; t++) this.player_.addRemoteTextTrack(e[t], !0);
this.preselectTrack();
}
})
),
r
);
}
ft(e, a);
var t = e.prototype;
return (
(t.preselectTrack = function () {
for (var e, t, i, n = { captions: 1, subtitles: 1 }, r = this.player_.textTracks(), a = this.player_.cache_.selectedLanguage, s = 0; s < r.length; s++) {
var o = r[s];
a && a.enabled && a.language && a.language === o.language && o.kind in n ? (i = (o.kind !== a.kind && i) || o) : a && !a.enabled ? (t = e = i = null) : o.default && ('descriptions' !== o.kind || e ? o.kind in n && !t && (t = o) : (e = o));
}
i ? (i.mode = 'showing') : t ? (t.mode = 'showing') : e && (e.mode = 'showing');
}),
(t.toggleDisplay = function () {
this.player_.tech_ && this.player_.tech_.featuresNativeTextTracks ? this.hide() : this.show();
}),
(t.createEl = function () {
return a.prototype.createEl.call(this, 'div', { className: 'vjs-text-track-display' }, { translate: 'yes', 'aria-live': 'off', 'aria-atomic': 'true' });
}),
(t.clearDisplay = function () {
'function' == typeof window.WebVTT && window.WebVTT.processCues(window, [], this.el_);
}),
(t.updateDisplay = function () {
var e = this.player_.textTracks(),
t = this.options_.allowMultipleShowingTracks;
if ((this.clearDisplay(), t)) {
for (var i = [], n = 0; n < e.length; ++n) {
var r = e[n];
'showing' === r.mode && i.push(r);
}
this.updateForTrack(i);
} else {
for (var a = null, s = null, o = e.length; o--; ) {
var u = e[o];
'showing' === u.mode && ('descriptions' === u.kind ? (a = u) : (s = u));
}
s ? ('off' !== this.getAttribute('aria-live') && this.setAttribute('aria-live', 'off'), this.updateForTrack(s)) : a && ('assertive' !== this.getAttribute('aria-live') && this.setAttribute('aria-live', 'assertive'), this.updateForTrack(a));
}
}),
(t.updateDisplayState = function (e) {
for (var t = this.player_.textTrackSettings.getValues(), i = e.activeCues, n = i.length; n--; ) {
var r,
a = i[n];
a && ((r = a.displayState), t.color && (r.firstChild.style.color = t.color), t.textOpacity && an(r.firstChild, 'color', rn(t.color || '#fff', t.textOpacity)), t.backgroundColor && (r.firstChild.style.backgroundColor = t.backgroundColor), t.backgroundOpacity && an(r.firstChild, 'backgroundColor', rn(t.backgroundColor || '#000', t.backgroundOpacity)), t.windowColor && (t.windowOpacity ? an(r, 'backgroundColor', rn(t.windowColor, t.windowOpacity)) : (r.style.backgroundColor = t.windowColor)), t.edgeStyle && ('dropshadow' === t.edgeStyle ? (r.firstChild.style.textShadow = '2px 2px 3px #222, 2px 2px 4px #222, 2px 2px 5px ' + tn) : 'raised' === t.edgeStyle ? (r.firstChild.style.textShadow = '1px 1px #222, 2px 2px #222, 3px 3px ' + tn) : 'depressed' === t.edgeStyle ? (r.firstChild.style.textShadow = '1px 1px #ccc, 0 1px #ccc, -1px -1px #222, 0 -1px ' + tn) : 'uniform' === t.edgeStyle && (r.firstChild.style.textShadow = '0 0 4px #222, 0 0 4px #222, 0 0 4px #222, 0 0 4px ' + tn)), t.fontPercent && 1 !== t.fontPercent && ((a = window.parseFloat(r.style.fontSize)), (r.style.fontSize = a * t.fontPercent + 'px'), (r.style.height = 'auto'), (r.style.top = 'auto')), t.fontFamily && 'default' !== t.fontFamily && ('small-caps' === t.fontFamily ? (r.firstChild.style.fontVariant = 'small-caps') : (r.firstChild.style.fontFamily = nn[t.fontFamily])));
}
}),
(t.updateForTrack = function (e) {
if (
(Array.isArray(e) || (e = [e]),
'function' == typeof window.WebVTT &&
!e.every(function (e) {
return !e.activeCues;
}))
) {
for (var t = [], i = 0; i < e.length; ++i) for (var n = e[i], r = 0; r < n.activeCues.length; ++r) t.push(n.activeCues[r]);
window.WebVTT.processCues(window, t, this.el_);
for (var a = 0; a < e.length; ++a) {
for (var s = e[a], o = 0; o < s.activeCues.length; ++o) {
var u = s.activeCues[o].displayState;
te(u, 'vjs-text-track-cue'), te(u, 'vjs-text-track-cue-' + (s.language || a)), s.language && oe(u, 'lang', s.language);
}
this.player_.textTrackSettings && this.updateDisplayState(s);
}
}
}),
e
);
})(ht)
),
ht.registerComponent(
'LoadingSpinner',
(function (i) {
function e() {
return i.apply(this, arguments) || this;
}
return (
ft(e, i),
(e.prototype.createEl = function () {
var e = this.player_.isAudio(),
t = this.localize(e ? 'Audio Player' : 'Video Player'),
e = $('span', { className: 'vjs-control-text', textContent: this.localize('{1} is loading.', [t]) }),
t = i.prototype.createEl.call(this, 'div', { className: 'vjs-loading-spinner', dir: 'ltr' });
return t.appendChild(e), t;
}),
e
);
})(ht)
);
var sn = (function (t) {
function e() {
return t.apply(this, arguments) || this;
}
ft(e, t);
var i = e.prototype;
return (
(i.createEl = function (e, t, i) {
void 0 === t && (t = {}), void 0 === i && (i = {});
i = $('button', (t = b({ className: this.buildCSSClass() }, t)), (i = b({ type: 'button' }, i)));
return i.appendChild($('span', { className: 'vjs-icon-placeholder' }, { 'aria-hidden': !0 })), this.createControlTextEl(i), i;
}),
(i.addChild = function (e, t) {
void 0 === t && (t = {});
var i = this.constructor.name;
return h.warn('Adding an actionable (user controllable) child to a Button (' + i + ') is not supported; use a ClickableComponent instead.'), ht.prototype.addChild.call(this, e, t);
}),
(i.enable = function () {
t.prototype.enable.call(this), this.el_.removeAttribute('disabled');
}),
(i.disable = function () {
t.prototype.disable.call(this), this.el_.setAttribute('disabled', 'disabled');
}),
(i.handleKeyDown = function (e) {
It.isEventKey(e, 'Space') || It.isEventKey(e, 'Enter') ? e.stopPropagation() : t.prototype.handleKeyDown.call(this, e);
}),
e
);
})(C);
ht.registerComponent('Button', sn);
Bt = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
(i.mouseused_ = !1),
i.on('mousedown', function (e) {
return i.handleMouseDown(e);
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-big-play-button';
}),
(t.handleClick = function (e) {
var t = this.player_.play();
if (this.mouseused_ && e.clientX && e.clientY) {
var i = this.player_.usingPlugin('eme') && this.player_.eme.sessions && 0 < this.player_.eme.sessions.length;
return St(t), void (!this.player_.tech(!0) || ((N || O) && i) || this.player_.tech(!0).focus());
}
var i = this.player_.getChild('controlBar'),
n = i && i.getChild('playToggle');
n
? ((i = function () {
return n.focus();
}),
wt(t) ? t.then(i, function () {}) : this.setTimeout(i, 1))
: this.player_.tech(!0).focus();
}),
(t.handleKeyDown = function (e) {
(this.mouseused_ = !1), n.prototype.handleKeyDown.call(this, e);
}),
(t.handleMouseDown = function (e) {
this.mouseused_ = !0;
}),
e
);
})(sn);
(Bt.prototype.controlText_ = 'Play Video'),
ht.registerComponent('BigPlayButton', Bt),
ht.registerComponent(
'CloseButton',
(function (i) {
function e(e, t) {
e = i.call(this, e, t) || this;
return e.controlText((t && t.controlText) || e.localize('Close')), e;
}
ft(e, i);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-close-button ' + i.prototype.buildCSSClass.call(this);
}),
(t.handleClick = function (e) {
this.trigger({ type: 'close', bubbles: !1 });
}),
(t.handleKeyDown = function (e) {
It.isEventKey(e, 'Esc') ? (e.preventDefault(), e.stopPropagation(), this.trigger('click')) : i.prototype.handleKeyDown.call(this, e);
}),
e
);
})(sn)
);
Ft = (function (n) {
function e(e, t) {
var i = n.call(this, e, (t = void 0 === t ? {} : t)) || this;
return (
(t.replay = void 0 === t.replay || t.replay),
i.on(e, 'play', function (e) {
return i.handlePlay(e);
}),
i.on(e, 'pause', function (e) {
return i.handlePause(e);
}),
t.replay &&
i.on(e, 'ended', function (e) {
return i.handleEnded(e);
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-play-control ' + n.prototype.buildCSSClass.call(this);
}),
(t.handleClick = function (e) {
this.player_.paused() ? St(this.player_.play()) : this.player_.pause();
}),
(t.handleSeeked = function (e) {
this.removeClass('vjs-ended'), this.player_.paused() ? this.handlePause(e) : this.handlePlay(e);
}),
(t.handlePlay = function (e) {
this.removeClass('vjs-ended'), this.removeClass('vjs-paused'), this.addClass('vjs-playing'), this.controlText('Pause');
}),
(t.handlePause = function (e) {
this.removeClass('vjs-playing'), this.addClass('vjs-paused'), this.controlText('Play');
}),
(t.handleEnded = function (e) {
var t = this;
this.removeClass('vjs-playing'),
this.addClass('vjs-ended'),
this.controlText('Replay'),
this.one(this.player_, 'seeked', function (e) {
return t.handleSeeked(e);
});
}),
e
);
})(sn);
(Ft.prototype.controlText_ = 'Play'), ht.registerComponent('PlayToggle', Ft);
function on(e, t) {
e = e < 0 ? 0 : e;
var i = Math.floor(e % 60),
n = Math.floor((e / 60) % 60),
r = Math.floor(e / 3600),
a = Math.floor((t / 60) % 60),
t = Math.floor(t / 3600);
return (r = 0 < (r = isNaN(e) || e === 1 / 0 ? (n = i = '-') : r) || 0 < t ? r + ':' : '') + (n = ((r || 10 <= a) && n < 10 ? '0' + n : n) + ':') + (i = i < 10 ? '0' + i : i);
}
var un = on;
function ln(e, t) {
return un(e, (t = void 0 === t ? e : t));
}
k = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.on(e, ['timeupdate', 'ended'], function (e) {
return i.updateContent(e);
}),
i.updateTextNode_(),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function () {
var e = this.buildCSSClass(),
t = n.prototype.createEl.call(this, 'div', { className: e + ' vjs-time-control vjs-control' }),
i = $('span', { className: 'vjs-control-text', textContent: this.localize(this.labelText_) + ' ' }, { role: 'presentation' });
return t.appendChild(i), (this.contentEl_ = $('span', { className: e + '-display' }, { 'aria-live': 'off', role: 'presentation' })), t.appendChild(this.contentEl_), t;
}),
(t.dispose = function () {
(this.contentEl_ = null), (this.textNode_ = null), n.prototype.dispose.call(this);
}),
(t.updateTextNode_ = function (e) {
var t = this;
(e = ln((e = void 0 === e ? 0 : e))),
this.formattedTime_ !== e &&
((this.formattedTime_ = e),
this.requestNamedAnimationFrame('TimeDisplay#updateTextNode_', function () {
var e;
t.contentEl_ && ((e = t.textNode_) && t.contentEl_.firstChild !== e && ((e = null), h.warn('TimeDisplay#updateTextnode_: Prevented replacement of text node element since it was no longer a child of this node. Appending a new node instead.')), (t.textNode_ = document.createTextNode(t.formattedTime_)), t.textNode_ && (e ? t.contentEl_.replaceChild(t.textNode_, e) : t.contentEl_.appendChild(t.textNode_)));
}));
}),
(t.updateContent = function (e) {}),
e
);
})(ht);
(k.prototype.labelText_ = 'Time'), (k.prototype.controlText_ = 'Time'), ht.registerComponent('TimeDisplay', k);
jt = (function (e) {
function t() {
return e.apply(this, arguments) || this;
}
ft(t, e);
var i = t.prototype;
return (
(i.buildCSSClass = function () {
return 'vjs-current-time';
}),
(i.updateContent = function (e) {
var t = this.player_.ended() ? this.player_.duration() : this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();
this.updateTextNode_(t);
}),
t
);
})(k);
(jt.prototype.labelText_ = 'Current Time'), (jt.prototype.controlText_ = 'Current Time'), ht.registerComponent('CurrentTimeDisplay', jt);
j = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this,
t = function (e) {
return i.updateContent(e);
};
return i.on(e, 'durationchange', t), i.on(e, 'loadstart', t), i.on(e, 'loadedmetadata', t), i;
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-duration';
}),
(t.updateContent = function (e) {
var t = this.player_.duration();
this.updateTextNode_(t);
}),
e
);
})(k);
(j.prototype.labelText_ = 'Duration'),
(j.prototype.controlText_ = 'Duration'),
ht.registerComponent('DurationDisplay', j),
ht.registerComponent(
'TimeDivider',
(function (n) {
function e() {
return n.apply(this, arguments) || this;
}
return (
ft(e, n),
(e.prototype.createEl = function () {
var e = n.prototype.createEl.call(this, 'div', { className: 'vjs-time-control vjs-time-divider' }, { 'aria-hidden': !0 }),
t = n.prototype.createEl.call(this, 'div'),
i = n.prototype.createEl.call(this, 'span', { textContent: '/' });
return t.appendChild(i), e.appendChild(t), e;
}),
e
);
})(ht)
);
f = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.on(e, 'durationchange', function (e) {
return i.updateContent(e);
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-remaining-time';
}),
(t.createEl = function () {
var e = n.prototype.createEl.call(this);
return e.insertBefore($('span', {}, { 'aria-hidden': !0 }, '-'), this.contentEl_), e;
}),
(t.updateContent = function (e) {
var t;
'number' == typeof this.player_.duration() && ((t = this.player_.ended() ? 0 : this.player_.remainingTimeDisplay ? this.player_.remainingTimeDisplay() : this.player_.remainingTime()), this.updateTextNode_(t));
}),
e
);
})(k);
(f.prototype.labelText_ = 'Remaining Time'),
(f.prototype.controlText_ = 'Remaining Time'),
ht.registerComponent('RemainingTimeDisplay', f),
ht.registerComponent(
'LiveDisplay',
(function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.updateShowing(),
i.on(i.player(), 'durationchange', function (e) {
return i.updateShowing(e);
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function () {
var e = n.prototype.createEl.call(this, 'div', { className: 'vjs-live-control vjs-control' });
return (this.contentEl_ = $('div', { className: 'vjs-live-display' }, { 'aria-live': 'off' })), this.contentEl_.appendChild($('span', { className: 'vjs-control-text', textContent: this.localize('Stream Type') + ' ' })), this.contentEl_.appendChild(document.createTextNode(this.localize('LIVE'))), e.appendChild(this.contentEl_), e;
}),
(t.dispose = function () {
(this.contentEl_ = null), n.prototype.dispose.call(this);
}),
(t.updateShowing = function (e) {
this.player().duration() === 1 / 0 ? this.show() : this.hide();
}),
e
);
})(ht)
);
ui = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.updateLiveEdgeStatus(),
i.player_.liveTracker &&
((i.updateLiveEdgeStatusHandler_ = function (e) {
return i.updateLiveEdgeStatus(e);
}),
i.on(i.player_.liveTracker, 'liveedgechange', i.updateLiveEdgeStatusHandler_)),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function () {
var e = n.prototype.createEl.call(this, 'button', { className: 'vjs-seek-to-live-control vjs-control' });
return (this.textEl_ = $('span', { className: 'vjs-seek-to-live-text', textContent: this.localize('LIVE') }, { 'aria-hidden': 'true' })), e.appendChild(this.textEl_), e;
}),
(t.updateLiveEdgeStatus = function () {
!this.player_.liveTracker || this.player_.liveTracker.atLiveEdge() ? (this.setAttribute('aria-disabled', !0), this.addClass('vjs-at-live-edge'), this.controlText('Seek to live, currently playing live')) : (this.setAttribute('aria-disabled', !1), this.removeClass('vjs-at-live-edge'), this.controlText('Seek to live, currently behind live'));
}),
(t.handleClick = function () {
this.player_.liveTracker.seekToLiveEdge();
}),
(t.dispose = function () {
this.player_.liveTracker && this.off(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatusHandler_), (this.textEl_ = null), n.prototype.dispose.call(this);
}),
e
);
})(sn);
(ui.prototype.controlText_ = 'Seek to live, currently playing live'), ht.registerComponent('SeekToLive', ui);
function cn(e, t, i) {
return (e = Number(e)), Math.min(i, Math.max(t, isNaN(e) ? t : e));
}
li = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
(i.handleMouseDown_ = function (e) {
return i.handleMouseDown(e);
}),
(i.handleMouseUp_ = function (e) {
return i.handleMouseUp(e);
}),
(i.handleKeyDown_ = function (e) {
return i.handleKeyDown(e);
}),
(i.handleClick_ = function (e) {
return i.handleClick(e);
}),
(i.handleMouseMove_ = function (e) {
return i.handleMouseMove(e);
}),
(i.update_ = function (e) {
return i.update(e);
}),
(i.bar = i.getChild(i.options_.barName)),
i.vertical(!!i.options_.vertical),
i.enable(),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.enabled = function () {
return this.enabled_;
}),
(t.enable = function () {
this.enabled() || (this.on('mousedown', this.handleMouseDown_), this.on('touchstart', this.handleMouseDown_), this.on('keydown', this.handleKeyDown_), this.on('click', this.handleClick_), this.on(this.player_, 'controlsvisible', this.update), this.playerEvent && this.on(this.player_, this.playerEvent, this.update), this.removeClass('disabled'), this.setAttribute('tabindex', 0), (this.enabled_ = !0));
}),
(t.disable = function () {
var e;
this.enabled() && ((e = this.bar.el_.ownerDocument), this.off('mousedown', this.handleMouseDown_), this.off('touchstart', this.handleMouseDown_), this.off('keydown', this.handleKeyDown_), this.off('click', this.handleClick_), this.off(this.player_, 'controlsvisible', this.update_), this.off(e, 'mousemove', this.handleMouseMove_), this.off(e, 'mouseup', this.handleMouseUp_), this.off(e, 'touchmove', this.handleMouseMove_), this.off(e, 'touchend', this.handleMouseUp_), this.removeAttribute('tabindex'), this.addClass('disabled'), this.playerEvent && this.off(this.player_, this.playerEvent, this.update), (this.enabled_ = !1));
}),
(t.createEl = function (e, t, i) {
return void 0 === i && (i = {}), ((t = void 0 === t ? {} : t).className = t.className + ' vjs-slider'), (t = b({ tabIndex: 0 }, t)), (i = b({ role: 'slider', 'aria-valuenow': 0, 'aria-valuemin': 0, 'aria-valuemax': 100, tabIndex: 0 }, i)), n.prototype.createEl.call(this, e, t, i);
}),
(t.handleMouseDown = function (e) {
var t = this.bar.el_.ownerDocument;
'mousedown' === e.type && e.preventDefault(), 'touchstart' !== e.type || R || e.preventDefault(), le(), this.addClass('vjs-sliding'), this.trigger('slideractive'), this.on(t, 'mousemove', this.handleMouseMove_), this.on(t, 'mouseup', this.handleMouseUp_), this.on(t, 'touchmove', this.handleMouseMove_), this.on(t, 'touchend', this.handleMouseUp_), this.handleMouseMove(e);
}),
(t.handleMouseMove = function (e) {}),
(t.handleMouseUp = function () {
var e = this.bar.el_.ownerDocument;
ce(), this.removeClass('vjs-sliding'), this.trigger('sliderinactive'), this.off(e, 'mousemove', this.handleMouseMove_), this.off(e, 'mouseup', this.handleMouseUp_), this.off(e, 'touchmove', this.handleMouseMove_), this.off(e, 'touchend', this.handleMouseUp_), this.update();
}),
(t.update = function () {
var t = this;
if (this.el_ && this.bar) {
var i = this.getProgress();
return i === this.progress_
? i
: ((this.progress_ = i),
this.requestNamedAnimationFrame('Slider#update', function () {
var e = t.vertical() ? 'height' : 'width';
t.bar.el().style[e] = (100 * i).toFixed(2) + '%';
}),
i);
}
}),
(t.getProgress = function () {
return Number(cn(this.getPercent(), 0, 1).toFixed(4));
}),
(t.calculateDistance = function (e) {
e = pe(this.el_, e);
return this.vertical() ? e.y : e.x;
}),
(t.handleKeyDown = function (e) {
It.isEventKey(e, 'Left') || It.isEventKey(e, 'Down') ? (e.preventDefault(), e.stopPropagation(), this.stepBack()) : It.isEventKey(e, 'Right') || It.isEventKey(e, 'Up') ? (e.preventDefault(), e.stopPropagation(), this.stepForward()) : n.prototype.handleKeyDown.call(this, e);
}),
(t.handleClick = function (e) {
e.stopPropagation(), e.preventDefault();
}),
(t.vertical = function (e) {
if (void 0 === e) return this.vertical_ || !1;
(this.vertical_ = !!e), this.vertical_ ? this.addClass('vjs-slider-vertical') : this.addClass('vjs-slider-horizontal');
}),
e
);
})(ht);
ht.registerComponent('Slider', li);
function dn(e, t) {
return cn((e / t) * 100, 0, 100).toFixed(2) + '%';
}
ht.registerComponent(
'LoadProgressBar',
(function (r) {
function e(e, t) {
var i = r.call(this, e, t) || this;
return (
(i.partEls_ = []),
i.on(e, 'progress', function (e) {
return i.update(e);
}),
i
);
}
ft(e, r);
var t = e.prototype;
return (
(t.createEl = function () {
var e = r.prototype.createEl.call(this, 'div', { className: 'vjs-load-progress' }),
t = $('span', { className: 'vjs-control-text' }),
i = $('span', { textContent: this.localize('Loaded') }),
n = document.createTextNode(': ');
return (this.percentageEl_ = $('span', { className: 'vjs-control-text-loaded-percentage', textContent: '0%' })), e.appendChild(t), t.appendChild(i), t.appendChild(n), t.appendChild(this.percentageEl_), e;
}),
(t.dispose = function () {
(this.partEls_ = null), (this.percentageEl_ = null), r.prototype.dispose.call(this);
}),
(t.update = function (e) {
var l = this;
this.requestNamedAnimationFrame('LoadProgressBar#update', function () {
var e = l.player_.liveTracker,
t = l.player_.buffered(),
e = e && e.isLive() ? e.seekableEnd() : l.player_.duration(),
i = l.player_.bufferedEnd(),
n = l.partEls_,
e = dn(i, e);
l.percent_ !== e && ((l.el_.style.width = e), J(l.percentageEl_, e), (l.percent_ = e));
for (var r = 0; r < t.length; r++) {
var a = t.start(r),
s = t.end(r),
o = n[r];
o || ((o = l.el_.appendChild($())), (n[r] = o)), (o.dataset.start === a && o.dataset.end === s) || ((o.dataset.start = a), (o.dataset.end = s), (o.style.left = dn(a, i)), (o.style.width = dn(s - a, i)));
}
for (var u = n.length; u > t.length; u--) l.el_.removeChild(n[u - 1]);
n.length = t.length;
});
}),
e
);
})(ht)
),
ht.registerComponent(
'TimeTooltip',
(function (i) {
function e(e, t) {
t = i.call(this, e, t) || this;
return (t.update = We(Ve(pt(t), t.update), 30)), t;
}
ft(e, i);
var t = e.prototype;
return (
(t.createEl = function () {
return i.prototype.createEl.call(this, 'div', { className: 'vjs-time-tooltip' }, { 'aria-hidden': 'true' });
}),
(t.update = function (e, t, i) {
var n = he(this.el_),
r = de(this.player_.el()),
a = e.width * t;
r && n && ((t = e.left - r.left + a), (r = e.width - a + (r.right - e.right)), t < (e = n.width / 2) ? (e += e - t) : r < e && (e = r), e < 0 ? (e = 0) : e > n.width && (e = n.width), (e = Math.round(e)), (this.el_.style.right = '-' + e + 'px'), this.write(i));
}),
(t.write = function (e) {
J(this.el_, e);
}),
(t.updateTime = function (n, r, a, s) {
var o = this;
this.requestNamedAnimationFrame('TimeTooltip#updateTime', function () {
var e,
t,
i = o.player_.duration();
(i = o.player_.liveTracker && o.player_.liveTracker.isLive() ? ((t = (e = o.player_.liveTracker.liveWindow()) - r * e) < 1 ? '' : '-') + ln(t, e) : ln(a, i)), o.update(n, r, i), s && s();
});
}),
e
);
})(ht)
);
Xt = (function (i) {
function e(e, t) {
t = i.call(this, e, t) || this;
return (t.update = We(Ve(pt(t), t.update), 30)), t;
}
ft(e, i);
var t = e.prototype;
return (
(t.createEl = function () {
return i.prototype.createEl.call(this, 'div', { className: 'vjs-play-progress vjs-slider-bar' }, { 'aria-hidden': 'true' });
}),
(t.update = function (e, t) {
var i,
n = this.getChild('timeTooltip');
n && ((i = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime()), n.updateTime(e, t, i));
}),
e
);
})(ht);
(Xt.prototype.options_ = { children: [] }), q || A || Xt.prototype.options_.children.push('timeTooltip'), ht.registerComponent('PlayProgressBar', Xt);
I = (function (i) {
function e(e, t) {
t = i.call(this, e, t) || this;
return (t.update = We(Ve(pt(t), t.update), 30)), t;
}
ft(e, i);
var t = e.prototype;
return (
(t.createEl = function () {
return i.prototype.createEl.call(this, 'div', { className: 'vjs-mouse-display' });
}),
(t.update = function (e, t) {
var i = this,
n = t * this.player_.duration();
this.getChild('timeTooltip').updateTime(e, t, n, function () {
i.el_.style.left = e.width * t + 'px';
});
}),
e
);
})(ht);
(I.prototype.options_ = { children: ['timeTooltip'] }), ht.registerComponent('MouseTimeDisplay', I);
Bt = (function (a) {
function e(e, t) {
t = a.call(this, e, t) || this;
return t.setEventHandlers_(), t;
}
ft(e, a);
var t = e.prototype;
return (
(t.setEventHandlers_ = function () {
var t = this;
(this.update_ = Ve(this, this.update)),
(this.update = We(this.update_, 30)),
this.on(this.player_, ['ended', 'durationchange', 'timeupdate'], this.update),
this.player_.liveTracker && this.on(this.player_.liveTracker, 'liveedgechange', this.update),
(this.updateInterval = null),
(this.enableIntervalHandler_ = function (e) {
return t.enableInterval_(e);
}),
(this.disableIntervalHandler_ = function (e) {
return t.disableInterval_(e);
}),
this.on(this.player_, ['playing'], this.enableIntervalHandler_),
this.on(this.player_, ['ended', 'pause', 'waiting'], this.disableIntervalHandler_),
'hidden' in document && 'visibilityState' in document && this.on(document, 'visibilitychange', this.toggleVisibility_);
}),
(t.toggleVisibility_ = function (e) {
'hidden' === document.visibilityState ? (this.cancelNamedAnimationFrame('SeekBar#update'), this.cancelNamedAnimationFrame('Slider#update'), this.disableInterval_(e)) : (this.player_.ended() || this.player_.paused() || this.enableInterval_(), this.update());
}),
(t.enableInterval_ = function () {
this.updateInterval || (this.updateInterval = this.setInterval(this.update, 30));
}),
(t.disableInterval_ = function (e) {
(this.player_.liveTracker && this.player_.liveTracker.isLive() && e && 'ended' !== e.type) || (this.updateInterval && (this.clearInterval(this.updateInterval), (this.updateInterval = null)));
}),
(t.createEl = function () {
return a.prototype.createEl.call(this, 'div', { className: 'vjs-progress-holder' }, { 'aria-label': this.localize('Progress Bar') });
}),
(t.update = function (e) {
var n = this;
if ('hidden' !== document.visibilityState) {
var r = a.prototype.update.call(this);
return (
this.requestNamedAnimationFrame('SeekBar#update', function () {
var e = n.player_.ended() ? n.player_.duration() : n.getCurrentTime_(),
t = n.player_.liveTracker,
i = n.player_.duration();
t && t.isLive() && (i = n.player_.liveTracker.liveCurrentTime()), n.percent_ !== r && (n.el_.setAttribute('aria-valuenow', (100 * r).toFixed(2)), (n.percent_ = r)), (n.currentTime_ === e && n.duration_ === i) || (n.el_.setAttribute('aria-valuetext', n.localize('progress bar timing: currentTime={1} duration={2}', [ln(e, i), ln(i, i)], '{1} of {2}')), (n.currentTime_ = e), (n.duration_ = i)), n.bar && n.bar.update(de(n.el()), n.getProgress());
}),
r
);
}
}),
(t.userSeek_ = function (e) {
this.player_.liveTracker && this.player_.liveTracker.isLive() && this.player_.liveTracker.nextSeekedFromUser(), this.player_.currentTime(e);
}),
(t.getCurrentTime_ = function () {
return this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();
}),
(t.getPercent = function () {
var e,
t = this.getCurrentTime_(),
i = this.player_.liveTracker;
return i && i.isLive() ? ((e = (t - i.seekableStart()) / i.liveWindow()), i.atLiveEdge() && (e = 1)) : (e = t / this.player_.duration()), e;
}),
(t.handleMouseDown = function (e) {
_e(e) && (e.stopPropagation(), this.player_.scrubbing(!0), (this.videoWasPlaying = !this.player_.paused()), this.player_.pause(), a.prototype.handleMouseDown.call(this, e));
}),
(t.handleMouseMove = function (e) {
if (_e(e)) {
var t = this.calculateDistance(e),
i = this.player_.liveTracker;
if (i && i.isLive()) {
if (0.99 <= t) return void i.seekToLiveEdge();
var n,
r = i.seekableStart(),
e = i.liveCurrentTime();
if ((n = (n = e <= (n = r + t * i.liveWindow()) ? e : n) <= r ? r + 0.1 : n) === 1 / 0) return;
} else (n = t * this.player_.duration()) === this.player_.duration() && (n -= 0.1);
this.userSeek_(n);
}
}),
(t.enable = function () {
a.prototype.enable.call(this);
var e = this.getChild('mouseTimeDisplay');
e && e.show();
}),
(t.disable = function () {
a.prototype.disable.call(this);
var e = this.getChild('mouseTimeDisplay');
e && e.hide();
}),
(t.handleMouseUp = function (e) {
a.prototype.handleMouseUp.call(this, e), e && e.stopPropagation(), this.player_.scrubbing(!1), this.player_.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 }), this.videoWasPlaying ? St(this.player_.play()) : this.update_();
}),
(t.stepForward = function () {
this.userSeek_(this.player_.currentTime() + 5);
}),
(t.stepBack = function () {
this.userSeek_(this.player_.currentTime() - 5);
}),
(t.handleAction = function (e) {
this.player_.paused() ? this.player_.play() : this.player_.pause();
}),
(t.handleKeyDown = function (e) {
var t,
i = this.player_.liveTracker;
It.isEventKey(e, 'Space') || It.isEventKey(e, 'Enter') ? (e.preventDefault(), e.stopPropagation(), this.handleAction(e)) : It.isEventKey(e, 'Home') ? (e.preventDefault(), e.stopPropagation(), this.userSeek_(0)) : It.isEventKey(e, 'End') ? (e.preventDefault(), e.stopPropagation(), i && i.isLive() ? this.userSeek_(i.liveCurrentTime()) : this.userSeek_(this.player_.duration())) : /^[0-9]$/.test(It(e)) ? (e.preventDefault(), e.stopPropagation(), (t = (10 * (It.codes[It(e)] - It.codes[0])) / 100), i && i.isLive() ? this.userSeek_(i.seekableStart() + i.liveWindow() * t) : this.userSeek_(this.player_.duration() * t)) : It.isEventKey(e, 'PgDn') ? (e.preventDefault(), e.stopPropagation(), this.userSeek_(this.player_.currentTime() - 60)) : It.isEventKey(e, 'PgUp') ? (e.preventDefault(), e.stopPropagation(), this.userSeek_(this.player_.currentTime() + 60)) : a.prototype.handleKeyDown.call(this, e);
}),
(t.dispose = function () {
this.disableInterval_(), this.off(this.player_, ['ended', 'durationchange', 'timeupdate'], this.update), this.player_.liveTracker && this.off(this.player_.liveTracker, 'liveedgechange', this.update), this.off(this.player_, ['playing'], this.enableIntervalHandler_), this.off(this.player_, ['ended', 'pause', 'waiting'], this.disableIntervalHandler_), 'hidden' in document && 'visibilityState' in document && this.off(document, 'visibilitychange', this.toggleVisibility_), a.prototype.dispose.call(this);
}),
e
);
})(li);
(Bt.prototype.options_ = { children: ['loadProgressBar', 'playProgressBar'], barName: 'playProgressBar' }), q || A || Bt.prototype.options_.children.splice(1, 0, 'mouseTimeDisplay'), ht.registerComponent('SeekBar', Bt);
Ft = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
(i.handleMouseMove = We(Ve(pt(i), i.handleMouseMove), 30)),
(i.throttledHandleMouseSeek = We(Ve(pt(i), i.handleMouseSeek), 30)),
(i.handleMouseUpHandler_ = function (e) {
return i.handleMouseUp(e);
}),
(i.handleMouseDownHandler_ = function (e) {
return i.handleMouseDown(e);
}),
i.enable(),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function () {
return n.prototype.createEl.call(this, 'div', { className: 'vjs-progress-control vjs-control' });
}),
(t.handleMouseMove = function (e) {
var t,
i,
n,
r,
a = this.getChild('seekBar');
a && ((t = a.getChild('playProgressBar')), (i = a.getChild('mouseTimeDisplay')), (t || i) && ((r = he((n = a.el()))), (e = pe(n, e).x), (e = cn(e, 0, 1)), i && i.update(r, e), t && t.update(r, a.getProgress())));
}),
(t.handleMouseSeek = function (e) {
var t = this.getChild('seekBar');
t && t.handleMouseMove(e);
}),
(t.enabled = function () {
return this.enabled_;
}),
(t.disable = function () {
var e;
this.children().forEach(function (e) {
return e.disable && e.disable();
}),
this.enabled() && (this.off(['mousedown', 'touchstart'], this.handleMouseDownHandler_), this.off(this.el_, 'mousemove', this.handleMouseMove), this.removeListenersAddedOnMousedownAndTouchstart(), this.addClass('disabled'), (this.enabled_ = !1), this.player_.scrubbing() && ((e = this.getChild('seekBar')), this.player_.scrubbing(!1), e.videoWasPlaying && St(this.player_.play())));
}),
(t.enable = function () {
this.children().forEach(function (e) {
return e.enable && e.enable();
}),
this.enabled() || (this.on(['mousedown', 'touchstart'], this.handleMouseDownHandler_), this.on(this.el_, 'mousemove', this.handleMouseMove), this.removeClass('disabled'), (this.enabled_ = !0));
}),
(t.removeListenersAddedOnMousedownAndTouchstart = function () {
var e = this.el_.ownerDocument;
this.off(e, 'mousemove', this.throttledHandleMouseSeek), this.off(e, 'touchmove', this.throttledHandleMouseSeek), this.off(e, 'mouseup', this.handleMouseUpHandler_), this.off(e, 'touchend', this.handleMouseUpHandler_);
}),
(t.handleMouseDown = function (e) {
var t = this.el_.ownerDocument,
i = this.getChild('seekBar');
i && i.handleMouseDown(e), this.on(t, 'mousemove', this.throttledHandleMouseSeek), this.on(t, 'touchmove', this.throttledHandleMouseSeek), this.on(t, 'mouseup', this.handleMouseUpHandler_), this.on(t, 'touchend', this.handleMouseUpHandler_);
}),
(t.handleMouseUp = function (e) {
var t = this.getChild('seekBar');
t && t.handleMouseUp(e), this.removeListenersAddedOnMousedownAndTouchstart();
}),
e
);
})(ht);
(Ft.prototype.options_ = { children: ['seekBar'] }), ht.registerComponent('ProgressControl', Ft);
jt = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.on(e, ['enterpictureinpicture', 'leavepictureinpicture'], function (e) {
return i.handlePictureInPictureChange(e);
}),
i.on(e, ['disablepictureinpicturechanged', 'loadedmetadata'], function (e) {
return i.handlePictureInPictureEnabledChange(e);
}),
i.disable(),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-picture-in-picture-control ' + n.prototype.buildCSSClass.call(this);
}),
(t.handlePictureInPictureEnabledChange = function () {
document.pictureInPictureEnabled && !1 === this.player_.disablePictureInPicture() ? this.enable() : this.disable();
}),
(t.handlePictureInPictureChange = function (e) {
this.player_.isInPictureInPicture() ? this.controlText('Exit Picture-in-Picture') : this.controlText('Picture-in-Picture'), this.handlePictureInPictureEnabledChange();
}),
(t.handleClick = function (e) {
this.player_.isInPictureInPicture() ? this.player_.exitPictureInPicture() : this.player_.requestPictureInPicture();
}),
e
);
})(sn);
(jt.prototype.controlText_ = 'Picture-in-Picture'), ht.registerComponent('PictureInPictureToggle', jt);
j = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.on(e, 'fullscreenchange', function (e) {
return i.handleFullscreenChange(e);
}),
!1 === document[e.fsApi_.fullscreenEnabled] && i.disable(),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-fullscreen-control ' + n.prototype.buildCSSClass.call(this);
}),
(t.handleFullscreenChange = function (e) {
this.player_.isFullscreen() ? this.controlText('Non-Fullscreen') : this.controlText('Fullscreen');
}),
(t.handleClick = function (e) {
this.player_.isFullscreen() ? this.player_.exitFullscreen() : this.player_.requestFullscreen();
}),
e
);
})(sn);
(j.prototype.controlText_ = 'Fullscreen'), ht.registerComponent('FullscreenToggle', j);
ht.registerComponent(
'VolumeLevel',
(function (t) {
function e() {
return t.apply(this, arguments) || this;
}
return (
ft(e, t),
(e.prototype.createEl = function () {
var e = t.prototype.createEl.call(this, 'div', { className: 'vjs-volume-level' });
return e.appendChild(t.prototype.createEl.call(this, 'span', { className: 'vjs-control-text' })), e;
}),
e
);
})(ht)
),
ht.registerComponent(
'VolumeLevelTooltip',
(function (i) {
function e(e, t) {
t = i.call(this, e, t) || this;
return (t.update = We(Ve(pt(t), t.update), 30)), t;
}
ft(e, i);
var t = e.prototype;
return (
(t.createEl = function () {
return i.prototype.createEl.call(this, 'div', { className: 'vjs-volume-tooltip' }, { 'aria-hidden': 'true' });
}),
(t.update = function (e, t, i, n) {
if (!i) {
var r = de(this.el_),
a = de(this.player_.el()),
i = e.width * t;
if (!a || !r) return;
(t = e.left - a.left + i), (a = e.width - i + (a.right - e.right)), (e = r.width / 2);
t < e ? (e += e - t) : a < e && (e = a), e < 0 ? (e = 0) : e > r.width && (e = r.width), (this.el_.style.right = '-' + e + 'px');
}
this.write(n + '%');
}),
(t.write = function (e) {
J(this.el_, e);
}),
(t.updateVolume = function (e, t, i, n, r) {
var a = this;
this.requestNamedAnimationFrame('VolumeLevelTooltip#updateVolume', function () {
a.update(e, t, i, n.toFixed(0)), r && r();
});
}),
e
);
})(ht)
);
k = (function (i) {
function e(e, t) {
t = i.call(this, e, t) || this;
return (t.update = We(Ve(pt(t), t.update), 30)), t;
}
ft(e, i);
var t = e.prototype;
return (
(t.createEl = function () {
return i.prototype.createEl.call(this, 'div', { className: 'vjs-mouse-display' });
}),
(t.update = function (e, t, i) {
var n = this,
r = 100 * t;
this.getChild('volumeLevelTooltip').updateVolume(e, t, i, r, function () {
i ? (n.el_.style.bottom = e.height * t + 'px') : (n.el_.style.left = e.width * t + 'px');
});
}),
e
);
})(ht);
(k.prototype.options_ = { children: ['volumeLevelTooltip'] }), ht.registerComponent('MouseVolumeLevelDisplay', k);
f = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.on('slideractive', function (e) {
return i.updateLastVolume_(e);
}),
i.on(e, 'volumechange', function (e) {
return i.updateARIAAttributes(e);
}),
e.ready(function () {
return i.updateARIAAttributes();
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function () {
return n.prototype.createEl.call(this, 'div', { className: 'vjs-volume-bar vjs-slider-bar' }, { 'aria-label': this.localize('Volume Level'), 'aria-live': 'polite' });
}),
(t.handleMouseDown = function (e) {
_e(e) && n.prototype.handleMouseDown.call(this, e);
}),
(t.handleMouseMove = function (e) {
var t,
i,
n,
r = this.getChild('mouseVolumeLevelDisplay');
r && ((t = de((n = this.el()))), (i = this.vertical()), (n = pe(n, e)), (n = i ? n.y : n.x), (n = cn(n, 0, 1)), r.update(t, n, i)), _e(e) && (this.checkMuted(), this.player_.volume(this.calculateDistance(e)));
}),
(t.checkMuted = function () {
this.player_.muted() && this.player_.muted(!1);
}),
(t.getPercent = function () {
return this.player_.muted() ? 0 : this.player_.volume();
}),
(t.stepForward = function () {
this.checkMuted(), this.player_.volume(this.player_.volume() + 0.1);
}),
(t.stepBack = function () {
this.checkMuted(), this.player_.volume(this.player_.volume() - 0.1);
}),
(t.updateARIAAttributes = function (e) {
var t = this.player_.muted() ? 0 : this.volumeAsPercentage_();
this.el_.setAttribute('aria-valuenow', t), this.el_.setAttribute('aria-valuetext', t + '%');
}),
(t.volumeAsPercentage_ = function () {
return Math.round(100 * this.player_.volume());
}),
(t.updateLastVolume_ = function () {
var e = this,
t = this.player_.volume();
this.one('sliderinactive', function () {
0 === e.player_.volume() && e.player_.lastVolume_(t);
});
}),
e
);
})(li);
(f.prototype.options_ = { children: ['volumeLevel'], barName: 'volumeLevel' }), q || A || f.prototype.options_.children.splice(0, 0, 'mouseVolumeLevelDisplay'), (f.prototype.playerEvent = 'volumechange'), ht.registerComponent('VolumeBar', f);
ui = (function (a) {
function e(e, t) {
var i, n, r;
return (
((t = void 0 === t ? {} : t).vertical = t.vertical || !1),
('undefined' != typeof t.volumeBar && !w(t.volumeBar)) || ((t.volumeBar = t.volumeBar || {}), (t.volumeBar.vertical = t.vertical)),
(i = a.call(this, e, t) || this),
(n = pt(i)),
(r = e).tech_ && !r.tech_.featuresVolumeControl && n.addClass('vjs-hidden'),
n.on(r, 'loadstart', function () {
r.tech_.featuresVolumeControl ? n.removeClass('vjs-hidden') : n.addClass('vjs-hidden');
}),
(i.throttledHandleMouseMove = We(Ve(pt(i), i.handleMouseMove), 30)),
(i.handleMouseUpHandler_ = function (e) {
return i.handleMouseUp(e);
}),
i.on('mousedown', function (e) {
return i.handleMouseDown(e);
}),
i.on('touchstart', function (e) {
return i.handleMouseDown(e);
}),
i.on('mousemove', function (e) {
return i.handleMouseMove(e);
}),
i.on(i.volumeBar, ['focus', 'slideractive'], function () {
i.volumeBar.addClass('vjs-slider-active'), i.addClass('vjs-slider-active'), i.trigger('slideractive');
}),
i.on(i.volumeBar, ['blur', 'sliderinactive'], function () {
i.volumeBar.removeClass('vjs-slider-active'), i.removeClass('vjs-slider-active'), i.trigger('sliderinactive');
}),
i
);
}
ft(e, a);
var t = e.prototype;
return (
(t.createEl = function () {
var e = 'vjs-volume-horizontal';
return this.options_.vertical && (e = 'vjs-volume-vertical'), a.prototype.createEl.call(this, 'div', { className: 'vjs-volume-control vjs-control ' + e });
}),
(t.handleMouseDown = function (e) {
var t = this.el_.ownerDocument;
this.on(t, 'mousemove', this.throttledHandleMouseMove), this.on(t, 'touchmove', this.throttledHandleMouseMove), this.on(t, 'mouseup', this.handleMouseUpHandler_), this.on(t, 'touchend', this.handleMouseUpHandler_);
}),
(t.handleMouseUp = function (e) {
var t = this.el_.ownerDocument;
this.off(t, 'mousemove', this.throttledHandleMouseMove), this.off(t, 'touchmove', this.throttledHandleMouseMove), this.off(t, 'mouseup', this.handleMouseUpHandler_), this.off(t, 'touchend', this.handleMouseUpHandler_);
}),
(t.handleMouseMove = function (e) {
this.volumeBar.handleMouseMove(e);
}),
e
);
})(ht);
(ui.prototype.options_ = { children: ['volumeBar'] }), ht.registerComponent('VolumeControl', ui);
Xt = (function (a) {
function e(e, t) {
var i,
n,
r = a.call(this, e, t) || this;
return (
(i = pt(r)),
(n = e).tech_ && !n.tech_.featuresMuteControl && i.addClass('vjs-hidden'),
i.on(n, 'loadstart', function () {
n.tech_.featuresMuteControl ? i.removeClass('vjs-hidden') : i.addClass('vjs-hidden');
}),
r.on(e, ['loadstart', 'volumechange'], function (e) {
return r.update(e);
}),
r
);
}
ft(e, a);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-mute-control ' + a.prototype.buildCSSClass.call(this);
}),
(t.handleClick = function (e) {
var t = this.player_.volume(),
i = this.player_.lastVolume_();
0 === t ? (this.player_.volume(i < 0.1 ? 0.1 : i), this.player_.muted(!1)) : this.player_.muted(!this.player_.muted());
}),
(t.update = function (e) {
this.updateIcon_(), this.updateControlText_();
}),
(t.updateIcon_ = function () {
var e = this.player_.volume(),
t = 3;
q && this.player_.tech_ && this.player_.tech_.el_ && this.player_.muted(this.player_.tech_.el_.muted), 0 === e || this.player_.muted() ? (t = 0) : e < 0.33 ? (t = 1) : e < 0.67 && (t = 2);
for (var i = 0; i < 4; i++) ie(this.el_, 'vjs-vol-' + i);
te(this.el_, 'vjs-vol-' + t);
}),
(t.updateControlText_ = function () {
var e = this.player_.muted() || 0 === this.player_.volume() ? 'Unmute' : 'Mute';
this.controlText() !== e && this.controlText(e);
}),
e
);
})(sn);
(Xt.prototype.controlText_ = 'Mute'), ht.registerComponent('MuteToggle', Xt);
I = (function (n) {
function e(e, t) {
var i;
return (
'undefined' != typeof (t = void 0 === t ? {} : t).inline ? (t.inline = t.inline) : (t.inline = !0),
('undefined' != typeof t.volumeControl && !w(t.volumeControl)) || ((t.volumeControl = t.volumeControl || {}), (t.volumeControl.vertical = !t.inline)),
((i = n.call(this, e, t) || this).handleKeyPressHandler_ = function (e) {
return i.handleKeyPress(e);
}),
i.on(e, ['loadstart'], function (e) {
return i.volumePanelState_(e);
}),
i.on(i.muteToggle, 'keyup', function (e) {
return i.handleKeyPress(e);
}),
i.on(i.volumeControl, 'keyup', function (e) {
return i.handleVolumeControlKeyUp(e);
}),
i.on('keydown', function (e) {
return i.handleKeyPress(e);
}),
i.on('mouseover', function (e) {
return i.handleMouseOver(e);
}),
i.on('mouseout', function (e) {
return i.handleMouseOut(e);
}),
i.on(i.volumeControl, ['slideractive'], i.sliderActive_),
i.on(i.volumeControl, ['sliderinactive'], i.sliderInactive_),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.sliderActive_ = function () {
this.addClass('vjs-slider-active');
}),
(t.sliderInactive_ = function () {
this.removeClass('vjs-slider-active');
}),
(t.volumePanelState_ = function () {
this.volumeControl.hasClass('vjs-hidden') && this.muteToggle.hasClass('vjs-hidden') && this.addClass('vjs-hidden'), this.volumeControl.hasClass('vjs-hidden') && !this.muteToggle.hasClass('vjs-hidden') && this.addClass('vjs-mute-toggle-only');
}),
(t.createEl = function () {
var e = 'vjs-volume-panel-horizontal';
return this.options_.inline || (e = 'vjs-volume-panel-vertical'), n.prototype.createEl.call(this, 'div', { className: 'vjs-volume-panel vjs-control ' + e });
}),
(t.dispose = function () {
this.handleMouseOut(), n.prototype.dispose.call(this);
}),
(t.handleVolumeControlKeyUp = function (e) {
It.isEventKey(e, 'Esc') && this.muteToggle.focus();
}),
(t.handleMouseOver = function (e) {
this.addClass('vjs-hover'), Be(document, 'keyup', this.handleKeyPressHandler_);
}),
(t.handleMouseOut = function (e) {
this.removeClass('vjs-hover'), Fe(document, 'keyup', this.handleKeyPressHandler_);
}),
(t.handleKeyPress = function (e) {
It.isEventKey(e, 'Esc') && this.handleMouseOut();
}),
e
);
})(ht);
(I.prototype.options_ = { children: ['muteToggle', 'volumeControl'] }), ht.registerComponent('VolumePanel', I);
var hn = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
t && (i.menuButton_ = t.menuButton),
(i.focusedChild_ = -1),
i.on('keydown', function (e) {
return i.handleKeyDown(e);
}),
(i.boundHandleBlur_ = function (e) {
return i.handleBlur(e);
}),
(i.boundHandleTapClick_ = function (e) {
return i.handleTapClick(e);
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.addEventListenerForItem = function (e) {
e instanceof ht && (this.on(e, 'blur', this.boundHandleBlur_), this.on(e, ['tap', 'click'], this.boundHandleTapClick_));
}),
(t.removeEventListenerForItem = function (e) {
e instanceof ht && (this.off(e, 'blur', this.boundHandleBlur_), this.off(e, ['tap', 'click'], this.boundHandleTapClick_));
}),
(t.removeChild = function (e) {
'string' == typeof e && (e = this.getChild(e)), this.removeEventListenerForItem(e), n.prototype.removeChild.call(this, e);
}),
(t.addItem = function (e) {
e = this.addChild(e);
e && this.addEventListenerForItem(e);
}),
(t.createEl = function () {
var e = this.options_.contentElType || 'ul';
(this.contentEl_ = $(e, { className: 'vjs-menu-content' })), this.contentEl_.setAttribute('role', 'menu');
e = n.prototype.createEl.call(this, 'div', { append: this.contentEl_, className: 'vjs-menu' });
return (
e.appendChild(this.contentEl_),
Be(e, 'click', function (e) {
e.preventDefault(), e.stopImmediatePropagation();
}),
e
);
}),
(t.dispose = function () {
(this.contentEl_ = null), (this.boundHandleBlur_ = null), (this.boundHandleTapClick_ = null), n.prototype.dispose.call(this);
}),
(t.handleBlur = function (e) {
var t = e.relatedTarget || document.activeElement;
this.children().some(function (e) {
return e.el() === t;
}) ||
((e = this.menuButton_) && e.buttonPressed_ && t !== e.el().firstChild && e.unpressButton());
}),
(t.handleTapClick = function (t) {
var e;
this.menuButton_ &&
(this.menuButton_.unpressButton(),
(e = this.children()),
!Array.isArray(e) ||
((e = e.filter(function (e) {
return e.el() === t.target;
})[0]) &&
'CaptionSettingsMenuItem' !== e.name() &&
this.menuButton_.focus()));
}),
(t.handleKeyDown = function (e) {
It.isEventKey(e, 'Left') || It.isEventKey(e, 'Down') ? (e.preventDefault(), e.stopPropagation(), this.stepForward()) : (It.isEventKey(e, 'Right') || It.isEventKey(e, 'Up')) && (e.preventDefault(), e.stopPropagation(), this.stepBack());
}),
(t.stepForward = function () {
var e = 0;
void 0 !== this.focusedChild_ && (e = this.focusedChild_ + 1), this.focus(e);
}),
(t.stepBack = function () {
var e = 0;
void 0 !== this.focusedChild_ && (e = this.focusedChild_ - 1), this.focus(e);
}),
(t.focus = function (e) {
void 0 === e && (e = 0);
var t = this.children().slice();
t.length && t[0].hasClass('vjs-menu-title') && t.shift(), 0 < t.length && (e < 0 ? (e = 0) : e >= t.length && (e = t.length - 1), t[(this.focusedChild_ = e)].el_.focus());
}),
e
);
})(ht);
ht.registerComponent('Menu', hn);
Bt = (function (n) {
function e(e, t) {
var i;
((i = n.call(this, e, (t = void 0 === t ? {} : t)) || this).menuButton_ = new sn(e, t)), i.menuButton_.controlText(i.controlText_), i.menuButton_.el_.setAttribute('aria-haspopup', 'true');
t = sn.prototype.buildCSSClass();
(i.menuButton_.el_.className = i.buildCSSClass() + ' ' + t), i.menuButton_.removeClass('vjs-control'), i.addChild(i.menuButton_), i.update(), (i.enabled_ = !0);
t = function (e) {
return i.handleClick(e);
};
return (
(i.handleMenuKeyUp_ = function (e) {
return i.handleMenuKeyUp(e);
}),
i.on(i.menuButton_, 'tap', t),
i.on(i.menuButton_, 'click', t),
i.on(i.menuButton_, 'keydown', function (e) {
return i.handleKeyDown(e);
}),
i.on(i.menuButton_, 'mouseenter', function () {
i.addClass('vjs-hover'), i.menu.show(), Be(document, 'keyup', i.handleMenuKeyUp_);
}),
i.on('mouseleave', function (e) {
return i.handleMouseLeave(e);
}),
i.on('keydown', function (e) {
return i.handleSubmenuKeyDown(e);
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.update = function () {
var e = this.createMenu();
this.menu && (this.menu.dispose(), this.removeChild(this.menu)), (this.menu = e), this.addChild(e), (this.buttonPressed_ = !1), this.menuButton_.el_.setAttribute('aria-expanded', 'false'), this.items && this.items.length <= this.hideThreshold_ ? this.hide() : this.show();
}),
(t.createMenu = function () {
var e,
t = new hn(this.player_, { menuButton: this });
if (((this.hideThreshold_ = 0), this.options_.title && ((e = $('li', { className: 'vjs-menu-title', textContent: ut(this.options_.title), tabIndex: -1 })), (e = new ht(this.player_, { el: e })), t.addItem(e)), (this.items = this.createItems()), this.items)) for (var i = 0; i < this.items.length; i++) t.addItem(this.items[i]);
return t;
}),
(t.createItems = function () {}),
(t.createEl = function () {
return n.prototype.createEl.call(this, 'div', { className: this.buildWrapperCSSClass() }, {});
}),
(t.buildWrapperCSSClass = function () {
var e = 'vjs-menu-button';
return !0 === this.options_.inline ? (e += '-inline') : (e += '-popup'), 'vjs-menu-button ' + e + ' ' + sn.prototype.buildCSSClass() + ' ' + n.prototype.buildCSSClass.call(this);
}),
(t.buildCSSClass = function () {
var e = 'vjs-menu-button';
return !0 === this.options_.inline ? (e += '-inline') : (e += '-popup'), 'vjs-menu-button ' + e + ' ' + n.prototype.buildCSSClass.call(this);
}),
(t.controlText = function (e, t) {
return void 0 === t && (t = this.menuButton_.el()), this.menuButton_.controlText(e, t);
}),
(t.dispose = function () {
this.handleMouseLeave(), n.prototype.dispose.call(this);
}),
(t.handleClick = function (e) {
this.buttonPressed_ ? this.unpressButton() : this.pressButton();
}),
(t.handleMouseLeave = function (e) {
this.removeClass('vjs-hover'), Fe(document, 'keyup', this.handleMenuKeyUp_);
}),
(t.focus = function () {
this.menuButton_.focus();
}),
(t.blur = function () {
this.menuButton_.blur();
}),
(t.handleKeyDown = function (e) {
It.isEventKey(e, 'Esc') || It.isEventKey(e, 'Tab') ? (this.buttonPressed_ && this.unpressButton(), It.isEventKey(e, 'Tab') || (e.preventDefault(), this.menuButton_.focus())) : (It.isEventKey(e, 'Up') || It.isEventKey(e, 'Down')) && (this.buttonPressed_ || (e.preventDefault(), this.pressButton()));
}),
(t.handleMenuKeyUp = function (e) {
(It.isEventKey(e, 'Esc') || It.isEventKey(e, 'Tab')) && this.removeClass('vjs-hover');
}),
(t.handleSubmenuKeyPress = function (e) {
this.handleSubmenuKeyDown(e);
}),
(t.handleSubmenuKeyDown = function (e) {
(It.isEventKey(e, 'Esc') || It.isEventKey(e, 'Tab')) && (this.buttonPressed_ && this.unpressButton(), It.isEventKey(e, 'Tab') || (e.preventDefault(), this.menuButton_.focus()));
}),
(t.pressButton = function () {
this.enabled_ && ((this.buttonPressed_ = !0), this.menu.show(), this.menu.lockShowing(), this.menuButton_.el_.setAttribute('aria-expanded', 'true'), (q && Y()) || this.menu.focus());
}),
(t.unpressButton = function () {
this.enabled_ && ((this.buttonPressed_ = !1), this.menu.unlockShowing(), this.menu.hide(), this.menuButton_.el_.setAttribute('aria-expanded', 'false'));
}),
(t.disable = function () {
this.unpressButton(), (this.enabled_ = !1), this.addClass('vjs-disabled'), this.menuButton_.disable();
}),
(t.enable = function () {
(this.enabled_ = !0), this.removeClass('vjs-disabled'), this.menuButton_.enable();
}),
e
);
})(ht);
ht.registerComponent('MenuButton', Bt);
Ft = (function (r) {
function e(e, t) {
var i = t.tracks,
t = r.call(this, e, t) || this;
if ((t.items.length <= 1 && t.hide(), !i)) return pt(t);
var n = Ve(pt(t), t.update);
return (
i.addEventListener('removetrack', n),
i.addEventListener('addtrack', n),
i.addEventListener('labelchange', n),
t.player_.on('ready', n),
t.player_.on('dispose', function () {
i.removeEventListener('removetrack', n), i.removeEventListener('addtrack', n), i.removeEventListener('labelchange', n);
}),
t
);
}
return ft(e, r), e;
})(Bt);
ht.registerComponent('TrackButton', Ft);
var pn = ['Tab', 'Esc', 'Up', 'Down', 'Right', 'Left'],
jt = (function (n) {
function e(e, t) {
e = n.call(this, e, t) || this;
return (e.selectable = t.selectable), (e.isSelected_ = t.selected || !1), (e.multiSelectable = t.multiSelectable), e.selected(e.isSelected_), e.selectable ? (e.multiSelectable ? e.el_.setAttribute('role', 'menuitemcheckbox') : e.el_.setAttribute('role', 'menuitemradio')) : e.el_.setAttribute('role', 'menuitem'), e;
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function (e, t, i) {
this.nonIconControl = !0;
i = n.prototype.createEl.call(this, 'li', b({ className: 'vjs-menu-item', tabIndex: -1 }, t), i);
return i.replaceChild($('span', { className: 'vjs-menu-item-text', textContent: this.localize(this.options_.label) }), i.querySelector('.vjs-icon-placeholder')), i;
}),
(t.handleKeyDown = function (t) {
pn.some(function (e) {
return It.isEventKey(t, e);
}) || n.prototype.handleKeyDown.call(this, t);
}),
(t.handleClick = function (e) {
this.selected(!0);
}),
(t.selected = function (e) {
this.selectable && (e ? (this.addClass('vjs-selected'), this.el_.setAttribute('aria-checked', 'true'), this.controlText(', selected'), (this.isSelected_ = !0)) : (this.removeClass('vjs-selected'), this.el_.setAttribute('aria-checked', 'false'), this.controlText(''), (this.isSelected_ = !1)));
}),
e
);
})(C);
ht.registerComponent('MenuItem', jt);
var fn = (function (u) {
function e(e, t) {
var n,
i = t.track,
r = e.textTracks();
(t.label = i.label || i.language || 'Unknown'), (t.selected = 'showing' === i.mode), ((n = u.call(this, e, t) || this).track = i), (n.kinds = (t.kinds || [t.kind || n.track.kind]).filter(Boolean));
function a() {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
n.handleTracksChange.apply(pt(n), t);
}
function s() {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
n.handleSelectedLanguageChange.apply(pt(n), t);
}
var o;
return (
e.on(['loadstart', 'texttrackchange'], a),
r.addEventListener('change', a),
r.addEventListener('selectedlanguagechange', s),
n.on('dispose', function () {
e.off(['loadstart', 'texttrackchange'], a), r.removeEventListener('change', a), r.removeEventListener('selectedlanguagechange', s);
}),
void 0 === r.onchange &&
n.on(['tap', 'click'], function () {
if ('object' != typeof window.Event)
try {
o = new window.Event('change');
} catch (e) {}
o || (o = document.createEvent('Event')).initEvent('change', !0, !0), r.dispatchEvent(o);
}),
n.handleTracksChange(),
n
);
}
ft(e, u);
var t = e.prototype;
return (
(t.handleClick = function (e) {
var t = this.track,
i = this.player_.textTracks();
if ((u.prototype.handleClick.call(this, e), i))
for (var n = 0; n < i.length; n++) {
var r = i[n];
-1 !== this.kinds.indexOf(r.kind) && (r === t ? 'showing' !== r.mode && (r.mode = 'showing') : 'disabled' !== r.mode && (r.mode = 'disabled'));
}
}),
(t.handleTracksChange = function (e) {
var t = 'showing' === this.track.mode;
t !== this.isSelected_ && this.selected(t);
}),
(t.handleSelectedLanguageChange = function (e) {
var t;
'showing' === this.track.mode && (((t = this.player_.cache_.selectedLanguage) && t.enabled && t.language === this.track.language && t.kind !== this.track.kind) || (this.player_.cache_.selectedLanguage = { enabled: !0, language: this.track.language, kind: this.track.kind }));
}),
(t.dispose = function () {
(this.track = null), u.prototype.dispose.call(this);
}),
e
);
})(jt);
ht.registerComponent('TextTrackMenuItem', fn);
var mn = (function (i) {
function e(e, t) {
return (t.track = { player: e, kind: t.kind, kinds: t.kinds, default: !1, mode: 'disabled' }), t.kinds || (t.kinds = [t.kind]), t.label ? (t.track.label = t.label) : (t.track.label = t.kinds.join(' and ') + ' off'), (t.selectable = !0), (t.multiSelectable = !1), i.call(this, e, t) || this;
}
ft(e, i);
var t = e.prototype;
return (
(t.handleTracksChange = function (e) {
for (var t = this.player().textTracks(), i = !0, n = 0, r = t.length; n < r; n++) {
var a = t[n];
if (-1 < this.options_.kinds.indexOf(a.kind) && 'showing' === a.mode) {
i = !1;
break;
}
}
i !== this.isSelected_ && this.selected(i);
}),
(t.handleSelectedLanguageChange = function (e) {
for (var t = this.player().textTracks(), i = !0, n = 0, r = t.length; n < r; n++) {
var a = t[n];
if (-1 < ['captions', 'descriptions', 'subtitles'].indexOf(a.kind) && 'showing' === a.mode) {
i = !1;
break;
}
}
i && (this.player_.cache_.selectedLanguage = { enabled: !1 });
}),
e
);
})(fn);
ht.registerComponent('OffTextTrackMenuItem', mn);
j = (function (i) {
function e(e, t) {
return ((t = void 0 === t ? {} : t).tracks = e.textTracks()), i.call(this, e, t) || this;
}
return (
ft(e, i),
(e.prototype.createItems = function (e, t) {
var i;
void 0 === t && (t = fn), this.label_ && (i = this.label_ + ' off'), (e = void 0 === e ? [] : e).push(new mn(this.player_, { kinds: this.kinds_, kind: this.kind_, label: i })), (this.hideThreshold_ += 1);
var n = this.player_.textTracks();
Array.isArray(this.kinds_) || (this.kinds_ = [this.kind_]);
for (var r = 0; r < n.length; r++) {
var a,
s = n[r];
-1 < this.kinds_.indexOf(s.kind) && ((a = new t(this.player_, { track: s, kinds: this.kinds_, kind: this.kind_, selectable: !0, multiSelectable: !1 })).addClass('vjs-' + s.kind + '-menu-item'), e.push(a));
}
return e;
}),
e
);
})(Ft);
ht.registerComponent('TextTrackButton', j);
var gn = (function (a) {
function e(e, t) {
var i = t.track,
n = t.cue,
r = e.currentTime();
return (t.selectable = !0), (t.multiSelectable = !1), (t.label = n.text), (t.selected = n.startTime <= r && r < n.endTime), ((t = a.call(this, e, t) || this).track = i), (t.cue = n), i.addEventListener('cuechange', Ve(pt(t), t.update)), t;
}
ft(e, a);
var t = e.prototype;
return (
(t.handleClick = function (e) {
a.prototype.handleClick.call(this), this.player_.currentTime(this.cue.startTime), this.update(this.cue.startTime);
}),
(t.update = function (e) {
var t = this.cue,
i = this.player_.currentTime();
this.selected(t.startTime <= i && i < t.endTime);
}),
e
);
})(jt);
ht.registerComponent('ChaptersTrackMenuItem', gn);
k = (function (n) {
function e(e, t, i) {
return n.call(this, e, t, i) || this;
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-chapters-button ' + n.prototype.buildCSSClass.call(this);
}),
(t.buildWrapperCSSClass = function () {
return 'vjs-chapters-button ' + n.prototype.buildWrapperCSSClass.call(this);
}),
(t.update = function (e) {
(this.track_ && (!e || ('addtrack' !== e.type && 'removetrack' !== e.type))) || this.setTrack(this.findChaptersTrack()), n.prototype.update.call(this);
}),
(t.setTrack = function (e) {
var t;
this.track_ !== e && (this.updateHandler_ || (this.updateHandler_ = this.update.bind(this)), this.track_ && ((t = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_)) && t.removeEventListener('load', this.updateHandler_), (this.track_ = null)), (this.track_ = e), this.track_ && ((this.track_.mode = 'hidden'), (e = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_)) && e.addEventListener('load', this.updateHandler_)));
}),
(t.findChaptersTrack = function () {
for (var e = this.player_.textTracks() || [], t = e.length - 1; 0 <= t; t--) {
var i = e[t];
if (i.kind === this.kind_) return i;
}
}),
(t.getMenuCaption = function () {
return this.track_ && this.track_.label ? this.track_.label : this.localize(ut(this.kind_));
}),
(t.createMenu = function () {
return (this.options_.title = this.getMenuCaption()), n.prototype.createMenu.call(this);
}),
(t.createItems = function () {
var e = [];
if (!this.track_) return e;
var t = this.track_.cues;
if (!t) return e;
for (var i = 0, n = t.length; i < n; i++) {
var r = t[i],
r = new gn(this.player_, { track: this.track_, cue: r });
e.push(r);
}
return e;
}),
e
);
})(j);
(k.prototype.kind_ = 'chapters'), (k.prototype.controlText_ = 'Chapters'), ht.registerComponent('ChaptersButton', k);
li = (function (a) {
function e(e, t, i) {
var i = a.call(this, e, t, i) || this,
n = e.textTracks(),
r = Ve(pt(i), i.handleTracksChange);
return (
n.addEventListener('change', r),
i.on('dispose', function () {
n.removeEventListener('change', r);
}),
i
);
}
ft(e, a);
var t = e.prototype;
return (
(t.handleTracksChange = function (e) {
for (var t = this.player().textTracks(), i = !1, n = 0, r = t.length; n < r; n++) {
var a = t[n];
if (a.kind !== this.kind_ && 'showing' === a.mode) {
i = !0;
break;
}
}
i ? this.disable() : this.enable();
}),
(t.buildCSSClass = function () {
return 'vjs-descriptions-button ' + a.prototype.buildCSSClass.call(this);
}),
(t.buildWrapperCSSClass = function () {
return 'vjs-descriptions-button ' + a.prototype.buildWrapperCSSClass.call(this);
}),
e
);
})(j);
(li.prototype.kind_ = 'descriptions'), (li.prototype.controlText_ = 'Descriptions'), ht.registerComponent('DescriptionsButton', li);
f = (function (n) {
function e(e, t, i) {
return n.call(this, e, t, i) || this;
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-subtitles-button ' + n.prototype.buildCSSClass.call(this);
}),
(t.buildWrapperCSSClass = function () {
return 'vjs-subtitles-button ' + n.prototype.buildWrapperCSSClass.call(this);
}),
e
);
})(j);
(f.prototype.kind_ = 'subtitles'), (f.prototype.controlText_ = 'Subtitles'), ht.registerComponent('SubtitlesButton', f);
var yn = (function (i) {
function e(e, t) {
return (t.track = { player: e, kind: t.kind, label: t.kind + ' settings', selectable: !1, default: !1, mode: 'disabled' }), (t.selectable = !1), (t.name = 'CaptionSettingsMenuItem'), (e = i.call(this, e, t) || this).addClass('vjs-texttrack-settings'), e.controlText(', opens ' + t.kind + ' settings dialog'), e;
}
return (
ft(e, i),
(e.prototype.handleClick = function (e) {
this.player().getChild('textTrackSettings').open();
}),
e
);
})(fn);
ht.registerComponent('CaptionSettingsMenuItem', yn);
ui = (function (n) {
function e(e, t, i) {
return n.call(this, e, t, i) || this;
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-captions-button ' + n.prototype.buildCSSClass.call(this);
}),
(t.buildWrapperCSSClass = function () {
return 'vjs-captions-button ' + n.prototype.buildWrapperCSSClass.call(this);
}),
(t.createItems = function () {
var e = [];
return (this.player().tech_ && this.player().tech_.featuresNativeTextTracks) || !this.player().getChild('textTrackSettings') || (e.push(new yn(this.player_, { kind: this.kind_ })), (this.hideThreshold_ += 1)), n.prototype.createItems.call(this, e);
}),
e
);
})(j);
(ui.prototype.kind_ = 'captions'), (ui.prototype.controlText_ = 'Captions'), ht.registerComponent('CaptionsButton', ui);
var vn = (function (n) {
function e() {
return n.apply(this, arguments) || this;
}
return (
ft(e, n),
(e.prototype.createEl = function (e, t, i) {
(t = n.prototype.createEl.call(this, e, t, i)), (i = t.querySelector('.vjs-menu-item-text'));
return 'captions' === this.options_.track.kind && (i.appendChild($('span', { className: 'vjs-icon-placeholder' }, { 'aria-hidden': !0 })), i.appendChild($('span', { className: 'vjs-control-text', textContent: ' ' + this.localize('Captions') }))), t;
}),
e
);
})(fn);
ht.registerComponent('SubsCapsMenuItem', vn);
Xt = (function (i) {
function e(e, t) {
return ((t = i.call(this, e, (t = void 0 === t ? {} : t)) || this).label_ = 'subtitles'), -1 < ['en', 'en-us', 'en-ca', 'fr-ca'].indexOf(t.player_.language_) && (t.label_ = 'captions'), t.menuButton_.controlText(ut(t.label_)), t;
}
ft(e, i);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-subs-caps-button ' + i.prototype.buildCSSClass.call(this);
}),
(t.buildWrapperCSSClass = function () {
return 'vjs-subs-caps-button ' + i.prototype.buildWrapperCSSClass.call(this);
}),
(t.createItems = function () {
var e = [];
return (this.player().tech_ && this.player().tech_.featuresNativeTextTracks) || !this.player().getChild('textTrackSettings') || (e.push(new yn(this.player_, { kind: this.label_ })), (this.hideThreshold_ += 1)), (e = i.prototype.createItems.call(this, e, vn));
}),
e
);
})(j);
(Xt.prototype.kinds_ = ['captions', 'subtitles']), (Xt.prototype.controlText_ = 'Subtitles'), ht.registerComponent('SubsCapsButton', Xt);
var _n = (function (s) {
function e(e, t) {
var n,
i = t.track,
r = e.audioTracks();
(t.label = i.label || i.language || 'Unknown'), (t.selected = i.enabled), ((n = s.call(this, e, t) || this).track = i), n.addClass('vjs-' + i.kind + '-menu-item');
function a() {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
n.handleTracksChange.apply(pt(n), t);
}
return (
r.addEventListener('change', a),
n.on('dispose', function () {
r.removeEventListener('change', a);
}),
n
);
}
ft(e, s);
var t = e.prototype;
return (
(t.createEl = function (e, t, i) {
(t = s.prototype.createEl.call(this, e, t, i)), (i = t.querySelector('.vjs-menu-item-text'));
return 'main-desc' === this.options_.track.kind && (i.appendChild(s.prototype.createEl.call(this, 'span', { className: 'vjs-icon-placeholder' }, { 'aria-hidden': !0 })), i.appendChild(s.prototype.createEl.call(this, 'span', { className: 'vjs-control-text', textContent: this.localize('Descriptions') }))), t;
}),
(t.handleClick = function (e) {
s.prototype.handleClick.call(this, e), (this.track.enabled = !0);
}),
(t.handleTracksChange = function (e) {
this.selected(this.track.enabled);
}),
e
);
})(jt);
ht.registerComponent('AudioTrackMenuItem', _n);
I = (function (i) {
function e(e, t) {
return ((t = void 0 === t ? {} : t).tracks = e.audioTracks()), i.call(this, e, t) || this;
}
ft(e, i);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-audio-button ' + i.prototype.buildCSSClass.call(this);
}),
(t.buildWrapperCSSClass = function () {
return 'vjs-audio-button ' + i.prototype.buildWrapperCSSClass.call(this);
}),
(t.createItems = function (e) {
void 0 === e && (e = []), (this.hideThreshold_ = 1);
for (var t = this.player_.audioTracks(), i = 0; i < t.length; i++) {
var n = t[i];
e.push(new _n(this.player_, { track: n, selectable: !0, multiSelectable: !1 }));
}
return e;
}),
e
);
})(Ft);
(I.prototype.controlText_ = 'Audio Track'), ht.registerComponent('AudioTrackButton', I);
var bn = (function (a) {
function e(e, t) {
var i,
n = t.rate,
r = parseFloat(n, 10);
return (
(t.label = n),
(t.selected = r === e.playbackRate()),
(t.selectable = !0),
(t.multiSelectable = !1),
((i = a.call(this, e, t) || this).label = n),
(i.rate = r),
i.on(e, 'ratechange', function (e) {
return i.update(e);
}),
i
);
}
ft(e, a);
var t = e.prototype;
return (
(t.handleClick = function (e) {
a.prototype.handleClick.call(this), this.player().playbackRate(this.rate);
}),
(t.update = function (e) {
this.selected(this.player().playbackRate() === this.rate);
}),
e
);
})(jt);
(bn.prototype.contentElType = 'button'), ht.registerComponent('PlaybackRateMenuItem', bn);
C = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.menuButton_.el_.setAttribute('aria-describedby', i.labelElId_),
i.updateVisibility(),
i.updateLabel(),
i.on(e, 'loadstart', function (e) {
return i.updateVisibility(e);
}),
i.on(e, 'ratechange', function (e) {
return i.updateLabel(e);
}),
i.on(e, 'playbackrateschange', function (e) {
return i.handlePlaybackRateschange(e);
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createEl = function () {
var e = n.prototype.createEl.call(this);
return (this.labelElId_ = 'vjs-playback-rate-value-label-' + this.id_), (this.labelEl_ = $('div', { className: 'vjs-playback-rate-value', id: this.labelElId_, textContent: '1x' })), e.appendChild(this.labelEl_), e;
}),
(t.dispose = function () {
(this.labelEl_ = null), n.prototype.dispose.call(this);
}),
(t.buildCSSClass = function () {
return 'vjs-playback-rate ' + n.prototype.buildCSSClass.call(this);
}),
(t.buildWrapperCSSClass = function () {
return 'vjs-playback-rate ' + n.prototype.buildWrapperCSSClass.call(this);
}),
(t.createItems = function () {
for (var e = this.playbackRates(), t = [], i = e.length - 1; 0 <= i; i--) t.push(new bn(this.player(), { rate: e[i] + 'x' }));
return t;
}),
(t.updateARIAAttributes = function () {
this.el().setAttribute('aria-valuenow', this.player().playbackRate());
}),
(t.handleClick = function (e) {
for (var t = this.player().playbackRate(), i = this.playbackRates(), n = i[0], r = 0; r < i.length; r++)
if (i[r] > t) {
n = i[r];
break;
}
this.player().playbackRate(n);
}),
(t.handlePlaybackRateschange = function (e) {
this.update();
}),
(t.playbackRates = function () {
var e = this.player();
return (e.playbackRates && e.playbackRates()) || [];
}),
(t.playbackRateSupported = function () {
return this.player().tech_ && this.player().tech_.featuresPlaybackRate && this.playbackRates() && 0 < this.playbackRates().length;
}),
(t.updateVisibility = function (e) {
this.playbackRateSupported() ? this.removeClass('vjs-hidden') : this.addClass('vjs-hidden');
}),
(t.updateLabel = function (e) {
this.playbackRateSupported() && (this.labelEl_.textContent = this.player().playbackRate() + 'x');
}),
e
);
})(Bt);
(C.prototype.controlText_ = 'Playback Rate'), ht.registerComponent('PlaybackRateMenuButton', C);
k = (function (n) {
function e() {
return n.apply(this, arguments) || this;
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-spacer ' + n.prototype.buildCSSClass.call(this);
}),
(t.createEl = function (e, t, i) {
return void 0 === e && (e = 'div'), void 0 === i && (i = {}), (t = void 0 === t ? {} : t).className || (t.className = this.buildCSSClass()), n.prototype.createEl.call(this, e, t, i);
}),
e
);
})(ht);
ht.registerComponent('Spacer', k),
ht.registerComponent(
'CustomControlSpacer',
(function (e) {
function t() {
return e.apply(this, arguments) || this;
}
ft(t, e);
var i = t.prototype;
return (
(i.buildCSSClass = function () {
return 'vjs-custom-control-spacer ' + e.prototype.buildCSSClass.call(this);
}),
(i.createEl = function () {
return e.prototype.createEl.call(this, 'div', { className: this.buildCSSClass(), textContent: ' ' });
}),
t
);
})(k)
);
li = (function (e) {
function t() {
return e.apply(this, arguments) || this;
}
return (
ft(t, e),
(t.prototype.createEl = function () {
return e.prototype.createEl.call(this, 'div', { className: 'vjs-control-bar', dir: 'ltr' });
}),
t
);
})(ht);
(li.prototype.options_ = { children: ['playToggle', 'volumePanel', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'seekToLive', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'chaptersButton', 'descriptionsButton', 'subsCapsButton', 'audioTrackButton', 'fullscreenToggle'] }), 'exitPictureInPicture' in document && li.prototype.options_.children.splice(li.prototype.options_.children.length - 1, 0, 'pictureInPictureToggle'), ht.registerComponent('ControlBar', li);
f = (function (n) {
function e(e, t) {
var i = n.call(this, e, t) || this;
return (
i.on(e, 'error', function (e) {
return i.open(e);
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.buildCSSClass = function () {
return 'vjs-error-display ' + n.prototype.buildCSSClass.call(this);
}),
(t.content = function () {
var e = this.player().error();
return e ? this.localize(e.message) : '';
}),
e
);
})(At);
(f.prototype.options_ = g({}, At.prototype.options_, { pauseOnOpen: !1, fillAlways: !0, temporary: !1, uncloseable: !0 })), ht.registerComponent('ErrorDisplay', f);
var Tn = 'vjs-text-track-settings',
ui = ['#000', 'Black'],
j = ['#00F', 'Blue'],
Xt = ['#0FF', 'Cyan'],
Ft = ['#0F0', 'Green'],
I = ['#F0F', 'Magenta'],
jt = ['#F00', 'Red'],
Bt = ['#FFF', 'White'],
C = ['#FF0', 'Yellow'],
k = ['1', 'Opaque'],
li = ['0.5', 'Semi-Transparent'],
f = ['0', 'Transparent'],
wn = {
backgroundColor: { selector: '.vjs-bg-color > select', id: 'captions-background-color-%s', label: 'Color', options: [ui, Bt, jt, Ft, j, C, I, Xt] },
backgroundOpacity: { selector: '.vjs-bg-opacity > select', id: 'captions-background-opacity-%s', label: 'Transparency', options: [k, li, f] },
color: { selector: '.vjs-fg-color > select', id: 'captions-foreground-color-%s', label: 'Color', options: [Bt, ui, jt, Ft, j, C, I, Xt] },
edgeStyle: {
selector: '.vjs-edge-style > select',
id: '%s',
label: 'Text Edge Style',
options: [
['none', 'None'],
['raised', 'Raised'],
['depressed', 'Depressed'],
['uniform', 'Uniform'],
['dropshadow', 'Dropshadow'],
],
},
fontFamily: {
selector: '.vjs-font-family > select',
id: 'captions-font-family-%s',
label: 'Font Family',
options: [
['proportionalSansSerif', 'Proportional Sans-Serif'],
['monospaceSansSerif', 'Monospace Sans-Serif'],
['proportionalSerif', 'Proportional Serif'],
['monospaceSerif', 'Monospace Serif'],
['casual', 'Casual'],
['script', 'Script'],
['small-caps', 'Small Caps'],
],
},
fontPercent: {
selector: '.vjs-font-percent > select',
id: 'captions-font-size-%s',
label: 'Font Size',
options: [
['0.50', '50%'],
['0.75', '75%'],
['1.00', '100%'],
['1.25', '125%'],
['1.50', '150%'],
['1.75', '175%'],
['2.00', '200%'],
['3.00', '300%'],
['4.00', '400%'],
],
default: 2,
parser: function (e) {
return '1.00' === e ? null : Number(e);
},
},
textOpacity: { selector: '.vjs-text-opacity > select', id: 'captions-foreground-opacity-%s', label: 'Transparency', options: [k, li] },
windowColor: { selector: '.vjs-window-color > select', id: 'captions-window-color-%s', label: 'Color' },
windowOpacity: { selector: '.vjs-window-opacity > select', id: 'captions-window-opacity-%s', label: 'Transparency', options: [f, li, k] },
};
function Sn(e, t) {
if ((e = t ? t(e) : e) && 'none' !== e) return e;
}
(wn.windowColor.options = wn.backgroundColor.options),
ht.registerComponent(
'TextTrackSettings',
(function (n) {
function e(e, t) {
var i;
return (
(t.temporary = !1),
((i = n.call(this, e, t) || this).updateDisplay = i.updateDisplay.bind(pt(i))),
i.fill(),
(i.hasBeenOpened_ = i.hasBeenFilled_ = !0),
(i.endDialog = $('p', { className: 'vjs-control-text', textContent: i.localize('End of dialog window.') })),
i.el().appendChild(i.endDialog),
i.setDefaults(),
void 0 === t.persistTextTrackSettings && (i.options_.persistTextTrackSettings = i.options_.playerOptions.persistTextTrackSettings),
i.on(i.$('.vjs-done-button'), 'click', function () {
i.saveSettings(), i.close();
}),
i.on(i.$('.vjs-default-button'), 'click', function () {
i.setDefaults(), i.updateDisplay();
}),
_(wn, function (e) {
i.on(i.$(e.selector), 'change', i.updateDisplay);
}),
i.options_.persistTextTrackSettings && i.restoreSettings(),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.dispose = function () {
(this.endDialog = null), n.prototype.dispose.call(this);
}),
(t.createElSelect_ = function (e, t, i) {
var n = this;
void 0 === t && (t = ''), void 0 === i && (i = 'label');
var e = wn[e],
r = e.id.replace('%s', this.id_),
a = [t, r].join(' ').trim();
return ['<' + i + ' id="' + r + '" class="' + ('label' === i ? 'vjs-label' : '') + '">', this.localize(e.label), '' + i + '>', '')
.join('');
}),
(t.createElFgColor_ = function () {
var e = 'captions-text-legend-' + this.id_;
return [''].join('');
}),
(t.createElBgColor_ = function () {
var e = 'captions-background-' + this.id_;
return [''].join('');
}),
(t.createElWinColor_ = function () {
var e = 'captions-window-' + this.id_;
return [''].join('');
}),
(t.createElColors_ = function () {
return $('div', { className: 'vjs-track-settings-colors', innerHTML: [this.createElFgColor_(), this.createElBgColor_(), this.createElWinColor_()].join('') });
}),
(t.createElFont_ = function () {
return $('div', { className: 'vjs-track-settings-font', innerHTML: ['', '', ''].join('') });
}),
(t.createElControls_ = function () {
var e = this.localize('restore all settings to the default values');
return $('div', { className: 'vjs-track-settings-controls', innerHTML: ['', ''].join('') });
}),
(t.content = function () {
return [this.createElColors_(), this.createElFont_(), this.createElControls_()];
}),
(t.label = function () {
return this.localize('Caption Settings Dialog');
}),
(t.description = function () {
return this.localize('Beginning of dialog window. Escape will cancel and close the window.');
}),
(t.buildCSSClass = function () {
return n.prototype.buildCSSClass.call(this) + ' vjs-text-track-settings';
}),
(t.getValues = function () {
var i,
n,
e,
r = this;
return (
(n = function (e, t, i) {
var n,
t = ((n = r.$(t.selector)), (t = t.parser), Sn(n.options[n.options.selectedIndex].value, t));
return void 0 !== t && (e[i] = t), e;
}),
void 0 === (e = {}) && (e = 0),
v((i = wn)).reduce(function (e, t) {
return n(e, i[t], t);
}, e)
);
}),
(t.setValues = function (i) {
var n = this;
_(wn, function (e, t) {
!(function (e, t, i) {
if (t)
for (var n = 0; n < e.options.length; n++)
if (Sn(e.options[n].value, i) === t) {
e.selectedIndex = n;
break;
}
})(n.$(e.selector), i[t], e.parser);
});
}),
(t.setDefaults = function () {
var i = this;
_(wn, function (e) {
var t = e.hasOwnProperty('default') ? e.default : 0;
i.$(e.selector).selectedIndex = t;
});
}),
(t.restoreSettings = function () {
var e;
try {
e = JSON.parse(window.localStorage.getItem(Tn));
} catch (e) {
h.warn(e);
}
e && this.setValues(e);
}),
(t.saveSettings = function () {
if (this.options_.persistTextTrackSettings) {
var e = this.getValues();
try {
Object.keys(e).length ? window.localStorage.setItem(Tn, JSON.stringify(e)) : window.localStorage.removeItem(Tn);
} catch (e) {
h.warn(e);
}
}
}),
(t.updateDisplay = function () {
var e = this.player_.getChild('textTrackDisplay');
e && e.updateDisplay();
}),
(t.conditionalBlur_ = function () {
this.previouslyActiveEl_ = null;
var e = this.player_.controlBar,
t = e && e.subsCapsButton,
e = e && e.captionsButton;
t ? t.focus() : e && e.focus();
}),
e
);
})(At)
),
ht.registerComponent(
'ResizeManager',
(function (a) {
function e(e, t) {
var i,
n = t.ResizeObserver || window.ResizeObserver,
r = lt({ createEl: !(n = null === t.ResizeObserver ? !1 : n), reportTouchActivity: !1 }, t);
return (
((i = a.call(this, e, r) || this).ResizeObserver = t.ResizeObserver || window.ResizeObserver),
(i.loadListener_ = null),
(i.resizeObserver_ = null),
(i.debouncedHandler_ = ze(
function () {
i.resizeHandler();
},
100,
!1,
pt(i)
)),
n
? ((i.resizeObserver_ = new i.ResizeObserver(i.debouncedHandler_)), i.resizeObserver_.observe(e.el()))
: ((i.loadListener_ = function () {
var e, t;
i.el_ &&
i.el_.contentWindow &&
((e = i.debouncedHandler_),
(t = i.unloadListener_ =
function () {
Fe(this, 'resize', e), Fe(this, 'unload', t), (t = null);
}),
Be(i.el_.contentWindow, 'unload', t),
Be(i.el_.contentWindow, 'resize', e));
}),
i.one('load', i.loadListener_)),
i
);
}
ft(e, a);
var t = e.prototype;
return (
(t.createEl = function () {
return a.prototype.createEl.call(this, 'iframe', { className: 'vjs-resize-manager', tabIndex: -1 }, { 'aria-hidden': 'true' });
}),
(t.resizeHandler = function () {
this.player_ && this.player_.trigger && this.player_.trigger('playerresize');
}),
(t.dispose = function () {
this.debouncedHandler_ && this.debouncedHandler_.cancel(), this.resizeObserver_ && (this.player_.el() && this.resizeObserver_.unobserve(this.player_.el()), this.resizeObserver_.disconnect()), this.loadListener_ && this.off('load', this.loadListener_), this.el_ && this.el_.contentWindow && this.unloadListener_ && this.unloadListener_.call(this.el_.contentWindow), (this.ResizeObserver = null), (this.resizeObserver = null), (this.debouncedHandler_ = null), (this.loadListener_ = null), a.prototype.dispose.call(this);
}),
e
);
})(ht)
);
var En = { trackingThreshold: 20, liveTolerance: 15 };
ht.registerComponent(
'LiveTracker',
(function (n) {
function e(e, t) {
var t = lt(En, t, { createEl: !1 }),
i = n.call(this, e, t) || this;
return (
(i.handleVisibilityChange_ = function (e) {
return i.handleVisibilityChange(e);
}),
(i.trackLiveHandler_ = function () {
return i.trackLive_();
}),
(i.handlePlay_ = function (e) {
return i.handlePlay(e);
}),
(i.handleFirstTimeupdate_ = function (e) {
return i.handleFirstTimeupdate(e);
}),
(i.handleSeeked_ = function (e) {
return i.handleSeeked(e);
}),
(i.seekToLiveEdge_ = function (e) {
return i.seekToLiveEdge(e);
}),
i.reset_(),
i.on(i.player_, 'durationchange', function (e) {
return i.handleDurationchange(e);
}),
i.one(i.player_, 'canplay', function () {
return i.toggleTracking();
}),
N && 'hidden' in document && 'visibilityState' in document && i.on(document, 'visibilitychange', i.handleVisibilityChange_),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.handleVisibilityChange = function () {
this.player_.duration() === 1 / 0 && (document.hidden ? this.stopTracking() : this.startTracking());
}),
(t.trackLive_ = function () {
var e,
t = this.player_.seekable();
t && t.length && ((e = Number(window.performance.now().toFixed(4))), (t = -1 === this.lastTime_ ? 0 : (e - this.lastTime_) / 1e3), (this.lastTime_ = e), (this.pastSeekEnd_ = this.pastSeekEnd() + t), (e = this.liveCurrentTime()), (t = this.player_.currentTime()), (t = this.player_.paused() || this.seekedBehindLive_ || Math.abs(e - t) > this.options_.liveTolerance), (t = !this.timeupdateSeen_ || e === 1 / 0 ? !1 : t) !== this.behindLiveEdge_ && ((this.behindLiveEdge_ = t), this.trigger('liveedgechange')));
}),
(t.handleDurationchange = function () {
this.toggleTracking();
}),
(t.toggleTracking = function () {
this.player_.duration() === 1 / 0 && this.liveWindow() >= this.options_.trackingThreshold ? (this.player_.options_.liveui && this.player_.addClass('vjs-liveui'), this.startTracking()) : (this.player_.removeClass('vjs-liveui'), this.stopTracking());
}),
(t.startTracking = function () {
this.isTracking() || (this.timeupdateSeen_ || (this.timeupdateSeen_ = this.player_.hasStarted()), (this.trackingInterval_ = this.setInterval(this.trackLiveHandler_, 30)), this.trackLive_(), this.on(this.player_, ['play', 'pause'], this.trackLiveHandler_), this.timeupdateSeen_ ? this.on(this.player_, 'seeked', this.handleSeeked_) : (this.one(this.player_, 'play', this.handlePlay_), this.one(this.player_, 'timeupdate', this.handleFirstTimeupdate_)));
}),
(t.handleFirstTimeupdate = function () {
(this.timeupdateSeen_ = !0), this.on(this.player_, 'seeked', this.handleSeeked_);
}),
(t.handleSeeked = function () {
var e = Math.abs(this.liveCurrentTime() - this.player_.currentTime());
(this.seekedBehindLive_ = this.nextSeekedFromUser_ && 2 < e), (this.nextSeekedFromUser_ = !1), this.trackLive_();
}),
(t.handlePlay = function () {
this.one(this.player_, 'timeupdate', this.seekToLiveEdge_);
}),
(t.reset_ = function () {
(this.lastTime_ = -1), (this.pastSeekEnd_ = 0), (this.lastSeekEnd_ = -1), (this.behindLiveEdge_ = !0), (this.timeupdateSeen_ = !1), (this.seekedBehindLive_ = !1), (this.nextSeekedFromUser_ = !1), this.clearInterval(this.trackingInterval_), (this.trackingInterval_ = null), this.off(this.player_, ['play', 'pause'], this.trackLiveHandler_), this.off(this.player_, 'seeked', this.handleSeeked_), this.off(this.player_, 'play', this.handlePlay_), this.off(this.player_, 'timeupdate', this.handleFirstTimeupdate_), this.off(this.player_, 'timeupdate', this.seekToLiveEdge_);
}),
(t.nextSeekedFromUser = function () {
this.nextSeekedFromUser_ = !0;
}),
(t.stopTracking = function () {
this.isTracking() && (this.reset_(), this.trigger('liveedgechange'));
}),
(t.seekableEnd = function () {
for (var e = this.player_.seekable(), t = [], i = e ? e.length : 0; i--; ) t.push(e.end(i));
return t.length ? t.sort()[t.length - 1] : 1 / 0;
}),
(t.seekableStart = function () {
for (var e = this.player_.seekable(), t = [], i = e ? e.length : 0; i--; ) t.push(e.start(i));
return t.length ? t.sort()[0] : 0;
}),
(t.liveWindow = function () {
var e = this.liveCurrentTime();
return e === 1 / 0 ? 0 : e - this.seekableStart();
}),
(t.isLive = function () {
return this.isTracking();
}),
(t.atLiveEdge = function () {
return !this.behindLiveEdge();
}),
(t.liveCurrentTime = function () {
return this.pastSeekEnd() + this.seekableEnd();
}),
(t.pastSeekEnd = function () {
var e = this.seekableEnd();
return -1 !== this.lastSeekEnd_ && e !== this.lastSeekEnd_ && (this.pastSeekEnd_ = 0), (this.lastSeekEnd_ = e), this.pastSeekEnd_;
}),
(t.behindLiveEdge = function () {
return this.behindLiveEdge_;
}),
(t.isTracking = function () {
return 'number' == typeof this.trackingInterval_;
}),
(t.seekToLiveEdge = function () {
(this.seekedBehindLive_ = !1), this.atLiveEdge() || ((this.nextSeekedFromUser_ = !1), this.player_.currentTime(this.liveCurrentTime()));
}),
(t.dispose = function () {
this.off(document, 'visibilitychange', this.handleVisibilityChange_), this.stopTracking(), n.prototype.dispose.call(this);
}),
e
);
})(ht)
);
function kn(e) {
if ((n = e.el()).hasAttribute('src')) return e.triggerSourceset(n.src), 1;
var t = e.$$('source'),
i = [],
n = '';
if (t.length) {
for (var r = 0; r < t.length; r++) {
var a = t[r].src;
a && -1 === i.indexOf(a) && i.push(a);
}
return !!i.length && (1 === i.length && (n = i[0]), e.triggerSourceset(n), !0);
}
}
function Cn(e, t) {
for (var i = {}, n = 0; n < e.length && !((i = Object.getOwnPropertyDescriptor(e[n], t)) && i.set && i.get); n++);
return (i.enumerable = !0), (i.configurable = !0), i;
}
function In(a) {
var t,
e,
i,
s = a.el();
s.resetSourceWatch_ ||
((t = {}),
(e = Cn([a.el(), window.HTMLMediaElement.prototype, window.Element.prototype, Ln], 'innerHTML')),
(i = function (r) {
return function () {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
var n = r.apply(s, t);
return kn(a), n;
};
}),
['append', 'appendChild', 'insertAdjacentHTML'].forEach(function (e) {
s[e] && ((t[e] = s[e]), (s[e] = i(t[e])));
}),
Object.defineProperty(s, 'innerHTML', lt(e, { set: i(e.set) })),
(s.resetSourceWatch_ = function () {
(s.resetSourceWatch_ = null),
Object.keys(t).forEach(function (e) {
s[e] = t[e];
}),
Object.defineProperty(s, 'innerHTML', e);
}),
a.one('sourceset', s.resetSourceWatch_));
}
function xn(i) {
var n, t, r, a;
i.featuresSourceset &&
((n = i.el()).resetSourceset_ ||
((t = Cn([i.el(), window.HTMLMediaElement.prototype, Dn], 'src')),
(r = n.setAttribute),
(a = n.load),
Object.defineProperty(
n,
'src',
lt(t, {
set: function (e) {
e = t.set.call(n, e);
return i.triggerSourceset(n.src), e;
},
})
),
(n.setAttribute = function (e, t) {
t = r.call(n, e, t);
return /src/i.test(e) && i.triggerSourceset(n.src), t;
}),
(n.load = function () {
var e = a.call(n);
return kn(i) || (i.triggerSourceset(''), In(i)), e;
}),
n.currentSrc ? i.triggerSourceset(n.currentSrc) : kn(i) || In(i),
(n.resetSourceset_ = function () {
(n.resetSourceset_ = null), (n.load = a), (n.setAttribute = r), Object.defineProperty(n, 'src', t), n.resetSourceWatch_ && n.resetSourceWatch_();
})));
}
function An(t, i, n, e) {
function r(e) {
return Object.defineProperty(t, i, { value: e, enumerable: !0, writable: !0 });
}
var a = {
configurable: !0,
enumerable: !0,
get: function () {
var e = n();
return r(e), e;
},
};
return (e = void 0 === e ? !0 : e) && (a.set = r), Object.defineProperty(t, i, a);
}
var Pn,
Ln = Object.defineProperty({}, 'innerHTML', {
get: function () {
return this.cloneNode(!0).innerHTML;
},
set: function (e) {
var t = document.createElement(this.nodeName.toLowerCase());
t.innerHTML = e;
for (var i = document.createDocumentFragment(); t.childNodes.length; ) i.appendChild(t.childNodes[0]);
return (this.innerText = ''), window.Element.prototype.appendChild.call(this, i), this.innerHTML;
},
}),
Dn = Object.defineProperty({}, 'src', {
get: function () {
return this.hasAttribute('src') ? Mt(window.Element.prototype.getAttribute.call(this, 'src')) : '';
},
set: function (e) {
return window.Element.prototype.setAttribute.call(this, 'src', e), e;
},
}),
On = (function (l) {
function s(e, t) {
var i = l.call(this, e, t) || this,
t = e.source,
n = !1;
if ((t && (i.el_.currentSrc !== t.src || (e.tag && 3 === e.tag.initNetworkState_)) ? i.setSource(t) : i.handleLateInit_(i.el_), e.enableSourceset && i.setupSourcesetHandling_(), (i.isScrubbing_ = !1), i.el_.hasChildNodes())) {
for (var r = i.el_.childNodes, a = r.length, s = []; a--; ) {
var o = r[a];
'track' === o.nodeName.toLowerCase() && (i.featuresNativeTextTracks ? (i.remoteTextTrackEls().addTrackElement_(o), i.remoteTextTracks().addTrack(o.track), i.textTracks().addTrack(o.track), n || i.el_.hasAttribute('crossorigin') || !Ut(o.src) || (n = !0)) : s.push(o));
}
for (var u = 0; u < s.length; u++) i.el_.removeChild(s[u]);
}
return i.proxyNativeTracks_(), i.featuresNativeTextTracks && n && h.warn("Text Tracks are being loaded from another origin but the crossorigin attribute isn't used.\nThis may prevent text tracks from loading."), i.restoreMetadataTracksInIOSNativePlayer_(), (F || H || L) && !0 === e.nativeControlsForTouch && i.setControls(!0), i.proxyWebkitFullscreen_(), i.triggerReady(), i;
}
ft(s, l);
var e = s.prototype;
return (
(e.dispose = function () {
this.el_ && this.el_.resetSourceset_ && this.el_.resetSourceset_(), s.disposeMediaElement(this.el_), (this.options_ = null), l.prototype.dispose.call(this);
}),
(e.setupSourcesetHandling_ = function () {
xn(this);
}),
(e.restoreMetadataTracksInIOSNativePlayer_ = function () {
function e() {
i = [];
for (var e = 0; e < n.length; e++) {
var t = n[e];
'metadata' === t.kind && i.push({ track: t, storedMode: t.mode });
}
}
var i,
n = this.textTracks();
e(),
n.addEventListener('change', e),
this.on('dispose', function () {
return n.removeEventListener('change', e);
});
function r() {
for (var e = 0; e < i.length; e++) {
var t = i[e];
'disabled' === t.track.mode && t.track.mode !== t.storedMode && (t.track.mode = t.storedMode);
}
n.removeEventListener('change', r);
}
this.on('webkitbeginfullscreen', function () {
n.removeEventListener('change', e), n.removeEventListener('change', r), n.addEventListener('change', r);
}),
this.on('webkitendfullscreen', function () {
n.removeEventListener('change', e), n.addEventListener('change', e), n.removeEventListener('change', r);
});
}),
(e.overrideNative_ = function (e, t) {
var i,
n = this;
t === this['featuresNative' + e + 'Tracks'] &&
(this[(i = e.toLowerCase()) + 'TracksListeners_'] &&
Object.keys(this[i + 'TracksListeners_']).forEach(function (e) {
n.el()[i + 'Tracks'].removeEventListener(e, n[i + 'TracksListeners_'][e]);
}),
(this['featuresNative' + e + 'Tracks'] = !t),
(this[i + 'TracksListeners_'] = null),
this.proxyNativeTracksForType_(i));
}),
(e.overrideNativeAudioTracks = function (e) {
this.overrideNative_('Audio', e);
}),
(e.overrideNativeVideoTracks = function (e) {
this.overrideNative_('Video', e);
}),
(e.proxyNativeTracksForType_ = function (i) {
var e,
t,
n = this,
r = ai[i],
a = this.el()[r.getterName],
s = this[r.getterName]();
this['featuresNative' + r.capitalName + 'Tracks'] &&
a &&
a.addEventListener &&
((t = function () {
for (var e = [], t = 0; t < s.length; t++) {
for (var i = !1, n = 0; n < a.length; n++)
if (a[n] === s[t]) {
i = !0;
break;
}
i || e.push(s[t]);
}
for (; e.length; ) s.removeTrack(e.shift());
}),
(this[r.getterName + 'Listeners_'] = e =
{
change: function (e) {
var t = { type: 'change', target: s, currentTarget: s, srcElement: s };
s.trigger(t), 'text' === i && n[si.remoteText.getterName]().trigger(t);
},
addtrack: function (e) {
s.addTrack(e.track);
},
removetrack: function (e) {
s.removeTrack(e.track);
},
}),
Object.keys(e).forEach(function (t) {
var i = e[t];
a.addEventListener(t, i),
n.on('dispose', function (e) {
return a.removeEventListener(t, i);
});
}),
this.on('loadstart', t),
this.on('dispose', function (e) {
return n.off('loadstart', t);
}));
}),
(e.proxyNativeTracks_ = function () {
var t = this;
ai.names.forEach(function (e) {
t.proxyNativeTracksForType_(e);
});
}),
(e.createEl = function () {
var e,
t = this.options_.tag;
(t && (this.options_.playerElIngest || this.movingMediaElementInDOM)) || (t ? ((e = t.cloneNode(!0)), t.parentNode && t.parentNode.insertBefore(e, t), s.disposeMediaElement(t), (t = e)) : ((t = document.createElement('video')), (e = lt({}, this.options_.tag && ae(this.options_.tag))), (F && !0 === this.options_.nativeControlsForTouch) || delete e.controls, re(t, b(e, { id: this.options_.techId, class: 'vjs-tech' }))), (t.playerId = this.options_.playerId)), 'undefined' != typeof this.options_.preload && oe(t, 'preload', this.options_.preload), void 0 !== this.options_.disablePictureInPicture && (t.disablePictureInPicture = this.options_.disablePictureInPicture);
for (var i = ['loop', 'muted', 'playsinline', 'autoplay'], n = 0; n < i.length; n++) {
var r = i[n],
a = this.options_[r];
'undefined' != typeof a && (a ? oe(t, r, r) : ue(t, r), (t[r] = a));
}
return t;
}),
(e.handleLateInit_ = function (e) {
if (0 !== e.networkState && 3 !== e.networkState) {
if (0 === e.readyState) {
var t = !1,
i = function () {
t = !0;
};
this.on('loadstart', i);
var n = function () {
t || this.trigger('loadstart');
};
return (
this.on('loadedmetadata', n),
void this.ready(function () {
this.off('loadstart', i), this.off('loadedmetadata', n), t || this.trigger('loadstart');
})
);
}
var r = ['loadstart'];
r.push('loadedmetadata'),
2 <= e.readyState && r.push('loadeddata'),
3 <= e.readyState && r.push('canplay'),
4 <= e.readyState && r.push('canplaythrough'),
this.ready(function () {
r.forEach(function (e) {
this.trigger(e);
}, this);
});
}
}),
(e.setScrubbing = function (e) {
this.isScrubbing_ = e;
}),
(e.scrubbing = function () {
return this.isScrubbing_;
}),
(e.setCurrentTime = function (e) {
try {
this.isScrubbing_ && this.el_.fastSeek && V ? this.el_.fastSeek(e) : (this.el_.currentTime = e);
} catch (e) {
h(e, 'Video is not ready. (Video.js)');
}
}),
(e.duration = function () {
var t = this;
return this.el_.duration === 1 / 0 && A && R && 0 === this.el_.currentTime
? (this.on('timeupdate', function e() {
0 < t.el_.currentTime && (t.el_.duration === 1 / 0 && t.trigger('durationchange'), t.off('timeupdate', e));
}),
NaN)
: this.el_.duration || NaN;
}),
(e.width = function () {
return this.el_.offsetWidth;
}),
(e.height = function () {
return this.el_.offsetHeight;
}),
(e.proxyWebkitFullscreen_ = function () {
var e,
t,
i = this;
'webkitDisplayingFullscreen' in this.el_ &&
((e = function () {
this.trigger('fullscreenchange', { isFullscreen: !1 });
}),
(t = function () {
'webkitPresentationMode' in this.el_ && 'picture-in-picture' !== this.el_.webkitPresentationMode && (this.one('webkitendfullscreen', e), this.trigger('fullscreenchange', { isFullscreen: !0, nativeIOSFullscreen: !0 }));
}),
this.on('webkitbeginfullscreen', t),
this.on('dispose', function () {
i.off('webkitbeginfullscreen', t), i.off('webkitendfullscreen', e);
}));
}),
(e.supportsFullScreen = function () {
if ('function' == typeof this.el_.webkitEnterFullScreen) {
var e = (window.navigator && window.navigator.userAgent) || '';
if (/Android/.test(e) || !/Chrome|Mac OS X 10.5/.test(e)) return !0;
}
return !1;
}),
(e.enterFullScreen = function () {
var e = this.el_;
if (e.paused && e.networkState <= e.HAVE_METADATA)
St(this.el_.play()),
this.setTimeout(function () {
e.pause();
try {
e.webkitEnterFullScreen();
} catch (e) {
this.trigger('fullscreenerror', e);
}
}, 0);
else
try {
e.webkitEnterFullScreen();
} catch (e) {
this.trigger('fullscreenerror', e);
}
}),
(e.exitFullScreen = function () {
this.el_.webkitDisplayingFullscreen ? this.el_.webkitExitFullScreen() : this.trigger('fullscreenerror', new Error('The video is not fullscreen'));
}),
(e.requestPictureInPicture = function () {
return this.el_.requestPictureInPicture();
}),
(e.src = function (e) {
if (void 0 === e) return this.el_.src;
this.setSrc(e);
}),
(e.reset = function () {
s.resetMediaElement(this.el_);
}),
(e.currentSrc = function () {
return this.currentSource_ ? this.currentSource_.src : this.el_.currentSrc;
}),
(e.setControls = function (e) {
this.el_.controls = !!e;
}),
(e.addTextTrack = function (e, t, i) {
return this.featuresNativeTextTracks ? this.el_.addTextTrack(e, t, i) : l.prototype.addTextTrack.call(this, e, t, i);
}),
(e.createRemoteTextTrack = function (e) {
if (!this.featuresNativeTextTracks) return l.prototype.createRemoteTextTrack.call(this, e);
var t = document.createElement('track');
return e.kind && (t.kind = e.kind), e.label && (t.label = e.label), (e.language || e.srclang) && (t.srclang = e.language || e.srclang), e.default && (t.default = e.default), e.id && (t.id = e.id), e.src && (t.src = e.src), t;
}),
(e.addRemoteTextTrack = function (e, t) {
t = l.prototype.addRemoteTextTrack.call(this, e, t);
return this.featuresNativeTextTracks && this.el().appendChild(t), t;
}),
(e.removeRemoteTextTrack = function (e) {
if ((l.prototype.removeRemoteTextTrack.call(this, e), this.featuresNativeTextTracks)) for (var t = this.$$('track'), i = t.length; i--; ) (e !== t[i] && e !== t[i].track) || this.el().removeChild(t[i]);
}),
(e.getVideoPlaybackQuality = function () {
if ('function' == typeof this.el().getVideoPlaybackQuality) return this.el().getVideoPlaybackQuality();
var e = {};
return 'undefined' != typeof this.el().webkitDroppedFrameCount && 'undefined' != typeof this.el().webkitDecodedFrameCount && ((e.droppedVideoFrames = this.el().webkitDroppedFrameCount), (e.totalVideoFrames = this.el().webkitDecodedFrameCount)), window.performance && 'function' == typeof window.performance.now ? (e.creationTime = window.performance.now()) : window.performance && window.performance.timing && 'number' == typeof window.performance.timing.navigationStart && (e.creationTime = window.Date.now() - window.performance.timing.navigationStart), e;
}),
s
);
})(ji);
An(On, 'TEST_VID', function () {
if (X()) {
var e = document.createElement('video'),
t = document.createElement('track');
return (t.kind = 'captions'), (t.srclang = 'en'), (t.label = 'English'), e.appendChild(t), e;
}
}),
(On.isSupported = function () {
try {
On.TEST_VID.volume = 0.5;
} catch (e) {
return !1;
}
return !(!On.TEST_VID || !On.TEST_VID.canPlayType);
}),
(On.canPlayType = function (e) {
return On.TEST_VID.canPlayType(e);
}),
(On.canPlaySource = function (e, t) {
return On.canPlayType(e.type);
}),
(On.canControlVolume = function () {
try {
var e = On.TEST_VID.volume;
return (On.TEST_VID.volume = e / 2 + 0.1), e !== On.TEST_VID.volume;
} catch (e) {
return !1;
}
}),
(On.canMuteVolume = function () {
try {
var e = On.TEST_VID.muted;
return (On.TEST_VID.muted = !e), On.TEST_VID.muted ? oe(On.TEST_VID, 'muted', 'muted') : ue(On.TEST_VID, 'muted'), e !== On.TEST_VID.muted;
} catch (e) {
return !1;
}
}),
(On.canControlPlaybackRate = function () {
if (A && R && M < 58) return !1;
try {
var e = On.TEST_VID.playbackRate;
return (On.TEST_VID.playbackRate = e / 2 + 0.1), e !== On.TEST_VID.playbackRate;
} catch (e) {
return !1;
}
}),
(On.canOverrideAttributes = function () {
try {
var e = function () {};
Object.defineProperty(document.createElement('video'), 'src', { get: e, set: e }), Object.defineProperty(document.createElement('audio'), 'src', { get: e, set: e }), Object.defineProperty(document.createElement('video'), 'innerHTML', { get: e, set: e }), Object.defineProperty(document.createElement('audio'), 'innerHTML', { get: e, set: e });
} catch (e) {
return !1;
}
return !0;
}),
(On.supportsNativeTextTracks = function () {
return V || (q && R);
}),
(On.supportsNativeVideoTracks = function () {
return !(!On.TEST_VID || !On.TEST_VID.videoTracks);
}),
(On.supportsNativeAudioTracks = function () {
return !(!On.TEST_VID || !On.TEST_VID.audioTracks);
}),
(On.Events = ['loadstart', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'loadedmetadata', 'loadeddata', 'canplay', 'canplaythrough', 'playing', 'waiting', 'seeking', 'seeked', 'ended', 'durationchange', 'timeupdate', 'progress', 'play', 'pause', 'ratechange', 'resize', 'volumechange']),
[
['featuresVolumeControl', 'canControlVolume'],
['featuresMuteControl', 'canMuteVolume'],
['featuresPlaybackRate', 'canControlPlaybackRate'],
['featuresSourceset', 'canOverrideAttributes'],
['featuresNativeTextTracks', 'supportsNativeTextTracks'],
['featuresNativeVideoTracks', 'supportsNativeVideoTracks'],
['featuresNativeAudioTracks', 'supportsNativeAudioTracks'],
].forEach(function (e) {
var t = e[0],
i = e[1];
An(
On.prototype,
t,
function () {
return On[i]();
},
!0
);
}),
(On.prototype.movingMediaElementInDOM = !q),
(On.prototype.featuresFullscreenResize = !0),
(On.prototype.featuresProgressEvents = !0),
(On.prototype.featuresTimeupdateEvents = !0),
(On.patchCanPlayType = function () {
4 <= P &&
!D &&
!R &&
((Pn = On.TEST_VID && On.TEST_VID.constructor.prototype.canPlayType),
(On.TEST_VID.constructor.prototype.canPlayType = function (e) {
return e && /^application\/(?:x-|vnd\.apple\.)mpegurl/i.test(e) ? 'maybe' : Pn.call(this, e);
}));
}),
(On.unpatchCanPlayType = function () {
var e = On.TEST_VID.constructor.prototype.canPlayType;
return Pn && (On.TEST_VID.constructor.prototype.canPlayType = Pn), e;
}),
On.patchCanPlayType(),
(On.disposeMediaElement = function (e) {
if (e) {
for (e.parentNode && e.parentNode.removeChild(e); e.hasChildNodes(); ) e.removeChild(e.firstChild);
e.removeAttribute('src'),
'function' == typeof e.load &&
(function () {
try {
e.load();
} catch (e) {}
})();
}
}),
(On.resetMediaElement = function (e) {
if (e) {
for (var t = e.querySelectorAll('source'), i = t.length; i--; ) e.removeChild(t[i]);
e.removeAttribute('src'),
'function' == typeof e.load &&
(function () {
try {
e.load();
} catch (e) {}
})();
}
}),
['muted', 'defaultMuted', 'autoplay', 'controls', 'loop', 'playsinline'].forEach(function (e) {
On.prototype[e] = function () {
return this.el_[e] || this.el_.hasAttribute(e);
};
}),
['muted', 'defaultMuted', 'autoplay', 'loop', 'playsinline'].forEach(function (t) {
On.prototype['set' + ut(t)] = function (e) {
(this.el_[t] = e) ? this.el_.setAttribute(t, t) : this.el_.removeAttribute(t);
};
}),
['paused', 'currentTime', 'buffered', 'volume', 'poster', 'preload', 'error', 'seeking', 'seekable', 'ended', 'playbackRate', 'defaultPlaybackRate', 'disablePictureInPicture', 'played', 'networkState', 'readyState', 'videoWidth', 'videoHeight', 'crossOrigin'].forEach(function (e) {
On.prototype[e] = function () {
return this.el_[e];
};
}),
['volume', 'src', 'poster', 'preload', 'playbackRate', 'defaultPlaybackRate', 'disablePictureInPicture', 'crossOrigin'].forEach(function (t) {
On.prototype['set' + ut(t)] = function (e) {
this.el_[t] = e;
};
}),
['pause', 'load', 'play'].forEach(function (e) {
On.prototype[e] = function () {
return this.el_[e]();
};
}),
ji.withSourceHandlers(On),
(On.nativeSourceHandler = {}),
(On.nativeSourceHandler.canPlayType = function (e) {
try {
return On.TEST_VID.canPlayType(e);
} catch (e) {
return '';
}
}),
(On.nativeSourceHandler.canHandleSource = function (e, t) {
if (e.type) return On.nativeSourceHandler.canPlayType(e.type);
if (e.src) {
e = Nt(e.src);
return On.nativeSourceHandler.canPlayType('video/' + e);
}
return '';
}),
(On.nativeSourceHandler.handleSource = function (e, t, i) {
t.setSrc(e.src);
}),
(On.nativeSourceHandler.dispose = function () {}),
On.registerSourceHandler(On.nativeSourceHandler),
ji.registerTech('Html5', On);
var Rn = ['progress', 'abort', 'suspend', 'emptied', 'stalled', 'loadedmetadata', 'loadeddata', 'timeupdate', 'resize', 'volumechange', 'texttrackchange'],
Mn = { canplay: 'CanPlay', canplaythrough: 'CanPlayThrough', playing: 'Playing', seeked: 'Seeked' },
Nn = ['tiny', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'huge'],
Un = {};
Nn.forEach(function (e) {
var t = 'x' === e.charAt(0) ? 'x-' + e.substring(1) : e;
Un[e] = 'vjs-layout-' + t;
});
var Bn = { tiny: 210, xsmall: 320, small: 425, medium: 768, large: 1440, xlarge: 2560, huge: 1 / 0 },
Fn = (function (c) {
function o(e, t, i) {
var n, r;
if (((e.id = e.id || t.id || 'vjs_video_' + Pe++), ((t = b(o.getTagSettings(e), t)).initChildren = !1), (t.createEl = !1), (t.evented = !1), (t.reportTouchActivity = !1), !t.language))
if ('function' == typeof e.closest) {
var a = e.closest('[lang]');
a && a.getAttribute && (t.language = a.getAttribute('lang'));
} else
for (var s = e; s && 1 === s.nodeType; ) {
if (ae(s).hasOwnProperty('lang')) {
t.language = s.getAttribute('lang');
break;
}
s = s.parentNode;
}
if (
(((n = c.call(this, null, t, i) || this).boundDocumentFullscreenChange_ = function (e) {
return n.documentFullscreenChange_(e);
}),
(n.boundFullWindowOnEscKey_ = function (e) {
return n.fullWindowOnEscKey(e);
}),
(n.boundUpdateStyleEl_ = function (e) {
return n.updateStyleEl_(e);
}),
(n.boundApplyInitTime_ = function (e) {
return n.applyInitTime_(e);
}),
(n.boundUpdateCurrentBreakpoint_ = function (e) {
return n.updateCurrentBreakpoint_(e);
}),
(n.boundHandleTechClick_ = function (e) {
return n.handleTechClick_(e);
}),
(n.boundHandleTechDoubleClick_ = function (e) {
return n.handleTechDoubleClick_(e);
}),
(n.boundHandleTechTouchStart_ = function (e) {
return n.handleTechTouchStart_(e);
}),
(n.boundHandleTechTouchMove_ = function (e) {
return n.handleTechTouchMove_(e);
}),
(n.boundHandleTechTouchEnd_ = function (e) {
return n.handleTechTouchEnd_(e);
}),
(n.boundHandleTechTap_ = function (e) {
return n.handleTechTap_(e);
}),
(n.isFullscreen_ = !1),
(n.log = p(n.id_)),
(n.fsApi_ = l),
(n.isPosterFromTech_ = !1),
(n.queuedCallbacks_ = []),
(n.isReady_ = !1),
(n.hasStarted_ = !1),
(n.userActive_ = !1),
(n.debugEnabled_ = !1),
!n.options_ || !n.options_.techOrder || !n.options_.techOrder.length)
)
throw new Error('No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?');
(n.tag = e),
(n.tagAttributes = e && ae(e)),
n.language(n.options_.language),
t.languages
? ((r = {}),
Object.getOwnPropertyNames(t.languages).forEach(function (e) {
r[e.toLowerCase()] = t.languages[e];
}),
(n.languages_ = r))
: (n.languages_ = o.prototype.options_.languages),
n.resetCache_(),
(n.poster_ = t.poster || ''),
(n.controls_ = !!t.controls),
(e.controls = !1),
e.removeAttribute('controls'),
(n.changingSrc_ = !1),
(n.playCallbacks_ = []),
(n.playTerminatedQueue_ = []),
e.hasAttribute('autoplay') ? n.autoplay(!0) : n.autoplay(n.options_.autoplay),
t.plugins &&
Object.keys(t.plugins).forEach(function (e) {
if ('function' != typeof n[e]) throw new Error('plugin "' + e + '" does not exist');
}),
(n.scrubbing_ = !1),
(n.el_ = n.createEl()),
rt(pt(n), { eventBusKey: 'el_' }),
n.fsApi_.requestFullscreen && (Be(document, n.fsApi_.fullscreenchange, n.boundDocumentFullscreenChange_), n.on(n.fsApi_.fullscreenchange, n.boundDocumentFullscreenChange_)),
n.fluid_ && n.on(['playerreset', 'resize'], n.boundUpdateStyleEl_);
i = lt(n.options_);
t.plugins &&
Object.keys(t.plugins).forEach(function (e) {
n[e](t.plugins[e]);
}),
t.debug && n.debug(!0),
(n.options_.playerOptions = i),
(n.middleware_ = []),
n.playbackRates(t.playbackRates),
n.initChildren(),
n.isAudio('audio' === e.nodeName.toLowerCase()),
n.controls() ? n.addClass('vjs-controls-enabled') : n.addClass('vjs-controls-disabled'),
n.el_.setAttribute('role', 'region'),
n.isAudio() ? n.el_.setAttribute('aria-label', n.localize('Audio Player')) : n.el_.setAttribute('aria-label', n.localize('Video Player')),
n.isAudio() && n.addClass('vjs-audio'),
n.flexNotSupported_() && n.addClass('vjs-no-flex'),
F && n.addClass('vjs-touch-enabled'),
q || n.addClass('vjs-workinghover'),
(o.players[n.id_] = pt(n));
e = u.split('.')[0];
return (
n.addClass('vjs-v' + e),
n.userActive(!0),
n.reportUserActivity(),
n.one('play', function (e) {
return n.listenForUserActivity_(e);
}),
n.on('stageclick', function (e) {
return n.handleStageClick_(e);
}),
n.on('keydown', function (e) {
return n.handleKeyDown(e);
}),
n.on('languagechange', function (e) {
return n.handleLanguagechange(e);
}),
n.breakpoints(n.options_.breakpoints),
n.responsive(n.options_.responsive),
n
);
}
ft(o, c);
var e = o.prototype;
return (
(e.dispose = function () {
var t = this;
this.trigger('dispose'),
this.off('dispose'),
Fe(document, this.fsApi_.fullscreenchange, this.boundDocumentFullscreenChange_),
Fe(document, 'keydown', this.boundFullWindowOnEscKey_),
this.styleEl_ && this.styleEl_.parentNode && (this.styleEl_.parentNode.removeChild(this.styleEl_), (this.styleEl_ = null)),
(o.players[this.id_] = null),
this.tag && this.tag.player && (this.tag.player = null),
this.el_ && this.el_.player && (this.el_.player = null),
this.tech_ && (this.tech_.dispose(), (this.isPosterFromTech_ = !1), (this.poster_ = '')),
this.playerElIngest_ && (this.playerElIngest_ = null),
this.tag && (this.tag = null),
(qi[this.id()] = null),
oi.names.forEach(function (e) {
(e = oi[e]), (e = t[e.getterName]());
e && e.off && e.off();
}),
c.prototype.dispose.call(this);
}),
(e.createEl = function () {
var t,
i = this.tag,
e = (this.playerElIngest_ = i.parentNode && i.parentNode.hasAttribute && i.parentNode.hasAttribute('data-vjs-player')),
n = 'video-js' === this.tag.tagName.toLowerCase();
e ? (t = this.el_ = i.parentNode) : n || (t = this.el_ = c.prototype.createEl.call(this, 'div'));
var r,
a,
s = ae(i);
if (n) {
for (t = this.el_ = i, i = this.tag = document.createElement('video'); t.children.length; ) i.appendChild(t.firstChild);
ee(t, 'video-js') || te(t, 'video-js'),
t.appendChild(i),
(e = this.playerElIngest_ = t),
Object.keys(t).forEach(function (e) {
try {
i[e] = t[e];
} catch (e) {}
});
}
i.setAttribute('tabindex', '-1'),
(s.tabindex = '-1'),
(N || (R && B)) && (i.setAttribute('role', 'application'), (s.role = 'application')),
i.removeAttribute('width'),
i.removeAttribute('height'),
'width' in s && delete s.width,
'height' in s && delete s.height,
Object.getOwnPropertyNames(s).forEach(function (e) {
(n && 'class' === e) || t.setAttribute(e, s[e]), n && i.setAttribute(e, s[e]);
}),
(i.playerId = i.id),
(i.id += '_html5_api'),
(i.className = 'vjs-tech'),
(i.player = t.player = this).addClass('vjs-paused'),
!0 !== window.VIDEOJS_NO_DYNAMIC_STYLE && ((this.styleEl_ = xe('vjs-styles-dimensions')), (r = Te('.vjs-styles-defaults')), (a = Te('head')).insertBefore(this.styleEl_, r ? r.nextSibling : a.firstChild)),
(this.fill_ = !1),
(this.fluid_ = !1),
this.width(this.options_.width),
this.height(this.options_.height),
this.fill(this.options_.fill),
this.fluid(this.options_.fluid),
this.aspectRatio(this.options_.aspectRatio),
this.crossOrigin(this.options_.crossOrigin || this.options_.crossorigin);
for (var o = i.getElementsByTagName('a'), u = 0; u < o.length; u++) {
var l = o.item(u);
te(l, 'vjs-hidden'), l.setAttribute('hidden', 'hidden');
}
return (i.initNetworkState_ = i.networkState), i.parentNode && !e && i.parentNode.insertBefore(t, i), Z(i, t), this.children_.unshift(i), this.el_.setAttribute('lang', this.language_), this.el_.setAttribute('translate', 'no'), (this.el_ = t);
}),
(e.crossOrigin = function (e) {
if (!e) return this.techGet_('crossOrigin');
'anonymous' === e || 'use-credentials' === e ? this.techCall_('setCrossOrigin', e) : h.warn('crossOrigin must be "anonymous" or "use-credentials", given "' + e + '"');
}),
(e.width = function (e) {
return this.dimension('width', e);
}),
(e.height = function (e) {
return this.dimension('height', e);
}),
(e.dimension = function (e, t) {
var i = e + '_';
if (void 0 === t) return this[i] || 0;
if ('' === t || 'auto' === t) return (this[i] = void 0), void this.updateStyleEl_();
var n = parseFloat(t);
isNaN(n) ? h.error('Improper value "' + t + '" supplied for for ' + e) : ((this[i] = n), this.updateStyleEl_());
}),
(e.fluid = function (e) {
var t,
i = this;
if (void 0 === e) return !!this.fluid_;
(this.fluid_ = !!e),
it(this) && this.off(['playerreset', 'resize'], this.boundUpdateStyleEl_),
e
? (this.addClass('vjs-fluid'),
this.fill(!1),
(t = function () {
i.on(['playerreset', 'resize'], i.boundUpdateStyleEl_);
}),
it((e = this)) ? t() : (e.eventedCallbacks || (e.eventedCallbacks = []), e.eventedCallbacks.push(t)))
: this.removeClass('vjs-fluid'),
this.updateStyleEl_();
}),
(e.fill = function (e) {
if (void 0 === e) return !!this.fill_;
(this.fill_ = !!e), e ? (this.addClass('vjs-fill'), this.fluid(!1)) : this.removeClass('vjs-fill');
}),
(e.aspectRatio = function (e) {
if (void 0 === e) return this.aspectRatio_;
if (!/^\d+\:\d+$/.test(e)) throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');
(this.aspectRatio_ = e), this.fluid(!0), this.updateStyleEl_();
}),
(e.updateStyleEl_ = function () {
var e, t, i, n;
!0 !== window.VIDEOJS_NO_DYNAMIC_STYLE ? ((n = (i = (void 0 !== this.aspectRatio_ && 'auto' !== this.aspectRatio_ ? this.aspectRatio_ : 0 < this.videoWidth() ? this.videoWidth() + ':' + this.videoHeight() : '16:9').split(':'))[1] / i[0]), (e = void 0 !== this.width_ ? this.width_ : void 0 !== this.height_ ? this.height_ / n : this.videoWidth() || 300), (t = void 0 !== this.height_ ? this.height_ : e * n), (i = /^[^a-zA-Z]/.test(this.id()) ? 'dimensions-' + this.id() : this.id() + '-dimensions'), this.addClass(i), Ae(this.styleEl_, '\n .' + i + ' {\n width: ' + e + 'px;\n height: ' + t + 'px;\n }\n\n .' + i + '.vjs-fluid {\n padding-top: ' + 100 * n + '%;\n }\n ')) : ((t = 'number' == typeof this.width_ ? this.width_ : this.options_.width), (i = 'number' == typeof this.height_ ? this.height_ : this.options_.height), (n = this.tech_ && this.tech_.el()) && (0 <= t && (n.width = t), 0 <= i && (n.height = i)));
}),
(e.loadTech_ = function (e, t) {
var i = this;
this.tech_ && this.unloadTech_();
var n = ut(e),
r = e.charAt(0).toLowerCase() + e.slice(1);
'Html5' !== n && this.tag && (ji.getTech('Html5').disposeMediaElement(this.tag), (this.tag.player = null), (this.tag = null)), (this.techName_ = n), (this.isReady_ = !1);
var a = this.autoplay(),
s = { source: t, autoplay: (a = 'string' == typeof this.autoplay() || (!0 === this.autoplay() && this.options_.normalizeAutoplay) ? !1 : a), nativeControlsForTouch: this.options_.nativeControlsForTouch, playerId: this.id(), techId: this.id() + '_' + r + '_api', playsinline: this.options_.playsinline, preload: this.options_.preload, loop: this.options_.loop, disablePictureInPicture: this.options_.disablePictureInPicture, muted: this.options_.muted, poster: this.poster(), language: this.language(), playerElIngest: this.playerElIngest_ || !1, 'vtt.js': this.options_['vtt.js'], canOverridePoster: !!this.options_.techCanOverridePoster, enableSourceset: this.options_.enableSourceset, Promise: this.options_.Promise };
oi.names.forEach(function (e) {
e = oi[e];
s[e.getterName] = i[e.privateName];
}),
b(s, this.options_[n]),
b(s, this.options_[r]),
b(s, this.options_[e.toLowerCase()]),
this.tag && (s.tag = this.tag),
t && t.src === this.cache_.src && 0 < this.cache_.currentTime && (s.startTime = this.cache_.currentTime);
e = ji.getTech(e);
if (!e) throw new Error("No Tech named '" + n + "' exists! '" + n + "' should be registered using videojs.registerTech()'");
(this.tech_ = new e(s)),
this.tech_.ready(Ve(this, this.handleTechReady_), !0),
Ct(this.textTracksJson_ || [], this.tech_),
Rn.forEach(function (t) {
i.on(i.tech_, t, function (e) {
return i['handleTech' + ut(t) + '_'](e);
});
}),
Object.keys(Mn).forEach(function (t) {
i.on(i.tech_, t, function (e) {
0 === i.tech_.playbackRate() && i.tech_.seeking() ? i.queuedCallbacks_.push({ callback: i['handleTech' + Mn[t] + '_'].bind(i), event: e }) : i['handleTech' + Mn[t] + '_'](e);
});
}),
this.on(this.tech_, 'loadstart', function (e) {
return i.handleTechLoadStart_(e);
}),
this.on(this.tech_, 'sourceset', function (e) {
return i.handleTechSourceset_(e);
}),
this.on(this.tech_, 'waiting', function (e) {
return i.handleTechWaiting_(e);
}),
this.on(this.tech_, 'ended', function (e) {
return i.handleTechEnded_(e);
}),
this.on(this.tech_, 'seeking', function (e) {
return i.handleTechSeeking_(e);
}),
this.on(this.tech_, 'play', function (e) {
return i.handleTechPlay_(e);
}),
this.on(this.tech_, 'firstplay', function (e) {
return i.handleTechFirstPlay_(e);
}),
this.on(this.tech_, 'pause', function (e) {
return i.handleTechPause_(e);
}),
this.on(this.tech_, 'durationchange', function (e) {
return i.handleTechDurationChange_(e);
}),
this.on(this.tech_, 'fullscreenchange', function (e, t) {
return i.handleTechFullscreenChange_(e, t);
}),
this.on(this.tech_, 'fullscreenerror', function (e, t) {
return i.handleTechFullscreenError_(e, t);
}),
this.on(this.tech_, 'enterpictureinpicture', function (e) {
return i.handleTechEnterPictureInPicture_(e);
}),
this.on(this.tech_, 'leavepictureinpicture', function (e) {
return i.handleTechLeavePictureInPicture_(e);
}),
this.on(this.tech_, 'error', function (e) {
return i.handleTechError_(e);
}),
this.on(this.tech_, 'posterchange', function (e) {
return i.handleTechPosterChange_(e);
}),
this.on(this.tech_, 'textdata', function (e) {
return i.handleTechTextData_(e);
}),
this.on(this.tech_, 'ratechange', function (e) {
return i.handleTechRateChange_(e);
}),
this.on(this.tech_, 'loadedmetadata', this.boundUpdateStyleEl_),
this.usingNativeControls(this.techGet_('controls')),
this.controls() && !this.usingNativeControls() && this.addTechControlsListeners_(),
this.tech_.el().parentNode === this.el() || ('Html5' === n && this.tag) || Z(this.tech_.el(), this.el()),
this.tag && ((this.tag.player = null), (this.tag = null));
}),
(e.unloadTech_ = function () {
var t = this;
oi.names.forEach(function (e) {
e = oi[e];
t[e.privateName] = t[e.getterName]();
}),
(this.textTracksJson_ = kt(this.tech_)),
(this.isReady_ = !1),
this.tech_.dispose(),
(this.tech_ = !1),
this.isPosterFromTech_ && ((this.poster_ = ''), this.trigger('posterchange')),
(this.isPosterFromTech_ = !1);
}),
(e.tech = function (e) {
return void 0 === e && h.warn("Using the tech directly can be dangerous. I hope you know what you're doing.\nSee https://github.com/videojs/video.js/issues/2617 for more info.\n"), this.tech_;
}),
(e.addTechControlsListeners_ = function () {
this.removeTechControlsListeners_(), this.on(this.tech_, 'click', this.boundHandleTechClick_), this.on(this.tech_, 'dblclick', this.boundHandleTechDoubleClick_), this.on(this.tech_, 'touchstart', this.boundHandleTechTouchStart_), this.on(this.tech_, 'touchmove', this.boundHandleTechTouchMove_), this.on(this.tech_, 'touchend', this.boundHandleTechTouchEnd_), this.on(this.tech_, 'tap', this.boundHandleTechTap_);
}),
(e.removeTechControlsListeners_ = function () {
this.off(this.tech_, 'tap', this.boundHandleTechTap_), this.off(this.tech_, 'touchstart', this.boundHandleTechTouchStart_), this.off(this.tech_, 'touchmove', this.boundHandleTechTouchMove_), this.off(this.tech_, 'touchend', this.boundHandleTechTouchEnd_), this.off(this.tech_, 'click', this.boundHandleTechClick_), this.off(this.tech_, 'dblclick', this.boundHandleTechDoubleClick_);
}),
(e.handleTechReady_ = function () {
this.triggerReady(), this.cache_.volume && this.techCall_('setVolume', this.cache_.volume), this.handleTechPosterChange_(), this.handleTechDurationChange_();
}),
(e.handleTechLoadStart_ = function () {
this.removeClass('vjs-ended'), this.removeClass('vjs-seeking'), this.error(null), this.handleTechDurationChange_(), this.paused() ? (this.hasStarted(!1), this.trigger('loadstart')) : (this.trigger('loadstart'), this.trigger('firstplay')), this.manualAutoplay_(!0 === this.autoplay() && this.options_.normalizeAutoplay ? 'play' : this.autoplay());
}),
(e.manualAutoplay_ = function (e) {
var n = this;
if (this.tech_ && 'string' == typeof e) {
var t,
i = function () {
var e = n.muted();
n.muted(!0);
function t() {
n.muted(e);
}
n.playTerminatedQueue_.push(t);
var i = n.play();
if (wt(i))
return i.catch(function (e) {
throw (t(), new Error('Rejection at manualAutoplay. Restoring muted value. ' + (e || '')));
});
};
if (('any' !== e || this.muted() ? (t = 'muted' !== e || this.muted() ? this.play() : i()) : wt((t = this.play())) && (t = t.catch(i)), wt(t)))
return t
.then(function () {
n.trigger({ type: 'autoplay-success', autoplay: e });
})
.catch(function () {
n.trigger({ type: 'autoplay-failure', autoplay: e });
});
}
}),
(e.updateSourceCaches_ = function (e) {
var t = (e = void 0 === e ? '' : e),
i = '';
'string' != typeof t && ((t = e.src), (i = e.type)),
(this.cache_.source = this.cache_.source || {}),
(this.cache_.sources = this.cache_.sources || []),
t &&
!i &&
(i = (function (e, t) {
if (!t) return '';
if (e.cache_.source.src === t && e.cache_.source.type) return e.cache_.source.type;
var i = e.cache_.sources.filter(function (e) {
return e.src === t;
});
if (i.length) return i[0].type;
for (var n = e.$$('source'), r = 0; r < n.length; r++) {
var a = n[r];
if (a.type && a.src && a.src === t) return a.type;
}
return $i(t);
})(this, t)),
(this.cache_.source = lt({}, e, { src: t, type: i }));
for (
var i = this.cache_.sources.filter(function (e) {
return e.src && e.src === t;
}),
n = [],
r = this.$$('source'),
a = [],
s = 0;
s < r.length;
s++
) {
var o = ae(r[s]);
n.push(o), o.src && o.src === t && a.push(o.src);
}
a.length && !i.length ? (this.cache_.sources = n) : i.length || (this.cache_.sources = [this.cache_.source]), (this.cache_.src = t);
}),
(e.handleTechSourceset_ = function (e) {
var t,
i,
n,
r = this;
this.changingSrc_ ||
((t = function (e) {
return r.updateSourceCaches_(e);
}),
(i = this.currentSource().src),
(n = e.src),
i && !/^blob:/.test(i) && /^blob:/.test(n) && ((this.lastSource_ && (this.lastSource_.tech === n || this.lastSource_.player === i)) || (t = function () {})),
t(n),
e.src ||
this.tech_.any(['sourceset', 'loadstart'], function (e) {
'sourceset' !== e.type && ((e = r.techGet('currentSrc')), (r.lastSource_.tech = e), r.updateSourceCaches_(e));
})),
(this.lastSource_ = { player: this.currentSource().src, tech: e.src }),
this.trigger({ src: e.src, type: 'sourceset' });
}),
(e.hasStarted = function (e) {
if (void 0 === e) return this.hasStarted_;
e !== this.hasStarted_ && ((this.hasStarted_ = e), this.hasStarted_ ? (this.addClass('vjs-has-started'), this.trigger('firstplay')) : this.removeClass('vjs-has-started'));
}),
(e.handleTechPlay_ = function () {
this.removeClass('vjs-ended'), this.removeClass('vjs-paused'), this.addClass('vjs-playing'), this.hasStarted(!0), this.trigger('play');
}),
(e.handleTechRateChange_ = function () {
0 < this.tech_.playbackRate() &&
0 === this.cache_.lastPlaybackRate &&
(this.queuedCallbacks_.forEach(function (e) {
return e.callback(e.event);
}),
(this.queuedCallbacks_ = [])),
(this.cache_.lastPlaybackRate = this.tech_.playbackRate()),
this.trigger('ratechange');
}),
(e.handleTechWaiting_ = function () {
var t = this;
this.addClass('vjs-waiting'), this.trigger('waiting');
var i = this.currentTime();
this.on('timeupdate', function e() {
i !== t.currentTime() && (t.removeClass('vjs-waiting'), t.off('timeupdate', e));
});
}),
(e.handleTechCanPlay_ = function () {
this.removeClass('vjs-waiting'), this.trigger('canplay');
}),
(e.handleTechCanPlayThrough_ = function () {
this.removeClass('vjs-waiting'), this.trigger('canplaythrough');
}),
(e.handleTechPlaying_ = function () {
this.removeClass('vjs-waiting'), this.trigger('playing');
}),
(e.handleTechSeeking_ = function () {
this.addClass('vjs-seeking'), this.trigger('seeking');
}),
(e.handleTechSeeked_ = function () {
this.removeClass('vjs-seeking'), this.removeClass('vjs-ended'), this.trigger('seeked');
}),
(e.handleTechFirstPlay_ = function () {
this.options_.starttime && (h.warn('Passing the `starttime` option to the player will be deprecated in 6.0'), this.currentTime(this.options_.starttime)), this.addClass('vjs-has-started'), this.trigger('firstplay');
}),
(e.handleTechPause_ = function () {
this.removeClass('vjs-playing'), this.addClass('vjs-paused'), this.trigger('pause');
}),
(e.handleTechEnded_ = function () {
this.addClass('vjs-ended'), this.removeClass('vjs-waiting'), this.options_.loop ? (this.currentTime(0), this.play()) : this.paused() || this.pause(), this.trigger('ended');
}),
(e.handleTechDurationChange_ = function () {
this.duration(this.techGet_('duration'));
}),
(e.handleTechClick_ = function (e) {
this.controls_ && ((void 0 !== this.options_ && void 0 !== this.options_.userActions && void 0 !== this.options_.userActions.click && !1 === this.options_.userActions.click) || (void 0 !== this.options_ && void 0 !== this.options_.userActions && 'function' == typeof this.options_.userActions.click ? this.options_.userActions.click.call(this, e) : this.paused() ? St(this.play()) : this.pause()));
}),
(e.handleTechDoubleClick_ = function (t) {
this.controls_ &&
(Array.prototype.some.call(this.$$('.vjs-control-bar, .vjs-modal-dialog'), function (e) {
return e.contains(t.target);
}) ||
(void 0 !== this.options_ && void 0 !== this.options_.userActions && void 0 !== this.options_.userActions.doubleClick && !1 === this.options_.userActions.doubleClick) ||
(void 0 !== this.options_ && void 0 !== this.options_.userActions && 'function' == typeof this.options_.userActions.doubleClick ? this.options_.userActions.doubleClick.call(this, t) : this.isFullscreen() ? this.exitFullscreen() : this.requestFullscreen()));
}),
(e.handleTechTap_ = function () {
this.userActive(!this.userActive());
}),
(e.handleTechTouchStart_ = function () {
this.userWasActive = this.userActive();
}),
(e.handleTechTouchMove_ = function () {
this.userWasActive && this.reportUserActivity();
}),
(e.handleTechTouchEnd_ = function (e) {
e.cancelable && e.preventDefault();
}),
(e.handleStageClick_ = function () {
this.reportUserActivity();
}),
(e.toggleFullscreenClass_ = function () {
this.isFullscreen() ? this.addClass('vjs-fullscreen') : this.removeClass('vjs-fullscreen');
}),
(e.documentFullscreenChange_ = function (e) {
var t = e.target.player;
(t && t !== this) || ((e = this.el()), !(t = document[this.fsApi_.fullscreenElement] === e) && e.matches ? (t = e.matches(':' + this.fsApi_.fullscreen)) : !t && e.msMatchesSelector && (t = e.msMatchesSelector(':' + this.fsApi_.fullscreen)), this.isFullscreen(t));
}),
(e.handleTechFullscreenChange_ = function (e, t) {
t && (t.nativeIOSFullscreen && this.toggleClass('vjs-ios-native-fs'), this.isFullscreen(t.isFullscreen));
}),
(e.handleTechFullscreenError_ = function (e, t) {
this.trigger('fullscreenerror', t);
}),
(e.togglePictureInPictureClass_ = function () {
this.isInPictureInPicture() ? this.addClass('vjs-picture-in-picture') : this.removeClass('vjs-picture-in-picture');
}),
(e.handleTechEnterPictureInPicture_ = function (e) {
this.isInPictureInPicture(!0);
}),
(e.handleTechLeavePictureInPicture_ = function (e) {
this.isInPictureInPicture(!1);
}),
(e.handleTechError_ = function () {
var e = this.tech_.error();
this.error(e);
}),
(e.handleTechTextData_ = function () {
this.trigger('textdata', 1 < arguments.length ? arguments[1] : null);
}),
(e.getCache = function () {
return this.cache_;
}),
(e.resetCache_ = function () {
this.cache_ = { currentTime: 0, initTime: 0, inactivityTimeout: this.options_.inactivityTimeout, duration: NaN, lastVolume: 1, lastPlaybackRate: this.defaultPlaybackRate(), media: null, src: '', source: {}, sources: [], playbackRates: [], volume: 1 };
}),
(e.techCall_ = function (n, r) {
this.ready(function () {
if (n in Xi) return (e = this.middleware_), (t = this.tech_), (i = r), t[(t = n)](e.reduce(Yi(t), i));
if (n in Ki) return zi(this.middleware_, this.tech_, n, r);
var e, t, i;
try {
this.tech_ && this.tech_[n](r);
} catch (e) {
throw (h(e), e);
}
}, !0);
}),
(e.techGet_ = function (t) {
if (this.tech_ && this.tech_.isReady_) {
if (t in Gi) return (e = this.middleware_), (i = this.tech_), (n = t), e.reduceRight(Yi(n), i[n]());
if (t in Ki) return zi(this.middleware_, this.tech_, t);
var e, i, n;
try {
return this.tech_[t]();
} catch (e) {
if (void 0 === this.tech_[t]) throw (h('Video.js: ' + t + ' method not defined for ' + this.techName_ + ' playback technology.', e), e);
if ('TypeError' === e.name) throw (h('Video.js: ' + t + ' unavailable on ' + this.techName_ + ' playback technology element.', e), (this.tech_.isReady_ = !1), e);
throw (h(e), e);
}
}
}),
(e.play = function () {
var t = this,
e = this.options_.Promise || window.Promise;
return e
? new e(function (e) {
t.play_(e);
})
: this.play_();
}),
(e.play_ = function (e) {
var t = this;
this.playCallbacks_.push((e = void 0 === e ? St : e));
e = Boolean(!this.changingSrc_ && (this.src() || this.currentSrc()));
if ((this.waitToPlay_ && (this.off(['ready', 'loadstart'], this.waitToPlay_), (this.waitToPlay_ = null)), !this.isReady_ || !e))
return (
(this.waitToPlay_ = function (e) {
t.play_();
}),
this.one(['ready', 'loadstart'], this.waitToPlay_),
void (e || (!V && !q) || this.load())
);
e = this.techGet_('play');
null === e ? this.runPlayTerminatedQueue_() : this.runPlayCallbacks_(e);
}),
(e.runPlayTerminatedQueue_ = function () {
var e = this.playTerminatedQueue_.slice(0);
(this.playTerminatedQueue_ = []),
e.forEach(function (e) {
e();
});
}),
(e.runPlayCallbacks_ = function (t) {
var e = this.playCallbacks_.slice(0);
(this.playCallbacks_ = []),
(this.playTerminatedQueue_ = []),
e.forEach(function (e) {
e(t);
});
}),
(e.pause = function () {
this.techCall_('pause');
}),
(e.paused = function () {
return !1 !== this.techGet_('paused');
}),
(e.played = function () {
return this.techGet_('played') || yt(0, 0);
}),
(e.scrubbing = function (e) {
if ('undefined' == typeof e) return this.scrubbing_;
(this.scrubbing_ = !!e), this.techCall_('setScrubbing', this.scrubbing_), e ? this.addClass('vjs-scrubbing') : this.removeClass('vjs-scrubbing');
}),
(e.currentTime = function (e) {
return 'undefined' != typeof e ? (e < 0 && (e = 0), this.isReady_ && !this.changingSrc_ && this.tech_ && this.tech_.isReady_ ? (this.techCall_('setCurrentTime', e), void (this.cache_.initTime = 0)) : ((this.cache_.initTime = e), this.off('canplay', this.boundApplyInitTime_), void this.one('canplay', this.boundApplyInitTime_))) : ((this.cache_.currentTime = this.techGet_('currentTime') || 0), this.cache_.currentTime);
}),
(e.applyInitTime_ = function () {
this.currentTime(this.cache_.initTime);
}),
(e.duration = function (e) {
if (void 0 === e) return void 0 !== this.cache_.duration ? this.cache_.duration : NaN;
(e = (e = parseFloat(e)) < 0 ? 1 / 0 : e) !== this.cache_.duration && ((this.cache_.duration = e) === 1 / 0 ? this.addClass('vjs-live') : this.removeClass('vjs-live'), isNaN(e) || this.trigger('durationchange'));
}),
(e.remainingTime = function () {
return this.duration() - this.currentTime();
}),
(e.remainingTimeDisplay = function () {
return Math.floor(this.duration()) - Math.floor(this.currentTime());
}),
(e.buffered = function () {
var e;
return (e = !(e = this.techGet_('buffered')) || !e.length ? yt(0, 0) : e);
}),
(e.bufferedPercent = function () {
return vt(this.buffered(), this.duration());
}),
(e.bufferedEnd = function () {
var e = this.buffered(),
t = this.duration(),
e = e.end(e.length - 1);
return (e = t < e ? t : e);
}),
(e.volume = function (e) {
var t;
return void 0 !== e ? ((t = Math.max(0, Math.min(1, parseFloat(e)))), (this.cache_.volume = t), this.techCall_('setVolume', t), void (0 < t && this.lastVolume_(t))) : ((t = parseFloat(this.techGet_('volume'))), isNaN(t) ? 1 : t);
}),
(e.muted = function (e) {
if (void 0 === e) return this.techGet_('muted') || !1;
this.techCall_('setMuted', e);
}),
(e.defaultMuted = function (e) {
return void 0 !== e ? this.techCall_('setDefaultMuted', e) : this.techGet_('defaultMuted') || !1;
}),
(e.lastVolume_ = function (e) {
if (void 0 === e || 0 === e) return this.cache_.lastVolume;
this.cache_.lastVolume = e;
}),
(e.supportsFullScreen = function () {
return this.techGet_('supportsFullScreen') || !1;
}),
(e.isFullscreen = function (e) {
if (void 0 === e) return this.isFullscreen_;
var t = this.isFullscreen_;
(this.isFullscreen_ = Boolean(e)), this.isFullscreen_ !== t && this.fsApi_.prefixed && this.trigger('fullscreenchange'), this.toggleFullscreenClass_();
}),
(e.requestFullscreen = function (s) {
var e = this.options_.Promise || window.Promise;
if (e) {
var o = this;
return new e(function (e, i) {
function n() {
o.off('fullscreenerror', r), o.off('fullscreenchange', t);
}
function t() {
n(), e();
}
function r(e, t) {
n(), i(t);
}
o.one('fullscreenchange', t), o.one('fullscreenerror', r);
var a = o.requestFullscreenHelper_(s);
a && (a.then(n, n), a.then(e, i));
});
}
return this.requestFullscreenHelper_();
}),
(e.requestFullscreenHelper_ = function (e) {
var t = this;
if ((this.fsApi_.prefixed || ((i = (this.options_.fullscreen && this.options_.fullscreen.options) || {}), void 0 !== e && (i = e)), this.fsApi_.requestFullscreen)) {
var i = this.el_[this.fsApi_.requestFullscreen](i);
return (
i &&
i.then(
function () {
return t.isFullscreen(!0);
},
function () {
return t.isFullscreen(!1);
}
),
i
);
}
this.tech_.supportsFullScreen() && !0 == !this.options_.preferFullWindow ? this.techCall_('enterFullScreen') : this.enterFullWindow();
}),
(e.exitFullscreen = function () {
var e = this.options_.Promise || window.Promise;
if (e) {
var s = this;
return new e(function (e, i) {
function n() {
s.off('fullscreenerror', r), s.off('fullscreenchange', t);
}
function t() {
n(), e();
}
function r(e, t) {
n(), i(t);
}
s.one('fullscreenchange', t), s.one('fullscreenerror', r);
var a = s.exitFullscreenHelper_();
a && (a.then(n, n), a.then(e, i));
});
}
return this.exitFullscreenHelper_();
}),
(e.exitFullscreenHelper_ = function () {
var e = this;
if (this.fsApi_.requestFullscreen) {
var t = document[this.fsApi_.exitFullscreen]();
return (
t &&
St(
t.then(function () {
return e.isFullscreen(!1);
})
),
t
);
}
this.tech_.supportsFullScreen() && !0 == !this.options_.preferFullWindow ? this.techCall_('exitFullScreen') : this.exitFullWindow();
}),
(e.enterFullWindow = function () {
this.isFullscreen(!0), (this.isFullWindow = !0), (this.docOrigOverflow = document.documentElement.style.overflow), Be(document, 'keydown', this.boundFullWindowOnEscKey_), (document.documentElement.style.overflow = 'hidden'), te(document.body, 'vjs-full-window'), this.trigger('enterFullWindow');
}),
(e.fullWindowOnEscKey = function (e) {
It.isEventKey(e, 'Esc') && !0 === this.isFullscreen() && (this.isFullWindow ? this.exitFullWindow() : this.exitFullscreen());
}),
(e.exitFullWindow = function () {
this.isFullscreen(!1), (this.isFullWindow = !1), Fe(document, 'keydown', this.boundFullWindowOnEscKey_), (document.documentElement.style.overflow = this.docOrigOverflow), ie(document.body, 'vjs-full-window'), this.trigger('exitFullWindow');
}),
(e.disablePictureInPicture = function (e) {
if (void 0 === e) return this.techGet_('disablePictureInPicture');
this.techCall_('setDisablePictureInPicture', e), (this.options_.disablePictureInPicture = e), this.trigger('disablepictureinpicturechanged');
}),
(e.isInPictureInPicture = function (e) {
return void 0 !== e ? ((this.isInPictureInPicture_ = !!e), void this.togglePictureInPictureClass_()) : !!this.isInPictureInPicture_;
}),
(e.requestPictureInPicture = function () {
if ('pictureInPictureEnabled' in document && !1 === this.disablePictureInPicture()) return this.techGet_('requestPictureInPicture');
}),
(e.exitPictureInPicture = function () {
if ('pictureInPictureEnabled' in document) return document.exitPictureInPicture();
}),
(e.handleKeyDown = function (e) {
var t = this.options_.userActions;
t &&
t.hotkeys &&
((function (e) {
var t = e.tagName.toLowerCase();
if (e.isContentEditable) return !0;
if ('input' === t) return -1 === ['button', 'checkbox', 'hidden', 'radio', 'reset', 'submit'].indexOf(e.type);
return -1 !== ['textarea'].indexOf(t);
})(this.el_.ownerDocument.activeElement) ||
('function' == typeof t.hotkeys ? t.hotkeys.call(this, e) : this.handleHotkeys(e)));
}),
(e.handleHotkeys = function (e) {
var t = this.options_.userActions ? this.options_.userActions.hotkeys : {},
i = t.fullscreenKey,
n = t.muteKey,
n =
void 0 === n
? function (e) {
return It.isEventKey(e, 'm');
}
: n,
t = t.playPauseKey,
t =
void 0 === t
? function (e) {
return It.isEventKey(e, 'k') || It.isEventKey(e, 'Space');
}
: t;
(void 0 === i
? function (e) {
return It.isEventKey(e, 'f');
}
: i
).call(this, e)
? (e.preventDefault(), e.stopPropagation(), (i = ht.getComponent('FullscreenToggle')), !1 !== document[this.fsApi_.fullscreenEnabled] && i.prototype.handleClick.call(this, e))
: n.call(this, e)
? (e.preventDefault(), e.stopPropagation(), ht.getComponent('MuteToggle').prototype.handleClick.call(this, e))
: t.call(this, e) && (e.preventDefault(), e.stopPropagation(), ht.getComponent('PlayToggle').prototype.handleClick.call(this, e));
}),
(e.canPlayType = function (e) {
for (var t, i = 0, n = this.options_.techOrder; i < n.length; i++) {
var r = n[i],
a = ji.getTech(r);
if ((a = a || ht.getComponent(r))) {
if (a.isSupported() && (t = a.canPlayType(e))) return t;
} else h.error('The "' + r + '" tech is undefined. Skipped browser support check for that tech.');
}
return '';
}),
(e.selectSource = function (e) {
function t(e, i, n) {
var r;
return (
e.some(function (t) {
return i.some(function (e) {
if ((r = n(t, e))) return !0;
});
}),
r
);
}
var i,
n = this,
r = this.options_.techOrder
.map(function (e) {
return [e, ji.getTech(e)];
})
.filter(function (e) {
var t = e[0],
e = e[1];
return e ? e.isSupported() : (h.error('The "' + t + '" tech is undefined. Skipped browser support check for that tech.'), !1);
}),
a = function (e, t) {
var i = e[0];
if (e[1].canPlaySource(t, n.options_[i.toLowerCase()])) return { source: t, tech: i };
},
a = this.options_.sourceOrder
? t(
e,
r,
((i = a),
function (e, t) {
return i(t, e);
})
)
: t(r, e, a);
return a || !1;
}),
(e.handleSrc_ = function (e, n) {
var r = this;
if ('undefined' == typeof e) return this.cache_.src || '';
this.resetRetryOnError_ && this.resetRetryOnError_();
var t,
i,
a = Ji(e);
a.length
? ((this.changingSrc_ = !0),
n || (this.cache_.sources = a),
this.updateSourceCaches_(a[0]),
Wi(this, a[0], function (e, t) {
var i;
return (
(r.middleware_ = t),
n || (r.cache_.sources = a),
r.updateSourceCaches_(e),
r.src_(e)
? 1 < a.length
? r.handleSrc_(a.slice(1))
: ((r.changingSrc_ = !1),
r.setTimeout(function () {
this.error({ code: 4, message: this.localize(this.options_.notSupportedMessage) });
}, 0),
void r.triggerReady())
: ((t = t),
(i = r.tech_),
void t.forEach(function (e) {
return e.setTech && e.setTech(i);
}))
);
}),
this.options_.retryOnError &&
1 < a.length &&
((i = function () {
r.off('error', t);
}),
this.one(
'error',
(t = function () {
r.error(null), r.handleSrc_(a.slice(1), !0);
})
),
this.one('playing', i),
(this.resetRetryOnError_ = function () {
r.off('error', t), r.off('playing', i);
})))
: this.setTimeout(function () {
this.error({ code: 4, message: this.localize(this.options_.notSupportedMessage) });
}, 0);
}),
(e.src = function (e) {
return this.handleSrc_(e, !1);
}),
(e.src_ = function (e) {
var t,
i,
n = this,
r = this.selectSource([e]);
return (
!r ||
((t = r.tech),
(i = this.techName_),
ut(t) !== ut(i)
? ((this.changingSrc_ = !0),
this.loadTech_(r.tech, r.source),
this.tech_.ready(function () {
n.changingSrc_ = !1;
}))
: this.ready(function () {
this.tech_.constructor.prototype.hasOwnProperty('setSource') ? this.techCall_('setSource', e) : this.techCall_('src', e.src), (this.changingSrc_ = !1);
}, !0),
!1)
);
}),
(e.load = function () {
this.techCall_('load');
}),
(e.reset = function () {
var e = this,
t = this.options_.Promise || window.Promise;
this.paused() || !t
? this.doReset_()
: St(
this.play().then(function () {
return e.doReset_();
})
);
}),
(e.doReset_ = function () {
this.tech_ && this.tech_.clearTracks('text'), this.resetCache_(), this.poster(''), this.loadTech_(this.options_.techOrder[0], null), this.techCall_('reset'), this.resetControlBarUI_(), it(this) && this.trigger('playerreset');
}),
(e.resetControlBarUI_ = function () {
this.resetProgressBar_(), this.resetPlaybackRate_(), this.resetVolumeBar_();
}),
(e.resetProgressBar_ = function () {
this.currentTime(0);
var e = this.controlBar,
t = e.durationDisplay,
e = e.remainingTimeDisplay;
t && t.updateContent(), e && e.updateContent();
}),
(e.resetPlaybackRate_ = function () {
this.playbackRate(this.defaultPlaybackRate()), this.handleTechRateChange_();
}),
(e.resetVolumeBar_ = function () {
this.volume(1), this.trigger('volumechange');
}),
(e.currentSources = function () {
var e = this.currentSource(),
t = [];
return 0 !== Object.keys(e).length && t.push(e), this.cache_.sources || t;
}),
(e.currentSource = function () {
return this.cache_.source || {};
}),
(e.currentSrc = function () {
return (this.currentSource() && this.currentSource().src) || '';
}),
(e.currentType = function () {
return (this.currentSource() && this.currentSource().type) || '';
}),
(e.preload = function (e) {
return void 0 !== e ? (this.techCall_('setPreload', e), void (this.options_.preload = e)) : this.techGet_('preload');
}),
(e.autoplay = function (e) {
if (void 0 === e) return this.options_.autoplay || !1;
var t;
('string' == typeof e && /(any|play|muted)/.test(e)) || (!0 === e && this.options_.normalizeAutoplay) ? ((this.options_.autoplay = e), this.manualAutoplay_('string' == typeof e ? e : 'play'), (t = !1)) : (this.options_.autoplay = !!e), (t = 'undefined' == typeof t ? this.options_.autoplay : t), this.tech_ && this.techCall_('setAutoplay', t);
}),
(e.playsinline = function (e) {
return void 0 !== e ? (this.techCall_('setPlaysinline', e), (this.options_.playsinline = e), this) : this.techGet_('playsinline');
}),
(e.loop = function (e) {
return void 0 !== e ? (this.techCall_('setLoop', e), void (this.options_.loop = e)) : this.techGet_('loop');
}),
(e.poster = function (e) {
if (void 0 === e) return this.poster_;
(e = e || '') !== this.poster_ && ((this.poster_ = e), this.techCall_('setPoster', e), (this.isPosterFromTech_ = !1), this.trigger('posterchange'));
}),
(e.handleTechPosterChange_ = function () {
var e;
(this.poster_ && !this.options_.techCanOverridePoster) || !this.tech_ || !this.tech_.poster || ((e = this.tech_.poster() || '') !== this.poster_ && ((this.poster_ = e), (this.isPosterFromTech_ = !0), this.trigger('posterchange')));
}),
(e.controls = function (e) {
if (void 0 === e) return !!this.controls_;
this.controls_ !== (e = !!e) && ((this.controls_ = e), this.usingNativeControls() && this.techCall_('setControls', e), this.controls_ ? (this.removeClass('vjs-controls-disabled'), this.addClass('vjs-controls-enabled'), this.trigger('controlsenabled'), this.usingNativeControls() || this.addTechControlsListeners_()) : (this.removeClass('vjs-controls-enabled'), this.addClass('vjs-controls-disabled'), this.trigger('controlsdisabled'), this.usingNativeControls() || this.removeTechControlsListeners_()));
}),
(e.usingNativeControls = function (e) {
if (void 0 === e) return !!this.usingNativeControls_;
this.usingNativeControls_ !== (e = !!e) && ((this.usingNativeControls_ = e), this.usingNativeControls_ ? (this.addClass('vjs-using-native-controls'), this.trigger('usingnativecontrols')) : (this.removeClass('vjs-using-native-controls'), this.trigger('usingcustomcontrols')));
}),
(e.error = function (t) {
var i = this;
if (void 0 === t) return this.error_ || null;
if (
(a('beforeerror').forEach(function (e) {
e = e(i, t);
(T(e) && !Array.isArray(e)) || 'string' == typeof e || 'number' == typeof e || null === e ? (t = e) : i.log.error('please return a value that MediaError expects in beforeerror hooks');
}),
this.options_.suppressNotSupportedError && t && 4 === t.code)
) {
var e = function () {
this.error(t);
};
return (
(this.options_.suppressNotSupportedError = !1),
this.any(['click', 'touchstart'], e),
void this.one('loadstart', function () {
this.off(['click', 'touchstart'], e);
})
);
}
if (null === t) return (this.error_ = t), this.removeClass('vjs-error'), void (this.errorDisplay && this.errorDisplay.close());
(this.error_ = new _t(t)),
this.addClass('vjs-error'),
h.error('(CODE:' + this.error_.code + ' ' + _t.errorTypes[this.error_.code] + ')', this.error_.message, this.error_),
this.trigger('error'),
a('error').forEach(function (e) {
return e(i, i.error_);
});
}),
(e.reportUserActivity = function (e) {
this.userActivity_ = !0;
}),
(e.userActive = function (e) {
if (void 0 === e) return this.userActive_;
if ((e = !!e) !== this.userActive_) {
if (((this.userActive_ = e), this.userActive_)) return (this.userActivity_ = !0), this.removeClass('vjs-user-inactive'), this.addClass('vjs-user-active'), void this.trigger('useractive');
this.tech_ &&
this.tech_.one('mousemove', function (e) {
e.stopPropagation(), e.preventDefault();
}),
(this.userActivity_ = !1),
this.removeClass('vjs-user-active'),
this.addClass('vjs-user-inactive'),
this.trigger('userinactive');
}
}),
(e.listenForUserActivity_ = function () {
var t,
i,
n,
r = Ve(this, this.reportUserActivity),
e = function (e) {
r(), this.clearInterval(t);
};
this.on('mousedown', function () {
r(), this.clearInterval(t), (t = this.setInterval(r, 250));
}),
this.on('mousemove', function (e) {
(e.screenX === i && e.screenY === n) || ((i = e.screenX), (n = e.screenY), r());
}),
this.on('mouseup', e),
this.on('mouseleave', e);
var a,
e = this.getChild('controlBar');
!e ||
q ||
A ||
(e.on('mouseenter', function (e) {
0 !== this.player().options_.inactivityTimeout && (this.player().cache_.inactivityTimeout = this.player().options_.inactivityTimeout), (this.player().options_.inactivityTimeout = 0);
}),
e.on('mouseleave', function (e) {
this.player().options_.inactivityTimeout = this.player().cache_.inactivityTimeout;
})),
this.on('keydown', r),
this.on('keyup', r),
this.setInterval(function () {
var e;
this.userActivity_ &&
((this.userActivity_ = !1),
this.userActive(!0),
this.clearTimeout(a),
(e = this.options_.inactivityTimeout) <= 0 ||
(a = this.setTimeout(function () {
this.userActivity_ || this.userActive(!1);
}, e)));
}, 250);
}),
(e.playbackRate = function (e) {
if (void 0 === e) return this.tech_ && this.tech_.featuresPlaybackRate ? this.cache_.lastPlaybackRate || this.techGet_('playbackRate') : 1;
this.techCall_('setPlaybackRate', e);
}),
(e.defaultPlaybackRate = function (e) {
return void 0 !== e ? this.techCall_('setDefaultPlaybackRate', e) : this.tech_ && this.tech_.featuresPlaybackRate ? this.techGet_('defaultPlaybackRate') : 1;
}),
(e.isAudio = function (e) {
if (void 0 === e) return !!this.isAudio_;
this.isAudio_ = !!e;
}),
(e.addTextTrack = function (e, t, i) {
if (this.tech_) return this.tech_.addTextTrack(e, t, i);
}),
(e.addRemoteTextTrack = function (e, t) {
if (this.tech_) return this.tech_.addRemoteTextTrack(e, t);
}),
(e.removeRemoteTextTrack = function (e) {
var t = (t = (e = void 0 === e ? {} : e).track) || e;
if (this.tech_) return this.tech_.removeRemoteTextTrack(t);
}),
(e.getVideoPlaybackQuality = function () {
return this.techGet_('getVideoPlaybackQuality');
}),
(e.videoWidth = function () {
return (this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth()) || 0;
}),
(e.videoHeight = function () {
return (this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight()) || 0;
}),
(e.language = function (e) {
if (void 0 === e) return this.language_;
this.language_ !== String(e).toLowerCase() && ((this.language_ = String(e).toLowerCase()), it(this) && this.trigger('languagechange'));
}),
(e.languages = function () {
return lt(o.prototype.options_.languages, this.languages_);
}),
(e.toJSON = function () {
var e = lt(this.options_),
t = e.tracks;
e.tracks = [];
for (var i = 0; i < t.length; i++) {
var n = t[i];
((n = lt(n)).player = void 0), (e.tracks[i] = n);
}
return e;
}),
(e.createModal = function (e, t) {
var i = this;
(t = t || {}).content = e || '';
var n = new At(this, t);
return (
this.addChild(n),
n.on('dispose', function () {
i.removeChild(n);
}),
n.open(),
n
);
}),
(e.updateCurrentBreakpoint_ = function () {
if (this.responsive())
for (var e = this.currentBreakpoint(), t = this.currentWidth(), i = 0; i < Nn.length; i++) {
var n = Nn[i];
if (t <= this.breakpoints_[n]) {
if (e === n) return;
e && this.removeClass(Un[e]), this.addClass(Un[n]), (this.breakpoint_ = n);
break;
}
}
}),
(e.removeCurrentBreakpoint_ = function () {
var e = this.currentBreakpointClass();
(this.breakpoint_ = ''), e && this.removeClass(e);
}),
(e.breakpoints = function (e) {
return void 0 === e || ((this.breakpoint_ = ''), (this.breakpoints_ = b({}, Bn, e)), this.updateCurrentBreakpoint_()), b(this.breakpoints_);
}),
(e.responsive = function (e) {
return void 0 === e ? this.responsive_ : (e = Boolean(e)) !== this.responsive_ ? ((this.responsive_ = e) ? (this.on('playerresize', this.boundUpdateCurrentBreakpoint_), this.updateCurrentBreakpoint_()) : (this.off('playerresize', this.boundUpdateCurrentBreakpoint_), this.removeCurrentBreakpoint_()), e) : void 0;
}),
(e.currentBreakpoint = function () {
return this.breakpoint_;
}),
(e.currentBreakpointClass = function () {
return Un[this.breakpoint_] || '';
}),
(e.loadMedia = function (e, t) {
var i,
n,
r,
a = this;
e &&
'object' == typeof e &&
(this.reset(),
(this.cache_.media = lt(e)),
(i = (r = this.cache_.media).artwork),
(n = r.poster),
(e = r.src),
(r = r.textTracks),
!i && n && (this.cache_.media.artwork = [{ src: n, type: $i(n) }]),
e && this.src(e),
n && this.poster(n),
Array.isArray(r) &&
r.forEach(function (e) {
return a.addRemoteTextTrack(e, !1);
}),
this.ready(t));
}),
(e.getMedia = function () {
if (this.cache_.media) return lt(this.cache_.media);
var e = this.poster(),
t = {
src: this.currentSources(),
textTracks: Array.prototype.map.call(this.remoteTextTracks(), function (e) {
return { kind: e.kind, label: e.label, language: e.language, src: e.src };
}),
};
return e && ((t.poster = e), (t.artwork = [{ src: t.poster, type: $i(t.poster) }])), t;
}),
(o.getTagSettings = function (e) {
var t,
i = { sources: [], tracks: [] },
n = ae(e),
r = n['data-setup'];
if ((ee(e, 'vjs-fill') && (n.fill = !0), ee(e, 'vjs-fluid') && (n.fluid = !0), null !== r && ((r = (t = Tt(r || '{}'))[0]), (t = t[1]), r && h.error(r), b(n, t)), b(i, n), e.hasChildNodes()))
for (var a = e.childNodes, s = 0, o = a.length; s < o; s++) {
var u = a[s],
l = u.nodeName.toLowerCase();
'source' === l ? i.sources.push(ae(u)) : 'track' === l && i.tracks.push(ae(u));
}
return i;
}),
(e.flexNotSupported_ = function () {
var e = document.createElement('i');
return !('flexBasis' in e.style || 'webkitFlexBasis' in e.style || 'mozFlexBasis' in e.style || 'msFlexBasis' in e.style || 'msFlexOrder' in e.style);
}),
(e.debug = function (e) {
if (void 0 === e) return this.debugEnabled_;
e ? (this.trigger('debugon'), (this.previousLogLevel_ = this.log.level), this.log.level('debug'), (this.debugEnabled_ = !0)) : (this.trigger('debugoff'), this.log.level(this.previousLogLevel_), (this.previousLogLevel_ = void 0), (this.debugEnabled_ = !1));
}),
(e.playbackRates = function (e) {
if (void 0 === e) return this.cache_.playbackRates;
Array.isArray(e) &&
e.every(function (e) {
return 'number' == typeof e;
}) &&
((this.cache_.playbackRates = e), this.trigger('playbackrateschange'));
}),
o
);
})(ht);
oi.names.forEach(function (e) {
var t = oi[e];
Fn.prototype[t.getterName] = function () {
return this.tech_ ? this.tech_[t.getterName]() : ((this[t.privateName] = this[t.privateName] || new t.ListClass()), this[t.privateName]);
};
}),
(Fn.prototype.crossorigin = Fn.prototype.crossOrigin),
(Fn.players = {});
k = window.navigator;
(Fn.prototype.options_ = { techOrder: ji.defaultTechOrder_, html5: {}, inactivityTimeout: 2e3, playbackRates: [], liveui: !1, children: ['mediaLoader', 'posterImage', 'textTrackDisplay', 'loadingSpinner', 'bigPlayButton', 'liveTracker', 'controlBar', 'errorDisplay', 'textTrackSettings', 'resizeManager'], language: (k && ((k.languages && k.languages[0]) || k.userLanguage || k.language)) || 'en', languages: {}, notSupportedMessage: 'No compatible source was found for this media.', normalizeAutoplay: !1, fullscreen: { options: { navigationUI: 'hide' } }, breakpoints: {}, responsive: !1 }),
['ended', 'seeking', 'seekable', 'networkState', 'readyState'].forEach(function (e) {
Fn.prototype[e] = function () {
return this.techGet_(e);
};
}),
Rn.forEach(function (e) {
Fn.prototype['handleTech' + ut(e) + '_'] = function () {
return this.trigger(e);
};
}),
ht.registerComponent('Player', Fn);
var jn = m(function (i) {
function n(e, t) {
return (
(i.exports = n =
Object.setPrototypeOf ||
function (e, t) {
return (e.__proto__ = t), e;
}),
n(e, t)
);
}
i.exports = n;
});
function Hn(e) {
return Qn.hasOwnProperty(e);
}
function qn(e) {
return Hn(e) ? Qn[e] : void 0;
}
function Vn(e, t, i) {
(i = (i ? 'before' : '') + 'pluginsetup'), e.trigger(i, t), e.trigger(i + ':' + t.name, t);
}
function Wn(t, i) {
function n() {
Vn(this, { name: t, plugin: i, instance: null }, !0);
var e = i.apply(this, arguments);
return $n(this, t), Vn(this, { name: t, plugin: i, instance: e }), e;
}
return (
Object.keys(i).forEach(function (e) {
n[e] = i[e];
}),
n
);
}
function zn(r, a) {
return (
(a.prototype.name = r),
function () {
Vn(this, { name: r, plugin: a, instance: null }, !0);
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
var n = Xn(a, [this].concat(t));
return (
(this[r] = function () {
return n;
}),
Vn(this, n.getEventHash()),
n
);
}
);
}
var Gn = function () {
if ('undefined' == typeof Reflect || !Reflect.construct) return !1;
if (Reflect.construct.sham) return !1;
if ('function' == typeof Proxy) return !0;
try {
return Date.prototype.toString.call(Reflect.construct(Date, [], function () {})), !0;
} catch (e) {
return !1;
}
},
Xn = m(function (n) {
function r(e, t, i) {
return (
Gn()
? (n.exports = r = Reflect.construct)
: (n.exports = r =
function (e, t, i) {
var n = [null];
n.push.apply(n, t);
n = new (Function.bind.apply(e, n))();
return i && jn(n, i.prototype), n;
}),
r.apply(null, arguments)
);
}
n.exports = r;
}),
Kn = 'plugin',
Yn = 'activePlugins_',
Qn = {},
$n = function (e, t) {
(e[Yn] = e[Yn] || {}), (e[Yn][t] = !0);
},
Jn = (function () {
function i(e) {
if (this.constructor === i) throw new Error('Plugin must be sub-classed; not directly instantiated.');
(this.player = e), this.log || (this.log = this.player.log.createLogger(this.name)), rt(this), delete this.trigger, st(this, this.constructor.defaultState), $n(e, this.name), (this.dispose = this.dispose.bind(this)), e.on('dispose', this.dispose);
}
var e = i.prototype;
return (
(e.version = function () {
return this.constructor.VERSION;
}),
(e.getEventHash = function (e) {
return ((e = void 0 === e ? {} : e).name = this.name), (e.plugin = this.constructor), (e.instance = this), e;
}),
(e.trigger = function (e, t) {
return je(this.eventBusEl_, e, this.getEventHash((t = void 0 === t ? {} : t)));
}),
(e.handleStateChanged = function (e) {}),
(e.dispose = function () {
var e = this.name,
t = this.player;
this.trigger('dispose'), this.off(), t.off('dispose', this.dispose), (t[Yn][e] = !1), (this.player = this.state = null), (t[e] = zn(e, Qn[e]));
}),
(i.isBasic = function (e) {
e = 'string' == typeof e ? qn(e) : e;
return 'function' == typeof e && !i.prototype.isPrototypeOf(e.prototype);
}),
(i.registerPlugin = function (e, t) {
if ('string' != typeof e) throw new Error('Illegal plugin name, "' + e + '", must be a string, was ' + typeof e + '.');
if (Hn(e)) h.warn('A plugin named "' + e + '" already exists. You may want to avoid re-registering plugins!');
else if (Fn.prototype.hasOwnProperty(e)) throw new Error('Illegal plugin name, "' + e + '", cannot share a name with an existing player method!');
if ('function' != typeof t) throw new Error('Illegal plugin for "' + e + '", must be a function, was ' + typeof t + '.');
return (Qn[e] = t), e !== Kn && (i.isBasic(t) ? (Fn.prototype[e] = Wn(e, t)) : (Fn.prototype[e] = zn(e, t))), t;
}),
(i.deregisterPlugin = function (e) {
if (e === Kn) throw new Error('Cannot de-register base plugin.');
Hn(e) && (delete Qn[e], delete Fn.prototype[e]);
}),
(i.getPlugins = function (e) {
var i;
return (
(e = void 0 === e ? Object.keys(Qn) : e).forEach(function (e) {
var t = qn(e);
t && ((i = i || {})[e] = t);
}),
i
);
}),
(i.getPluginVersion = function (e) {
e = qn(e);
return (e && e.VERSION) || '';
}),
i
);
})();
(Jn.getPlugin = qn),
(Jn.BASE_PLUGIN_NAME = Kn),
Jn.registerPlugin(Kn, Jn),
(Fn.prototype.usingPlugin = function (e) {
return !!this[Yn] && !0 === this[Yn][e];
}),
(Fn.prototype.hasPlugin = function (e) {
return !!Hn(e);
});
var Zn = function (e, t) {
if ('function' != typeof t && null !== t) throw new TypeError('Super expression must either be null or a function');
(e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } })), t && jn(e, t);
},
er = function (e) {
return 0 === e.indexOf('#') ? e.slice(1) : e;
};
function tr(e, t, i) {
if ((r = tr.getPlayer(e))) return t && h.warn('Player "' + e + '" is already initialised. Options will not be applied.'), i && r.ready(i), r;
var n = 'string' == typeof e ? Te('#' + er(e)) : e;
if (!K(n)) throw new TypeError('The element or ID supplied is not valid. (videojs)');
(n.ownerDocument.defaultView && n.ownerDocument.body.contains(n)) || h.warn('The element supplied is not included in the DOM'),
(t = t || {}),
a('beforesetup').forEach(function (e) {
e = e(n, lt(t));
T(e) && !Array.isArray(e) ? (t = lt(t, e)) : h.error('please return an object in beforesetup hooks');
});
var r = new (ht.getComponent('Player'))(n, t, i);
return (
a('setup').forEach(function (e) {
return e(r);
}),
r
);
}
(tr.hooks_ = i),
(tr.hooks = a),
(tr.hook = function (e, t) {
a(e, t);
}),
(tr.hookOnce = function (i, e) {
a(
i,
[].concat(e).map(function (t) {
return function e() {
return n(i, e), t.apply(void 0, arguments);
};
})
);
}),
(tr.removeHook = n),
!0 !== window.VIDEOJS_NO_DYNAMIC_STYLE && X() && ((rr = Te('.vjs-styles-defaults')) || ((rr = xe('vjs-styles-defaults')), (k = Te('head')) && k.insertBefore(rr, k.firstChild), Ae(rr, '\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n '))),
Ce(1, tr),
(tr.VERSION = u),
(tr.options = Fn.prototype.options_),
(tr.getPlayers = function () {
return Fn.players;
}),
(tr.getPlayer = function (e) {
var t = Fn.players;
if ('string' == typeof e) {
var i = er(e),
n = t[i];
if (n) return n;
i = Te('#' + i);
} else i = e;
if (K(i)) {
(e = i.player), (i = i.playerId);
if (e || t[i]) return e || t[i];
}
}),
(tr.getAllPlayers = function () {
return Object.keys(Fn.players)
.map(function (e) {
return Fn.players[e];
})
.filter(Boolean);
}),
(tr.players = Fn.players),
(tr.getComponent = ht.getComponent),
(tr.registerComponent = function (e, t) {
ji.isTech(t) && h.warn('The ' + e + ' tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)'), ht.registerComponent.call(ht, e, t);
}),
(tr.getTech = ji.getTech),
(tr.registerTech = ji.registerTech),
(tr.use = function (e, t) {
(Hi[e] = Hi[e] || []), Hi[e].push(t);
}),
Object.defineProperty(tr, 'middleware', { value: {}, writeable: !1, enumerable: !0 }),
Object.defineProperty(tr.middleware, 'TERMINATOR', { value: Vi, writeable: !1, enumerable: !0 }),
(tr.browser = W),
(tr.TOUCH_ENABLED = F),
(tr.extend = function (e, t) {
var i,
n = function () {
e.apply(this, arguments);
},
r = {};
for (i in ('object' == typeof (t = void 0 === t ? {} : t) ? (t.constructor !== Object.prototype.constructor && (n = t.constructor), (r = t)) : 'function' == typeof t && (n = t), Zn(n, e), e && (n.super_ = e), r)) r.hasOwnProperty(i) && (n.prototype[i] = r[i]);
return n;
}),
(tr.mergeOptions = lt),
(tr.bind = Ve),
(tr.registerPlugin = Jn.registerPlugin),
(tr.deregisterPlugin = Jn.deregisterPlugin),
(tr.plugin = function (e, t) {
return h.warn('videojs.plugin() is deprecated; use videojs.registerPlugin() instead'), Jn.registerPlugin(e, t);
}),
(tr.getPlugins = Jn.getPlugins),
(tr.getPlugin = Jn.getPlugin),
(tr.getPluginVersion = Jn.getPluginVersion),
(tr.addLanguage = function (e, t) {
var i;
return (e = ('' + e).toLowerCase()), (tr.options.languages = lt(tr.options.languages, (((i = {})[e] = t), i))), tr.options.languages[e];
}),
(tr.log = h),
(tr.createLogger = p),
(tr.createTimeRange = tr.createTimeRanges = yt),
(tr.formatTime = ln),
(tr.setFormatTime = function (e) {
un = e;
}),
(tr.resetFormatTime = function () {
un = on;
}),
(tr.parseUrl = Rt),
(tr.isCrossOrigin = Ut),
(tr.EventTarget = Ge),
(tr.on = Be),
(tr.one = He),
(tr.off = Fe),
(tr.trigger = je),
(tr.xhr = Jt),
(tr.TextTrack = ri),
(tr.AudioTrack = x),
(tr.VideoTrack = U),
['isEl', 'isTextNode', 'createEl', 'hasClass', 'addClass', 'removeClass', 'toggleClass', 'setAttributes', 'getAttributes', 'emptyEl', 'appendContent', 'insertContent'].forEach(function (e) {
tr[e] = function () {
return h.warn('videojs.' + e + '() is deprecated; use videojs.dom.' + e + '() instead'), Se[e].apply(null, arguments);
};
}),
(tr.computedStyle = S),
(tr.dom = Se),
(tr.url = Gt),
(tr.defineLazyProperty = An),
tr.addLanguage('en', { 'Non-Fullscreen': 'Exit Fullscreen' });
var ir = m(function (e, t) {
var i, a, n, r, s;
(i = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/?#]*\/)*[^;?#]*)?(;[^?#]*)?(\?[^#]*)?(#[^]*)?$/),
(a = /^([^\/?#]*)([^]*)$/),
(n = /(?:\/|^)\.(?=\/)/g),
(r = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/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);
}
n = s.parseURL(t);
if (!n) throw new Error('Error trying to parse relative URL.');
if (n.scheme) return i.alwaysNormalize ? ((n.path = s.normalizePath(n.path)), s.buildURLFromParts(n)) : t;
t = s.parseURL(e);
if (!t) throw new Error('Error trying to parse base URL.');
!t.netLoc && t.path && '/' !== t.path[0] && ((r = a.exec(t.path)), (t.netLoc = r[1]), (t.path = r[2])), t.netLoc && !t.path && (t.path = '/');
var r,
e = { scheme: t.scheme, netLoc: n.netLoc, path: null, params: n.params, query: n.query, fragment: n.fragment };
return n.netLoc || ((e.netLoc = t.netLoc), '/' !== n.path[0] && (n.path ? ((r = (r = t.path).substring(0, r.lastIndexOf('/') + 1) + n.path), (e.path = s.normalizePath(r))) : ((e.path = t.path), n.params || ((e.params = t.params), n.query || (e.query = t.query))))), null === e.path && (e.path = i.alwaysNormalize ? s.normalizePath(n.path) : n.path), s.buildURLFromParts(e);
},
parseURL: function (e) {
e = i.exec(e);
return e ? { scheme: e[1] || '', netLoc: e[2] || '', path: e[3] || '', params: e[4] || '', query: e[5] || '', fragment: e[6] || '' } : null;
},
normalizePath: function (e) {
for (e = e.split('').reverse().join('').replace(n, ''); e.length !== (e = e.replace(r, '')).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);
}),
nr = 'http://example.com',
rr = (function () {
function e() {
this.listeners = {};
}
var t = e.prototype;
return (
(t.on = function (e, t) {
this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t);
}),
(t.off = function (e, t) {
if (!this.listeners[e]) return !1;
t = this.listeners[e].indexOf(t);
return (this.listeners[e] = this.listeners[e].slice(0)), this.listeners[e].splice(t, 1), -1 < t;
}),
(t.trigger = function (e) {
var t = this.listeners[e];
if (t)
if (2 === arguments.length) for (var i = t.length, n = 0; n < i; ++n) t[n].call(this, arguments[1]);
else for (var r = Array.prototype.slice.call(arguments, 1), a = t.length, s = 0; s < a; ++s) t[s].apply(this, r);
}),
(t.dispose = function () {
this.listeners = {};
}),
(t.pipe = function (t) {
this.on('data', function (e) {
t.push(e);
});
}),
e
);
})(),
ar = function (e) {
return window.atob ? window.atob(e) : Buffer.from(e, 'base64').toString('binary');
};
function sr(e) {
for (var t = ar(e), i = new Uint8Array(t.length), n = 0; n < t.length; n++) i[n] = t.charCodeAt(n);
return i;
}
/*! @name m3u8-parser @version 4.7.0 @license Apache-2.0 */ function or(e) {
var t = /([0-9.]*)?@?([0-9.]*)?/.exec(e || ''),
e = {};
return t[1] && (e.length = parseInt(t[1], 10)), t[2] && (e.offset = parseInt(t[2], 10)), e;
}
function ur(e) {
for (var t, i = e.split(new RegExp('(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))')), n = {}, r = i.length; r--; ) '' !== i[r] && (((t = /([^=]*)=(.*)/.exec(i[r]).slice(1))[0] = t[0].replace(/^\s+|\s+$/g, '')), (t[1] = t[1].replace(/^\s+|\s+$/g, '')), (t[1] = t[1].replace(/^['"](.*)['"]$/g, '$1')), (n[t[0]] = t[1]));
return n;
}
function lr(t) {
var i = {};
return (
Object.keys(t).forEach(function (e) {
i[
e.toLowerCase().replace(/-(\w)/g, function (e) {
return e[1].toUpperCase();
})
] = t[e];
}),
i
);
}
function cr(e) {
var t,
i,
n,
r,
a = e.serverControl,
s = e.targetDuration,
o = e.partTargetDuration;
a && ((t = '#EXT-X-SERVER-CONTROL'), (i = 'holdBack'), (n = 'partHoldBack'), (r = s && 3 * s), (e = o && 2 * o), s && !a.hasOwnProperty(i) && ((a[i] = r), this.trigger('info', { message: t + ' defaulting HOLD-BACK to targetDuration * 3 (' + r + ').' })), r && a[i] < r && (this.trigger('warn', { message: t + ' clamping HOLD-BACK (' + a[i] + ') to targetDuration * 3 (' + r + ')' }), (a[i] = r)), o && !a.hasOwnProperty(n) && ((a[n] = 3 * o), this.trigger('info', { message: t + ' defaulting PART-HOLD-BACK to partTargetDuration * 3 (' + a[n] + ').' })), o && a[n] < e && (this.trigger('warn', { message: t + ' clamping PART-HOLD-BACK (' + a[n] + ') to partTargetDuration * 2 (' + e + ').' }), (a[n] = e)));
}
function dr(e) {
return (
e &&
e.replace(/avc1\.(\d+)\.(\d+)/i, function (e, t, i) {
return 'avc1.' + ('00' + Number(t).toString(16)).slice(-2) + '00' + ('00' + Number(i).toString(16)).slice(-2);
})
);
}
function hr(e) {
var e = (e = void 0 === e ? '' : e).split(','),
a = [];
return (
e.forEach(function (n) {
var r;
(n = n.trim()),
Er.forEach(function (e) {
var t,
i = Sr[e].exec(n.toLowerCase());
!i || i.length <= 1 || ((r = e), (t = n.substring(0, i[1].length)), (i = n.replace(t, '')), a.push({ type: t, details: i, mediaType: e }));
}),
r || a.push({ type: n, details: '', mediaType: 'unknown' });
}),
a
);
}
function pr(e) {
return Sr.audio.test((e = void 0 === e ? '' : e).trim().toLowerCase());
}
function fr(e) {
if (e && 'string' == typeof e) {
var t = e
.toLowerCase()
.split(',')
.map(function (e) {
return dr(e.trim());
}),
i = 'video';
1 === t.length && pr(t[0]) ? (i = 'audio') : 1 === t.length && ((n = t[0]), Sr.text.test((n = void 0 === n ? '' : n).trim().toLowerCase())) && (i = 'application');
var n = 'mp4';
return (
t.every(function (e) {
return Sr.mp4.test(e);
})
? (n = 'mp4')
: t.every(function (e) {
return Sr.webm.test(e);
})
? (n = 'webm')
: t.every(function (e) {
return Sr.ogg.test(e);
}) && (n = 'ogg'),
i + '/' + n + ';codecs="' + e + '"'
);
}
}
function mr(e) {
return void 0 === e && (e = ''), (window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(fr(e))) || !1;
}
function gr(e) {
return (e = void 0 === e ? '' : e)
.toLowerCase()
.split(',')
.every(function (e) {
e = e.trim();
for (var t = 0; t < kr.length; t++) if (Sr['muxer' + kr[t]].test(e)) return !0;
return !1;
});
}
function yr(e) {
return Ir.test(e) ? 'hls' : xr.test(e) ? 'dash' : 'application/vnd.videojs.vhs+json' === e ? 'vhs-json' : null;
}
function vr(e, t) {
if (/^[a-z]+:/i.test(t)) return t;
/^data:/.test(e) && (e = (window.location && window.location.href) || '');
var i = 'function' == typeof window.URL,
n = /^\/\//.test(e),
r = !window.location && !/\/\//i.test(e);
if ((i ? (e = new window.URL(e, window.location || Ar)) : /\/\//i.test(e) || (e = ir.buildAbsoluteURL((window.location && window.location.href) || '', e)), i)) {
i = new URL(t, e);
return r ? i.href.slice(Ar.length) : n ? i.href.slice(i.protocol.length) : i.href;
}
return ir.buildAbsoluteURL(e, t);
}
var _r = (function (t) {
function e() {
var e = t.call(this) || this;
return (e.buffer = ''), e;
}
return (
ft(e, t),
(e.prototype.push = function (e) {
var t;
for (this.buffer += e, t = this.buffer.indexOf('\n'); -1 < t; t = this.buffer.indexOf('\n')) this.trigger('data', this.buffer.substring(0, t)), (this.buffer = this.buffer.substring(t + 1));
}),
e
);
})(rr),
br = String.fromCharCode(9),
Tr = (function (t) {
function e() {
var e = t.call(this) || this;
return (e.customParsers = []), (e.tagMappers = []), e;
}
ft(e, t);
var i = e.prototype;
return (
(i.push = function (i) {
var r,
a,
s = this;
0 !== (i = i.trim()).length &&
('#' === i[0]
? this.tagMappers
.reduce(
function (e, t) {
t = t(i);
return t === i ? e : e.concat([t]);
},
[i]
)
.forEach(function (e) {
for (var t, i, n = 0; n < s.customParsers.length; n++) if (s.customParsers[n].call(s, e)) return;
if (0 === e.indexOf('#EXT'))
if (((e = e.replace('\r', '')), (r = /^#EXTM3U/.exec(e)))) s.trigger('data', { type: 'tag', tagType: 'm3u' });
else {
if ((r = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(e))) return (a = { type: 'tag', tagType: 'inf' }), r[1] && (a.duration = parseFloat(r[1])), r[2] && (a.title = r[2]), void s.trigger('data', a);
if ((r = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(e))) return (a = { type: 'tag', tagType: 'targetduration' }), r[1] && (a.duration = parseInt(r[1], 10)), void s.trigger('data', a);
if ((r = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(e))) return (a = { type: 'tag', tagType: 'version' }), r[1] && (a.version = parseInt(r[1], 10)), void s.trigger('data', a);
if ((r = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(e))) return (a = { type: 'tag', tagType: 'media-sequence' }), r[1] && (a.number = parseInt(r[1], 10)), void s.trigger('data', a);
if ((r = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(e))) return (a = { type: 'tag', tagType: 'discontinuity-sequence' }), r[1] && (a.number = parseInt(r[1], 10)), void s.trigger('data', a);
if ((r = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(e))) return (a = { type: 'tag', tagType: 'playlist-type' }), r[1] && (a.playlistType = r[1]), void s.trigger('data', a);
if ((r = /^#EXT-X-BYTERANGE:?(.*)?$/.exec(e))) return (a = g(or(r[1]), { type: 'tag', tagType: 'byterange' })), void s.trigger('data', a);
if ((r = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(e))) return (a = { type: 'tag', tagType: 'allow-cache' }), r[1] && (a.allowed = !/NO/.test(r[1])), void s.trigger('data', a);
if ((r = /^#EXT-X-MAP:?(.*)$/.exec(e))) return (a = { type: 'tag', tagType: 'map' }), r[1] && ((t = ur(r[1])).URI && (a.uri = t.URI), t.BYTERANGE && (a.byterange = or(t.BYTERANGE))), void s.trigger('data', a);
if ((r = /^#EXT-X-STREAM-INF:?(.*)$/.exec(e))) return (a = { type: 'tag', tagType: 'stream-inf' }), r[1] && ((a.attributes = ur(r[1])), a.attributes.RESOLUTION && ((i = {}), (t = a.attributes.RESOLUTION.split('x'))[0] && (i.width = parseInt(t[0], 10)), t[1] && (i.height = parseInt(t[1], 10)), (a.attributes.RESOLUTION = i)), a.attributes.BANDWIDTH && (a.attributes.BANDWIDTH = parseInt(a.attributes.BANDWIDTH, 10)), a.attributes['PROGRAM-ID'] && (a.attributes['PROGRAM-ID'] = parseInt(a.attributes['PROGRAM-ID'], 10))), void s.trigger('data', a);
if ((r = /^#EXT-X-MEDIA:?(.*)$/.exec(e))) return (a = { type: 'tag', tagType: 'media' }), r[1] && (a.attributes = ur(r[1])), void s.trigger('data', a);
if ((r = /^#EXT-X-ENDLIST/.exec(e))) s.trigger('data', { type: 'tag', tagType: 'endlist' });
else {
if (!(r = /^#EXT-X-DISCONTINUITY/.exec(e)))
return (r = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(e))
? ((a = { type: 'tag', tagType: 'program-date-time' }), r[1] && ((a.dateTimeString = r[1]), (a.dateTimeObject = new Date(r[1]))), void s.trigger('data', a))
: (r = /^#EXT-X-KEY:?(.*)$/.exec(e))
? ((a = { type: 'tag', tagType: 'key' }), r[1] && ((a.attributes = ur(r[1])), a.attributes.IV && ('0x' === a.attributes.IV.substring(0, 2).toLowerCase() && (a.attributes.IV = a.attributes.IV.substring(2)), (a.attributes.IV = a.attributes.IV.match(/.{8}/g)), (a.attributes.IV[0] = parseInt(a.attributes.IV[0], 16)), (a.attributes.IV[1] = parseInt(a.attributes.IV[1], 16)), (a.attributes.IV[2] = parseInt(a.attributes.IV[2], 16)), (a.attributes.IV[3] = parseInt(a.attributes.IV[3], 16)), (a.attributes.IV = new Uint32Array(a.attributes.IV)))), void s.trigger('data', a))
: (r = /^#EXT-X-START:?(.*)$/.exec(e))
? ((a = { type: 'tag', tagType: 'start' }), r[1] && ((a.attributes = ur(r[1])), (a.attributes['TIME-OFFSET'] = parseFloat(a.attributes['TIME-OFFSET'])), (a.attributes.PRECISE = /YES/.test(a.attributes.PRECISE))), void s.trigger('data', a))
: (r = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(e))
? ((a = { type: 'tag', tagType: 'cue-out-cont' }), r[1] ? (a.data = r[1]) : (a.data = ''), void s.trigger('data', a))
: (r = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(e))
? ((a = { type: 'tag', tagType: 'cue-out' }), r[1] ? (a.data = r[1]) : (a.data = ''), void s.trigger('data', a))
: (r = /^#EXT-X-CUE-IN:?(.*)?$/.exec(e))
? ((a = { type: 'tag', tagType: 'cue-in' }), r[1] ? (a.data = r[1]) : (a.data = ''), void s.trigger('data', a))
: (r = /^#EXT-X-SKIP:(.*)$/.exec(e)) && r[1]
? (((a = { type: 'tag', tagType: 'skip' }).attributes = ur(r[1])), a.attributes.hasOwnProperty('SKIPPED-SEGMENTS') && (a.attributes['SKIPPED-SEGMENTS'] = parseInt(a.attributes['SKIPPED-SEGMENTS'], 10)), a.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES') && (a.attributes['RECENTLY-REMOVED-DATERANGES'] = a.attributes['RECENTLY-REMOVED-DATERANGES'].split(br)), void s.trigger('data', a))
: (r = /^#EXT-X-PART:(.*)$/.exec(e)) && r[1]
? (((a = { type: 'tag', tagType: 'part' }).attributes = ur(r[1])),
['DURATION'].forEach(function (e) {
a.attributes.hasOwnProperty(e) && (a.attributes[e] = parseFloat(a.attributes[e]));
}),
['INDEPENDENT', 'GAP'].forEach(function (e) {
a.attributes.hasOwnProperty(e) && (a.attributes[e] = /YES/.test(a.attributes[e]));
}),
a.attributes.hasOwnProperty('BYTERANGE') && (a.attributes.byterange = or(a.attributes.BYTERANGE)),
void s.trigger('data', a))
: (r = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(e)) && r[1]
? (((a = { type: 'tag', tagType: 'server-control' }).attributes = ur(r[1])),
['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (e) {
a.attributes.hasOwnProperty(e) && (a.attributes[e] = parseFloat(a.attributes[e]));
}),
['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (e) {
a.attributes.hasOwnProperty(e) && (a.attributes[e] = /YES/.test(a.attributes[e]));
}),
void s.trigger('data', a))
: (r = /^#EXT-X-PART-INF:(.*)$/.exec(e)) && r[1]
? (((a = { type: 'tag', tagType: 'part-inf' }).attributes = ur(r[1])),
['PART-TARGET'].forEach(function (e) {
a.attributes.hasOwnProperty(e) && (a.attributes[e] = parseFloat(a.attributes[e]));
}),
void s.trigger('data', a))
: (r = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(e)) && r[1]
? (((a = { type: 'tag', tagType: 'preload-hint' }).attributes = ur(r[1])),
['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (e) {
var t;
a.attributes.hasOwnProperty(e) && ((a.attributes[e] = parseInt(a.attributes[e], 10)), (t = 'BYTERANGE-LENGTH' === e ? 'length' : 'offset'), (a.attributes.byterange = a.attributes.byterange || {}), (a.attributes.byterange[t] = a.attributes[e]), delete a.attributes[e]);
}),
void s.trigger('data', a))
: (r = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(e)) && r[1]
? (((a = { type: 'tag', tagType: 'rendition-report' }).attributes = ur(r[1])),
['LAST-MSN', 'LAST-PART'].forEach(function (e) {
a.attributes.hasOwnProperty(e) && (a.attributes[e] = parseInt(a.attributes[e], 10));
}),
void s.trigger('data', a))
: void s.trigger('data', { type: 'tag', data: e.slice(4) });
s.trigger('data', { type: 'tag', tagType: 'discontinuity' });
}
}
else s.trigger('data', { type: 'comment', text: e.slice(1) });
})
: this.trigger('data', { type: 'uri', uri: i }));
}),
(i.addParser = function (e) {
var t = this,
i = e.expression,
n = e.customType,
r = e.dataParser,
a = e.segment;
'function' != typeof r &&
(r = function (e) {
return e;
}),
this.customParsers.push(function (e) {
if (i.exec(e)) return t.trigger('data', { type: 'custom', data: r(e), customType: n, segment: a }), !0;
});
}),
(i.addTagMapper = function (e) {
var t = e.expression,
i = e.map;
this.tagMappers.push(function (e) {
return t.test(e) ? i(e) : e;
});
}),
e
);
})(rr),
wr = (function (t) {
function e() {
var e = t.call(this) || this;
(e.lineStream = new _r()), (e.parseStream = new Tr()), e.lineStream.pipe(e.parseStream);
var n,
r,
a = pt(e),
o = [],
u = {},
l = !1,
c = { AUDIO: {}, VIDEO: {}, 'CLOSED-CAPTIONS': {}, SUBTITLES: {} },
d = 0;
e.manifest = { allowCache: !0, discontinuityStarts: [], segments: [] };
var h = 0,
p = 0;
return (
e.on('end', function () {
u.uri || (!u.parts && !u.preloadHints) || (!u.map && n && (u.map = n), !u.key && r && (u.key = r), u.timeline || 'number' != typeof d || (u.timeline = d), (e.manifest.preloadSegment = u));
}),
e.parseStream.on('data', function (s) {
var t, i;
({
tag: function () {
((
{
version: function () {
s.version && (this.manifest.version = s.version);
},
'allow-cache': function () {
(this.manifest.allowCache = s.allowed), 'allowed' in s || (this.trigger('info', { message: 'defaulting allowCache to YES' }), (this.manifest.allowCache = !0));
},
byterange: function () {
var e = {};
'length' in s && (((u.byterange = e).length = s.length), 'offset' in s || (s.offset = h)), 'offset' in s && ((u.byterange = e).offset = s.offset), (h = e.offset + e.length);
},
endlist: function () {
this.manifest.endList = !0;
},
inf: function () {
'mediaSequence' in this.manifest || ((this.manifest.mediaSequence = 0), this.trigger('info', { message: 'defaulting media sequence to zero' })), 'discontinuitySequence' in this.manifest || ((this.manifest.discontinuitySequence = 0), this.trigger('info', { message: 'defaulting discontinuity sequence to zero' })), 0 < s.duration && (u.duration = s.duration), 0 === s.duration && ((u.duration = 0.01), this.trigger('info', { message: 'updating zero segment duration to a small value' })), (this.manifest.segments = o);
},
key: function () {
if (s.attributes)
if ('NONE' !== s.attributes.METHOD)
if (s.attributes.URI) {
if ('com.apple.streamingkeydelivery' === s.attributes.KEYFORMAT) return (this.manifest.contentProtection = this.manifest.contentProtection || {}), void (this.manifest.contentProtection['com.apple.fps.1_0'] = { attributes: s.attributes });
if ('urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed' === s.attributes.KEYFORMAT) return -1 === ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'].indexOf(s.attributes.METHOD) ? void this.trigger('warn', { message: 'invalid key method provided for Widevine' }) : ('SAMPLE-AES-CENC' === s.attributes.METHOD && this.trigger('warn', { message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead' }), 'data:text/plain;base64,' !== s.attributes.URI.substring(0, 23) ? void this.trigger('warn', { message: 'invalid key URI provided for Widevine' }) : s.attributes.KEYID && '0x' === s.attributes.KEYID.substring(0, 2) ? ((this.manifest.contentProtection = this.manifest.contentProtection || {}), void (this.manifest.contentProtection['com.widevine.alpha'] = { attributes: { schemeIdUri: s.attributes.KEYFORMAT, keyId: s.attributes.KEYID.substring(2) }, pssh: sr(s.attributes.URI.split(',')[1]) })) : void this.trigger('warn', { message: 'invalid key ID provided for Widevine' }));
s.attributes.METHOD || this.trigger('warn', { message: 'defaulting key method to AES-128' }), (r = { method: s.attributes.METHOD || 'AES-128', uri: s.attributes.URI }), 'undefined' != typeof s.attributes.IV && (r.iv = s.attributes.IV);
} else this.trigger('warn', { message: 'ignoring key declaration without URI' });
else r = null;
else this.trigger('warn', { message: 'ignoring key declaration without attribute list' });
},
'media-sequence': function () {
isFinite(s.number) ? (this.manifest.mediaSequence = s.number) : this.trigger('warn', { message: 'ignoring invalid media sequence: ' + s.number });
},
'discontinuity-sequence': function () {
isFinite(s.number) ? ((this.manifest.discontinuitySequence = s.number), (d = s.number)) : this.trigger('warn', { message: 'ignoring invalid discontinuity sequence: ' + s.number });
},
'playlist-type': function () {
/VOD|EVENT/.test(s.playlistType) ? (this.manifest.playlistType = s.playlistType) : this.trigger('warn', { message: 'ignoring unknown playlist type: ' + s.playlist });
},
map: function () {
(n = {}), s.uri && (n.uri = s.uri), s.byterange && (n.byterange = s.byterange), r && (n.key = r);
},
'stream-inf': function () {
(this.manifest.playlists = o), (this.manifest.mediaGroups = this.manifest.mediaGroups || c), s.attributes ? (u.attributes || (u.attributes = {}), g(u.attributes, s.attributes)) : this.trigger('warn', { message: 'ignoring empty stream-inf attributes' });
},
media: function () {
var e;
(this.manifest.mediaGroups = this.manifest.mediaGroups || c), s.attributes && s.attributes.TYPE && s.attributes['GROUP-ID'] && s.attributes.NAME ? (((e = this.manifest.mediaGroups[s.attributes.TYPE])[s.attributes['GROUP-ID']] = e[s.attributes['GROUP-ID']] || {}), (t = e[s.attributes['GROUP-ID']]), (i = { default: /yes/i.test(s.attributes.DEFAULT) }).default ? (i.autoselect = !0) : (i.autoselect = /yes/i.test(s.attributes.AUTOSELECT)), s.attributes.LANGUAGE && (i.language = s.attributes.LANGUAGE), s.attributes.URI && (i.uri = s.attributes.URI), s.attributes['INSTREAM-ID'] && (i.instreamId = s.attributes['INSTREAM-ID']), s.attributes.CHARACTERISTICS && (i.characteristics = s.attributes.CHARACTERISTICS), s.attributes.FORCED && (i.forced = /yes/i.test(s.attributes.FORCED)), (t[s.attributes.NAME] = i)) : this.trigger('warn', { message: 'ignoring incomplete or missing media group' });
},
discontinuity: function () {
(d += 1), (u.discontinuity = !0), this.manifest.discontinuityStarts.push(o.length);
},
'program-date-time': function () {
'undefined' == typeof this.manifest.dateTimeString && ((this.manifest.dateTimeString = s.dateTimeString), (this.manifest.dateTimeObject = s.dateTimeObject)), (u.dateTimeString = s.dateTimeString), (u.dateTimeObject = s.dateTimeObject);
},
targetduration: function () {
!isFinite(s.duration) || s.duration < 0 ? this.trigger('warn', { message: 'ignoring invalid target duration: ' + s.duration }) : ((this.manifest.targetDuration = s.duration), cr.call(this, this.manifest));
},
start: function () {
s.attributes && !isNaN(s.attributes['TIME-OFFSET']) ? (this.manifest.start = { timeOffset: s.attributes['TIME-OFFSET'], precise: s.attributes.PRECISE }) : this.trigger('warn', { message: 'ignoring start declaration without appropriate attribute list' });
},
'cue-out': function () {
u.cueOut = s.data;
},
'cue-out-cont': function () {
u.cueOutCont = s.data;
},
'cue-in': function () {
u.cueIn = s.data;
},
skip: function () {
(this.manifest.skip = lr(s.attributes)), this.warnOnMissingAttributes_('#EXT-X-SKIP', s.attributes, ['SKIPPED-SEGMENTS']);
},
part: function () {
var i = this;
l = !0;
var e = this.manifest.segments.length,
t = lr(s.attributes);
(u.parts = u.parts || []), u.parts.push(t), t.byterange && (t.byterange.hasOwnProperty('offset') || (t.byterange.offset = p), (p = t.byterange.offset + t.byterange.length));
var n = u.parts.length - 1;
this.warnOnMissingAttributes_('#EXT-X-PART #' + n + ' for segment #' + e, s.attributes, ['URI', 'DURATION']),
this.manifest.renditionReports &&
this.manifest.renditionReports.forEach(function (e, t) {
e.hasOwnProperty('lastPart') || i.trigger('warn', { message: '#EXT-X-RENDITION-REPORT #' + t + ' lacks required attribute(s): LAST-PART' });
});
},
'server-control': function () {
var e = (this.manifest.serverControl = lr(s.attributes));
e.hasOwnProperty('canBlockReload') || ((e.canBlockReload = !1), this.trigger('info', { message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false' })), cr.call(this, this.manifest), e.canSkipDateranges && !e.hasOwnProperty('canSkipUntil') && this.trigger('warn', { message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set' });
},
'preload-hint': function () {
var e = this.manifest.segments.length,
t = lr(s.attributes),
i = t.type && 'PART' === t.type;
(u.preloadHints = u.preloadHints || []), u.preloadHints.push(t), t.byterange && (t.byterange.hasOwnProperty('offset') || ((t.byterange.offset = i ? p : 0), i && (p = t.byterange.offset + t.byterange.length)));
var n = u.preloadHints.length - 1;
if ((this.warnOnMissingAttributes_('#EXT-X-PRELOAD-HINT #' + n + ' for segment #' + e, s.attributes, ['TYPE', 'URI']), t.type))
for (var r = 0; r < u.preloadHints.length - 1; r++) {
var a = u.preloadHints[r];
a.type && a.type === t.type && this.trigger('warn', { message: '#EXT-X-PRELOAD-HINT #' + n + ' for segment #' + e + ' has the same TYPE ' + t.type + ' as preload hint #' + r });
}
},
'rendition-report': function () {
var e = lr(s.attributes);
(this.manifest.renditionReports = this.manifest.renditionReports || []), this.manifest.renditionReports.push(e);
var t = this.manifest.renditionReports.length - 1,
e = ['LAST-MSN', 'URI'];
l && e.push('LAST-PART'), this.warnOnMissingAttributes_('#EXT-X-RENDITION-REPORT #' + t, s.attributes, e);
},
'part-inf': function () {
(this.manifest.partInf = lr(s.attributes)), this.warnOnMissingAttributes_('#EXT-X-PART-INF', s.attributes, ['PART-TARGET']), this.manifest.partInf.partTarget && (this.manifest.partTargetDuration = this.manifest.partInf.partTarget), cr.call(this, this.manifest);
},
}[s.tagType] || function () {}
).call(a));
},
uri: function () {
(u.uri = s.uri), o.push(u), !this.manifest.targetDuration || 'duration' in u || (this.trigger('warn', { message: 'defaulting segment duration to the target duration' }), (u.duration = this.manifest.targetDuration)), r && (u.key = r), (u.timeline = d), n && (u.map = n), (p = 0), (u = {});
},
comment: function () {},
custom: function () {
s.segment ? ((u.custom = u.custom || {}), (u.custom[s.customType] = s.data)) : ((this.manifest.custom = this.manifest.custom || {}), (this.manifest.custom[s.customType] = s.data));
},
}[s.type].call(a));
}),
e
);
}
ft(e, t);
var i = e.prototype;
return (
(i.warnOnMissingAttributes_ = function (e, t, i) {
var n = [];
i.forEach(function (e) {
t.hasOwnProperty(e) || n.push(e);
}),
n.length && this.trigger('warn', { message: e + ' lacks required attribute(s): ' + n.join(', ') });
}),
(i.push = function (e) {
this.lineStream.push(e);
}),
(i.end = function () {
this.lineStream.push('\n'), this.trigger('end');
}),
(i.addParser = function (e) {
this.parseStream.addParser(e);
}),
(i.addTagMapper = function (e) {
this.parseStream.addTagMapper(e);
}),
e
);
})(rr),
Sr = { mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/, webm: /^(vp0?[89]|av0?1|opus|vorbis)/, ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/, video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/, audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/, text: /^(stpp.ttml.im1t)/, muxerVideo: /^(avc0?1)/, muxerAudio: /^(mp4a)/, muxerText: /a^/ },
Er = ['video', 'audio', 'text'],
kr = ['Video', 'Audio', 'Text'],
Cr = 'mp4a.40.2',
Ir = /^(audio|video|application)\/(x-|vnd\.apple\.)?mpegurl/i,
xr = /^application\/dash\+xml/i,
Ar = 'http://example.com';
function Pr(e, t) {
return (t = void 0 === t ? Object : t) && 'function' == typeof t.freeze ? t.freeze(e) : e;
}
var Lr = Pr({
HTML: 'text/html',
isHTML: function (e) {
return e === Lr.HTML;
},
XML_APPLICATION: 'application/xml',
XML_TEXT: 'text/xml',
XML_XHTML_APPLICATION: 'application/xhtml+xml',
XML_SVG_IMAGE: 'image/svg+xml',
}),
Dr = Pr({
HTML: 'http://www.w3.org/1999/xhtml',
isHTML: function (e) {
return e === Dr.HTML;
},
SVG: 'http://www.w3.org/2000/svg',
XML: 'http://www.w3.org/XML/1998/namespace',
XMLNS: 'http://www.w3.org/2000/xmlns/',
}),
Or = { freeze: Pr, MIME_TYPE: Lr, NAMESPACE: Dr },
Rr = Or.NAMESPACE;
function Mr(e) {
return '' !== e;
}
function Nr(e, t) {
return e.hasOwnProperty(t) || (e[t] = !0), e;
}
function Ur(e) {
if (!e) return [];
e = (e = e) ? e.split(/[\t\n\f\r ]+/).filter(Mr) : [];
return Object.keys(e.reduce(Nr, {}));
}
function Br(e, t) {
for (var i in e) t[i] = e[i];
}
function Fr(e, t) {
var i,
n = e.prototype;
n instanceof t || (((i = function () {}).prototype = t.prototype), Br(n, (i = new i())), (e.prototype = n = i)), n.constructor != e && (n.constructor = e);
}
var W = {},
jr = (W.ELEMENT_NODE = 1),
Hr = (W.ATTRIBUTE_NODE = 2),
qr = (W.TEXT_NODE = 3),
Vr = (W.CDATA_SECTION_NODE = 4),
Wr = (W.ENTITY_REFERENCE_NODE = 5),
zr = ((W.ENTITY_NODE = 6), (W.PROCESSING_INSTRUCTION_NODE = 7)),
Gr = (W.COMMENT_NODE = 8),
Xr = (W.DOCUMENT_NODE = 9),
Kr = (W.DOCUMENT_TYPE_NODE = 10),
Yr = (W.DOCUMENT_FRAGMENT_NODE = 11),
x = ((W.NOTATION_NODE = 12), {}),
Qr = {};
(x.INDEX_SIZE_ERR = ((Qr[1] = 'Index size error'), 1)), (x.DOMSTRING_SIZE_ERR = ((Qr[2] = 'DOMString size error'), 2));
x.HIERARCHY_REQUEST_ERR = ((Qr[3] = 'Hierarchy request error'), 3);
(x.WRONG_DOCUMENT_ERR = ((Qr[4] = 'Wrong document'), 4)), (x.INVALID_CHARACTER_ERR = ((Qr[5] = 'Invalid character'), 5)), (x.NO_DATA_ALLOWED_ERR = ((Qr[6] = 'No data allowed'), 6)), (x.NO_MODIFICATION_ALLOWED_ERR = ((Qr[7] = 'No modification allowed'), 7));
x.NOT_FOUND_ERR = ((Qr[8] = 'Not found'), 8);
x.NOT_SUPPORTED_ERR = ((Qr[9] = 'Not supported'), 9);
var $r;
x.INUSE_ATTRIBUTE_ERR = ((Qr[10] = 'Attribute in use'), 10);
function Jr(e, t) {
var i;
return t instanceof Error ? (i = t) : ((i = this), Error.call(this, Qr[e]), (this.message = Qr[e]), Error.captureStackTrace && Error.captureStackTrace(this, Jr)), (i.code = e), t && (this.message = this.message + ': ' + t), i;
}
function Zr() {}
function ea(e, t) {
(this._node = e), (this._refresh = t), ta(this);
}
function ta(e) {
var t,
i = e._node._inc || e._node.ownerDocument._inc;
e._inc != i && ((t = e._refresh(e._node)), Da(e, 'length', t.length), Br(t, e), (e._inc = i));
}
function ia() {}
function na(e, t) {
for (var i = e.length; i--; ) if (e[i] === t) return i;
}
function ra(e, t, i, n) {
n ? (t[na(t, n)] = i) : (t[t.length++] = i), !e || ((t = (i.ownerElement = e).ownerDocument) && (n && da(t, e, n), (e = e), (i = i), (t = t) && t._inc++, i.namespaceURI === Rr.XMLNS && (e._nsMap[i.prefix ? i.localName : ''] = i.value)));
}
function aa(e, t, i) {
var n = na(t, i);
if (!(0 <= n)) throw Jr(8, new Error(e.tagName + '@' + i));
for (var r, a = t.length - 1; n < a; ) t[n] = t[++n];
(t.length = a), !e || ((r = e.ownerDocument) && (da(r, e, i), (i.ownerElement = null)));
}
function sa() {}
function oa() {}
function ua(e) {
return ('<' == e ? '<' : '>' == e && '>') || ('&' == e && '&') || ('"' == e && '"') || '' + e.charCodeAt() + ';';
}
function la(e, t) {
if (t(e)) return 1;
if ((e = e.firstChild))
do {
if (la(e, t)) return 1;
} while ((e = e.nextSibling));
}
function ca() {}
function da(e, t, i) {
e && e._inc++, i.namespaceURI === Rr.XMLNS && delete t._nsMap[i.prefix ? i.localName : ''];
}
function ha(e, t, i) {
if (e && e._inc) {
e._inc++;
var n = t.childNodes;
if (i) n[n.length++] = i;
else {
for (var r = t.firstChild, a = 0; r; ) r = (n[a++] = r).nextSibling;
n.length = a;
}
}
}
function pa(e, t) {
var i = t.previousSibling,
n = t.nextSibling;
return i ? (i.nextSibling = n) : (e.firstChild = n), n ? (n.previousSibling = i) : (e.lastChild = i), ha(e.ownerDocument, e), t;
}
function fa(e, t, i) {
var n = t.parentNode;
if ((n && n.removeChild(t), t.nodeType === Yr)) {
var r = t.firstChild;
if (null == r) return t;
var a = t.lastChild;
} else r = a = t;
n = i ? i.previousSibling : e.lastChild;
for (r.previousSibling = n, a.nextSibling = i, n ? (n.nextSibling = r) : (e.firstChild = r), null == i ? (e.lastChild = a) : (i.previousSibling = a); (r.parentNode = e), r !== a && (r = r.nextSibling); );
return ha(e.ownerDocument || e, e), t.nodeType == Yr && (t.firstChild = t.lastChild = null), t;
}
function ma() {
this._nsMap = {};
}
function ga() {}
function ya() {}
function va() {}
function _a() {}
function ba() {}
function Ta() {}
function wa() {}
function Sa() {}
function Ea() {}
function ka() {}
function Ca() {}
function Ia() {}
function xa(e, t) {
var i,
n = [],
r = (9 == this.nodeType && this.documentElement) || this,
a = r.prefix,
s = r.namespaceURI;
return La(this, n, e, t, (i = s && null == a && null == (a = r.lookupPrefix(s)) ? [{ namespace: s, prefix: null }] : i)), n.join('');
}
function Aa(e, t, i) {
var n = e.prefix || '',
r = e.namespaceURI;
if (r && ('xml' !== n || r !== Rr.XML) && r !== Rr.XMLNS) {
for (var a = i.length; a--; ) {
var s = i[a];
if (s.prefix === n) return s.namespace !== r;
}
return 1;
}
}
function Pa(e, t, i) {
e.push(' ', t, '="', i.replace(/[<&"]/g, ua), '"');
}
function La(e, t, i, n, r) {
if (((r = r || []), n)) {
if (!(e = n(e))) return;
if ('string' == typeof e) return void t.push(e);
}
switch (e.nodeType) {
case jr:
var a = e.attributes,
s = a.length,
o = e.firstChild,
u = e.tagName,
l = u;
if (!(i = Rr.isHTML(e.namespaceURI) || i) && !e.prefix && e.namespaceURI) {
for (var c, d = 0; d < a.length; d++)
if ('xmlns' === a.item(d).name) {
c = a.item(d).value;
break;
}
if (!c)
for (var h = r.length - 1; 0 <= h; h--)
if ('' === (p = r[h]).prefix && p.namespace === e.namespaceURI) {
c = p.namespace;
break;
}
if (c !== e.namespaceURI)
for (var p, h = r.length - 1; 0 <= h; h--)
if ((p = r[h]).namespace === e.namespaceURI) {
p.prefix && (l = p.prefix + ':' + u);
break;
}
}
t.push('<', l);
for (var f = 0; f < s; f++) 'xmlns' == (m = a.item(f)).prefix ? r.push({ prefix: m.localName, namespace: m.value }) : 'xmlns' == m.nodeName && r.push({ prefix: '', namespace: m.value });
for (var m, g, y, f = 0; f < s; f++) Aa((m = a.item(f)), 0, r) && (Pa(t, (g = m.prefix || '') ? 'xmlns:' + g : 'xmlns', (y = m.namespaceURI)), r.push({ prefix: g, namespace: y })), La(m, t, i, n, r);
if ((u === l && Aa(e, 0, r) && (Pa(t, (g = e.prefix || '') ? 'xmlns:' + g : 'xmlns', (y = e.namespaceURI)), r.push({ prefix: g, namespace: y })), o || (i && !/^(?:meta|link|img|br|hr|input)$/i.test(u)))) {
if ((t.push('>'), i && /^script$/i.test(u))) for (; o; ) o.data ? t.push(o.data) : La(o, t, i, n, r.slice()), (o = o.nextSibling);
else for (; o; ) La(o, t, i, n, r.slice()), (o = o.nextSibling);
t.push('', l, '>');
} else t.push('/>');
return;
case Xr:
case Yr:
for (o = e.firstChild; o; ) La(o, t, i, n, r.slice()), (o = o.nextSibling);
return;
case Hr:
return Pa(t, e.name, e.value), 0;
case qr:
return t.push(e.data.replace(/[<&]/g, ua).replace(/]]>/g, ']]>'));
case Vr:
return t.push('');
case Gr:
return t.push('\x3c!--', e.data, '--\x3e');
case Kr:
var v = e.publicId,
_ = e.systemId;
return t.push('')) : _ && '.' != _ ? t.push(' SYSTEM ', _, '>') : ((_ = e.internalSubset) && t.push(' [', _, ']'), t.push('>')));
case zr:
return t.push('', e.target, ' ', e.data, '?>');
case Wr:
return t.push('&', e.nodeName, ';');
default:
t.push('??', e.nodeName);
}
}
function Da(e, t, i) {
e[t] = i;
}
(x.INVALID_STATE_ERR = ((Qr[11] = 'Invalid state'), 11)),
(x.SYNTAX_ERR = ((Qr[12] = 'Syntax error'), 12)),
(x.INVALID_MODIFICATION_ERR = ((Qr[13] = 'Invalid modification'), 13)),
(x.NAMESPACE_ERR = ((Qr[14] = 'Invalid namespace'), 14)),
(x.INVALID_ACCESS_ERR = ((Qr[15] = 'Invalid access'), 15)),
(Jr.prototype = Error.prototype),
Br(x, Jr),
(Zr.prototype = {
length: 0,
item: function (e) {
return this[e] || null;
},
toString: function (e, t) {
for (var i = [], n = 0; n < this.length; n++) La(this[n], i, e, t);
return i.join('');
},
}),
(ea.prototype.item = function (e) {
return ta(this), this[e];
}),
Fr(ea, Zr),
(ia.prototype = {
length: 0,
item: Zr.prototype.item,
getNamedItem: function (e) {
for (var t = this.length; t--; ) {
var i = this[t];
if (i.nodeName == e) return i;
}
},
setNamedItem: function (e) {
var t = e.ownerElement;
if (t && t != this._ownerElement) throw new Jr(10);
t = this.getNamedItem(e.nodeName);
return ra(this._ownerElement, this, e, t), t;
},
setNamedItemNS: function (e) {
var t = e.ownerElement;
if (t && t != this._ownerElement) throw new Jr(10);
return (t = this.getNamedItemNS(e.namespaceURI, e.localName)), ra(this._ownerElement, this, e, t), t;
},
removeNamedItem: function (e) {
e = this.getNamedItem(e);
return aa(this._ownerElement, this, e), e;
},
removeNamedItemNS: function (e, t) {
t = this.getNamedItemNS(e, t);
return aa(this._ownerElement, this, t), t;
},
getNamedItemNS: function (e, t) {
for (var i = this.length; i--; ) {
var n = this[i];
if (n.localName == t && n.namespaceURI == e) return n;
}
return null;
},
}),
(sa.prototype = {
hasFeature: function (e, t) {
return !0;
},
createDocument: function (e, t, i) {
var n = new ca();
return (n.implementation = this), (n.childNodes = new Zr()), (n.doctype = i || null), i && n.appendChild(i), t && ((t = n.createElementNS(e, t)), n.appendChild(t)), n;
},
createDocumentType: function (e, t, i) {
var n = new Ta();
return (n.name = e), (n.nodeName = e), (n.publicId = t || ''), (n.systemId = i || ''), n;
},
}),
(oa.prototype = {
firstChild: null,
lastChild: null,
previousSibling: null,
nextSibling: null,
attributes: null,
parentNode: null,
childNodes: null,
ownerDocument: null,
nodeValue: null,
namespaceURI: null,
prefix: null,
localName: null,
insertBefore: function (e, t) {
return fa(this, e, t);
},
replaceChild: function (e, t) {
this.insertBefore(e, t), t && this.removeChild(t);
},
removeChild: function (e) {
return pa(this, e);
},
appendChild: function (e) {
return this.insertBefore(e, null);
},
hasChildNodes: function () {
return null != this.firstChild;
},
cloneNode: function (e) {
return (function e(t, i, n) {
var r = new i.constructor();
for (var a in i) {
var s = i[a];
'object' != typeof s && s != r[a] && (r[a] = s);
}
i.childNodes && (r.childNodes = new Zr());
r.ownerDocument = t;
switch (r.nodeType) {
case jr:
var o = i.attributes,
u = (r.attributes = new ia()),
l = o.length;
u._ownerElement = r;
for (var c = 0; c < l; c++) r.setAttributeNode(e(t, o.item(c), !0));
break;
case Hr:
n = !0;
}
if (n) for (var d = i.firstChild; d; ) r.appendChild(e(t, d, n)), (d = d.nextSibling);
return r;
})(this.ownerDocument || this, this, e);
},
normalize: function () {
for (var e = this.firstChild; e; ) {
var t = e.nextSibling;
t && t.nodeType == qr && e.nodeType == qr ? (this.removeChild(t), e.appendData(t.data)) : (e.normalize(), (e = t));
}
},
isSupported: function (e, t) {
return this.ownerDocument.implementation.hasFeature(e, t);
},
hasAttributes: function () {
return 0 < this.attributes.length;
},
lookupPrefix: function (e) {
for (var t = this; t; ) {
var i = t._nsMap;
if (i) for (var n in i) if (i[n] == e) return n;
t = t.nodeType == Hr ? t.ownerDocument : t.parentNode;
}
return null;
},
lookupNamespaceURI: function (e) {
for (var t = this; t; ) {
var i = t._nsMap;
if (i && e in i) return i[e];
t = t.nodeType == Hr ? t.ownerDocument : t.parentNode;
}
return null;
},
isDefaultNamespace: function (e) {
return null == this.lookupPrefix(e);
},
}),
Br(W, oa),
Br(W, oa.prototype),
(ca.prototype = {
nodeName: '#document',
nodeType: Xr,
doctype: null,
documentElement: null,
_inc: 1,
insertBefore: function (e, t) {
if (e.nodeType != Yr) return null == this.documentElement && e.nodeType == jr && (this.documentElement = e), fa(this, e, t), (e.ownerDocument = this), e;
for (var i = e.firstChild; i; ) {
var n = i.nextSibling;
this.insertBefore(i, t), (i = n);
}
return e;
},
removeChild: function (e) {
return this.documentElement == e && (this.documentElement = null), pa(this, e);
},
importNode: function (e, t) {
return (function e(t, i, n) {
var r;
switch (i.nodeType) {
case jr:
(r = i.cloneNode(!1)).ownerDocument = t;
case Yr:
break;
case Hr:
n = !0;
}
r = r || i.cloneNode(!1);
r.ownerDocument = t;
r.parentNode = null;
if (n) for (var a = i.firstChild; a; ) r.appendChild(e(t, a, n)), (a = a.nextSibling);
return r;
})(this, e, t);
},
getElementById: function (t) {
var i = null;
return (
la(this.documentElement, function (e) {
if (e.nodeType == jr && e.getAttribute('id') == t) return (i = e), !0;
}),
i
);
},
getElementsByClassName: function (s) {
var o = Ur(s);
return new ea(this, function (r) {
var a = [];
return (
0 < o.length &&
la(r.documentElement, function (e) {
var t, i, n;
e === r ||
e.nodeType !== jr ||
((t = e.getAttribute('class')) &&
((i = s === t) ||
((t = Ur(t)),
(i = o.every(
((n = t),
function (e) {
return n && -1 !== n.indexOf(e);
})
))),
i && a.push(e)));
}),
a
);
});
},
createElement: function (e) {
var t = new ma();
return (t.ownerDocument = this), (t.nodeName = e), (t.tagName = e), (t.localName = e), (t.childNodes = new Zr()), ((t.attributes = new ia())._ownerElement = t);
},
createDocumentFragment: function () {
var e = new ka();
return (e.ownerDocument = this), (e.childNodes = new Zr()), e;
},
createTextNode: function (e) {
var t = new va();
return (t.ownerDocument = this), t.appendData(e), t;
},
createComment: function (e) {
var t = new _a();
return (t.ownerDocument = this), t.appendData(e), t;
},
createCDATASection: function (e) {
var t = new ba();
return (t.ownerDocument = this), t.appendData(e), t;
},
createProcessingInstruction: function (e, t) {
var i = new Ca();
return (i.ownerDocument = this), (i.tagName = i.target = e), (i.nodeValue = i.data = t), i;
},
createAttribute: function (e) {
var t = new ga();
return (t.ownerDocument = this), (t.name = e), (t.nodeName = e), (t.localName = e), (t.specified = !0), t;
},
createEntityReference: function (e) {
var t = new Ea();
return (t.ownerDocument = this), (t.nodeName = e), t;
},
createElementNS: function (e, t) {
var i = new ma(),
n = t.split(':'),
r = (i.attributes = new ia());
return (i.childNodes = new Zr()), (i.ownerDocument = this), (i.nodeName = t), (i.tagName = t), (i.namespaceURI = e), 2 == n.length ? ((i.prefix = n[0]), (i.localName = n[1])) : (i.localName = t), (r._ownerElement = i);
},
createAttributeNS: function (e, t) {
var i = new ga(),
n = t.split(':');
return (i.ownerDocument = this), (i.nodeName = t), (i.name = t), (i.namespaceURI = e), (i.specified = !0), 2 == n.length ? ((i.prefix = n[0]), (i.localName = n[1])) : (i.localName = t), i;
},
}),
Fr(ca, oa),
(ca.prototype.getElementsByTagName = (ma.prototype = {
nodeType: jr,
hasAttribute: function (e) {
return null != this.getAttributeNode(e);
},
getAttribute: function (e) {
e = this.getAttributeNode(e);
return (e && e.value) || '';
},
getAttributeNode: function (e) {
return this.attributes.getNamedItem(e);
},
setAttribute: function (e, t) {
e = this.ownerDocument.createAttribute(e);
(e.value = e.nodeValue = '' + t), this.setAttributeNode(e);
},
removeAttribute: function (e) {
e = this.getAttributeNode(e);
e && this.removeAttributeNode(e);
},
appendChild: function (e) {
return e.nodeType === Yr
? this.insertBefore(e, null)
: (function (e, t) {
var i = t.parentNode;
i && ((n = e.lastChild), i.removeChild(t), (n = e.lastChild));
var n = e.lastChild;
return (t.parentNode = e), (t.previousSibling = n), (t.nextSibling = null), n ? (n.nextSibling = t) : (e.firstChild = t), (e.lastChild = t), ha(e.ownerDocument, e, t), t;
})(this, e);
},
setAttributeNode: function (e) {
return this.attributes.setNamedItem(e);
},
setAttributeNodeNS: function (e) {
return this.attributes.setNamedItemNS(e);
},
removeAttributeNode: function (e) {
return this.attributes.removeNamedItem(e.nodeName);
},
removeAttributeNS: function (e, t) {
t = this.getAttributeNodeNS(e, t);
t && this.removeAttributeNode(t);
},
hasAttributeNS: function (e, t) {
return null != this.getAttributeNodeNS(e, t);
},
getAttributeNS: function (e, t) {
t = this.getAttributeNodeNS(e, t);
return (t && t.value) || '';
},
setAttributeNS: function (e, t, i) {
t = this.ownerDocument.createAttributeNS(e, t);
(t.value = t.nodeValue = '' + i), this.setAttributeNode(t);
},
getAttributeNodeNS: function (e, t) {
return this.attributes.getNamedItemNS(e, t);
},
getElementsByTagName: function (n) {
return new ea(this, function (t) {
var i = [];
return (
la(t, function (e) {
e === t || e.nodeType != jr || ('*' !== n && e.tagName != n) || i.push(e);
}),
i
);
});
},
getElementsByTagNameNS: function (n, r) {
return new ea(this, function (t) {
var i = [];
return (
la(t, function (e) {
e === t || e.nodeType !== jr || ('*' !== n && e.namespaceURI !== n) || ('*' !== r && e.localName != r) || i.push(e);
}),
i
);
});
},
}).getElementsByTagName),
(ca.prototype.getElementsByTagNameNS = ma.prototype.getElementsByTagNameNS),
Fr(ma, oa),
(ga.prototype.nodeType = Hr),
Fr(ga, oa),
(ya.prototype = {
data: '',
substringData: function (e, t) {
return this.data.substring(e, e + t);
},
appendData: function (e) {
(e = this.data + e), (this.nodeValue = this.data = e), (this.length = e.length);
},
insertData: function (e, t) {
this.replaceData(e, 0, t);
},
appendChild: function (e) {
throw new Error(Qr[3]);
},
deleteData: function (e, t) {
this.replaceData(e, t, '');
},
replaceData: function (e, t, i) {
var n = this.data.substring(0, e),
t = this.data.substring(e + t);
(this.nodeValue = this.data = i = n + i + t), (this.length = i.length);
},
}),
Fr(ya, oa),
(va.prototype = {
nodeName: '#text',
nodeType: qr,
splitText: function (e) {
var t = (i = this.data).substring(e),
i = i.substring(0, e);
(this.data = this.nodeValue = i), (this.length = i.length);
t = this.ownerDocument.createTextNode(t);
return this.parentNode && this.parentNode.insertBefore(t, this.nextSibling), t;
},
}),
Fr(va, ya),
(_a.prototype = { nodeName: '#comment', nodeType: Gr }),
Fr(_a, ya),
(ba.prototype = { nodeName: '#cdata-section', nodeType: Vr }),
Fr(ba, ya),
(Ta.prototype.nodeType = Kr),
Fr(Ta, oa),
(wa.prototype.nodeType = 12),
Fr(wa, oa),
(Sa.prototype.nodeType = 6),
Fr(Sa, oa),
(Ea.prototype.nodeType = Wr),
Fr(Ea, oa),
(ka.prototype.nodeName = '#document-fragment'),
(ka.prototype.nodeType = Yr),
Fr(ka, oa),
(Ca.prototype.nodeType = zr),
Fr(Ca, oa),
(Ia.prototype.serializeToString = function (e, t, i) {
return xa.call(e, t, i);
}),
(oa.prototype.toString = xa);
try {
Object.defineProperty &&
(($r = function e(t) {
switch (t.nodeType) {
case jr:
case Yr:
var i = [];
for (t = t.firstChild; t; ) 7 !== t.nodeType && 8 !== t.nodeType && i.push(e(t)), (t = t.nextSibling);
return i.join('');
default:
return t.nodeValue;
}
}),
Object.defineProperty(ea.prototype, 'length', {
get: function () {
return ta(this), this.$$length;
},
}),
Object.defineProperty(oa.prototype, 'textContent', {
get: function () {
return $r(this);
},
set: function (e) {
switch (this.nodeType) {
case jr:
case Yr:
for (; this.firstChild; ) this.removeChild(this.firstChild);
(e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e));
break;
default:
(this.data = e), (this.value = e), (this.nodeValue = e);
}
},
}),
(Da = function (e, t, i) {
e['$$' + t] = i;
}));
} catch (e) {}
var U = { DocumentType: Ta, DOMException: Jr, DOMImplementation: sa, Element: ma, Node: oa, NodeList: Zr, XMLSerializer: Ia },
Oa = m(function (e, t) {
var i = Or.freeze;
(t.XML_ENTITIES = i({ amp: '&', apos: "'", gt: '>', lt: '<', quot: '"' })),
(t.HTML_ENTITIES = i({
lt: '<',
gt: '>',
amp: '&',
quot: '"',
apos: "'",
Agrave: 'À',
Aacute: 'Á',
Acirc: 'Â',
Atilde: 'Ã',
Auml: 'Ä',
Aring: 'Å',
AElig: 'Æ',
Ccedil: 'Ç',
Egrave: 'È',
Eacute: 'É',
Ecirc: 'Ê',
Euml: 'Ë',
Igrave: 'Ì',
Iacute: 'Í',
Icirc: 'Î',
Iuml: 'Ï',
ETH: 'Ð',
Ntilde: 'Ñ',
Ograve: 'Ò',
Oacute: 'Ó',
Ocirc: 'Ô',
Otilde: 'Õ',
Ouml: 'Ö',
Oslash: 'Ø',
Ugrave: 'Ù',
Uacute: 'Ú',
Ucirc: 'Û',
Uuml: 'Ü',
Yacute: 'Ý',
THORN: 'Þ',
szlig: 'ß',
agrave: 'à',
aacute: 'á',
acirc: 'â',
atilde: 'ã',
auml: 'ä',
aring: 'å',
aelig: 'æ',
ccedil: 'ç',
egrave: 'è',
eacute: 'é',
ecirc: 'ê',
euml: 'ë',
igrave: 'ì',
iacute: 'í',
icirc: 'î',
iuml: 'ï',
eth: 'ð',
ntilde: 'ñ',
ograve: 'ò',
oacute: 'ó',
ocirc: 'ô',
otilde: 'õ',
ouml: 'ö',
oslash: 'ø',
ugrave: 'ù',
uacute: 'ú',
ucirc: 'û',
uuml: 'ü',
yacute: 'ý',
thorn: 'þ',
yuml: 'ÿ',
nbsp: ' ',
iexcl: '¡',
cent: '¢',
pound: '£',
curren: '¤',
yen: '¥',
brvbar: '¦',
sect: '§',
uml: '¨',
copy: '©',
ordf: 'ª',
laquo: '«',
not: '¬',
shy: '',
reg: '®',
macr: '¯',
deg: '°',
plusmn: '±',
sup2: '²',
sup3: '³',
acute: '´',
micro: 'µ',
para: '¶',
middot: '·',
cedil: '¸',
sup1: '¹',
ordm: 'º',
raquo: '»',
frac14: '¼',
frac12: '½',
frac34: '¾',
iquest: '¿',
times: '×',
divide: '÷',
forall: '∀',
part: '∂',
exist: '∃',
empty: '∅',
nabla: '∇',
isin: '∈',
notin: '∉',
ni: '∋',
prod: '∏',
sum: '∑',
minus: '−',
lowast: '∗',
radic: '√',
prop: '∝',
infin: '∞',
ang: '∠',
and: '∧',
or: '∨',
cap: '∩',
cup: '∪',
int: '∫',
there4: '∴',
sim: '∼',
cong: '≅',
asymp: '≈',
ne: '≠',
equiv: '≡',
le: '≤',
ge: '≥',
sub: '⊂',
sup: '⊃',
nsub: '⊄',
sube: '⊆',
supe: '⊇',
oplus: '⊕',
otimes: '⊗',
perp: '⊥',
sdot: '⋅',
Alpha: 'Α',
Beta: 'Β',
Gamma: 'Γ',
Delta: 'Δ',
Epsilon: 'Ε',
Zeta: 'Ζ',
Eta: 'Η',
Theta: 'Θ',
Iota: 'Ι',
Kappa: 'Κ',
Lambda: 'Λ',
Mu: 'Μ',
Nu: 'Ν',
Xi: 'Ξ',
Omicron: 'Ο',
Pi: 'Π',
Rho: 'Ρ',
Sigma: 'Σ',
Tau: 'Τ',
Upsilon: 'Υ',
Phi: 'Φ',
Chi: 'Χ',
Psi: 'Ψ',
Omega: 'Ω',
alpha: 'α',
beta: 'β',
gamma: 'γ',
delta: 'δ',
epsilon: 'ε',
zeta: 'ζ',
eta: 'η',
theta: 'θ',
iota: 'ι',
kappa: 'κ',
lambda: 'λ',
mu: 'μ',
nu: 'ν',
xi: 'ξ',
omicron: 'ο',
pi: 'π',
rho: 'ρ',
sigmaf: 'ς',
sigma: 'σ',
tau: 'τ',
upsilon: 'υ',
phi: 'φ',
chi: 'χ',
psi: 'ψ',
omega: 'ω',
thetasym: 'ϑ',
upsih: 'ϒ',
piv: 'ϖ',
OElig: 'Œ',
oelig: 'œ',
Scaron: 'Š',
scaron: 'š',
Yuml: 'Ÿ',
fnof: 'ƒ',
circ: 'ˆ',
tilde: '˜',
ensp: ' ',
emsp: ' ',
thinsp: ' ',
zwnj: '',
zwj: '',
lrm: '',
rlm: '',
ndash: '–',
mdash: '—',
lsquo: '‘',
rsquo: '’',
sbquo: '‚',
ldquo: '“',
rdquo: '”',
bdquo: '„',
dagger: '†',
Dagger: '‡',
bull: '•',
hellip: '…',
permil: '‰',
prime: '′',
Prime: '″',
lsaquo: '‹',
rsaquo: '›',
oline: '‾',
euro: '€',
trade: '™',
larr: '←',
uarr: '↑',
rarr: '→',
darr: '↓',
harr: '↔',
crarr: '↵',
lceil: '⌈',
rceil: '⌉',
lfloor: '⌊',
rfloor: '⌋',
loz: '◊',
spades: '♠',
clubs: '♣',
hearts: '♥',
diams: '♦',
})),
(t.entityMap = t.HTML_ENTITIES);
});
Oa.XML_ENTITIES, Oa.HTML_ENTITIES, Oa.entityMap;
var Ra = Or.NAMESPACE,
Gt = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,
rr = new RegExp('[\\-\\.0-9' + Gt.source.slice(1, -1) + '\\u00B7\\u0300-\\u036F\\u203F-\\u2040]'),
Ma = new RegExp('^' + Gt.source + rr.source + '*(?::' + Gt.source + rr.source + '*)?$'),
Na = 0,
Ua = 1,
Ba = 2,
Fa = 3,
ja = 4,
Ha = 5,
qa = 6,
Va = 7;
function Wa(e, t) {
(this.message = e), (this.locator = t), Error.captureStackTrace && Error.captureStackTrace(this, Wa);
}
function za() {}
function Ga(e, t) {
return (t.lineNumber = e.lineNumber), (t.columnNumber = e.columnNumber), t;
}
function Xa(e, t, i) {
for (var n = e.tagName, r = null, a = e.length; a--; ) {
var s = e[a],
o = s.qName,
u = s.value,
o = 0 < (c = o.indexOf(':')) ? ((l = s.prefix = o.slice(0, c)), (d = o.slice(c + 1)), 'xmlns' === l && d) : ((l = null), 'xmlns' === (d = o) && '');
(s.localName = d), !1 !== o && (null == r && ((r = {}), Ka(i, (i = {}))), (i[o] = r[o] = u), (s.uri = Ra.XMLNS), t.startPrefixMapping(o, u));
}
for (var l, a = e.length; a--; ) (l = (s = e[a]).prefix) && ('xml' === l && (s.uri = Ra.XML), 'xmlns' !== l && (s.uri = i[l || '']));
var c,
d = 0 < (c = n.indexOf(':')) ? ((l = e.prefix = n.slice(0, c)), (e.localName = n.slice(c + 1))) : ((l = null), (e.localName = n)),
h = (e.uri = i[l || '']);
if ((t.startElement(h, d, n, e), !e.closed)) return (e.currentNSMap = i), (e.localNSMap = r), 1;
if ((t.endElement(h, d, n), r)) for (l in r) t.endPrefixMapping(l);
}
function Ka(e, t) {
for (var i in e) t[i] = e[i];
}
function Ya() {
this.attributeNames = {};
}
((Wa.prototype = new Error()).name = Wa.name),
(za.prototype = {
parse: function (e, t, i) {
var n = this.domBuilder;
n.startDocument(),
Ka(t, (t = {})),
(function (i, e, n, r, a) {
function s(e) {
var t = e.slice(1, -1);
return t in n ? n[t] : '#' === t.charAt(0) ? (65535 < (t = parseInt(t.substr(1).replace('x', '0x'))) ? ((t -= 65536), String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t))) : String.fromCharCode(t)) : (a.error('entity not found:' + e), e);
}
function t(e) {
var t;
f < e && ((t = i.substring(f, e).replace(/?\w+;/g, s)), d && o(f), r.characters(t, 0, e - f), (f = e));
}
function o(e, t) {
for (; l <= e && (t = c.exec(i)); ) (u = t.index), (l = u + t[0].length), d.lineNumber++;
d.columnNumber = e - u + 1;
}
var u = 0,
l = 0,
c = /.*(?:\r\n?|\n)|.*$/g,
d = r.locator,
h = [{ currentNSMap: e }],
p = {},
f = 0;
for (;;) {
try {
var m,
g,
y = i.indexOf('<', f);
if (y < 0) return i.substr(f).match(/^\s*$/) || ((m = r.doc), (g = m.createTextNode(i.substr(f))), m.appendChild(g), (r.currentElement = g));
switch ((f < y && t(y), i.charAt(y + 1))) {
case '/':
var v = i.indexOf('>', y + 3),
_ = i.substring(y + 2, v).replace(/[ \t\n\r]+$/g, ''),
b = h.pop();
v < 0 ? ((_ = i.substring(y + 2).replace(/[\s<].*/, '')), a.error('end tag name: ' + _ + ' is not complete:' + b.tagName), (v = y + 1 + _.length)) : _.match(/\s) && ((_ = _.replace(/[\s<].*/, '')), a.error('end tag name: ' + _ + ' maybe not complete'), (v = y + 1 + _.length));
var T = b.localNSMap,
w = b.tagName == _;
if (w || (b.tagName && b.tagName.toLowerCase() == _.toLowerCase())) {
if ((r.endElement(b.uri, b.localName, _), T)) for (var S in T) r.endPrefixMapping(S);
w || a.fatalError('end tag name: ' + _ + ' is not match the current start tagName:' + b.tagName);
} else h.push(b);
v++;
break;
case '?':
d && o(y),
(v = (function (e, t, i) {
var n = e.indexOf('?>', t);
if (n) {
t = e.substring(t, n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
return t ? (t[0].length, i.processingInstruction(t[1], t[2]), n + 2) : -1;
}
return -1;
})(i, y, r));
break;
case '!':
d && o(y),
(v = (function (e, t, i, n) {
{
if ('-' === e.charAt(t + 2)) {
if ('-' !== e.charAt(t + 3)) return -1;
var r = e.indexOf('--\x3e', t + 4);
return t < r ? (i.comment(e, t + 4, r - t - 4), r + 3) : (n.error('Unclosed comment'), -1);
}
if ('CDATA[' == e.substr(t + 3, 6)) {
r = e.indexOf(']]>', t + 9);
return i.startCDATA(), i.characters(e, t + 9, r - t - 9), i.endCDATA(), r + 3;
}
var a = (function (e, t) {
var i,
n = [],
r = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
(r.lastIndex = t), r.exec(e);
for (; (i = r.exec(e)); ) if ((n.push(i), i[1])) return n;
})(e, t),
n = a.length;
if (1 < n && /!doctype/i.test(a[0][0])) {
(r = a[1][0]), (e = !1), (t = !1);
3 < n && (/^public$/i.test(a[2][0]) ? ((e = a[3][0]), (t = 4 < n && a[4][0])) : /^system$/i.test(a[2][0]) && (t = a[3][0]));
n = a[n - 1];
return i.startDTD(r, e, t), i.endDTD(), n.index + n[0].length;
}
}
return -1;
})(i, y, r, a));
break;
default:
d && o(y);
var E = new Ya(),
k = h[h.length - 1].currentNSMap,
v = (function (e, t, n, i, r, a) {
function s(e, t, i) {
n.attributeNames.hasOwnProperty(e) && a.fatalError('Attribute ' + e + ' redefined'), n.addValue(e, t, i);
}
var o,
u = ++t,
l = Na;
for (;;) {
var c = e.charAt(u);
switch (c) {
case '=':
if (l === Ua) (o = e.slice(t, u)), (l = Fa);
else {
if (l !== Ba) throw new Error('attribute equal must after attrName');
l = Fa;
}
break;
case "'":
case '"':
if (l === Fa || l === Ua) {
if ((l === Ua && (a.warning('attribute value must after "="'), (o = e.slice(t, u))), (t = u + 1), !(0 < (u = e.indexOf(c, t))))) throw new Error("attribute value no end '" + c + "' match");
(d = e.slice(t, u).replace(/?\w+;/g, r)), s(o, d, t - 1), (l = Ha);
} else {
if (l != ja) throw new Error('attribute value must after "="');
(d = e.slice(t, u).replace(/?\w+;/g, r)), s(o, d, t), a.warning('attribute "' + o + '" missed start quot(' + c + ')!!'), (t = u + 1), (l = Ha);
}
break;
case '/':
switch (l) {
case Na:
n.setTagName(e.slice(t, u));
case Ha:
case qa:
case Va:
(l = Va), (n.closed = !0);
case ja:
case Ua:
case Ba:
break;
default:
throw new Error("attribute invalid close char('/')");
}
break;
case '':
return a.error('unexpected end of input'), l == Na && n.setTagName(e.slice(t, u)), u;
case '>':
switch (l) {
case Na:
n.setTagName(e.slice(t, u));
case Ha:
case qa:
case Va:
break;
case ja:
case Ua:
'/' === (d = e.slice(t, u)).slice(-1) && ((n.closed = !0), (d = d.slice(0, -1)));
case Ba:
l === Ba && (d = o), l == ja ? (a.warning('attribute "' + d + '" missed quot(")!'), s(o, d.replace(/?\w+;/g, r), t)) : ((Ra.isHTML(i['']) && d.match(/^(?:disabled|checked|selected)$/i)) || a.warning('attribute "' + d + '" missed value!! "' + d + '" instead!!'), s(d, d, t));
break;
case Fa:
throw new Error('attribute value missed!!');
}
return u;
case '':
c = ' ';
default:
if (c <= ' ')
switch (l) {
case Na:
n.setTagName(e.slice(t, u)), (l = qa);
break;
case Ua:
(o = e.slice(t, u)), (l = Ba);
break;
case ja:
var d = e.slice(t, u).replace(/?\w+;/g, r);
a.warning('attribute "' + d + '" missed quot(")!!'), s(o, d, t);
case Ha:
l = qa;
}
else
switch (l) {
case Ba:
n.tagName, (Ra.isHTML(i['']) && o.match(/^(?:disabled|checked|selected)$/i)) || a.warning('attribute "' + o + '" missed value!! "' + o + '" instead2!!'), s(o, o, t), (t = u), (l = Ua);
break;
case Ha:
a.warning('attribute space is required"' + o + '"!!');
case qa:
(l = Ua), (t = u);
break;
case Fa:
(l = ja), (t = u);
break;
case Va:
throw new Error("elements closed character '/' and '>' must be connected to");
}
}
u++;
}
})(i, y, E, k, s, a),
C = E.length;
if (
(!E.closed &&
(function (e, t, i, n) {
var r = n[i];
null == r && ((r = e.lastIndexOf('' + i + '>')) < t && (r = e.lastIndexOf('' + i)), (n[i] = r));
return r < t;
})(i, v, E.tagName, p) &&
((E.closed = !0), n.nbsp || a.warning('unclosed xml attribute')),
d && C)
) {
for (var I = Ga(d, {}), x = 0; x < C; x++) {
var A = E[x];
o(A.offset), (A.locator = Ga(d, {}));
}
(r.locator = I), Xa(E, r, k) && h.push(E), (r.locator = d);
} else Xa(E, r, k) && h.push(E);
Ra.isHTML(E.uri) && !E.closed
? (v = (function (e, t, i, n, r) {
if (/^(?:script|textarea)$/i.test(i)) {
var a = e.indexOf('' + i + '>', t),
e = e.substring(t + 1, a);
if (/[&<]/.test(e)) return /^script$/i.test(i) || (e = e.replace(/?\w+;/g, n)), r.characters(e, 0, e.length), a;
}
return t + 1;
})(i, v, E.tagName, s, r))
: v++;
}
} catch (e) {
if (e instanceof Wa) throw e;
a.error('element parse error: ' + e), (v = -1);
}
f < v ? (f = v) : t(Math.max(y, f) + 1);
}
})(e, t, i, n, this.errorHandler),
n.endDocument();
},
}),
(Ya.prototype = {
setTagName: function (e) {
if (!Ma.test(e)) throw new Error('invalid tagName:' + e);
this.tagName = e;
},
addValue: function (e, t, i) {
if (!Ma.test(e)) throw new Error('invalid attribute:' + e);
(this.attributeNames[e] = this.length), (this[this.length++] = { qName: e, value: t, offset: i });
},
length: 0,
getLocalName: function (e) {
return this[e].localName;
},
getLocator: function (e) {
return this[e].locator;
},
getQName: function (e) {
return this[e].qName;
},
getURI: function (e) {
return this[e].uri;
},
getValue: function (e) {
return this[e].value;
},
});
var x = { XMLReader: za, ParseError: Wa },
Qa = U.DOMImplementation,
$a = Or.NAMESPACE,
Ja = x.ParseError,
Za = x.XMLReader;
function es(e) {
this.options = e || { locator: {} };
}
function ts() {
this.cdata = !1;
}
function is(e, t) {
(t.lineNumber = e.lineNumber), (t.columnNumber = e.columnNumber);
}
function ns(e) {
if (e) return '\n@' + (e.systemId || '') + '#[line:' + e.lineNumber + ',col:' + e.columnNumber + ']';
}
function rs(e, t, i) {
return 'string' == typeof e ? e.substr(t, i) : e.length >= t + i || t ? new java.lang.String(e, t, i) + '' : e;
}
function as(e, t) {
(e.currentElement || e.doc).appendChild(t);
}
(es.prototype.parseFromString = function (e, t) {
var i = this.options,
n = new Za(),
r = i.domBuilder || new ts(),
a = i.errorHandler,
s = i.locator,
o = i.xmlns || {},
u = /\/x?html?$/.test(t),
t = u ? Oa.HTML_ENTITIES : Oa.XML_ENTITIES;
return (
s && r.setDocumentLocator(s),
(n.errorHandler = (function (n, e, r) {
if (!n) {
if (e instanceof ts) return e;
n = e;
}
var a = {},
s = n instanceof Function;
function t(t) {
var i = n[t];
!i &&
s &&
(i =
2 == n.length
? function (e) {
n(t, e);
}
: n),
(a[t] = i
? function (e) {
i('[xmldom ' + t + ']\t' + e + ns(r));
}
: function () {});
}
return (r = r || {}), t('warning'), t('error'), t('fatalError'), a;
})(a, r, s)),
(n.domBuilder = i.domBuilder || r),
u && (o[''] = $a.HTML),
(o.xml = o.xml || $a.XML),
e && 'string' == typeof e ? n.parse(e, o, t) : n.errorHandler.error('invalid doc source'),
r.doc
);
}),
(ts.prototype = {
startDocument: function () {
(this.doc = new Qa().createDocument(null, null, null)), this.locator && (this.doc.documentURI = this.locator.systemId);
},
startElement: function (e, t, i, n) {
var r = this.doc,
a = r.createElementNS(e, i || t),
s = n.length;
as(this, a), (this.currentElement = a), this.locator && is(this.locator, a);
for (var o = 0; o < s; o++) {
var e = n.getURI(o),
u = n.getValue(o),
i = n.getQName(o),
l = r.createAttributeNS(e, i);
this.locator && is(n.getLocator(o), l), (l.value = l.nodeValue = u), a.setAttributeNode(l);
}
},
endElement: function (e, t, i) {
var n = this.currentElement;
n.tagName, (this.currentElement = n.parentNode);
},
startPrefixMapping: function (e, t) {},
endPrefixMapping: function (e) {},
processingInstruction: function (e, t) {
t = this.doc.createProcessingInstruction(e, t);
this.locator && is(this.locator, t), as(this, t);
},
ignorableWhitespace: function (e, t, i) {},
characters: function (e, t, i) {
var n;
(e = rs.apply(this, arguments)) && ((n = this.cdata ? this.doc.createCDATASection(e) : this.doc.createTextNode(e)), this.currentElement ? this.currentElement.appendChild(n) : /^\s*$/.test(e) && this.doc.appendChild(n), this.locator && is(this.locator, n));
},
skippedEntity: function (e) {},
endDocument: function () {
this.doc.normalize();
},
setDocumentLocator: function (e) {
(this.locator = e) && (e.lineNumber = 0);
},
comment: function (e, t, i) {
e = rs.apply(this, arguments);
e = this.doc.createComment(e);
this.locator && is(this.locator, e), as(this, e);
},
startCDATA: function () {
this.cdata = !0;
},
endCDATA: function () {
this.cdata = !1;
},
startDTD: function (e, t, i) {
var n = this.doc.implementation;
n && n.createDocumentType && ((i = n.createDocumentType(e, t, i)), this.locator && is(this.locator, i), as(this, i), (this.doc.doctype = i));
},
warning: function (e) {},
error: function (e) {},
fatalError: function (e) {
throw new Ja(e, this.locator);
},
}),
'endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl'.replace(/\w+/g, function (e) {
ts.prototype[e] = function () {
return null;
};
});
function ss(e) {
return !!e && 'object' == typeof e;
}
function os() {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
return t.reduce(function (t, i) {
return (
'object' != typeof i ||
Object.keys(i).forEach(function (e) {
Array.isArray(t[e]) && Array.isArray(i[e]) ? (t[e] = t[e].concat(i[e])) : ss(t[e]) && ss(i[e]) ? (t[e] = os(t[e], i[e])) : (t[e] = i[e]);
}),
t
);
}, {});
}
function us(e) {
return e.reduce(function (e, t) {
return e.concat(t);
}, []);
}
function ls(e) {
if (!e.length) return [];
for (var t = [], i = 0; i < e.length; i++) t.push(e[i]);
return t;
}
function cs(e) {
var t = e.baseUrl,
i = void 0 === (n = e.source) ? '' : n,
n = void 0 === (n = e.range) ? '' : n,
e = void 0 === (e = e.indexRange) ? '' : e,
i = { uri: i, resolvedUri: vr((void 0 === t ? '' : t) || '', i) };
return (n || e) && ((n = (n || e).split('-')), (e = parseInt(n[0], 10)), (n = parseInt(n[1], 10)), (i.byterange = { length: n - e + 1, offset: e })), i;
}
function ds(e) {
return e && 'number' != typeof e && (e = parseInt(e, 10)), isNaN(e) ? null : e;
}
function hs(e) {
var s,
t = e.type,
i = e.duration,
n = e.timescale,
r = void 0 === n ? 1 : n,
a = e.periodDuration,
o = e.sourceDuration,
e = (function (e, t) {
for (var i = [], n = e; n < t; n++) i.push(n);
return i;
})((n = ao[t](e)).start, n.end).map(
((s = e),
function (e, t) {
var i = s.duration,
n = s.timescale,
r = s.periodIndex,
a = s.startNumber;
return { number: (void 0 === a ? 1 : a) + e, duration: i / (void 0 === n ? 1 : n), timeline: r, time: t * i };
})
);
return 'static' === t && (e[(t = e.length - 1)].duration = ('number' == typeof a ? a : o) - (i / r) * t), e;
}
function ps(e) {
var t = e.baseUrl,
i = void 0 === (r = e.initialization) ? {} : r,
n = e.sourceDuration,
r = void 0 === (a = e.indexRange) ? '' : a,
a = e.duration;
if (!t) throw new Error(io);
return (i = cs({ baseUrl: t, source: i.sourceURL, range: i.range })), ((r = cs({ baseUrl: t, source: t, indexRange: r })).map = i), a ? (e = hs(e)).length && ((r.duration = e[0].duration), (r.timeline = e[0].timeline)) : n && ((r.duration = n), (r.timeline = 0)), (r.number = 0), [r];
}
function fs(e, t, i) {
for (
var n = e.sidx.map || null,
r = e.sidx.duration,
a = e.timeline || 0,
s = (s = e.sidx.byterange).offset + s.length,
o = t.timescale,
u = t.references.filter(function (e) {
return 1 !== e.referenceType;
}),
l = [],
c = e.endList ? 'static' : 'dynamic',
d = s + t.firstOffset,
h = 0;
h < u.length;
h++
) {
var p = t.references[h],
f = p.referencedSize,
p = p.subsegmentDuration,
p = ps({ baseUrl: i, timescale: o, timeline: a, periodIndex: a, duration: p, sourceDuration: r, indexRange: d + '-' + (d + f - 1), type: c })[0];
n && (p.map = n), l.push(p), (d += f);
}
return (e.segments = l), e;
}
function ms(e) {
return e && e.uri + '-' + ((t = e.byterange), (e = t.offset + t.length - 1), t.offset + '-' + e);
var t;
}
function gs(e) {
var t;
return ((t = e.reduce(function (e, t) {
var i,
n = t.attributes.id + (t.attributes.lang || '');
return e[n] ? (t.segments[0] && (t.segments[0].discontinuity = !0), (i = e[n].segments).push.apply(i, t.segments), t.attributes.contentProtection && (e[n].attributes.contentProtection = t.attributes.contentProtection)) : (e[n] = t), e;
}, {})),
Object.keys(t).map(function (e) {
return t[e];
})).map(function (e) {
var t, n;
return (
(e.discontinuityStarts =
((t = e.segments),
(n = 'discontinuity'),
t.reduce(function (e, t, i) {
return t[n] && e.push(i), e;
}, []))),
e
);
});
}
function ys(e, t) {
var i = ms(e.sidx);
return (i = i && t[i] && t[i].sidx) && fs(e, i, e.sidx.resolvedUri), e;
}
function vs(e, l, c) {
var d;
return (
void 0 === l && (l = {}),
void 0 === c && (c = !1),
(e = e.reduce(function (e, t) {
var i = (t.attributes.role && t.attributes.role.value) || '',
n = t.attributes.lang || '',
r = t.attributes.label || 'main';
e[(r = n && !t.attributes.label ? t.attributes.lang + (i ? ' (' + i + ')' : '') : r)] || (e[r] = { language: n, autoselect: !0, default: 'main' === i, playlists: [], uri: '' });
var a,
s,
o,
u,
u = ys(((s = c), (o = (a = t).attributes), (u = a.segments), (n = a.sidx), (u = { attributes: (((a = { NAME: o.id, BANDWIDTH: o.bandwidth, CODECS: o.codecs })['PROGRAM-ID'] = 1), a), uri: '', endList: 'static' === o.type, timeline: o.periodIndex, resolvedUri: '', targetDuration: o.duration, segments: u, mediaSequence: u.length ? u[0].number : 1 }), o.contentProtection && (u.contentProtection = o.contentProtection), n && (u.sidx = n), s && ((u.attributes.AUDIO = 'audio'), (u.attributes.SUBTITLES = 'subs')), u), l);
return e[r].playlists.push(u), 'undefined' == typeof d && 'main' === i && ((d = t).default = !0), e;
}, {})),
d || (e[Object.keys(e)[0]].default = !0),
e
);
}
function _s(e) {
var t = e.attributes,
i = e.segments,
n = e.sidx,
i = { attributes: (((e = { NAME: t.id, AUDIO: 'audio', SUBTITLES: 'subs', RESOLUTION: { width: t.width, height: t.height }, CODECS: t.codecs, BANDWIDTH: t.bandwidth })['PROGRAM-ID'] = 1), e), uri: '', endList: 'static' === t.type, timeline: t.periodIndex, resolvedUri: '', targetDuration: t.duration, segments: i, mediaSequence: i.length ? i[0].number : 1 };
return t.contentProtection && (i.contentProtection = t.contentProtection), n && (i.sidx = n), i;
}
function bs(e) {
return 'video/mp4' === (e = e.attributes).mimeType || 'video/webm' === e.mimeType || 'video' === e.contentType;
}
function Ts(e) {
return 'audio/mp4' === (e = e.attributes).mimeType || 'audio/webm' === e.mimeType || 'audio' === e.contentType;
}
function ws(e) {
return 'text/vtt' === (e = e.attributes).mimeType || 'text' === e.contentType;
}
function Ss(e, t, i) {
if ((void 0 === i && (i = {}), !e.length)) return {};
var n = (c = e[0].attributes).sourceDuration,
r = c.type,
a = c.suggestedPresentationDelay,
s = c.minimumUpdatePeriod,
o = gs(e.filter(bs)).map(_s),
u = gs(e.filter(Ts)),
l = e.filter(ws),
c = e
.map(function (e) {
return e.attributes.captionServices;
})
.filter(Boolean),
o = {
allowCache: !0,
discontinuityStarts: [],
segments: [],
endList: !0,
mediaGroups: (((e = { AUDIO: {}, VIDEO: {} })['CLOSED-CAPTIONS'] = {}), (e.SUBTITLES = {}), e),
uri: '',
duration: n,
playlists: (function (e, t) {
if ((void 0 === t && (t = {}), !Object.keys(t).length)) return e;
for (var i in e) e[i] = ys(e[i], t);
return e;
})(o, i),
};
0 <= s && (o.minimumUpdatePeriod = 1e3 * s), t && (o.locations = t), 'dynamic' === r && (o.suggestedPresentationDelay = a);
var d,
a = 0 === o.playlists.length;
return (
u.length && (o.mediaGroups.AUDIO.audio = vs(u, i, a)),
l.length &&
(o.mediaGroups.SUBTITLES.subs =
(void 0 === (d = i) && (d = {}),
l.reduce(function (e, t) {
var i = t.attributes.lang || 'text';
return (
e[i] || (e[i] = { language: i, default: !1, autoselect: !1, playlists: [], uri: '' }),
e[i].playlists.push(
ys(
(function (e) {
var t = e.attributes,
i = e.segments;
'undefined' == typeof i && ((i = [{ uri: t.baseUrl, timeline: t.periodIndex, resolvedUri: t.baseUrl || '', duration: t.sourceDuration, number: 0 }]), (t.duration = t.sourceDuration));
(e = { NAME: t.id, BANDWIDTH: t.bandwidth })['PROGRAM-ID'] = 1;
return t.codecs && (e.CODECS = t.codecs), { attributes: e, uri: '', endList: 'static' === t.type, timeline: t.periodIndex, resolvedUri: t.baseUrl || '', targetDuration: t.duration, segments: i, mediaSequence: i.length ? i[0].number : 1 };
})(t),
d
)
),
e
);
}, {}))),
c.length &&
(o.mediaGroups['CLOSED-CAPTIONS'].cc = c.reduce(function (n, e) {
return (
e &&
e.forEach(function (e) {
var t = e.channel,
i = e.language;
(n[i] = { autoselect: !1, default: !1, instreamId: t, language: i }), e.hasOwnProperty('aspectRatio') && (n[i].aspectRatio = e.aspectRatio), e.hasOwnProperty('easyReader') && (n[i].easyReader = e.easyReader), e.hasOwnProperty('3D') && (n[i]['3D'] = e['3D']);
}),
n
);
}, {})),
o
);
}
function Es(e, t) {
for (var i, n, r, a, s, o, u = e.type, l = e.minimumUpdatePeriod, c = void 0 === l ? 0 : l, d = void 0 === (l = e.media) ? '' : l, h = e.sourceDuration, p = void 0 === (l = e.timescale) ? 1 : l, f = void 0 === (l = e.startNumber) ? 1 : l, m = e.periodIndex, g = [], y = -1, v = 0; v < t.length; v++) {
var _ = t[v],
b = _.d,
T = _.r || 0,
w = _.t || 0;
y < 0 && (y = w), w && y < w && (y = w);
var S,
E = void 0;
E = T < 0 ? ((S = v + 1) === t.length ? ('dynamic' === u && 0 < c && 0 < d.indexOf('$Number$') ? ((i = y), (n = b), (_ = o = s = a = r = void 0), (r = (w = e).NOW), (a = w.clientOffset), (s = w.availabilityStartTime), (o = w.timescale), (_ = w.start), (w = w.minimumUpdatePeriod), Math.ceil((((r + a) / 1e3 + (void 0 === w ? 0 : w) - (s + (void 0 === _ ? 0 : _))) * (void 0 === o ? 1 : o) - i) / n)) : (h * p - y) / b) : (t[S].t - y) / b) : T + 1;
for (var k = f + g.length + E, C = f + g.length; C < k; ) g.push({ number: C, duration: b / p, time: y, timeline: m }), (y += b), C++;
}
return g;
}
function ks(e, t) {
return e.replace(
so,
((r = t),
function (e, t, i, n) {
if ('$$' === e) return '$';
if ('undefined' == typeof r[t]) return e;
e = '' + r[t];
return 'RepresentationID' === t || (n = i ? parseInt(n, 10) : 1) <= e.length ? e : new Array(n - e.length + 1).join('0') + e;
})
);
var r;
}
function Cs(r, e) {
var a = { RepresentationID: r.id, Bandwidth: r.bandwidth || 0 },
t = void 0 === (t = r.initialization) ? { sourceURL: '', range: '' } : t,
s = cs({ baseUrl: r.baseUrl, source: ks(t.sourceURL, a), range: t.range });
return ((t = e), (e = r).duration || t ? (e.duration ? hs(e) : Es(e, t)) : [{ number: e.startNumber || 1, duration: e.sourceDuration, time: 0, timeline: e.periodIndex }]).map(function (e) {
(a.Number = e.number), (a.Time = e.time);
var t = ks(r.media || '', a),
i = r.timescale || 1,
n = r.presentationTimeOffset || 0,
i = r.periodStart + (e.time - n) / i;
return { uri: t, timeline: e.timeline, duration: e.duration, resolvedUri: vr(r.baseUrl || '', t), map: s, number: e.number, presentationTime: i };
});
}
function Is(r, e) {
var t = r.duration,
i = void 0 === (i = r.segmentUrls) ? [] : i,
a = r.periodStart;
if ((!t && !e) || (t && e)) throw new Error(no);
var n,
s = i.map(function (e) {
return (i = e), (e = (t = r).baseUrl), (t = t.initialization), (t = cs({ baseUrl: e, source: (t = void 0 === t ? {} : t).sourceURL, range: t.range })), ((i = cs({ baseUrl: e, source: i.media, range: i.mediaRange })).map = t), i;
var t, i;
});
return (
t && (n = hs(r)),
(n = e ? Es(r, e) : n)
.map(function (e, t) {
if (s[t]) {
var i = s[t],
n = r.timescale || 1,
t = r.presentationTimeOffset || 0;
return (i.timeline = e.timeline), (i.duration = e.duration), (i.number = e.number), (i.presentationTime = a + (e.time - t) / n), i;
}
})
.filter(function (e) {
return e;
})
);
}
function xs(e) {
var t,
i = e.attributes,
n = e.segmentInfo;
n.template ? ((a = Cs), (t = os(i, n.template))) : n.base ? ((a = ps), (t = os(i, n.base))) : n.list && ((a = Is), (t = os(i, n.list)));
var r = { attributes: i };
if (!a) return r;
var a,
e = a(t, n.segmentTimeline);
return (
t.duration
? ((i = t.duration), (a = t.timescale), (t.duration = i / (void 0 === a ? 1 : a)))
: e.length
? (t.duration = e.reduce(function (e, t) {
return Math.max(e, Math.ceil(t.duration));
}, 0))
: (t.duration = 0),
(r.attributes = t),
(r.segments = e),
n.base && t.indexRange && ((r.sidx = e[0]), (r.segments = [])),
r
);
}
function As(e, t) {
return ls(e.childNodes).filter(function (e) {
return e.tagName === t;
});
}
function Ps(e) {
return e.textContent.trim();
}
function Ls(e) {
if (!(r = /P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(e))) return 0;
var t = (a = r.slice(1))[0],
i = a[1],
n = a[2],
e = a[3],
r = a[4],
a = a[5];
return 31536e3 * parseFloat(t || 0) + 2592e3 * parseFloat(i || 0) + 86400 * parseFloat(n || 0) + 3600 * parseFloat(e || 0) + 60 * parseFloat(r || 0) + parseFloat(a || 0);
}
function Ds(e) {
return e && e.attributes
? ls(e.attributes).reduce(function (e, t) {
var i = oo[t.name] || oo.DEFAULT;
return (e[t.name] = i(t.value)), e;
}, {})
: {};
}
function Os(e, i) {
return i.length
? us(
e.map(function (t) {
return i.map(function (e) {
return vr(t, Ps(e));
});
})
)
: e;
}
function Rs(e) {
var t = As(e, 'SegmentTemplate')[0],
i = As(e, 'SegmentList')[0],
n =
i &&
As(i, 'SegmentURL').map(function (e) {
return os({ tag: 'SegmentURL' }, Ds(e));
}),
r = As(e, 'SegmentBase')[0],
e = (a = i || t) && As(a, 'SegmentTimeline')[0],
a = (a = i || r || t) && As(a, 'Initialization')[0];
(t = t && Ds(t)) && a ? (t.initialization = a && Ds(a)) : t && t.initialization && (t.initialization = { sourceURL: t.initialization });
var s = { template: t, segmentTimeline: e && As(e, 'S').map(Ds), list: i && os(Ds(i), { segmentUrls: n, initialization: Ds(a) }), base: r && os(Ds(r), { initialization: Ds(a) }) };
return (
Object.keys(s).forEach(function (e) {
s[e] || delete s[e];
}),
s
);
}
function Ms(u, l, c) {
return function (e) {
var t = Ds(e),
i = Os(l, As(e, 'BaseURL')),
n = As(e, 'Role')[0],
n = { role: Ds(n) },
t = os(u, t, n),
n = As(e, 'Accessibility')[0],
n =
'urn:scte:dash:cc:cea-608:2015' === (n = Ds(n)).schemeIdUri
? ('string' != typeof n.value ? [] : n.value.split(';')).map(function (e) {
var t, i, n;
return /^CC\d=/.test((n = e)) ? ((i = (t = e.split('='))[0]), (n = t[1])) : /^CC\d$/.test(e) && (i = e), { channel: i, language: n };
})
: 'urn:scte:dash:cc:cea-708:2015' === n.schemeIdUri
? ('string' != typeof n.value ? [] : n.value.split(';')).map(function (e) {
var t,
i,
n = { channel: void 0, language: void 0, aspectRatio: 1, easyReader: 0, '3D': 0 };
return (
/=/.test(e)
? ((t = (i = e.split('='))[0]),
(i = void 0 === (i = i[1]) ? '' : i),
(n.channel = t),
(n.language = e),
i.split(',').forEach(function (e) {
var t = e.split(':'),
e = t[0],
t = t[1];
'lang' === e ? (n.language = t) : 'er' === e ? (n.easyReader = Number(t)) : 'war' === e ? (n.aspectRatio = Number(t)) : '3D' === e && (n['3D'] = Number(t));
}))
: (n.language = e),
n.channel && (n.channel = 'SERVICE' + n.channel),
n
);
})
: void 0;
n && (t = os(t, { captionServices: n }));
n = As(e, 'Label')[0];
n && n.childNodes.length && ((r = n.childNodes[0].nodeValue.trim()), (t = os(t, { label: r })));
var r = As(e, 'ContentProtection').reduce(function (e, t) {
var i = Ds(t),
n = uo[i.schemeIdUri];
return n && ((e[n] = { attributes: i }), (t = As(t, 'cenc:pssh')[0]) && ((t = (t = Ps(t)) && sr(t)), (e[n].pssh = t))), e;
}, {});
Object.keys(r).length && (t = os(t, { contentProtection: r }));
var a,
s,
o,
r = Rs(e),
e = As(e, 'Representation'),
r = os(c, r);
return us(
e.map(
((a = t),
(s = i),
(o = r),
function (e) {
var t = As(e, 'BaseURL'),
t = Os(s, t),
i = os(a, Ds(e)),
n = Rs(e);
return t.map(function (e) {
return { segmentInfo: os(o, n), attributes: os(i, { baseUrl: e }) };
});
})
)
);
};
}
function Ns(e, t) {
var i = (t = void 0 === t ? {} : t),
n = void 0 === (a = i.manifestUri) ? '' : a,
t = void 0 === (r = i.NOW) ? Date.now() : r,
r = void 0 === (a = i.clientOffset) ? 0 : a;
if (!(i = As(e, 'Period')).length) throw new Error(Zs);
var a = As(e, 'Location'),
s = Ds(e),
e = Os([n], As(e, 'BaseURL'));
(s.type = s.type || 'static'), (s.sourceDuration = s.mediaPresentationDuration || 0), (s.NOW = t), (s.clientOffset = r), a.length && (s.locations = a.map(Ps));
var o,
u,
l = [];
return (
i.forEach(function (e, t) {
var i,
n = Ds(e),
r = l[t - 1];
(n.start = ((i = { attributes: n, priorPeriodAttributes: r ? r.attributes : null, mpdType: s.type }), (t = i.attributes), (r = i.priorPeriodAttributes), (i = i.mpdType), 'number' == typeof t.start ? t.start : r && 'number' == typeof r.start && 'number' == typeof r.duration ? r.start + r.duration : r || 'static' !== i ? null : 0)), l.push({ node: e, attributes: n });
}),
{
locations: s.locations,
representationInfo: us(
l.map(
((o = s),
(u = e),
function (e, t) {
var i = Os(u, As(e.node, 'BaseURL')),
n = parseInt(e.attributes.id, 10),
t = window.isNaN(n) ? t : n,
n = os(o, { periodIndex: t, periodStart: e.attributes.start });
'number' == typeof e.attributes.duration && (n.periodDuration = e.attributes.duration);
(t = As(e.node, 'AdaptationSet')), (e = Rs(e.node));
return us(t.map(Ms(n, i, e)));
})
)
),
}
);
}
function Us(e) {
if ('' === e) throw new Error(eo);
var t,
i,
n = new Js();
try {
i = (t = n.parseFromString(e, 'application/xml')) && 'MPD' === t.documentElement.tagName ? t.documentElement : null;
} catch (e) {}
if (!i || (i && 0 < i.getElementsByTagName('parsererror').length)) throw new Error(to);
return i;
}
function Bs(e, t) {
void 0 === t && (t = {});
var i = Ns(Us(e), t),
e = i.representationInfo.map(xs);
return Ss(e, i.locations, t.sidxMapping);
}
function Fs(e) {
return (function (e) {
e = As(e, 'UTCTiming')[0];
if (!e) return null;
var t = Ds(e);
switch (t.schemeIdUri) {
case 'urn:mpeg:dash:utc:http-head:2014':
case 'urn:mpeg:dash:utc:http-head:2012':
t.method = 'HEAD';
break;
case 'urn:mpeg:dash:utc:http-xsdate:2014':
case 'urn:mpeg:dash:utc:http-iso:2014':
case 'urn:mpeg:dash:utc:http-xsdate:2012':
case 'urn:mpeg:dash:utc:http-iso:2012':
t.method = 'GET';
break;
case 'urn:mpeg:dash:utc:direct:2014':
case 'urn:mpeg:dash:utc:direct:2012':
(t.method = 'DIRECT'), (t.value = Date.parse(t.value));
break;
case 'urn:mpeg:dash:utc:http-ntp:2014':
case 'urn:mpeg:dash:utc:ntp:2014':
case 'urn:mpeg:dash:utc:sntp:2014':
default:
throw new Error(ro);
}
return t;
})(Us(e));
}
function js(e) {
return e instanceof Uint8Array ? e : (Array.isArray(e) || ((t = e), ArrayBuffer.isView(t)) || e instanceof ArrayBuffer || (e = 'number' != typeof e || ('number' == typeof e && e != e) ? 0 : [e]), new Uint8Array((e && e.buffer) || e, (e && e.byteOffset) || 0, (e && e.byteLength) || 0));
var t;
}
function Hs(e, t) {
var i = void 0 !== (t = (void 0 === t ? {} : t).le) && t;
e = ho((e = ('bigint' != typeof e && 'number' != typeof e) || ('number' == typeof e && e != e) ? 0 : e));
for (var n = ((t = e), Math.ceil(t.toString(2).length / 8)), r = new Uint8Array(new ArrayBuffer(n)), a = 0; a < n; a++) {
var s = i ? a : Math.abs(a + 1 - r.length);
(r[s] = Number((e / po[a]) & ho(255))), e < 0 && ((r[s] = Math.abs(~r[s])), (r[s] -= 0 === a ? 1 : 2));
}
return r;
}
function qs(e, t) {
if ('string' != typeof (e = 'string' != typeof e && e && 'function' == typeof e.toString ? e.toString() : e)) return new Uint8Array();
t || (e = unescape(encodeURIComponent(e)));
for (var i = new Uint8Array(e.length), n = 0; n < e.length; n++) i[n] = e.charCodeAt(n);
return i;
}
function Vs(i, e, t) {
var n = void 0 === t ? {} : t,
r = void 0 === (t = n.offset) ? 0 : t,
a = void 0 === (n = n.mask) ? [] : n;
return (
(i = js(i)),
(n = (e = js(e)).every || Array.prototype.every),
e.length &&
i.length - r >= e.length &&
n.call(e, function (e, t) {
return e === (a[t] ? a[t] & i[r + t] : i[r + t]);
})
);
}
function Ws(e, t) {
return (
void 0 === t && (t = 0),
(e = js(e)).length - t < 10 || !Vs(e, fo, { offset: t })
? t
: Ws(
e,
(t += (function (e, t) {
void 0 === t && (t = 0);
var i = (e = js(e))[t + 5],
t = (e[t + 6] << 21) | (e[t + 7] << 14) | (e[t + 8] << 7) | e[t + 9];
return (16 & i) >> 4 ? 20 + t : 10 + t;
})(e, t))
)
);
}
function zs(e) {
return 'string' == typeof e ? qs(e) : e;
}
function Gs(e, t, i) {
var n;
void 0 === i && (i = !1), (n = t), (t = Array.isArray(n) ? n.map(zs) : [zs(n)]), (e = js(e));
var r = [];
if (!t.length) return r;
for (var a = 0; a < e.length; ) {
var s = ((e[a] << 24) | (e[a + 1] << 16) | (e[a + 2] << 8) | e[a + 3]) >>> 0,
o = e.subarray(a + 4, a + 8);
if (0 == s) break;
var u = a + s;
if (u > e.length) {
if (i) break;
u = e.length;
}
s = e.subarray(a + 8, u);
Vs(o, t[0]) && (1 === t.length ? r.push(s) : r.push.apply(r, Gs(s, t.slice(1), i))), (a = u);
}
return r;
}
function Xs(e, t, i, n) {
void 0 === i && (i = !0), void 0 === n && (n = !1);
var r = (function (e) {
for (var t = 1, i = 0; i < go.length && !(e & go[i]); i++) t++;
return t;
})(e[t]),
a = e.subarray(t, t + r);
return (
i && ((a = Array.prototype.slice.call(e, t, t + r))[0] ^= go[r - 1]),
{
length: r,
value: (function (n, e) {
var t = void 0 === e ? {} : e,
e = t.signed,
e = void 0 !== e && e,
t = t.le,
r = void 0 !== t && t;
n = js(n);
(t = r ? 'reduce' : 'reduceRight'),
(t = (n[t] || Array.prototype[t]).call(
n,
function (e, t, i) {
i = r ? i : Math.abs(i + 1 - n.length);
return e + ho(t) * po[i];
},
ho(0)
));
return !e || ((e = po[n.length] / ho(2) - ho(1)) < (t = ho(t)) && ((t -= e), (t -= e), (t -= ho(2)))), Number(t);
})(a, { signed: n }),
bytes: a,
}
);
}
function Ks(e) {
return 'string' == typeof e ? e.match(/.{1,2}/g).map(Ks) : 'number' == typeof e ? Hs(e) : e;
}
function Ys(e, t, i) {
if (i >= t.length) return t.length;
var n = Xs(t, i, !1);
if (Vs(e.bytes, n.bytes)) return i;
var r = Xs(t, i + n.length);
return Ys(e, t, i + r.length + r.value + n.length);
}
function Qs(e, t) {
var i;
(i = t), (t = Array.isArray(i) ? i.map(Ks) : [Ks(i)]), (e = js(e));
var n = [];
if (!t.length) return n;
for (var r = 0; r < e.length; ) {
var a = Xs(e, r, !1),
s = Xs(e, r + a.length),
o = r + a.length + s.length;
127 === s.value && ((s.value = Ys(a, e, o)), s.value !== e.length && (s.value -= o));
var u = o + s.value > e.length ? e.length : o + s.value,
u = e.subarray(o, u);
Vs(t[0], a.bytes) && (1 === t.length ? n.push(u) : (n = n.concat(Qs(u, t.slice(1))))), (r += a.length + s.length + u.length);
}
return n;
}
function $s(e, t, i, n) {
void 0 === n && (n = 1 / 0), (e = js(e)), (i = [].concat(i));
for (var r, a = 0, s = 0; a < e.length && (s < n || r); ) {
var o = void 0;
if ((Vs(e.subarray(a), yo) ? (o = 4) : Vs(e.subarray(a), vo) && (o = 3), o)) {
if ((s++, r))
return (function (e) {
for (var t = [], i = 1; i < e.length - 2; ) Vs(e.subarray(i, i + 3), _o) && (t.push(i + 2), i++), i++;
if (0 === t.length) return e;
for (var n = e.length - t.length, r = new Uint8Array(n), a = 0, i = 0; i < n; a++, i++) a === t[0] && (a++, t.shift()), (r[i] = e[a]);
return r;
})(e.subarray(r, a));
var u = void 0;
'h264' === t ? (u = 31 & e[a + o]) : 'h265' === t && (u = (e[a + o] >> 1) & 63), -1 !== i.indexOf(u) && (r = a + o), (a += o + ('h264' === t ? 1 : 2));
} else a++;
}
return e.subarray(0, 0);
}
var Js = { __DOMHandler: ts, DOMParser: es, DOMImplementation: U.DOMImplementation, XMLSerializer: U.XMLSerializer }.DOMParser,
Zs = 'INVALID_NUMBER_OF_PERIOD',
eo = 'DASH_EMPTY_MANIFEST',
to = 'DASH_INVALID_XML',
io = 'NO_BASE_URL',
no = 'SEGMENT_TIME_UNSPECIFIED',
ro = 'UNSUPPORTED_UTC_TIMING_SCHEME',
ao = {
static: function (e) {
var t = e.duration,
i = e.timescale,
n = void 0 === i ? 1 : i,
r = e.sourceDuration,
i = e.periodDuration,
e = ds(e.endNumber),
n = t / n;
return 'number' == typeof e ? { start: 0, end: e } : 'number' == typeof i ? { start: 0, end: i / n } : { start: 0, end: r / n };
},
dynamic: function (e) {
var t = e.NOW,
i = e.clientOffset,
n = e.availabilityStartTime,
r = e.timescale,
a = void 0 === r ? 1 : r,
s = e.duration,
o = e.start,
u = void 0 === o ? 0 : o,
r = e.minimumUpdatePeriod,
o = void 0 === r ? 0 : r,
r = e.timeShiftBufferDepth,
r = void 0 === r ? 1 / 0 : r,
e = ds(e.endNumber),
i = (t + i) / 1e3,
u = n + u,
o = Math.ceil(((i + o - u) * a) / s),
r = Math.floor(((i - u - r) * a) / s),
s = Math.floor(((i - u) * a) / s);
return { start: Math.max(0, r), end: 'number' == typeof e ? e : Math.min(o, s) };
},
},
so = /\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g,
oo = {
mediaPresentationDuration: Ls,
availabilityStartTime: function (e) {
return /^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test((e = e)) && (e += 'Z'), Date.parse(e) / 1e3;
},
minimumUpdatePeriod: Ls,
suggestedPresentationDelay: Ls,
type: function (e) {
return e;
},
timeShiftBufferDepth: Ls,
start: Ls,
width: function (e) {
return parseInt(e, 10);
},
height: function (e) {
return parseInt(e, 10);
},
bandwidth: function (e) {
return parseInt(e, 10);
},
startNumber: function (e) {
return parseInt(e, 10);
},
timescale: function (e) {
return parseInt(e, 10);
},
presentationTimeOffset: function (e) {
return parseInt(e, 10);
},
duration: function (e) {
var t = parseInt(e, 10);
return isNaN(t) ? Ls(e) : t;
},
d: function (e) {
return parseInt(e, 10);
},
t: function (e) {
return parseInt(e, 10);
},
r: function (e) {
return parseInt(e, 10);
},
DEFAULT: function (e) {
return e;
},
},
uo = { 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey', 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha', 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready', 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime' },
lo = Math.pow(2, 32),
co = function (e) {
var t = new DataView(e.buffer, e.byteOffset, e.byteLength),
i = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), references: [], referenceId: t.getUint32(4), timescale: t.getUint32(8) },
n = 12;
0 === i.version ? ((i.earliestPresentationTime = t.getUint32(n)), (i.firstOffset = t.getUint32(n + 4)), (n += 8)) : ((i.earliestPresentationTime = t.getUint32(n) * lo + t.getUint32(n + 4)), (i.firstOffset = t.getUint32(n + 8) * lo + t.getUint32(n + 12)), (n += 16));
var r = t.getUint16((n += 2));
for (n += 2; 0 < r; n += 12, r--) i.references.push({ referenceType: (128 & e[n]) >>> 7, referencedSize: 2147483647 & t.getUint32(n), subsegmentDuration: t.getUint32(n + 4), startsWithSap: !!(128 & e[n + 8]), sapType: (112 & e[n + 8]) >>> 4, sapDeltaTime: 268435455 & t.getUint32(n + 8) });
return i;
},
ho = window.BigInt || Number,
po = [ho('0x1'), ho('0x100'), ho('0x10000'), ho('0x1000000'), ho('0x100000000'), ho('0x10000000000'), ho('0x1000000000000'), ho('0x100000000000000'), ho('0x10000000000000000')],
fo = js([73, 68, 51]),
mo = { EBML: js([26, 69, 223, 163]), DocType: js([66, 130]), Segment: js([24, 83, 128, 103]), SegmentInfo: js([21, 73, 169, 102]), Tracks: js([22, 84, 174, 107]), Track: js([174]), TrackNumber: js([215]), DefaultDuration: js([35, 227, 131]), TrackEntry: js([174]), TrackType: js([131]), FlagDefault: js([136]), CodecID: js([134]), CodecPrivate: js([99, 162]), VideoTrack: js([224]), AudioTrack: js([225]), Cluster: js([31, 67, 182, 117]), Timestamp: js([231]), TimestampScale: js([42, 215, 177]), BlockGroup: js([160]), BlockDuration: js([155]), Block: js([161]), SimpleBlock: js([163]) },
go = [128, 64, 32, 16, 8, 4, 2, 1],
yo = js([0, 0, 0, 1]),
vo = js([0, 0, 1]),
_o = js([0, 0, 3]),
bo = { webm: js([119, 101, 98, 109]), matroska: js([109, 97, 116, 114, 111, 115, 107, 97]), flac: js([102, 76, 97, 67]), ogg: js([79, 103, 103, 83]), ac3: js([11, 119]), riff: js([82, 73, 70, 70]), avi: js([65, 86, 73]), wav: js([87, 65, 86, 69]), '3gp': js([102, 116, 121, 112, 51, 103]), mp4: js([102, 116, 121, 112]), fmp4: js([115, 116, 121, 112]), mov: js([102, 116, 121, 112, 113, 116]), moov: js([109, 111, 111, 118]), moof: js([109, 111, 111, 102]) },
To = {
aac: function (e) {
var t = Ws(e);
return Vs(e, [255, 16], { offset: t, mask: [255, 22] });
},
mp3: function (e) {
var t = Ws(e);
return Vs(e, [255, 2], { offset: t, mask: [255, 6] });
},
webm: function (e) {
e = Qs(e, [mo.EBML, mo.DocType])[0];
return Vs(e, bo.webm);
},
mkv: function (e) {
e = Qs(e, [mo.EBML, mo.DocType])[0];
return Vs(e, bo.matroska);
},
mp4: function (e) {
return !To['3gp'](e) && !To.mov(e) && (!(!Vs(e, bo.mp4, { offset: 4 }) && !Vs(e, bo.fmp4, { offset: 4 })) || !(!Vs(e, bo.moof, { offset: 4 }) && !Vs(e, bo.moov, { offset: 4 })) || void 0);
},
mov: function (e) {
return Vs(e, bo.mov, { offset: 4 });
},
'3gp': function (e) {
return Vs(e, bo['3gp'], { offset: 4 });
},
ac3: function (e) {
var t = Ws(e);
return Vs(e, bo.ac3, { offset: t });
},
ts: function (e) {
if (e.length < 189 && 1 <= e.length) return 71 === e[0];
for (var t = 0; t + 188 < e.length && t < 188; ) {
if (71 === e[t] && 71 === e[t + 188]) return !0;
t += 1;
}
return !1;
},
flac: function (e) {
var t = Ws(e);
return Vs(e, bo.flac, { offset: t });
},
ogg: function (e) {
return Vs(e, bo.ogg);
},
avi: function (e) {
return Vs(e, bo.riff) && Vs(e, bo.avi, { offset: 8 });
},
wav: function (e) {
return Vs(e, bo.riff) && Vs(e, bo.wav, { offset: 8 });
},
h264: function (e) {
return $s(e, 'h264', 7, 3).length;
},
h265: function (e) {
return $s(e, 'h265', [32, 33], 3).length;
},
},
wo = Object.keys(To)
.filter(function (e) {
return 'ts' !== e && 'h264' !== e && 'h265' !== e;
})
.concat(['ts', 'h264', 'h265']);
wo.forEach(function (e) {
var t = To[e];
To[e] = function (e) {
return t(js(e));
};
});
function So(e) {
e = js(e);
for (var t = 0; t < wo.length; t++) {
var i = wo[t];
if (tl[i](e)) return i;
}
return '';
}
function Eo(e, t, i) {
return e && i && i.responseURL && t !== i.responseURL ? i.responseURL : t;
}
function ko(e) {
return tr.log.debug ? tr.log.debug.bind(tr, 'VHS:', e + ' >') : function () {};
}
function Co(e, t) {
var i,
n = [];
if (e && e.length) for (i = 0; i < e.length; i++) t(e.start(i), e.end(i)) && n.push([e.start(i), e.end(i)]);
return tr.createTimeRanges(n);
}
function Io(e, i) {
return Co(e, function (e, t) {
return e - 0.1 <= i && i <= t + 0.1;
});
}
function xo(e, t) {
return Co(e, function (e) {
return t <= e - rl;
});
}
function Ao(e) {
var t = [];
if (!e || !e.length) return '';
for (var i = 0; i < e.length; i++) t.push(e.start(i) + ' => ' + e.end(i));
return t.join(', ');
}
function Po(e) {
for (var t = [], i = 0; i < e.length; i++) t.push({ start: e.start(i), end: e.end(i) });
return t;
}
function Lo(e) {
if (e && e.length && e.end) return e.end(e.length - 1);
}
function Do(e, t) {
var i = 0;
if (!e || !e.length) return i;
for (var n = 0; n < e.length; n++) {
var r = e.start(n),
a = e.end(n);
a < t || (i += r < t && t <= a ? a - t : a - r);
}
return i;
}
function Oo(t, e) {
if (!e.preload) return e.duration;
var i = 0;
return (
(e.parts || []).forEach(function (e) {
i += e.duration;
}),
(e.preloadHints || []).forEach(function (e) {
'PART' === e.type && (i += t.partTargetDuration);
}),
i
);
}
function Ro(e) {
return (e.segments || []).reduce(function (i, n, r) {
return (
n.parts
? n.parts.forEach(function (e, t) {
i.push({ duration: e.duration, segmentIndex: r, partIndex: t, part: e, segment: n });
})
: i.push({ duration: n.duration, segmentIndex: r, partIndex: null, segment: n, part: null }),
i
);
}, []);
}
function Mo(e) {
return ((e = e.segments && e.segments.length && e.segments[e.segments.length - 1]) && e.parts) || [];
}
function No(e) {
var t = e.preloadSegment;
if (t) {
(e = t.parts),
(t = (t.preloadHints || []).reduce(function (e, t) {
return e + ('PART' === t.type ? 1 : 0);
}, 0));
return (t += e && e.length ? e.length : 0);
}
}
function Uo(e, t) {
return t.endList ? 0 : e && e.suggestedPresentationDelay ? e.suggestedPresentationDelay : (e = 0 < Mo(t).length) && t.serverControl && t.serverControl.partHoldBack ? t.serverControl.partHoldBack : e && t.partTargetDuration ? 3 * t.partTargetDuration : t.serverControl && t.serverControl.holdBack ? t.serverControl.holdBack : t.targetDuration ? 3 * t.targetDuration : 0;
}
function Bo(e, t, i) {
if ((t = 'undefined' == typeof t ? e.mediaSequence + e.segments.length : t) < e.mediaSequence) return 0;
var n = (function (e, t) {
var i = 0,
n = t - e.mediaSequence,
r = e.segments[n];
if (r) {
if ('undefined' != typeof r.start) return { result: r.start, precise: !0 };
if ('undefined' != typeof r.end) return { result: r.end - r.duration, precise: !0 };
}
for (; n--; ) {
if ('undefined' != typeof (r = e.segments[n]).end) return { result: i + r.end, precise: !0 };
if (((i += Oo(e, r)), 'undefined' != typeof r.start)) return { result: i + r.start, precise: !0 };
}
return { result: i, precise: !1 };
})(e, t);
return n.precise
? n.result
: (t = (function (e, t) {
for (var i, n = 0, r = t - e.mediaSequence; r < e.segments.length; r++) {
if ('undefined' != typeof (i = e.segments[r]).start) return { result: i.start - n, precise: !0 };
if (((n += Oo(e, i)), 'undefined' != typeof i.end)) return { result: i.end - n, precise: !0 };
}
return { result: -1, precise: !1 };
})(e, t)).precise
? t.result
: n.result + i;
}
function Fo(e, t, i) {
if (!e) return 0;
if (('number' != typeof i && (i = 0), 'undefined' == typeof t)) {
if (e.totalDuration) return e.totalDuration;
if (!e.endList) return window.Infinity;
}
return Bo(e, t, i);
}
function jo(e) {
var t = e.defaultDuration,
i = e.durationList,
n = e.startIndex,
r = e.endIndex,
a = 0;
if ((r < n && ((n = (e = [r, n])[0]), (r = e[1])), n < 0)) {
for (var s = n; s < Math.min(0, r); s++) a += t;
n = 0;
}
for (var o = n; o < r; o++) a += i[o].duration;
return a;
}
function Ho(e, t, i, n) {
return e && e.segments ? (e.endList ? Fo(e) : null === t ? null : ((t = Bo(e, e.mediaSequence + e.segments.length, (t = t || 0))), i && (t -= n = 'number' == typeof n ? n : Uo(null, e)), Math.max(0, t))) : null;
}
function qo(e) {
return e.excludeUntil && e.excludeUntil > Date.now();
}
function Vo(e) {
return e.excludeUntil && e.excludeUntil === 1 / 0;
}
function Wo(e) {
var t = qo(e);
return !e.disabled && !t;
}
function zo(e, t) {
return t.attributes && t.attributes[e];
}
function Go(e, t) {
if (1 === e.playlists.length) return !0;
var i = t.attributes.BANDWIDTH || Number.MAX_VALUE;
return (
0 ===
e.playlists.filter(function (e) {
return !!Wo(e) && (e.attributes.BANDWIDTH || 0) < i;
}).length
);
}
function Xo(e, t) {
return !((!e && !t) || (!e && t) || (e && !t)) && (e === t || !(!e.id || !t.id || e.id !== t.id) || !(!e.resolvedUri || !t.resolvedUri || e.resolvedUri !== t.resolvedUri) || !(!e.uri || !t.uri || e.uri !== t.uri));
}
function Ko(e, t) {
var i,
n = (e && e.mediaGroups && e.mediaGroups.AUDIO) || {},
r = !1;
for (i in n) {
for (var a in n[i]) if ((r = t(n[i][a]))) break;
if (r) break;
}
return !!r;
}
function Yo(i) {
if (!i || !i.playlists || !i.playlists.length)
return Ko(i, function (e) {
return (e.playlists && e.playlists.length) || e.uri;
});
for (var e = 0; e < i.playlists.length; e++) {
var t = (function (e) {
var t = i.playlists[e],
e = t.attributes && t.attributes.CODECS;
return (e && e.split(',').every(pr)) ||
Ko(i, function (e) {
return Xo(t, e);
})
? 'continue'
: { v: !1 };
})(e);
if ('continue' !== t && 'object' == typeof t) return t.v;
}
return !0;
}
function Qo(e, t) {
return e + '-' + t;
}
function $o(r, a) {
r.mediaGroups &&
['AUDIO', 'SUBTITLES'].forEach(function (e) {
if (r.mediaGroups[e])
for (var t in r.mediaGroups[e])
for (var i in r.mediaGroups[e][t]) {
var n = r.mediaGroups[e][t][i];
a(n, e, t, i);
}
});
}
function Jo(e) {
var t = e.playlist,
i = e.uri,
e = e.id;
(t.id = e), (t.playlistErrors_ = 0), i && (t.uri = i), (t.attributes = t.attributes || {});
}
function Zo(o, e) {
o.uri = e;
for (var t = 0; t < o.playlists.length; t++) o.playlists[t].uri || (o.playlists[t].uri = 'placeholder-uri-' + t);
var i,
u = Yo(o);
$o(o, function (e, t, i, n) {
var r = 'placeholder-uri-' + t + '-' + i + '-' + n;
if (!e.playlists || !e.playlists.length) {
if (u && 'AUDIO' === t && !e.uri)
for (var a = 0; a < o.playlists.length; a++) {
var s = o.playlists[a];
if (s.attributes && s.attributes.AUDIO && s.attributes.AUDIO === i) return;
}
e.playlists = [g({}, e)];
}
e.playlists.forEach(function (e, t) {
var i = Qo(t, r);
e.uri ? (e.resolvedUri = e.resolvedUri || nl(o.uri, e.uri)) : ((e.uri = 0 === t ? r : i), (e.resolvedUri = e.uri)), (e.id = e.id || i), (e.attributes = e.attributes || {}), (o.playlists[e.id] = e), (o.playlists[e.uri] = e);
});
}),
(function (e) {
for (var t = e.playlists.length; t--; ) {
var i = e.playlists[t];
Jo({ playlist: i, id: Qo(t, i.uri) }), (i.resolvedUri = nl(e.uri, i.uri)), (e.playlists[i.id] = i), (e.playlists[i.uri] = i).attributes.BANDWIDTH || ol.warn('Invalid playlist STREAM-INF detected. Missing BANDWIDTH attribute.');
}
})(o),
$o((i = o), function (e) {
e.uri && (e.resolvedUri = nl(i.uri, e.uri));
});
}
function eu(e, t, i) {
var n = e.slice(),
r = t.slice();
i = i || 0;
for (var a, s = [], o = 0; o < r.length; o++) {
var u = n[o + i],
l = r[o];
u
? ((a = u.map || a),
s.push(
(function (e, t) {
if (!e) return t;
var i = ul(e, t);
if ((e.preloadHints && !t.preloadHints && delete i.preloadHints, e.parts && !t.parts)) delete i.parts;
else if (e.parts && t.parts) for (var n = 0; n < t.parts.length; n++) e.parts && e.parts[n] && (i.parts[n] = ul(e.parts[n], t.parts[n]));
return !e.skipped && t.skipped && (i.skipped = !1), e.preload && !t.preload && (i.preload = !1), i;
})(u, l)
))
: (a && !l.map && (l.map = a), s.push(l));
}
return s;
}
function tu(e, t) {
!e.resolvedUri && e.uri && (e.resolvedUri = nl(t, e.uri)),
e.key && !e.key.resolvedUri && (e.key.resolvedUri = nl(t, e.key.uri)),
e.map && !e.map.resolvedUri && (e.map.resolvedUri = nl(t, e.map.uri)),
e.map && e.map.key && !e.map.key.resolvedUri && (e.map.key.resolvedUri = nl(t, e.map.key.uri)),
e.parts &&
e.parts.length &&
e.parts.forEach(function (e) {
e.resolvedUri || (e.resolvedUri = nl(t, e.uri));
}),
e.preloadHints &&
e.preloadHints.length &&
e.preloadHints.forEach(function (e) {
e.resolvedUri || (e.resolvedUri = nl(t, e.uri));
});
}
function iu(e) {
var t = e.segments || [],
i = e.preloadSegment;
if (i && i.parts && i.parts.length) {
if (i.preloadHints) for (var n = 0; n < i.preloadHints.length; n++) if ('MAP' === i.preloadHints[n].type) return t;
(i.duration = e.targetDuration), (i.preload = !0), t.push(i);
}
return t;
}
function nu(e, t) {
return e === t || (e.segments && t.segments && e.segments.length === t.segments.length && e.endList === t.endList && e.mediaSequence === t.mediaSequence && e.preloadSegment === t.preloadSegment);
}
function ru(e, a, t) {
void 0 === t && (t = nu);
var i = ul(e, {}),
n = i.playlists[a.id];
if (!n) return null;
if (t(n, a)) return null;
a.segments = iu(a);
var r = ul(n, a);
if ((r.preloadSegment && !a.preloadSegment && delete r.preloadSegment, n.segments)) {
if (a.skip) {
a.segments = a.segments || [];
for (var s = 0; s < a.skip.skippedSegments; s++) a.segments.unshift({ skipped: !0 });
}
r.segments = eu(n.segments, a.segments, a.mediaSequence - n.mediaSequence);
}
r.segments.forEach(function (e) {
tu(e, r.resolvedUri);
});
for (var o = 0; o < i.playlists.length; o++) i.playlists[o].id === a.id && (i.playlists[o] = r);
return (
(i.playlists[a.id] = r),
(i.playlists[a.uri] = r),
$o(e, function (e, t, i, n) {
if (e.playlists) for (var r = 0; r < e.playlists.length; r++) a.id === e.playlists[r].id && (e.playlists[r] = a);
}),
i
);
}
function au(e, t) {
var i = e.segments || [],
n = i[i.length - 1],
n = ((i = n && n.parts && n.parts[n.parts.length - 1]) && i.duration) || (n && n.duration);
return t && n ? 1e3 * n : 500 * (e.partTargetDuration || e.targetDuration || 10);
}
function su(e, t, i, n) {
var r = 'arraybuffer' === e.responseType ? e.response : e.responseText;
!t && r && ((e.responseTime = Date.now()), (e.roundTripTime = e.responseTime - e.requestTime), (e.bytesReceived = r.byteLength || r.length), e.bandwidth || (e.bandwidth = Math.floor((e.bytesReceived / e.roundTripTime) * 8 * 1e3))), i.headers && (e.responseHeaders = i.headers), t && 'ETIMEDOUT' === t.code && (e.timedout = !0), n((t = !t && !e.aborted && 200 !== i.statusCode && 206 !== i.statusCode && 0 !== i.statusCode ? new Error('XHR Failed with a response of: ' + (e && (r || e.responseText))) : t), e);
}
function ou() {
function a(e, i) {
e = dl({ timeout: 45e3 }, e);
var t = a.beforeRequest || tr.Vhs.xhr.beforeRequest;
!t || 'function' != typeof t || ((t = t(e)) && (e = t));
var n = (!0 === tr.Vhs.xhr.original ? cl : tr.Vhs.xhr)(e, function (e, t) {
return su(n, e, t, i);
}),
r = n.abort;
return (
(n.abort = function () {
return (n.aborted = !0), r.apply(n, arguments);
}),
(n.uri = e.uri),
(n.requestTime = Date.now()),
n
);
}
return (a.original = !0), a;
}
function uu(e) {
var t,
i = {};
return e.byterange && (i.Range = ((t = e.byterange), (e = t.offset + t.length - 1), 'bytes=' + t.offset + '-' + e)), i;
}
function lu(e, t) {
return (e = e.toString(16)), '00'.substring(0, 2 - e.length) + e + (t % 2 ? ' ' : '');
}
function cu(e) {
return 32 <= e && e < 126 ? String.fromCharCode(e) : '.';
}
function du(i) {
var n = {};
return (
Object.keys(i).forEach(function (e) {
var t = i[e];
ArrayBuffer.isView(t) ? (n[e] = { bytes: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength }) : (n[e] = t);
}),
n
);
}
function hu(e) {
var t = e.byterange || { length: 1 / 0, offset: 0 };
return [t.length, t.offset, e.resolvedUri].join(',');
}
function pu(e) {
return e.resolvedUri;
}
function fu(e) {
for (var t = Array.prototype.slice.call(e), i = '', n = 0; n < t.length / 16; n++)
i +=
t
.slice(16 * n, 16 * n + 16)
.map(lu)
.join('') +
' ' +
t
.slice(16 * n, 16 * n + 16)
.map(cu)
.join('') +
'\n';
return i;
}
function mu(e) {
var t = e.playlist,
i = e.time,
n = void 0 === i ? void 0 : i;
if (!(i = e.callback)) throw new Error('getProgramTime: callback must be provided');
return t && void 0 !== n
? (e = (function (e, t) {
if (!t || !t.segments || 0 === t.segments.length) return null;
for (var i, n = 0, r = 0; r < t.segments.length && !(e <= (n = (i = t.segments[r]).videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationEnd : n + i.duration)); r++);
var a = t.segments[t.segments.length - 1];
if (a.videoTimingInfo && a.videoTimingInfo.transmuxedPresentationEnd < e) return null;
if (n < e) {
if (e > n + 0.25 * a.duration) return null;
i = a;
}
return { segment: i, estimatedStart: i.videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationStart : n - i.duration, type: i.videoTimingInfo ? 'accurate' : 'estimate' };
})(n, t))
? 'estimate' === e.type
? i({ message: 'Accurate programTime could not be determined. Please seek to e.seekTime and try again', seekTime: e.estimatedStart })
: ((t = { mediaSeconds: n }),
(e = (function (e, t) {
if (!t.dateTimeObject) return null;
var i = t.videoTimingInfo.transmuxerPrependedSeconds,
i = e - (t.videoTimingInfo.transmuxedPresentationStart + i);
return new Date(t.dateTimeObject.getTime() + 1e3 * i);
})(n, e.segment)) && (t.programDateTime = e.toISOString()),
i(null, t))
: i({ message: 'valid programTime was not found' })
: i({ message: 'getProgramTime: playlist and time must be provided' });
}
function gu(e) {
var t = e.programTime,
i = e.playlist,
n = e.retryCount,
r = void 0 === n ? 2 : n,
a = e.seekTo,
s = e.pauseAfterSeek,
o = void 0 === s || s,
u = e.tech,
l = e.callback;
if (!l) throw new Error('seekToProgramTime: callback must be provided');
return 'undefined' != typeof t && i && a
? i.endList || u.hasStarted_
? (function (e) {
if (!e.segments || 0 === e.segments.length) return !1;
for (var t = 0; t < e.segments.length; t++) if (!e.segments[t].dateTimeObject) return !1;
return !0;
})(i)
? (n = (function (e, t) {
var i;
try {
i = new Date(e);
} catch (e) {
return null;
}
if (!t || !t.segments || 0 === t.segments.length) return null;
if (i < (r = t.segments[0]).dateTimeObject) return null;
for (var n = 0; n < t.segments.length - 1; n++) {
var r = t.segments[n];
if (i < t.segments[n + 1].dateTimeObject) break;
}
var a,
s = t.segments[t.segments.length - 1],
e = s.dateTimeObject,
a = s.videoTimingInfo ? (a = s.videoTimingInfo).transmuxedPresentationEnd - a.transmuxedPresentationStart - a.transmuxerPrependedSeconds : s.duration + 0.25 * s.duration;
return new Date(e.getTime() + 1e3 * a) < i ? null : { segment: (r = e < i ? s : r), estimatedStart: r.videoTimingInfo ? r.videoTimingInfo.transmuxedPresentationStart : sl.duration(t, t.mediaSequence + t.segments.indexOf(r)), type: r.videoTimingInfo ? 'accurate' : 'estimate' };
})(t, i))
? ((s = n.segment),
(e = (function (e, t) {
var i;
try {
(n = new Date(e)), (i = new Date(t));
} catch (e) {}
var n = n.getTime();
return (i.getTime() - n) / 1e3;
})(s.dateTimeObject, t)),
'estimate' === n.type
? 0 === r
? l({ message: t + ' is not buffered yet. Try again' })
: (a(n.estimatedStart + e),
void u.one('seeked', function () {
gu({ programTime: t, playlist: i, retryCount: r - 1, seekTo: a, pauseAfterSeek: o, tech: u, callback: l });
}))
: ((e = s.start + e),
u.one('seeked', function () {
return l(null, u.currentTime());
}),
o && u.pause(),
void a(e)))
: l({ message: t + ' was not found in the stream' })
: l({ message: 'programDateTime tags must be provided in the manifest ' + i.resolvedUri })
: l({ message: 'player must be playing a live stream to start buffering' })
: l({ message: 'seekToProgramTime: programTime, seekTo and playlist must be provided' });
}
function yu(e, t) {
if (4 === e.readyState) return t();
}
function vu(e, t, r) {
function n(e, t, i, n) {
return t.abort(), (o = !0), r(e, t, i, n);
}
function i(e, t) {
if (!o) {
if (e) return n(e, t, '', s);
var i = t.responseText.substring((s && s.byteLength) || 0, t.responseText.length);
if (
((s = (function () {
for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];
if (
(t = t.filter(function (e) {
return e && (e.byteLength || e.length) && 'string' != typeof e;
})).length <= 1
)
return js(t[0]);
var n = t.reduce(function (e, t, i) {
return e + (t.byteLength || t.length);
}, 0),
r = new Uint8Array(n),
a = 0;
return (
t.forEach(function (e) {
(e = js(e)), r.set(e, a), (a += e.byteLength);
}),
r
);
})(s, qs(i, !0))),
(a = a || Ws(s)),
s.length < 10 || (a && s.length < a + 2))
)
return yu(t, function () {
return n(e, t, '', s);
});
i = So(s);
return ('ts' === i && s.length < 188) || (!i && s.length < 376)
? yu(t, function () {
return n(e, t, '', s);
})
: n(null, t, i, s);
}
}
var a,
s = [],
o = !1,
u = t(
{
uri: e,
beforeSend: function (t) {
t.overrideMimeType('text/plain; charset=x-user-defined'),
t.addEventListener('progress', function (e) {
return e.total, e.loaded, su(t, null, { statusCode: t.status }, i);
});
},
},
function (e, t) {
return su(u, e, t, i);
}
);
return u;
}
function _u(e, t) {
if (!nu(e, t)) return !1;
if (e.sidx && t.sidx && (e.sidx.offset !== t.sidx.offset || e.sidx.length !== t.sidx.length)) return !1;
if ((!e.sidx && t.sidx) || (e.sidx && !t.sidx)) return !1;
if ((e.segments && !t.segments) || (!e.segments && t.segments)) return !1;
if (!e.segments && !t.segments) return !0;
for (var i = 0; i < e.segments.length; i++) {
var n = e.segments[i],
r = t.segments[i];
if (n.uri !== r.uri) return !1;
if (n.byterange || r.byterange) {
(n = n.byterange), (r = r.byterange);
if ((n && !r) || (!n && r)) return !1;
if (n.offset !== r.offset || n.length !== r.length) return !1;
}
}
return !0;
}
function bu(e, t) {
var i,
n = {};
for (i in e) {
var r = e[i].sidx;
if (r) {
var a = ms(r);
if (!t[a]) break;
var s = t[a].sidxInfo;
(s = s), (r = r), (Boolean(!s.map && !r.map) || Boolean(s.map && r.map && s.map.byterange.offset === r.map.byterange.offset && s.map.byterange.length === r.map.byterange.length)) && s.uri === r.uri && s.byterange.offset === r.byterange.offset && s.byterange.length === r.byterange.length && (n[a] = t[a]);
}
}
return n;
}
function Tu(e) {
return (e.on = e.addEventListener), (e.off = e.removeEventListener), e;
}
function wu(i) {
var n = i.transmuxer,
e = i.bytes,
t = i.audioAppendStart,
r = i.gopsToAlignWith,
a = i.remux,
s = i.onData,
o = i.onTrackInfo,
u = i.onAudioTimingInfo,
l = i.onVideoTimingInfo,
c = i.onVideoSegmentTimingInfo,
d = i.onAudioSegmentTimingInfo,
h = i.onId3,
p = i.onCaptions,
f = i.onDone,
m = i.onEndedTimeline,
g = i.onTransmuxerLog,
y = i.isEndOfTimeline,
v = { buffer: [] },
_ = y;
(n.onmessage = function (e) {
var t;
n.currentTransmux === i &&
('data' === e.data.action &&
(function (e, t, i) {
var n = e.data.segment,
r = n.type,
a = n.initSegment,
s = n.captions,
o = n.captionStreams,
u = n.metadata,
l = n.videoFrameDtsTime,
n = n.videoFramePtsTime;
t.buffer.push({ captions: s, captionStreams: o, metadata: u });
(e = e.data.segment.boxes || { data: e.data.segment.data }), (a = { type: r, data: new Uint8Array(e.data, e.data.byteOffset, e.data.byteLength), initSegment: new Uint8Array(a.data, a.byteOffset, a.byteLength) });
'undefined' != typeof l && (a.videoFrameDtsTime = l), 'undefined' != typeof n && (a.videoFramePtsTime = n), i(a);
})(e, v, s),
'trackinfo' === e.data.action && o(e.data.trackInfo),
'gopInfo' === e.data.action && (v.gopInfo = e.data.gopInfo),
'audioTimingInfo' === e.data.action && u(e.data.audioTimingInfo),
'videoTimingInfo' === e.data.action && l(e.data.videoTimingInfo),
'videoSegmentTimingInfo' === e.data.action && c(e.data.videoSegmentTimingInfo),
'audioSegmentTimingInfo' === e.data.action && d(e.data.audioSegmentTimingInfo),
'id3Frame' === e.data.action && h([e.data.id3Frame], e.data.id3Frame.dispatchType),
'caption' === e.data.action && p(e.data.caption),
'endedtimeline' === e.data.action && ((_ = !1), m()),
'log' === e.data.action && g(e.data.log),
'transmuxed' === e.data.type && (_ || ((n.onmessage = null), (e = (t = { transmuxedData: v, callback: f }).transmuxedData), (t = t.callback), (e.buffer = []), t(e), gl(n))));
}),
t && n.postMessage({ action: 'setAudioAppendStart', appendStart: t }),
Array.isArray(r) && n.postMessage({ action: 'alignGopsWith', gopsToAlignWith: r }),
'undefined' != typeof a && n.postMessage({ action: 'setRemux', remux: a }),
e.byteLength && ((r = e instanceof ArrayBuffer ? e : e.buffer), (a = e instanceof ArrayBuffer ? 0 : e.byteOffset), n.postMessage({ action: 'push', data: r, byteOffset: a, byteLength: e.byteLength }, [r])),
y && n.postMessage({ action: 'endTimeline' }),
n.postMessage({ action: 'flush' });
}
function Su(e, t) {
e.postMessage({ action: t }), gl(e);
}
function Eu(e, t) {
if (!t.currentTransmux) return (t.currentTransmux = e), Su(t, e), 0;
t.transmuxQueue.push(Su.bind(null, t, e));
}
function ku(e) {
if (!e.transmuxer.currentTransmux) return (e.transmuxer.currentTransmux = e), void wu(e);
e.transmuxer.transmuxQueue.push(e);
}
function Cu(i) {
var n = i.transmuxer,
r = i.endAction || i.action,
a = i.callback,
e = g({}, i, { endAction: null, transmuxer: null, callback: null }),
t = function e(t) {
t.data.action === r && (n.removeEventListener('message', e), t.data.data && ((t.data.data = new Uint8Array(t.data.data, i.byteOffset || 0, i.byteLength || t.data.data.byteLength)), i.data && (i.data = t.data.data)), a(t.data));
};
n.addEventListener('message', t), i.data ? ((t = i.data instanceof ArrayBuffer), (e.byteOffset = t ? 0 : i.data.byteOffset), (e.byteLength = i.data.byteLength), (t = [t ? i.data : i.data.buffer]), n.postMessage(e, t)) : n.postMessage(e);
}
function Iu(e) {
e.forEach(function (e) {
e.abort();
});
}
function xu(e, t) {
return t.timedout ? { status: t.status, message: 'HLS request timed-out at URL: ' + t.uri, code: bl, xhr: t } : t.aborted ? { status: t.status, message: 'HLS request aborted at URL: ' + t.uri, code: Tl, xhr: t } : e ? { status: t.status, message: 'HLS request errored at URL: ' + t.uri, code: _l, xhr: t } : 'arraybuffer' === t.responseType && 0 === t.response.byteLength ? { status: t.status, message: 'Empty HLS response at URL: ' + t.uri, code: _l, xhr: t } : null;
}
function Au(a, s, o) {
return function (e, t) {
var i = t.response,
e = xu(e, t);
if (e) return o(e, a);
if (16 !== i.byteLength) return o({ status: t.status, message: 'Invalid HLS key at URL: ' + t.uri, code: _l, xhr: t }, a);
for (var i = new DataView(i), n = new Uint32Array([i.getUint32(0), i.getUint32(4), i.getUint32(8), i.getUint32(12)]), r = 0; r < s.length; r++) s[r].bytes = n;
return o(null, a);
};
}
function Pu(i, n) {
var e = So(i.map.bytes);
if ('mp4' !== e) {
var t = i.map.resolvedUri || i.map.uri;
return n({ internal: !0, message: 'Found unsupported ' + (e || 'unknown') + ' container for initialization segment at URL: ' + t, code: _l });
}
Cu({
action: 'probeMp4Tracks',
data: i.map.bytes,
transmuxer: i.transmuxer,
callback: function (e) {
var t = e.tracks,
e = e.data;
return (
(i.map.bytes = e),
t.forEach(function (e) {
(i.map.tracks = i.map.tracks || {}), i.map.tracks[e.type] || ('number' == typeof (i.map.tracks[e.type] = e).id && e.timescale && ((i.map.timescales = i.map.timescales || {}), (i.map.timescales[e.id] = e.timescale)));
}),
n(null)
);
},
});
}
function Lu(e) {
var i = e.segment,
n = e.finishProcessingFn,
r = e.responseType;
return function (e, t) {
e = xu(e, t);
if (e) return n(e, i);
e =
'arraybuffer' !== r && t.responseText
? (function (e) {
for (var t = new Uint8Array(new ArrayBuffer(e.length)), i = 0; i < e.length; i++) t[i] = e.charCodeAt(i);
return t.buffer;
})(t.responseText.substring(i.lastReachedChar || 0))
: t.response;
return (i.stats = { bandwidth: (t = t).bandwidth, bytesReceived: t.bytesReceived || 0, roundTripTime: t.roundTripTime || 0 }), i.key ? (i.encryptedBytes = new Uint8Array(e)) : (i.bytes = new Uint8Array(e)), n(null, i);
};
}
function Du(e) {
var i = e.segment,
t = e.bytes,
n = e.trackInfoFn,
r = e.timingInfoFn,
a = e.videoSegmentTimingInfoFn,
s = e.audioSegmentTimingInfoFn,
o = e.id3Fn,
u = e.captionsFn,
l = e.isEndOfTimeline,
c = e.endedTimelineFn,
d = e.dataFn,
h = e.doneFn,
p = e.onTransmuxerLog,
e = (i.map && i.map.tracks) || {},
f = Boolean(e.audio && e.video),
m = r.bind(null, i, 'audio', 'start'),
g = r.bind(null, i, 'audio', 'end'),
y = r.bind(null, i, 'video', 'start'),
v = r.bind(null, i, 'video', 'end');
Cu({
action: 'probeTs',
transmuxer: i.transmuxer,
data: t,
baseStartTime: i.baseStartTime,
callback: function (e) {
i.bytes = t = e.data;
e = e.result;
e && (n(i, { hasAudio: e.hasAudio, hasVideo: e.hasVideo, isMuxed: f }), (n = null), e.hasAudio && !f && m(e.audioStart), e.hasVideo && y(e.videoStart), (y = m = null)),
ku({
bytes: t,
transmuxer: i.transmuxer,
audioAppendStart: i.audioAppendStart,
gopsToAlignWith: i.gopsToAlignWith,
remux: f,
onData: function (e) {
(e.type = 'combined' === e.type ? 'video' : e.type), d(i, e);
},
onTrackInfo: function (e) {
n && (f && (e.isMuxed = !0), n(i, e));
},
onAudioTimingInfo: function (e) {
m && 'undefined' != typeof e.start && (m(e.start), (m = null)), g && 'undefined' != typeof e.end && g(e.end);
},
onVideoTimingInfo: function (e) {
y && 'undefined' != typeof e.start && (y(e.start), (y = null)), v && 'undefined' != typeof e.end && v(e.end);
},
onVideoSegmentTimingInfo: function (e) {
a(e);
},
onAudioSegmentTimingInfo: function (e) {
s(e);
},
onId3: function (e, t) {
o(i, e, t);
},
onCaptions: function (e) {
u(i, [e]);
},
isEndOfTimeline: l,
onEndedTimeline: function () {
c();
},
onTransmuxerLog: p,
onDone: function (e) {
h && ((e.type = 'combined' === e.type ? 'video' : e.type), h(null, i, e));
},
});
},
});
}
function Ou(e) {
var i = e.segment,
n = e.bytes,
t = e.trackInfoFn,
r = e.timingInfoFn,
a = e.videoSegmentTimingInfoFn,
s = e.audioSegmentTimingInfoFn,
o = e.id3Fn,
u = e.captionsFn,
l = e.isEndOfTimeline,
c = e.endedTimelineFn,
d = e.dataFn,
h = e.doneFn,
p = e.onTransmuxerLog,
f = new Uint8Array(n);
if (0 < Gs(f, ['moof']).length) {
i.isFmp4 = !0;
var m = i.map.tracks,
g = { isFmp4: !0, hasVideo: !!m.video, hasAudio: !!m.audio };
m.audio && m.audio.codec && 'enca' !== m.audio.codec && (g.audioCodec = m.audio.codec), m.video && m.video.codec && 'encv' !== m.video.codec && (g.videoCodec = m.video.codec), m.video && m.audio && (g.isMuxed = !0), t(i, g);
var y = function (e) {
d(i, { data: f, type: g.hasAudio && !g.isMuxed ? 'audio' : 'video' }), e && e.length && u(i, e), h(null, i, {});
};
Cu({
action: 'probeMp4StartTime',
timescales: i.map.timescales,
data: f,
transmuxer: i.transmuxer,
callback: function (e) {
var t = e.data,
e = e.startTime;
(n = t.buffer),
(i.bytes = f = t),
g.hasAudio && !g.isMuxed && r(i, 'audio', 'start', e),
g.hasVideo && r(i, 'video', 'start', e),
m.video && t.byteLength && i.transmuxer
? Cu({
action: 'pushMp4Captions',
endAction: 'mp4Captions',
transmuxer: i.transmuxer,
data: f,
timescales: i.map.timescales,
trackIds: [m.video.id],
callback: function (e) {
(n = e.data.buffer),
(i.bytes = f = e.data),
e.logs.forEach(function (e) {
p(tr.mergeOptions(e, { stream: 'mp4CaptionParser' }));
}),
y(e.captions);
},
})
: y();
},
});
} else if (i.transmuxer) {
if (('undefined' == typeof i.container && (i.container = So(f)), 'ts' !== i.container && 'aac' !== i.container)) return t(i, { hasAudio: !1, hasVideo: !1 }), h(null, i, {}), 0;
Du({ segment: i, bytes: n, trackInfoFn: t, timingInfoFn: r, videoSegmentTimingInfoFn: a, audioSegmentTimingInfoFn: s, id3Fn: o, captionsFn: u, isEndOfTimeline: l, endedTimelineFn: c, dataFn: d, doneFn: h, onTransmuxerLog: p });
} else h(null, i, {});
}
function Ru(e, i) {
var n = e.id,
t = e.key,
r = e.encryptedBytes,
a = e.decryptionWorker,
e = function e(t) {
t.data.source === n && (a.removeEventListener('message', e), (t = t.data.decrypted), i(new Uint8Array(t.bytes, t.byteOffset, t.byteLength)));
};
a.addEventListener('message', e), (e = t.bytes.slice ? t.bytes.slice() : new Uint32Array(Array.prototype.slice.call(t.bytes))), a.postMessage(du({ source: n, encrypted: r, key: e, iv: t.iv }), [r.buffer, e.buffer]);
}
function Mu(e) {
var i = e.activeXhrs,
m = e.decryptionWorker,
g = e.trackInfoFn,
y = e.timingInfoFn,
v = e.videoSegmentTimingInfoFn,
_ = e.audioSegmentTimingInfoFn,
b = e.id3Fn,
T = e.captionsFn,
w = e.isEndOfTimeline,
S = e.endedTimelineFn,
E = e.dataFn,
k = e.doneFn,
C = e.onTransmuxerLog,
n = 0,
r = !1;
return function (e, f) {
if (!r) {
if (e) return (r = !0), Iu(i), k(e, f);
if ((n += 1) === i.length) {
var t = function () {
if (f.encryptedBytes)
return (
(t = (e = { decryptionWorker: m, segment: f, trackInfoFn: g, timingInfoFn: y, videoSegmentTimingInfoFn: v, audioSegmentTimingInfoFn: _, id3Fn: b, captionsFn: T, isEndOfTimeline: w, endedTimelineFn: S, dataFn: E, doneFn: k, onTransmuxerLog: C }).decryptionWorker),
(i = e.segment),
(n = e.trackInfoFn),
(r = e.timingInfoFn),
(a = e.videoSegmentTimingInfoFn),
(s = e.audioSegmentTimingInfoFn),
(o = e.id3Fn),
(u = e.captionsFn),
(l = e.isEndOfTimeline),
(c = e.endedTimelineFn),
(d = e.dataFn),
(h = e.doneFn),
(p = e.onTransmuxerLog),
void Ru({ id: i.requestId, key: i.key, encryptedBytes: i.encryptedBytes, decryptionWorker: t }, function (e) {
(i.bytes = e), Ou({ segment: i, bytes: i.bytes, trackInfoFn: n, timingInfoFn: r, videoSegmentTimingInfoFn: a, audioSegmentTimingInfoFn: s, id3Fn: o, captionsFn: u, isEndOfTimeline: l, endedTimelineFn: c, dataFn: d, doneFn: h, onTransmuxerLog: p });
})
);
var e, t, i, n, r, a, s, o, u, l, c, d, h, p;
Ou({ segment: f, bytes: f.bytes, trackInfoFn: g, timingInfoFn: y, videoSegmentTimingInfoFn: v, audioSegmentTimingInfoFn: _, id3Fn: b, captionsFn: T, isEndOfTimeline: w, endedTimelineFn: S, dataFn: E, doneFn: k, onTransmuxerLog: C });
};
if (((f.endOfAllRequests = Date.now()), f.map && f.map.encryptedBytes && !f.map.bytes))
return Ru({ decryptionWorker: m, id: f.requestId + '-init', encryptedBytes: f.map.encryptedBytes, key: f.map.key }, function (e) {
(f.map.bytes = e),
Pu(f, function (e) {
return e ? (Iu(i), k(e, f)) : void t();
});
});
t();
}
}
};
}
function Nu(e) {
var n = e.segment,
r = e.progressFn;
return (
e.trackInfoFn,
e.timingInfoFn,
e.videoSegmentTimingInfoFn,
e.audioSegmentTimingInfoFn,
e.id3Fn,
e.captionsFn,
e.isEndOfTimeline,
e.endedTimelineFn,
e.dataFn,
function (e) {
var t,
i = e.target;
if (!i.aborted) return (n.stats = tr.mergeOptions(n.stats, ((i = (t = e).target), ((i = { bandwidth: 1 / 0, bytesReceived: 0, roundTripTime: Date.now() - i.requestTime || 0 }).bytesReceived = t.loaded), (i.bandwidth = Math.floor((i.bytesReceived / i.roundTripTime) * 8 * 1e3)), i))), !n.stats.firstBytesReceivedAt && n.stats.bytesReceived && (n.stats.firstBytesReceivedAt = Date.now()), r(e, n);
}
);
}
function Uu(e) {
var t,
i,
n,
r = e.xhr,
a = e.xhrOptions,
s = e.decryptionWorker,
o = e.segment,
u = e.abortFn,
l = e.progressFn,
c = e.trackInfoFn,
d = e.timingInfoFn,
h = e.videoSegmentTimingInfoFn,
p = e.audioSegmentTimingInfoFn,
f = e.id3Fn,
m = e.captionsFn,
g = e.isEndOfTimeline,
y = e.endedTimelineFn,
v = e.dataFn,
_ = e.doneFn,
e = e.onTransmuxerLog,
b = [],
_ = Mu({ activeXhrs: b, decryptionWorker: s, trackInfoFn: c, timingInfoFn: d, videoSegmentTimingInfoFn: h, audioSegmentTimingInfoFn: p, id3Fn: f, captionsFn: m, isEndOfTimeline: g, endedTimelineFn: y, dataFn: v, doneFn: _, onTransmuxerLog: e });
o.key && !o.key.bytes && ((e = [o.key]), o.map && !o.map.bytes && o.map.key && o.map.key.resolvedUri === o.key.resolvedUri && e.push(o.map.key), (e = r(tr.mergeOptions(a, { uri: o.key.resolvedUri, responseType: 'arraybuffer' }), Au(o, e, _))), b.push(e)),
o.map &&
!o.map.bytes &&
(!o.map.key || (o.key && o.key.resolvedUri === o.map.key.resolvedUri) || ((t = r(tr.mergeOptions(a, { uri: o.map.key.resolvedUri, responseType: 'arraybuffer' }), Au(o, [o.map.key], _))), b.push(t)),
(t = r(
tr.mergeOptions(a, { uri: o.map.resolvedUri, responseType: 'arraybuffer', headers: uu(o.map) }),
((i = (t = { segment: o, finishProcessingFn: _ }).segment),
(n = t.finishProcessingFn),
function (e, t) {
e = xu(e, t);
if (e) return n(e, i);
e = new Uint8Array(t.response);
if (i.map.key) return (i.map.encryptedBytes = e), n(null, i);
(i.map.bytes = e),
Pu(i, function (e) {
return e ? ((e.xhr = t), (e.status = t.status), n(e, i)) : void n(null, i);
});
})
)),
b.push(t)),
(a = tr.mergeOptions(a, { uri: (o.part && o.part.resolvedUri) || o.resolvedUri, responseType: 'arraybuffer', headers: uu(o) })),
(a = r(a, Lu({ segment: o, finishProcessingFn: _, responseType: a.responseType }))).addEventListener('progress', Nu({ segment: o, progressFn: l, trackInfoFn: c, timingInfoFn: d, videoSegmentTimingInfoFn: h, audioSegmentTimingInfoFn: p, id3Fn: f, captionsFn: m, isEndOfTimeline: g, endedTimelineFn: y, dataFn: v })),
b.push(a);
var T = {};
return (
b.forEach(function (e) {
var t, i;
e.addEventListener(
'loadend',
((t = (e = { loadendState: T, abortFn: u }).loadendState),
(i = e.abortFn),
function (e) {
e.target.aborted && i && !t.calledAbortFn && (i(), (t.calledAbortFn = !0));
})
);
}),
function () {
return Iu(b);
}
);
}
function Bu(e, t) {
return (t = t.attributes || {}), e && e.mediaGroups && e.mediaGroups.AUDIO && t.AUDIO && e.mediaGroups.AUDIO[t.AUDIO];
}
function Fu(e) {
var n = {};
return (
e.forEach(function (e) {
var t = e.mediaType,
i = e.type,
e = e.details;
(n[t] = n[t] || []), n[t].push(dr('' + i + e));
}),
Object.keys(n).forEach(function (e) {
return 1 < n[e].length ? (wl('multiple ' + e + ' codecs found as attributes: ' + n[e].join(', ') + '. Setting playlist codecs to null so that we wait for mux.js to probe segments for real codecs.'), void (n[e] = null)) : void (n[e] = n[e][0]);
}),
n
);
}
function ju(e) {
var t = 0;
return e.audio && t++, e.video && t++, t;
}
function Hu(e, t) {
var i,
n = t.attributes || {},
r = Fu(
(function (e) {
e = e.attributes || {};
if (e.CODECS) return hr(e.CODECS);
})(t) || []
);
return (
Bu(e, t) &&
!r.audio &&
!(function (e, t) {
if (!Bu(e, t)) return !0;
var i,
t = t.attributes || {},
n = e.mediaGroups.AUDIO[t.AUDIO];
for (i in n) if (!n[i].uri && !n[i].playlists) return !0;
return !1;
})(e, t) &&
(i = Fu(
(function (e, t) {
if (!e.mediaGroups.AUDIO || !t) return null;
var i,
n = e.mediaGroups.AUDIO[t];
if (!n) return null;
for (i in n) {
var r = n[i];
if (r.default && r.playlists) return hr(r.playlists[0].attributes.CODECS);
}
return null;
})(e, n.AUDIO) || []
)).audio &&
(r.audio = i.audio),
r
);
}
function qu(e) {
if (e && e.playlist) {
var t = e.playlist;
return JSON.stringify({ id: t.id, bandwidth: e.bandwidth, width: e.width, height: e.height, codecs: (t.attributes && t.attributes.CODECS) || '' });
}
}
function Vu(e, t) {
return (e = e && window.getComputedStyle(e)) ? e[t] : '';
}
function Wu(e, n) {
var r = e.slice();
e.sort(function (e, t) {
var i = n(e, t);
return 0 === i ? r.indexOf(e) - r.indexOf(t) : i;
});
}
function zu(e, t) {
var i, n;
return (i = (i = e.attributes.BANDWIDTH ? e.attributes.BANDWIDTH : i) || window.Number.MAX_VALUE) - (n = (n = t.attributes.BANDWIDTH ? t.attributes.BANDWIDTH : n) || window.Number.MAX_VALUE);
}
function Gu(e, t, i, n, r, a) {
if (e) {
var s = { bandwidth: t, width: i, height: n, limitRenditionByPlayerDimensions: r },
o = e.playlists;
sl.isAudioOnly(e) && ((o = a.getAudioTrackPlaylists_()), (s.audioOnly = !0));
var u = o.map(function (e) {
var t = e.attributes && e.attributes.RESOLUTION && e.attributes.RESOLUTION.width,
i = e.attributes && e.attributes.RESOLUTION && e.attributes.RESOLUTION.height,
n = e.attributes && e.attributes.BANDWIDTH;
return { bandwidth: n || window.Number.MAX_VALUE, width: t, height: i, playlist: e };
});
Wu(u, function (e, t) {
return e.bandwidth - t.bandwidth;
});
var l = (u = u.filter(function (e) {
return !sl.isIncompatible(e.playlist);
})).filter(function (e) {
return sl.isEnabled(e.playlist);
}),
e = (l = !l.length
? u.filter(function (e) {
return !sl.isDisabled(e.playlist);
})
: l).filter(function (e) {
return e.bandwidth * fl.BANDWIDTH_VARIANCE < t;
}),
c = e[e.length - 1],
o = e.filter(function (e) {
return e.bandwidth === c.bandwidth;
})[0];
if (!1 === r) {
var d = o || l[0] || u[0];
if (d && d.playlist) {
r = o ? 'bandwidthBestRep' : 'sortedPlaylistReps';
return l[0] && (r = 'enabledPlaylistReps'), Sl('choosing ' + qu(d) + ' using ' + r + ' with options', s), d.playlist;
}
return Sl('could not choose a playlist with options', s), null;
}
d = e.filter(function (e) {
return e.width && e.height;
});
Wu(d, function (e, t) {
return e.width - t.width;
});
var h,
p,
f,
e = d.filter(function (e) {
return e.width === i && e.height === n;
}),
c = e[e.length - 1],
e = e.filter(function (e) {
return e.bandwidth === c.bandwidth;
})[0];
e ||
((p = (h = d.filter(function (e) {
return e.width > i || e.height > n;
})).filter(function (e) {
return e.width === h[0].width && e.height === h[0].height;
})),
(c = p[p.length - 1]),
(p = p.filter(function (e) {
return e.bandwidth === c.bandwidth;
})[0])),
a.experimentalLeastPixelDiffSelector &&
((m = d.map(function (e) {
return (e.pixelDiff = Math.abs(e.width - i) + Math.abs(e.height - n)), e;
})),
Wu(m, function (e, t) {
return e.pixelDiff === t.pixelDiff ? t.bandwidth - e.bandwidth : e.pixelDiff - t.pixelDiff;
}),
(f = m[0]));
var m = f || p || e || o || l[0] || u[0];
if (m && m.playlist) {
u = 'sortedPlaylistReps';
return f ? (u = 'leastPixelDiffRep') : p ? (u = 'resolutionPlusOneRep') : e ? (u = 'resolutionBestRep') : o ? (u = 'bandwidthBestRep') : l[0] && (u = 'enabledPlaylistReps'), Sl('choosing ' + qu(m) + ' using ' + u + ' with options', s), m.playlist;
}
return Sl('could not choose a playlist with options', s), null;
}
}
function Xu(e) {
var t = e.inbandTextTracks,
i = e.metadataArray,
r = e.timestampOffset,
n = e.videoDuration;
if (i) {
var a = window.WebKitDataCue || window.VTTCue,
s = t.metadataTrack_;
if (
s &&
(i.forEach(function (e) {
var n = e.cueTime + r;
!('number' != typeof n || window.isNaN(n) || n < 0) &&
n < 1 / 0 &&
e.frames.forEach(function (e) {
var t,
i = new a(n, n, e.value || e.url || e.data || '');
(i.frame = e),
(i.value = e),
(t = i),
Object.defineProperties(t.frame, {
id: {
get: function () {
return tr.log.warn('cue.frame.id is deprecated. Use cue.value.key instead.'), t.value.key;
},
},
value: {
get: function () {
return tr.log.warn('cue.frame.value is deprecated. Use cue.value.data instead.'), t.value.data;
},
},
privateData: {
get: function () {
return tr.log.warn('cue.frame.privateData is deprecated. Use cue.value.data instead.'), t.value.data;
},
},
}),
s.addCue(i);
});
}),
s.cues && s.cues.length)
) {
for (var o = s.cues, u = [], l = 0; l < o.length; l++) o[l] && u.push(o[l]);
var c = u.reduce(function (e, t) {
var i = e[t.startTime] || [];
return i.push(t), (e[t.startTime] = i), e;
}, {}),
d = Object.keys(c).sort(function (e, t) {
return Number(e) - Number(t);
});
d.forEach(function (e, t) {
var e = c[e],
i = Number(d[t + 1]) || n;
e.forEach(function (e) {
e.endTime = i;
});
});
}
}
}
function Ku(e, t, i) {
var n, r;
if (i && i.cues) for (n = i.cues.length; n--; ) (r = i.cues[n]).startTime >= e && r.endTime <= t && i.removeCue(r);
}
function Yu(e) {
return 'number' == typeof e && isFinite(e);
}
function Qu(e) {
var t = e.startOfSegment,
i = e.duration,
n = e.segment,
r = e.part,
a = e.playlist,
s = a.mediaSequence,
o = a.id,
u = a.segments,
l = e.mediaIndex,
c = e.partIndex,
d = e.timeline,
h = (void 0 === u ? [] : u).length - 1,
p = 'mediaIndex/partIndex increment';
return e.getMediaInfoForTime ? (p = 'getMediaInfoForTime (' + e.getMediaInfoForTime + ')') : e.isSyncRequest && (p = 'getSyncSegmentCandidate (isSyncRequest)'), e.independent && (p += ' with independent ' + e.independent), (a = 'number' == typeof c), (u = e.segment.uri ? 'segment' : 'pre-segment'), (e = a ? No({ preloadSegment: n }) - 1 : 0), u + ' [' + (s + l) + '/' + (s + h) + ']' + (a ? ' part [' + c + '/' + e + ']' : '') + ' segment start/end [' + n.start + ' => ' + n.end + ']' + (a ? ' part start/end [' + r.start + ' => ' + r.end + ']' : '') + ' startOfSegment [' + t + '] duration [' + i + '] timeline [' + d + '] selected by [' + p + '] playlist [' + o + ']';
}
function $u(e) {
return e + 'TimingInfo';
}
function Ju(e) {
var t = e.timelineChangeController,
i = e.currentTimeline,
n = e.segmentTimeline,
r = e.loaderType,
e = e.audioDisabled;
if (i !== n) {
if ('audio' === r) {
i = t.lastTimelineChange({ type: 'main' });
return !i || i.to !== n;
}
if ('main' === r && e) {
t = t.pendingTimelineChange({ type: 'audio' });
return t && t.to === n ? !1 : !0;
}
}
}
function Zu(e) {
var t = e.segmentDuration,
e = e.maxDuration;
return !!t && Math.round(t) > e + rl;
}
function el(e, t) {
if ('hls' !== t) return null;
var i = (function (e, t) {
(e = e && 'number' == typeof e.start && 'number' == typeof e.end ? e.end - e.start : 0), (t = t && 'number' == typeof t.start && 'number' == typeof t.end ? t.end - t.start : 0);
return Math.max(e, t);
})(e.audioTimingInfo, e.videoTimingInfo);
if (!i) return null;
var n = e.playlist.targetDuration,
r = Zu({ segmentDuration: i, maxDuration: 2 * n }),
t = Zu({ segmentDuration: i, maxDuration: n }),
n = 'Segment with index ' + e.mediaIndex + ' from playlist ' + e.playlist.id + ' has a duration of ' + i + ' when the reported duration is ' + e.duration + ' and the target duration is ' + n + '. For HLS content, a duration in excess of the target duration may result in playback issues. See the HLS specification section on EXT-X-TARGETDURATION for more details: https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.3.1';
return r || t ? { severity: r ? 'warn' : 'info', message: n } : null;
}
var tl = To,
il = 9e4,
nl = function (e, t) {
if (/^[a-z]+:/i.test(t)) return t;
/^data:/.test(e) && (e = (window.location && window.location.href) || '');
var i = 'function' == typeof window.URL,
n = /^\/\//.test(e),
r = !window.location && !/\/\//i.test(e);
if ((i ? (e = new window.URL(e, window.location || nr)) : /\/\//i.test(e) || (e = ir.buildAbsoluteURL((window.location && window.location.href) || '', e)), i)) {
i = new URL(t, e);
return r ? i.href.slice(nr.length) : n ? i.href.slice(i.protocol.length) : i.href;
}
return ir.buildAbsoluteURL(e, t);
},
rl = 1 / 30,
al = tr.createTimeRange,
sl = {
liveEdgeDelay: Uo,
duration: Fo,
seekable: function (e, t, i) {
var n = t || 0,
i = Ho(e, t, !0, i);
return null === i ? al() : al(n, i);
},
getMediaInfoForTime: function (e) {
for (var t = e.playlist, i = e.currentTime, n = e.startingSegmentIndex, r = e.startingPartIndex, a = e.startTime, s = e.experimentalExactManifestTimings, o = i - a, u = Ro(t), l = 0, c = 0; c < u.length; c++) {
var d = u[c];
if (n === d.segmentIndex && ('number' != typeof r || 'number' != typeof d.partIndex || r === d.partIndex)) {
l = c;
break;
}
}
if (o < 0) {
if (0 < l)
for (var h = l - 1; 0 <= h; h--) {
var p = u[h];
if (((o += p.duration), s)) {
if (o < 0) continue;
} else if (o + rl <= 0) continue;
return { partIndex: p.partIndex, segmentIndex: p.segmentIndex, startTime: a - jo({ defaultDuration: t.targetDuration, durationList: u, startIndex: l, endIndex: h }) };
}
return { partIndex: (u[0] && u[0].partIndex) || null, segmentIndex: (u[0] && u[0].segmentIndex) || 0, startTime: i };
}
if (l < 0) {
for (var f = l; f < 0; f++) if ((o -= t.targetDuration) < 0) return { partIndex: (u[0] && u[0].partIndex) || null, segmentIndex: (u[0] && u[0].segmentIndex) || 0, startTime: i };
l = 0;
}
for (var m = l; m < u.length; m++) {
var g = u[m];
if (((o -= g.duration), s)) {
if (0 < o) continue;
} else if (0 <= o - rl) continue;
return { partIndex: g.partIndex, segmentIndex: g.segmentIndex, startTime: a + jo({ defaultDuration: t.targetDuration, durationList: u, startIndex: l, endIndex: m }) };
}
return { segmentIndex: u[u.length - 1].segmentIndex, partIndex: u[u.length - 1].partIndex, startTime: i };
},
isEnabled: Wo,
isDisabled: function (e) {
return e.disabled;
},
isBlacklisted: qo,
isIncompatible: Vo,
playlistEnd: Ho,
isAes: function (e) {
for (var t = 0; t < e.segments.length; t++) if (e.segments[t].key) return !0;
return !1;
},
hasAttribute: zo,
estimateSegmentRequestTime: function (e, t, i, n) {
return zo('BANDWIDTH', i) ? (e * i.attributes.BANDWIDTH - 8 * (n = void 0 === n ? 0 : n)) / t : NaN;
},
isLowestEnabledRendition: Go,
isAudioOnly: Yo,
playlistMatch: Xo,
segmentDurationWithParts: Oo,
},
ol = tr.log,
ul = tr.mergeOptions,
W = tr.EventTarget,
ll = (function (a) {
function e(e, t, i) {
var n;
if ((void 0 === i && (i = {}), (n = a.call(this) || this), !e)) throw new Error('A non-empty playlist URL or object is required');
n.logger_ = ko('PlaylistLoader');
var r = i.withCredentials,
r = void 0 !== r && r,
i = i.handleManifestRedirects,
i = void 0 !== i && i;
(n.src = e), (n.vhs_ = t), (n.withCredentials = r), (n.handleManifestRedirects = i);
t = t.options_;
return (n.customTagParsers = (t && t.customTagParsers) || []), (n.customTagMappers = (t && t.customTagMappers) || []), (n.experimentalLLHLS = (t && t.experimentalLLHLS) || !1), tr.browser.IE_VERSION && (n.experimentalLLHLS = !1), (n.state = 'HAVE_NOTHING'), (n.handleMediaupdatetimeout_ = n.handleMediaupdatetimeout_.bind(pt(n))), n.on('mediaupdatetimeout', n.handleMediaupdatetimeout_), n;
}
ft(e, a);
var t = e.prototype;
return (
(t.handleMediaupdatetimeout_ = function () {
var e,
t,
i = this;
'HAVE_METADATA' === this.state &&
((e = this.media()),
(t = nl(this.master.uri, e.uri)),
this.experimentalLLHLS &&
(t = (function (e, t) {
if (t.endList || !t.serverControl) return e;
var i,
n,
r,
a,
s = {};
return (
t.serverControl.canBlockReload && ((r = t.preloadSegment), (i = t.mediaSequence + t.segments.length), r && ((n = r.parts || []), -1 < (r = No(t) - 1) && r != n.length - 1 && (s._HLS_part = r), (-1 < r || n.length) && i--), (s._HLS_msn = i)),
t.serverControl && t.serverControl.canSkipUntil && (s._HLS_skip = t.serverControl.canSkipDateranges ? 'v2' : 'YES'),
Object.keys(s).length &&
((a = new window.URL(e)),
['_HLS_skip', '_HLS_msn', '_HLS_part'].forEach(function (e) {
s.hasOwnProperty(e) && a.searchParams.set(e, s[e]);
}),
(e = a.toString())),
e
);
})(t, e)),
(this.state = 'HAVE_CURRENT_METADATA'),
(this.request = this.vhs_.xhr({ uri: t, withCredentials: this.withCredentials }, function (e, t) {
if (i.request) return e ? i.playlistRequestError(i.request, i.media(), 'HAVE_METADATA') : void i.haveMetadata({ playlistString: i.request.responseText, url: i.media().uri, id: i.media().id });
})));
}),
(t.playlistRequestError = function (e, t, i) {
var n = t.uri,
t = t.id;
(this.request = null), i && (this.state = i), (this.error = { playlist: this.master.playlists[t], status: e.status, message: 'HLS playlist request error at URL: ' + n + '.', responseText: e.responseText, code: 500 <= e.status ? 4 : 2 }), this.trigger('error');
}),
(t.parseManifest_ = function (e) {
var t = this,
i = e.url;
return (function (e) {
var t = e.onwarn,
i = e.oninfo,
n = e.manifestString,
r = e.customTagParsers,
a = void 0 === r ? [] : r,
r = e.customTagMappers,
r = void 0 === r ? [] : r,
e = e.experimentalLLHLS,
s = new wr();
t && s.on('warn', t),
i && s.on('info', i),
a.forEach(function (e) {
return s.addParser(e);
}),
r.forEach(function (e) {
return s.addTagMapper(e);
}),
s.push(n),
s.end();
var o = s.manifest;
e ||
(['preloadSegment', 'skip', 'serverControl', 'renditionReports', 'partInf', 'partTargetDuration'].forEach(function (e) {
o.hasOwnProperty(e) && delete o[e];
}),
o.segments &&
o.segments.forEach(function (t) {
['parts', 'preloadHints'].forEach(function (e) {
t.hasOwnProperty(e) && delete t[e];
});
})),
o.targetDuration ||
((u = 10),
o.segments &&
o.segments.length &&
(u = o.segments.reduce(function (e, t) {
return Math.max(e, t.duration);
}, 0)),
t && t('manifest has no targetDuration defaulting to ' + u),
(o.targetDuration = u));
var u = Mo(o);
return (
u.length &&
!o.partTargetDuration &&
((u = u.reduce(function (e, t) {
return Math.max(e, t.duration);
}, 0)),
t && (t('manifest has no partTargetDuration defaulting to ' + u), ol.error('LL-HLS manifest has parts but lacks required #EXT-X-PART-INF:PART-TARGET value. See https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-09#section-4.4.3.7. Playback is not guaranteed.')),
(o.partTargetDuration = u)),
o
);
})({
onwarn: function (e) {
e = e.message;
return t.logger_('m3u8-parser warn for ' + i + ': ' + e);
},
oninfo: function (e) {
e = e.message;
return t.logger_('m3u8-parser info for ' + i + ': ' + e);
},
manifestString: e.manifestString,
customTagParsers: this.customTagParsers,
customTagMappers: this.customTagMappers,
experimentalLLHLS: this.experimentalLLHLS,
});
}),
(t.haveMetadata = function (e) {
var t = e.playlistString,
i = e.playlistObject,
n = e.url,
e = e.id;
(this.request = null), (this.state = 'HAVE_METADATA');
t = i || this.parseManifest_({ url: n, manifestString: t });
(t.lastRequest = Date.now()), Jo({ playlist: t, uri: n, id: e });
n = ru(this.master, t);
(this.targetDuration = t.partTargetDuration || t.targetDuration), (this.pendingMedia_ = null), n ? ((this.master = n), (this.media_ = this.master.playlists[e])) : this.trigger('playlistunchanged'), this.updateMediaUpdateTimeout_(au(this.media(), !!n)), this.trigger('loadedplaylist');
}),
(t.dispose = function () {
this.trigger('dispose'), this.stopRequest(), window.clearTimeout(this.mediaUpdateTimeout), window.clearTimeout(this.finalRenditionTimeout), this.off();
}),
(t.stopRequest = function () {
var e;
this.request && ((e = this.request), (this.request = null), (e.onreadystatechange = null), e.abort());
}),
(t.media = function (i, e) {
var n = this;
if (!i) return this.media_;
if ('HAVE_NOTHING' === this.state) throw new Error('Cannot switch media playlist from ' + this.state);
if ('string' == typeof i) {
if (!this.master.playlists[i]) throw new Error('Unknown playlist URI: ' + i);
i = this.master.playlists[i];
}
if ((window.clearTimeout(this.finalRenditionTimeout), e)) {
var t = ((i.partTargetDuration || i.targetDuration) / 2) * 1e3 || 5e3;
this.finalRenditionTimeout = window.setTimeout(this.media.bind(this, i, !1), t);
} else {
var r = this.state,
e = !this.media_ || i.id !== this.media_.id,
t = this.master.playlists[i.id];
if ((t && t.endList) || (i.endList && i.segments.length)) return this.request && ((this.request.onreadystatechange = null), this.request.abort(), (this.request = null)), (this.state = 'HAVE_METADATA'), (this.media_ = i), void (e && (this.trigger('mediachanging'), 'HAVE_MASTER' === r ? this.trigger('loadedmetadata') : this.trigger('mediachange')));
if ((this.updateMediaUpdateTimeout_(au(i, !0)), e)) {
if (((this.state = 'SWITCHING_MEDIA'), this.request)) {
if (i.resolvedUri === this.request.url) return;
(this.request.onreadystatechange = null), this.request.abort(), (this.request = null);
}
this.media_ && this.trigger('mediachanging'),
(this.pendingMedia_ = i),
(this.request = this.vhs_.xhr({ uri: i.resolvedUri, withCredentials: this.withCredentials }, function (e, t) {
if (n.request) {
if (((i.lastRequest = Date.now()), (i.resolvedUri = Eo(n.handleManifestRedirects, i.resolvedUri, t)), e)) return n.playlistRequestError(n.request, i, r);
n.haveMetadata({ playlistString: t.responseText, url: i.uri, id: i.id }), 'HAVE_MASTER' === r ? n.trigger('loadedmetadata') : n.trigger('mediachange');
}
}));
}
}
}),
(t.pause = function () {
this.mediaUpdateTimeout && (window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null)), this.stopRequest(), 'HAVE_NOTHING' === this.state && (this.started = !1), 'SWITCHING_MEDIA' === this.state ? (this.media_ ? (this.state = 'HAVE_METADATA') : (this.state = 'HAVE_MASTER')) : 'HAVE_CURRENT_METADATA' === this.state && (this.state = 'HAVE_METADATA');
}),
(t.load = function (e) {
var t = this;
this.mediaUpdateTimeout && (window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null));
var i = this.media();
e
? ((e = i ? ((i.partTargetDuration || i.targetDuration) / 2) * 1e3 : 5e3),
(this.mediaUpdateTimeout = window.setTimeout(function () {
(t.mediaUpdateTimeout = null), t.load();
}, e)))
: this.started
? i && !i.endList
? this.trigger('mediaupdatetimeout')
: this.trigger('loadedplaylist')
: this.start();
}),
(t.updateMediaUpdateTimeout_ = function (e) {
var t = this;
this.mediaUpdateTimeout && (window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null)),
this.media() &&
!this.media().endList &&
(this.mediaUpdateTimeout = window.setTimeout(function () {
(t.mediaUpdateTimeout = null), t.trigger('mediaupdatetimeout'), t.updateMediaUpdateTimeout_(e);
}, e));
}),
(t.start = function () {
var i = this;
if (((this.started = !0), 'object' == typeof this.src))
return (
this.src.uri || (this.src.uri = window.location.href),
(this.src.resolvedUri = this.src.uri),
void setTimeout(function () {
i.setupInitialPlaylist(i.src);
}, 0)
);
this.request = this.vhs_.xhr({ uri: this.src, withCredentials: this.withCredentials }, function (e, t) {
if (i.request) {
if (((i.request = null), e)) return (i.error = { status: t.status, message: 'HLS playlist request error at URL: ' + i.src + '.', responseText: t.responseText, code: 2 }), 'HAVE_NOTHING' === i.state && (i.started = !1), i.trigger('error');
i.src = Eo(i.handleManifestRedirects, i.src, t);
t = i.parseManifest_({ manifestString: t.responseText, url: i.src });
i.setupInitialPlaylist(t);
}
});
}),
(t.srcUri = function () {
return 'string' == typeof this.src ? this.src : this.src.uri;
}),
(t.setupInitialPlaylist = function (e) {
if (((this.state = 'HAVE_MASTER'), e.playlists))
return (
(this.master = e),
Zo(this.master, this.srcUri()),
e.playlists.forEach(function (t) {
(t.segments = iu(t)),
t.segments.forEach(function (e) {
tu(e, t.resolvedUri);
});
}),
this.trigger('loadedplaylist'),
void (this.request || this.media(this.master.playlists[0]))
);
var t,
i,
n,
r = this.srcUri() || window.location.href;
(this.master = ((i = Qo(0, (t = r))), ((n = { mediaGroups: { AUDIO: {}, VIDEO: {}, 'CLOSED-CAPTIONS': {}, SUBTITLES: {} }, uri: window.location.href, resolvedUri: window.location.href, playlists: [{ uri: t, id: i, resolvedUri: t, attributes: {} }] }).playlists[i] = n.playlists[0]), (n.playlists[t] = n.playlists[0]), n)), this.haveMetadata({ playlistObject: e, url: r, id: this.master.playlists[0].id }), this.trigger('loadedmetadata');
}),
e
);
})(W),
cl = tr.xhr,
dl = tr.mergeOptions,
Gt = Object.freeze({
__proto__: null,
createTransferableMessage: du,
initSegmentId: hu,
segmentKeyId: pu,
hexDump: fu,
tagDump: function (e) {
e = e.bytes;
return fu(e);
},
textRanges: function (e) {
for (var t, i, n = '', r = 0; r < e.length; r++) n += ((i = r), (t = e).start(i) + '-' + t.end(i) + ' ');
return n;
},
}),
rr = tr.EventTarget,
hl = tr.mergeOptions,
pl = (function (a) {
function e(e, t, i, n) {
var r;
void 0 === i && (i = {}), ((r = a.call(this) || this).masterPlaylistLoader_ = n || pt(r)), n || (r.isMaster_ = !0);
(n = i.withCredentials), (n = void 0 !== n && n), (i = i.handleManifestRedirects), (i = void 0 !== i && i);
if (((r.vhs_ = t), (r.withCredentials = n), (r.handleManifestRedirects = i), !e)) throw new Error('A non-empty playlist URL or object is required');
return (
r.on('minimumUpdatePeriod', function () {
r.refreshXml_();
}),
r.on('mediaupdatetimeout', function () {
r.refreshMedia_(r.media().id);
}),
(r.state = 'HAVE_NOTHING'),
(r.loadedPlaylists_ = {}),
(r.logger_ = ko('DashPlaylistLoader')),
r.isMaster_ ? ((r.masterPlaylistLoader_.srcUrl = e), (r.masterPlaylistLoader_.sidxMapping_ = {})) : (r.childPlaylist_ = e),
r
);
}
ft(e, a);
var t = e.prototype;
return (
(t.requestErrored_ = function (e, t, i) {
return !this.request || ((this.request = null), e ? ((this.error = 'object' != typeof e || e instanceof Error ? { status: t.status, message: 'DASH request error at URL: ' + t.uri, response: t.response, code: 2 } : e), i && (this.state = i), this.trigger('error'), !0) : void 0);
}),
(t.addSidxSegments_ = function (a, n, r) {
var s,
o,
u = this,
l = a.sidx && ms(a.sidx);
a.sidx && l && !this.masterPlaylistLoader_.sidxMapping_[l]
? ((s = Eo(this.handleManifestRedirects, a.sidx.resolvedUri)),
(o = function (e, t) {
if (!u.requestErrored_(e, t, n)) {
var i,
e = u.masterPlaylistLoader_.sidxMapping_;
try {
i = co(js(t.response).subarray(8));
} catch (e) {
return void u.requestErrored_(e, t, n);
}
return (e[l] = { sidxInfo: a.sidx, sidx: i }), fs(a, i, a.sidx.resolvedUri), r(!0);
}
}),
(this.request = vu(s, this.vhs_.xhr, function (e, t, i, n) {
if (e) return o(e, t);
if (!i || 'mp4' !== i) return o({ status: t.status, message: 'Unsupported ' + (i || 'unknown') + ' container type for sidx segment at URL: ' + s, response: '', playlist: a, internal: !0, blacklistDuration: 1 / 0, code: 2 }, t);
var r = a.sidx.byterange,
i = r.offset,
r = r.length;
if (n.length >= r + i) return o(e, { response: n.subarray(i, i + r), status: t.status, uri: t.uri });
u.request = u.vhs_.xhr({ uri: s, responseType: 'arraybuffer', headers: uu({ byterange: a.sidx.byterange }) }, o);
})))
: (this.mediaRequest_ = window.setTimeout(function () {
return r(!1);
}, 0));
}),
(t.dispose = function () {
this.trigger('dispose'), this.stopRequest(), (this.loadedPlaylists_ = {}), window.clearTimeout(this.minimumUpdatePeriodTimeout_), window.clearTimeout(this.mediaRequest_), window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null), (this.mediaRequest_ = null), (this.minimumUpdatePeriodTimeout_ = null), this.masterPlaylistLoader_.createMupOnMedia_ && (this.off('loadedmetadata', this.masterPlaylistLoader_.createMupOnMedia_), (this.masterPlaylistLoader_.createMupOnMedia_ = null)), this.off();
}),
(t.hasPendingRequest = function () {
return this.request || this.mediaRequest_;
}),
(t.stopRequest = function () {
var e;
this.request && ((e = this.request), (this.request = null), (e.onreadystatechange = null), e.abort());
}),
(t.media = function (t) {
var i = this;
if (!t) return this.media_;
if ('HAVE_NOTHING' === this.state) throw new Error('Cannot switch media playlist from ' + this.state);
var n = this.state;
if ('string' == typeof t) {
if (!this.masterPlaylistLoader_.master.playlists[t]) throw new Error('Unknown playlist URI: ' + t);
t = this.masterPlaylistLoader_.master.playlists[t];
}
var e = !this.media_ || t.id !== this.media_.id;
if (e && this.loadedPlaylists_[t.id] && this.loadedPlaylists_[t.id].endList) return (this.state = 'HAVE_METADATA'), (this.media_ = t), void (e && (this.trigger('mediachanging'), this.trigger('mediachange')));
e &&
(this.media_ && this.trigger('mediachanging'),
this.addSidxSegments_(t, n, function (e) {
i.haveMetadata({ startingState: n, playlist: t });
}));
}),
(t.haveMetadata = function (e) {
var t = e.startingState,
e = e.playlist;
(this.state = 'HAVE_METADATA'), (this.loadedPlaylists_[e.id] = e), (this.mediaRequest_ = null), this.refreshMedia_(e.id), 'HAVE_MASTER' === t ? this.trigger('loadedmetadata') : this.trigger('mediachange');
}),
(t.pause = function () {
this.masterPlaylistLoader_.createMupOnMedia_ && (this.off('loadedmetadata', this.masterPlaylistLoader_.createMupOnMedia_), (this.masterPlaylistLoader_.createMupOnMedia_ = null)), this.stopRequest(), window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null), this.isMaster_ && (window.clearTimeout(this.masterPlaylistLoader_.minimumUpdatePeriodTimeout_), (this.masterPlaylistLoader_.minimumUpdatePeriodTimeout_ = null)), 'HAVE_NOTHING' === this.state && (this.started = !1);
}),
(t.load = function (e) {
var t = this;
window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null);
var i = this.media();
e
? ((e = i ? (i.targetDuration / 2) * 1e3 : 5e3),
(this.mediaUpdateTimeout = window.setTimeout(function () {
return t.load();
}, e)))
: this.started
? i && !i.endList
? (this.isMaster_ && !this.minimumUpdatePeriodTimeout_ && (this.trigger('minimumUpdatePeriod'), this.updateMinimumUpdatePeriodTimeout_()), this.trigger('mediaupdatetimeout'))
: this.trigger('loadedplaylist')
: this.start();
}),
(t.start = function () {
var i = this;
(this.started = !0),
this.isMaster_
? this.requestMaster_(function (e, t) {
i.haveMaster_(), i.hasPendingRequest() || i.media_ || i.media(i.masterPlaylistLoader_.master.playlists[0]);
})
: (this.mediaRequest_ = window.setTimeout(function () {
return i.haveMaster_();
}, 0));
}),
(t.requestMaster_ = function (n) {
var r = this;
this.request = this.vhs_.xhr({ uri: this.masterPlaylistLoader_.srcUrl, withCredentials: this.withCredentials }, function (e, t) {
if (!r.requestErrored_(e, t)) {
var i = t.responseText !== r.masterPlaylistLoader_.masterXml_;
return (
(r.masterPlaylistLoader_.masterXml_ = t.responseText),
t.responseHeaders && t.responseHeaders.date ? (r.masterLoaded_ = Date.parse(t.responseHeaders.date)) : (r.masterLoaded_ = Date.now()),
(r.masterPlaylistLoader_.srcUrl = Eo(r.handleManifestRedirects, r.masterPlaylistLoader_.srcUrl, t)),
i
? (r.handleMaster_(),
void r.syncClientServerClock_(function () {
return n(t, i);
}))
: n(t, i)
);
}
'HAVE_NOTHING' === r.state && (r.started = !1);
});
}),
(t.syncClientServerClock_ = function (i) {
var n = this,
r = Fs(this.masterPlaylistLoader_.masterXml_);
return null === r
? ((this.masterPlaylistLoader_.clientOffset_ = this.masterLoaded_ - Date.now()), i())
: 'DIRECT' === r.method
? ((this.masterPlaylistLoader_.clientOffset_ = r.value - Date.now()), i())
: void (this.request = this.vhs_.xhr({ uri: nl(this.masterPlaylistLoader_.srcUrl, r.value), method: r.method, withCredentials: this.withCredentials }, function (e, t) {
if (n.request) {
if (e) return (n.masterPlaylistLoader_.clientOffset_ = n.masterLoaded_ - Date.now()), i();
t = 'HEAD' === r.method ? (t.responseHeaders && t.responseHeaders.date ? Date.parse(t.responseHeaders.date) : n.masterLoaded_) : Date.parse(t.responseText);
(n.masterPlaylistLoader_.clientOffset_ = t - Date.now()), i();
}
}));
}),
(t.haveMaster_ = function () {
(this.state = 'HAVE_MASTER'), this.isMaster_ ? this.trigger('loadedplaylist') : this.media_ || this.media(this.childPlaylist_);
}),
(t.handleMaster_ = function () {
this.mediaRequest_ = null;
var e,
t,
t = ((n = { masterXml: this.masterPlaylistLoader_.masterXml_, srcUrl: this.masterPlaylistLoader_.srcUrl, clientOffset: this.masterPlaylistLoader_.clientOffset_, sidxMapping: this.masterPlaylistLoader_.sidxMapping_ }), (e = n.masterXml), (i = n.srcUrl), (t = n.clientOffset), (n = n.sidxMapping), (n = Bs(e, { manifestUri: i, clientOffset: t, sidxMapping: n })), Zo(n, i), n),
i = this.masterPlaylistLoader_.master;
i &&
(t = (function (e, t, i) {
for (var a = !0, s = hl(e, { duration: t.duration, minimumUpdatePeriod: t.minimumUpdatePeriod }), n = 0; n < t.playlists.length; n++) {
var r,
o = t.playlists[n];
o.sidx && ((r = ms(o.sidx)), i && i[r] && i[r].sidx && fs(o, i[r].sidx, o.sidx.resolvedUri));
o = ru(s, o, _u);
o && ((s = o), (a = !1));
}
return (
$o(t, function (e, t, i, n) {
var r;
e.playlists && e.playlists.length && ((r = e.playlists[0].id), (e = ru(s, e.playlists[0], _u)) && (((s = e).mediaGroups[t][i][n].playlists[0] = s.playlists[r]), (a = !1)));
}),
(a = t.minimumUpdatePeriod === e.minimumUpdatePeriod && a) ? null : s
);
})(i, t, this.masterPlaylistLoader_.sidxMapping_)),
(this.masterPlaylistLoader_.master = t || i);
var n = this.masterPlaylistLoader_.master.locations && this.masterPlaylistLoader_.master.locations[0];
return n && n !== this.masterPlaylistLoader_.srcUrl && (this.masterPlaylistLoader_.srcUrl = n), (!i || (t && t.minimumUpdatePeriod !== i.minimumUpdatePeriod)) && this.updateMinimumUpdatePeriodTimeout_(), Boolean(t);
}),
(t.updateMinimumUpdatePeriodTimeout_ = function () {
var e = this.masterPlaylistLoader_;
e.createMupOnMedia_ && (e.off('loadedmetadata', e.createMupOnMedia_), (e.createMupOnMedia_ = null)), e.minimumUpdatePeriodTimeout_ && (window.clearTimeout(e.minimumUpdatePeriodTimeout_), (e.minimumUpdatePeriodTimeout_ = null));
var t = e.master && e.master.minimumUpdatePeriod;
0 === t && (e.media() ? (t = 1e3 * e.media().targetDuration) : ((e.createMupOnMedia_ = e.updateMinimumUpdatePeriodTimeout_), e.one('loadedmetadata', e.createMupOnMedia_))), 'number' != typeof t || t <= 0 ? t < 0 && this.logger_('found invalid minimumUpdatePeriod of ' + t + ', not setting a timeout') : this.createMUPTimeout_(t);
}),
(t.createMUPTimeout_ = function (e) {
var t = this.masterPlaylistLoader_;
t.minimumUpdatePeriodTimeout_ = window.setTimeout(function () {
(t.minimumUpdatePeriodTimeout_ = null), t.trigger('minimumUpdatePeriod'), t.createMUPTimeout_(e);
}, e);
}),
(t.refreshXml_ = function () {
var i = this;
this.requestMaster_(function (e, t) {
var r, a;
t &&
(i.media_ && (i.media_ = i.masterPlaylistLoader_.master.playlists[i.media_.id]),
(i.masterPlaylistLoader_.sidxMapping_ =
((t = i.masterPlaylistLoader_.master),
(r = i.masterPlaylistLoader_.sidxMapping_),
(a = bu(t.playlists, r)),
$o(t, function (e, t, i, n) {
e.playlists && e.playlists.length && ((e = e.playlists), (a = hl(a, bu(e, r))));
}),
a)),
i.addSidxSegments_(i.media(), i.state, function (e) {
i.refreshMedia_(i.media().id);
}));
});
}),
(t.refreshMedia_ = function (e) {
var t = this;
if (!e) throw new Error('refreshMedia_ must take a media id');
this.media_ && this.isMaster_ && this.handleMaster_();
var i = this.masterPlaylistLoader_.master.playlists,
n = !this.media_ || this.media_ !== i[e];
n ? (this.media_ = i[e]) : this.trigger('playlistunchanged'),
this.mediaUpdateTimeout ||
(function e() {
t.media().endList ||
(t.mediaUpdateTimeout = window.setTimeout(function () {
t.trigger('mediaupdatetimeout'), e();
}, au(t.media(), Boolean(n))));
})(),
this.trigger('loadedplaylist');
}),
e
);
})(rr),
fl = { GOAL_BUFFER_LENGTH: 30, MAX_GOAL_BUFFER_LENGTH: 60, BACK_BUFFER_LENGTH: 30, GOAL_BUFFER_LENGTH_RATE: 1, INITIAL_BANDWIDTH: 4194304, BANDWIDTH_VARIANCE: 1.2, BUFFER_LOW_WATER_LINE: 0, MAX_BUFFER_LOW_WATER_LINE: 30, EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE: 16, BUFFER_LOW_WATER_LINE_RATE: 1, BUFFER_HIGH_WATER_LINE: 30 },
x = function (n) {
return function () {
var e = (function (t) {
try {
return URL.createObjectURL(new Blob([t], { type: 'application/javascript' }));
} catch (e) {
var i = new BlobBuilder();
return i.append(t), URL.createObjectURL(i.getBlob());
}
})(n),
t = Tu(new Worker(e));
t.objURL = e;
var i = t.terminate;
return (
(t.on = t.addEventListener),
(t.off = t.removeEventListener),
(t.terminate = function () {
return URL.revokeObjectURL(e), i.call(this);
}),
t
);
};
},
U = function (e) {
return 'var browserWorkerPolyFill = ' + Tu.toString() + ';\nbrowserWorkerPolyFill(self);\n' + e;
},
W = function (e) {
return e
.toString()
.replace(/^function.+?{/, '')
.slice(0, -1);
},
ml = x(
U(
W(function () {
var e = function () {
this.init = function () {
var a = {};
(this.on = function (e, t) {
a[e] || (a[e] = []), (a[e] = a[e].concat(t));
}),
(this.off = function (e, t) {
return !!a[e] && ((t = a[e].indexOf(t)), (a[e] = a[e].slice()), a[e].splice(t, 1), -1 < t);
}),
(this.trigger = function (e) {
var t,
i,
n,
r = a[e];
if (r)
if (2 === arguments.length) for (i = r.length, t = 0; t < i; ++t) r[t].call(this, arguments[1]);
else {
for (n = [], t = arguments.length, t = 1; t < arguments.length; ++t) n.push(arguments[t]);
for (i = r.length, t = 0; t < i; ++t) r[t].apply(this, n);
}
}),
(this.dispose = function () {
a = {};
});
};
};
(e.prototype.pipe = function (t) {
return (
this.on('data', function (e) {
t.push(e);
}),
this.on('done', function (e) {
t.flush(e);
}),
this.on('partialdone', function (e) {
t.partialFlush(e);
}),
this.on('endedtimeline', function (e) {
t.endTimeline(e);
}),
this.on('reset', function (e) {
t.reset(e);
}),
t
);
}),
(e.prototype.push = function (e) {
this.trigger('data', e);
}),
(e.prototype.flush = function (e) {
this.trigger('done', e);
}),
(e.prototype.partialFlush = function (e) {
this.trigger('partialdone', e);
}),
(e.prototype.endTimeline = function (e) {
this.trigger('endedtimeline', e);
}),
(e.prototype.reset = function (e) {
this.trigger('reset', e);
});
var u,
t,
i,
n,
r,
a,
s,
o,
l,
c,
d,
h,
p,
f,
m,
g,
y,
v,
_,
b,
T,
w,
S,
E,
k,
C,
I,
x,
A,
P,
L,
D,
O,
R,
M,
N,
U,
B,
F,
j = e,
H = Math.pow(2, 32) - 1;
!(function () {
if (((T = { avc1: [], avcC: [], btrt: [], dinf: [], dref: [], esds: [], ftyp: [], hdlr: [], mdat: [], mdhd: [], mdia: [], mfhd: [], minf: [], moof: [], moov: [], mp4a: [], mvex: [], mvhd: [], pasp: [], sdtp: [], smhd: [], stbl: [], stco: [], stsc: [], stsd: [], stsz: [], stts: [], styp: [], tfdt: [], tfhd: [], traf: [], trak: [], trun: [], trex: [], tkhd: [], vmhd: [] }), 'undefined' != typeof Uint8Array)) {
for (var e in T) T.hasOwnProperty(e) && (T[e] = [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)]);
(w = new Uint8Array(['i'.charCodeAt(0), 's'.charCodeAt(0), 'o'.charCodeAt(0), 'm'.charCodeAt(0)])), (E = new Uint8Array(['a'.charCodeAt(0), 'v'.charCodeAt(0), 'c'.charCodeAt(0), '1'.charCodeAt(0)])), (S = new Uint8Array([0, 0, 0, 1])), (k = 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])), (C = 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])), (I = { video: k, audio: C }), (P = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1])), (A = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])), (L = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])), (D = L), (O = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), (R = L), (x = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]));
}
})(),
(u = function (e) {
for (var t, i = [], n = 0, r = 1; r < arguments.length; r++) i.push(arguments[r]);
for (r = i.length; r--; ) n += i[r].byteLength;
for (t = new Uint8Array(n + 8), new DataView(t.buffer, t.byteOffset, t.byteLength).setUint32(0, t.byteLength), t.set(e, 4), r = 0, n = 8; r < i.length; r++) t.set(i[r], n), (n += i[r].byteLength);
return t;
}),
(t = function () {
return u(T.dinf, u(T.dref, P));
}),
(i = function (e) {
return u(T.esds, new Uint8Array([0, 0, 0, 0, 3, 25, 0, 0, 0, 4, 17, 64, 21, 0, 6, 0, 0, 0, 218, 192, 0, 0, 218, 192, 5, 2, (e.audioobjecttype << 3) | (e.samplingfrequencyindex >>> 1), (e.samplingfrequencyindex << 7) | (e.channelcount << 3), 6, 1, 2]));
}),
(f = function (e) {
return u(T.hdlr, I[e]);
}),
(p = function (e) {
var t = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 1, 95, 144, (e.duration >>> 24) & 255, (e.duration >>> 16) & 255, (e.duration >>> 8) & 255, 255 & e.duration, 85, 196, 0, 0]);
return e.samplerate && ((t[12] = (e.samplerate >>> 24) & 255), (t[13] = (e.samplerate >>> 16) & 255), (t[14] = (e.samplerate >>> 8) & 255), (t[15] = 255 & e.samplerate)), u(T.mdhd, t);
}),
(h = function (e) {
return u(T.mdia, p(e), f(e.type), a(e));
}),
(r = function (e) {
return u(T.mfhd, new Uint8Array([0, 0, 0, 0, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e]));
}),
(a = function (e) {
return u(T.minf, 'video' === e.type ? u(T.vmhd, x) : u(T.smhd, A), t(), g(e));
}),
(qe = function (e, t) {
for (var i = [], n = t.length; n--; ) i[n] = v(t[n]);
return u.apply(null, [T.moof, r(e)].concat(i));
}),
(s = function (e) {
for (var t = e.length, i = []; t--; ) i[t] = c(e[t]);
return u.apply(null, [T.moov, l(4294967295)].concat(i).concat(o(e)));
}),
(o = function (e) {
for (var t = e.length, i = []; t--; ) i[t] = _(e[t]);
return u.apply(null, [T.mvex].concat(i));
}),
(l = function (e) {
e = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 95, 144, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e, 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 u(T.mvhd, e);
}),
(m = function (e) {
for (var t, i = e.samples || [], n = new Uint8Array(4 + i.length), r = 0; r < i.length; r++) (t = i[r].flags), (n[r + 4] = (t.dependsOn << 4) | (t.isDependedOn << 2) | t.hasRedundancy);
return u(T.sdtp, n);
}),
(g = function (e) {
return u(T.stbl, y(e), u(T.stts, R), u(T.stsc, D), u(T.stsz, O), u(T.stco, L));
}),
(y = function (e) {
return u(T.stsd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]), ('video' === e.type ? M : N)(e));
}),
(M = function (e) {
for (var t, i, n = e.sps || [], r = e.pps || [], a = [], s = [], o = 0; o < n.length; o++) a.push((65280 & n[o].byteLength) >>> 8), a.push(255 & n[o].byteLength), (a = a.concat(Array.prototype.slice.call(n[o])));
for (o = 0; o < r.length; o++) s.push((65280 & r[o].byteLength) >>> 8), s.push(255 & r[o].byteLength), (s = s.concat(Array.prototype.slice.call(r[o])));
return (t = [T.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, (65280 & e.width) >> 8, 255 & e.width, (65280 & e.height) >> 8, 255 & e.height, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 19, 118, 105, 100, 101, 111, 106, 115, 45, 99, 111, 110, 116, 114, 105, 98, 45, 104, 108, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 17]), u(T.avcC, new Uint8Array([1, e.profileIdc, e.profileCompatibility, e.levelIdc, 255].concat([n.length], a, [r.length], s))), u(T.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192]))]), e.sarRatio && ((i = e.sarRatio[0]), (e = e.sarRatio[1]), t.push(u(T.pasp, new Uint8Array([(4278190080 & i) >> 24, (16711680 & i) >> 16, (65280 & i) >> 8, 255 & i, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e])))), u.apply(null, t);
}),
(N = function (e) {
return u(T.mp4a, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, (65280 & e.channelcount) >> 8, 255 & e.channelcount, (65280 & e.samplesize) >> 8, 255 & e.samplesize, 0, 0, 0, 0, (65280 & e.samplerate) >> 8, 255 & e.samplerate, 0, 0]), i(e));
}),
(d = function (e) {
e = new Uint8Array([0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 0, (4278190080 & e.duration) >> 24, (16711680 & e.duration) >> 16, (65280 & e.duration) >> 8, 255 & e.duration, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, (65280 & e.width) >> 8, 255 & e.width, 0, 0, (65280 & e.height) >> 8, 255 & e.height, 0, 0]);
return u(T.tkhd, e);
}),
(v = function (e) {
var t,
i = u(T.tfhd, new Uint8Array([0, 0, 0, 58, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])),
n = Math.floor(e.baseMediaDecodeTime / (1 + H)),
r = Math.floor(e.baseMediaDecodeTime % (1 + H)),
n = u(T.tfdt, new Uint8Array([1, 0, 0, 0, (n >>> 24) & 255, (n >>> 16) & 255, (n >>> 8) & 255, 255 & n, (r >>> 24) & 255, (r >>> 16) & 255, (r >>> 8) & 255, 255 & r]));
return 'audio' === e.type ? ((t = b(e, 92)), u(T.traf, i, n, t)) : ((r = m(e)), (t = b(e, r.length + 92)), u(T.traf, i, n, t, r));
}),
(c = function (e) {
return (e.duration = e.duration || 4294967295), u(T.trak, d(e), h(e));
}),
(_ = function (e) {
var t = new Uint8Array([0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]);
return 'video' !== e.type && (t[t.length - 1] = 0), u(T.trex, t);
}),
(U = function (e, t) {
var i = 0,
n = 0,
r = 0,
a = 0;
return e.length && (void 0 !== e[0].duration && (i = 1), void 0 !== e[0].size && (n = 2), void 0 !== e[0].flags && (r = 4), void 0 !== e[0].compositionTimeOffset && (a = 8)), [0, 0, i | n | r | a, 1, (4278190080 & e.length) >>> 24, (16711680 & e.length) >>> 16, (65280 & e.length) >>> 8, 255 & e.length, (4278190080 & t) >>> 24, (16711680 & t) >>> 16, (65280 & t) >>> 8, 255 & t];
}),
(B = function (e, t) {
var i,
n,
r,
a,
s = e.samples || [];
for (t += 20 + 16 * s.length, t = U(s, t), (n = new Uint8Array(t.length + 16 * s.length)).set(t), i = t.length, a = 0; a < s.length; a++) (r = s[a]), (n[i++] = (4278190080 & r.duration) >>> 24), (n[i++] = (16711680 & r.duration) >>> 16), (n[i++] = (65280 & r.duration) >>> 8), (n[i++] = 255 & r.duration), (n[i++] = (4278190080 & r.size) >>> 24), (n[i++] = (16711680 & r.size) >>> 16), (n[i++] = (65280 & r.size) >>> 8), (n[i++] = 255 & r.size), (n[i++] = (r.flags.isLeading << 2) | r.flags.dependsOn), (n[i++] = (r.flags.isDependedOn << 6) | (r.flags.hasRedundancy << 4) | (r.flags.paddingValue << 1) | r.flags.isNonSyncSample), (n[i++] = 61440 & r.flags.degradationPriority), (n[i++] = 15 & r.flags.degradationPriority), (n[i++] = (4278190080 & r.compositionTimeOffset) >>> 24), (n[i++] = (16711680 & r.compositionTimeOffset) >>> 16), (n[i++] = (65280 & r.compositionTimeOffset) >>> 8), (n[i++] = 255 & r.compositionTimeOffset);
return u(T.trun, n);
}),
(F = function (e, t) {
var i,
n,
r,
a,
s = e.samples || [];
for (t += 20 + 8 * s.length, t = U(s, t), (i = new Uint8Array(t.length + 8 * s.length)).set(t), n = t.length, a = 0; a < s.length; a++) (r = s[a]), (i[n++] = (4278190080 & r.duration) >>> 24), (i[n++] = (16711680 & r.duration) >>> 16), (i[n++] = (65280 & r.duration) >>> 8), (i[n++] = 255 & r.duration), (i[n++] = (4278190080 & r.size) >>> 24), (i[n++] = (16711680 & r.size) >>> 16), (i[n++] = (65280 & r.size) >>> 8), (i[n++] = 255 & r.size);
return u(T.trun, i);
}),
(b = function (e, t) {
return ('audio' === e.type ? F : B)(e, t);
});
n = function () {
return u(T.ftyp, w, S, w, E);
};
function q(e, t) {
var i = { size: 0, flags: { isLeading: 0, dependsOn: 1, isDependedOn: 0, hasRedundancy: 0, degradationPriority: 0, isNonSyncSample: 1 } };
return (i.dataOffset = t), (i.compositionTimeOffset = e.pts - e.dts), (i.duration = e.duration), (i.size = 4 * e.length), (i.size += e.byteLength), e.keyFrame && ((i.flags.dependsOn = 2), (i.flags.isNonSyncSample = 0)), i;
}
function V(e) {
for (var t = []; e--; ) t.push(0);
return t;
}
function W() {
var e, i;
return (
z ||
((e = { 96e3: [ee, [227, 64], V(154), [56]], 88200: [ee, [231], V(170), [56]], 64e3: [ee, [248, 192], V(240), [56]], 48e3: [ee, [255, 192], V(268), [55, 148, 128], V(54), [112]], 44100: [ee, [255, 192], V(268), [55, 163, 128], V(84), [112]], 32e3: [ee, [255, 192], V(268), [55, 234], V(226), [112]], 24e3: [ee, [255, 192], V(268), [55, 255, 128], V(268), [111, 112], V(126), [224]], 16e3: [ee, [255, 192], V(268), [55, 255, 128], V(268), [111, 255], V(269), [223, 108], V(195), [1, 192]], 12e3: [te, V(268), [3, 127, 248], V(268), [6, 255, 240], V(268), [13, 255, 224], V(268), [27, 253, 128], V(259), [56]], 11025: [te, V(268), [3, 127, 248], V(268), [6, 255, 240], V(268), [13, 255, 224], V(268), [27, 255, 192], V(268), [55, 175, 128], V(108), [112]], 8e3: [te, V(268), [3, 121, 16], V(47), [7]] }),
(i = e),
(z = Object.keys(i).reduce(function (e, t) {
return (
(e[t] = new Uint8Array(
i[t].reduce(function (e, t) {
return e.concat(t);
}, [])
)),
e
);
}, {}))),
z
);
}
var z,
G = function (e) {
return u(T.mdat, e);
},
X = qe,
K = function (e) {
var t = n(),
i = s(e),
e = new Uint8Array(t.byteLength + i.byteLength);
return e.set(t), e.set(i, t.byteLength), e;
},
Y = function (e) {
var t,
i,
n = [],
r = [];
for (r.byteLength = 0, r.nalCount = 0, r.duration = 0, t = n.byteLength = 0; t < e.length; t++) 'access_unit_delimiter_rbsp' === (i = e[t]).nalUnitType ? (n.length && ((n.duration = i.dts - n.dts), (r.byteLength += n.byteLength), (r.nalCount += n.length), (r.duration += n.duration), r.push(n)), ((n = [i]).byteLength = i.data.byteLength), (n.pts = i.pts), (n.dts = i.dts)) : ('slice_layer_without_partitioning_rbsp_idr' === i.nalUnitType && (n.keyFrame = !0), (n.duration = i.dts - n.dts), (n.byteLength += i.data.byteLength), n.push(i));
return r.length && (!n.duration || n.duration <= 0) && (n.duration = r[r.length - 1].duration), (r.byteLength += n.byteLength), (r.nalCount += n.length), (r.duration += n.duration), r.push(n), r;
},
Q = function (e) {
var t,
i,
n = [],
r = [];
for (n.byteLength = 0, n.nalCount = 0, n.duration = 0, n.pts = e[0].pts, n.dts = e[0].dts, r.byteLength = 0, r.nalCount = 0, r.duration = 0, r.pts = e[0].pts, r.dts = e[0].dts, t = 0; t < e.length; t++) (i = e[t]).keyFrame ? (n.length && (r.push(n), (r.byteLength += n.byteLength), (r.nalCount += n.nalCount), (r.duration += n.duration)), ((n = [i]).nalCount = i.length), (n.byteLength = i.byteLength), (n.pts = i.pts), (n.dts = i.dts), (n.duration = i.duration)) : ((n.duration += i.duration), (n.nalCount += i.length), (n.byteLength += i.byteLength), n.push(i));
return r.length && n.duration <= 0 && (n.duration = r[r.length - 1].duration), (r.byteLength += n.byteLength), (r.nalCount += n.nalCount), (r.duration += n.duration), r.push(n), r;
},
$ = function (e) {
var t;
return !e[0][0].keyFrame && 1 < e.length && ((t = e.shift()), (e.byteLength -= t.byteLength), (e.nalCount -= t.nalCount), (e[0][0].dts = t.dts), (e[0][0].pts = t.pts), (e[0][0].duration += t.duration)), e;
},
J = function (e, t) {
for (var i, n, r, a = t || 0, s = [], o = 0; o < e.length; o++) for (n = e[o], i = 0; i < n.length; i++) (r = n[i]), (a += (r = q(r, a)).size), s.push(r);
return s;
},
Z = function (e) {
for (var t, i, n, r, a, s = 0, o = e.byteLength, u = e.nalCount, l = new Uint8Array(o + 4 * u), c = new DataView(l.buffer), d = 0; d < e.length; d++) for (n = e[d], t = 0; t < n.length; t++) for (r = n[t], i = 0; i < r.length; i++) (a = r[i]), c.setUint32(s, a.data.byteLength), l.set(a.data, (s += 4)), (s += a.data.byteLength);
return l;
},
ee = [33, 16, 5, 32, 164, 27],
te = [33, 65, 108, 84, 1, 2, 4, 8, 168, 2, 4, 8, 17, 191, 252],
ie = function (e) {
return 9e4 * e;
},
ne = function (e, t) {
return e * t;
},
re = function (e) {
return e / 9e4;
},
ae = function (e, t) {
return e / t;
},
se = 9e4,
oe = ie,
ue = re,
le = function (e, t) {
return ie(ae(e, t));
},
ce = function (e, t) {
return ne(re(e), t);
},
de = function (e, t, i) {
return re(i ? e : e - t);
},
he = function (e, t, i, n) {
var r,
a,
s,
o,
u,
l,
c = 0,
d = 0;
if (t.length && ((r = le(e.baseMediaDecodeTime, e.samplerate)), (a = Math.ceil(se / (e.samplerate / 1024))), i && n && ((s = r - Math.max(i, n)), (d = (c = Math.floor(s / a)) * a)), !(c < 1 || se / 2 < d))) {
for (o = (o = W()[e.samplerate]) || t[0].data, u = 0; u < c; u++) (l = t[0]), t.splice(0, 0, { data: o, dts: l.dts - a, pts: l.pts - a });
return (e.baseMediaDecodeTime -= Math.floor(ce(d, e.samplerate))), d;
}
},
pe = function (e, t, i) {
return t.minSegmentDts >= i
? e
: ((t.minSegmentDts = 1 / 0),
e.filter(function (e) {
return e.dts >= i && ((t.minSegmentDts = Math.min(t.minSegmentDts, e.dts)), (t.minSegmentPts = t.minSegmentDts), !0);
}));
},
fe = function (e) {
for (var t, i = [], n = 0; n < e.length; n++) (t = e[n]), i.push({ size: t.data.byteLength, duration: 1024 });
return i;
},
me = function (e) {
for (
var t,
i = 0,
n = new Uint8Array(
(function (e) {
for (var t = 0, i = 0; i < e.length; i++) t += e[i].data.byteLength;
return t;
})(e)
),
r = 0;
r < e.length;
r++
)
(t = e[r]), n.set(t.data, i), (i += t.data.byteLength);
return n;
},
ge = se,
ye = function (e) {
delete e.minSegmentDts, delete e.maxSegmentDts, delete e.minSegmentPts, delete e.maxSegmentPts;
},
ve = function (e, t) {
var i = e.minSegmentDts;
return t || (i -= e.timelineStartInfo.dts), (t = e.timelineStartInfo.baseMediaDecodeTime), (t += i), (t = Math.max(0, t)), 'audio' === e.type && ((t *= e.samplerate / ge), (t = Math.floor(t))), t;
},
_e = function (e, t) {
'number' == typeof t.pts && (void 0 === e.timelineStartInfo.pts && (e.timelineStartInfo.pts = t.pts), void 0 === e.minSegmentPts ? (e.minSegmentPts = t.pts) : (e.minSegmentPts = Math.min(e.minSegmentPts, t.pts)), void 0 === e.maxSegmentPts ? (e.maxSegmentPts = t.pts) : (e.maxSegmentPts = Math.max(e.maxSegmentPts, t.pts))), 'number' == typeof t.dts && (void 0 === e.timelineStartInfo.dts && (e.timelineStartInfo.dts = t.dts), void 0 === e.minSegmentDts ? (e.minSegmentDts = t.dts) : (e.minSegmentDts = Math.min(e.minSegmentDts, t.dts)), void 0 === e.maxSegmentDts ? (e.maxSegmentDts = t.dts) : (e.maxSegmentDts = Math.max(e.maxSegmentDts, t.dts)));
},
be = function (e) {
for (var t = 0, i = { payloadType: -1, payloadSize: 0 }, n = 0, r = 0; t < e.byteLength && 128 !== e[t]; ) {
for (; 255 === e[t]; ) (n += 255), t++;
for (n += e[t++]; 255 === e[t]; ) (r += 255), t++;
if (((r += e[t++]), !i.payload && 4 === n)) {
if ('GA94' === String.fromCharCode(e[t + 3], e[t + 4], e[t + 5], e[t + 6])) {
(i.payloadType = n), (i.payloadSize = r), (i.payload = e.subarray(t, t + r));
break;
}
i.payload = void 0;
}
(t += r), (r = n = 0);
}
return i;
},
Te = function (e) {
return 181 !== e.payload[0] || 49 != ((e.payload[1] << 8) | e.payload[2]) || 'GA94' !== String.fromCharCode(e.payload[3], e.payload[4], e.payload[5], e.payload[6]) || 3 !== e.payload[7] ? null : e.payload.subarray(8, e.payload.length - 1);
},
we = function (e, t) {
var i,
n,
r,
a,
s = [];
if (!(64 & t[0])) return s;
for (n = 31 & t[0], i = 0; i < n; i++) (a = { type: 3 & t[2 + (r = 3 * i)], pts: e }), 4 & t[2 + r] && ((a.ccData = (t[3 + r] << 8) | t[4 + r]), s.push(a));
return s;
},
Se = function (e) {
for (var t = e.byteLength, i = [], n = 1; n < t - 2; ) 0 === e[n] && 0 === e[n + 1] && 3 === e[n + 2] ? (i.push(n + 2), (n += 2)) : n++;
if (0 === i.length) return e;
for (var r = t - i.length, a = new Uint8Array(r), s = 0, n = 0; n < r; s++, n++) s === i[0] && (s++, i.shift()), (a[n] = e[s]);
return a;
},
Ee = 4,
ke = function e(t) {
(t = t || {}),
e.prototype.init.call(this),
(this.parse708captions_ = 'boolean' != typeof t.parse708captions || t.parse708captions),
(this.captionPackets_ = []),
(this.ccStreams_ = [new Me(0, 0), new Me(0, 1), new Me(1, 0), new Me(1, 1)]),
this.parse708captions_ && (this.cc708Stream_ = new Pe({ captionServices: t.captionServices })),
this.reset(),
this.ccStreams_.forEach(function (e) {
e.on('data', this.trigger.bind(this, 'data')), e.on('partialdone', this.trigger.bind(this, 'partialdone')), e.on('done', this.trigger.bind(this, 'done'));
}, this),
this.parse708captions_ && (this.cc708Stream_.on('data', this.trigger.bind(this, 'data')), this.cc708Stream_.on('partialdone', this.trigger.bind(this, 'partialdone')), this.cc708Stream_.on('done', this.trigger.bind(this, 'done')));
};
((ke.prototype = new j()).push = function (e) {
var t, i;
if ('sei_rbsp' === e.nalUnitType && (t = be(e.escapedRBSP)).payload && t.payloadType === Ee && (i = Te(t)))
if (e.dts < this.latestDts_) this.ignoreNextEqualDts_ = !0;
else {
if (e.dts === this.latestDts_ && this.ignoreNextEqualDts_) return this.numSameDts_--, void (this.numSameDts_ || (this.ignoreNextEqualDts_ = !1));
(i = we(e.pts, i)), (this.captionPackets_ = this.captionPackets_.concat(i)), this.latestDts_ !== e.dts && (this.numSameDts_ = 0), this.numSameDts_++, (this.latestDts_ = e.dts);
}
}),
(ke.prototype.flushCCStreams = function (t) {
this.ccStreams_.forEach(function (e) {
return 'flush' === t ? e.flush() : e.partialFlush();
}, this);
}),
(ke.prototype.flushStream = function (e) {
this.captionPackets_.length &&
(this.captionPackets_.forEach(function (e, t) {
e.presortIndex = t;
}),
this.captionPackets_.sort(function (e, t) {
return e.pts === t.pts ? e.presortIndex - t.presortIndex : e.pts - t.pts;
}),
this.captionPackets_.forEach(function (e) {
e.type < 2 ? this.dispatchCea608Packet(e) : this.dispatchCea708Packet(e);
}, this),
(this.captionPackets_.length = 0)),
this.flushCCStreams(e);
}),
(ke.prototype.flush = function () {
return this.flushStream('flush');
}),
(ke.prototype.partialFlush = function () {
return this.flushStream('partialFlush');
}),
(ke.prototype.reset = function () {
(this.latestDts_ = null),
(this.ignoreNextEqualDts_ = !1),
(this.numSameDts_ = 0),
(this.activeCea608Channel_ = [null, null]),
this.ccStreams_.forEach(function (e) {
e.reset();
});
}),
(ke.prototype.dispatchCea608Packet = function (e) {
this.setsTextOrXDSActive(e) ? (this.activeCea608Channel_[e.type] = null) : this.setsChannel1Active(e) ? (this.activeCea608Channel_[e.type] = 0) : this.setsChannel2Active(e) && (this.activeCea608Channel_[e.type] = 1), null !== this.activeCea608Channel_[e.type] && this.ccStreams_[(e.type << 1) + this.activeCea608Channel_[e.type]].push(e);
}),
(ke.prototype.setsChannel1Active = function (e) {
return 4096 == (30720 & e.ccData);
}),
(ke.prototype.setsChannel2Active = function (e) {
return 6144 == (30720 & e.ccData);
}),
(ke.prototype.setsTextOrXDSActive = function (e) {
return 256 == (28928 & e.ccData) || 4138 == (30974 & e.ccData) || 6186 == (30974 & e.ccData);
}),
(ke.prototype.dispatchCea708Packet = function (e) {
this.parse708captions_ && this.cc708Stream_.push(e);
});
function Ce(e) {
return (32 <= e && e <= 127) || (160 <= e && e <= 255);
}
function Ie(e) {
(this.windowNum = e), this.reset();
}
var xe = { 127: 9834, 4128: 32, 4129: 160, 4133: 8230, 4138: 352, 4140: 338, 4144: 9608, 4145: 8216, 4146: 8217, 4147: 8220, 4148: 8221, 4149: 8226, 4153: 8482, 4154: 353, 4156: 339, 4157: 8480, 4159: 376, 4214: 8539, 4215: 8540, 4216: 8541, 4217: 8542, 4218: 9168, 4219: 9124, 4220: 9123, 4221: 9135, 4222: 9126, 4223: 9121, 4256: 12600 };
(Ie.prototype.reset = function () {
this.clearText(), (this.pendingNewLine = !1), (this.winAttr = {}), (this.penAttr = {}), (this.penLoc = {}), (this.penColor = {}), (this.visible = 0), (this.rowLock = 0), (this.columnLock = 0), (this.priority = 0), (this.relativePositioning = 0), (this.anchorVertical = 0), (this.anchorHorizontal = 0), (this.anchorPoint = 0), (this.rowCount = 1), (this.virtualRowCount = this.rowCount + 1), (this.columnCount = 41), (this.windowStyle = 0), (this.penStyle = 0);
}),
(Ie.prototype.getText = function () {
return this.rows.join('\n');
}),
(Ie.prototype.clearText = function () {
(this.rows = ['']), (this.rowIdx = 0);
}),
(Ie.prototype.newLine = function (e) {
for (this.rows.length >= this.virtualRowCount && 'function' == typeof this.beforeRowOverflow && this.beforeRowOverflow(e), 0 < this.rows.length && (this.rows.push(''), this.rowIdx++); this.rows.length > this.virtualRowCount; ) this.rows.shift(), this.rowIdx--;
}),
(Ie.prototype.isEmpty = function () {
return 0 === this.rows.length || (1 === this.rows.length && '' === this.rows[0]);
}),
(Ie.prototype.addText = function (e) {
this.rows[this.rowIdx] += e;
}),
(Ie.prototype.backspace = function () {
var e;
this.isEmpty() || ((e = this.rows[this.rowIdx]), (this.rows[this.rowIdx] = e.substr(0, e.length - 1)));
});
function Ae(e, t, i) {
(this.serviceNum = e), (this.text = ''), (this.currentWindow = new Ie(-1)), (this.windows = []), (this.stream = i), 'string' == typeof t && this.createTextDecoder(t);
}
(Ae.prototype.init = function (e, t) {
this.startPts = e;
for (var i = 0; i < 8; i++) (this.windows[i] = new Ie(i)), 'function' == typeof t && (this.windows[i].beforeRowOverflow = t);
}),
(Ae.prototype.setCurrentWindow = function (e) {
this.currentWindow = this.windows[e];
}),
(Ae.prototype.createTextDecoder = function (t) {
if ('undefined' == typeof TextDecoder) this.stream.trigger('log', { level: 'warn', message: 'The `encoding` option is unsupported without TextDecoder support' });
else
try {
this.textDecoder_ = new TextDecoder(t);
} catch (e) {
this.stream.trigger('log', { level: 'warn', message: 'TextDecoder could not be created with ' + t + ' encoding. ' + e });
}
});
var Pe = function e(t) {
(t = t || {}), e.prototype.init.call(this);
var i,
n = this,
r = t.captionServices || {},
a = {};
Object.keys(r).forEach(function (e) {
(i = r[e]), /^SERVICE/.test(e) && (a[e] = i.encoding);
}),
(this.serviceEncodings = a),
(this.current708Packet = null),
(this.services = {}),
(this.push = function (e) {
(3 === e.type || null === n.current708Packet) && n.new708Packet(), n.add708Bytes(e);
});
};
(Pe.prototype = new j()),
(Pe.prototype.new708Packet = function () {
null !== this.current708Packet && this.push708Packet(), (this.current708Packet = { data: [], ptsVals: [] });
}),
(Pe.prototype.add708Bytes = function (e) {
var t = e.ccData,
i = t >>> 8,
t = 255 & t;
this.current708Packet.ptsVals.push(e.pts), this.current708Packet.data.push(i), this.current708Packet.data.push(t);
}),
(Pe.prototype.push708Packet = function () {
var e,
t = this.current708Packet,
i = t.data,
n = null,
r = 0,
a = i[r++];
for (t.seq = a >> 6, t.sizeCode = 63 & a; r < i.length; r++) (e = 31 & (a = i[r++])), 7 === (n = a >> 5) && 0 < e && (n = i[r++]), this.pushServiceBlock(n, r, e), 0 < e && (r += e - 1);
}),
(Pe.prototype.pushServiceBlock = function (e, t, i) {
for (var n, r = t, a = this.current708Packet.data, s = (s = this.services[e]) || this.initService(e, r); r < t + i && r < a.length; r++) (n = a[r]), Ce(n) ? (r = this.handleText(r, s)) : 24 === n ? (r = this.multiByteCharacter(r, s)) : 16 === n ? (r = this.extendedCommands(r, s)) : 128 <= n && n <= 135 ? (r = this.setCurrentWindow(r, s)) : 152 <= n && n <= 159 ? (r = this.defineWindow(r, s)) : 136 === n ? (r = this.clearWindows(r, s)) : 140 === n ? (r = this.deleteWindows(r, s)) : 137 === n ? (r = this.displayWindows(r, s)) : 138 === n ? (r = this.hideWindows(r, s)) : 139 === n ? (r = this.toggleWindows(r, s)) : 151 === n ? (r = this.setWindowAttributes(r, s)) : 144 === n ? (r = this.setPenAttributes(r, s)) : 145 === n ? (r = this.setPenColor(r, s)) : 146 === n ? (r = this.setPenLocation(r, s)) : 143 === n ? (s = this.reset(r, s)) : 8 === n ? s.currentWindow.backspace() : 12 === n ? s.currentWindow.clearText() : 13 === n ? (s.currentWindow.pendingNewLine = !0) : 14 === n ? s.currentWindow.clearText() : 141 === n && r++;
}),
(Pe.prototype.extendedCommands = function (e, t) {
var i = this.current708Packet.data[++e];
return (e = Ce(i) ? this.handleText(e, t, { isExtended: !0 }) : e);
}),
(Pe.prototype.getPts = function (e) {
return this.current708Packet.ptsVals[Math.floor(e / 2)];
}),
(Pe.prototype.initService = function (t, e) {
var i,
n = 'SERVICE' + t,
r = this;
return (
n in this.serviceEncodings && (i = this.serviceEncodings[n]),
(this.services[t] = new Ae(t, i, r)),
this.services[t].init(this.getPts(e), function (e) {
r.flushDisplayed(e, r.services[t]);
}),
this.services[t]
);
}),
(Pe.prototype.handleText = function (e, t, i) {
var n,
r = i && i.isExtended,
a = i && i.isMultiByte,
s = this.current708Packet.data,
o = r ? 4096 : 0,
u = s[e],
i = s[e + 1],
s = t.currentWindow,
l = t.textDecoder_ && !r ? (a ? ((n = [u, i]), e++) : (n = [u]), t.textDecoder_.decode(new Uint8Array(n))) : ((l = xe[(u = o | u)] || u), 4096 & u && u === l ? '' : String.fromCharCode(l));
return s.pendingNewLine && !s.isEmpty() && s.newLine(this.getPts(e)), (s.pendingNewLine = !1), s.addText(l), e;
}),
(Pe.prototype.multiByteCharacter = function (e, t) {
var i = this.current708Packet.data,
n = i[e + 1],
i = i[e + 2];
return (e = Ce(n) && Ce(i) ? this.handleText(++e, t, { isMultiByte: !0 }) : e);
}),
(Pe.prototype.setCurrentWindow = function (e, t) {
var i = this.current708Packet.data[e];
return t.setCurrentWindow(7 & i), e;
}),
(Pe.prototype.defineWindow = function (e, t) {
var i = this.current708Packet.data,
n = i[e];
t.setCurrentWindow(7 & n);
(t = t.currentWindow), (n = i[++e]);
return (t.visible = (32 & n) >> 5), (t.rowLock = (16 & n) >> 4), (t.columnLock = (8 & n) >> 3), (t.priority = 7 & n), (n = i[++e]), (t.relativePositioning = (128 & n) >> 7), (t.anchorVertical = 127 & n), (n = i[++e]), (t.anchorHorizontal = n), (n = i[++e]), (t.anchorPoint = (240 & n) >> 4), (t.rowCount = 15 & n), (n = i[++e]), (t.columnCount = 63 & n), (n = i[++e]), (t.windowStyle = (56 & n) >> 3), (t.penStyle = 7 & n), (t.virtualRowCount = t.rowCount + 1), e;
}),
(Pe.prototype.setWindowAttributes = function (e, t) {
var i = this.current708Packet.data,
n = i[e],
t = t.currentWindow.winAttr,
n = i[++e];
return (t.fillOpacity = (192 & n) >> 6), (t.fillRed = (48 & n) >> 4), (t.fillGreen = (12 & n) >> 2), (t.fillBlue = 3 & n), (n = i[++e]), (t.borderType = (192 & n) >> 6), (t.borderRed = (48 & n) >> 4), (t.borderGreen = (12 & n) >> 2), (t.borderBlue = 3 & n), (n = i[++e]), (t.borderType += (128 & n) >> 5), (t.wordWrap = (64 & n) >> 6), (t.printDirection = (48 & n) >> 4), (t.scrollDirection = (12 & n) >> 2), (t.justify = 3 & n), (n = i[++e]), (t.effectSpeed = (240 & n) >> 4), (t.effectDirection = (12 & n) >> 2), (t.displayEffect = 3 & n), e;
}),
(Pe.prototype.flushDisplayed = function (e, t) {
for (var i = [], n = 0; n < 8; n++) t.windows[n].visible && !t.windows[n].isEmpty() && i.push(t.windows[n].getText());
(t.endPts = e), (t.text = i.join('\n\n')), this.pushCaption(t), (t.startPts = e);
}),
(Pe.prototype.pushCaption = function (e) {
'' !== e.text && (this.trigger('data', { startPts: e.startPts, endPts: e.endPts, text: e.text, stream: 'cc708_' + e.serviceNum }), (e.text = ''), (e.startPts = e.endPts));
}),
(Pe.prototype.displayWindows = function (e, t) {
var i = this.current708Packet.data[++e],
n = this.getPts(e);
this.flushDisplayed(n, t);
for (var r = 0; r < 8; r++) i & (1 << r) && (t.windows[r].visible = 1);
return e;
}),
(Pe.prototype.hideWindows = function (e, t) {
var i = this.current708Packet.data[++e],
n = this.getPts(e);
this.flushDisplayed(n, t);
for (var r = 0; r < 8; r++) i & (1 << r) && (t.windows[r].visible = 0);
return e;
}),
(Pe.prototype.toggleWindows = function (e, t) {
var i = this.current708Packet.data[++e],
n = this.getPts(e);
this.flushDisplayed(n, t);
for (var r = 0; r < 8; r++) i & (1 << r) && (t.windows[r].visible ^= 1);
return e;
}),
(Pe.prototype.clearWindows = function (e, t) {
var i = this.current708Packet.data[++e],
n = this.getPts(e);
this.flushDisplayed(n, t);
for (var r = 0; r < 8; r++) i & (1 << r) && t.windows[r].clearText();
return e;
}),
(Pe.prototype.deleteWindows = function (e, t) {
var i = this.current708Packet.data[++e],
n = this.getPts(e);
this.flushDisplayed(n, t);
for (var r = 0; r < 8; r++) i & (1 << r) && t.windows[r].reset();
return e;
}),
(Pe.prototype.setPenAttributes = function (e, t) {
var i = this.current708Packet.data,
n = i[e],
t = t.currentWindow.penAttr,
n = i[++e];
return (t.textTag = (240 & n) >> 4), (t.offset = (12 & n) >> 2), (t.penSize = 3 & n), (n = i[++e]), (t.italics = (128 & n) >> 7), (t.underline = (64 & n) >> 6), (t.edgeType = (56 & n) >> 3), (t.fontStyle = 7 & n), e;
}),
(Pe.prototype.setPenColor = function (e, t) {
var i = this.current708Packet.data,
n = i[e],
t = t.currentWindow.penColor,
n = i[++e];
return (t.fgOpacity = (192 & n) >> 6), (t.fgRed = (48 & n) >> 4), (t.fgGreen = (12 & n) >> 2), (t.fgBlue = 3 & n), (n = i[++e]), (t.bgOpacity = (192 & n) >> 6), (t.bgRed = (48 & n) >> 4), (t.bgGreen = (12 & n) >> 2), (t.bgBlue = 3 & n), (n = i[++e]), (t.edgeRed = (48 & n) >> 4), (t.edgeGreen = (12 & n) >> 2), (t.edgeBlue = 3 & n), e;
}),
(Pe.prototype.setPenLocation = function (e, t) {
var i = this.current708Packet.data,
n = i[e],
r = t.currentWindow.penLoc;
return (t.currentWindow.pendingNewLine = !0), (n = i[++e]), (r.row = 15 & n), (n = i[++e]), (r.column = 63 & n), e;
}),
(Pe.prototype.reset = function (e, t) {
var i = this.getPts(e);
return this.flushDisplayed(i, t), this.initService(t.serviceNum, e);
});
function Le(e) {
return null === e ? '' : ((e = Oe[e] || e), String.fromCharCode(e));
}
function De() {
for (var e = [], t = 15; t--; ) e.push('');
return e;
}
var Oe = { 42: 225, 92: 233, 94: 237, 95: 243, 96: 250, 123: 231, 124: 247, 125: 209, 126: 241, 127: 9608, 304: 174, 305: 176, 306: 189, 307: 191, 308: 8482, 309: 162, 310: 163, 311: 9834, 312: 224, 313: 160, 314: 232, 315: 226, 316: 234, 317: 238, 318: 244, 319: 251, 544: 193, 545: 201, 546: 211, 547: 218, 548: 220, 549: 252, 550: 8216, 551: 161, 552: 42, 553: 39, 554: 8212, 555: 169, 556: 8480, 557: 8226, 558: 8220, 559: 8221, 560: 192, 561: 194, 562: 199, 563: 200, 564: 202, 565: 203, 566: 235, 567: 206, 568: 207, 569: 239, 570: 212, 571: 217, 572: 249, 573: 219, 574: 171, 575: 187, 800: 195, 801: 227, 802: 205, 803: 204, 804: 236, 805: 210, 806: 242, 807: 213, 808: 245, 809: 123, 810: 125, 811: 92, 812: 94, 813: 95, 814: 124, 815: 126, 816: 196, 817: 228, 818: 214, 819: 246, 820: 223, 821: 165, 822: 164, 823: 9474, 824: 197, 825: 229, 826: 216, 827: 248, 828: 9484, 829: 9488, 830: 9492, 831: 9496 },
Re = [4352, 4384, 4608, 4640, 5376, 5408, 5632, 5664, 5888, 5920, 4096, 4864, 4896, 5120, 5152],
Me = function e(t, i) {
e.prototype.init.call(this),
(this.field_ = t || 0),
(this.dataChannel_ = i || 0),
(this.name_ = 'CC' + (1 + ((this.field_ << 1) | this.dataChannel_))),
this.setConstants(),
this.reset(),
(this.push = function (e) {
var t,
i,
n,
r,
a = 32639 & e.ccData;
a !== this.lastControlCode_
? (4096 == (61440 & a) ? (this.lastControlCode_ = a) : a !== this.PADDING_ && (this.lastControlCode_ = null),
(t = a >>> 8),
(i = 255 & a),
a === this.PADDING_ ||
(a === this.RESUME_CAPTION_LOADING_
? (this.mode_ = 'popOn')
: a === this.END_OF_CAPTION_
? ((this.mode_ = 'popOn'), this.clearFormatting(e.pts), this.flushDisplayed(e.pts), (r = this.displayed_), (this.displayed_ = this.nonDisplayed_), (this.nonDisplayed_ = r), (this.startPts_ = e.pts))
: a === this.ROLL_UP_2_ROWS_
? ((this.rollUpRows_ = 2), this.setRollUp(e.pts))
: a === this.ROLL_UP_3_ROWS_
? ((this.rollUpRows_ = 3), this.setRollUp(e.pts))
: a === this.ROLL_UP_4_ROWS_
? ((this.rollUpRows_ = 4), this.setRollUp(e.pts))
: a === this.CARRIAGE_RETURN_
? (this.clearFormatting(e.pts), this.flushDisplayed(e.pts), this.shiftRowsUp_(), (this.startPts_ = e.pts))
: a === this.BACKSPACE_
? 'popOn' === this.mode_
? (this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1))
: (this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1))
: a === this.ERASE_DISPLAYED_MEMORY_
? (this.flushDisplayed(e.pts), (this.displayed_ = De()))
: a === this.ERASE_NON_DISPLAYED_MEMORY_
? (this.nonDisplayed_ = De())
: a === this.RESUME_DIRECT_CAPTIONING_
? ('paintOn' !== this.mode_ && (this.flushDisplayed(e.pts), (this.displayed_ = De())), (this.mode_ = 'paintOn'), (this.startPts_ = e.pts))
: this.isSpecialCharacter(t, i)
? ((n = Le((t = (3 & t) << 8) | i)), this[this.mode_](e.pts, n), this.column_++)
: this.isExtCharacter(t, i)
? ('popOn' === this.mode_ ? (this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1)) : (this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1)), (n = Le((t = (3 & t) << 8) | i)), this[this.mode_](e.pts, n), this.column_++)
: this.isMidRowCode(t, i)
? (this.clearFormatting(e.pts), this[this.mode_](e.pts, ' '), this.column_++, 14 == (14 & i) && this.addFormatting(e.pts, ['i']), 1 == (1 & i) && this.addFormatting(e.pts, ['u']))
: this.isOffsetControlCode(t, i)
? (this.column_ += 3 & i)
: this.isPAC(t, i)
? ((r = Re.indexOf(7968 & a)), 'rollUp' === this.mode_ && (r - this.rollUpRows_ + 1 < 0 && (r = this.rollUpRows_ - 1), this.setRollUp(e.pts, r)), r !== this.row_ && (this.clearFormatting(e.pts), (this.row_ = r)), 1 & i && -1 === this.formatting_.indexOf('u') && this.addFormatting(e.pts, ['u']), 16 == (16 & a) && (this.column_ = 4 * ((14 & a) >> 1)), this.isColorPAC(i) && 14 == (14 & i) && this.addFormatting(e.pts, ['i']))
: this.isNormalChar(t) && (0 === i && (i = null), (n = Le(t)), (n += Le(i)), this[this.mode_](e.pts, n), (this.column_ += n.length))))
: (this.lastControlCode_ = null);
});
};
(Me.prototype = new j()),
(Me.prototype.flushDisplayed = function (e) {
var t = this.displayed_
.map(function (e, t) {
try {
return e.trim();
} catch (e) {
return this.trigger('log', { level: 'warn', message: 'Skipping a malformed 608 caption at index ' + t + '.' }), '';
}
}, this)
.join('\n')
.replace(/^\n+|\n+$/g, '');
t.length && this.trigger('data', { startPts: this.startPts_, endPts: e, text: t, stream: this.name_ });
}),
(Me.prototype.reset = function () {
(this.mode_ = 'popOn'), (this.topRow_ = 0), (this.startPts_ = 0), (this.displayed_ = De()), (this.nonDisplayed_ = De()), (this.lastControlCode_ = null), (this.column_ = 0), (this.row_ = 14), (this.rollUpRows_ = 2), (this.formatting_ = []);
}),
(Me.prototype.setConstants = function () {
0 === this.dataChannel_ ? ((this.BASE_ = 16), (this.EXT_ = 17), (this.CONTROL_ = (20 | this.field_) << 8), (this.OFFSET_ = 23)) : 1 === this.dataChannel_ && ((this.BASE_ = 24), (this.EXT_ = 25), (this.CONTROL_ = (28 | this.field_) << 8), (this.OFFSET_ = 31)), (this.PADDING_ = 0), (this.RESUME_CAPTION_LOADING_ = 32 | this.CONTROL_), (this.END_OF_CAPTION_ = 47 | this.CONTROL_), (this.ROLL_UP_2_ROWS_ = 37 | this.CONTROL_), (this.ROLL_UP_3_ROWS_ = 38 | this.CONTROL_), (this.ROLL_UP_4_ROWS_ = 39 | this.CONTROL_), (this.CARRIAGE_RETURN_ = 45 | this.CONTROL_), (this.RESUME_DIRECT_CAPTIONING_ = 41 | this.CONTROL_), (this.BACKSPACE_ = 33 | this.CONTROL_), (this.ERASE_DISPLAYED_MEMORY_ = 44 | this.CONTROL_), (this.ERASE_NON_DISPLAYED_MEMORY_ = 46 | this.CONTROL_);
}),
(Me.prototype.isSpecialCharacter = function (e, t) {
return e === this.EXT_ && 48 <= t && t <= 63;
}),
(Me.prototype.isExtCharacter = function (e, t) {
return (e === this.EXT_ + 1 || e === this.EXT_ + 2) && 32 <= t && t <= 63;
}),
(Me.prototype.isMidRowCode = function (e, t) {
return e === this.EXT_ && 32 <= t && t <= 47;
}),
(Me.prototype.isOffsetControlCode = function (e, t) {
return e === this.OFFSET_ && 33 <= t && t <= 35;
}),
(Me.prototype.isPAC = function (e, t) {
return e >= this.BASE_ && e < this.BASE_ + 8 && 64 <= t && t <= 127;
}),
(Me.prototype.isColorPAC = function (e) {
return (64 <= e && e <= 79) || (96 <= e && e <= 127);
}),
(Me.prototype.isNormalChar = function (e) {
return 32 <= e && e <= 127;
}),
(Me.prototype.setRollUp = function (e, t) {
if (('rollUp' !== this.mode_ && ((this.row_ = 14), (this.mode_ = 'rollUp'), this.flushDisplayed(e), (this.nonDisplayed_ = De()), (this.displayed_ = De())), void 0 !== t && t !== this.row_)) for (var i = 0; i < this.rollUpRows_; i++) (this.displayed_[t - i] = this.displayed_[this.row_ - i]), (this.displayed_[this.row_ - i] = '');
void 0 === t && (t = this.row_), (this.topRow_ = t - this.rollUpRows_ + 1);
}),
(Me.prototype.addFormatting = function (e, t) {
this.formatting_ = this.formatting_.concat(t);
t = t.reduce(function (e, t) {
return e + '<' + t + '>';
}, '');
this[this.mode_](e, t);
}),
(Me.prototype.clearFormatting = function (e) {
var t;
this.formatting_.length &&
((t = this.formatting_.reverse().reduce(function (e, t) {
return e + '' + t + '>';
}, '')),
(this.formatting_ = []),
this[this.mode_](e, t));
}),
(Me.prototype.popOn = function (e, t) {
var i = this.nonDisplayed_[this.row_];
this.nonDisplayed_[this.row_] = i += t;
}),
(Me.prototype.rollUp = function (e, t) {
var i = this.displayed_[this.row_];
this.displayed_[this.row_] = i += t;
}),
(Me.prototype.shiftRowsUp_ = function () {
for (var e = 0; e < this.topRow_; e++) this.displayed_[e] = '';
for (e = this.row_ + 1; e < 15; e++) this.displayed_[e] = '';
for (e = this.topRow_; e < this.row_; e++) this.displayed_[e] = this.displayed_[e + 1];
this.displayed_[this.row_] = '';
}),
(Me.prototype.paintOn = function (e, t) {
var i = this.displayed_[this.row_];
this.displayed_[this.row_] = i += t;
});
function Ne(e, t) {
var i = 1;
for (t < e && (i = -1); 4294967296 < Math.abs(t - e); ) e += 8589934592 * i;
return e;
}
var Ue = { CaptionStream: ke, Cea608Stream: Me, Cea708Stream: Pe },
Be = { H264_STREAM_TYPE: 27, ADTS_STREAM_TYPE: 15, METADATA_STREAM_TYPE: 21 },
e = function e(t) {
var i, n;
e.prototype.init.call(this),
(this.type_ = t || 'shared'),
(this.push = function (e) {
('shared' !== this.type_ && e.type !== this.type_) || (void 0 === n && (n = e.dts), (e.dts = Ne(e.dts, n)), (e.pts = Ne(e.pts, n)), (i = e.dts), this.trigger('data', e));
}),
(this.flush = function () {
(n = i), this.trigger('done');
}),
(this.endTimeline = function () {
this.flush(), this.trigger('endedtimeline');
}),
(this.discontinuity = function () {
i = n = void 0;
}),
(this.reset = function () {
this.discontinuity(), this.trigger('reset');
});
};
e.prototype = new j();
function Fe(e, t, i) {
for (var n = '', r = t; r < i; r++) n += '%' + ('00' + e[r].toString(16)).slice(-2);
return n;
}
function je(e, t, i) {
return decodeURIComponent(Fe(e, t, i));
}
function He(e) {
return (e[0] << 21) | (e[1] << 14) | (e[2] << 7) | e[3];
}
var qe = e,
ke = Ne,
Ve = {
TXXX: function (e) {
var t;
if (3 === e.data[0]) {
for (t = 1; t < e.data.length; t++)
if (0 === e.data[t]) {
(e.description = je(e.data, 1, t)), (e.value = je(e.data, t + 1, e.data.length).replace(/\0*$/, ''));
break;
}
e.data = e.value;
}
},
WXXX: function (e) {
var t;
if (3 === e.data[0])
for (t = 1; t < e.data.length; t++)
if (0 === e.data[t]) {
(e.description = je(e.data, 1, t)), (e.url = je(e.data, t + 1, e.data.length));
break;
}
},
PRIV: function (e) {
for (var t, i = 0; i < e.data.length; i++)
if (0 === e.data[i]) {
e.owner = ((t = e.data), unescape(Fe(t, 0, i)));
break;
}
(e.privateData = e.data.subarray(i + 1)), (e.data = e.privateData);
},
},
We = function (e) {
var t,
i = { descriptor: e && e.descriptor },
u = 0,
l = [],
c = 0;
if ((We.prototype.init.call(this), (this.dispatchType = Be.METADATA_STREAM_TYPE.toString(16)), i.descriptor)) for (t = 0; t < i.descriptor.length; t++) this.dispatchType += ('00' + i.descriptor[t].toString(16)).slice(-2);
this.push = function (e) {
var t, i, n, r, a, s, o;
if ('timed-metadata' === e.type)
if ((e.dataAlignmentIndicator && ((c = 0), (l.length = 0)), 0 === l.length && (e.data.length < 10 || e.data[0] !== 'I'.charCodeAt(0) || e.data[1] !== 'D'.charCodeAt(0) || e.data[2] !== '3'.charCodeAt(0)))) this.trigger('log', { level: 'warn', message: 'Skipping unrecognized metadata packet' });
else if ((l.push(e), (c += e.data.byteLength), 1 === l.length && ((u = He(e.data.subarray(6, 10))), (u += 10)), !(c < u))) {
for (t = { data: new Uint8Array(u), frames: [], pts: l[0].pts, dts: l[0].dts }, r = 0; r < u; ) t.data.set(l[0].data.subarray(0, u - r), r), (r += l[0].data.byteLength), (c -= l[0].data.byteLength), l.shift();
(i = 10), 64 & t.data[5] && ((i += 4), (i += He(t.data.subarray(10, 14))), (u -= He(t.data.subarray(16, 20))));
do {
if ((n = He(t.data.subarray(i + 4, i + 8))) < 1) return void this.trigger('log', { level: 'warn', message: 'Malformed ID3 frame encountered. Skipping metadata parsing.' });
} while ((((o = { id: String.fromCharCode(t.data[i], t.data[i + 1], t.data[i + 2], t.data[i + 3]), data: t.data.subarray(i + 10, i + n + 10) }).key = o.id), Ve[o.id] && (Ve[o.id](o), 'com.apple.streaming.transportStreamTimestamp' === o.owner && ((s = ((1 & (a = o.data)[3]) << 30) | (a[4] << 22) | (a[5] << 14) | (a[6] << 6) | (a[7] >>> 2)), (s *= 4), (s += 3 & a[7]), (o.timeStamp = s), void 0 === t.pts && void 0 === t.dts && ((t.pts = o.timeStamp), (t.dts = o.timeStamp)), this.trigger('timestamp', o))), t.frames.push(o), (i += 10), (i += n) < u));
this.trigger('data', t);
}
};
};
We.prototype = new j();
var ze,
Ge,
e = We,
qe = qe,
Xe = function () {
var r = new Uint8Array(188),
a = 0;
Xe.prototype.init.call(this),
(this.push = function (e) {
var t,
i = 0,
n = 188;
for (a ? ((t = new Uint8Array(e.byteLength + a)).set(r.subarray(0, a)), t.set(e, a), (a = 0)) : (t = e); n < t.byteLength; ) 71 !== t[i] || 71 !== t[n] ? (i++, n++) : (this.trigger('data', t.subarray(i, n)), (i += 188), (n += 188));
i < t.byteLength && (r.set(t.subarray(i), 0), (a = t.byteLength - i));
}),
(this.flush = function () {
188 === a && 71 === r[0] && (this.trigger('data', r), (a = 0)), this.trigger('done');
}),
(this.endTimeline = function () {
this.flush(), this.trigger('endedtimeline');
}),
(this.reset = function () {
(a = 0), this.trigger('reset');
});
};
(Xe.prototype = new j()),
((ze = function () {
var n, r, a, s;
ze.prototype.init.call(this),
((s = this).packetsWaitingForPmt = []),
(this.programMapTable = void 0),
(n = function (e, t) {
var i = 0;
t.payloadUnitStartIndicator && (i += e[i] + 1), ('pat' === t.type ? r : a)(e.subarray(i), t);
}),
(r = function (e, t) {
(t.section_number = e[7]), (t.last_section_number = e[8]), (s.pmtPid = ((31 & e[10]) << 8) | e[11]), (t.pmtPid = s.pmtPid);
}),
(a = function (e, t) {
var i, n;
if (1 & e[5]) {
for (s.programMapTable = { video: null, audio: null, 'timed-metadata': {} }, i = 3 + (((15 & e[1]) << 8) | e[2]) - 4, n = 12 + (((15 & e[10]) << 8) | e[11]); n < i; ) {
var r = e[n],
a = ((31 & e[n + 1]) << 8) | e[n + 2];
r === Be.H264_STREAM_TYPE && null === s.programMapTable.video ? (s.programMapTable.video = a) : r === Be.ADTS_STREAM_TYPE && null === s.programMapTable.audio ? (s.programMapTable.audio = a) : r === Be.METADATA_STREAM_TYPE && (s.programMapTable['timed-metadata'][a] = r), (n += 5 + (((15 & e[n + 3]) << 8) | e[n + 4]));
}
t.programMapTable = s.programMapTable;
}
}),
(this.push = function (e) {
var t = {},
i = 4;
if (((t.payloadUnitStartIndicator = !!(64 & e[1])), (t.pid = 31 & e[1]), (t.pid <<= 8), (t.pid |= e[2]), 1 < (48 & e[3]) >>> 4 && (i += e[i] + 1), 0 === t.pid)) (t.type = 'pat'), n(e.subarray(i), t), this.trigger('data', t);
else if (t.pid === this.pmtPid) for (t.type = 'pmt', n(e.subarray(i), t), this.trigger('data', t); this.packetsWaitingForPmt.length; ) this.processPes_.apply(this, this.packetsWaitingForPmt.shift());
else void 0 === this.programMapTable ? this.packetsWaitingForPmt.push([e, i, t]) : this.processPes_(e, i, t);
}),
(this.processPes_ = function (e, t, i) {
i.pid === this.programMapTable.video ? (i.streamType = Be.H264_STREAM_TYPE) : i.pid === this.programMapTable.audio ? (i.streamType = Be.ADTS_STREAM_TYPE) : (i.streamType = this.programMapTable['timed-metadata'][i.pid]), (i.type = 'pes'), (i.data = e.subarray(t)), this.trigger('data', i);
});
}).prototype = new j()),
(ze.STREAM_TYPES = { h264: 27, adts: 15 }),
((Ge = function () {
function n(e, t, i) {
var n,
r,
a,
s,
o = new Uint8Array(e.size),
u = { type: t },
l = 0,
c = 0;
if (e.data.length && !(e.size < 9)) {
for (u.trackId = e.data[0].pid, l = 0; l < e.data.length; l++) (n = e.data[l]), o.set(n.data, c), (c += n.data.byteLength);
(a = u), (s = ((r = o)[0] << 16) | (r[1] << 8) | r[2]), (a.data = new Uint8Array()), 1 == s && ((a.packetLength = 6 + ((r[4] << 8) | r[5])), (a.dataAlignmentIndicator = 0 != (4 & r[6])), 192 & (s = r[7]) && ((a.pts = ((14 & r[9]) << 27) | ((255 & r[10]) << 20) | ((254 & r[11]) << 12) | ((255 & r[12]) << 5) | ((254 & r[13]) >>> 3)), (a.pts *= 4), (a.pts += (6 & r[13]) >>> 1), (a.dts = a.pts), 64 & s && ((a.dts = ((14 & r[14]) << 27) | ((255 & r[15]) << 20) | ((254 & r[16]) << 12) | ((255 & r[17]) << 5) | ((254 & r[18]) >>> 3)), (a.dts *= 4), (a.dts += (6 & r[18]) >>> 1))), (a.data = r.subarray(9 + r[8]))), (t = 'video' === t || u.packetLength <= e.size), (i || t) && ((e.size = 0), (e.data.length = 0)), t && d.trigger('data', u);
}
}
var t,
d = this,
r = !1,
a = { data: [], size: 0 },
s = { data: [], size: 0 },
o = { data: [], size: 0 };
Ge.prototype.init.call(this),
(this.push = function (i) {
({
pat: function () {},
pes: function () {
var e, t;
switch (i.streamType) {
case Be.H264_STREAM_TYPE:
(e = a), (t = 'video');
break;
case Be.ADTS_STREAM_TYPE:
(e = s), (t = 'audio');
break;
case Be.METADATA_STREAM_TYPE:
(e = o), (t = 'timed-metadata');
break;
default:
return;
}
i.payloadUnitStartIndicator && n(e, t, !0), e.data.push(i), (e.size += i.data.byteLength);
},
pmt: function () {
var e = { type: 'metadata', tracks: [] };
null !== (t = i.programMapTable).video && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.video, codec: 'avc', type: 'video' }), null !== t.audio && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.audio, codec: 'adts', type: 'audio' }), (r = !0), d.trigger('data', e);
},
}[i.type]());
}),
(this.reset = function () {
(a.size = 0), (a.data.length = 0), (s.size = 0), (s.data.length = 0), this.trigger('reset');
}),
(this.flushStreams_ = function () {
n(a, 'video'), n(s, 'audio'), n(o, 'timed-metadata');
}),
(this.flush = function () {
var e;
!r && t && ((e = { type: 'metadata', tracks: [] }), null !== t.video && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.video, codec: 'avc', type: 'video' }), null !== t.audio && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.audio, codec: 'adts', type: 'audio' }), d.trigger('data', e)), (r = !1), this.flushStreams_(), this.trigger('done');
});
}).prototype = new j());
var Ke,
Ye = { PAT_PID: 0, MP2T_PACKET_LENGTH: 188, TransportPacketStream: Xe, TransportParseStream: ze, ElementaryStream: Ge, TimestampRolloverStream: qe, CaptionStream: Ue.CaptionStream, Cea608Stream: Ue.Cea608Stream, Cea708Stream: Ue.Cea708Stream, MetadataStream: e };
for (Ke in Be) Be.hasOwnProperty(Ke) && (Ye[Ke] = Be[Ke]);
var Qe = Ye,
$e = se,
Je = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350],
Ze = function (u) {
var l,
c = 0;
Ze.prototype.init.call(this),
(this.skipWarn_ = function (e, t) {
this.trigger('log', { level: 'warn', message: 'adts skiping bytes ' + e + ' to ' + t + ' in frame ' + c + ' outside syncword' });
}),
(this.push = function (e) {
var t,
i,
n,
r,
a,
s,
o = 0;
if ((u || (c = 0), 'audio' === e.type)) {
for (l && l.length ? ((n = l), (l = new Uint8Array(n.byteLength + e.data.byteLength)).set(n), l.set(e.data, n.byteLength)) : (l = e.data); o + 7 < l.length; )
if (255 === l[o] && 240 == (246 & l[o + 1])) {
if (('number' == typeof s && (this.skipWarn_(s, o), (s = null)), (i = 2 * (1 & ~l[o + 1])), (t = ((3 & l[o + 3]) << 11) | (l[o + 4] << 3) | ((224 & l[o + 5]) >> 5)), (a = ((r = 1024 * (1 + (3 & l[o + 6]))) * $e) / Je[(60 & l[o + 2]) >>> 2]), l.byteLength - o < t)) break;
this.trigger('data', { pts: e.pts + c * a, dts: e.dts + c * a, sampleCount: r, audioobjecttype: 1 + ((l[o + 2] >>> 6) & 3), channelcount: ((1 & l[o + 2]) << 2) | ((192 & l[o + 3]) >>> 6), samplerate: Je[(60 & l[o + 2]) >>> 2], samplingfrequencyindex: (60 & l[o + 2]) >>> 2, samplesize: 16, data: l.subarray(o + 7 + i, o + t) }), c++, (o += t);
} else 'number' != typeof s && (s = o), o++;
'number' == typeof s && (this.skipWarn_(s, o), (s = null)), (l = l.subarray(o));
}
}),
(this.flush = function () {
(c = 0), this.trigger('done');
}),
(this.reset = function () {
(l = void 0), this.trigger('reset');
}),
(this.endTimeline = function () {
(l = void 0), this.trigger('endedtimeline');
});
};
Ze.prototype = new j();
var et,
tt,
it = Ze,
nt = function (n) {
var r = n.byteLength,
a = 0,
s = 0;
(this.length = function () {
return 8 * r;
}),
(this.bitsAvailable = function () {
return 8 * r + s;
}),
(this.loadWord = function () {
var e = n.byteLength - r,
t = new Uint8Array(4),
i = Math.min(4, r);
if (0 === i) throw new Error('no bytes available');
t.set(n.subarray(e, e + i)), (a = new DataView(t.buffer).getUint32(0)), (s = 8 * i), (r -= i);
}),
(this.skipBits = function (e) {
var t;
e < s || ((e -= s), (e -= 8 * (t = Math.floor(e / 8))), (r -= t), this.loadWord()), (a <<= e), (s -= e);
}),
(this.readBits = function (e) {
var t = Math.min(s, e),
i = a >>> (32 - t);
return 0 < (s -= t) ? (a <<= t) : 0 < r && this.loadWord(), 0 < (t = e - t) ? (i << t) | this.readBits(t) : i;
}),
(this.skipLeadingZeros = function () {
for (var e = 0; e < s; ++e) if (0 != (a & (2147483648 >>> e))) return (a <<= e), (s -= e), e;
return this.loadWord(), e + this.skipLeadingZeros();
}),
(this.skipUnsignedExpGolomb = function () {
this.skipBits(1 + this.skipLeadingZeros());
}),
(this.skipExpGolomb = function () {
this.skipBits(1 + this.skipLeadingZeros());
}),
(this.readUnsignedExpGolomb = function () {
var e = this.skipLeadingZeros();
return this.readBits(e + 1) - 1;
}),
(this.readExpGolomb = function () {
var e = this.readUnsignedExpGolomb();
return 1 & e ? (1 + e) >>> 1 : -1 * (e >>> 1);
}),
(this.readBoolean = function () {
return 1 === this.readBits(1);
}),
(this.readUnsignedByte = function () {
return this.readBits(8);
}),
this.loadWord();
},
rt = function () {
var n,
r,
a = 0;
rt.prototype.init.call(this),
(this.push = function (e) {
for (var t, i = (r = r ? ((t = new Uint8Array(r.byteLength + e.data.byteLength)).set(r), t.set(e.data, r.byteLength), t) : e.data).byteLength; a < i - 3; a++)
if (1 === r[a + 2]) {
n = a + 5;
break;
}
for (; n < i; )
switch (r[n]) {
case 0:
if (0 !== r[n - 1]) {
n += 2;
break;
}
if (0 !== r[n - 2]) {
n++;
break;
}
for (a + 3 !== n - 2 && this.trigger('data', r.subarray(a + 3, n - 2)); 1 !== r[++n] && n < i; );
(a = n - 2), (n += 3);
break;
case 1:
if (0 !== r[n - 1] || 0 !== r[n - 2]) {
n += 3;
break;
}
this.trigger('data', r.subarray(a + 3, n - 2)), (a = n - 2), (n += 3);
break;
default:
n += 3;
}
(r = r.subarray(a)), (n -= a), (a = 0);
}),
(this.reset = function () {
(r = null), (a = 0), this.trigger('reset');
}),
(this.flush = function () {
r && 3 < r.byteLength && this.trigger('data', r.subarray(a + 3)), (r = null), (a = 0), this.trigger('done');
}),
(this.endTimeline = function () {
this.flush(), this.trigger('endedtimeline');
});
};
(rt.prototype = new j()),
(tt = { 100: !0, 110: !0, 122: !0, 244: !0, 44: !0, 83: !0, 86: !0, 118: !0, 128: !0, 138: !0, 139: !0, 134: !0 }),
((et = function () {
var i,
n,
r,
a,
s,
o,
m,
t = new rt();
et.prototype.init.call(this),
((i = this).push = function (e) {
'video' === e.type && ((n = e.trackId), (r = e.pts), (a = e.dts), t.push(e));
}),
t.on('data', function (e) {
var t = { trackId: n, pts: r, dts: a, data: e, nalUnitTypeCode: 31 & e[0] };
switch (t.nalUnitTypeCode) {
case 5:
t.nalUnitType = 'slice_layer_without_partitioning_rbsp_idr';
break;
case 6:
(t.nalUnitType = 'sei_rbsp'), (t.escapedRBSP = s(e.subarray(1)));
break;
case 7:
(t.nalUnitType = 'seq_parameter_set_rbsp'), (t.escapedRBSP = s(e.subarray(1))), (t.config = o(t.escapedRBSP));
break;
case 8:
t.nalUnitType = 'pic_parameter_set_rbsp';
break;
case 9:
t.nalUnitType = 'access_unit_delimiter_rbsp';
}
i.trigger('data', t);
}),
t.on('done', function () {
i.trigger('done');
}),
t.on('partialdone', function () {
i.trigger('partialdone');
}),
t.on('reset', function () {
i.trigger('reset');
}),
t.on('endedtimeline', function () {
i.trigger('endedtimeline');
}),
(this.flush = function () {
t.flush();
}),
(this.partialFlush = function () {
t.partialFlush();
}),
(this.reset = function () {
t.reset();
}),
(this.endTimeline = function () {
t.endTimeline();
}),
(m = function (e, t) {
for (var i = 8, n = 8, r = 0; r < e; r++) i = 0 === (n = 0 !== n ? (i + t.readExpGolomb() + 256) % 256 : n) ? i : n;
}),
(s = function (e) {
for (var t = e.byteLength, i = [], n = 1; n < t - 2; ) 0 === e[n] && 0 === e[n + 1] && 3 === e[n + 2] ? (i.push(n + 2), (n += 2)) : n++;
if (0 === i.length) return e;
for (var r = t - i.length, a = new Uint8Array(r), s = 0, n = 0; n < r; s++, n++) s === i[0] && (s++, i.shift()), (a[n] = e[s]);
return a;
}),
(o = function (e) {
var t,
i,
n,
r,
a,
s = 0,
o = 0,
u = 0,
l = 0,
c = [1, 1],
d = new nt(e),
h = d.readUnsignedByte(),
p = d.readUnsignedByte(),
f = d.readUnsignedByte();
if ((d.skipUnsignedExpGolomb(), tt[h] && (3 === (i = d.readUnsignedExpGolomb()) && d.skipBits(1), d.skipUnsignedExpGolomb(), d.skipUnsignedExpGolomb(), d.skipBits(1), d.readBoolean()))) for (r = 3 !== i ? 8 : 12, a = 0; a < r; a++) d.readBoolean() && m(a < 6 ? 16 : 64, d);
if ((d.skipUnsignedExpGolomb(), 0 === (n = d.readUnsignedExpGolomb()))) d.readUnsignedExpGolomb();
else if (1 === n) for (d.skipBits(1), d.skipExpGolomb(), d.skipExpGolomb(), t = d.readUnsignedExpGolomb(), a = 0; a < t; a++) d.skipExpGolomb();
if ((d.skipUnsignedExpGolomb(), d.skipBits(1), (e = d.readUnsignedExpGolomb()), (i = d.readUnsignedExpGolomb()), 0 === (n = d.readBits(1)) && d.skipBits(1), d.skipBits(1), d.readBoolean() && ((s = d.readUnsignedExpGolomb()), (o = d.readUnsignedExpGolomb()), (u = d.readUnsignedExpGolomb()), (l = d.readUnsignedExpGolomb())), d.readBoolean() && d.readBoolean())) {
switch (d.readUnsignedByte()) {
case 1:
c = [1, 1];
break;
case 2:
c = [12, 11];
break;
case 3:
c = [10, 11];
break;
case 4:
c = [16, 11];
break;
case 5:
c = [40, 33];
break;
case 6:
c = [24, 11];
break;
case 7:
c = [20, 11];
break;
case 8:
c = [32, 11];
break;
case 9:
c = [80, 33];
break;
case 10:
c = [18, 11];
break;
case 11:
c = [15, 11];
break;
case 12:
c = [64, 33];
break;
case 13:
c = [160, 99];
break;
case 14:
c = [4, 3];
break;
case 15:
c = [3, 2];
break;
case 16:
c = [2, 1];
break;
case 255:
c = [(d.readUnsignedByte() << 8) | d.readUnsignedByte(), (d.readUnsignedByte() << 8) | d.readUnsignedByte()];
}
c && (c[0], c[1]);
}
return { profileIdc: h, levelIdc: f, profileCompatibility: p, width: 16 * (e + 1) - 2 * s - 2 * o, height: (2 - n) * (i + 1) * 16 - 2 * u - 2 * l, sarRatio: c };
});
}).prototype = new j());
function at(e, t) {
var i = 0 <= (i = (e[t + 6] << 21) | (e[t + 7] << 14) | (e[t + 8] << 7) | e[t + 9]) ? i : 0;
return (16 & e[t + 5]) >> 4 ? i + 20 : i + 10;
}
function st(e, t) {
return e.length - t < 10 || e[t] !== 'I'.charCodeAt(0) || e[t + 1] !== 'D'.charCodeAt(0) || e[t + 2] !== '3'.charCodeAt(0) ? t : st(e, (t += at(e, t)));
}
function ot(e) {
return (e[0] << 21) | (e[1] << 14) | (e[2] << 7) | e[3];
}
var qe = { H264Stream: et, NalByteStream: rt },
ut = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350],
lt = {
isLikelyAacData: function (e) {
var t = st(e, 0);
return e.length >= t + 2 && 255 == (255 & e[t]) && 240 == (240 & e[t + 1]) && 16 == (22 & e[t + 1]);
},
parseId3TagSize: at,
parseAdtsSize: function (e, t) {
var i = (224 & e[t + 5]) >> 5,
n = e[t + 4] << 3;
return (6144 & e[t + 3]) | n | i;
},
parseType: function (e, t) {
return e[t] === 'I'.charCodeAt(0) && e[t + 1] === 'D'.charCodeAt(0) && e[t + 2] === '3'.charCodeAt(0) ? 'timed-metadata' : !0 & e[t] && 240 == (240 & e[t + 1]) ? 'audio' : null;
},
parseSampleRate: function (e) {
for (var t = 0; t + 5 < e.length; ) {
if (255 === e[t] && 240 == (246 & e[t + 1])) return ut[(60 & e[t + 2]) >>> 2];
t++;
}
return null;
},
parseAacTimestamp: function (e) {
var t,
i = 10;
64 & e[5] && ((i += 4), (i += ot(e.subarray(10, 14))));
do {
if ((t = ot(e.subarray(i + 4, i + 8))) < 1) return null;
if ('PRIV' === String.fromCharCode(e[i], e[i + 1], e[i + 2], e[i + 3]))
for (var n = e.subarray(i + 10, i + t + 10), r = 0; r < n.byteLength; r++)
if (0 === n[r]) {
if (
'com.apple.streaming.transportStreamTimestamp' !==
unescape(
(function (e, t, i) {
for (var n = '', r = t; r < i; r++) n += '%' + ('00' + e[r].toString(16)).slice(-2);
return n;
})(n, 0, r)
)
)
break;
var a = n.subarray(r + 1),
s = ((1 & a[3]) << 30) | (a[4] << 22) | (a[5] << 14) | (a[6] << 6) | (a[7] >>> 2);
return (s *= 4), (s += 3 & a[7]);
}
} while (((i += 10), (i += t) < e.byteLength));
return null;
},
},
ct = function () {
var a = new Uint8Array(),
s = 0;
ct.prototype.init.call(this),
(this.setTimestamp = function (e) {
s = e;
}),
(this.push = function (e) {
var t,
i,
n = 0,
r = 0;
for (a.length ? ((i = a.length), (a = new Uint8Array(e.byteLength + i)).set(a.subarray(0, i)), a.set(e, i)) : (a = e); 3 <= a.length - r; )
if (a[r] !== 'I'.charCodeAt(0) || a[r + 1] !== 'D'.charCodeAt(0) || a[r + 2] !== '3'.charCodeAt(0))
if (255 != (255 & a[r]) || 240 != (240 & a[r + 1])) r++;
else {
if (a.length - r < 7) break;
if (r + (n = lt.parseAdtsSize(a, r)) > a.length) break;
(t = { type: 'audio', data: a.subarray(r, r + n), pts: s, dts: s }), this.trigger('data', t), (r += n);
}
else {
if (a.length - r < 10) break;
if (r + (n = lt.parseId3TagSize(a, r)) > a.length) break;
(t = { type: 'timed-metadata', data: a.subarray(r, r + n) }), this.trigger('data', t), (r += n);
}
(e = a.length - r), (a = 0 < e ? a.subarray(r) : new Uint8Array());
}),
(this.reset = function () {
(a = new Uint8Array()), this.trigger('reset');
}),
(this.endTimeline = function () {
(a = new Uint8Array()), this.trigger('endedtimeline');
});
};
ct.prototype = new j();
function dt(e, t) {
(t.stream = e), this.trigger('log', t);
}
function ht(e, t) {
for (var i = Object.keys(t), n = 0; n < i.length; n++) {
var r = i[n];
'headOfPipeline' !== r && t[r].on && t[r].on('log', dt.bind(e, r));
}
}
function pt(e, t) {
var i;
if (e.length === t.length) {
for (i = 0; i < e.length; i++) if (e[i] !== t[i]) return;
return 1;
}
}
function ft(e, t, i, n, r, a) {
return { start: { dts: e, pts: e + (i - t) }, end: { dts: e + (n - t), pts: e + (r - i) }, prependedContentDuration: a, baseMediaDecodeTime: e };
}
var mt,
gt,
yt,
vt = ct,
_t = ['audioobjecttype', 'channelcount', 'samplerate', 'samplingfrequencyindex', 'samplesize'],
bt = ['width', 'height', 'profileIdc', 'levelIdc', 'profileCompatibility', 'sarRatio'],
Tt = qe.H264Stream,
wt = lt.isLikelyAacData,
St = se,
Et = function (a, s) {
var o = [],
u = 0,
l = 0,
c = 1 / 0,
d = (s = s || {}).firstSequenceNumber || 0;
Et.prototype.init.call(this),
(this.push = function (t) {
_e(a, t),
a &&
_t.forEach(function (e) {
a[e] = t[e];
}),
o.push(t);
}),
(this.setEarliestDts = function (e) {
u = e;
}),
(this.setVideoBaseMediaDecodeTime = function (e) {
c = e;
}),
(this.setAudioAppendStart = function (e) {
l = e;
}),
(this.flush = function () {
var e, t, i, n, r;
0 !== o.length && ((e = pe(o, a, u)), (a.baseMediaDecodeTime = ve(a, s.keepOriginalTimestamps)), (r = he(a, e, l, c)), (a.samples = fe(e)), (t = G(me(e))), (o = []), (n = X(d, [a])), (i = new Uint8Array(n.byteLength + t.byteLength)), d++, i.set(n), i.set(t, n.byteLength), ye(a), (n = Math.ceil((1024 * St) / a.samplerate)), e.length && ((n = e.length * n), this.trigger('segmentTimingInfo', ft(le(a.baseMediaDecodeTime, a.samplerate), e[0].dts, e[0].pts, e[0].dts + n, e[0].pts + n, r || 0)), this.trigger('timingInfo', { start: e[0].pts, end: e[0].pts + n })), this.trigger('data', { track: a, boxes: i })), this.trigger('done', 'AudioSegmentStream');
}),
(this.reset = function () {
ye(a), (o = []), this.trigger('reset');
});
};
(Et.prototype = new j()),
((mt = function (s, a) {
var t,
i,
o = [],
l = [],
u = (a = a || {}).firstSequenceNumber || 0;
mt.prototype.init.call(this),
delete s.minPTS,
(this.gopCache_ = []),
(this.push = function (e) {
_e(s, e),
'seq_parameter_set_rbsp' !== e.nalUnitType ||
t ||
((t = e.config),
(s.sps = [e.data]),
bt.forEach(function (e) {
s[e] = t[e];
}, this)),
'pic_parameter_set_rbsp' !== e.nalUnitType || i || ((i = e.data), (s.pps = [e.data])),
o.push(e);
}),
(this.flush = function () {
for (var e, t, i, n = 0; o.length && 'access_unit_delimiter_rbsp' !== o[0].nalUnitType; ) o.shift();
if (0 === o.length) return this.resetStream_(), void this.trigger('done', 'VideoSegmentStream');
if (((e = Y(o)), (t = Q(e))[0][0].keyFrame || ((i = this.getGopForFusion_(o[0], s)) ? ((n = i.duration), t.unshift(i), (t.byteLength += i.byteLength), (t.nalCount += i.nalCount), (t.pts = i.pts), (t.dts = i.dts), (t.duration += i.duration)) : (t = $(t))), l.length)) {
var r = a.alignGopsAtEnd ? this.alignGopsAtEnd_(t) : this.alignGopsAtStart_(t);
if (!r) return this.gopCache_.unshift({ gop: t.pop(), pps: s.pps, sps: s.sps }), (this.gopCache_.length = Math.min(6, this.gopCache_.length)), (o = []), this.resetStream_(), void this.trigger('done', 'VideoSegmentStream');
ye(s), (t = r);
}
_e(s, t),
(s.samples = J(t)),
(e = G(Z(t))),
(s.baseMediaDecodeTime = ve(s, a.keepOriginalTimestamps)),
this.trigger(
'processedGopsInfo',
t.map(function (e) {
return { pts: e.pts, dts: e.dts, byteLength: e.byteLength };
})
),
(i = t[0]),
(r = t[t.length - 1]),
this.trigger('segmentTimingInfo', ft(s.baseMediaDecodeTime, i.dts, i.pts, r.dts + r.duration, r.pts + r.duration, n)),
this.trigger('timingInfo', { start: t[0].pts, end: t[t.length - 1].pts + t[t.length - 1].duration }),
this.gopCache_.unshift({ gop: t.pop(), pps: s.pps, sps: s.sps }),
(this.gopCache_.length = Math.min(6, this.gopCache_.length)),
(o = []),
this.trigger('baseMediaDecodeTime', s.baseMediaDecodeTime),
this.trigger('timelineStartInfo', s.timelineStartInfo),
(n = X(u, [s])),
(t = new Uint8Array(n.byteLength + e.byteLength)),
u++,
t.set(n),
t.set(e, n.byteLength),
this.trigger('data', { track: s, boxes: t }),
this.resetStream_(),
this.trigger('done', 'VideoSegmentStream');
}),
(this.reset = function () {
this.resetStream_(), (o = []), (this.gopCache_.length = 0), (l.length = 0), this.trigger('reset');
}),
(this.resetStream_ = function () {
ye(s), (i = t = void 0);
}),
(this.getGopForFusion_ = function (e) {
for (var t, i, n, r = 1 / 0, a = 0; a < this.gopCache_.length; a++) (i = (n = this.gopCache_[a]).gop), s.pps && pt(s.pps[0], n.pps[0]) && s.sps && pt(s.sps[0], n.sps[0]) && (i.dts < s.timelineStartInfo.dts || (-1e4 <= (i = e.dts - i.dts - i.duration) && i <= 45e3 && (!t || i < r) && ((t = n), (r = i))));
return t ? t.gop : null;
}),
(this.alignGopsAtStart_ = function (e) {
for (var t, i, n, r, a = e.byteLength, s = e.nalCount, o = e.duration, u = (t = 0); u < l.length && t < e.length && ((i = l[u]), (n = e[t]), i.pts !== n.pts); ) n.pts > i.pts ? u++ : (t++, (a -= n.byteLength), (s -= n.nalCount), (o -= n.duration));
return 0 === t ? e : t === e.length ? null : (((r = e.slice(t)).byteLength = a), (r.duration = o), (r.nalCount = s), (r.pts = r[0].pts), (r.dts = r[0].dts), r);
}),
(this.alignGopsAtEnd_ = function (e) {
for (var t, i, n = l.length - 1, r = e.length - 1, a = null, s = !1; 0 <= n && 0 <= r; ) {
if (((t = l[n]), (i = e[r]), t.pts === i.pts)) {
s = !0;
break;
}
t.pts > i.pts ? n-- : (n === l.length - 1 && (a = r), r--);
}
if (!s && null === a) return null;
if (0 === (u = s ? r : a)) return e;
var o = e.slice(u),
u = o.reduce(
function (e, t) {
return (e.byteLength += t.byteLength), (e.duration += t.duration), (e.nalCount += t.nalCount), e;
},
{ byteLength: 0, duration: 0, nalCount: 0 }
);
return (o.byteLength = u.byteLength), (o.duration = u.duration), (o.nalCount = u.nalCount), (o.pts = o[0].pts), (o.dts = o[0].dts), o;
}),
(this.alignGopsWith = function (e) {
l = e;
});
}).prototype = new j()),
((yt = function (e, t) {
(this.numberOfTracks = 0),
(this.metadataStream = t),
'undefined' != typeof (e = e || {}).remux ? (this.remuxTracks = !!e.remux) : (this.remuxTracks = !0),
'boolean' == typeof e.keepOriginalTimestamps ? (this.keepOriginalTimestamps = e.keepOriginalTimestamps) : (this.keepOriginalTimestamps = !1),
(this.pendingTracks = []),
(this.videoTrack = null),
(this.pendingBoxes = []),
(this.pendingCaptions = []),
(this.pendingMetadata = []),
(this.pendingBytes = 0),
(this.emittedTracks = 0),
yt.prototype.init.call(this),
(this.push = function (e) {
return e.text ? this.pendingCaptions.push(e) : e.frames ? this.pendingMetadata.push(e) : (this.pendingTracks.push(e.track), (this.pendingBytes += e.boxes.byteLength), 'video' === e.track.type && ((this.videoTrack = e.track), this.pendingBoxes.push(e.boxes)), void ('audio' === e.track.type && ((this.audioTrack = e.track), this.pendingBoxes.unshift(e.boxes))));
});
}).prototype = new j()),
(yt.prototype.flush = function (e) {
var t,
i,
n,
r = 0,
a = { captions: [], captionStreams: {}, metadata: [], info: {} },
s = 0;
if (this.pendingTracks.length < this.numberOfTracks) {
if ('VideoSegmentStream' !== e && 'AudioSegmentStream' !== e) return;
if (this.remuxTracks) return;
if (0 === this.pendingTracks.length) return this.emittedTracks++, void (this.emittedTracks >= this.numberOfTracks && (this.trigger('done'), (this.emittedTracks = 0)));
}
if (
(this.videoTrack
? ((s = this.videoTrack.timelineStartInfo.pts),
bt.forEach(function (e) {
a.info[e] = this.videoTrack[e];
}, this))
: this.audioTrack &&
((s = this.audioTrack.timelineStartInfo.pts),
_t.forEach(function (e) {
a.info[e] = this.audioTrack[e];
}, this)),
this.videoTrack || this.audioTrack)
) {
for (1 === this.pendingTracks.length ? (a.type = this.pendingTracks[0].type) : (a.type = 'combined'), this.emittedTracks += this.pendingTracks.length, e = K(this.pendingTracks), a.initSegment = new Uint8Array(e.byteLength), a.initSegment.set(e), a.data = new Uint8Array(this.pendingBytes), n = 0; n < this.pendingBoxes.length; n++) a.data.set(this.pendingBoxes[n], r), (r += this.pendingBoxes[n].byteLength);
for (n = 0; n < this.pendingCaptions.length; n++) ((t = this.pendingCaptions[n]).startTime = de(t.startPts, s, this.keepOriginalTimestamps)), (t.endTime = de(t.endPts, s, this.keepOriginalTimestamps)), (a.captionStreams[t.stream] = !0), a.captions.push(t);
for (n = 0; n < this.pendingMetadata.length; n++) ((i = this.pendingMetadata[n]).cueTime = de(i.pts, s, this.keepOriginalTimestamps)), a.metadata.push(i);
for (a.metadata.dispatchType = this.metadataStream.dispatchType, this.pendingTracks.length = 0, this.videoTrack = null, this.pendingBoxes.length = 0, this.pendingCaptions.length = 0, this.pendingBytes = 0, this.pendingMetadata.length = 0, this.trigger('data', a), n = 0; n < a.captions.length; n++) (t = a.captions[n]), this.trigger('caption', t);
for (n = 0; n < a.metadata.length; n++) (i = a.metadata[n]), this.trigger('id3Frame', i);
}
this.emittedTracks >= this.numberOfTracks && (this.trigger('done'), (this.emittedTracks = 0));
}),
(yt.prototype.setRemux = function (e) {
this.remuxTracks = e;
}),
((gt = function (n) {
var r,
a,
s = this,
i = !0;
gt.prototype.init.call(this),
(this.baseMediaDecodeTime = (n = n || {}).baseMediaDecodeTime || 0),
(this.transmuxPipeline_ = {}),
(this.setupAacPipeline = function () {
var t = {};
((this.transmuxPipeline_ = t).type = 'aac'),
(t.metadataStream = new Qe.MetadataStream()),
(t.aacStream = new vt()),
(t.audioTimestampRolloverStream = new Qe.TimestampRolloverStream('audio')),
(t.timedMetadataTimestampRolloverStream = new Qe.TimestampRolloverStream('timed-metadata')),
(t.adtsStream = new it()),
(t.coalesceStream = new yt(n, t.metadataStream)),
(t.headOfPipeline = t.aacStream),
t.aacStream.pipe(t.audioTimestampRolloverStream).pipe(t.adtsStream),
t.aacStream.pipe(t.timedMetadataTimestampRolloverStream).pipe(t.metadataStream).pipe(t.coalesceStream),
t.metadataStream.on('timestamp', function (e) {
t.aacStream.setTimestamp(e.timeStamp);
}),
t.aacStream.on('data', function (e) {
('timed-metadata' !== e.type && 'audio' !== e.type) || t.audioSegmentStream || ((a = a || { timelineStartInfo: { baseMediaDecodeTime: s.baseMediaDecodeTime }, codec: 'adts', type: 'audio' }), t.coalesceStream.numberOfTracks++, (t.audioSegmentStream = new Et(a, n)), t.audioSegmentStream.on('log', s.getLogTrigger_('audioSegmentStream')), t.audioSegmentStream.on('timingInfo', s.trigger.bind(s, 'audioTimingInfo')), t.adtsStream.pipe(t.audioSegmentStream).pipe(t.coalesceStream), s.trigger('trackinfo', { hasAudio: !!a, hasVideo: !!r }));
}),
t.coalesceStream.on('data', this.trigger.bind(this, 'data')),
t.coalesceStream.on('done', this.trigger.bind(this, 'done')),
ht(this, t);
}),
(this.setupTsPipeline = function () {
var i = {};
((this.transmuxPipeline_ = i).type = 'ts'),
(i.metadataStream = new Qe.MetadataStream()),
(i.packetStream = new Qe.TransportPacketStream()),
(i.parseStream = new Qe.TransportParseStream()),
(i.elementaryStream = new Qe.ElementaryStream()),
(i.timestampRolloverStream = new Qe.TimestampRolloverStream()),
(i.adtsStream = new it()),
(i.h264Stream = new Tt()),
(i.captionStream = new Qe.CaptionStream(n)),
(i.coalesceStream = new yt(n, i.metadataStream)),
(i.headOfPipeline = i.packetStream),
i.packetStream.pipe(i.parseStream).pipe(i.elementaryStream).pipe(i.timestampRolloverStream),
i.timestampRolloverStream.pipe(i.h264Stream),
i.timestampRolloverStream.pipe(i.adtsStream),
i.timestampRolloverStream.pipe(i.metadataStream).pipe(i.coalesceStream),
i.h264Stream.pipe(i.captionStream).pipe(i.coalesceStream),
i.elementaryStream.on('data', function (e) {
var t;
if ('metadata' === e.type) {
for (t = e.tracks.length; t--; ) r || 'video' !== e.tracks[t].type ? a || 'audio' !== e.tracks[t].type || ((a = e.tracks[t]).timelineStartInfo.baseMediaDecodeTime = s.baseMediaDecodeTime) : ((r = e.tracks[t]).timelineStartInfo.baseMediaDecodeTime = s.baseMediaDecodeTime);
r &&
!i.videoSegmentStream &&
(i.coalesceStream.numberOfTracks++,
(i.videoSegmentStream = new mt(r, n)),
i.videoSegmentStream.on('log', s.getLogTrigger_('videoSegmentStream')),
i.videoSegmentStream.on('timelineStartInfo', function (e) {
a && !n.keepOriginalTimestamps && ((a.timelineStartInfo = e), i.audioSegmentStream.setEarliestDts(e.dts - s.baseMediaDecodeTime));
}),
i.videoSegmentStream.on('processedGopsInfo', s.trigger.bind(s, 'gopInfo')),
i.videoSegmentStream.on('segmentTimingInfo', s.trigger.bind(s, 'videoSegmentTimingInfo')),
i.videoSegmentStream.on('baseMediaDecodeTime', function (e) {
a && i.audioSegmentStream.setVideoBaseMediaDecodeTime(e);
}),
i.videoSegmentStream.on('timingInfo', s.trigger.bind(s, 'videoTimingInfo')),
i.h264Stream.pipe(i.videoSegmentStream).pipe(i.coalesceStream)),
a && !i.audioSegmentStream && (i.coalesceStream.numberOfTracks++, (i.audioSegmentStream = new Et(a, n)), i.audioSegmentStream.on('log', s.getLogTrigger_('audioSegmentStream')), i.audioSegmentStream.on('timingInfo', s.trigger.bind(s, 'audioTimingInfo')), i.audioSegmentStream.on('segmentTimingInfo', s.trigger.bind(s, 'audioSegmentTimingInfo')), i.adtsStream.pipe(i.audioSegmentStream).pipe(i.coalesceStream)),
s.trigger('trackinfo', { hasAudio: !!a, hasVideo: !!r });
}
}),
i.coalesceStream.on('data', this.trigger.bind(this, 'data')),
i.coalesceStream.on('id3Frame', function (e) {
(e.dispatchType = i.metadataStream.dispatchType), s.trigger('id3Frame', e);
}),
i.coalesceStream.on('caption', this.trigger.bind(this, 'caption')),
i.coalesceStream.on('done', this.trigger.bind(this, 'done')),
ht(this, i);
}),
(this.setBaseMediaDecodeTime = function (e) {
var t = this.transmuxPipeline_;
n.keepOriginalTimestamps || (this.baseMediaDecodeTime = e), a && ((a.timelineStartInfo.dts = void 0), (a.timelineStartInfo.pts = void 0), ye(a), t.audioTimestampRolloverStream && t.audioTimestampRolloverStream.discontinuity()), r && (t.videoSegmentStream && (t.videoSegmentStream.gopCache_ = []), (r.timelineStartInfo.dts = void 0), (r.timelineStartInfo.pts = void 0), ye(r), t.captionStream.reset()), t.timestampRolloverStream && t.timestampRolloverStream.discontinuity();
}),
(this.setAudioAppendStart = function (e) {
a && this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(e);
}),
(this.setRemux = function (e) {
var t = this.transmuxPipeline_;
(n.remux = e), t && t.coalesceStream && t.coalesceStream.setRemux(e);
}),
(this.alignGopsWith = function (e) {
r && this.transmuxPipeline_.videoSegmentStream && this.transmuxPipeline_.videoSegmentStream.alignGopsWith(e);
}),
(this.getLogTrigger_ = function (t) {
var i = this;
return function (e) {
(e.stream = t), i.trigger('log', e);
};
}),
(this.push = function (e) {
var t;
i && ((t = wt(e)) && 'aac' !== this.transmuxPipeline_.type ? this.setupAacPipeline() : t || 'ts' === this.transmuxPipeline_.type || this.setupTsPipeline(), (i = !1)), this.transmuxPipeline_.headOfPipeline.push(e);
}),
(this.flush = function () {
(i = !0), this.transmuxPipeline_.headOfPipeline.flush();
}),
(this.endTimeline = function () {
this.transmuxPipeline_.headOfPipeline.endTimeline();
}),
(this.reset = function () {
this.transmuxPipeline_.headOfPipeline && this.transmuxPipeline_.headOfPipeline.reset();
}),
(this.resetCaptions = function () {
this.transmuxPipeline_.captionStream && this.transmuxPipeline_.captionStream.reset();
});
}).prototype = new j());
function kt(e, c) {
var i = Ot(e, ['moof', 'traf']),
e = Ot(e, ['mdat']),
d = {},
n = [];
return (
e.forEach(function (e, t) {
t = i[t];
n.push({ mdat: e, traf: t });
}),
n.forEach(function (e) {
var t,
i,
n,
r,
a,
s = e.mdat,
o = e.traf,
u = Ot(o, ['tfhd']),
l = Bt(u[0]),
e = l.trackId,
u = Ot(o, ['tfdt']),
u = 0 < u.length ? Mt(u[0]).baseMediaDecodeTime : 0,
o = Ot(o, ['trun']);
c === e &&
0 < o.length &&
((o = o),
(t = u),
(i = (l = l).defaultSampleDuration || 0),
(n = l.defaultSampleSize || 0),
(r = l.trackId),
(a = []),
o.forEach(function (e) {
e = Ut(e).samples;
e.forEach(function (e) {
void 0 === e.duration && (e.duration = i), void 0 === e.size && (e.size = n), (e.trackId = r), (e.dts = t), void 0 === e.compositionTimeOffset && (e.compositionTimeOffset = 0), (e.pts = t + e.compositionTimeOffset), (t += e.duration);
}),
(a = a.concat(e));
}),
(s = (function (e, t, i) {
for (var n, r, a = new DataView(e.buffer, e.byteOffset, e.byteLength), s = { logs: [], seiNals: [] }, o = 0; o + 4 < e.length; o += n)
if (((n = a.getUint32(o)), (o += 4), !(n <= 0)))
switch (31 & e[o]) {
case 6:
var u = e.subarray(o + 1, o + 1 + n),
l = (function (e, t) {
for (var i = e, n = 0; n < t.length; n++) {
var r = t[n];
if (i < r.size) return r;
i -= r.size;
}
return null;
})(o, t),
u = { nalUnitType: 'sei_rbsp', size: n, data: u, escapedRBSP: Ft(u), trackId: i };
if (l) (u.pts = l.pts), (u.dts = l.dts), (r = l);
else {
if (!r) {
s.logs.push({ level: 'warn', message: "We've encountered a nal unit without data at " + o + ' for trackId ' + i + '. See mux.js#223.' });
break;
}
(u.pts = r.pts), (u.dts = r.dts);
}
s.seiNals.push(u);
}
return s;
})(s, a, e)),
d[e] || (d[e] = { seiNals: [], logs: [] }),
(d[e].seiNals = d[e].seiNals.concat(s.seiNals)),
(d[e].logs = d[e].logs.concat(s.logs)));
}),
d
);
}
function Ct(e) {
var t = 31 & e[1];
return (t <<= 8), (t |= e[2]);
}
function It(e) {
return !!(64 & e[1]);
}
function xt(e) {
var t = 0;
return 1 < (48 & e[3]) >>> 4 && (t += e[4] + 1), t;
}
function At(e) {
switch (e) {
case 5:
return 'slice_layer_without_partitioning_rbsp_idr';
case 6:
return 'sei_rbsp';
case 7:
return 'seq_parameter_set_rbsp';
case 8:
return 'pic_parameter_set_rbsp';
case 9:
return 'access_unit_delimiter_rbsp';
default:
return null;
}
}
var Pt = { Transmuxer: gt, VideoSegmentStream: mt, AudioSegmentStream: Et, AUDIO_PROPERTIES: _t, VIDEO_PROPERTIES: bt, generateSegmentTimingInfo: ft },
e = function (e) {
return e >>> 0;
},
Lt = function (e) {
var t = '';
return (t += String.fromCharCode(e[0])), (t += String.fromCharCode(e[1])), (t += String.fromCharCode(e[2])), (t += String.fromCharCode(e[3]));
},
Dt = e,
Ot = function e(t, i) {
var n,
r,
a,
s = [];
if (!i.length) return null;
for (n = 0; n < t.byteLength; ) (r = Dt((t[n] << 24) | (t[n + 1] << 16) | (t[n + 2] << 8) | t[n + 3])), (a = Lt(t.subarray(n + 4, n + 8))), (r = 1 < r ? n + r : t.byteLength), a === i[0] && (1 === i.length ? s.push(t.subarray(n + 8, r)) : (a = e(t.subarray(n + 8, r), i.slice(1))).length && (s = s.concat(a))), (n = r);
return s;
},
Rt = e,
Mt = function (e) {
var t = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), baseMediaDecodeTime: Rt((e[4] << 24) | (e[5] << 16) | (e[6] << 8) | e[7]) };
return 1 === t.version && ((t.baseMediaDecodeTime *= Math.pow(2, 32)), (t.baseMediaDecodeTime += Rt((e[8] << 24) | (e[9] << 16) | (e[10] << 8) | e[11]))), t;
},
Nt = function (e) {
return { isLeading: (12 & e[0]) >>> 2, dependsOn: 3 & e[0], isDependedOn: (192 & e[1]) >>> 6, hasRedundancy: (48 & e[1]) >>> 4, paddingValue: (14 & e[1]) >>> 1, isNonSyncSample: 1 & e[1], degradationPriority: (e[2] << 8) | e[3] };
},
Ut = function (e) {
var t,
i = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), samples: [] },
n = new DataView(e.buffer, e.byteOffset, e.byteLength),
r = 1 & i.flags[2],
a = 4 & i.flags[2],
s = 1 & i.flags[1],
o = 2 & i.flags[1],
u = 4 & i.flags[1],
l = 8 & i.flags[1],
c = n.getUint32(4),
d = 8;
for (r && ((i.dataOffset = n.getInt32(d)), (d += 4)), a && c && ((t = { flags: Nt(e.subarray(d, d + 4)) }), (d += 4), s && ((t.duration = n.getUint32(d)), (d += 4)), o && ((t.size = n.getUint32(d)), (d += 4)), l && (1 === i.version ? (t.compositionTimeOffset = n.getInt32(d)) : (t.compositionTimeOffset = n.getUint32(d)), (d += 4)), i.samples.push(t), c--); c--; ) (t = {}), s && ((t.duration = n.getUint32(d)), (d += 4)), o && ((t.size = n.getUint32(d)), (d += 4)), u && ((t.flags = Nt(e.subarray(d, d + 4))), (d += 4)), l && (1 === i.version ? (t.compositionTimeOffset = n.getInt32(d)) : (t.compositionTimeOffset = n.getUint32(d)), (d += 4)), i.samples.push(t);
return i;
},
Bt = function (e) {
var t = new DataView(e.buffer, e.byteOffset, e.byteLength),
i = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), trackId: t.getUint32(4) },
n = 1 & i.flags[2],
r = 2 & i.flags[2],
a = 8 & i.flags[2],
s = 16 & i.flags[2],
o = 32 & i.flags[2],
u = 65536 & i.flags[0],
l = 131072 & i.flags[0],
e = 8;
return n && ((e += 4), (i.baseDataOffset = t.getUint32(12)), (e += 4)), r && ((i.sampleDescriptionIndex = t.getUint32(e)), (e += 4)), a && ((i.defaultSampleDuration = t.getUint32(e)), (e += 4)), s && ((i.defaultSampleSize = t.getUint32(e)), (e += 4)), o && (i.defaultSampleFlags = t.getUint32(e)), u && (i.durationIsEmpty = !0), !n && l && (i.baseDataOffsetIsMoof = !0), i;
},
Ft = Se,
jt = Ue.CaptionStream,
Ht = function () {
var t,
r,
a,
s,
o,
i,
n = !1;
(this.isInitialized = function () {
return n;
}),
(this.init = function (e) {
(t = new jt()),
(n = !0),
(i = !!e && e.isPartial),
t.on('data', function (e) {
(e.startTime = e.startPts / s), (e.endTime = e.endPts / s), o.captions.push(e), (o.captionStreams[e.stream] = !0);
}),
t.on('log', function (e) {
o.logs.push(e);
});
}),
(this.isNewInit = function (e, t) {
return !((e && 0 === e.length) || (t && 'object' == typeof t && 0 === Object.keys(t).length)) && (a !== e[0] || s !== t[a]);
}),
(this.parse = function (e, t, i) {
if (!this.isInitialized()) return null;
if (!t || !i) return null;
if (this.isNewInit(t, i)) (a = t[0]), (s = i[a]);
else if (null === a || !s) return r.push(e), null;
for (; 0 < r.length; ) {
var n = r.shift();
this.parse(n, t, i);
}
return (
(e = (function (e, t, i) {
if (null === t) return null;
t = kt(e, t)[t] || {};
return { seiNals: t.seiNals, logs: t.logs, timescale: i };
})(e, a, s)) &&
e.logs &&
(o.logs = o.logs.concat(e.logs)),
null !== e && e.seiNals ? (this.pushNals(e.seiNals), this.flushStream(), o) : o.logs.length ? { logs: o.logs, captions: [], captionStreams: [] } : null
);
}),
(this.pushNals = function (e) {
if (!this.isInitialized() || !e || 0 === e.length) return null;
e.forEach(function (e) {
t.push(e);
});
}),
(this.flushStream = function () {
if (!this.isInitialized()) return null;
i ? t.partialFlush() : t.flush();
}),
(this.clearParsedCaptions = function () {
(o.captions = []), (o.captionStreams = {}), (o.logs = []);
}),
(this.resetCaptionStream = function () {
if (!this.isInitialized()) return null;
t.reset();
}),
(this.clearAllCaptions = function () {
this.clearParsedCaptions(), this.resetCaptionStream();
}),
(this.reset = function () {
(r = []), (s = a = null), o ? this.clearParsedCaptions() : (o = { captions: [], captionStreams: {}, logs: [] }), this.resetCaptionStream();
}),
this.reset();
},
qt = e,
Vt = function (e) {
return ('00' + e.toString(16)).slice(-2);
},
qe = function (e) {
return Ot(e, ['moov', 'trak']).reduce(function (e, t) {
var i,
n,
r = Ot(t, ['tkhd'])[0];
return r ? ((i = r[0]), (r = qt((r[(n = 0 === i ? 12 : 20)] << 24) | (r[1 + n] << 16) | (r[2 + n] << 8) | r[3 + n])), (t = Ot(t, ['mdia', 'mdhd'])[0]) ? ((i = t[0]), (e[r] = qt((t[(n = 0 === i ? 12 : 20)] << 24) | (t[1 + n] << 16) | (t[2 + n] << 8) | t[3 + n])), e) : null) : null;
}, {});
},
j = function (n, e) {
var e = Ot(e, ['moof', 'traf']),
e = [].concat.apply(
[],
e.map(function (i) {
return Ot(i, ['tfhd']).map(function (e) {
var t = qt((e[4] << 24) | (e[5] << 16) | (e[6] << 8) | e[7]),
e = n[t] || 9e4,
t = Ot(i, ['tfdt']).map(function (e) {
var t = e[0],
i = qt((e[4] << 24) | (e[5] << 16) | (e[6] << 8) | e[7]);
return 1 === t && ((i *= Math.pow(2, 32)), (i += qt((e[8] << 24) | (e[9] << 16) | (e[10] << 8) | e[11]))), i;
})[0];
return (t = 'number' != typeof t || isNaN(t) ? 1 / 0 : t) / e;
});
})
),
e = Math.min.apply(null, e);
return isFinite(e) ? e : 0;
},
Se = function (e, t) {
var i,
n,
r = Ot(t, ['moof', 'traf']),
a = 0,
s = 0;
return r && r.length && ((i = Ot(r[0], ['tfhd'])[0]), (t = Ot(r[0], ['trun'])[0]), (r = Ot(r[0], ['tfdt'])[0]), i && (n = Bt(i).trackId), r && (a = Mt(r).baseMediaDecodeTime), !t || ((t = Ut(t)).samples && t.samples.length && (s = t.samples[0].compositionTimeOffset || 0))), (a + s) / (e[n] || 9e4);
},
Wt = function (e) {
var t = 0 === e[0] ? 12 : 20;
return qt((e[t] << 24) | (e[1 + t] << 16) | (e[2 + t] << 8) | e[3 + t]);
},
e = function (e) {
var e = Ot(e, ['moov', 'trak']),
s = [];
return (
e.forEach(function (e) {
var t = {},
i = Ot(e, ['tkhd'])[0];
i && ((i = (n = new DataView(i.buffer, i.byteOffset, i.byteLength)).getUint8(0)), (t.id = 0 === i ? n.getUint32(12) : n.getUint32(20)));
var n = Ot(e, ['mdia', 'hdlr'])[0];
n && ((a = Lt(n.subarray(8, 12))), (t.type = 'vide' === a ? 'video' : 'soun' === a ? 'audio' : a));
var r,
a = Ot(e, ['mdia', 'minf', 'stbl', 'stsd'])[0];
a && ((a = a.subarray(8)), (t.codec = Lt(a.subarray(4, 8))), (a = Ot(a, [t.codec])[0]) && (/^[asm]vc[1-9]$/i.test(t.codec) ? ((r = a.subarray(78)), 'avcC' === Lt(r.subarray(4, 8)) && 11 < r.length ? ((t.codec += '.'), (t.codec += Vt(r[9])), (t.codec += Vt(r[10])), (t.codec += Vt(r[11]))) : (t.codec = 'avc1.4d400d')) : /^mp4[a,v]$/i.test(t.codec) ? ((r = a.subarray(28)), 'esds' === Lt(r.subarray(4, 8)) && 20 < r.length && 0 !== r[19] ? ((t.codec += '.' + Vt(r[19])), (t.codec += '.' + Vt((r[20] >>> 2) & 63).replace(/^0/, ''))) : (t.codec = 'mp4a.40.2')) : (t.codec = t.codec.toLowerCase())));
e = Ot(e, ['mdia', 'mdhd'])[0];
e && (t.timescale = Wt(e)), s.push(t);
}),
s
);
},
zt = j,
Gt = e,
Xt = ke,
Kt = {};
(Kt.ts = {
parseType: function (e, t) {
e = Ct(e);
return 0 === e ? 'pat' : e === t ? 'pmt' : t ? 'pes' : null;
},
parsePat: function (e) {
var t = It(e),
i = 4 + xt(e);
return t && (i += e[i] + 1), ((31 & e[i + 10]) << 8) | e[i + 11];
},
parsePmt: function (e) {
var t = {},
i = It(e),
n = 4 + xt(e);
if ((i && (n += e[n] + 1), 1 & e[n + 5])) {
for (var r = 3 + (((15 & e[n + 1]) << 8) | e[n + 2]) - 4, a = 12 + (((15 & e[n + 10]) << 8) | e[n + 11]); a < r; ) {
var s = n + a;
(t[((31 & e[s + 1]) << 8) | e[s + 2]] = e[s]), (a += 5 + (((15 & e[s + 3]) << 8) | e[s + 4]));
}
return t;
}
},
parsePayloadUnitStartIndicator: It,
parsePesType: function (e, t) {
switch (t[Ct(e)]) {
case Be.H264_STREAM_TYPE:
return 'video';
case Be.ADTS_STREAM_TYPE:
return 'audio';
case Be.METADATA_STREAM_TYPE:
return 'timed-metadata';
default:
return null;
}
},
parsePesTime: function (e) {
if (!It(e)) return null;
var t = 4 + xt(e);
if (t >= e.byteLength) return null;
var i = null,
n = e[t + 7];
return 192 & n && (((i = {}).pts = ((14 & e[t + 9]) << 27) | ((255 & e[t + 10]) << 20) | ((254 & e[t + 11]) << 12) | ((255 & e[t + 12]) << 5) | ((254 & e[t + 13]) >>> 3)), (i.pts *= 4), (i.pts += (6 & e[t + 13]) >>> 1), (i.dts = i.pts), 64 & n && ((i.dts = ((14 & e[t + 14]) << 27) | ((255 & e[t + 15]) << 20) | ((254 & e[t + 16]) << 12) | ((255 & e[t + 17]) << 5) | ((254 & e[t + 18]) >>> 3)), (i.dts *= 4), (i.dts += (6 & e[t + 18]) >>> 1))), i;
},
videoPacketContainsKeyFrame: function (e) {
for (var t = 4 + xt(e), i = e.subarray(t), n = 0, r = 0, a = !1; r < i.byteLength - 3; r++)
if (1 === i[r + 2]) {
n = r + 5;
break;
}
for (; n < i.byteLength; )
switch (i[n]) {
case 0:
if (0 !== i[n - 1]) {
n += 2;
break;
}
if (0 !== i[n - 2]) {
n++;
break;
}
for (r + 3 !== n - 2 && 'slice_layer_without_partitioning_rbsp_idr' === At(31 & i[r + 3]) && (a = !0); 1 !== i[++n] && n < i.length; );
(r = n - 2), (n += 3);
break;
case 1:
if (0 !== i[n - 1] || 0 !== i[n - 2]) {
n += 3;
break;
}
'slice_layer_without_partitioning_rbsp_idr' === At(31 & i[r + 3]) && (a = !0), (r = n - 2), (n += 3);
break;
default:
n += 3;
}
return (i = i.subarray(r)), (n -= r), (r = 0), (a = i && 3 < i.byteLength && 'slice_layer_without_partitioning_rbsp_idr' === At(31 & i[r + 3]) ? !0 : a);
},
}),
(Kt.aac = lt);
function Yt(e, t, i) {
for (var n, r, a, s, o = 0, u = 188, l = !1; u <= e.byteLength; )
if (71 !== e[o] || (71 !== e[u] && u !== e.byteLength)) o++, u++;
else {
if (((n = e.subarray(o, u)), 'pes' === Kt.ts.parseType(n, t.pid) && ((r = Kt.ts.parsePesType(n, t.table)), (a = Kt.ts.parsePayloadUnitStartIndicator(n)), 'audio' === r && a && (s = Kt.ts.parsePesTime(n)) && ((s.type = 'audio'), i.audio.push(s), (l = !0))), l)) break;
(o += 188), (u += 188);
}
for (o = (u = e.byteLength) - 188, l = !1; 0 <= o; )
if (71 !== e[o] || (71 !== e[u] && u !== e.byteLength)) o--, u--;
else {
if (((n = e.subarray(o, u)), 'pes' === Kt.ts.parseType(n, t.pid) && ((r = Kt.ts.parsePesType(n, t.table)), (a = Kt.ts.parsePayloadUnitStartIndicator(n)), 'audio' === r && a && (s = Kt.ts.parsePesTime(n)) && ((s.type = 'audio'), i.audio.push(s), (l = !0))), l)) break;
(o -= 188), (u -= 188);
}
}
function Qt(e) {
var t,
i = { pid: null, table: null },
n = {};
for (t in (!(function (e, t) {
for (var i, n = 0, r = 188; r < e.byteLength; )
if (71 !== e[n] || 71 !== e[r]) n++, r++;
else {
switch (((i = e.subarray(n, r)), Kt.ts.parseType(i, t.pid))) {
case 'pat':
t.pid = Kt.ts.parsePat(i);
break;
case 'pmt':
var a = Kt.ts.parsePmt(i);
(t.table = t.table || {}),
Object.keys(a).forEach(function (e) {
t.table[e] = a[e];
});
}
(n += 188), (r += 188);
}
})(e, i),
i.table))
if (i.table.hasOwnProperty(t))
switch (i.table[t]) {
case Be.H264_STREAM_TYPE:
(n.video = []),
(function (e, t, i) {
for (var n, r, a, s, o, u, l, c, d = 0, h = 188, p = !1, f = { data: [], size: 0 }; h < e.byteLength; )
if (71 !== e[d] || 71 !== e[h]) d++, h++;
else {
if (((n = e.subarray(d, h)), 'pes' === Kt.ts.parseType(n, t.pid)))
if (((r = Kt.ts.parsePesType(n, t.table)), (a = Kt.ts.parsePayloadUnitStartIndicator(n)), 'video' === r && (a && !p && (s = Kt.ts.parsePesTime(n)) && ((s.type = 'video'), i.video.push(s), (p = !0)), !i.firstKeyFrame))) {
if (a && 0 !== f.size) {
for (o = new Uint8Array(f.size), u = 0; f.data.length; ) (l = f.data.shift()), o.set(l, u), (u += l.byteLength);
!Kt.ts.videoPacketContainsKeyFrame(o) || ((c = Kt.ts.parsePesTime(o)) && ((i.firstKeyFrame = c), (i.firstKeyFrame.type = 'video'))), (f.size = 0);
}
f.data.push(n), (f.size += n.byteLength);
}
if (p && i.firstKeyFrame) break;
(d += 188), (h += 188);
}
for (d = (h = e.byteLength) - 188, p = !1; 0 <= d; )
if (71 !== e[d] || 71 !== e[h]) d--, h--;
else {
if (((n = e.subarray(d, h)), 'pes' === Kt.ts.parseType(n, t.pid) && ((r = Kt.ts.parsePesType(n, t.table)), (a = Kt.ts.parsePayloadUnitStartIndicator(n)), 'video' === r && a && (s = Kt.ts.parsePesTime(n)) && ((s.type = 'video'), i.video.push(s), (p = !0))), p)) break;
(d -= 188), (h -= 188);
}
})(e, i, n),
0 === n.video.length && delete n.video;
break;
case Be.ADTS_STREAM_TYPE:
(n.audio = []), Yt(e, i, n), 0 === n.audio.length && delete n.audio;
}
return n;
}
var $t = se,
Jt = function (e, t) {
var i,
n,
r = (
Kt.aac.isLikelyAacData(e)
? function (e) {
for (var t, i = !1, n = 0, r = null, a = null, s = 0, o = 0; 3 <= e.length - o; ) {
switch (Kt.aac.parseType(e, o)) {
case 'timed-metadata':
if (e.length - o < 10) {
i = !0;
break;
}
if ((s = Kt.aac.parseId3TagSize(e, o)) > e.length) {
i = !0;
break;
}
null === a && ((t = e.subarray(o, o + s)), (a = Kt.aac.parseAacTimestamp(t))), (o += s);
break;
case 'audio':
if (e.length - o < 7) {
i = !0;
break;
}
if ((s = Kt.aac.parseAdtsSize(e, o)) > e.length) {
i = !0;
break;
}
null === r && ((t = e.subarray(o, o + s)), (r = Kt.aac.parseSampleRate(t))), n++, (o += s);
break;
default:
o++;
}
if (i) return null;
}
if (null === r || null === a) return null;
var u = $t / r;
return {
audio: [
{ type: 'audio', dts: a, pts: a },
{ type: 'audio', dts: a + 1024 * n * u, pts: a + 1024 * n * u },
],
};
}
: Qt
)(e);
return r && (r.audio || r.video)
? ((e = t),
(t = r).audio &&
t.audio.length &&
(('undefined' != typeof (i = e) && !isNaN(i)) || (i = t.audio[0].dts),
t.audio.forEach(function (e) {
(e.dts = Xt(e.dts, i)), (e.pts = Xt(e.pts, i)), (e.dtsTime = e.dts / $t), (e.ptsTime = e.pts / $t);
})),
t.video &&
t.video.length &&
(('undefined' != typeof (n = e) && !isNaN(n)) || (n = t.video[0].dts),
t.video.forEach(function (e) {
(e.dts = Xt(e.dts, n)), (e.pts = Xt(e.pts, n)), (e.dtsTime = e.dts / $t), (e.ptsTime = e.pts / $t);
}),
t.firstKeyFrame && (((t = t.firstKeyFrame).dts = Xt(t.dts, n)), (t.pts = Xt(t.pts, n)), (t.dtsTime = t.dts / $t), (t.ptsTime = t.pts / $t))),
r)
: null;
},
Zt = (function () {
function e(e, t) {
(this.options = t || {}), (this.self = e), this.init();
}
var t = e.prototype;
return (
(t.init = function () {
var i, e;
this.transmuxer && this.transmuxer.dispose(),
(this.transmuxer = new Pt.Transmuxer(this.options)),
(i = this.self),
(e = this.transmuxer).on('data', function (e) {
var t = e.initSegment;
e.initSegment = { data: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength };
t = e.data;
(e.data = t.buffer), i.postMessage({ action: 'data', segment: e, byteOffset: t.byteOffset, byteLength: t.byteLength }, [e.data]);
}),
e.on('done', function (e) {
i.postMessage({ action: 'done' });
}),
e.on('gopInfo', function (e) {
i.postMessage({ action: 'gopInfo', gopInfo: e });
}),
e.on('videoSegmentTimingInfo', function (e) {
var t = { start: { decode: ue(e.start.dts), presentation: ue(e.start.pts) }, end: { decode: ue(e.end.dts), presentation: ue(e.end.pts) }, baseMediaDecodeTime: ue(e.baseMediaDecodeTime) };
e.prependedContentDuration && (t.prependedContentDuration = ue(e.prependedContentDuration)), i.postMessage({ action: 'videoSegmentTimingInfo', videoSegmentTimingInfo: t });
}),
e.on('audioSegmentTimingInfo', function (e) {
var t = { start: { decode: ue(e.start.dts), presentation: ue(e.start.pts) }, end: { decode: ue(e.end.dts), presentation: ue(e.end.pts) }, baseMediaDecodeTime: ue(e.baseMediaDecodeTime) };
e.prependedContentDuration && (t.prependedContentDuration = ue(e.prependedContentDuration)), i.postMessage({ action: 'audioSegmentTimingInfo', audioSegmentTimingInfo: t });
}),
e.on('id3Frame', function (e) {
i.postMessage({ action: 'id3Frame', id3Frame: e });
}),
e.on('caption', function (e) {
i.postMessage({ action: 'caption', caption: e });
}),
e.on('trackinfo', function (e) {
i.postMessage({ action: 'trackinfo', trackInfo: e });
}),
e.on('audioTimingInfo', function (e) {
i.postMessage({ action: 'audioTimingInfo', audioTimingInfo: { start: ue(e.start), end: ue(e.end) } });
}),
e.on('videoTimingInfo', function (e) {
i.postMessage({ action: 'videoTimingInfo', videoTimingInfo: { start: ue(e.start), end: ue(e.end) } });
}),
e.on('log', function (e) {
i.postMessage({ action: 'log', log: e });
});
}),
(t.pushMp4Captions = function (e) {
this.captionParser || ((this.captionParser = new Ht()), this.captionParser.init());
var t = new Uint8Array(e.data, e.byteOffset, e.byteLength),
e = this.captionParser.parse(t, e.trackIds, e.timescales);
this.self.postMessage({ action: 'mp4Captions', captions: (e && e.captions) || [], logs: (e && e.logs) || [], data: t.buffer }, [t.buffer]);
}),
(t.probeMp4StartTime = function (e) {
var t = e.timescales,
e = e.data,
t = zt(t, e);
this.self.postMessage({ action: 'probeMp4StartTime', startTime: t, data: e }, [e.buffer]);
}),
(t.probeMp4Tracks = function (e) {
var t = e.data,
e = Gt(t);
this.self.postMessage({ action: 'probeMp4Tracks', tracks: e, data: t }, [t.buffer]);
}),
(t.probeTs = function (e) {
var t = e.data,
i = e.baseStartTime,
e = 'number' != typeof i || isNaN(i) ? void 0 : i * se,
i = Jt(t, e),
e = null;
i && ((e = { hasVideo: (i.video && 2 === i.video.length) || !1, hasAudio: (i.audio && 2 === i.audio.length) || !1 }).hasVideo && (e.videoStart = i.video[0].ptsTime), e.hasAudio && (e.audioStart = i.audio[0].ptsTime)), this.self.postMessage({ action: 'probeTs', result: e, data: t }, [t.buffer]);
}),
(t.clearAllMp4Captions = function () {
this.captionParser && this.captionParser.clearAllCaptions();
}),
(t.clearParsedMp4Captions = function () {
this.captionParser && this.captionParser.clearParsedCaptions();
}),
(t.push = function (e) {
e = new Uint8Array(e.data, e.byteOffset, e.byteLength);
this.transmuxer.push(e);
}),
(t.reset = function () {
this.transmuxer.reset();
}),
(t.setTimestampOffset = function (e) {
e = e.timestampOffset || 0;
this.transmuxer.setBaseMediaDecodeTime(Math.round(oe(e)));
}),
(t.setAudioAppendStart = function (e) {
this.transmuxer.setAudioAppendStart(Math.ceil(oe(e.appendStart)));
}),
(t.setRemux = function (e) {
this.transmuxer.setRemux(e.remux);
}),
(t.flush = function (e) {
this.transmuxer.flush(), self.postMessage({ action: 'done', type: 'transmuxed' });
}),
(t.endTimeline = function () {
this.transmuxer.endTimeline(), self.postMessage({ action: 'endedtimeline', type: 'transmuxed' });
}),
(t.alignGopsWith = function (e) {
this.transmuxer.alignGopsWith(e.gopsToAlignWith.slice());
}),
e
);
})();
self.onmessage = function (e) {
'init' === e.data.action && e.data.options ? (this.messageHandlers = new Zt(self, e.data.options)) : (this.messageHandlers || (this.messageHandlers = new Zt(self)), e.data && e.data.action && 'init' !== e.data.action && this.messageHandlers[e.data.action] && this.messageHandlers[e.data.action](e.data));
};
})
)
),
gl = function (e) {
(e.currentTransmux = null), e.transmuxQueue.length && ((e.currentTransmux = e.transmuxQueue.shift()), 'function' == typeof e.currentTransmux ? e.currentTransmux() : wu(e.currentTransmux));
},
yl = function (e) {
Eu('reset', e);
},
vl = function (e) {
var t = new ml();
(t.currentTransmux = null), (t.transmuxQueue = []);
var i = t.terminate;
return (
(t.terminate = function () {
return (t.currentTransmux = null), (t.transmuxQueue.length = 0), i.call(t);
}),
t.postMessage({ action: 'init', options: e }),
t
);
},
_l = 2,
bl = -101,
Tl = -102,
wl = ko('CodecUtils'),
Sl = ko('PlaylistSelector'),
rr = function () {
var e = (this.useDevicePixelRatio && window.devicePixelRatio) || 1;
return Gu(this.playlists.master, this.systemBandwidth, parseInt(Vu(this.tech_.el(), 'width'), 10) * e, parseInt(Vu(this.tech_.el(), 'height'), 10) * e, this.limitRenditionByPlayerDimensions, this.masterPlaylistController_);
},
El = (function (n) {
function e(e, t) {
var i = n.call(this) || this;
if (!e) throw new TypeError('Initialization settings are required');
if ('function' != typeof e.currentTime) throw new TypeError('No currentTime getter specified');
if (!e.mediaSource) throw new TypeError('No MediaSource specified');
return (
(i.bandwidth = e.bandwidth),
(i.throughput = { rate: 0, count: 0 }),
(i.roundTrip = NaN),
i.resetStats_(),
(i.mediaIndex = null),
(i.partIndex = null),
(i.hasPlayed_ = e.hasPlayed),
(i.currentTime_ = e.currentTime),
(i.seekable_ = e.seekable),
(i.seeking_ = e.seeking),
(i.duration_ = e.duration),
(i.mediaSource_ = e.mediaSource),
(i.vhs_ = e.vhs),
(i.loaderType_ = e.loaderType),
(i.currentMediaInfo_ = void 0),
(i.startingMediaInfo_ = void 0),
(i.segmentMetadataTrack_ = e.segmentMetadataTrack),
(i.goalBufferLength_ = e.goalBufferLength),
(i.sourceType_ = e.sourceType),
(i.sourceUpdater_ = e.sourceUpdater),
(i.inbandTextTracks_ = e.inbandTextTracks),
(i.state_ = 'INIT'),
(i.timelineChangeController_ = e.timelineChangeController),
(i.shouldSaveSegmentTimingInfo_ = !0),
(i.parse708captions_ = e.parse708captions),
(i.captionServices_ = e.captionServices),
(i.experimentalExactManifestTimings = e.experimentalExactManifestTimings),
(i.checkBufferTimeout_ = null),
(i.error_ = void 0),
(i.currentTimeline_ = -1),
(i.pendingSegment_ = null),
(i.xhrOptions_ = null),
(i.pendingSegments_ = []),
(i.audioDisabled_ = !1),
(i.isPendingTimestampOffset_ = !1),
(i.gopBuffer_ = []),
(i.timeMapping_ = 0),
(i.safeAppend_ = 11 <= tr.browser.IE_VERSION),
(i.appendInitSegment_ = { audio: !0, video: !0 }),
(i.playlistOfLastInitSegment_ = { audio: null, video: null }),
(i.callQueue_ = []),
(i.loadQueue_ = []),
(i.metadataQueue_ = { id3: [], caption: [] }),
(i.waitingOnRemove_ = !1),
(i.quotaExceededErrorRetryTimeout_ = null),
(i.activeInitSegmentId_ = null),
(i.initSegments_ = {}),
(i.cacheEncryptionKeys_ = e.cacheEncryptionKeys),
(i.keyCache_ = {}),
(i.decrypter_ = e.decrypter),
(i.syncController_ = e.syncController),
(i.syncPoint_ = { segmentIndex: 0, time: 0 }),
(i.transmuxer_ = i.createTransmuxer_()),
(i.triggerSyncInfoUpdate_ = function () {
return i.trigger('syncinfoupdate');
}),
i.syncController_.on('syncinfoupdate', i.triggerSyncInfoUpdate_),
i.mediaSource_.addEventListener('sourceopen', function () {
i.isEndOfStream_() || (i.ended_ = !1);
}),
(i.fetchAtBuffer_ = !1),
(i.logger_ = ko('SegmentLoader[' + i.loaderType_ + ']')),
Object.defineProperty(pt(i), 'state', {
get: function () {
return this.state_;
},
set: function (e) {
e !== this.state_ && (this.logger_(this.state_ + ' -> ' + e), (this.state_ = e), this.trigger('statechange'));
},
}),
i.sourceUpdater_.on('ready', function () {
i.hasEnoughInfoToAppend_() && i.processCallQueue_();
}),
'main' === i.loaderType_ &&
i.timelineChangeController_.on('pendingtimelinechange', function () {
i.hasEnoughInfoToAppend_() && i.processCallQueue_();
}),
'audio' === i.loaderType_ &&
i.timelineChangeController_.on('timelinechange', function () {
i.hasEnoughInfoToLoad_() && i.processLoadQueue_(), i.hasEnoughInfoToAppend_() && i.processCallQueue_();
}),
i
);
}
ft(e, n);
var t = e.prototype;
return (
(t.createTransmuxer_ = function () {
return vl({ remux: !1, alignGopsAtEnd: this.safeAppend_, keepOriginalTimestamps: !0, parse708captions: this.parse708captions_, captionServices: this.captionServices_ });
}),
(t.resetStats_ = function () {
(this.mediaBytesTransferred = 0), (this.mediaRequests = 0), (this.mediaRequestsAborted = 0), (this.mediaRequestsTimedout = 0), (this.mediaRequestsErrored = 0), (this.mediaTransferDuration = 0), (this.mediaSecondsLoaded = 0), (this.mediaAppends = 0);
}),
(t.dispose = function () {
this.trigger('dispose'), (this.state = 'DISPOSED'), this.pause(), this.abort_(), this.transmuxer_ && this.transmuxer_.terminate(), this.resetStats_(), this.checkBufferTimeout_ && window.clearTimeout(this.checkBufferTimeout_), this.syncController_ && this.triggerSyncInfoUpdate_ && this.syncController_.off('syncinfoupdate', this.triggerSyncInfoUpdate_), this.off();
}),
(t.setAudio = function (e) {
(this.audioDisabled_ = !e), e ? (this.appendInitSegment_.audio = !0) : this.sourceUpdater_.removeAudio(0, this.duration_());
}),
(t.abort = function () {
'WAITING' === this.state ? (this.abort_(), (this.state = 'READY'), this.paused() || this.monitorBuffer_()) : this.pendingSegment_ && (this.pendingSegment_ = null);
}),
(t.abort_ = function () {
this.pendingSegment_ && this.pendingSegment_.abortRequests && this.pendingSegment_.abortRequests(), (this.pendingSegment_ = null), (this.callQueue_ = []), (this.loadQueue_ = []), (this.metadataQueue_.id3 = []), (this.metadataQueue_.caption = []), this.timelineChangeController_.clearPendingTimelineChange(this.loaderType_), (this.waitingOnRemove_ = !1), window.clearTimeout(this.quotaExceededErrorRetryTimeout_), (this.quotaExceededErrorRetryTimeout_ = null);
}),
(t.checkForAbort_ = function (e) {
return 'APPENDING' !== this.state || this.pendingSegment_ ? !this.pendingSegment_ || this.pendingSegment_.requestId !== e : ((this.state = 'READY'), !0);
}),
(t.error = function (e) {
return 'undefined' != typeof e && (this.logger_('error occurred:', e), (this.error_ = e)), (this.pendingSegment_ = null), this.error_;
}),
(t.endOfStream = function () {
(this.ended_ = !0), this.transmuxer_ && yl(this.transmuxer_), (this.gopBuffer_.length = 0), this.pause(), this.trigger('ended');
}),
(t.buffered_ = function () {
var e = this.getMediaInfo_();
if (!this.sourceUpdater_ || !e) return tr.createTimeRanges();
if ('main' === this.loaderType_) {
var t = e.hasAudio,
i = e.hasVideo,
e = e.isMuxed;
if (i && t && !this.audioDisabled_ && !e) return this.sourceUpdater_.buffered();
if (i) return this.sourceUpdater_.videoBuffered();
}
return this.sourceUpdater_.audioBuffered();
}),
(t.initSegmentForMap = function (e, t) {
if ((void 0 === t && (t = !1), !e)) return null;
var i = hu(e),
n = this.initSegments_[i];
return t && !n && e.bytes && (this.initSegments_[i] = n = { resolvedUri: e.resolvedUri, byterange: e.byterange, bytes: e.bytes, tracks: e.tracks, timescales: e.timescales }), n || e;
}),
(t.segmentKey = function (e, t) {
if ((void 0 === t && (t = !1), !e)) return null;
var i = pu(e),
n = this.keyCache_[i];
this.cacheEncryptionKeys_ && t && !n && e.bytes && (this.keyCache_[i] = n = { resolvedUri: e.resolvedUri, bytes: e.bytes });
e = { resolvedUri: (n || e).resolvedUri };
return n && (e.bytes = n.bytes), e;
}),
(t.couldBeginLoading_ = function () {
return this.playlist_ && !this.paused();
}),
(t.load = function () {
if ((this.monitorBuffer_(), this.playlist_)) return 'INIT' === this.state && this.couldBeginLoading_() ? this.init_() : void (!this.couldBeginLoading_() || ('READY' !== this.state && 'INIT' !== this.state) || (this.state = 'READY'));
}),
(t.init_ = function () {
return (this.state = 'READY'), this.resetEverything(), this.monitorBuffer_();
}),
(t.playlist = function (e, t) {
if ((void 0 === t && (t = {}), e)) {
var i = this.playlist_,
n = this.pendingSegment_;
(this.playlist_ = e), (this.xhrOptions_ = t), 'INIT' === this.state && ((e.syncInfo = { mediaSequence: e.mediaSequence, time: 0 }), 'main' === this.loaderType_ && this.syncController_.setDateTimeMappingForStart(e));
var r = null;
if ((i && (i.id ? (r = i.id) : i.uri && (r = i.uri)), this.logger_('playlist update [' + r + ' => ' + (e.id || e.uri) + ']'), this.trigger('syncinfoupdate'), 'INIT' === this.state && this.couldBeginLoading_())) return this.init_();
if (!i || i.uri !== e.uri) return null !== this.mediaIndex && (e.endList ? this.resyncLoader() : this.resetLoader()), (this.currentMediaInfo_ = void 0), void this.trigger('playlistupdate');
t = e.mediaSequence - i.mediaSequence;
this.logger_('live window shift [' + t + ']'), null !== this.mediaIndex && ((this.mediaIndex -= t), this.mediaIndex < 0 ? ((this.mediaIndex = null), (this.partIndex = null)) : ((r = this.playlist_.segments[this.mediaIndex]), !this.partIndex || (r.parts && r.parts.length && r.parts[this.partIndex]) || ((r = this.mediaIndex), this.logger_('currently processing part (index ' + this.partIndex + ') no longer exists.'), this.resetLoader(), (this.mediaIndex = r)))), n && ((n.mediaIndex -= t), n.mediaIndex < 0 ? ((n.mediaIndex = null), (n.partIndex = null)) : (0 <= n.mediaIndex && (n.segment = e.segments[n.mediaIndex]), 0 <= n.partIndex && n.segment.parts && (n.part = n.segment.parts[n.partIndex]))), this.syncController_.saveExpiredSegmentInfo(i, e);
}
}),
(t.pause = function () {
this.checkBufferTimeout_ && (window.clearTimeout(this.checkBufferTimeout_), (this.checkBufferTimeout_ = null));
}),
(t.paused = function () {
return null === this.checkBufferTimeout_;
}),
(t.resetEverything = function (e) {
(this.ended_ = !1), (this.appendInitSegment_ = { audio: !0, video: !0 }), this.resetLoader(), this.remove(0, 1 / 0, e), this.transmuxer_ && (this.transmuxer_.postMessage({ action: 'clearAllMp4Captions' }), this.transmuxer_.postMessage({ action: 'reset' }));
}),
(t.resetLoader = function () {
(this.fetchAtBuffer_ = !1), this.resyncLoader();
}),
(t.resyncLoader = function () {
this.transmuxer_ && yl(this.transmuxer_), (this.mediaIndex = null), (this.partIndex = null), (this.syncPoint_ = null), (this.isPendingTimestampOffset_ = !1), (this.callQueue_ = []), (this.loadQueue_ = []), (this.metadataQueue_.id3 = []), (this.metadataQueue_.caption = []), this.abort(), this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearParsedMp4Captions' });
}),
(t.remove = function (e, t, i, n) {
if ((void 0 === i && (i = function () {}), void 0 === n && (n = !1), (t = t === 1 / 0 ? this.duration_() : t) <= e)) this.logger_('skipping remove because end ${end} is <= start ${start}');
else if (this.sourceUpdater_ && this.getMediaInfo_()) {
var r,
a = 1,
s = function () {
0 === --a && i();
};
for (r in ((!n && this.audioDisabled_) || (a++, this.sourceUpdater_.removeAudio(e, t, s)),
(!n && 'main' !== this.loaderType_) ||
((this.gopBuffer_ = (function (e, t, i, n) {
for (var r = Math.ceil((t - n) * il), a = Math.ceil((i - n) * il), n = e.slice(), s = e.length; s-- && !(e[s].pts <= a); );
if (-1 === s) return n;
for (var o = s + 1; o-- && !(e[o].pts <= r); );
return (o = Math.max(o, 0)), n.splice(o, s - o + 1), n;
})(this.gopBuffer_, e, t, this.timeMapping_)),
a++,
this.sourceUpdater_.removeVideo(e, t, s)),
this.inbandTextTracks_))
Ku(e, t, this.inbandTextTracks_[r]);
Ku(e, t, this.segmentMetadataTrack_), s();
} else this.logger_('skipping remove because no source updater or starting media info');
}),
(t.monitorBuffer_ = function () {
this.checkBufferTimeout_ && window.clearTimeout(this.checkBufferTimeout_), (this.checkBufferTimeout_ = window.setTimeout(this.monitorBufferTick_.bind(this), 1));
}),
(t.monitorBufferTick_ = function () {
'READY' === this.state && this.fillBuffer_(), this.checkBufferTimeout_ && window.clearTimeout(this.checkBufferTimeout_), (this.checkBufferTimeout_ = window.setTimeout(this.monitorBufferTick_.bind(this), 500));
}),
(t.fillBuffer_ = function () {
var e;
this.sourceUpdater_.updating() || ((e = this.chooseNextRequest_()) && ('number' == typeof e.timestampOffset && ((this.isPendingTimestampOffset_ = !1), this.timelineChangeController_.pendingTimelineChange({ type: this.loaderType_, from: this.currentTimeline_, to: e.timeline })), this.loadSegment_(e)));
}),
(t.isEndOfStream_ = function (e, t, i) {
if ((void 0 === e && (e = this.mediaIndex), void 0 === t && (t = this.playlist_), void 0 === i && (i = this.partIndex), !t || !this.mediaSource_)) return !1;
var n = 'number' == typeof e && t.segments[e],
e = e + 1 === t.segments.length,
n = !n || !n.parts || i + 1 === n.parts.length;
return t.endList && 'open' === this.mediaSource_.readyState && e && n;
}),
(t.chooseNextRequest_ = function () {
var e = this.buffered_(),
t = Lo(e) || 0,
i = Do(e, this.currentTime_()),
n = !this.hasPlayed_() && 1 <= i,
r = i >= this.goalBufferLength_(),
e = this.playlist_.segments;
if (!e.length || n || r) return null;
this.syncPoint_ = this.syncPoint_ || this.syncController_.getSyncPoint(this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_());
var a,
n = { partIndex: null, mediaIndex: null, startOfSegment: null, playlist: this.playlist_, isSyncRequest: Boolean(!this.syncPoint_) };
n.isSyncRequest
? (n.mediaIndex = (function (e, t, i) {
t = t || [];
for (var n = [], r = 0, a = 0; a < t.length; a++) {
var s = t[a];
if (e === s.timeline && (n.push(a), i < (r += s.duration))) return a;
}
return 0 === n.length ? 0 : n[n.length - 1];
})(this.currentTimeline_, e, t))
: null !== this.mediaIndex
? ((r = e[this.mediaIndex]), (a = 'number' == typeof this.partIndex ? this.partIndex : -1), (n.startOfSegment = r.end || t), r.parts && r.parts[a + 1] ? ((n.mediaIndex = this.mediaIndex), (n.partIndex = a + 1)) : (n.mediaIndex = this.mediaIndex + 1))
: ((a = (o = sl.getMediaInfoForTime({ experimentalExactManifestTimings: this.experimentalExactManifestTimings, playlist: this.playlist_, currentTime: this.fetchAtBuffer_ ? t : this.currentTime_(), startingPartIndex: this.syncPoint_.partIndex, startingSegmentIndex: this.syncPoint_.segmentIndex, startTime: this.syncPoint_.time })).segmentIndex), (s = o.startTime), (o = o.partIndex), (n.getMediaInfoForTime = this.fetchAtBuffer_ ? 'bufferedEnd ' + t : 'currentTime ' + this.currentTime_()), (n.mediaIndex = a), (n.startOfSegment = s), (n.partIndex = o));
var s = e[n.mediaIndex],
o = s && 'number' == typeof n.partIndex && s.parts && s.parts[n.partIndex];
if (!s || ('number' == typeof n.partIndex && !o)) return null;
'number' != typeof n.partIndex && s.parts && ((n.partIndex = 0), (o = s.parts[0])), i || !o || o.independent || (0 === n.partIndex ? (o = (i = e[n.mediaIndex - 1]).parts && i.parts.length && i.parts[i.parts.length - 1]) && o.independent && (--n.mediaIndex, (n.partIndex = i.parts.length - 1), (n.independent = 'previous segment')) : s.parts[n.partIndex - 1].independent && (--n.partIndex, (n.independent = 'previous part')));
s = this.mediaSource_ && 'ended' === this.mediaSource_.readyState;
return n.mediaIndex >= e.length - 1 && s && !this.seeking_() ? null : this.generateSegmentInfo_(n);
}),
(t.generateSegmentInfo_ = function (e) {
var t = e.independent,
i = e.playlist,
n = e.mediaIndex,
r = e.startOfSegment,
a = e.isSyncRequest,
s = e.partIndex,
o = e.forceTimestampOffset,
u = e.getMediaInfoForTime,
l = i.segments[n],
e = 'number' == typeof s && l.parts[s],
t = { requestId: 'segment-loader-' + Math.random(), uri: (e && e.resolvedUri) || l.resolvedUri, mediaIndex: n, partIndex: e ? s : null, isSyncRequest: a, startOfSegment: r, playlist: i, bytes: null, encryptedBytes: null, timestampOffset: null, timeline: l.timeline, duration: (e && e.duration) || l.duration, segment: l, part: e, byteLength: 0, transmuxer: this.transmuxer_, getMediaInfoForTime: u, independent: t },
o = 'undefined' != typeof o ? o : this.isPendingTimestampOffset_;
t.timestampOffset = this.timestampOffsetForSegment_({ segmentTimeline: l.timeline, currentTimeline: this.currentTimeline_, startOfSegment: r, buffered: this.buffered_(), overrideCheck: o });
o = Lo(this.sourceUpdater_.audioBuffered());
return (
'number' == typeof o && (t.audioAppendStart = o - this.sourceUpdater_.audioTimestampOffset()),
this.sourceUpdater_.videoBuffered().length &&
(t.gopsToAlignWith = (function (e, t, i) {
if ('undefined' == typeof t || null === t || !e.length) return [];
for (var n = Math.ceil((t - i + 3) * il), r = 0; r < e.length && !(e[r].pts > n); r++);
return e.slice(r);
})(this.gopBuffer_, this.currentTime_() - this.sourceUpdater_.videoTimestampOffset(), this.timeMapping_)),
t
);
}),
(t.timestampOffsetForSegment_ = function (e) {
return (i = (t = e).segmentTimeline), (n = t.currentTimeline), (r = t.startOfSegment), (e = t.buffered), t.overrideCheck || i !== n ? (!(i < n) && e.length ? e.end(e.length - 1) : r) : null;
var t, i, n, r;
}),
(t.earlyAbortWhenNeeded_ = function (e) {
var t, i, n, r, a, s, o, u, l, c, d, h, p;
!this.vhs_.tech_.paused() &&
this.xhrOptions_.timeout &&
this.playlist_.attributes.BANDWIDTH &&
(Date.now() - (e.firstBytesReceivedAt || Date.now()) < 1e3 ||
((t = this.currentTime_()),
(r = e.bandwidth),
(a = this.pendingSegment_.duration),
(p = sl.estimateSegmentRequestTime(a, r, this.playlist_, e.bytesReceived)),
(i = this.buffered_()),
(n = t),
void 0 === (e = this.vhs_.tech_.playbackRate()) && (e = 1),
p <= (e = ((i.length ? i.end(i.length - 1) : 0) - n) / e - 1) ||
((r = { master: this.vhs_.playlists.master, currentTime: t, bandwidth: r, duration: this.duration_(), segmentDuration: a, timeUntilRebuffer: e, currentTimeline: this.currentTimeline_, syncController: this.syncController_ }),
(a = r.master),
(s = r.currentTime),
(o = r.bandwidth),
(u = r.duration),
(l = r.segmentDuration),
(c = r.timeUntilRebuffer),
(d = r.currentTimeline),
(h = r.syncController),
(a = (r = (a = !(a = (r = a.playlists.filter(function (e) {
return !sl.isIncompatible(e);
})).filter(sl.isEnabled)).length
? r.filter(function (e) {
return !sl.isDisabled(e);
})
: a)
.filter(sl.hasAttribute.bind(null, 'BANDWIDTH'))
.map(function (e) {
var t = h.getSyncPoint(e, u, d, s) ? 1 : 2;
return { playlist: e, rebufferingImpact: sl.estimateSegmentRequestTime(l, o, e) * t - c };
})).filter(function (e) {
return e.rebufferingImpact <= 0;
})),
Wu(a, function (e, t) {
return zu(t.playlist, e.playlist);
}),
(r = a.length
? a[0]
: (Wu(r, function (e, t) {
return e.rebufferingImpact - t.rebufferingImpact;
}),
r[0] || null)) && ((p = p - e - r.rebufferingImpact), !r.playlist || r.playlist.uri === this.playlist_.uri || p < (e <= rl ? 1 : 0.5) || ((this.bandwidth = r.playlist.attributes.BANDWIDTH * fl.BANDWIDTH_VARIANCE + 1), this.trigger('earlyabort'))))));
}),
(t.handleAbort_ = function (e) {
this.logger_('Aborting ' + Qu(e)), (this.mediaRequestsAborted += 1);
}),
(t.handleProgress_ = function (e, t) {
this.earlyAbortWhenNeeded_(t.stats), this.checkForAbort_(t.requestId) || this.trigger('progress');
}),
(t.handleTrackInfo_ = function (e, t) {
this.earlyAbortWhenNeeded_(e.stats),
this.checkForAbort_(e.requestId) ||
this.checkForIllegalMediaSwitch(t) ||
((function (e, t) {
if ((!e && !t) || (!e && t) || (e && !t)) return !1;
if (e === t) return !0;
var i = Object.keys(e).sort(),
n = Object.keys(t).sort();
if (i.length !== n.length) return !1;
for (var r = 0; r < i.length; r++) {
var a = i[r];
if (a !== n[r]) return !1;
if (e[a] !== t[a]) return !1;
}
return !0;
})(this.currentMediaInfo_, (t = t || {})) || ((this.appendInitSegment_ = { audio: !0, video: !0 }), (this.startingMediaInfo_ = t), (this.currentMediaInfo_ = t), this.logger_('trackinfo update', t), this.trigger('trackinfo')),
this.checkForAbort_(e.requestId) || ((this.pendingSegment_.trackInfo = t), this.hasEnoughInfoToAppend_() && this.processCallQueue_()));
}),
(t.handleTimingInfo_ = function (e, t, i, n) {
var r;
this.earlyAbortWhenNeeded_(e.stats), this.checkForAbort_(e.requestId) || (((r = this.pendingSegment_)[(e = $u(t))] = r[e] || {}), (r[e][i] = n), this.logger_('timinginfo: ' + t + ' - ' + i + ' - ' + n), this.hasEnoughInfoToAppend_() && this.processCallQueue_());
}),
(t.handleCaptions_ = function (e, t) {
var g,
y,
v = this;
this.earlyAbortWhenNeeded_(e.stats),
this.checkForAbort_(e.requestId) ||
(0 !== t.length
? this.pendingSegment_.hasAppendedData_
? ((g = null === this.sourceUpdater_.videoTimestampOffset() ? this.sourceUpdater_.audioTimestampOffset() : this.sourceUpdater_.videoTimestampOffset()),
(y = {}),
t.forEach(function (e) {
y[e.stream] = y[e.stream] || { startTime: 1 / 0, captions: [], endTime: 0 };
var t = y[e.stream];
(t.startTime = Math.min(t.startTime, e.startTime + g)), (t.endTime = Math.max(t.endTime, e.endTime + g)), t.captions.push(e);
}),
Object.keys(y).forEach(function (e) {
var t,
i,
n,
r,
a,
s,
o,
u,
l,
c,
d = y[e],
h = d.startTime,
p = d.endTime,
f = d.captions,
m = v.inbandTextTracks_;
v.logger_('adding cues from ' + h + ' -> ' + p + ' for ' + e),
(t = m),
(i = v.vhs_.tech_),
t[(n = e)] || (i.trigger({ type: 'usage', name: 'vhs-608' }), i.trigger({ type: 'usage', name: 'hls-608' }), /^cc708_/.test((r = n)) && (r = 'SERVICE' + n.split('_')[1]), (o = i.textTracks().getTrackById(r)) ? (t[n] = o) : ((s = a = n), (d = !1), (o = ((i.options_.vhs && i.options_.vhs.captionServices) || {})[r]) && ((a = o.label), (s = o.language), (d = o.default)), (t[n] = i.addRemoteTextTrack({ kind: 'captions', id: r, default: d, label: a, language: s }, !1).track))),
Ku(h, p, m[e]),
(l = (f = { captionArray: f, inbandTextTracks: m, timestampOffset: g }).inbandTextTracks),
(m = f.captionArray),
(c = f.timestampOffset),
m &&
((u = window.WebKitDataCue || window.VTTCue),
m.forEach(function (e) {
var t = e.stream;
l[t].addCue(new u(e.startTime + c, e.endTime + c, e.text));
}));
}),
this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearParsedMp4Captions' }))
: this.metadataQueue_.caption.push(this.handleCaptions_.bind(this, e, t))
: this.logger_('SegmentLoader received no captions from a caption event'));
}),
(t.handleId3_ = function (e, t, i) {
var n, r, a, s;
this.earlyAbortWhenNeeded_(e.stats), this.checkForAbort_(e.requestId) || (this.pendingSegment_.hasAppendedData_ ? ((n = null === this.sourceUpdater_.videoTimestampOffset() ? this.sourceUpdater_.audioTimestampOffset() : this.sourceUpdater_.videoTimestampOffset()), (r = this.inbandTextTracks_), (a = i), (s = this.vhs_.tech_), r.metadataTrack_ || ((r.metadataTrack_ = s.addRemoteTextTrack({ kind: 'metadata', label: 'Timed Metadata' }, !1).track), (r.metadataTrack_.inBandMetadataTrackDispatchType = a)), Xu({ inbandTextTracks: this.inbandTextTracks_, metadataArray: t, timestampOffset: n, videoDuration: this.duration_() })) : this.metadataQueue_.id3.push(this.handleId3_.bind(this, e, t, i)));
}),
(t.processMetadataQueue_ = function () {
this.metadataQueue_.id3.forEach(function (e) {
return e();
}),
this.metadataQueue_.caption.forEach(function (e) {
return e();
}),
(this.metadataQueue_.id3 = []),
(this.metadataQueue_.caption = []);
}),
(t.processCallQueue_ = function () {
var e = this.callQueue_;
(this.callQueue_ = []),
e.forEach(function (e) {
return e();
});
}),
(t.processLoadQueue_ = function () {
var e = this.loadQueue_;
(this.loadQueue_ = []),
e.forEach(function (e) {
return e();
});
}),
(t.hasEnoughInfoToLoad_ = function () {
if ('audio' !== this.loaderType_) return !0;
var e = this.pendingSegment_;
return !!e && (!this.getCurrentMediaInfo_() || !Ju({ timelineChangeController: this.timelineChangeController_, currentTimeline: this.currentTimeline_, segmentTimeline: e.timeline, loaderType: this.loaderType_, audioDisabled: this.audioDisabled_ }));
}),
(t.getCurrentMediaInfo_ = function (e) {
return ((e = void 0 === e ? this.pendingSegment_ : e) && e.trackInfo) || this.currentMediaInfo_;
}),
(t.getMediaInfo_ = function (e) {
return void 0 === e && (e = this.pendingSegment_), this.getCurrentMediaInfo_(e) || this.startingMediaInfo_;
}),
(t.hasEnoughInfoToAppend_ = function () {
if (!this.sourceUpdater_.ready()) return !1;
if (this.waitingOnRemove_ || this.quotaExceededErrorRetryTimeout_) return !1;
var e = this.pendingSegment_,
t = this.getCurrentMediaInfo_();
if (!e || !t) return !1;
var i = t.hasAudio,
n = t.hasVideo,
t = t.isMuxed;
return !(n && !e.videoTimingInfo) && !(i && !this.audioDisabled_ && !t && !e.audioTimingInfo) && !Ju({ timelineChangeController: this.timelineChangeController_, currentTimeline: this.currentTimeline_, segmentTimeline: e.timeline, loaderType: this.loaderType_, audioDisabled: this.audioDisabled_ });
}),
(t.handleData_ = function (e, t) {
if ((this.earlyAbortWhenNeeded_(e.stats), !this.checkForAbort_(e.requestId)))
if (!this.callQueue_.length && this.hasEnoughInfoToAppend_()) {
var i,
n = this.pendingSegment_;
if ((this.setTimeMapping_(n.timeline), this.updateMediaSecondsLoaded_(n.part || n.segment), 'closed' !== this.mediaSource_.readyState)) {
if ((e.map && ((e.map = this.initSegmentForMap(e.map, !0)), (n.segment.map = e.map)), e.key && this.segmentKey(e.key, !0), (n.isFmp4 = e.isFmp4), (n.timingInfo = n.timingInfo || {}), n.isFmp4 ? (this.trigger('fmp4'), (n.timingInfo.start = n[$u(t.type)].start)) : ((i = this.getCurrentMediaInfo_()), (i = 'main' === this.loaderType_ && i && i.hasVideo) && (r = n.videoTimingInfo.start), (n.timingInfo.start = this.trueSegmentStart_({ currentStart: n.timingInfo.start, playlist: n.playlist, mediaIndex: n.mediaIndex, currentVideoTimestampOffset: this.sourceUpdater_.videoTimestampOffset(), useVideoTimingInfo: i, firstVideoFrameTimeForData: r, videoTimingInfo: n.videoTimingInfo, audioTimingInfo: n.audioTimingInfo }))), this.updateAppendInitSegmentStatus(n, t.type), this.updateSourceBufferTimestampOffset_(n), n.isSyncRequest)) {
this.updateTimingInfoEnd_(n), this.syncController_.saveSegmentTimingInfo({ segmentInfo: n, shouldSaveTimelineMapping: 'main' === this.loaderType_ });
var r = this.chooseNextRequest_();
if (r.mediaIndex !== n.mediaIndex || r.partIndex !== n.partIndex) return void this.logger_('sync segment was incorrect, not appending');
this.logger_('sync segment was correct, appending');
}
(n.hasAppendedData_ = !0), this.processMetadataQueue_(), this.appendData_(n, t);
}
} else this.callQueue_.push(this.handleData_.bind(this, e, t));
}),
(t.updateAppendInitSegmentStatus = function (e, t) {
'main' !== this.loaderType_ || 'number' != typeof e.timestampOffset || e.changedTimestampOffset || (this.appendInitSegment_ = { audio: !0, video: !0 }), this.playlistOfLastInitSegment_[t] !== e.playlist && (this.appendInitSegment_[t] = !0);
}),
(t.getInitSegmentAndUpdateState_ = function (e) {
var t = e.type,
i = e.initSegment,
n = e.map,
r = e.playlist;
if (n) {
e = hu(n);
if (this.activeInitSegmentId_ === e) return null;
(i = this.initSegmentForMap(n, !0).bytes), (this.activeInitSegmentId_ = e);
}
return i && this.appendInitSegment_[t] ? ((this.playlistOfLastInitSegment_[t] = r), (this.appendInitSegment_[t] = !1), (this.activeInitSegmentId_ = null), i) : null;
}),
(t.handleQuotaExceededError_ = function (e, t) {
var i = this,
n = e.segmentInfo,
r = e.type,
a = e.bytes,
s = this.sourceUpdater_.audioBuffered(),
o = this.sourceUpdater_.videoBuffered();
1 < s.length && this.logger_('On QUOTA_EXCEEDED_ERR, found gaps in the audio buffer: ' + Po(s).join(', ')), 1 < o.length && this.logger_('On QUOTA_EXCEEDED_ERR, found gaps in the video buffer: ' + Po(o).join(', '));
var u = s.length ? s.start(0) : 0,
l = s.length ? s.end(s.length - 1) : 0,
c = o.length ? o.start(0) : 0,
e = o.length ? o.end(o.length - 1) : 0;
if (l - u <= 1 && e - c <= 1) return this.logger_('On QUOTA_EXCEEDED_ERR, single segment too large to append to buffer, triggering an error. Appended byte length: ' + a.byteLength + ', audio buffer: ' + Po(s).join(', ') + ', video buffer: ' + Po(o).join(', ') + ', '), this.error({ message: 'Quota exceeded error with append of a single segment of content', excludeUntil: 1 / 0 }), void this.trigger('error');
(this.waitingOnRemove_ = !0), this.callQueue_.push(this.appendToSourceBuffer_.bind(this, { segmentInfo: n, type: r, bytes: a }));
a = this.currentTime_() - 1;
this.logger_('On QUOTA_EXCEEDED_ERR, removing audio/video from 0 to ' + a),
this.remove(
0,
a,
function () {
i.logger_('On QUOTA_EXCEEDED_ERR, retrying append in 1s'),
(i.waitingOnRemove_ = !1),
(i.quotaExceededErrorRetryTimeout_ = window.setTimeout(function () {
i.logger_('On QUOTA_EXCEEDED_ERR, re-processing call queue'), (i.quotaExceededErrorRetryTimeout_ = null), i.processCallQueue_();
}, 1e3));
},
!0
);
}),
(t.handleAppendError_ = function (e, t) {
var i = e.segmentInfo,
n = e.type,
e = e.bytes;
t && (22 !== t.code ? (this.logger_('Received non QUOTA_EXCEEDED_ERR on append', t), this.error(n + ' append of ' + e.length + 'b failed for segment #' + i.mediaIndex + ' in playlist ' + i.playlist.id), this.trigger('appenderror')) : this.handleQuotaExceededError_({ segmentInfo: i, type: n, bytes: e }));
}),
(t.appendToSourceBuffer_ = function (e) {
var t,
i,
n = e.segmentInfo,
r = e.type,
a = e.initSegment,
s = e.data,
o = e.bytes;
o ||
((e = [s]),
(s = s.byteLength),
a && (e.unshift(a), (s += a.byteLength)),
(i = 0),
(e = { bytes: s, segments: e }).bytes &&
((t = new Uint8Array(e.bytes)),
e.segments.forEach(function (e) {
t.set(e, i), (i += e.byteLength);
})),
(o = t)),
this.sourceUpdater_.appendBuffer({ segmentInfo: n, type: r, bytes: o }, this.handleAppendError_.bind(this, { segmentInfo: n, type: r, bytes: o }));
}),
(t.handleSegmentTimingInfo_ = function (e, t, i) {
this.pendingSegment_ && t === this.pendingSegment_.requestId && ((t = this.pendingSegment_.segment)[(e = e + 'TimingInfo')] || (t[e] = {}), (t[e].transmuxerPrependedSeconds = i.prependedContentDuration || 0), (t[e].transmuxedPresentationStart = i.start.presentation), (t[e].transmuxedDecodeStart = i.start.decode), (t[e].transmuxedPresentationEnd = i.end.presentation), (t[e].transmuxedDecodeEnd = i.end.decode), (t[e].baseMediaDecodeTime = i.baseMediaDecodeTime));
}),
(t.appendData_ = function (e, t) {
var i = t.type,
n = t.data;
n && n.byteLength && (('audio' === i && this.audioDisabled_) || ((t = this.getInitSegmentAndUpdateState_({ type: i, initSegment: t.initSegment, playlist: e.playlist, map: e.isFmp4 ? e.segment.map : null })), this.appendToSourceBuffer_({ segmentInfo: e, type: i, initSegment: t, data: n })));
}),
(t.loadSegment_ = function (t) {
var i = this;
(this.state = 'WAITING'),
(this.pendingSegment_ = t),
this.trimBackBuffer_(t),
'number' == typeof t.timestampOffset && this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearAllMp4Captions' }),
this.hasEnoughInfoToLoad_()
? this.updateTransmuxerAndRequestSegment_(t)
: this.loadQueue_.push(function () {
var e = g({}, t, { forceTimestampOffset: !0 });
g(t, i.generateSegmentInfo_(e)), (i.isPendingTimestampOffset_ = !1), i.updateTransmuxerAndRequestSegment_(t);
});
}),
(t.updateTransmuxerAndRequestSegment_ = function (n) {
var r = this;
this.shouldUpdateTransmuxerTimestampOffset_(n.timestampOffset) && ((this.gopBuffer_.length = 0), (n.gopsToAlignWith = []), (this.timeMapping_ = 0), this.transmuxer_.postMessage({ action: 'reset' }), this.transmuxer_.postMessage({ action: 'setTimestampOffset', timestampOffset: n.timestampOffset }));
var e = this.createSimplifiedSegmentObj_(n),
t = this.isEndOfStream_(n.mediaIndex, n.playlist, n.partIndex),
i = null !== this.mediaIndex,
a = n.timeline !== this.currentTimeline_ && 0 < n.timeline,
a = t || (i && a);
this.logger_('Requesting ' + Qu(n)),
e.map && !e.map.bytes && (this.logger_('going to request init segment.'), (this.appendInitSegment_ = { video: !0, audio: !0 })),
(n.abortRequests = Uu({
xhr: this.vhs_.xhr,
xhrOptions: this.xhrOptions_,
decryptionWorker: this.decrypter_,
segment: e,
abortFn: this.handleAbort_.bind(this, n),
progressFn: this.handleProgress_.bind(this),
trackInfoFn: this.handleTrackInfo_.bind(this),
timingInfoFn: this.handleTimingInfo_.bind(this),
videoSegmentTimingInfoFn: this.handleSegmentTimingInfo_.bind(this, 'video', n.requestId),
audioSegmentTimingInfoFn: this.handleSegmentTimingInfo_.bind(this, 'audio', n.requestId),
captionsFn: this.handleCaptions_.bind(this),
isEndOfTimeline: a,
endedTimelineFn: function () {
r.logger_('received endedtimeline callback');
},
id3Fn: this.handleId3_.bind(this),
dataFn: this.handleData_.bind(this),
doneFn: this.segmentRequestFinished_.bind(this),
onTransmuxerLog: function (e) {
var t = e.message,
i = e.level,
e = e.stream;
r.logger_(Qu(n) + ' logged from transmuxer stream ' + e + ' as a ' + i + ': ' + t);
},
}));
}),
(t.trimBackBuffer_ = function (e) {
var t,
i,
n,
r,
r = ((t = this.seekable_()), (i = this.currentTime_()), (n = this.playlist_.targetDuration || 10), (r = i - fl.BACK_BUFFER_LENGTH), t.length && (r = Math.max(r, t.start(0))), Math.min(i - n, r));
0 < r && this.remove(0, r);
}),
(t.createSimplifiedSegmentObj_ = function (e) {
var t = e.segment,
i = e.part,
n = { resolvedUri: (i || t).resolvedUri, byterange: (i || t).byterange, requestId: e.requestId, transmuxer: e.transmuxer, audioAppendStart: e.audioAppendStart, gopsToAlignWith: e.gopsToAlignWith, part: e.part },
i = e.playlist.segments[e.mediaIndex - 1];
return i && i.timeline === t.timeline && (i.videoTimingInfo ? (n.baseStartTime = i.videoTimingInfo.transmuxedDecodeEnd) : i.audioTimingInfo && (n.baseStartTime = i.audioTimingInfo.transmuxedDecodeEnd)), t.key && ((e = t.key.iv || new Uint32Array([0, 0, 0, e.mediaIndex + e.playlist.mediaSequence])), (n.key = this.segmentKey(t.key)), (n.key.iv = e)), t.map && (n.map = this.initSegmentForMap(t.map)), n;
}),
(t.saveTransferStats_ = function (e) {
(this.mediaRequests += 1), e && ((this.mediaBytesTransferred += e.bytesReceived), (this.mediaTransferDuration += e.roundTripTime));
}),
(t.saveBandwidthRelatedStats_ = function (e, t) {
(this.pendingSegment_.byteLength = t.bytesReceived), e < 1 / 60 ? this.logger_("Ignoring segment's bandwidth because its duration of " + e + ' is less than the min to record ' + 1 / 60) : ((this.bandwidth = t.bandwidth), (this.roundTrip = t.roundTripTime));
}),
(t.handleTimeout_ = function () {
(this.mediaRequestsTimedout += 1), (this.bandwidth = 1), (this.roundTrip = NaN), this.trigger('bandwidthupdate');
}),
(t.segmentRequestFinished_ = function (e, t, i) {
if (this.callQueue_.length) this.callQueue_.push(this.segmentRequestFinished_.bind(this, e, t, i));
else if ((this.saveTransferStats_(t.stats), this.pendingSegment_ && t.requestId === this.pendingSegment_.requestId)) {
if (e) return (this.pendingSegment_ = null), (this.state = 'READY'), e.code === Tl ? void 0 : (this.pause(), e.code === bl ? void this.handleTimeout_() : ((this.mediaRequestsErrored += 1), this.error(e), void this.trigger('error')));
e = this.pendingSegment_;
this.saveBandwidthRelatedStats_(e.duration, t.stats),
(e.endOfAllRequests = t.endOfAllRequests),
i.gopInfo &&
(this.gopBuffer_ = (function (e, t, i) {
if (!t.length) return e;
if (i) return t.slice();
for (var n = t[0].pts, r = 0; r < e.length && !(e[r].pts >= n); r++);
return e.slice(0, r).concat(t);
})(this.gopBuffer_, i.gopInfo, this.safeAppend_)),
(this.state = 'APPENDING'),
this.trigger('appending'),
this.waitForAppendsToComplete_(e);
}
}),
(t.setTimeMapping_ = function (e) {
e = this.syncController_.mappingForTimeline(e);
null !== e && (this.timeMapping_ = e);
}),
(t.updateMediaSecondsLoaded_ = function (e) {
'number' == typeof e.start && 'number' == typeof e.end ? (this.mediaSecondsLoaded += e.end - e.start) : (this.mediaSecondsLoaded += e.duration);
}),
(t.shouldUpdateTransmuxerTimestampOffset_ = function (e) {
return null !== e && (('main' === this.loaderType_ && e !== this.sourceUpdater_.videoTimestampOffset()) || (!this.audioDisabled_ && e !== this.sourceUpdater_.audioTimestampOffset()));
}),
(t.trueSegmentStart_ = function (e) {
var t = e.currentStart,
i = e.playlist,
n = e.mediaIndex,
r = e.firstVideoFrameTimeForData,
a = e.currentVideoTimestampOffset,
s = e.useVideoTimingInfo,
o = e.videoTimingInfo,
e = e.audioTimingInfo;
if ('undefined' != typeof t) return t;
if (!s) return e.start;
i = i.segments[n - 1];
return 0 !== n && i && 'undefined' != typeof i.start && i.end === r + a ? o.start : r;
}),
(t.waitForAppendsToComplete_ = function (e) {
var t = this.getCurrentMediaInfo_(e);
if (!t) return this.error({ message: 'No starting media returned, likely due to an unsupported media format.', blacklistDuration: 1 / 0 }), void this.trigger('error');
var i = t.hasAudio,
n = t.hasVideo,
t = t.isMuxed,
n = 'main' === this.loaderType_ && n,
t = !this.audioDisabled_ && i && !t;
if (((e.waitingOnAppends = 0), !e.hasAppendedData_)) return e.timingInfo || 'number' != typeof e.timestampOffset || (this.isPendingTimestampOffset_ = !0), (e.timingInfo = { start: 0 }), e.waitingOnAppends++, this.isPendingTimestampOffset_ || (this.updateSourceBufferTimestampOffset_(e), this.processMetadataQueue_()), void this.checkAppendsDone_(e);
n && e.waitingOnAppends++, t && e.waitingOnAppends++, n && this.sourceUpdater_.videoQueueCallback(this.checkAppendsDone_.bind(this, e)), t && this.sourceUpdater_.audioQueueCallback(this.checkAppendsDone_.bind(this, e));
}),
(t.checkAppendsDone_ = function (e) {
this.checkForAbort_(e.requestId) || (e.waitingOnAppends--, 0 === e.waitingOnAppends && this.handleAppendsDone_());
}),
(t.checkForIllegalMediaSwitch = function (e) {
var t,
i,
e = ((t = this.loaderType_), (i = this.getCurrentMediaInfo_()), (e = e), 'main' === t && i && e ? (e.hasAudio || e.hasVideo ? (i.hasVideo && !e.hasVideo ? "Only audio found in segment when we expected video. We can't switch to audio only from a stream that had video. To get rid of this message, please add codec information to the manifest." : !i.hasVideo && e.hasVideo ? "Video found in segment when we expected only audio. We can't switch to a stream with video from an audio only stream. To get rid of this message, please add codec information to the manifest." : null) : 'Neither audio nor video found in segment.') : null);
return !!e && (this.error({ message: e, blacklistDuration: 1 / 0 }), this.trigger('error'), !0);
}),
(t.updateSourceBufferTimestampOffset_ = function (e) {
var t;
null === e.timestampOffset || 'number' != typeof e.timingInfo.start || e.changedTimestampOffset || 'main' !== this.loaderType_ || ((t = !1), (e.timestampOffset -= e.timingInfo.start), (e.changedTimestampOffset = !0), e.timestampOffset !== this.sourceUpdater_.videoTimestampOffset() && (this.sourceUpdater_.videoTimestampOffset(e.timestampOffset), (t = !0)), e.timestampOffset !== this.sourceUpdater_.audioTimestampOffset() && (this.sourceUpdater_.audioTimestampOffset(e.timestampOffset), (t = !0)), t && this.trigger('timestampoffset'));
}),
(t.updateTimingInfoEnd_ = function (e) {
e.timingInfo = e.timingInfo || {};
var t = this.getMediaInfo_(),
t = 'main' === this.loaderType_ && t && t.hasVideo && e.videoTimingInfo ? e.videoTimingInfo : e.audioTimingInfo;
t && (e.timingInfo.end = 'number' == typeof t.end ? t.end : t.start + e.duration);
}),
(t.handleAppendsDone_ = function () {
if ((this.pendingSegment_ && this.trigger('appendsdone'), !this.pendingSegment_)) return (this.state = 'READY'), void (this.paused() || this.monitorBuffer_());
var e = this.pendingSegment_;
this.updateTimingInfoEnd_(e), this.shouldSaveSegmentTimingInfo_ && this.syncController_.saveSegmentTimingInfo({ segmentInfo: e, shouldSaveTimelineMapping: 'main' === this.loaderType_ });
var t = el(e, this.sourceType_);
if ((t && ('warn' === t.severity ? tr.log.warn(t.message) : this.logger_(t.message)), this.recordThroughput_(e), (this.pendingSegment_ = null), (this.state = 'READY'), !e.isSyncRequest || (this.trigger('syncinfoupdate'), e.hasAppendedData_))) {
this.logger_('Appended ' + Qu(e)), this.addSegmentMetadataCue_(e), (this.fetchAtBuffer_ = !0), this.currentTimeline_ !== e.timeline && (this.timelineChangeController_.lastTimelineChange({ type: this.loaderType_, from: this.currentTimeline_, to: e.timeline }), 'main' !== this.loaderType_ || this.audioDisabled_ || this.timelineChangeController_.lastTimelineChange({ type: 'audio', from: this.currentTimeline_, to: e.timeline })), (this.currentTimeline_ = e.timeline), this.trigger('syncinfoupdate');
var i = e.segment,
t = e.part,
i = i.end && this.currentTime_() - i.end > 3 * e.playlist.targetDuration,
t = t && t.end && this.currentTime_() - t.end > 3 * e.playlist.partTargetDuration;
if (i || t) return this.logger_('bad ' + (i ? 'segment' : 'part') + ' ' + Qu(e)), void this.resetEverything();
null !== this.mediaIndex && this.trigger('bandwidthupdate'), this.trigger('progress'), (this.mediaIndex = e.mediaIndex), (this.partIndex = e.partIndex), this.isEndOfStream_(e.mediaIndex, e.playlist, e.partIndex) && this.endOfStream(), this.trigger('appended'), e.hasAppendedData_ && this.mediaAppends++, this.paused() || this.monitorBuffer_();
} else this.logger_('Throwing away un-appended sync request ' + Qu(e));
}),
(t.recordThroughput_ = function (e) {
var t, i;
e.duration < 1 / 60 ? this.logger_("Ignoring segment's throughput because its duration of " + e.duration + ' is less than the min to record ' + 1 / 60) : ((t = this.throughput.rate), (i = Date.now() - e.endOfAllRequests + 1), (i = Math.floor((e.byteLength / i) * 8 * 1e3)), (this.throughput.rate += (i - t) / ++this.throughput.count));
}),
(t.addSegmentMetadataCue_ = function (e) {
var t, i, n, r;
this.segmentMetadataTrack_ && ((i = (t = e.segment).start), (r = t.end), Yu(i) && Yu(r) && (Ku(i, r, this.segmentMetadataTrack_), (n = window.WebKitDataCue || window.VTTCue), (e = { custom: t.custom, dateTimeObject: t.dateTimeObject, dateTimeString: t.dateTimeString, bandwidth: e.playlist.attributes.BANDWIDTH, resolution: e.playlist.attributes.RESOLUTION, codecs: e.playlist.attributes.CODECS, byteLength: e.byteLength, uri: e.uri, timeline: e.timeline, playlist: e.playlist.id, start: i, end: r }), ((r = new n(i, r, JSON.stringify(e))).value = e), this.segmentMetadataTrack_.addCue(r)));
}),
e
);
})(tr.EventTarget);
function kl() {}
function Cl(e) {
return 'string' != typeof e
? e
: e.replace(/./, function (e) {
return e.toUpperCase();
});
}
function Il(e, t) {
var i = t[e + 'Buffer'];
return (i && i.updating) || t.queuePending[e];
}
function xl(e, t) {
if (0 !== t.queue.length) {
var i = 0,
n = t.queue[i];
if ('mediaSource' !== n.type) {
if ('mediaSource' !== e && t.ready() && 'closed' !== t.mediaSource.readyState && !Il(e, t)) {
if (n.type !== e) {
if (
null ===
(i = (function (e, t) {
for (var i = 0; i < t.length; i++) {
var n = t[i];
if ('mediaSource' === n.type) return null;
if (n.type === e) return i;
}
return null;
})(e, t.queue))
)
return;
n = t.queue[i];
}
t.queue.splice(i, 1), (t.queuePending[e] = n).action(e, t), n.doneFn || ((t.queuePending[e] = null), xl(e, t));
}
} else t.updating() || 'closed' === t.mediaSource.readyState || (t.queue.shift(), n.action(t), n.doneFn && n.doneFn(), xl('audio', t), xl('video', t));
}
}
function Al(e, t) {
var i = t[e + 'Buffer'],
n = Cl(e);
i && (i.removeEventListener('updateend', t['on' + n + 'UpdateEnd_']), i.removeEventListener('error', t['on' + n + 'Error_']), (t.codecs[e] = null), (t[e + 'Buffer'] = null));
}
function Pl(e, t) {
return e && t && -1 !== Array.prototype.indexOf.call(e.sourceBuffers, t);
}
function Ll(e) {
var t = e.type,
i = e.sourceUpdater,
n = e.action,
r = e.doneFn,
e = e.name;
i.queue.push({ type: t, action: n, doneFn: r, name: e }), xl(t, i);
}
function Dl(i, n) {
return function (e) {
var t;
n.queuePending[i] && ((t = n.queuePending[i].doneFn), (n.queuePending[i] = null), t && t(n[i + 'Error_'])), xl(i, n);
};
}
function Ol(e) {
return decodeURIComponent(escape(String.fromCharCode.apply(null, e)));
}
function Rl(e, t) {
e.abort(), e.pause(), t && t.activePlaylistLoader && (t.activePlaylistLoader.pause(), (t.activePlaylistLoader = null));
}
function Ml(e, t) {
(t.activePlaylistLoader = e).load();
}
function Nl(e, t) {
for (var i = 0; i < e.length; i++) {
if (Xo(t, e[i])) return !0;
if (e[i].playlists && Nl(e[i].playlists, t)) return !0;
}
return !1;
}
function Ul(a) {
['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(function (e) {
oc[e](e, a);
});
var e,
s = a.mediaTypes,
t = a.masterPlaylistLoader,
i = a.tech,
n = a.vhs,
r = a.segmentLoaders,
o = r.AUDIO,
u = r.main;
function l() {
s.AUDIO.onTrackChanged(), i.trigger({ type: 'usage', name: 'vhs-audio-change' }), i.trigger({ type: 'usage', name: 'hls-audio-change' });
}
for (e in (['AUDIO', 'SUBTITLES'].forEach(function (e) {
var u, l, o, c, t, i, d, h, n, r;
(s[e].activeGroup =
((u = e),
(l = a),
function (t) {
var e = l.masterPlaylistLoader,
i = l.mediaTypes[u].groups,
n = e.media();
if (!n) return null;
var r = null;
n.attributes[u] && (r = i[n.attributes[u]]);
var a = Object.keys(i);
if (!r)
if ('AUDIO' === u && 1 < a.length && Yo(l.master))
for (var s = 0; s < a.length; s++) {
var o = i[a[s]];
if (Nl(o, n)) {
r = o;
break;
}
}
else i.main ? (r = i.main) : 1 === a.length && (r = i[a[0]]);
return 'undefined' == typeof t
? r
: (null !== t &&
r &&
r.filter(function (e) {
return e.id === t.id;
})[0]) ||
null;
})),
(s[e].activeTrack = uc[e](e, a)),
(s[e].onGroupChanged =
((o = e),
(c = a),
function () {
var e = c.segmentLoaders,
t = e[o],
i = e.main,
n = c.mediaTypes[o],
r = n.activeTrack(),
a = n.getActiveGroup(),
s = n.activePlaylistLoader,
e = n.lastGroup_;
(a && e && a.id === e.id) || ((n.lastGroup_ = a), (n.lastTrack_ = r), Rl(t, n), a && !a.isMasterPlaylist && (a.playlistLoader ? (t.resyncLoader(), Ml(a.playlistLoader, n)) : s && i.resetEverything()));
})),
(s[e].onGroupChanging =
((t = e),
(i = a),
function () {
var e = i.segmentLoaders[t];
(i.mediaTypes[t].lastGroup_ = null), e.abort(), e.pause();
})),
(s[e].onTrackChanged =
((d = e),
(h = a),
function () {
var e = h.masterPlaylistLoader,
t = h.segmentLoaders,
i = t[d],
n = t.main,
r = h.mediaTypes[d],
a = r.activeTrack(),
s = r.getActiveGroup(),
o = r.activePlaylistLoader,
u = r.lastTrack_;
if ((!u || !a || u.id !== a.id) && ((r.lastGroup_ = s), (r.lastTrack_ = a), Rl(i, r), s)) {
if (s.isMasterPlaylist) {
if (!a || !u || a.id === u.id) return;
var l = h.vhs.masterPlaylistController_,
t = l.selectPlaylist();
return l.media() === t ? void 0 : (r.logger_('track change. Switching master audio from ' + u.id + ' to ' + a.id), e.pause(), n.resetEverything(), void l.fastQualityChange_(t));
}
if ('AUDIO' === d) {
if (!s.playlistLoader) return n.setAudio(!0), void n.resetEverything();
i.setAudio(!0), n.setAudio(!1);
}
o !== s.playlistLoader && (i.track && i.track(a), i.resetEverything()), Ml(s.playlistLoader, r);
}
})),
(s[e].getActiveGroup =
((n = e),
(r = a.mediaTypes),
function () {
var e = r[n].activeTrack();
return e ? r[n].activeGroup(e) : null;
}));
}),
(r = s.AUDIO.activeGroup()) &&
((r = (
r.filter(function (e) {
return e.default;
})[0] || r[0]
).id),
(s.AUDIO.tracks[r].enabled = !0),
s.AUDIO.onGroupChanged(),
s.AUDIO.onTrackChanged(),
s.AUDIO.getActiveGroup().playlistLoader ? (u.setAudio(!1), o.setAudio(!0)) : u.setAudio(!0)),
t.on('mediachange', function () {
['AUDIO', 'SUBTITLES'].forEach(function (e) {
return s[e].onGroupChanged();
});
}),
t.on('mediachanging', function () {
['AUDIO', 'SUBTITLES'].forEach(function (e) {
return s[e].onGroupChanging();
});
}),
i.audioTracks().addEventListener('change', l),
i.remoteTextTracks().addEventListener('change', s.SUBTITLES.onTrackChanged),
n.on('dispose', function () {
i.audioTracks().removeEventListener('change', l), i.remoteTextTracks().removeEventListener('change', s.SUBTITLES.onTrackChanged);
}),
i.clearTracks('audio'),
s.AUDIO.tracks))
i.audioTracks().addTrack(s.AUDIO.tracks[e]);
}
function Bl(e, t, i) {
var n,
r,
a,
s,
o = e.masterPlaylistController_,
u = o[(e.options_.smoothQualityChange ? 'smooth' : 'fast') + 'QualityChange_'].bind(o);
t.attributes && ((n = t.attributes.RESOLUTION), (this.width = n && n.width), (this.height = n && n.height), (this.bandwidth = t.attributes.BANDWIDTH)),
(this.codecs = Hu(o.master(), t)),
(this.playlist = t),
(this.id = i),
(this.enabled =
((r = e.playlists),
(a = t.id),
(s = u),
function (e) {
var t = r.master.playlists[a],
i = Vo(t),
n = Wo(t);
return 'undefined' == typeof e ? n : (e ? delete t.disabled : (t.disabled = !0), e === n || i || (s(), e ? r.trigger('renditionenabled') : r.trigger('renditiondisabled')), e);
}));
}
function Fl(t, e) {
var i = 0,
n = 0,
r = tr.mergeOptions(pc, e);
function a() {
n && t.currentTime(n);
}
function s(e) {
null != e && ((n = (t.duration() !== 1 / 0 && t.currentTime()) || 0), t.one('loadedmetadata', a), t.src(e), t.trigger({ type: 'usage', name: 'vhs-error-reload' }), t.trigger({ type: 'usage', name: 'hls-error-reload' }), t.play());
}
function o() {
return Date.now() - i < 1e3 * r.errorInterval ? (t.trigger({ type: 'usage', name: 'vhs-error-reload-canceled' }), void t.trigger({ type: 'usage', name: 'hls-error-reload-canceled' })) : r.getSource && 'function' == typeof r.getSource ? ((i = Date.now()), r.getSource.call(t, s)) : void tr.log.error('ERROR: reloadSourceOnError - The option getSource must be a function!');
}
function u() {
t.off('loadedmetadata', a), t.off('error', o), t.off('dispose', u);
}
t.ready(function () {
t.trigger({ type: 'usage', name: 'vhs-error-reload-initialized' }), t.trigger({ type: 'usage', name: 'hls-error-reload-initialized' });
}),
t.on('error', o),
t.on('dispose', u),
(t.reloadSourceOnError = function (e) {
u(), Fl(t, e);
});
}
var jl,
Hl = ['video', 'audio'],
ql = function (n, r, a) {
return function (t, i) {
var e = i[t + 'Buffer'];
if (Pl(i.mediaSource, e)) {
i.logger_('Appending segment ' + r.mediaIndex + "'s " + n.length + ' bytes to ' + t + 'Buffer');
try {
e.appendBuffer(n);
} catch (e) {
i.logger_('Error with code ' + e.code + ' ' + (22 === e.code ? '(QUOTA_EXCEEDED_ERR) ' : '') + 'when appending segment ' + r.mediaIndex + ' to ' + t + 'Buffer'), (i.queuePending[t] = null), a(e);
}
}
};
},
Vl = function (n, r) {
return function (t, i) {
var e = i[t + 'Buffer'];
if (Pl(i.mediaSource, e)) {
i.logger_('Removing ' + n + ' to ' + r + ' from ' + t + 'Buffer');
try {
e.remove(n, r);
} catch (e) {
i.logger_('Remove ' + n + ' to ' + r + ' from ' + t + 'Buffer failed');
}
}
};
},
Wl = function (n) {
return function (e, t) {
var i = t[e + 'Buffer'];
Pl(t.mediaSource, i) && (t.logger_('Setting ' + e + 'timestampOffset to ' + n), (i.timestampOffset = n));
};
},
zl = function (i) {
return function (e, t) {
i();
};
},
Gl = function (t) {
return function (e) {
if ('open' === e.mediaSource.readyState) {
e.logger_('Calling mediaSource endOfStream(' + (t || '') + ')');
try {
e.mediaSource.endOfStream(t);
} catch (e) {
tr.log.warn('Failed to call media source endOfStream', e);
}
}
};
},
Xl = function (t) {
return function (e) {
e.logger_('Setting mediaSource duration to ' + t);
try {
e.mediaSource.duration = t;
} catch (e) {
tr.log.warn('Failed to set media source duration', e);
}
};
},
Kl = function () {
return function (t, e) {
if ('open' === e.mediaSource.readyState) {
var i = e[t + 'Buffer'];
if (Pl(e.mediaSource, i)) {
e.logger_('calling abort on ' + t + 'Buffer');
try {
i.abort();
} catch (e) {
tr.log.warn('Failed to abort on ' + t + 'Buffer', e);
}
}
}
};
},
Yl = function (n, r) {
return function (e) {
var t = Cl(n),
i = fr(r);
e.logger_('Adding ' + n + 'Buffer with codec ' + r + ' to mediaSource');
i = e.mediaSource.addSourceBuffer(i);
i.addEventListener('updateend', e['on' + t + 'UpdateEnd_']), i.addEventListener('error', e['on' + t + 'Error_']), (e.codecs[n] = r), (e[n + 'Buffer'] = i);
};
},
Ql = function (i) {
return function (e) {
var t = e[i + 'Buffer'];
if ((Al(i, e), Pl(e.mediaSource, t))) {
e.logger_('Removing ' + i + 'Buffer with codec ' + e.codecs[i] + ' from mediaSource');
try {
e.mediaSource.removeSourceBuffer(t);
} catch (e) {
tr.log.warn('Failed to removeSourceBuffer ' + i + 'Buffer', e);
}
}
};
},
$l = function (r) {
return function (e, t) {
var i = t[e + 'Buffer'],
n = fr(r);
Pl(t.mediaSource, i) && t.codecs[e] !== r && (t.logger_('changing ' + e + 'Buffer codec from ' + t.codecs[e] + ' to ' + r), i.changeType(n), (t.codecs[e] = r));
};
},
Jl = (function (i) {
function e(e) {
var t = i.call(this) || this;
return (
(t.mediaSource = e),
(t.sourceopenListener_ = function () {
return xl('mediaSource', pt(t));
}),
t.mediaSource.addEventListener('sourceopen', t.sourceopenListener_),
(t.logger_ = ko('SourceUpdater')),
(t.audioTimestampOffset_ = 0),
(t.videoTimestampOffset_ = 0),
(t.queue = []),
(t.queuePending = { audio: null, video: null }),
(t.delayedAudioAppendQueue_ = []),
(t.videoAppendQueued_ = !1),
(t.codecs = {}),
(t.onVideoUpdateEnd_ = Dl('video', pt(t))),
(t.onAudioUpdateEnd_ = Dl('audio', pt(t))),
(t.onVideoError_ = function (e) {
t.videoError_ = e;
}),
(t.onAudioError_ = function (e) {
t.audioError_ = e;
}),
(t.createdSourceBuffers_ = !1),
(t.initializedEme_ = !1),
(t.triggeredReady_ = !1),
t
);
}
ft(e, i);
var t = e.prototype;
return (
(t.initializedEme = function () {
(this.initializedEme_ = !0), this.triggerReady();
}),
(t.hasCreatedSourceBuffers = function () {
return this.createdSourceBuffers_;
}),
(t.hasInitializedAnyEme = function () {
return this.initializedEme_;
}),
(t.ready = function () {
return this.hasCreatedSourceBuffers() && this.hasInitializedAnyEme();
}),
(t.createSourceBuffers = function (e) {
this.hasCreatedSourceBuffers() || (this.addOrChangeSourceBuffers(e), (this.createdSourceBuffers_ = !0), this.trigger('createdsourcebuffers'), this.triggerReady());
}),
(t.triggerReady = function () {
this.ready() && !this.triggeredReady_ && ((this.triggeredReady_ = !0), this.trigger('ready'));
}),
(t.addSourceBuffer = function (e, t) {
Ll({ type: 'mediaSource', sourceUpdater: this, action: Yl(e, t), name: 'addSourceBuffer' });
}),
(t.abort = function (e) {
Ll({ type: e, sourceUpdater: this, action: Kl(e), name: 'abort' });
}),
(t.removeSourceBuffer = function (e) {
this.canRemoveSourceBuffer() ? Ll({ type: 'mediaSource', sourceUpdater: this, action: Ql(e), name: 'removeSourceBuffer' }) : tr.log.error('removeSourceBuffer is not supported!');
}),
(t.canRemoveSourceBuffer = function () {
return !tr.browser.IE_VERSION && !tr.browser.IS_FIREFOX && window.MediaSource && window.MediaSource.prototype && 'function' == typeof window.MediaSource.prototype.removeSourceBuffer;
}),
(e.canChangeType = function () {
return window.SourceBuffer && window.SourceBuffer.prototype && 'function' == typeof window.SourceBuffer.prototype.changeType;
}),
(t.canChangeType = function () {
return this.constructor.canChangeType();
}),
(t.changeType = function (e, t) {
this.canChangeType() ? Ll({ type: e, sourceUpdater: this, action: $l(t), name: 'changeType' }) : tr.log.error('changeType is not supported!');
}),
(t.addOrChangeSourceBuffers = function (i) {
var n = this;
if (!i || 'object' != typeof i || 0 === Object.keys(i).length) throw new Error('Cannot addOrChangeSourceBuffers to undefined codecs');
Object.keys(i).forEach(function (e) {
var t = i[e];
if (!n.hasCreatedSourceBuffers()) return n.addSourceBuffer(e, t);
n.canChangeType() && n.changeType(e, t);
});
}),
(t.appendBuffer = function (e, t) {
var i = this,
n = e.segmentInfo,
r = e.type,
a = e.bytes;
if (((this.processedAppend_ = !0), 'audio' === r && this.videoBuffer && !this.videoAppendQueued_)) return this.delayedAudioAppendQueue_.push([e, t]), void this.logger_('delayed audio append of ' + a.length + ' until video append');
Ll({ type: r, sourceUpdater: this, action: ql(a, n || { mediaIndex: -1 }, t), doneFn: t, name: 'appendBuffer' }),
'video' === r &&
((this.videoAppendQueued_ = !0),
this.delayedAudioAppendQueue_.length &&
((r = this.delayedAudioAppendQueue_.slice()),
this.logger_('queuing delayed audio ' + r.length + ' appendBuffers'),
(this.delayedAudioAppendQueue_.length = 0),
r.forEach(function (e) {
i.appendBuffer.apply(i, e);
})));
}),
(t.audioBuffered = function () {
return (Pl(this.mediaSource, this.audioBuffer) && this.audioBuffer.buffered) || tr.createTimeRange();
}),
(t.videoBuffered = function () {
return (Pl(this.mediaSource, this.videoBuffer) && this.videoBuffer.buffered) || tr.createTimeRange();
}),
(t.buffered = function () {
var e = Pl(this.mediaSource, this.videoBuffer) ? this.videoBuffer : null,
t = Pl(this.mediaSource, this.audioBuffer) ? this.audioBuffer : null;
return t && !e
? this.audioBuffered()
: e && !t
? this.videoBuffered()
: (function (e, t) {
var i = null,
n = null,
r = 0,
a = [],
s = [];
if (!(e && e.length && t && t.length)) return tr.createTimeRange();
for (var o = e.length; o--; ) a.push({ time: e.start(o), type: 'start' }), a.push({ time: e.end(o), type: 'end' });
for (o = t.length; o--; ) a.push({ time: t.start(o), type: 'start' }), a.push({ time: t.end(o), type: 'end' });
for (
a.sort(function (e, t) {
return e.time - t.time;
}),
o = 0;
o < a.length;
o++
)
'start' === a[o].type ? 2 === ++r && (i = a[o].time) : 'end' === a[o].type && 1 === --r && (n = a[o].time), null !== i && null !== n && (s.push([i, n]), (n = i = null));
return tr.createTimeRanges(s);
})(this.audioBuffered(), this.videoBuffered());
}),
(t.setDuration = function (e, t) {
void 0 === t && (t = kl), Ll({ type: 'mediaSource', sourceUpdater: this, action: Xl(e), name: 'duration', doneFn: t });
}),
(t.endOfStream = function (e, t) {
void 0 === t && (t = kl), Ll({ type: 'mediaSource', sourceUpdater: this, action: Gl((e = 'string' != typeof (e = void 0 === e ? null : e) ? void 0 : e)), name: 'endOfStream', doneFn: t });
}),
(t.removeAudio = function (e, t, i) {
void 0 === i && (i = kl), this.audioBuffered().length && 0 !== this.audioBuffered().end(0) ? Ll({ type: 'audio', sourceUpdater: this, action: Vl(e, t), doneFn: i, name: 'remove' }) : i();
}),
(t.removeVideo = function (e, t, i) {
void 0 === i && (i = kl), this.videoBuffered().length && 0 !== this.videoBuffered().end(0) ? Ll({ type: 'video', sourceUpdater: this, action: Vl(e, t), doneFn: i, name: 'remove' }) : i();
}),
(t.updating = function () {
return !(!Il('audio', this) && !Il('video', this));
}),
(t.audioTimestampOffset = function (e) {
return 'undefined' != typeof e && this.audioBuffer && this.audioTimestampOffset_ !== e && (Ll({ type: 'audio', sourceUpdater: this, action: Wl(e), name: 'timestampOffset' }), (this.audioTimestampOffset_ = e)), this.audioTimestampOffset_;
}),
(t.videoTimestampOffset = function (e) {
return 'undefined' != typeof e && this.videoBuffer && this.videoTimestampOffset !== e && (Ll({ type: 'video', sourceUpdater: this, action: Wl(e), name: 'timestampOffset' }), (this.videoTimestampOffset_ = e)), this.videoTimestampOffset_;
}),
(t.audioQueueCallback = function (e) {
this.audioBuffer && Ll({ type: 'audio', sourceUpdater: this, action: zl(e), name: 'callback' });
}),
(t.videoQueueCallback = function (e) {
this.videoBuffer && Ll({ type: 'video', sourceUpdater: this, action: zl(e), name: 'callback' });
}),
(t.dispose = function () {
var t = this;
this.trigger('dispose'),
Hl.forEach(function (e) {
t.abort(e),
t.canRemoveSourceBuffer()
? t.removeSourceBuffer(e)
: t[e + 'QueueCallback'](function () {
return Al(e, t);
});
}),
(this.videoAppendQueued_ = !1),
(this.delayedAudioAppendQueue_.length = 0),
this.sourceopenListener_ && this.mediaSource.removeEventListener('sourceopen', this.sourceopenListener_),
this.off();
}),
e
);
})(tr.EventTarget),
Zl = new Uint8Array(
'\n\n'.split('').map(function (e) {
return e.charCodeAt(0);
})
),
ec = (function (i) {
function e(e, t) {
return ((t = i.call(this, e, (t = void 0 === t ? {} : t)) || this).mediaSource_ = null), (t.subtitlesTrack_ = null), (t.loaderType_ = 'subtitle'), (t.featuresNativeTextTracks_ = e.featuresNativeTextTracks), (t.shouldSaveSegmentTimingInfo_ = !1), t;
}
ft(e, i);
var t = e.prototype;
return (
(t.createTransmuxer_ = function () {
return null;
}),
(t.buffered_ = function () {
if (!this.subtitlesTrack_ || !this.subtitlesTrack_.cues || !this.subtitlesTrack_.cues.length) return tr.createTimeRanges();
var e = this.subtitlesTrack_.cues,
t = e[0].startTime,
e = e[e.length - 1].startTime;
return tr.createTimeRanges([[t, e]]);
}),
(t.initSegmentForMap = function (e, t) {
if ((void 0 === t && (t = !1), !e)) return null;
var i = hu(e),
n = this.initSegments_[i];
return t && !n && e.bytes && ((t = Zl.byteLength + e.bytes.byteLength), (t = new Uint8Array(t)).set(e.bytes), t.set(Zl, e.bytes.byteLength), (this.initSegments_[i] = n = { resolvedUri: e.resolvedUri, byterange: e.byterange, bytes: t })), n || e;
}),
(t.couldBeginLoading_ = function () {
return this.playlist_ && this.subtitlesTrack_ && !this.paused();
}),
(t.init_ = function () {
return (this.state = 'READY'), this.resetEverything(), this.monitorBuffer_();
}),
(t.track = function (e) {
return 'undefined' == typeof e || ((this.subtitlesTrack_ = e), 'INIT' === this.state && this.couldBeginLoading_() && this.init_()), this.subtitlesTrack_;
}),
(t.remove = function (e, t) {
Ku(e, t, this.subtitlesTrack_);
}),
(t.fillBuffer_ = function () {
var e = this,
t = this.chooseNextRequest_();
if (t) {
if (null === this.syncController_.timestampOffsetForTimeline(t.timeline))
return (
this.syncController_.one('timestampoffset', function () {
(e.state = 'READY'), e.paused() || e.monitorBuffer_();
}),
void (this.state = 'WAITING_ON_TIMELINE')
);
this.loadSegment_(t);
}
}),
(t.timestampOffsetForSegment_ = function () {
return null;
}),
(t.chooseNextRequest_ = function () {
return this.skipEmptySegments_(i.prototype.chooseNextRequest_.call(this));
}),
(t.skipEmptySegments_ = function (e) {
for (; e && e.segment.empty; ) {
if (e.mediaIndex + 1 >= e.playlist.segments.length) {
e = null;
break;
}
e = this.generateSegmentInfo_({ playlist: e.playlist, mediaIndex: e.mediaIndex + 1, startOfSegment: e.startOfSegment + e.duration, isSyncRequest: e.isSyncRequest });
}
return e;
}),
(t.stopForError = function (e) {
this.error(e), (this.state = 'READY'), this.pause(), this.trigger('error');
}),
(t.segmentRequestFinished_ = function (e, t, i) {
var n = this;
if (this.subtitlesTrack_) {
if ((this.saveTransferStats_(t.stats), !this.pendingSegment_)) return (this.state = 'READY'), void (this.mediaRequestsAborted += 1);
if (e) return e.code === bl && this.handleTimeout_(), e.code === Tl ? (this.mediaRequestsAborted += 1) : (this.mediaRequestsErrored += 1), void this.stopForError(e);
var r = this.pendingSegment_;
this.saveBandwidthRelatedStats_(r.duration, t.stats), (this.state = 'APPENDING'), this.trigger('appending');
var a = r.segment;
if ((a.map && (a.map.bytes = t.map.bytes), (r.bytes = t.bytes), 'function' != typeof window.WebVTT && this.subtitlesTrack_ && this.subtitlesTrack_.tech_)) {
var s = function () {
n.subtitlesTrack_.tech_.off('vttjsloaded', o), n.stopForError({ message: 'Error loading vtt.js' });
},
o = function () {
n.subtitlesTrack_.tech_.off('vttjserror', s), n.segmentRequestFinished_(e, t, i);
};
return (this.state = 'WAITING_ON_VTTJS'), this.subtitlesTrack_.tech_.one('vttjsloaded', o), void this.subtitlesTrack_.tech_.one('vttjserror', s);
}
a.requested = !0;
try {
this.parseVTTCues_(r);
} catch (e) {
return void this.stopForError({ message: e.message });
}
if ((this.updateTimeMapping_(r, this.syncController_.timelines[r.timeline], this.playlist_), r.cues.length ? (r.timingInfo = { start: r.cues[0].startTime, end: r.cues[r.cues.length - 1].endTime }) : (r.timingInfo = { start: r.startOfSegment, end: r.startOfSegment + r.duration }), r.isSyncRequest)) return this.trigger('syncinfoupdate'), (this.pendingSegment_ = null), void (this.state = 'READY');
(r.byteLength = r.bytes.byteLength),
(this.mediaSecondsLoaded += a.duration),
r.cues.forEach(function (e) {
n.subtitlesTrack_.addCue(n.featuresNativeTextTracks_ ? new window.VTTCue(e.startTime, e.endTime, e.text) : e);
}),
(function (t) {
var e = t.cues;
if (e)
for (var i = 0; i < e.length; i++) {
for (var n = [], r = 0, a = 0; a < e.length; a++) e[i].startTime === e[a].startTime && e[i].endTime === e[a].endTime && e[i].text === e[a].text && 1 < ++r && n.push(e[a]);
n.length &&
n.forEach(function (e) {
return t.removeCue(e);
});
}
})(this.subtitlesTrack_),
this.handleAppendsDone_();
} else this.state = 'READY';
}),
(t.handleData_ = function () {}),
(t.updateTimingInfoEnd_ = function () {}),
(t.parseVTTCues_ = function (t) {
var e = !1;
'function' == typeof window.TextDecoder ? (i = new window.TextDecoder('utf8')) : ((i = window.WebVTT.StringDecoder()), (e = !0));
var i = new window.WebVTT.Parser(window, window.vttjs, i);
(t.cues = []),
(t.timestampmap = { MPEGTS: 0, LOCAL: 0 }),
(i.oncue = t.cues.push.bind(t.cues)),
(i.ontimestampmap = function (e) {
t.timestampmap = e;
}),
(i.onparsingerror = function (e) {
tr.log.warn('Error encountered when parsing cues: ' + e.message);
}),
t.segment.map && ((n = t.segment.map.bytes), e && (n = Ol(n)), i.parse(n));
var n = t.bytes;
e && (n = Ol(n)), i.parse(n), i.flush();
}),
(t.updateTimeMapping_ = function (e, t, i) {
var n,
r,
a = e.segment;
t &&
(e.cues.length
? ((r = e.timestampmap),
(n = r.MPEGTS / il - r.LOCAL + t.mapping),
e.cues.forEach(function (e) {
(e.startTime += n), (e.endTime += n);
}),
i.syncInfo || ((r = e.cues[0].startTime), (t = e.cues[e.cues.length - 1].startTime), (i.syncInfo = { mediaSequence: i.mediaSequence + e.mediaIndex, time: Math.min(r, t - a.duration) })))
: (a.empty = !0));
}),
e
);
})(El),
tc = [
{
name: 'VOD',
run: function (e, t, i, n, r) {
if (i === 1 / 0) return null;
return { time: 0, segmentIndex: 0, partIndex: null };
},
},
{
name: 'ProgramDateTime',
run: function (e, t, i, n, r) {
if (!Object.keys(e.timelineToDatetimeMappings).length) return null;
var a = null,
s = null,
o = Ro(t);
r = r || 0;
for (var u = 0; u < o.length; u++) {
var l = o[t.endList || 0 === r ? u : o.length - (u + 1)],
c = l.segment,
d = e.timelineToDatetimeMappings[c.timeline];
if (d && c.dateTimeObject) {
var h = c.dateTimeObject.getTime() / 1e3 + d;
if (c.parts && 'number' == typeof l.partIndex) for (var p = 0; p < l.partIndex; p++) h += c.parts[p].duration;
d = Math.abs(r - h);
if (null !== s && (0 === d || s < d)) break;
(s = d), (a = { time: h, segmentIndex: l.segmentIndex, partIndex: l.partIndex });
}
}
return a;
},
},
{
name: 'Segment',
run: function (e, t, i, n, r) {
var a = null,
s = null;
r = r || 0;
for (var o = Ro(t), u = 0; u < o.length; u++) {
var l = o[t.endList || 0 === r ? u : o.length - (u + 1)],
c = l.segment,
d = (l.part && l.part.start) || (c && c.start);
if (c.timeline === n && 'undefined' != typeof d) {
c = Math.abs(r - d);
if (null !== s && s < c) break;
(!a || null === s || c <= s) && ((s = c), (a = { time: d, segmentIndex: l.segmentIndex, partIndex: l.partIndex }));
}
}
return a;
},
},
{
name: 'Discontinuity',
run: function (e, t, i, n, r) {
var a = null;
if (((r = r || 0), t.discontinuityStarts && t.discontinuityStarts.length))
for (var s = null, o = 0; o < t.discontinuityStarts.length; o++) {
var u = t.discontinuityStarts[o],
l = t.discontinuitySequence + o + 1,
c = e.discontinuities[l];
if (c) {
l = Math.abs(r - c.time);
if (null !== s && s < l) break;
(!a || null === s || l <= s) && ((s = l), (a = { time: c.time, segmentIndex: u, partIndex: null }));
}
}
return a;
},
},
{
name: 'Playlist',
run: function (e, t, i, n, r) {
return t.syncInfo ? { time: t.syncInfo.time, segmentIndex: t.syncInfo.mediaSequence - t.mediaSequence, partIndex: null } : null;
},
},
],
ic = (function (i) {
function e(e) {
var t = i.call(this) || this;
return (t.timelines = []), (t.discontinuities = []), (t.timelineToDatetimeMappings = {}), (t.logger_ = ko('SyncController')), t;
}
ft(e, i);
var t = e.prototype;
return (
(t.getSyncPoint = function (e, t, i, n) {
i = this.runStrategies_(e, t, i, n);
return i.length ? this.selectSyncPoint_(i, { key: 'time', value: n }) : null;
}),
(t.getExpiredTime = function (e, t) {
if (!e || !e.segments) return null;
t = this.runStrategies_(e, t, e.discontinuitySequence, 0);
if (!t.length) return null;
t = this.selectSyncPoint_(t, { key: 'segmentIndex', value: 0 });
return 0 < t.segmentIndex && (t.time *= -1), Math.abs(t.time + jo({ defaultDuration: e.targetDuration, durationList: e.segments, startIndex: t.segmentIndex, endIndex: 0 }));
}),
(t.runStrategies_ = function (e, t, i, n) {
for (var r = [], a = 0; a < tc.length; a++) {
var s = tc[a],
o = s.run(this, e, t, i, n);
o && ((o.strategy = s.name), r.push({ strategy: s.name, syncPoint: o }));
}
return r;
}),
(t.selectSyncPoint_ = function (e, t) {
for (var i = e[0].syncPoint, n = Math.abs(e[0].syncPoint[t.key] - t.value), r = e[0].strategy, a = 1; a < e.length; a++) {
var s = Math.abs(e[a].syncPoint[t.key] - t.value);
s < n && ((n = s), (i = e[a].syncPoint), (r = e[a].strategy));
}
return this.logger_('syncPoint for [' + t.key + ': ' + t.value + '] chosen with strategy [' + r + ']: [time:' + i.time + ', segmentIndex:' + i.segmentIndex + ('number' == typeof i.partIndex ? ',partIndex:' + i.partIndex : '') + ']'), i;
}),
(t.saveExpiredSegmentInfo = function (e, t) {
var i = t.mediaSequence - e.mediaSequence;
if (86400 < i) tr.log.warn('Not saving expired segment info. Media sequence gap ' + i + ' is too large.');
else
for (var n = i - 1; 0 <= n; n--) {
var r = e.segments[n];
if (r && 'undefined' != typeof r.start) {
(t.syncInfo = { mediaSequence: e.mediaSequence + n, time: r.start }), this.logger_('playlist refresh sync: [time:' + t.syncInfo.time + ', mediaSequence: ' + t.syncInfo.mediaSequence + ']'), this.trigger('syncinfoupdate');
break;
}
}
}),
(t.setDateTimeMappingForStart = function (e) {
var t;
(this.timelineToDatetimeMappings = {}), e.segments && e.segments.length && e.segments[0].dateTimeObject && ((e = (t = e.segments[0]).dateTimeObject.getTime() / 1e3), (this.timelineToDatetimeMappings[t.timeline] = -e));
}),
(t.saveSegmentTimingInfo = function (e) {
var t = e.segmentInfo,
i = e.shouldSaveTimelineMapping,
n = this.calculateSegmentTimeMapping_(t, t.timingInfo, i),
e = t.segment;
n && (this.saveDiscontinuitySyncInfo_(t), t.playlist.syncInfo || (t.playlist.syncInfo = { mediaSequence: t.playlist.mediaSequence + t.mediaIndex, time: e.start }));
t = e.dateTimeObject;
e.discontinuity && i && t && (this.timelineToDatetimeMappings[e.timeline] = -t.getTime() / 1e3);
}),
(t.timestampOffsetForTimeline = function (e) {
return 'undefined' == typeof this.timelines[e] ? null : this.timelines[e].time;
}),
(t.mappingForTimeline = function (e) {
return 'undefined' == typeof this.timelines[e] ? null : this.timelines[e].mapping;
}),
(t.calculateSegmentTimeMapping_ = function (e, t, i) {
var n,
r,
a = e.segment,
s = e.part,
o = this.timelines[e.timeline];
if ('number' == typeof e.timestampOffset) (o = { time: e.startOfSegment, mapping: e.startOfSegment - t.start }), i && ((this.timelines[e.timeline] = o), this.trigger('timestampoffset'), this.logger_('time mapping for timeline ' + e.timeline + ': [time: ' + o.time + '] [mapping: ' + o.mapping + ']')), (n = e.startOfSegment), (r = t.end + o.mapping);
else {
if (!o) return !1;
(n = t.start + o.mapping), (r = t.end + o.mapping);
}
return s && ((s.start = n), (s.end = r)), (!a.start || n < a.start) && (a.start = n), (a.end = r), !0;
}),
(t.saveDiscontinuitySyncInfo_ = function (e) {
var t = e.playlist,
i = e.segment;
if (i.discontinuity) this.discontinuities[i.timeline] = { time: i.start, accuracy: 0 };
else if (t.discontinuityStarts && t.discontinuityStarts.length)
for (var n = 0; n < t.discontinuityStarts.length; n++) {
var r,
a = t.discontinuityStarts[n],
s = t.discontinuitySequence + n + 1,
o = a - e.mediaIndex,
u = Math.abs(o);
(!this.discontinuities[s] || this.discontinuities[s].accuracy > u) && ((r = void 0), (r = o < 0 ? i.start - jo({ defaultDuration: t.targetDuration, durationList: t.segments, startIndex: e.mediaIndex, endIndex: a }) : i.end + jo({ defaultDuration: t.targetDuration, durationList: t.segments, startIndex: e.mediaIndex + 1, endIndex: a })), (this.discontinuities[s] = { time: r, accuracy: u }));
}
}),
(t.dispose = function () {
this.trigger('dispose'), this.off();
}),
e
);
})(tr.EventTarget),
nc = (function (t) {
function e() {
var e = t.call(this) || this;
return (e.pendingTimelineChanges_ = {}), (e.lastTimelineChanges_ = {}), e;
}
ft(e, t);
var i = e.prototype;
return (
(i.clearPendingTimelineChange = function (e) {
(this.pendingTimelineChanges_[e] = null), this.trigger('pendingtimelinechange');
}),
(i.pendingTimelineChange = function (e) {
var t = e.type,
i = e.from,
e = e.to;
return 'number' == typeof i && 'number' == typeof e && ((this.pendingTimelineChanges_[t] = { type: t, from: i, to: e }), this.trigger('pendingtimelinechange')), this.pendingTimelineChanges_[t];
}),
(i.lastTimelineChange = function (e) {
var t = e.type,
i = e.from,
e = e.to;
return 'number' == typeof i && 'number' == typeof e && ((this.lastTimelineChanges_[t] = { type: t, from: i, to: e }), delete this.pendingTimelineChanges_[t], this.trigger('timelinechange')), this.lastTimelineChanges_[t];
}),
(i.dispose = function () {
this.trigger('dispose'), (this.pendingTimelineChanges_ = {}), (this.lastTimelineChanges_ = {}), this.off();
}),
e
);
})(tr.EventTarget),
rc = x(
U(
W(function () {
function e(e, t, i) {
return (
e(
(i = {
path: t,
exports: {},
require: function (e, t) {
return (function () {
throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
})(null == t && i.path);
},
}),
i.exports
),
i.exports
);
}
var t = e(function (e) {
function n(e, t) {
for (var i = 0; i < t.length; i++) {
var n = t[i];
(n.enumerable = n.enumerable || !1), (n.configurable = !0), 'value' in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
}
}
(e.exports = function (e, t, i) {
return t && n(e.prototype, t), i && n(e, i), e;
}),
(e.exports.default = e.exports),
(e.exports.__esModule = !0);
}),
i = e(function (i) {
function n(e, t) {
return (
(i.exports = n =
Object.setPrototypeOf ||
function (e, t) {
return (e.__proto__ = t), e;
}),
(i.exports.default = i.exports),
(i.exports.__esModule = !0),
n(e, t)
);
}
(i.exports = n), (i.exports.default = i.exports), (i.exports.__esModule = !0);
}),
n = e(function (e) {
(e.exports = function (e, t) {
(e.prototype = Object.create(t.prototype)), (e.prototype.constructor = e), i(e, t);
}),
(e.exports.default = e.exports),
(e.exports.__esModule = !0);
}),
r = (function () {
function e() {
this.listeners = {};
}
var t = e.prototype;
return (
(t.on = function (e, t) {
this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t);
}),
(t.off = function (e, t) {
if (!this.listeners[e]) return !1;
t = this.listeners[e].indexOf(t);
return (this.listeners[e] = this.listeners[e].slice(0)), this.listeners[e].splice(t, 1), -1 < t;
}),
(t.trigger = function (e) {
var t = this.listeners[e];
if (t)
if (2 === arguments.length) for (var i = t.length, n = 0; n < i; ++n) t[n].call(this, arguments[1]);
else for (var r = Array.prototype.slice.call(arguments, 1), a = t.length, s = 0; s < a; ++s) t[s].apply(this, r);
}),
(t.dispose = function () {
this.listeners = {};
}),
(t.pipe = function (t) {
this.on('data', function (e) {
t.push(e);
});
}),
e
);
})();
/*! @name aes-decrypter @version 3.1.2 @license Apache-2.0 */
var c = null,
m = (function () {
function e(e) {
var t, i, n;
(c =
c ||
(function () {
for (
var e,
t,
i,
n,
r,
a,
s,
o = [
[[], [], [], [], []],
[[], [], [], [], []],
],
u = o[0],
l = o[1],
c = u[4],
d = l[4],
h = [],
p = [],
f = 0;
f < 256;
f++
)
p[(h[f] = (f << 1) ^ (283 * (f >> 7))) ^ f] = f;
for (e = t = 0; !c[e]; e ^= i || 1, t = p[t] || 1) for (s = (16843009 * h[(n = h[(i = h[(d[(c[e] = r = ((r = t ^ (t << 1) ^ (t << 2) ^ (t << 3) ^ (t << 4)) >> 8) ^ (255 & r) ^ 99)] = e)])])]) ^ (65537 * n) ^ (257 * i) ^ (16843008 * e), a = (257 * h[r]) ^ (16843008 * r), f = 0; f < 4; f++) (u[f][e] = a = (a << 24) ^ (a >>> 8)), (l[f][r] = s = (s << 24) ^ (s >>> 8));
for (f = 0; f < 5; f++) (u[f] = u[f].slice(0)), (l[f] = l[f].slice(0));
return o;
})()),
(this._tables = [
[c[0][0].slice(), c[0][1].slice(), c[0][2].slice(), c[0][3].slice(), c[0][4].slice()],
[c[1][0].slice(), c[1][1].slice(), c[1][2].slice(), c[1][3].slice(), c[1][4].slice()],
]);
var r = this._tables[0][4],
a = this._tables[1],
s = e.length,
o = 1;
if (4 !== s && 6 !== s && 8 !== s) throw new Error('Invalid aes key size');
var u = e.slice(0),
l = [];
for (this._key = [u, l], t = s; t < 4 * s + 28; t++) (n = u[t - 1]), (t % s == 0 || (8 === s && t % s == 4)) && ((n = (r[n >>> 24] << 24) ^ (r[(n >> 16) & 255] << 16) ^ (r[(n >> 8) & 255] << 8) ^ r[255 & n]), t % s == 0 && ((n = (n << 8) ^ (n >>> 24) ^ (o << 24)), (o = (o << 1) ^ (283 * (o >> 7))))), (u[t] = u[t - s] ^ n);
for (i = 0; t; i++, t--) (n = u[3 & i ? t : t - 4]), (l[i] = t <= 4 || i < 4 ? n : a[0][r[n >>> 24]] ^ a[1][r[(n >> 16) & 255]] ^ a[2][r[(n >> 8) & 255]] ^ a[3][r[255 & n]]);
}
return (
(e.prototype.decrypt = function (e, t, i, n, r, a) {
for (var s, o, u, l = this._key[1], c = e ^ l[0], d = n ^ l[1], h = i ^ l[2], p = t ^ l[3], f = l.length / 4 - 2, m = 4, t = this._tables[1], g = t[0], y = t[1], v = t[2], _ = t[3], b = t[4], T = 0; T < f; T++) (s = g[c >>> 24] ^ y[(d >> 16) & 255] ^ v[(h >> 8) & 255] ^ _[255 & p] ^ l[m]), (o = g[d >>> 24] ^ y[(h >> 16) & 255] ^ v[(p >> 8) & 255] ^ _[255 & c] ^ l[m + 1]), (u = g[h >>> 24] ^ y[(p >> 16) & 255] ^ v[(c >> 8) & 255] ^ _[255 & d] ^ l[m + 2]), (p = g[p >>> 24] ^ y[(c >> 16) & 255] ^ v[(d >> 8) & 255] ^ _[255 & h] ^ l[m + 3]), (m += 4), (c = s), (d = o), (h = u);
for (T = 0; T < 4; T++) (r[(3 & -T) + a] = (b[c >>> 24] << 24) ^ (b[(d >> 16) & 255] << 16) ^ (b[(h >> 8) & 255] << 8) ^ b[255 & p] ^ l[m++]), (s = c), (c = d), (d = h), (h = p), (p = s);
}),
e
);
})(),
l = (function (t) {
function e() {
var e = t.call(this, r) || this;
return (e.jobs = []), (e.delay = 1), (e.timeout_ = null), e;
}
n(e, t);
var i = e.prototype;
return (
(i.processJob_ = function () {
this.jobs.shift()(), this.jobs.length ? (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay)) : (this.timeout_ = null);
}),
(i.push = function (e) {
this.jobs.push(e), this.timeout_ || (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay));
}),
e
);
})(r),
g = function (e) {
return (e << 24) | ((65280 & e) << 8) | ((16711680 & e) >> 8) | (e >>> 24);
},
a = (function () {
function u(e, t, i, n) {
var r = u.STEP,
a = new Int32Array(e.buffer),
s = new Uint8Array(e.byteLength),
o = 0;
for (this.asyncStream_ = new l(), this.asyncStream_.push(this.decryptChunk_(a.subarray(o, o + r), t, i, s)), o = r; o < a.length; o += r) (i = new Uint32Array([g(a[o - 4]), g(a[o - 3]), g(a[o - 2]), g(a[o - 1])])), this.asyncStream_.push(this.decryptChunk_(a.subarray(o, o + r), t, i, s));
this.asyncStream_.push(function () {
/*! @name pkcs7 @version 1.0.4 @license Apache-2.0 */
var e;
n(null, (e = s).subarray(0, e.byteLength - e[e.byteLength - 1]));
});
}
return (
(u.prototype.decryptChunk_ = function (t, i, n, r) {
return function () {
var e = (function (e, t, i) {
for (var n, r, a, s, o = new Int32Array(e.buffer, e.byteOffset, e.byteLength >> 2), u = new m(Array.prototype.slice.call(t)), e = new Uint8Array(e.byteLength), l = new Int32Array(e.buffer), c = i[0], d = i[1], h = i[2], p = i[3], f = 0; f < o.length; f += 4) (n = g(o[f])), (r = g(o[f + 1])), (a = g(o[f + 2])), (s = g(o[f + 3])), u.decrypt(n, r, a, s, l, f), (l[f] = g(l[f] ^ c)), (l[f + 1] = g(l[f + 1] ^ d)), (l[f + 2] = g(l[f + 2] ^ h)), (l[f + 3] = g(l[f + 3] ^ p)), (c = n), (d = r), (h = a), (p = s);
return e;
})(t, i, n);
r.set(e, t.byteOffset);
};
}),
t(u, null, [
{
key: 'STEP',
get: function () {
return 32e3;
},
},
]),
u
);
})();
self.onmessage = function (e) {
var r = e.data,
t = new Uint8Array(r.encrypted.bytes, r.encrypted.byteOffset, r.encrypted.byteLength),
i = new Uint32Array(r.key.bytes, r.key.byteOffset, r.key.byteLength / 4),
e = new Uint32Array(r.iv.bytes, r.iv.byteOffset, r.iv.byteLength / 4);
new a(t, i, e, function (e, t) {
var i, n;
self.postMessage(
((i = { source: r.source, decrypted: t }),
(n = {}),
Object.keys(i).forEach(function (e) {
var t = i[e];
ArrayBuffer.isView(t) ? (n[e] = { bytes: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength }) : (n[e] = t);
}),
n),
[t.buffer]
);
});
};
})
)
),
ac = {
AUDIO: function (s, o) {
return function () {
var e = o.segmentLoaders[s],
t = o.mediaTypes[s],
i = o.blacklistCurrentPlaylist;
Rl(e, t);
var n = t.activeTrack(),
e = t.activeGroup(),
e = (
e.filter(function (e) {
return e.default;
})[0] || e[0]
).id,
r = t.tracks[e];
if (n !== r) {
for (var a in (tr.log.warn('Problem encountered loading the alternate audio track.Switching back to default.'), t.tracks)) t.tracks[a].enabled = t.tracks[a] === r;
t.onTrackChanged();
} else i({ message: 'Problem encountered loading the default audio track.' });
};
},
SUBTITLES: function (i, n) {
return function () {
var e = n.segmentLoaders[i],
t = n.mediaTypes[i];
tr.log.warn('Problem encountered loading the subtitle track.Disabling subtitle track.'), Rl(e, t);
e = t.activeTrack();
e && (e.mode = 'disabled'), t.onTrackChanged();
};
},
},
sc = {
AUDIO: function (e, t, i) {
var n, r, a;
t &&
((n = i.tech),
(r = i.requestOptions),
(a = i.segmentLoaders[e]),
t.on('loadedmetadata', function () {
var e = t.media();
a.playlist(e, r), (!n.paused() || (e.endList && 'none' !== n.preload())) && a.load();
}),
t.on('loadedplaylist', function () {
a.playlist(t.media(), r), n.paused() || a.load();
}),
t.on('error', ac[e](e, i)));
},
SUBTITLES: function (e, t, i) {
var n = i.tech,
r = i.requestOptions,
a = i.segmentLoaders[e],
s = i.mediaTypes[e];
t.on('loadedmetadata', function () {
var e = t.media();
a.playlist(e, r), a.track(s.activeTrack()), (!n.paused() || (e.endList && 'none' !== n.preload())) && a.load();
}),
t.on('loadedplaylist', function () {
a.playlist(t.media(), r), n.paused() || a.load();
}),
t.on('error', ac[e](e, i));
},
},
oc = {
AUDIO: function (e, t) {
var i,
n,
r = t.vhs,
a = t.sourceType,
s = t.segmentLoaders[e],
o = t.requestOptions,
u = t.master.mediaGroups,
l = t.mediaTypes[e],
c = l.groups,
d = l.tracks,
h = l.logger_,
p = t.masterPlaylistLoader,
f = Yo(p.master);
for (i in ((u[e] && 0 !== Object.keys(u[e]).length) || ((u[e] = { main: { default: { default: !0 } } }), f && (u[e].main.default.playlists = p.master.playlists)), u[e]))
for (var m in (c[i] || (c[i] = []), u[e][i])) {
var g = u[e][i][m],
y = void 0,
y = f ? (h("AUDIO group '" + i + "' label '" + m + "' is a master playlist"), (g.isMasterPlaylist = !0), null) : 'vhs-json' === a && g.playlists ? new ll(g.playlists[0], r, o) : g.resolvedUri ? new ll(g.resolvedUri, r, o) : g.playlists && 'dash' === a ? new pl(g.playlists[0], r, o, p) : null,
g = tr.mergeOptions({ id: m, playlistLoader: y }, g);
sc[e](e, g.playlistLoader, t), c[i].push(g), 'undefined' == typeof d[m] && ((g = new tr.AudioTrack({ id: m, kind: ((n = void 0), (n = (y = g).default ? 'main' : 'alternative'), (n = y.characteristics && 0 <= y.characteristics.indexOf('public.accessibility.describes-video') ? 'main-desc' : n)), enabled: !1, language: g.language, default: g.default, label: m })), (d[m] = g));
}
s.on('error', ac[e](e, t));
},
SUBTITLES: function (e, t) {
var i,
n = t.tech,
r = t.vhs,
a = t.sourceType,
s = t.segmentLoaders[e],
o = t.requestOptions,
u = t.master.mediaGroups,
l = t.mediaTypes[e],
c = l.groups,
d = l.tracks,
h = t.masterPlaylistLoader;
for (i in u[e])
for (var p in (c[i] || (c[i] = []), u[e][i]))
if (!u[e][i][p].forced) {
var f = u[e][i][p],
m = void 0;
if ('hls' === a) m = new ll(f.resolvedUri, r, o);
else if ('dash' === a) {
if (
!f.playlists.filter(function (e) {
return e.excludeUntil !== 1 / 0;
}).length
)
return;
m = new pl(f.playlists[0], r, o, h);
} else 'vhs-json' === a && (m = new ll(f.playlists ? f.playlists[0] : f.resolvedUri, r, o));
(f = tr.mergeOptions({ id: p, playlistLoader: m }, f)), sc[e](e, f.playlistLoader, t), c[i].push(f), 'undefined' == typeof d[p] && ((f = n.addRemoteTextTrack({ id: p, kind: 'subtitles', default: f.default && f.autoselect, language: f.language, label: p }, !1).track), (d[p] = f));
}
s.on('error', ac[e](e, t));
},
'CLOSED-CAPTIONS': function (e, t) {
var i,
n = t.tech,
r = t.master.mediaGroups,
t = t.mediaTypes[e],
a = t.groups,
s = t.tracks;
for (i in r[e])
for (var o in (a[i] || (a[i] = []), r[e][i])) {
var u,
l,
c = r[e][i][o];
/^(?:CC|SERVICE)/.test(c.instreamId) && (void 0 === (l = (u = (n.options_.vhs && n.options_.vhs.captionServices) || {})[(l = { label: o, language: c.language, instreamId: c.instreamId, default: c.default && c.autoselect }).instreamId] ? tr.mergeOptions(l, u[l.instreamId]) : l).default && delete l.default, a[i].push(tr.mergeOptions({ id: o }, c)), 'undefined' == typeof s[o] && ((l = n.addRemoteTextTrack({ id: l.instreamId, kind: 'captions', default: l.default, language: l.language, label: l.label }, !1).track), (s[o] = l)));
}
},
},
uc = {
AUDIO: function (i, n) {
return function () {
var e,
t = n.mediaTypes[i].tracks;
for (e in t) if (t[e].enabled) return t[e];
return null;
};
},
SUBTITLES: function (i, n) {
return function () {
var e,
t = n.mediaTypes[i].tracks;
for (e in t) if ('showing' === t[e].mode || 'hidden' === t[e].mode) return t[e];
return null;
};
},
},
lc = ['mediaRequests', 'mediaRequestsAborted', 'mediaRequestsTimedout', 'mediaRequestsErrored', 'mediaTransferDuration', 'mediaBytesTransferred', 'mediaAppends'],
cc = (function (v) {
function e(e) {
var t = v.call(this) || this,
i = e.src,
n = e.handleManifestRedirects,
r = e.withCredentials,
a = e.tech,
s = e.bandwidth,
o = e.externVhs,
u = e.useCueTags,
l = e.blacklistDuration,
c = e.enableLowInitialPlaylist,
d = e.sourceType,
h = e.cacheEncryptionKeys,
p = e.experimentalBufferBasedABR,
f = e.experimentalLeastPixelDiffSelector,
m = e.captionServices;
if (!i) throw new Error('A non-empty playlist URL or JSON manifest string is required');
var g,
y = e.maxPlaylistRetries;
(null !== y && 'undefined' != typeof y) || (y = 1 / 0),
(jl = o),
(t.experimentalBufferBasedABR = Boolean(p)),
(t.experimentalLeastPixelDiffSelector = Boolean(f)),
(t.withCredentials = r),
(t.tech_ = a),
(t.vhs_ = a.vhs),
(t.sourceType_ = d),
(t.useCueTags_ = u),
(t.blacklistDuration = l),
(t.maxPlaylistRetries = y),
(t.enableLowInitialPlaylist = c),
t.useCueTags_ && ((t.cueTagsTrack_ = t.tech_.addTextTrack('metadata', 'ad-cues')), (t.cueTagsTrack_.inBandMetadataTrackDispatchType = '')),
(t.requestOptions_ = { withCredentials: r, handleManifestRedirects: n, maxPlaylistRetries: y, timeout: null }),
t.on('error', t.pauseLoading),
(t.mediaTypes_ =
((g = {}),
['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(function (e) {
g[e] = { groups: {}, tracks: {}, activePlaylistLoader: null, activeGroup: kl, activeTrack: kl, getActiveGroup: kl, onGroupChanged: kl, onTrackChanged: kl, lastTrack_: null, logger_: ko('MediaGroups[' + e + ']') };
}),
g)),
(t.mediaSource = new window.MediaSource()),
(t.handleDurationChange_ = t.handleDurationChange_.bind(pt(t))),
(t.handleSourceOpen_ = t.handleSourceOpen_.bind(pt(t))),
(t.handleSourceEnded_ = t.handleSourceEnded_.bind(pt(t))),
t.mediaSource.addEventListener('durationchange', t.handleDurationChange_),
t.mediaSource.addEventListener('sourceopen', t.handleSourceOpen_),
t.mediaSource.addEventListener('sourceended', t.handleSourceEnded_),
(t.seekable_ = tr.createTimeRanges()),
(t.hasPlayed_ = !1),
(t.syncController_ = new ic(e)),
(t.segmentMetadataTrack_ = a.addRemoteTextTrack({ kind: 'metadata', label: 'segment-metadata' }, !1).track),
(t.decrypter_ = new rc()),
(t.sourceUpdater_ = new Jl(t.mediaSource)),
(t.inbandTextTracks_ = {}),
(t.timelineChangeController_ = new nc());
h = {
vhs: t.vhs_,
parse708captions: e.parse708captions,
captionServices: m,
mediaSource: t.mediaSource,
currentTime: t.tech_.currentTime.bind(t.tech_),
seekable: function () {
return t.seekable();
},
seeking: function () {
return t.tech_.seeking();
},
duration: function () {
return t.duration();
},
hasPlayed: function () {
return t.hasPlayed_;
},
goalBufferLength: function () {
return t.goalBufferLength();
},
bandwidth: s,
syncController: t.syncController_,
decrypter: t.decrypter_,
sourceType: t.sourceType_,
inbandTextTracks: t.inbandTextTracks_,
cacheEncryptionKeys: h,
sourceUpdater: t.sourceUpdater_,
timelineChangeController: t.timelineChangeController_,
experimentalExactManifestTimings: e.experimentalExactManifestTimings,
};
(t.masterPlaylistLoader_ = new ('dash' === t.sourceType_ ? pl : ll)(i, t.vhs_, t.requestOptions_)),
t.setupMasterPlaylistLoaderListeners_(),
(t.mainSegmentLoader_ = new El(tr.mergeOptions(h, { segmentMetadataTrack: t.segmentMetadataTrack_, loaderType: 'main' }), e)),
(t.audioSegmentLoader_ = new El(tr.mergeOptions(h, { loaderType: 'audio' }), e)),
(t.subtitleSegmentLoader_ = new ec(tr.mergeOptions(h, { loaderType: 'vtt', featuresNativeTextTracks: t.tech_.featuresNativeTextTracks }), e)),
t.setupSegmentLoaderListeners_(),
t.experimentalBufferBasedABR &&
(t.masterPlaylistLoader_.one('loadedplaylist', function () {
return t.startABRTimer_();
}),
t.tech_.on('pause', function () {
return t.stopABRTimer_();
}),
t.tech_.on('play', function () {
return t.startABRTimer_();
})),
lc.forEach(function (e) {
t[e + '_'] = function (e) {
return this.audioSegmentLoader_[e] + this.mainSegmentLoader_[e];
}.bind(pt(t), e);
}),
(t.logger_ = ko('MPC')),
(t.triggeredFmp4Usage = !1),
'none' === t.tech_.preload()
? ((t.loadOnPlay_ = function () {
(t.loadOnPlay_ = null), t.masterPlaylistLoader_.load();
}),
t.tech_.one('play', t.loadOnPlay_))
: t.masterPlaylistLoader_.load(),
(t.timeToLoadedData__ = -1),
(t.mainAppendsToLoadedData__ = -1),
(t.audioAppendsToLoadedData__ = -1);
e = 'none' === t.tech_.preload() ? 'play' : 'loadstart';
return (
t.tech_.one(e, function () {
var e = Date.now();
t.tech_.one('loadeddata', function () {
(t.timeToLoadedData__ = Date.now() - e), (t.mainAppendsToLoadedData__ = t.mainSegmentLoader_.mediaAppends), (t.audioAppendsToLoadedData__ = t.audioSegmentLoader_.mediaAppends);
});
}),
t
);
}
ft(e, v);
var t = e.prototype;
return (
(t.mainAppendsToLoadedData_ = function () {
return this.mainAppendsToLoadedData__;
}),
(t.audioAppendsToLoadedData_ = function () {
return this.audioAppendsToLoadedData__;
}),
(t.appendsToLoadedData_ = function () {
var e = this.mainAppendsToLoadedData_(),
t = this.audioAppendsToLoadedData_();
return -1 === e || -1 === t ? -1 : e + t;
}),
(t.timeToLoadedData_ = function () {
return this.timeToLoadedData__;
}),
(t.checkABR_ = function () {
var e = this.selectPlaylist();
e && this.shouldSwitchToMedia_(e) && this.switchMedia_(e, 'abr');
}),
(t.switchMedia_ = function (e, t, i) {
var n = this.media(),
r = n && (n.id || n.uri),
n = e.id || e.uri;
r && r !== n && (this.logger_('switch media ' + r + ' -> ' + n + ' from ' + t), this.tech_.trigger({ type: 'usage', name: 'vhs-rendition-change-' + t })), this.masterPlaylistLoader_.media(e, i);
}),
(t.startABRTimer_ = function () {
var e = this;
this.stopABRTimer_(),
(this.abrTimer_ = window.setInterval(function () {
return e.checkABR_();
}, 250));
}),
(t.stopABRTimer_ = function () {
(this.tech_.scrubbing && this.tech_.scrubbing()) || (window.clearInterval(this.abrTimer_), (this.abrTimer_ = null));
}),
(t.getAudioTrackPlaylists_ = function () {
var e = this.master(),
t = (e && e.playlists) || [];
if (!e || !e.mediaGroups || !e.mediaGroups.AUDIO) return t;
var i,
n = e.mediaGroups.AUDIO,
r = Object.keys(n);
if (Object.keys(this.mediaTypes_.AUDIO.groups).length) i = this.mediaTypes_.AUDIO.activeTrack();
else {
var a,
s = n.main || (r.length && n[r[0]]);
for (a in s)
if (s[a].default) {
i = { label: a };
break;
}
}
if (!i) return t;
var o,
u = [];
for (o in n)
if (n[o][i.label]) {
var l = n[o][i.label];
if (l.playlists && l.playlists.length) u.push.apply(u, l.playlists);
else if (l.uri) u.push(l);
else if (e.playlists.length)
for (var c = 0; c < e.playlists.length; c++) {
var d = e.playlists[c];
d.attributes && d.attributes.AUDIO && d.attributes.AUDIO === o && u.push(d);
}
}
return u.length ? u : t;
}),
(t.setupMasterPlaylistLoaderListeners_ = function () {
var i = this;
this.masterPlaylistLoader_.on('loadedmetadata', function () {
var e = i.masterPlaylistLoader_.media(),
t = 1.5 * e.targetDuration * 1e3;
Go(i.masterPlaylistLoader_.master, i.masterPlaylistLoader_.media()) ? (i.requestOptions_.timeout = 0) : (i.requestOptions_.timeout = t),
e.endList && 'none' !== i.tech_.preload() && (i.mainSegmentLoader_.playlist(e, i.requestOptions_), i.mainSegmentLoader_.load()),
Ul({ sourceType: i.sourceType_, segmentLoaders: { AUDIO: i.audioSegmentLoader_, SUBTITLES: i.subtitleSegmentLoader_, main: i.mainSegmentLoader_ }, tech: i.tech_, requestOptions: i.requestOptions_, masterPlaylistLoader: i.masterPlaylistLoader_, vhs: i.vhs_, master: i.master(), mediaTypes: i.mediaTypes_, blacklistCurrentPlaylist: i.blacklistCurrentPlaylist.bind(i) }),
i.triggerPresenceUsage_(i.master(), e),
i.setupFirstPlay(),
!i.mediaTypes_.AUDIO.activePlaylistLoader || i.mediaTypes_.AUDIO.activePlaylistLoader.media()
? i.trigger('selectedinitialmedia')
: i.mediaTypes_.AUDIO.activePlaylistLoader.one('loadedmetadata', function () {
i.trigger('selectedinitialmedia');
});
}),
this.masterPlaylistLoader_.on('loadedplaylist', function () {
i.loadOnPlay_ && i.tech_.off('play', i.loadOnPlay_);
var e,
t = i.masterPlaylistLoader_.media();
if (!t) {
if ((i.excludeUnsupportedVariants_(), !(e = (e = i.enableLowInitialPlaylist ? i.selectInitialPlaylist() : e) || i.selectPlaylist()) || !i.shouldSwitchToMedia_(e))) return;
if (((i.initialMedia_ = e), i.switchMedia_(i.initialMedia_, 'initial'), !('vhs-json' === i.sourceType_ && i.initialMedia_.segments))) return;
t = i.initialMedia_;
}
i.handleUpdatedMediaPlaylist(t);
}),
this.masterPlaylistLoader_.on('error', function () {
i.blacklistCurrentPlaylist(i.masterPlaylistLoader_.error);
}),
this.masterPlaylistLoader_.on('mediachanging', function () {
i.mainSegmentLoader_.abort(), i.mainSegmentLoader_.pause();
}),
this.masterPlaylistLoader_.on('mediachange', function () {
var e = i.masterPlaylistLoader_.media(),
t = 1.5 * e.targetDuration * 1e3;
Go(i.masterPlaylistLoader_.master, i.masterPlaylistLoader_.media()) ? (i.requestOptions_.timeout = 0) : (i.requestOptions_.timeout = t), i.mainSegmentLoader_.playlist(e, i.requestOptions_), i.mainSegmentLoader_.load(), i.tech_.trigger({ type: 'mediachange', bubbles: !0 });
}),
this.masterPlaylistLoader_.on('playlistunchanged', function () {
var e = i.masterPlaylistLoader_.media();
'playlist-unchanged' !== e.lastExcludeReason_ && i.stuckAtPlaylistEnd_(e) && (i.blacklistCurrentPlaylist({ message: 'Playlist no longer updating.', reason: 'playlist-unchanged' }), i.tech_.trigger('playliststuck'));
}),
this.masterPlaylistLoader_.on('renditiondisabled', function () {
i.tech_.trigger({ type: 'usage', name: 'vhs-rendition-disabled' }), i.tech_.trigger({ type: 'usage', name: 'hls-rendition-disabled' });
}),
this.masterPlaylistLoader_.on('renditionenabled', function () {
i.tech_.trigger({ type: 'usage', name: 'vhs-rendition-enabled' }), i.tech_.trigger({ type: 'usage', name: 'hls-rendition-enabled' });
});
}),
(t.handleUpdatedMediaPlaylist = function (e) {
this.useCueTags_ && this.updateAdCues_(e), this.mainSegmentLoader_.playlist(e, this.requestOptions_), this.updateDuration(!e.endList), this.tech_.paused() || (this.mainSegmentLoader_.load(), this.audioSegmentLoader_ && this.audioSegmentLoader_.load());
}),
(t.triggerPresenceUsage_ = function (e, t) {
var i,
n = e.mediaGroups || {},
r = !0,
e = Object.keys(n.AUDIO);
for (i in n.AUDIO) for (var a in n.AUDIO[i]) n.AUDIO[i][a].uri || (r = !1);
r && (this.tech_.trigger({ type: 'usage', name: 'vhs-demuxed' }), this.tech_.trigger({ type: 'usage', name: 'hls-demuxed' })), Object.keys(n.SUBTITLES).length && (this.tech_.trigger({ type: 'usage', name: 'vhs-webvtt' }), this.tech_.trigger({ type: 'usage', name: 'hls-webvtt' })), jl.Playlist.isAes(t) && (this.tech_.trigger({ type: 'usage', name: 'vhs-aes' }), this.tech_.trigger({ type: 'usage', name: 'hls-aes' })), e.length && 1 < Object.keys(n.AUDIO[e[0]]).length && (this.tech_.trigger({ type: 'usage', name: 'vhs-alternate-audio' }), this.tech_.trigger({ type: 'usage', name: 'hls-alternate-audio' })), this.useCueTags_ && (this.tech_.trigger({ type: 'usage', name: 'vhs-playlist-cue-tags' }), this.tech_.trigger({ type: 'usage', name: 'hls-playlist-cue-tags' }));
}),
(t.shouldSwitchToMedia_ = function (e) {
var t = this.masterPlaylistLoader_.media() || this.masterPlaylistLoader_.pendingMedia_,
i = this.tech_.currentTime(),
n = this.bufferLowWaterLine(),
r = this.bufferHighWaterLine();
return (function (e) {
var t = e.currentPlaylist,
i = e.buffered,
n = e.currentTime,
r = e.nextPlaylist,
a = e.bufferLowWaterLine,
s = e.bufferHighWaterLine,
o = e.duration,
u = e.experimentalBufferBasedABR,
l = e.log;
if (!r) return tr.log.warn('We received no playlist to switch to. Please check your stream.'), !1;
var c = 'allowing switch ' + ((t && t.id) || 'null') + ' -> ' + r.id;
if (!t) return l(c + ' as current playlist is not set'), !0;
if (r.id === t.id) return !1;
e = Boolean(Io(i, n).length);
if (!t.endList) return e || 'number' != typeof t.partTargetDuration ? (l(c + ' as current playlist is live'), !0) : (l('not ' + c + " as current playlist is live llhls, but currentTime isn't in buffered."), !1);
(i = Do(i, n)), (n = u ? fl.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE : fl.MAX_BUFFER_LOW_WATER_LINE);
if (o < n) return l(c + ' as duration < max low water line (' + o + ' < ' + n + ')'), !0;
(n = r.attributes.BANDWIDTH), (r = t.attributes.BANDWIDTH);
if (n < r && (!u || i < s)) {
t = c + ' as next bandwidth < current bandwidth (' + n + ' < ' + r + ')';
return u && (t += ' and forwardBuffer < bufferHighWaterLine (' + i + ' < ' + s + ')'), l(t), !0;
}
if ((!u || r < n) && a <= i) {
a = c + ' as forwardBuffer >= bufferLowWaterLine (' + i + ' >= ' + a + ')';
return u && (a += ' and next bandwidth > current bandwidth (' + n + ' > ' + r + ')'), l(a), !0;
}
return l('not ' + c + ' as no switching criteria met'), !1;
})({ buffered: this.tech_.buffered(), currentTime: i, currentPlaylist: t, nextPlaylist: e, bufferLowWaterLine: n, bufferHighWaterLine: r, duration: this.duration(), experimentalBufferBasedABR: this.experimentalBufferBasedABR, log: this.logger_ });
}),
(t.setupSegmentLoaderListeners_ = function () {
var t = this;
this.experimentalBufferBasedABR ||
(this.mainSegmentLoader_.on('bandwidthupdate', function () {
var e = t.selectPlaylist();
t.shouldSwitchToMedia_(e) && t.switchMedia_(e, 'bandwidthupdate'), t.tech_.trigger('bandwidthupdate');
}),
this.mainSegmentLoader_.on('progress', function () {
t.trigger('progress');
})),
this.mainSegmentLoader_.on('error', function () {
t.blacklistCurrentPlaylist(t.mainSegmentLoader_.error());
}),
this.mainSegmentLoader_.on('appenderror', function () {
(t.error = t.mainSegmentLoader_.error_), t.trigger('error');
}),
this.mainSegmentLoader_.on('syncinfoupdate', function () {
t.onSyncInfoUpdate_();
}),
this.mainSegmentLoader_.on('timestampoffset', function () {
t.tech_.trigger({ type: 'usage', name: 'vhs-timestamp-offset' }), t.tech_.trigger({ type: 'usage', name: 'hls-timestamp-offset' });
}),
this.audioSegmentLoader_.on('syncinfoupdate', function () {
t.onSyncInfoUpdate_();
}),
this.audioSegmentLoader_.on('appenderror', function () {
(t.error = t.audioSegmentLoader_.error_), t.trigger('error');
}),
this.mainSegmentLoader_.on('ended', function () {
t.logger_('main segment loader ended'), t.onEndOfStream();
}),
this.mainSegmentLoader_.on('earlyabort', function (e) {
t.experimentalBufferBasedABR || (t.delegateLoaders_('all', ['abort']), t.blacklistCurrentPlaylist({ message: "Aborted early because there isn't enough bandwidth to complete the request without rebuffering." }, 120));
});
function e() {
if (!t.sourceUpdater_.hasCreatedSourceBuffers()) return t.tryToCreateSourceBuffers_();
var e = t.getCodecsOrExclude_();
e && t.sourceUpdater_.addOrChangeSourceBuffers(e);
}
this.mainSegmentLoader_.on('trackinfo', e),
this.audioSegmentLoader_.on('trackinfo', e),
this.mainSegmentLoader_.on('fmp4', function () {
t.triggeredFmp4Usage || (t.tech_.trigger({ type: 'usage', name: 'vhs-fmp4' }), t.tech_.trigger({ type: 'usage', name: 'hls-fmp4' }), (t.triggeredFmp4Usage = !0));
}),
this.audioSegmentLoader_.on('fmp4', function () {
t.triggeredFmp4Usage || (t.tech_.trigger({ type: 'usage', name: 'vhs-fmp4' }), t.tech_.trigger({ type: 'usage', name: 'hls-fmp4' }), (t.triggeredFmp4Usage = !0));
}),
this.audioSegmentLoader_.on('ended', function () {
t.logger_('audioSegmentLoader ended'), t.onEndOfStream();
});
}),
(t.mediaSecondsLoaded_ = function () {
return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded + this.mainSegmentLoader_.mediaSecondsLoaded);
}),
(t.load = function () {
this.mainSegmentLoader_.load(), this.mediaTypes_.AUDIO.activePlaylistLoader && this.audioSegmentLoader_.load(), this.mediaTypes_.SUBTITLES.activePlaylistLoader && this.subtitleSegmentLoader_.load();
}),
(t.smoothQualityChange_ = function (e) {
void 0 === e && (e = this.selectPlaylist()), this.fastQualityChange_(e);
}),
(t.fastQualityChange_ = function (e) {
var t = this;
(e = void 0 === e ? this.selectPlaylist() : e) !== this.masterPlaylistLoader_.media()
? (this.switchMedia_(e, 'fast-quality'),
this.mainSegmentLoader_.resetEverything(function () {
tr.browser.IE_VERSION || tr.browser.IS_EDGE ? t.tech_.setCurrentTime(t.tech_.currentTime() + 0.04) : t.tech_.setCurrentTime(t.tech_.currentTime());
}))
: this.logger_('skipping fastQualityChange because new media is same as old');
}),
(t.play = function () {
if (!this.setupFirstPlay()) {
this.tech_.ended() && this.tech_.setCurrentTime(0), this.hasPlayed_ && this.load();
var e = this.tech_.seekable();
return this.tech_.duration() === 1 / 0 && this.tech_.currentTime() < e.start(0) ? this.tech_.setCurrentTime(e.end(e.length - 1)) : void 0;
}
}),
(t.setupFirstPlay = function () {
var e = this,
t = this.masterPlaylistLoader_.media();
if (!t || this.tech_.paused() || this.hasPlayed_) return !1;
if (!t.endList) {
var i = this.seekable();
if (!i.length) return !1;
if (tr.browser.IE_VERSION && 0 === this.tech_.readyState())
return (
this.tech_.one('loadedmetadata', function () {
e.trigger('firstplay'), e.tech_.setCurrentTime(i.end(0)), (e.hasPlayed_ = !0);
}),
!1
);
this.trigger('firstplay'), this.tech_.setCurrentTime(i.end(0));
}
return (this.hasPlayed_ = !0), this.load(), !0;
}),
(t.handleSourceOpen_ = function () {
var e;
this.tryToCreateSourceBuffers_(), !this.tech_.autoplay() || ('undefined' != typeof (e = this.tech_.play()) && 'function' == typeof e.then && e.then(null, function (e) {})), this.trigger('sourceopen');
}),
(t.handleSourceEnded_ = function () {
var e, t;
!this.inbandTextTracks_.metadataTrack_ || ((e = this.inbandTextTracks_.metadataTrack_.cues) && e.length && ((t = this.duration()), (e[e.length - 1].endTime = isNaN(t) || Math.abs(t) === 1 / 0 ? Number.MAX_VALUE : t)));
}),
(t.handleDurationChange_ = function () {
this.tech_.trigger('durationchange');
}),
(t.onEndOfStream = function () {
var e,
t = this.mainSegmentLoader_.ended_;
(t = this.mediaTypes_.AUDIO.activePlaylistLoader ? (((e = this.mainSegmentLoader_.getCurrentMediaInfo_()) && !e.hasVideo) || t) && this.audioSegmentLoader_.ended_ : t) && (this.stopABRTimer_(), this.sourceUpdater_.endOfStream());
}),
(t.stuckAtPlaylistEnd_ = function (e) {
if (!this.seekable().length) return !1;
var t = this.syncController_.getExpiredTime(e, this.duration());
if (null === t) return !1;
var i = jl.Playlist.playlistEnd(e, t),
e = this.tech_.currentTime(),
t = this.tech_.buffered();
if (!t.length) return i - e <= 0.1;
t = t.end(t.length - 1);
return t - e <= 0.1 && i - t <= 0.1;
}),
(t.blacklistCurrentPlaylist = function (e, t) {
var i = (e = void 0 === e ? {} : e).playlist || this.masterPlaylistLoader_.media();
if (((t = t || e.blacklistDuration || this.blacklistDuration), !i)) return (this.error = e), void ('open' !== this.mediaSource.readyState ? this.trigger('error') : this.sourceUpdater_.endOfStream('network'));
i.playlistErrors_++;
var n,
r = this.masterPlaylistLoader_.master.playlists,
a = r.filter(Wo),
s = 1 === a.length && a[0] === i;
if (1 === r.length && t !== 1 / 0) return tr.log.warn('Problem encountered with playlist ' + i.id + '. Trying again since it is the only playlist.'), this.tech_.trigger('retryplaylist'), this.masterPlaylistLoader_.load(s);
s &&
((n = !1),
r.forEach(function (e) {
var t;
e === i || ('undefined' != typeof (t = e.excludeUntil) && t !== 1 / 0 && ((n = !0), delete e.excludeUntil));
}),
n && (tr.log.warn('Removing other playlists from the exclusion list because the last rendition is about to be excluded.'), this.tech_.trigger('retryplaylist'))),
(a = i.playlistErrors_ > this.maxPlaylistRetries ? 1 / 0 : Date.now() + 1e3 * t),
(i.excludeUntil = a),
e.reason && (i.lastExcludeReason_ = e.reason),
this.tech_.trigger('blacklistplaylist'),
this.tech_.trigger({ type: 'usage', name: 'vhs-rendition-blacklisted' }),
this.tech_.trigger({ type: 'usage', name: 'hls-rendition-blacklisted' });
r = this.selectPlaylist();
if (!r) return (this.error = 'Playback cannot continue. No available working or supported playlists.'), void this.trigger('error');
(t = e.internal ? this.logger_ : tr.log.warn), (a = e.message ? ' ' + e.message : '');
t((e.internal ? 'Internal problem' : 'Problem') + ' encountered with playlist ' + i.id + '.' + a + ' Switching to playlist ' + r.id + '.'), r.attributes.AUDIO !== i.attributes.AUDIO && this.delegateLoaders_('audio', ['abort', 'pause']), r.attributes.SUBTITLES !== i.attributes.SUBTITLES && this.delegateLoaders_('subtitle', ['abort', 'pause']), this.delegateLoaders_('main', ['abort', 'pause']);
(a = (r.targetDuration / 2) * 1e3 || 5e3), (a = 'number' == typeof r.lastRequest && Date.now() - r.lastRequest <= a);
return this.switchMedia_(r, 'exclude', s || a);
}),
(t.pauseLoading = function () {
this.delegateLoaders_('all', ['abort', 'pause']), this.stopABRTimer_();
}),
(t.delegateLoaders_ = function (i, e) {
var n = this,
r = [],
t = 'all' === i;
(!t && 'main' !== i) || r.push(this.masterPlaylistLoader_);
var a = [];
(!t && 'audio' !== i) || a.push('AUDIO'),
(!t && 'subtitle' !== i) || (a.push('CLOSED-CAPTIONS'), a.push('SUBTITLES')),
a.forEach(function (e) {
e = n.mediaTypes_[e] && n.mediaTypes_[e].activePlaylistLoader;
e && r.push(e);
}),
['main', 'audio', 'subtitle'].forEach(function (e) {
var t = n[e + 'SegmentLoader_'];
!t || (i !== e && 'all' !== i) || r.push(t);
}),
r.forEach(function (t) {
return e.forEach(function (e) {
'function' == typeof t[e] && t[e]();
});
});
}),
(t.setCurrentTime = function (e) {
var t = Io(this.tech_.buffered(), e);
return this.masterPlaylistLoader_ && this.masterPlaylistLoader_.media() && this.masterPlaylistLoader_.media().segments ? (t && t.length ? e : (this.mainSegmentLoader_.resetEverything(), this.mainSegmentLoader_.abort(), this.mediaTypes_.AUDIO.activePlaylistLoader && (this.audioSegmentLoader_.resetEverything(), this.audioSegmentLoader_.abort()), this.mediaTypes_.SUBTITLES.activePlaylistLoader && (this.subtitleSegmentLoader_.resetEverything(), this.subtitleSegmentLoader_.abort()), void this.load())) : 0;
}),
(t.duration = function () {
if (!this.masterPlaylistLoader_) return 0;
var e = this.masterPlaylistLoader_.media();
return e ? (e.endList ? (this.mediaSource ? this.mediaSource.duration : jl.Playlist.duration(e)) : 1 / 0) : 0;
}),
(t.seekable = function () {
return this.seekable_;
}),
(t.onSyncInfoUpdate_ = function () {
var e;
if (this.masterPlaylistLoader_ && !this.sourceUpdater_.hasCreatedSourceBuffers()) {
var t = this.masterPlaylistLoader_.media();
if (t) {
var i = this.syncController_.getExpiredTime(t, this.duration());
if (null !== i) {
var n,
r,
a = this.masterPlaylistLoader_.master,
s = jl.Playlist.seekable(t, i, jl.Playlist.liveEdgeDelay(a, t));
if (0 !== s.length) {
if (this.mediaTypes_.AUDIO.activePlaylistLoader) {
if (((t = this.mediaTypes_.AUDIO.activePlaylistLoader.media()), null === (i = this.syncController_.getExpiredTime(t, this.duration())))) return;
if (0 === (e = jl.Playlist.seekable(t, i, jl.Playlist.liveEdgeDelay(a, t))).length) return;
}
this.seekable_ && this.seekable_.length && ((n = this.seekable_.end(0)), (r = this.seekable_.start(0))), !e || e.start(0) > s.end(0) || s.start(0) > e.end(0) ? (this.seekable_ = s) : (this.seekable_ = tr.createTimeRanges([[(e.start(0) > s.start(0) ? e : s).start(0), (e.end(0) < s.end(0) ? e : s).end(0)]])), (this.seekable_ && this.seekable_.length && this.seekable_.end(0) === n && this.seekable_.start(0) === r) || (this.logger_('seekable updated [' + Ao(this.seekable_) + ']'), this.tech_.trigger('seekablechanged'));
}
}
}
}
}),
(t.updateDuration = function (e) {
if ((this.updateDuration_ && (this.mediaSource.removeEventListener('sourceopen', this.updateDuration_), (this.updateDuration_ = null)), 'open' !== this.mediaSource.readyState)) return (this.updateDuration_ = this.updateDuration.bind(this, e)), void this.mediaSource.addEventListener('sourceopen', this.updateDuration_);
if (e) {
var t = this.seekable();
return t.length ? void ((isNaN(this.mediaSource.duration) || this.mediaSource.duration < t.end(t.length - 1)) && this.sourceUpdater_.setDuration(t.end(t.length - 1))) : void 0;
}
(e = this.tech_.buffered()), (t = jl.Playlist.duration(this.masterPlaylistLoader_.media()));
0 < e.length && (t = Math.max(t, e.end(e.length - 1))), this.mediaSource.duration !== t && this.sourceUpdater_.setDuration(t);
}),
(t.dispose = function () {
var n = this;
this.trigger('dispose'),
this.decrypter_.terminate(),
this.masterPlaylistLoader_.dispose(),
this.mainSegmentLoader_.dispose(),
this.loadOnPlay_ && this.tech_.off('play', this.loadOnPlay_),
['AUDIO', 'SUBTITLES'].forEach(function (e) {
var t,
i = n.mediaTypes_[e].groups;
for (t in i)
i[t].forEach(function (e) {
e.playlistLoader && e.playlistLoader.dispose();
});
}),
this.audioSegmentLoader_.dispose(),
this.subtitleSegmentLoader_.dispose(),
this.sourceUpdater_.dispose(),
this.timelineChangeController_.dispose(),
this.stopABRTimer_(),
this.updateDuration_ && this.mediaSource.removeEventListener('sourceopen', this.updateDuration_),
this.mediaSource.removeEventListener('durationchange', this.handleDurationChange_),
this.mediaSource.removeEventListener('sourceopen', this.handleSourceOpen_),
this.mediaSource.removeEventListener('sourceended', this.handleSourceEnded_),
this.off();
}),
(t.master = function () {
return this.masterPlaylistLoader_.master;
}),
(t.media = function () {
return this.masterPlaylistLoader_.media() || this.initialMedia_;
}),
(t.areMediaTypesKnown_ = function () {
var e = !!this.mediaTypes_.AUDIO.activePlaylistLoader,
t = !!this.mainSegmentLoader_.getCurrentMediaInfo_(),
e = !e || !!this.audioSegmentLoader_.getCurrentMediaInfo_();
return t && e;
}),
(t.getCodecsOrExclude_ = function () {
var n = this,
r = { main: this.mainSegmentLoader_.getCurrentMediaInfo_() || {}, audio: this.audioSegmentLoader_.getCurrentMediaInfo_() || {} };
r.video = r.main;
var e = Hu(this.master(), this.media()),
a = {},
t = !!this.mediaTypes_.AUDIO.activePlaylistLoader;
if ((r.main.hasVideo && (a.video = e.video || r.main.videoCodec || 'avc1.4d400d'), r.main.isMuxed && (a.video += ',' + (e.audio || r.main.audioCodec || Cr)), ((r.main.hasAudio && !r.main.isMuxed) || r.audio.hasAudio || t) && ((a.audio = e.audio || r.main.audioCodec || r.audio.audioCodec || Cr), (r.audio.isFmp4 = (r.main.hasAudio && !r.main.isMuxed ? r.main : r.audio).isFmp4)), a.audio || a.video)) {
var s,
i,
o = {};
if (
(['video', 'audio'].forEach(function (e) {
var t, i;
a.hasOwnProperty(e) && ((t = r[e].isFmp4), (i = a[e]), !(t ? mr : gr)(i)) && ((i = r[e].isFmp4 ? 'browser' : 'muxer'), (o[i] = o[i] || []), o[i].push(a[e]), 'audio' === e && (s = i));
}),
t &&
s &&
this.media().attributes.AUDIO &&
((i = this.media().attributes.AUDIO),
this.master().playlists.forEach(function (e) {
(e.attributes && e.attributes.AUDIO) === i && e !== n.media() && (e.excludeUntil = 1 / 0);
}),
this.logger_('excluding audio group ' + i + ' as ' + s + ' does not support codec(s): "' + a.audio + '"')),
!Object.keys(o).length)
) {
if (this.sourceUpdater_.hasCreatedSourceBuffers() && !this.sourceUpdater_.canChangeType()) {
var u = [];
if (
(['video', 'audio'].forEach(function (e) {
var t = (hr(n.sourceUpdater_.codecs[e] || '')[0] || {}).type,
i = (hr(a[e] || '')[0] || {}).type;
t && i && t.toLowerCase() !== i.toLowerCase() && u.push('"' + n.sourceUpdater_.codecs[e] + '" -> "' + a[e] + '"');
}),
u.length)
)
return void this.blacklistCurrentPlaylist({ playlist: this.media(), message: 'Codec switching not supported: ' + u.join(', ') + '.', blacklistDuration: 1 / 0, internal: !0 });
}
return a;
}
t =
Object.keys(o).reduce(function (e, t) {
return e && (e += ', '), (e += t + ' does not support codec(s): "' + o[t].join(',') + '"');
}, '') + '.';
this.blacklistCurrentPlaylist({ playlist: this.media(), internal: !0, message: t, blacklistDuration: 1 / 0 });
} else this.blacklistCurrentPlaylist({ playlist: this.media(), message: 'Could not determine codecs for playlist.', blacklistDuration: 1 / 0 });
}),
(t.tryToCreateSourceBuffers_ = function () {
var e;
'open' !== this.mediaSource.readyState || this.sourceUpdater_.hasCreatedSourceBuffers() || !this.areMediaTypesKnown_() || ((e = this.getCodecsOrExclude_()) && (this.sourceUpdater_.createSourceBuffers(e), (e = [e.video, e.audio].filter(Boolean).join(',')), this.excludeIncompatibleVariants_(e)));
}),
(t.excludeUnsupportedVariants_ = function () {
var n = this,
r = this.master().playlists,
a = [];
Object.keys(r).forEach(function (e) {
var t,
i = r[e];
-1 === a.indexOf(i.id) && (a.push(i.id), (t = []), !(e = Hu(n.master, i)).audio || gr(e.audio) || mr(e.audio) || t.push('audio codec ' + e.audio), !e.video || gr(e.video) || mr(e.video) || t.push('video codec ' + e.video), e.text && 'stpp.ttml.im1t' === e.text && t.push('text codec ' + e.text), t.length && ((i.excludeUntil = 1 / 0), n.logger_('excluding ' + i.id + ' for unsupported: ' + t.join(', '))));
});
}),
(t.excludeIncompatibleVariants_ = function (e) {
var r = this,
a = [],
s = this.master().playlists,
e = Fu(hr(e)),
o = ju(e),
u = (e.video && hr(e.video)[0]) || null,
l = (e.audio && hr(e.audio)[0]) || null;
Object.keys(s).forEach(function (e) {
var t,
i,
n = s[e];
-1 === a.indexOf(n.id) && n.excludeUntil !== 1 / 0 && (a.push(n.id), (t = []), (i = Hu(r.masterPlaylistLoader_.master, n)), (e = ju(i)), (i.audio || i.video) && (e !== o && t.push('codec count "' + e + '" !== "' + o + '"'), r.sourceUpdater_.canChangeType() || ((e = (i.video && hr(i.video)[0]) || null), (i = (i.audio && hr(i.audio)[0]) || null), e && u && e.type.toLowerCase() !== u.type.toLowerCase() && t.push('video codec "' + e.type + '" !== "' + u.type + '"'), i && l && i.type.toLowerCase() !== l.type.toLowerCase() && t.push('audio codec "' + i.type + '" !== "' + l.type + '"')), t.length && ((n.excludeUntil = 1 / 0), r.logger_('blacklisting ' + n.id + ': ' + t.join(' && ')))));
});
}),
(t.updateAdCues_ = function (e) {
var t = 0,
i = this.seekable();
i.length && (t = i.start(0)),
(function (e, t, i) {
if ((void 0 === i && (i = 0), e.segments))
for (var n = i, r = 0; r < e.segments.length; r++) {
var a,
s,
o,
u = e.segments[r];
if (
(o =
o ||
(function (e, t) {
for (var i = e.cues, n = 0; n < i.length; n++) {
var r = i[n];
if (t >= r.adStartTime && t <= r.adEndTime) return r;
}
return null;
})(t, n + u.duration / 2))
) {
if ('cueIn' in u) {
(o.endTime = n), (o.adEndTime = n), (n += u.duration), (o = null);
continue;
}
if (n < o.endTime) {
n += u.duration;
continue;
}
o.endTime += u.duration;
} else 'cueOut' in u && (((o = new window.VTTCue(n, n + u.duration, u.cueOut)).adStartTime = n), (o.adEndTime = n + parseFloat(u.cueOut)), t.addCue(o)), 'cueOutCont' in u && ((a = (s = u.cueOutCont.split('/').map(parseFloat))[0]), (s = s[1]), ((o = new window.VTTCue(n, n + u.duration, '')).adStartTime = n - a), (o.adEndTime = o.adStartTime + s), t.addCue(o));
n += u.duration;
}
})(e, this.cueTagsTrack_, t);
}),
(t.goalBufferLength = function () {
var e = this.tech_.currentTime(),
t = fl.GOAL_BUFFER_LENGTH,
i = fl.GOAL_BUFFER_LENGTH_RATE,
n = Math.max(t, fl.MAX_GOAL_BUFFER_LENGTH);
return Math.min(t + e * i, n);
}),
(t.bufferLowWaterLine = function () {
var e = this.tech_.currentTime(),
t = fl.BUFFER_LOW_WATER_LINE,
i = fl.BUFFER_LOW_WATER_LINE_RATE,
n = Math.max(t, fl.MAX_BUFFER_LOW_WATER_LINE),
r = Math.max(t, fl.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE);
return Math.min(t + e * i, this.experimentalBufferBasedABR ? r : n);
}),
(t.bufferHighWaterLine = function () {
return fl.BUFFER_HIGH_WATER_LINE;
}),
e
);
})(tr.EventTarget),
dc = ['seeking', 'seeked', 'pause', 'playing', 'error'],
hc = (function () {
function e(e) {
var i = this;
(this.masterPlaylistController_ = e.masterPlaylistController), (this.tech_ = e.tech), (this.seekable = e.seekable), (this.allowSeeksWithinUnsafeLiveWindow = e.allowSeeksWithinUnsafeLiveWindow), (this.liveRangeSafeTimeDelta = e.liveRangeSafeTimeDelta), (this.media = e.media), (this.consecutiveUpdates = 0), (this.lastRecordedTime = null), (this.timer_ = null), (this.checkCurrentTimeTimeout_ = null), (this.logger_ = ko('PlaybackWatcher')), this.logger_('initialize');
function t() {
return i.monitorCurrentTime_();
}
function n() {
return i.monitorCurrentTime_();
}
function r() {
return i.techWaiting_();
}
function a() {
return i.cancelTimer_();
}
var s = this.masterPlaylistController_,
o = ['main', 'subtitle', 'audio'],
u = {};
o.forEach(function (e) {
(u[e] = {
reset: function () {
return i.resetSegmentDownloads_(e);
},
updateend: function () {
return i.checkSegmentDownloads_(e);
},
}),
s[e + 'SegmentLoader_'].on('appendsdone', u[e].updateend),
s[e + 'SegmentLoader_'].on('playlistupdate', u[e].reset),
i.tech_.on(['seeked', 'seeking'], u[e].reset);
});
function l(t) {
['main', 'audio'].forEach(function (e) {
s[e + 'SegmentLoader_'][t]('appended', i.seekingAppendCheck_);
});
}
(this.seekingAppendCheck_ = function () {
i.fixesBadSeeks_() && ((i.consecutiveUpdates = 0), (i.lastRecordedTime = i.tech_.currentTime()), l('off'));
}),
(this.clearSeekingAppendCheck_ = function () {
return l('off');
}),
(this.watchForBadSeeking_ = function () {
i.clearSeekingAppendCheck_(), l('on');
}),
this.tech_.on('seeked', this.clearSeekingAppendCheck_),
this.tech_.on('seeking', this.watchForBadSeeking_),
this.tech_.on('waiting', r),
this.tech_.on(dc, a),
this.tech_.on('canplay', n),
this.tech_.one('play', t),
(this.dispose = function () {
i.clearSeekingAppendCheck_(),
i.logger_('dispose'),
i.tech_.off('waiting', r),
i.tech_.off(dc, a),
i.tech_.off('canplay', n),
i.tech_.off('play', t),
i.tech_.off('seeking', i.watchForBadSeeking_),
i.tech_.off('seeked', i.clearSeekingAppendCheck_),
o.forEach(function (e) {
s[e + 'SegmentLoader_'].off('appendsdone', u[e].updateend), s[e + 'SegmentLoader_'].off('playlistupdate', u[e].reset), i.tech_.off(['seeked', 'seeking'], u[e].reset);
}),
i.checkCurrentTimeTimeout_ && window.clearTimeout(i.checkCurrentTimeTimeout_),
i.cancelTimer_();
});
}
var t = e.prototype;
return (
(t.monitorCurrentTime_ = function () {
this.checkCurrentTime_(), this.checkCurrentTimeTimeout_ && window.clearTimeout(this.checkCurrentTimeTimeout_), (this.checkCurrentTimeTimeout_ = window.setTimeout(this.monitorCurrentTime_.bind(this), 250));
}),
(t.resetSegmentDownloads_ = function (e) {
var t = this.masterPlaylistController_[e + 'SegmentLoader_'];
0 < this[e + 'StalledDownloads_'] && this.logger_('resetting possible stalled download count for ' + e + ' loader'), (this[e + 'StalledDownloads_'] = 0), (this[e + 'Buffered_'] = t.buffered_());
}),
(t.checkSegmentDownloads_ = function (e) {
var t = this.masterPlaylistController_,
i = t[e + 'SegmentLoader_'],
n = i.buffered_(),
r = (function (e, t) {
if (e === t) return !1;
if ((!e && t) || (!t && e)) return !0;
if (e.length !== t.length) return !0;
for (var i = 0; i < e.length; i++) if (e.start(i) !== t.start(i) || e.end(i) !== t.end(i)) return !0;
return !1;
})(this[e + 'Buffered_'], n);
(this[e + 'Buffered_'] = n), r ? this.resetSegmentDownloads_(e) : (this[e + 'StalledDownloads_']++, this.logger_('found #' + this[e + 'StalledDownloads_'] + ' ' + e + ' appends that did not increase buffer (possible stalled download)', { playlistId: i.playlist_ && i.playlist_.id, buffered: Po(n) }), this[e + 'StalledDownloads_'] < 10 || (this.logger_(e + ' loader stalled download exclusion'), this.resetSegmentDownloads_(e), this.tech_.trigger({ type: 'usage', name: 'vhs-' + e + '-download-exclusion' }), 'subtitle' !== e && t.blacklistCurrentPlaylist({ message: 'Excessive ' + e + ' segment downloading detected.' }, 1 / 0)));
}),
(t.checkCurrentTime_ = function () {
if (!this.tech_.paused() && !this.tech_.seeking()) {
var e = this.tech_.currentTime(),
t = this.tech_.buffered();
if (this.lastRecordedTime === e && (!t.length || e + 0.1 >= t.end(t.length - 1))) return this.techWaiting_();
5 <= this.consecutiveUpdates && e === this.lastRecordedTime ? (this.consecutiveUpdates++, this.waiting_()) : e === this.lastRecordedTime ? this.consecutiveUpdates++ : ((this.consecutiveUpdates = 0), (this.lastRecordedTime = e));
}
}),
(t.cancelTimer_ = function () {
(this.consecutiveUpdates = 0), this.timer_ && (this.logger_('cancelTimer_'), clearTimeout(this.timer_)), (this.timer_ = null);
}),
(t.fixesBadSeeks_ = function () {
if (!this.tech_.seeking()) return !1;
var e,
t = this.seekable(),
i = this.tech_.currentTime();
if ((this.afterSeekableWindow_(t, i, this.media(), this.allowSeeksWithinUnsafeLiveWindow) && (e = t.end(t.length - 1)), 'undefined' != typeof (e = this.beforeSeekableWindow_(t, i) ? (a = t.start(0)) + (a === t.end(0) ? 0 : 0.1) : e))) return this.logger_('Trying to seek outside of seekable at time ' + i + ' with seekable range ' + Ao(t) + '. Seeking to ' + e + '.'), this.tech_.setCurrentTime(e), !0;
for (var n = this.masterPlaylistController_.sourceUpdater_, r = this.tech_.buffered(), a = n.audioBuffer ? n.audioBuffered() : null, t = n.videoBuffer ? n.videoBuffered() : null, n = this.media(), s = n.partTargetDuration || 2 * (n.targetDuration - rl), o = [a, t], u = 0; u < o.length; u++) if (o[u]) if (Do(o[u], i) < s) return !1;
r = xo(r, i);
return 0 !== r.length && ((e = r.start(0) + 0.1), this.logger_('Buffered region starts (' + r.start(0) + ') just beyond seek point (' + i + '). Seeking to ' + e + '.'), this.tech_.setCurrentTime(e), !0);
}),
(t.waiting_ = function () {
var e, t;
this.techWaiting_() || ((e = this.tech_.currentTime()), (t = this.tech_.buffered()), (t = Io(t, e)).length && e + 3 <= t.end(0) && (this.cancelTimer_(), this.tech_.setCurrentTime(e), this.logger_('Stopped at ' + e + ' while inside a buffered region [' + t.start(0) + ' -> ' + t.end(0) + ']. Attempting to resume playback by seeking to the current time.'), this.tech_.trigger({ type: 'usage', name: 'vhs-unknown-waiting' }), this.tech_.trigger({ type: 'usage', name: 'hls-unknown-waiting' })));
}),
(t.techWaiting_ = function () {
var e = this.seekable(),
t = this.tech_.currentTime();
if (this.tech_.seeking() || null !== this.timer_) return !0;
if (this.beforeSeekableWindow_(e, t)) {
var i = e.end(e.length - 1);
return this.logger_('Fell out of live window at time ' + t + '. Seeking to live point (seekable end) ' + i), this.cancelTimer_(), this.tech_.setCurrentTime(i), this.tech_.trigger({ type: 'usage', name: 'vhs-live-resync' }), this.tech_.trigger({ type: 'usage', name: 'hls-live-resync' }), !0;
}
(e = this.tech_.vhs.masterPlaylistController_.sourceUpdater_), (i = this.tech_.buffered());
if (this.videoUnderflow_({ audioBuffered: e.audioBuffered(), videoBuffered: e.videoBuffered(), currentTime: t })) return this.cancelTimer_(), this.tech_.setCurrentTime(t), this.tech_.trigger({ type: 'usage', name: 'vhs-video-underflow' }), this.tech_.trigger({ type: 'usage', name: 'hls-video-underflow' }), !0;
e = xo(i, t);
if (0 < e.length) {
i = e.start(0) - t;
return this.logger_('Stopped at ' + t + ', setting timer for ' + i + ', seeking to ' + e.start(0)), this.cancelTimer_(), (this.timer_ = setTimeout(this.skipTheGap_.bind(this), 1e3 * i, t)), !0;
}
return !1;
}),
(t.afterSeekableWindow_ = function (e, t, i, n) {
if ((void 0 === n && (n = !1), !e.length)) return !1;
var r = e.end(e.length - 1) + 0.1;
return (r = !i.endList && n ? e.end(e.length - 1) + 3 * i.targetDuration : r) < t;
}),
(t.beforeSeekableWindow_ = function (e, t) {
return !!(e.length && 0 < e.start(0) && t < e.start(0) - this.liveRangeSafeTimeDelta);
}),
(t.videoUnderflow_ = function (e) {
var t,
i,
n = e.videoBuffered,
r = e.audioBuffered,
a = e.currentTime;
if (n) return n.length && r.length ? ((i = Io(n, a - 3)), (e = Io(n, a)), (r = Io(r, a)).length && !e.length && i.length && (t = { start: i.end(0), end: r.end(0) })) : xo(n, a).length || (t = this.gapFromVideoUnderflow_(n, a)), !!t && (this.logger_('Encountered a gap in video from ' + t.start + ' to ' + t.end + '. Seeking to current time ' + a), !0);
}),
(t.skipTheGap_ = function (e) {
var t = this.tech_.buffered(),
i = this.tech_.currentTime(),
t = xo(t, i);
this.cancelTimer_(), 0 !== t.length && i === e && (this.logger_('skipTheGap_:', 'currentTime:', i, 'scheduled currentTime:', e, 'nextRange start:', t.start(0)), this.tech_.setCurrentTime(t.start(0) + rl), this.tech_.trigger({ type: 'usage', name: 'vhs-gap-skip' }), this.tech_.trigger({ type: 'usage', name: 'hls-gap-skip' }));
}),
(t.gapFromVideoUnderflow_ = function (e, t) {
for (
var i = (function (e) {
if (e.length < 2) return tr.createTimeRanges();
for (var t = [], i = 1; i < e.length; i++) {
var n = e.end(i - 1),
r = e.start(i);
t.push([n, r]);
}
return tr.createTimeRanges(t);
})(e),
n = 0;
n < i.length;
n++
) {
var r = i.start(n),
a = i.end(n);
if (t - r < 4 && 2 < t - r) return { start: r, end: a };
}
return null;
}),
e
);
})(),
pc = {
errorInterval: 30,
getSource: function (e) {
return e(this.tech({ IWillNotUseThisInPlugins: !0 }).currentSource_ || this.currentSource());
},
},
fc = {
PlaylistLoader: ll,
Playlist: sl,
utils: Gt,
STANDARD_PLAYLIST_SELECTOR: rr,
INITIAL_PLAYLIST_SELECTOR: function () {
var t = this,
e = this.playlists.master.playlists.filter(sl.isEnabled);
return (
Wu(e, zu),
e.filter(function (e) {
return !!Hu(t.playlists.master, e).video;
})[0] || null
);
},
lastBandwidthSelector: rr,
movingAverageBandwidthSelector: function (t) {
var i = -1,
n = -1;
if (t < 0 || 1 < t) throw new Error('Moving average bandwidth decay must be between 0 and 1.');
return function () {
var e = (this.useDevicePixelRatio && window.devicePixelRatio) || 1;
return i < 0 && ((i = this.systemBandwidth), (n = this.systemBandwidth)), 0 < this.systemBandwidth && this.systemBandwidth !== n && ((i = t * this.systemBandwidth + (1 - t) * i), (n = this.systemBandwidth)), Gu(this.playlists.master, i, parseInt(Vu(this.tech_.el(), 'width'), 10) * e, parseInt(Vu(this.tech_.el(), 'height'), 10) * e, this.limitRenditionByPlayerDimensions, this.masterPlaylistController_);
};
},
comparePlaylistBandwidth: zu,
comparePlaylistResolution: function (e, t) {
var i, n;
return (i = (i = e.attributes.RESOLUTION && e.attributes.RESOLUTION.width ? e.attributes.RESOLUTION.width : i) || window.Number.MAX_VALUE) === (n = (n = t.attributes.RESOLUTION && t.attributes.RESOLUTION.width ? t.attributes.RESOLUTION.width : n) || window.Number.MAX_VALUE) && e.attributes.BANDWIDTH && t.attributes.BANDWIDTH ? e.attributes.BANDWIDTH - t.attributes.BANDWIDTH : i - n;
},
xhr: ou(),
};
Object.keys(fl).forEach(function (t) {
Object.defineProperty(fc, t, {
get: function () {
return tr.log.warn('using Vhs.' + t + ' is UNSAFE be sure you know what you are doing'), fl[t];
},
set: function (e) {
tr.log.warn('using Vhs.' + t + ' is UNSAFE be sure you know what you are doing'), 'number' != typeof e || e < 0 ? tr.log.warn('value of Vhs.' + t + ' must be greater than or equal to 0') : (fl[t] = e);
},
});
});
function mc(e, t) {
for (var i = t.media(), n = -1, r = 0; r < e.length; r++)
if (e[r].id === i.id) {
n = r;
break;
}
(e.selectedIndex_ = n), e.trigger({ selectedIndex: n, type: 'change' });
}
var gc = 'videojs-vhs';
fc.canPlaySource = function () {
return tr.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.");
};
function yc(e) {
var n = e.player,
t = e.sourceKeySystems,
i = e.audioMedia,
e = e.mainPlaylists;
if (!n.eme.initializeMediaKeys) return Promise.resolve();
var r,
e =
((e = e = i ? e.concat([i]) : e),
(r = Object.keys(t)),
e.reduce(function (e, n) {
if (!n.contentProtection) return e;
var t = r.reduce(function (e, t) {
var i = n.contentProtection[t];
return i && i.pssh && (e[t] = { pssh: i.pssh }), e;
}, {});
return Object.keys(t).length && e.push(t), e;
}, [])),
a = [],
s = [];
return (
e.forEach(function (e) {
s.push(
new Promise(function (e, t) {
n.tech_.one('keysessioncreated', e);
})
),
a.push(
new Promise(function (t, i) {
n.eme.initializeMediaKeys({ keySystems: e }, function (e) {
e ? i(e) : t();
});
})
);
}),
Promise.race([Promise.all(a), Promise.race(s)])
);
}
function vc(e) {
var t = e.player;
return (
!!(e = (function (e, t, i) {
if (!e) return e;
var n = {};
t && t.attributes && t.attributes.CODECS && (n = Fu(hr(t.attributes.CODECS))), i && i.attributes && i.attributes.CODECS && (n.audio = i.attributes.CODECS);
var r,
a = fr(n.video),
s = fr(n.audio),
o = {};
for (r in e) (o[r] = {}), s && (o[r].audioContentType = s), a && (o[r].videoContentType = a), t.contentProtection && t.contentProtection[r] && t.contentProtection[r].pssh && (o[r].pssh = t.contentProtection[r].pssh), 'string' == typeof e[r] && (o[r].url = e[r]);
return tr.mergeOptions(e, o);
})(e.sourceKeySystems, e.media, e.audioMedia)) &&
(!((t.currentSource().keySystems = e) && !t.eme) || (tr.log.warn('DRM encrypted source cannot be decrypted without a DRM plugin'), !1))
);
}
function _c() {
if (!window.localStorage) return null;
var e = window.localStorage.getItem(gc);
if (!e) return null;
try {
return JSON.parse(e);
} catch (e) {
return null;
}
}
(fc.supportsNativeHls = (function () {
if (!document || !document.createElement) return !1;
var t = document.createElement('video');
if (!tr.getTech('Html5').isSupported()) return !1;
return ['application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/x-mpegurl', 'application/x-mpegurl', 'video/x-mpegurl', 'video/mpegurl', 'application/mpegurl'].some(function (e) {
return /maybe|probably/i.test(t.canPlayType(e));
});
})()),
(fc.supportsNativeDash = !!(document && document.createElement && tr.getTech('Html5').isSupported()) && /maybe|probably/i.test(document.createElement('video').canPlayType('application/dash+xml'))),
(fc.supportsTypeNatively = function (e) {
return 'hls' === e ? fc.supportsNativeHls : 'dash' === e && fc.supportsNativeDash;
}),
(fc.isSupported = function () {
return tr.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.");
});
var bc = (function (r) {
function e(e, t, i) {
var n = r.call(this, t, tr.mergeOptions(i.hls, i.vhs)) || this;
if (
(i.hls && Object.keys(i.hls).length && tr.log.warn('Using hls options is deprecated. Use vhs instead.'),
'number' == typeof i.initialBandwidth && (n.options_.bandwidth = i.initialBandwidth),
(n.logger_ = ko('VhsHandler')),
t.options_ &&
t.options_.playerId &&
((i = tr(t.options_.playerId)).hasOwnProperty('hls') ||
Object.defineProperty(i, 'hls', {
get: function () {
return tr.log.warn('player.hls is deprecated. Use player.tech().vhs instead.'), t.trigger({ type: 'usage', name: 'hls-player-access' }), pt(n);
},
configurable: !0,
}),
i.hasOwnProperty('vhs') ||
Object.defineProperty(i, 'vhs', {
get: function () {
return tr.log.warn('player.vhs is deprecated. Use player.tech().vhs instead.'), t.trigger({ type: 'usage', name: 'vhs-player-access' }), pt(n);
},
configurable: !0,
}),
i.hasOwnProperty('dash') ||
Object.defineProperty(i, 'dash', {
get: function () {
return tr.log.warn('player.dash is deprecated. Use player.tech().vhs instead.'), pt(n);
},
configurable: !0,
}),
(n.player_ = i)),
(n.tech_ = t),
(n.source_ = e),
(n.stats = {}),
(n.ignoreNextSeekingEvent_ = !1),
n.setOptions_(),
n.options_.overrideNative && t.overrideNativeAudioTracks && t.overrideNativeVideoTracks)
)
t.overrideNativeAudioTracks(!0), t.overrideNativeVideoTracks(!0);
else if (n.options_.overrideNative && (t.featuresNativeVideoTracks || t.featuresNativeAudioTracks)) throw new Error('Overriding native HLS requires emulated tracks. See https://git.io/vMpjB');
return (
n.on(document, ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'], function (e) {
var t = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;
t && t.contains(n.tech_.el()) ? n.masterPlaylistController_.fastQualityChange_() : n.masterPlaylistController_.checkABR_();
}),
n.on(n.tech_, 'seeking', function () {
this.ignoreNextSeekingEvent_ ? (this.ignoreNextSeekingEvent_ = !1) : this.setCurrentTime(this.tech_.currentTime());
}),
n.on(n.tech_, 'error', function () {
this.tech_.error() && this.masterPlaylistController_ && this.masterPlaylistController_.pauseLoading();
}),
n.on(n.tech_, 'play', n.play),
n
);
}
ft(e, r);
var t = e.prototype;
return (
(t.setOptions_ = function () {
var e,
t = this;
(this.options_.withCredentials = this.options_.withCredentials || !1),
(this.options_.handleManifestRedirects = !1 !== this.options_.handleManifestRedirects),
(this.options_.limitRenditionByPlayerDimensions = !1 !== this.options_.limitRenditionByPlayerDimensions),
(this.options_.useDevicePixelRatio = this.options_.useDevicePixelRatio || !1),
(this.options_.smoothQualityChange = this.options_.smoothQualityChange || !1),
(this.options_.useBandwidthFromLocalStorage = 'undefined' != typeof this.source_.useBandwidthFromLocalStorage ? this.source_.useBandwidthFromLocalStorage : this.options_.useBandwidthFromLocalStorage || !1),
(this.options_.useNetworkInformationApi = this.options_.useNetworkInformationApi || !1),
(this.options_.customTagParsers = this.options_.customTagParsers || []),
(this.options_.customTagMappers = this.options_.customTagMappers || []),
(this.options_.cacheEncryptionKeys = this.options_.cacheEncryptionKeys || !1),
'number' != typeof this.options_.blacklistDuration && (this.options_.blacklistDuration = 300),
'number' != typeof this.options_.bandwidth && this.options_.useBandwidthFromLocalStorage && ((e = _c()) && e.bandwidth && ((this.options_.bandwidth = e.bandwidth), this.tech_.trigger({ type: 'usage', name: 'vhs-bandwidth-from-local-storage' }), this.tech_.trigger({ type: 'usage', name: 'hls-bandwidth-from-local-storage' })), e && e.throughput && ((this.options_.throughput = e.throughput), this.tech_.trigger({ type: 'usage', name: 'vhs-throughput-from-local-storage' }), this.tech_.trigger({ type: 'usage', name: 'hls-throughput-from-local-storage' }))),
'number' != typeof this.options_.bandwidth && (this.options_.bandwidth = fl.INITIAL_BANDWIDTH),
(this.options_.enableLowInitialPlaylist = this.options_.enableLowInitialPlaylist && this.options_.bandwidth === fl.INITIAL_BANDWIDTH),
['withCredentials', 'useDevicePixelRatio', 'limitRenditionByPlayerDimensions', 'bandwidth', 'smoothQualityChange', 'customTagParsers', 'customTagMappers', 'handleManifestRedirects', 'cacheEncryptionKeys', 'playlistSelector', 'initialPlaylistSelector', 'experimentalBufferBasedABR', 'liveRangeSafeTimeDelta', 'experimentalLLHLS', 'useNetworkInformationApi', 'experimentalExactManifestTimings', 'experimentalLeastPixelDiffSelector'].forEach(function (e) {
'undefined' != typeof t.source_[e] && (t.options_[e] = t.source_[e]);
}),
(this.limitRenditionByPlayerDimensions = this.options_.limitRenditionByPlayerDimensions),
(this.useDevicePixelRatio = this.options_.useDevicePixelRatio);
}),
(t.src = function (e, t) {
var n = this;
e &&
(this.setOptions_(),
(this.options_.src = 0 === (e = this.source_.src).toLowerCase().indexOf('data:application/vnd.videojs.vhs+json,') ? JSON.parse(e.substring(e.indexOf(',') + 1)) : e),
(this.options_.tech = this.tech_),
(this.options_.externVhs = fc),
(this.options_.sourceType = yr(t)),
(this.options_.seekTo = function (e) {
n.tech_.setCurrentTime(e);
}),
this.options_.smoothQualityChange && tr.log.warn('smoothQualityChange is deprecated and will be removed in the next major version'),
(this.masterPlaylistController_ = new cc(this.options_)),
(t = tr.mergeOptions({ liveRangeSafeTimeDelta: 0.1 }, this.options_, {
seekable: function () {
return n.seekable();
},
media: function () {
return n.masterPlaylistController_.media();
},
masterPlaylistController: this.masterPlaylistController_,
})),
(this.playbackWatcher_ = new hc(t)),
this.masterPlaylistController_.on('error', function () {
var e = tr.players[n.tech_.options_.playerId],
t = n.masterPlaylistController_.error;
'object' != typeof t || t.code ? 'string' == typeof t && (t = { message: t, code: 3 }) : (t.code = 3), e.error(t);
}),
(t = this.options_.experimentalBufferBasedABR ? fc.movingAverageBandwidthSelector(0.55) : fc.STANDARD_PLAYLIST_SELECTOR),
(this.masterPlaylistController_.selectPlaylist = (this.selectPlaylist || t).bind(this)),
(this.masterPlaylistController_.selectInitialPlaylist = fc.INITIAL_PLAYLIST_SELECTOR.bind(this)),
(this.playlists = this.masterPlaylistController_.masterPlaylistLoader_),
(this.mediaSource = this.masterPlaylistController_.mediaSource),
Object.defineProperties(this, {
selectPlaylist: {
get: function () {
return this.masterPlaylistController_.selectPlaylist;
},
set: function (e) {
this.masterPlaylistController_.selectPlaylist = e.bind(this);
},
},
throughput: {
get: function () {
return this.masterPlaylistController_.mainSegmentLoader_.throughput.rate;
},
set: function (e) {
(this.masterPlaylistController_.mainSegmentLoader_.throughput.rate = e), (this.masterPlaylistController_.mainSegmentLoader_.throughput.count = 1);
},
},
bandwidth: {
get: function () {
var e = this.masterPlaylistController_.mainSegmentLoader_.bandwidth,
t = window.navigator.connection || window.navigator.mozConnection || window.navigator.webkitConnection;
return (e = this.options_.useNetworkInformationApi && t ? (1e7 <= (t = 1e3 * t.downlink * 1e3) && 1e7 <= e ? Math.max(e, t) : t) : e);
},
set: function (e) {
(this.masterPlaylistController_.mainSegmentLoader_.bandwidth = e), (this.masterPlaylistController_.mainSegmentLoader_.throughput = { rate: 0, count: 0 });
},
},
systemBandwidth: {
get: function () {
var e = 1 / (this.bandwidth || 1),
t = 0 < this.throughput ? 1 / this.throughput : 0;
return Math.floor(1 / (e + t));
},
set: function () {
tr.log.error('The "systemBandwidth" property is read-only');
},
},
}),
this.options_.bandwidth && (this.bandwidth = this.options_.bandwidth),
this.options_.throughput && (this.throughput = this.options_.throughput),
Object.defineProperties(this.stats, {
bandwidth: {
get: function () {
return n.bandwidth || 0;
},
enumerable: !0,
},
mediaRequests: {
get: function () {
return n.masterPlaylistController_.mediaRequests_() || 0;
},
enumerable: !0,
},
mediaRequestsAborted: {
get: function () {
return n.masterPlaylistController_.mediaRequestsAborted_() || 0;
},
enumerable: !0,
},
mediaRequestsTimedout: {
get: function () {
return n.masterPlaylistController_.mediaRequestsTimedout_() || 0;
},
enumerable: !0,
},
mediaRequestsErrored: {
get: function () {
return n.masterPlaylistController_.mediaRequestsErrored_() || 0;
},
enumerable: !0,
},
mediaTransferDuration: {
get: function () {
return n.masterPlaylistController_.mediaTransferDuration_() || 0;
},
enumerable: !0,
},
mediaBytesTransferred: {
get: function () {
return n.masterPlaylistController_.mediaBytesTransferred_() || 0;
},
enumerable: !0,
},
mediaSecondsLoaded: {
get: function () {
return n.masterPlaylistController_.mediaSecondsLoaded_() || 0;
},
enumerable: !0,
},
mediaAppends: {
get: function () {
return n.masterPlaylistController_.mediaAppends_() || 0;
},
enumerable: !0,
},
mainAppendsToLoadedData: {
get: function () {
return n.masterPlaylistController_.mainAppendsToLoadedData_() || 0;
},
enumerable: !0,
},
audioAppendsToLoadedData: {
get: function () {
return n.masterPlaylistController_.audioAppendsToLoadedData_() || 0;
},
enumerable: !0,
},
appendsToLoadedData: {
get: function () {
return n.masterPlaylistController_.appendsToLoadedData_() || 0;
},
enumerable: !0,
},
timeToLoadedData: {
get: function () {
return n.masterPlaylistController_.timeToLoadedData_() || 0;
},
enumerable: !0,
},
buffered: {
get: function () {
return Po(n.tech_.buffered());
},
enumerable: !0,
},
currentTime: {
get: function () {
return n.tech_.currentTime();
},
enumerable: !0,
},
currentSource: {
get: function () {
return n.tech_.currentSource_;
},
enumerable: !0,
},
currentTech: {
get: function () {
return n.tech_.name_;
},
enumerable: !0,
},
duration: {
get: function () {
return n.tech_.duration();
},
enumerable: !0,
},
master: {
get: function () {
return n.playlists.master;
},
enumerable: !0,
},
playerDimensions: {
get: function () {
return n.tech_.currentDimensions();
},
enumerable: !0,
},
seekable: {
get: function () {
return Po(n.tech_.seekable());
},
enumerable: !0,
},
timestamp: {
get: function () {
return Date.now();
},
enumerable: !0,
},
videoPlaybackQuality: {
get: function () {
return n.tech_.getVideoPlaybackQuality();
},
enumerable: !0,
},
}),
this.tech_.one('canplay', this.masterPlaylistController_.setupFirstPlay.bind(this.masterPlaylistController_)),
this.tech_.on('bandwidthupdate', function () {
n.options_.useBandwidthFromLocalStorage &&
(function (e) {
if (!window.localStorage) return;
var t = (t = _c()) ? tr.mergeOptions(t, e) : e;
try {
window.localStorage.setItem(gc, JSON.stringify(t));
} catch (e) {
return;
}
})({ bandwidth: n.bandwidth, throughput: Math.round(n.throughput) });
}),
this.masterPlaylistController_.on('selectedinitialmedia', function () {
var i;
(i = n).representations = function () {
var e = i.masterPlaylistController_.master(),
e = Yo(e) ? i.masterPlaylistController_.getAudioTrackPlaylists_() : e.playlists;
return e
? e
.filter(function (e) {
return !Vo(e);
})
.map(function (e, t) {
return new Bl(i, e, e.id);
})
: [];
};
}),
this.masterPlaylistController_.sourceUpdater_.on('createdsourcebuffers', function () {
n.setupEme_();
}),
this.on(this.masterPlaylistController_, 'progress', function () {
this.tech_.trigger('progress');
}),
this.on(this.masterPlaylistController_, 'firstplay', function () {
this.ignoreNextSeekingEvent_ = !0;
}),
this.setupQualityLevels_(),
this.tech_.el() && ((this.mediaSourceUrl_ = window.URL.createObjectURL(this.masterPlaylistController_.mediaSource)), this.tech_.src(this.mediaSourceUrl_)));
}),
(t.setupEme_ = function () {
var t = this,
e = this.masterPlaylistController_.mediaTypes_.AUDIO.activePlaylistLoader,
i = vc({ player: this.player_, sourceKeySystems: this.source_.keySystems, media: this.playlists.media(), audioMedia: e && e.media() });
this.player_.tech_.on('keystatuschange', function (e) {
'output-restricted' === e.status && t.masterPlaylistController_.blacklistCurrentPlaylist({ playlist: t.masterPlaylistController_.media(), message: 'DRM keystatus changed to ' + e.status + '. Playlist will fail to play. Check for HDCP content.', blacklistDuration: 1 / 0 });
}),
11 !== tr.browser.IE_VERSION && i
? (this.logger_('waiting for EME key session creation'),
yc({ player: this.player_, sourceKeySystems: this.source_.keySystems, audioMedia: e && e.media(), mainPlaylists: this.playlists.master.playlists })
.then(function () {
t.logger_('created EME key session'), t.masterPlaylistController_.sourceUpdater_.initializedEme();
})
.catch(function (e) {
t.logger_('error while creating EME key session', e), t.player_.error({ message: 'Failed to initialize media keys for EME', code: 3 });
}))
: this.masterPlaylistController_.sourceUpdater_.initializedEme();
}),
(t.setupQualityLevels_ = function () {
var i = this,
e = tr.players[this.tech_.options_.playerId];
e &&
e.qualityLevels &&
!this.qualityLevels_ &&
((this.qualityLevels_ = e.qualityLevels()),
this.masterPlaylistController_.on('selectedinitialmedia', function () {
var t, e;
(t = i.qualityLevels_),
(e = i).representations().forEach(function (e) {
t.addQualityLevel(e);
}),
mc(t, e.playlists);
}),
this.playlists.on('mediachange', function () {
mc(i.qualityLevels_, i.playlists);
}));
}),
(e.version = function () {
return { '@videojs/http-streaming': '2.12.0', 'mux.js': '5.14.1', 'mpd-parser': '0.19.2', 'm3u8-parser': '4.7.0', 'aes-decrypter': '3.1.2' };
}),
(t.version = function () {
return this.constructor.version();
}),
(t.canChangeType = function () {
return Jl.canChangeType();
}),
(t.play = function () {
this.masterPlaylistController_.play();
}),
(t.setCurrentTime = function (e) {
this.masterPlaylistController_.setCurrentTime(e);
}),
(t.duration = function () {
return this.masterPlaylistController_.duration();
}),
(t.seekable = function () {
return this.masterPlaylistController_.seekable();
}),
(t.dispose = function () {
this.playbackWatcher_ && this.playbackWatcher_.dispose(), this.masterPlaylistController_ && this.masterPlaylistController_.dispose(), this.qualityLevels_ && this.qualityLevels_.dispose(), this.player_ && (delete this.player_.vhs, delete this.player_.dash, delete this.player_.hls), this.tech_ && this.tech_.vhs && delete this.tech_.vhs, this.tech_ && delete this.tech_.hls, this.mediaSourceUrl_ && window.URL.revokeObjectURL && (window.URL.revokeObjectURL(this.mediaSourceUrl_), (this.mediaSourceUrl_ = null)), r.prototype.dispose.call(this);
}),
(t.convertToProgramTime = function (e, t) {
return mu({ playlist: this.masterPlaylistController_.media(), time: e, callback: t });
}),
(t.seekToProgramTime = function (e, t, i, n) {
return void 0 === i && (i = !0), void 0 === n && (n = 2), gu({ programTime: e, playlist: this.masterPlaylistController_.media(), retryCount: n, pauseAfterSeek: i, seekTo: this.options_.seekTo, tech: this.options_.tech, callback: t });
}),
e
);
})(tr.getComponent('Component')),
Tc = {
name: 'videojs-http-streaming',
VERSION: '2.12.0',
canHandleSource: function (e, t) {
t = tr.mergeOptions(tr.options, (t = void 0 === t ? {} : t));
return Tc.canPlayType(e.type, t);
},
handleSource: function (e, t, i) {
i = tr.mergeOptions(tr.options, (i = void 0 === i ? {} : i));
return (
(t.vhs = new bc(e, t, i)),
tr.hasOwnProperty('hls') ||
Object.defineProperty(t, 'hls', {
get: function () {
return tr.log.warn('player.tech().hls is deprecated. Use player.tech().vhs instead.'), t.vhs;
},
configurable: !0,
}),
(t.vhs.xhr = ou()),
t.vhs.src(e.src, e.type),
t.vhs
);
},
canPlayType: function (e, t) {
(t = tr.mergeOptions(tr.options, (t = void 0 === t ? {} : t)).vhs.overrideNative), (t = void 0 === t ? !tr.browser.IS_ANY_SAFARI : t), (e = yr(e));
return e && (!fc.supportsTypeNatively(e) || t) ? 'maybe' : '';
},
};
return (
mr('avc1.4d400d,mp4a.40.2') && tr.getTech('Html5').registerSourceHandler(Tc, 0),
(tr.VhsHandler = bc),
Object.defineProperty(tr, 'HlsHandler', {
get: function () {
return tr.log.warn('videojs.HlsHandler is deprecated. Use videojs.VhsHandler instead.'), bc;
},
configurable: !0,
}),
(tr.VhsSourceHandler = Tc),
Object.defineProperty(tr, 'HlsSourceHandler', {
get: function () {
return tr.log.warn('videojs.HlsSourceHandler is deprecated. Use videojs.VhsSourceHandler instead.'), Tc;
},
configurable: !0,
}),
(tr.Vhs = fc),
Object.defineProperty(tr, 'Hls', {
get: function () {
return tr.log.warn('videojs.Hls is deprecated. Use videojs.Vhs instead.'), fc;
},
configurable: !0,
}),
tr.use || (tr.registerComponent('Hls', fc), tr.registerComponent('Vhs', fc)),
(tr.options.vhs = tr.options.vhs || {}),
(tr.options.hls = tr.options.hls || {}),
(tr.getPlugin && tr.getPlugin('reloadSourceOnError')) ||
(tr.registerPlugin || tr.plugin)('reloadSourceOnError', function (e) {
Fl(this, e);
}),
tr
);
});