PageSourceSearch

https://static.olansigr.com/static/assets/blockEditor/script/hls.min.js

js olansigr.com collected 2026-09-29 16:28:31 UTC 748,284 bytes, 18,624 lines download raw bytes

1!(function t(e) {
2  var r, i;
3  (r = this),
4    (i = function () {
5      'use strict';
6      function r(t, e) {
7        var r = Object.keys(t);
8        if (Object.getOwnPropertySymbols) {
9          var i = Object.getOwnPropertySymbols(t);
10          e &&
11            (i = i.filter(function (e) {
12              return Object.getOwnPropertyDescriptor(t, e).enumerable;
13            })),
14            r.push.apply(r, i);
15        }
16        return r;
17      }
18      function i(t) {
19        for (var e = 1; e < arguments.length; e++) {
20          var i = null != arguments[e] ? arguments[e] : {};
21          e % 2
22            ? r(Object(i), !0).forEach(function (e) {
23                s(t, e, i[e]);
24              })
25            : Object.getOwnPropertyDescriptors
26            ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i))
27            : r(Object(i)).forEach(function (e) {
28                Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(i, e));
29              });
30        }
31        return t;
32      }
33      function n(t, e) {
34        for (var r = 0; r < e.length; r++) {
35          var i = e[r];
36          (i.enumerable = i.enumerable || !1),
37            (i.configurable = !0),
38            'value' in i && (i.writable = !0),
39            Object.defineProperty(t, m(i.key), i);
40        }
41      }
42      function a(t, e, r) {
43        return e && n(t.prototype, e), r && n(t, r), Object.defineProperty(t, 'prototype', { writable: !1 }), t;
44      }
45      function s(t, e, r) {
46        return (
47          (e = m(e)) in t
48            ? Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 })
49            : (t[e] = r),
50          t
51        );
52      }
53      function o() {
54        return (
55          (o = Object.assign
56            ? Object.assign.bind()
57            : function (t) {
58                for (var e = 1; e < arguments.length; e++) {
59                  var r = arguments[e];
60                  for (var i in r) Object.prototype.hasOwnProperty.call(r, i) && (t[i] = r[i]);
61                }
62                return t;
63              }),
64          o.apply(this, arguments)
65        );
66      }
67      function l(t, e) {
68        (t.prototype = Object.create(e.prototype)), (t.prototype.constructor = t), h(t, e);
69      }
70      function u(t) {
71        return (
72          (u = Object.setPrototypeOf
73            ? Object.getPrototypeOf.bind()
74            : function (t) {
75                return t.__proto__ || Object.getPrototypeOf(t);
76              }),
77          u(t)
78        );
79      }
80      function h(t, e) {
81        return (
82          (h = Object.setPrototypeOf
83            ? Object.setPrototypeOf.bind()
84            : function (t, e) {
85                return (t.__proto__ = e), t;
86              }),
87          h(t, e)
88        );
89      }
90      function d() {
91        if ('undefined' == typeof Reflect || !Reflect.construct) return !1;
92        if (Reflect.construct.sham) return !1;
93        if ('function' == typeof Proxy) return !0;
94        try {
95          return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0;
96        } catch (t) {
97          return !1;
98        }
99      }
100      function c(t, e, r) {
101        return (
102          (c = d()
103            ? Reflect.construct.bind()
104            : function (t, e, r) {
105                var i = [null];
106                i.push.apply(i, e);
107                var n = new (Function.bind.apply(t, i))();
108                return r && h(n, r.prototype), n;
109              }),
110          c.apply(null, arguments)
111        );
112      }
113      function f(t) {
114        var e = 'function' == typeof Map ? new Map() : void 0;
115        return (
116          (f = function (t) {
117            if (null === t || ((r = t), -1 === Function.toString.call(r).indexOf('[native code]'))) return t;
118            var r;
119            if ('function' != typeof t) throw new TypeError('Super expression must either be null or a function');
120            if (void 0 !== e) {
121              if (e.has(t)) return e.get(t);
122              e.set(t, i);
123            }
124            function i() {
125              return c(t, arguments, u(this).constructor);
126            }
127            return (
128              (i.prototype = Object.create(t.prototype, {
129                constructor: { value: i, enumerable: !1, writable: !0, configurable: !0 },
130              })),
131              h(i, t)
132            );
133          }),
134          f(t)
135        );
136      }
137      function g(t, e) {
138        (null == e || e > t.length) && (e = t.length);
139        for (var r = 0, i = new Array(e); r < e; r++) i[r] = t[r];
140        return i;
141      }
142      function v(t, e) {
143        var r = ('undefined' != typeof Symbol && t[Symbol.iterator]) || t['@@iterator'];
144        if (r) return (r = r.call(t)).next.bind(r);
145        if (
146          Array.isArray(t) ||
147          (r = (function (t, e) {
148            if (t) {
149              if ('string' == typeof t) return g(t, e);
150              var r = Object.prototype.toString.call(t).slice(8, -1);
151              return (
152                'Object' === r && t.constructor && (r = t.constructor.name),
153                'Map' === r || 'Set' === r
154                  ? Array.from(t)
155                  : 'Arguments' === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)
156                  ? g(t, e)
157                  : void 0
158              );
159            }
160          })(t)) ||
161          (e && t && 'number' == typeof t.length)
162        ) {
163          r && (t = r);
164          var i = 0;
165          return function () {
166            return i >= t.length ? { done: !0 } : { done: !1, value: t[i++] };
167          };
168        }
169        throw new TypeError(
170          'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
171        );
172      }
173      function m(t) {
174        var e = (function (t, e) {
175          if ('object' != typeof t || null === t) return t;
176          var r = t[Symbol.toPrimitive];
177          if (void 0 !== r) {
178            var i = r.call(t, e || 'default');
179            if ('object' != typeof i) return i;
180            throw new TypeError('@@toPrimitive must return a primitive value.');
181          }
182          return ('string' === e ? String : Number)(t);
183        })(t, 'string');
184        return 'symbol' == typeof e ? e : String(e);
185      }
186      function p(t) {
187        return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, 'default') ? t.default : t;
188      }
189      var y = { exports: {} };
190      !(function (t, e) {
191        var r, i, n, a, s;
192        (r =
193          /^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/),
194          (i = /^(?=([^\/?#]*))\1([^]*)$/),
195          (n = /(?:\/|^)\.(?=\/)/g),
196          (a = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g),
197          (s = {
198            buildAbsoluteURL: function (t, e, r) {
199              if (((r = r || {}), (t = t.trim()), !(e = e.trim()))) {
200                if (!r.alwaysNormalize) return t;
201                var n = s.parseURL(t);
202                if (!n) throw new Error('Error trying to parse base URL.');
203                return (n.path = s.normalizePath(n.path)), s.buildURLFromParts(n);
204              }
205              var a = s.parseURL(e);
206              if (!a) throw new Error('Error trying to parse relative URL.');
207              if (a.scheme) return r.alwaysNormalize ? ((a.path = s.normalizePath(a.path)), s.buildURLFromParts(a)) : e;
208              var o = s.parseURL(t);
209              if (!o) throw new Error('Error trying to parse base URL.');
210              if (!o.netLoc && o.path && '/' !== o.path[0]) {
211                var l = i.exec(o.path);
212                (o.netLoc = l[1]), (o.path = l[2]);
213              }
214              o.netLoc && !o.path && (o.path = '/');
215              var u = {
216                scheme: o.scheme,
217                netLoc: a.netLoc,
218                path: null,
219                params: a.params,
220                query: a.query,
221                fragment: a.fragment,
222              };
223              if (!a.netLoc && ((u.netLoc = o.netLoc), '/' !== a.path[0]))
224                if (a.path) {
225                  var h = o.path,
226                    d = h.substring(0, h.lastIndexOf('/') + 1) + a.path;
227                  u.path = s.normalizePath(d);
228                } else (u.path = o.path), a.params || ((u.params = o.params), a.query || (u.query = o.query));
229              return (
230                null === u.path && (u.path = r.alwaysNormalize ? s.normalizePath(a.path) : a.path),
231                s.buildURLFromParts(u)
232              );
233            },
234            parseURL: function (t) {
235              var e = r.exec(t);
236              return e
237                ? {
238                    scheme: e[1] || '',
239                    netLoc: e[2] || '',
240                    path: e[3] || '',
241                    params: e[4] || '',
242                    query: e[5] || '',
243                    fragment: e[6] || '',
244                  }
245                : null;
246            },
247            normalizePath: function (t) {
248              for (t = t.split('').reverse().join('').replace(n, ''); t.length !== (t = t.replace(a, '')).length; );
249              return t.split('').reverse().join('');
250            },
251            buildURLFromParts: function (t) {
252              return t.scheme + t.netLoc + t.path + t.params + t.query + t.fragment;
253            },
254          }),
255          (t.exports = s);
256      })(y);
257      var T = y.exports,
258        E =
259          Number.isFinite ||
260          function (t) {
261            return 'number' == typeof t && isFinite(t);
262          },
263        S = (function (t) {
264          return (
265            (t.MEDIA_ATTACHING = 'hlsMediaAttaching'),
266            (t.MEDIA_ATTACHED = 'hlsMediaAttached'),
267            (t.MEDIA_DETACHING = 'hlsMediaDetaching'),
268            (t.MEDIA_DETACHED = 'hlsMediaDetached'),
269            (t.BUFFER_RESET = 'hlsBufferReset'),
270            (t.BUFFER_CODECS = 'hlsBufferCodecs'),
271            (t.BUFFER_CREATED = 'hlsBufferCreated'),
272            (t.BUFFER_APPENDING = 'hlsBufferAppending'),
273            (t.BUFFER_APPENDED = 'hlsBufferAppended'),
274            (t.BUFFER_EOS = 'hlsBufferEos'),
275            (t.BUFFER_FLUSHING = 'hlsBufferFlushing'),
276            (t.BUFFER_FLUSHED = 'hlsBufferFlushed'),
277            (t.MANIFEST_LOADING = 'hlsManifestLoading'),
278            (t.MANIFEST_LOADED = 'hlsManifestLoaded'),
279            (t.MANIFEST_PARSED = 'hlsManifestParsed'),
280            (t.LEVEL_SWITCHING = 'hlsLevelSwitching'),
281            (t.LEVEL_SWITCHED = 'hlsLevelSwitched'),
282            (t.LEVEL_LOADING = 'hlsLevelLoading'),
283            (t.LEVEL_LOADED = 'hlsLevelLoaded'),
284            (t.LEVEL_UPDATED = 'hlsLevelUpdated'),
285            (t.LEVEL_PTS_UPDATED = 'hlsLevelPtsUpdated'),
286            (t.LEVELS_UPDATED = 'hlsLevelsUpdated'),
287            (t.AUDIO_TRACKS_UPDATED = 'hlsAudioTracksUpdated'),
288            (t.AUDIO_TRACK_SWITCHING = 'hlsAudioTrackSwitching'),
289            (t.AUDIO_TRACK_SWITCHED = 'hlsAudioTrackSwitched'),
290            (t.AUDIO_TRACK_LOADING = 'hlsAudioTrackLoading'),
291            (t.AUDIO_TRACK_LOADED = 'hlsAudioTrackLoaded'),
292            (t.SUBTITLE_TRACKS_UPDATED = 'hlsSubtitleTracksUpdated'),
293            (t.SUBTITLE_TRACKS_CLEARED = 'hlsSubtitleTracksCleared'),
294            (t.SUBTITLE_TRACK_SWITCH = 'hlsSubtitleTrackSwitch'),
295            (t.SUBTITLE_TRACK_LOADING = 'hlsSubtitleTrackLoading'),
296            (t.SUBTITLE_TRACK_LOADED = 'hlsSubtitleTrackLoaded'),
297            (t.SUBTITLE_FRAG_PROCESSED = 'hlsSubtitleFragProcessed'),
298            (t.CUES_PARSED = 'hlsCuesParsed'),
299            (t.NON_NATIVE_TEXT_TRACKS_FOUND = 'hlsNonNativeTextTracksFound'),
300            (t.INIT_PTS_FOUND = 'hlsInitPtsFound'),
301            (t.FRAG_LOADING = 'hlsFragLoading'),
302            (t.FRAG_LOAD_EMERGENCY_ABORTED = 'hlsFragLoadEmergencyAborted'),
303            (t.FRAG_LOADED = 'hlsFragLoaded'),
304            (t.FRAG_DECRYPTED = 'hlsFragDecrypted'),
305            (t.FRAG_PARSING_INIT_SEGMENT = 'hlsFragParsingInitSegment'),
306            (t.FRAG_PARSING_USERDATA = 'hlsFragParsingUserdata'),
307            (t.FRAG_PARSING_METADATA = 'hlsFragParsingMetadata'),
308            (t.FRAG_PARSED = 'hlsFragParsed'),
309            (t.FRAG_BUFFERED = 'hlsFragBuffered'),
310            (t.FRAG_CHANGED = 'hlsFragChanged'),
311            (t.FPS_DROP = 'hlsFpsDrop'),
312            (t.FPS_DROP_LEVEL_CAPPING = 'hlsFpsDropLevelCapping'),
313            (t.ERROR = 'hlsError'),
314            (t.DESTROYING = 'hlsDestroying'),
315            (t.KEY_LOADING = 'hlsKeyLoading'),
316            (t.KEY_LOADED = 'hlsKeyLoaded'),
317            (t.LIVE_BACK_BUFFER_REACHED = 'hlsLiveBackBufferReached'),
318            (t.BACK_BUFFER_REACHED = 'hlsBackBufferReached'),
319            t
320          );
321        })({}),
322        L = (function (t) {
323          return (
324            (t.NETWORK_ERROR = 'networkError'),
325            (t.MEDIA_ERROR = 'mediaError'),
326            (t.KEY_SYSTEM_ERROR = 'keySystemError'),
327            (t.MUX_ERROR = 'muxError'),
328            (t.OTHER_ERROR = 'otherError'),
329            t
330          );
331        })({}),
332        R = (function (t) {
333          return (
334            (t.KEY_SYSTEM_NO_KEYS = 'keySystemNoKeys'),
335            (t.KEY_SYSTEM_NO_ACCESS = 'keySystemNoAccess'),
336            (t.KEY_SYSTEM_NO_SESSION = 'keySystemNoSession'),
337            (t.KEY_SYSTEM_NO_CONFIGURED_LICENSE = 'keySystemNoConfiguredLicense'),
338            (t.KEY_SYSTEM_LICENSE_REQUEST_FAILED = 'keySystemLicenseRequestFailed'),
339            (t.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = 'keySystemServerCertificateRequestFailed'),
340            (t.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = 'keySystemServerCertificateUpdateFailed'),
341            (t.KEY_SYSTEM_SESSION_UPDATE_FAILED = 'keySystemSessionUpdateFailed'),
342            (t.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = 'keySystemStatusOutputRestricted'),
343            (t.KEY_SYSTEM_STATUS_INTERNAL_ERROR = 'keySystemStatusInternalError'),
344            (t.MANIFEST_LOAD_ERROR = 'manifestLoadError'),
345            (t.MANIFEST_LOAD_TIMEOUT = 'manifestLoadTimeOut'),
346            (t.MANIFEST_PARSING_ERROR = 'manifestParsingError'),
347            (t.MANIFEST_INCOMPATIBLE_CODECS_ERROR = 'manifestIncompatibleCodecsError'),
348            (t.LEVEL_EMPTY_ERROR = 'levelEmptyError'),
349            (t.LEVEL_LOAD_ERROR = 'levelLoadError'),
350            (t.LEVEL_LOAD_TIMEOUT = 'levelLoadTimeOut'),
351            (t.LEVEL_PARSING_ERROR = 'levelParsingError'),
352            (t.LEVEL_SWITCH_ERROR = 'levelSwitchError'),
353            (t.AUDIO_TRACK_LOAD_ERROR = 'audioTrackLoadError'),
354            (t.AUDIO_TRACK_LOAD_TIMEOUT = 'audioTrackLoadTimeOut'),
355            (t.SUBTITLE_LOAD_ERROR = 'subtitleTrackLoadError'),
356            (t.SUBTITLE_TRACK_LOAD_TIMEOUT = 'subtitleTrackLoadTimeOut'),
357            (t.FRAG_LOAD_ERROR = 'fragLoadError'),
358            (t.FRAG_LOAD_TIMEOUT = 'fragLoadTimeOut'),
359            (t.FRAG_DECRYPT_ERROR = 'fragDecryptError'),
360            (t.FRAG_PARSING_ERROR = 'fragParsingError'),
361            (t.FRAG_GAP = 'fragGap'),
362            (t.REMUX_ALLOC_ERROR = 'remuxAllocError'),
363            (t.KEY_LOAD_ERROR = 'keyLoadError'),
364            (t.KEY_LOAD_TIMEOUT = 'keyLoadTimeOut'),
365            (t.BUFFER_ADD_CODEC_ERROR = 'bufferAddCodecError'),
366            (t.BUFFER_INCOMPATIBLE_CODECS_ERROR = 'bufferIncompatibleCodecsError'),
367            (t.BUFFER_APPEND_ERROR = 'bufferAppendError'),
368            (t.BUFFER_APPENDING_ERROR = 'bufferAppendingError'),
369            (t.BUFFER_STALLED_ERROR = 'bufferStalledError'),
370            (t.BUFFER_FULL_ERROR = 'bufferFullError'),
371            (t.BUFFER_SEEK_OVER_HOLE = 'bufferSeekOverHole'),
372            (t.BUFFER_NUDGE_ON_STALL = 'bufferNudgeOnStall'),
373            (t.INTERNAL_EXCEPTION = 'internalException'),
374            (t.INTERNAL_ABORTED = 'aborted'),
375            (t.UNKNOWN = 'unknown'),
376            t
377          );
378        })({}),
379        A = function () {},
380        k = { trace: A, debug: A, log: A, warn: A, info: A, error: A },
381        b = k;
382      function D(t) {
383        var e = self.console[t];
384        return e ? e.bind(self.console, '[' + t + '] >') : A;
385      }
386      function I(t, e) {
387        if ((self.console && !0 === t) || 'object' == typeof t) {
388          !(function (t) {
389            for (var e = arguments.length, r = new Array(e > 1 ? e - 1 : 0), i = 1; i < e; i++) r[i - 1] = arguments[i];
390            r.forEach(function (e) {
391              b[e] = t[e] ? t[e].bind(t) : D(e);
392            });
393          })(t, 'debug', 'log', 'info', 'warn', 'error');
394          try {
395            b.log('Debug logs enabled for "' + e + '" in hls.js version 1.4.12');
396          } catch (t) {
397            b = k;
398          }
399        } else b = k;
400      }
401      var w = b,
402        C = /^(\d+)x(\d+)$/,
403        _ = /(.+?)=(".*?"|.*?)(?:,|$)/g,
404        P = (function () {
405          function t(e) {
406            for (var r in ('string' == typeof e && (e = t.parseAttrList(e)), e))
407              e.hasOwnProperty(r) &&
408                ('X-' === r.substring(0, 2) && ((this.clientAttrs = this.clientAttrs || []), this.clientAttrs.push(r)),
409                (this[r] = e[r]));
410          }
411          var e = t.prototype;
412          return (
413            (e.decimalInteger = function (t) {
414              var e = parseInt(this[t], 10);
415              return e > Number.MAX_SAFE_INTEGER ? 1 / 0 : e;
416            }),
417            (e.hexadecimalInteger = function (t) {
418              if (this[t]) {
419                var e = (this[t] || '0x').slice(2);
420                e = (1 & e.length ? '0' : '') + e;
421                for (var r = new Uint8Array(e.length / 2), i = 0; i < e.length / 2; i++)
422                  r[i] = parseInt(e.slice(2 * i, 2 * i + 2), 16);
423                return r;
424              }
425              return null;
426            }),
427            (e.hexadecimalIntegerAsNumber = function (t) {
428              var e = parseInt(this[t], 16);
429              return e > Number.MAX_SAFE_INTEGER ? 1 / 0 : e;
430            }),
431            (e.decimalFloatingPoint = function (t) {
432              return parseFloat(this[t]);
433            }),
434            (e.optionalFloat = function (t, e) {
435              var r = this[t];
436              return r ? parseFloat(r) : e;
437            }),
438            (e.enumeratedString = function (t) {
439              return this[t];
440            }),
441            (e.bool = function (t) {
442              return 'YES' === this[t];
443            }),
444            (e.decimalResolution = function (t) {
445              var e = C.exec(this[t]);
446              if (null !== e) return { width: parseInt(e[1], 10), height: parseInt(e[2], 10) };
447            }),
448            (t.parseAttrList = function (t) {
449              var e,
450                r = {};
451              for (_.lastIndex = 0; null !== (e = _.exec(t)); ) {
452                var i = e[2];
453                0 === i.indexOf('"') && i.lastIndexOf('"') === i.length - 1 && (i = i.slice(1, -1)),
454                  (r[e[1].trim()] = i);
455              }
456              return r;
457            }),
458            t
459          );
460        })();
461      function x(t) {
462        return 'SCTE35-OUT' === t || 'SCTE35-IN' === t;
463      }
464      var F = (function () {
465          function t(t, e) {
466            if (
467              ((this.attr = void 0),
468              (this._startDate = void 0),
469              (this._endDate = void 0),
470              (this._badValueForSameId = void 0),
471              e)
472            ) {
473              var r = e.attr;
474              for (var i in r)
475                if (Object.prototype.hasOwnProperty.call(t, i) && t[i] !== r[i]) {
476                  w.warn('DATERANGE tag attribute: "' + i + '" does not match for tags with ID: "' + t.ID + '"'),
477                    (this._badValueForSameId = i);
478                  break;
479                }
480              t = o(new P({}), r, t);
481            }
482            if (((this.attr = t), (this._startDate = new Date(t['START-DATE'])), 'END-DATE' in this.attr)) {
483              var n = new Date(this.attr['END-DATE']);
484              E(n.getTime()) && (this._endDate = n);
485            }
486          }
487          return (
488            a(t, [
489              {
490                key: 'id',
491                get: function () {
492                  return this.attr.ID;
493                },
494              },
495              {
496                key: 'class',
497                get: function () {
498                  return this.attr.CLASS;
499                },
500              },
501              {
502                key: 'startDate',
503                get: function () {
504                  return this._startDate;
505                },
506              },
507              {
508                key: 'endDate',
509                get: function () {
510                  if (this._endDate) return this._endDate;
511                  var t = this.duration;
512                  return null !== t ? new Date(this._startDate.getTime() + 1e3 * t) : null;
513                },
514              },
515              {
516                key: 'duration',
517                get: function () {
518                  if ('DURATION' in this.attr) {
519                    var t = this.attr.decimalFloatingPoint('DURATION');
520                    if (E(t)) return t;
521                  } else if (this._endDate) return (this._endDate.getTime() - this._startDate.getTime()) / 1e3;
522                  return null;
523                },
524              },
525              {
526                key: 'plannedDuration',
527                get: function () {
528                  return 'PLANNED-DURATION' in this.attr ? this.attr.decimalFloatingPoint('PLANNED-DURATION') : null;
529                },
530              },
531              {
532                key: 'endOnNext',
533                get: function () {
534                  return this.attr.bool('END-ON-NEXT');
535                },
536              },
537              {
538                key: 'isValid',
539                get: function () {
540                  return (
541                    !!this.id &&
542                    !this._badValueForSameId &&
543                    E(this.startDate.getTime()) &&
544                    (null === this.duration || this.duration >= 0) &&
545                    (!this.endOnNext || !!this.class)
546                  );
547                },
548              },
549            ]),
550            t
551          );
552        })(),
553        M = function () {
554          (this.aborted = !1),
555            (this.loaded = 0),
556            (this.retry = 0),
557            (this.total = 0),
558            (this.chunkCount = 0),
559            (this.bwEstimate = 0),
560            (this.loading = { start: 0, first: 0, end: 0 }),
561            (this.parsing = { start: 0, end: 0 }),
562            (this.buffering = { start: 0, first: 0, end: 0 });
563        },
564        O = 'audio',
565        N = 'video',
566        U = 'audiovideo',
567        B = (function () {
568          function t(t) {
569            var e;
570            (this._byteRange = null),
571              (this._url = null),
572              (this.baseurl = void 0),
573              (this.relurl = void 0),
574              (this.elementaryStreams = (((e = {})[O] = null), (e[N] = null), (e[U] = null), e)),
575              (this.baseurl = t);
576          }
577          return (
578            (t.prototype.setByteRange = function (t, e) {
579              var r = t.split('@', 2),
580                i = [];
581              1 === r.length ? (i[0] = e ? e.byteRangeEndOffset : 0) : (i[0] = parseInt(r[1])),
582                (i[1] = parseInt(r[0]) + i[0]),
583                (this._byteRange = i);
584            }),
585            a(t, [
586              {
587                key: 'byteRange',
588                get: function () {
589                  return this._byteRange ? this._byteRange : [];
590                },
591              },
592              {
593                key: 'byteRangeStartOffset',
594                get: function () {
595                  return this.byteRange[0];
596                },
597              },
598              {
599                key: 'byteRangeEndOffset',
600                get: function () {
601                  return this.byteRange[1];
602                },
603              },
604              {
605                key: 'url',
606                get: function () {
607                  return (
608                    !this._url &&
609                      this.baseurl &&
610                      this.relurl &&
611                      (this._url = T.buildAbsoluteURL(this.baseurl, this.relurl, { alwaysNormalize: !0 })),
612                    this._url || ''
613                  );
614                },
615                set: function (t) {
616                  this._url = t;
617                },
618              },
619            ]),
620            t
621          );
622        })(),
623        G = (function (t) {
624          function e(e, r) {
625            var i;
626            return (
627              ((i = t.call(this, r) || this)._decryptdata = null),
628              (i.rawProgramDateTime = null),
629              (i.programDateTime = null),
630              (i.tagList = []),
631              (i.duration = 0),
632              (i.sn = 0),
633              (i.levelkeys = void 0),
634              (i.type = void 0),
635              (i.loader = null),
636              (i.keyLoader = null),
637              (i.level = -1),
638              (i.cc = 0),
639              (i.startPTS = void 0),
640              (i.endPTS = void 0),
641              (i.startDTS = void 0),
642              (i.endDTS = void 0),
643              (i.start = 0),
644              (i.deltaPTS = void 0),
645              (i.maxStartPTS = void 0),
646              (i.minEndPTS = void 0),
647              (i.stats = new M()),
648              (i.urlId = 0),
649              (i.data = void 0),
650              (i.bitrateTest = !1),
651              (i.title = null),
652              (i.initSegment = null),
653              (i.endList = void 0),
654              (i.gap = void 0),
655              (i.type = e),
656              i
657            );
658          }
659          l(e, t);
660          var r = e.prototype;
661          return (
662            (r.setKeyFormat = function (t) {
663              if (this.levelkeys) {
664                var e = this.levelkeys[t];
665                e && !this._decryptdata && (this._decryptdata = e.getDecryptData(this.sn));
666              }
667            }),
668            (r.abortRequests = function () {
669              var t, e;
670              null == (t = this.loader) || t.abort(), null == (e = this.keyLoader) || e.abort();
671            }),
672            (r.setElementaryStreamInfo = function (t, e, r, i, n, a) {
673              void 0 === a && (a = !1);
674              var s = this.elementaryStreams,
675                o = s[t];
676              o
677                ? ((o.startPTS = Math.min(o.startPTS, e)),
678                  (o.endPTS = Math.max(o.endPTS, r)),
679                  (o.startDTS = Math.min(o.startDTS, i)),
680                  (o.endDTS = Math.max(o.endDTS, n)))
681                : (s[t] = { startPTS: e, endPTS: r, startDTS: i, endDTS: n, partial: a });
682            }),
683            (r.clearElementaryStreamInfo = function () {
684              var t = this.elementaryStreams;
685              (t[O] = null), (t[N] = null), (t[U] = null);
686            }),
687            a(e, [
688              {
689                key: 'decryptdata',
690                get: function () {
691                  if (!this.levelkeys && !this._decryptdata) return null;
692                  if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {
693                    var t = this.levelkeys.identity;
694                    if (t) this._decryptdata = t.getDecryptData(this.sn);
695                    else {
696                      var e = Object.keys(this.levelkeys);
697                      if (1 === e.length) return (this._decryptdata = this.levelkeys[e[0]].getDecryptData(this.sn));
698                    }
699                  }
700                  return this._decryptdata;
701                },
702              },
703              {
704                key: 'end',
705                get: function () {
706                  return this.start + this.duration;
707                },
708              },
709              {
710                key: 'endProgramDateTime',
711                get: function () {
712                  if (null === this.programDateTime) return null;
713                  if (!E(this.programDateTime)) return null;
714                  var t = E(this.duration) ? this.duration : 0;
715                  return this.programDateTime + 1e3 * t;
716                },
717              },
718              {
719                key: 'encrypted',
720                get: function () {
721                  var t;
722                  if (null != (t = this._decryptdata) && t.encrypted) return !0;
723                  if (this.levelkeys) {
724                    var e = Object.keys(this.levelkeys),
725                      r = e.length;
726                    if (r > 1 || (1 === r && this.levelkeys[e[0]].encrypted)) return !0;
727                  }
728                  return !1;
729                },
730              },
731            ]),
732            e
733          );
734        })(B),
735        K = (function (t) {
736          function e(e, r, i, n, a) {
737            var s;
738            ((s = t.call(this, i) || this).fragOffset = 0),
739              (s.duration = 0),
740              (s.gap = !1),
741              (s.independent = !1),
742              (s.relurl = void 0),
743              (s.fragment = void 0),
744              (s.index = void 0),
745              (s.stats = new M()),
746              (s.duration = e.decimalFloatingPoint('DURATION')),
747              (s.gap = e.bool('GAP')),
748              (s.independent = e.bool('INDEPENDENT')),
749              (s.relurl = e.enumeratedString('URI')),
750              (s.fragment = r),
751              (s.index = n);
752            var o = e.enumeratedString('BYTERANGE');
753            return o && s.setByteRange(o, a), a && (s.fragOffset = a.fragOffset + a.duration), s;
754          }
755          return (
756            l(e, t),
757            a(e, [
758              {
759                key: 'start',
760                get: function () {
761                  return this.fragment.start + this.fragOffset;
762                },
763              },
764              {
765                key: 'end',
766                get: function () {
767                  return this.start + this.duration;
768                },
769              },
770              {
771                key: 'loaded',
772                get: function () {
773                  var t = this.elementaryStreams;
774                  return !!(t.audio || t.video || t.audiovideo);
775                },
776              },
777            ]),
778            e
779          );
780        })(B),
781        H = (function () {
782          function t(t) {
783            (this.PTSKnown = !1),
784              (this.alignedSliding = !1),
785              (this.averagetargetduration = void 0),
786              (this.endCC = 0),
787              (this.endSN = 0),
788              (this.fragments = void 0),
789              (this.fragmentHint = void 0),
790              (this.partList = null),
791              (this.dateRanges = void 0),
792              (this.live = !0),
793              (this.ageHeader = 0),
794              (this.advancedDateTime = void 0),
795              (this.updated = !0),
796              (this.advanced = !0),
797              (this.availabilityDelay = void 0),
798              (this.misses = 0),
799              (this.startCC = 0),
800              (this.startSN = 0),
801              (this.startTimeOffset = null),
802              (this.targetduration = 0),
803              (this.totalduration = 0),
804              (this.type = null),
805              (this.url = void 0),
806              (this.m3u8 = ''),
807              (this.version = null),
808              (this.canBlockReload = !1),
809              (this.canSkipUntil = 0),
810              (this.canSkipDateRanges = !1),
811              (this.skippedSegments = 0),
812              (this.recentlyRemovedDateranges = void 0),
813              (this.partHoldBack = 0),
814              (this.holdBack = 0),
815              (this.partTarget = 0),
816              (this.preloadHint = void 0),
817              (this.renditionReports = void 0),
818              (this.tuneInGoal = 0),
819              (this.deltaUpdateFailed = void 0),
820              (this.driftStartTime = 0),
821              (this.driftEndTime = 0),
822              (this.driftStart = 0),
823              (this.driftEnd = 0),
824              (this.encryptedFragments = void 0),
825              (this.playlistParsingError = null),
826              (this.variableList = null),
827              (this.hasVariableRefs = !1),
828              (this.fragments = []),
829              (this.encryptedFragments = []),
830              (this.dateRanges = {}),
831              (this.url = t);
832          }
833          return (
834            (t.prototype.reloaded = function (t) {
835              if (!t) return (this.advanced = !0), void (this.updated = !0);
836              var e = this.lastPartSn - t.lastPartSn,
837                r = this.lastPartIndex - t.lastPartIndex;
838              (this.updated = this.endSN !== t.endSN || !!r || !!e || !this.live),
839                (this.advanced = this.endSN > t.endSN || e > 0 || (0 === e && r > 0)),
840                this.updated || this.advanced
841                  ? (this.misses = Math.floor(0.6 * t.misses))
842                  : (this.misses = t.misses + 1),
843                (this.availabilityDelay = t.availabilityDelay);
844            }),
845            a(t, [
846              {
847                key: 'hasProgramDateTime',
848                get: function () {
849                  return !!this.fragments.length && E(this.fragments[this.fragments.length - 1].programDateTime);
850                },
851              },
852              {
853                key: 'levelTargetDuration',
854                get: function () {
855                  return this.averagetargetduration || this.targetduration || 10;
856                },
857              },
858              {
859                key: 'drift',
860                get: function () {
861                  var t = this.driftEndTime - this.driftStartTime;
862                  return t > 0 ? (1e3 * (this.driftEnd - this.driftStart)) / t : 1;
863                },
864              },
865              {
866                key: 'edge',
867                get: function () {
868                  return this.partEnd || this.fragmentEnd;
869                },
870              },
871              {
872                key: 'partEnd',
873                get: function () {
874                  var t;
875                  return null != (t = this.partList) && t.length
876                    ? this.partList[this.partList.length - 1].end
877                    : this.fragmentEnd;
878                },
879              },
880              {
881                key: 'fragmentEnd',
882                get: function () {
883                  var t;
884                  return null != (t = this.fragments) && t.length ? this.fragments[this.fragments.length - 1].end : 0;
885                },
886              },
887              {
888                key: 'age',
889                get: function () {
890                  return this.advancedDateTime ? Math.max(Date.now() - this.advancedDateTime, 0) / 1e3 : 0;
891                },
892              },
893              {
894                key: 'lastPartIndex',
895                get: function () {
896                  var t;
897                  return null != (t = this.partList) && t.length ? this.partList[this.partList.length - 1].index : -1;
898                },
899              },
900              {
901                key: 'lastPartSn',
902                get: function () {
903                  var t;
904                  return null != (t = this.partList) && t.length
905                    ? this.partList[this.partList.length - 1].fragment.sn
906                    : this.endSN;
907                },
908              },
909            ]),
910            t
911          );
912        })();
913      function V(t) {
914        return Uint8Array.from(atob(t), function (t) {
915          return t.charCodeAt(0);
916        });
917      }
918      function Y(t) {
919        var e,
920          r,
921          i = t.split(':'),
922          n = null;
923        if ('data' === i[0] && 2 === i.length) {
924          var a = i[1].split(';'),
925            s = a[a.length - 1].split(',');
926          if (2 === s.length) {
927            var o = 'base64' === s[0],
928              l = s[1];
929            o
930              ? (a.splice(-1, 1), (n = V(l)))
931              : ((e = W(l).subarray(0, 16)), (r = new Uint8Array(16)).set(e, 16 - e.length), (n = r));
932          }
933        }
934        return n;
935      }
936      function W(t) {
937        return Uint8Array.from(unescape(encodeURIComponent(t)), function (t) {
938          return t.charCodeAt(0);
939        });
940      }
941      var j = {
942          CLEARKEY: 'org.w3.clearkey',
943          FAIRPLAY: 'com.apple.fps',
944          PLAYREADY: 'com.microsoft.playready',
945          WIDEVINE: 'com.widevine.alpha',
946        },
947        q = 'org.w3.clearkey',
948        X = 'com.apple.streamingkeydelivery',
949        z = 'com.microsoft.playready',
950        Q = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed';
951      function $(t) {
952        switch (t) {
953          case X:
954            return j.FAIRPLAY;
955          case z:
956            return j.PLAYREADY;
957          case Q:
958            return j.WIDEVINE;
959          case q:
960            return j.CLEARKEY;
961        }
962      }
963      var J = 'edef8ba979d64acea3c827dcd51d21ed';
964      function Z(t) {
965        switch (t) {
966          case j.FAIRPLAY:
967            return X;
968          case j.PLAYREADY:
969            return z;
970          case j.WIDEVINE:
971            return Q;
972          case j.CLEARKEY:
973            return q;
974        }
975      }
976      function tt(t) {
977        var e = t.drmSystems,
978          r = t.widevineLicenseUrl,
979          i = e
980            ? [j.FAIRPLAY, j.WIDEVINE, j.PLAYREADY, j.CLEARKEY].filter(function (t) {
981                return !!e[t];
982              })
983            : [];
984        return !i[j.WIDEVINE] && r && i.push(j.WIDEVINE), i;
985      }
986      var et =
987        'undefined' != typeof self && self.navigator && self.navigator.requestMediaKeySystemAccess
988          ? self.navigator.requestMediaKeySystemAccess.bind(self.navigator)
989          : null;
990      function rt(t, e, r) {
991        return Uint8Array.prototype.slice ? t.slice(e, r) : new Uint8Array(Array.prototype.slice.call(t, e, r));
992      }
993      var it,
994        nt = function (t, e) {
995          return (
996            e + 10 <= t.length &&
997            73 === t[e] &&
998            68 === t[e + 1] &&
999            51 === t[e + 2] &&
1000            t[e + 3] < 255 &&
1001            t[e + 4] < 255 &&
1002            t[e + 6] < 128 &&
1003            t[e + 7] < 128 &&
1004            t[e + 8] < 128 &&
1005            t[e + 9] < 128
1006          );
1007        },
1008        at = function (t, e) {
1009          return (
1010            e + 10 <= t.length &&
1011            51 === t[e] &&
1012            68 === t[e + 1] &&
1013            73 === t[e + 2] &&
1014            t[e + 3] < 255 &&
1015            t[e + 4] < 255 &&
1016            t[e + 6] < 128 &&
1017            t[e + 7] < 128 &&
1018            t[e + 8] < 128 &&
1019            t[e + 9] < 128
1020          );
1021        },
1022        st = function (t, e) {
1023          for (var r = e, i = 0; nt(t, e); ) (i += 10), (i += ot(t, e + 6)), at(t, e + 10) && (i += 10), (e += i);
1024          if (i > 0) return t.subarray(r, r + i);
1025        },
1026        ot = function (t, e) {
1027          var r = 0;
1028          return (
1029            (r = (127 & t[e]) << 21), (r |= (127 & t[e + 1]) << 14), (r |= (127 & t[e + 2]) << 7), (r |= 127 & t[e + 3])
1030          );
1031        },
1032        lt = function (t, e) {
1033          return nt(t, e) && ot(t, e + 6) + 10 <= t.length - e;
1034        },
1035        ut = function (t) {
1036          return t && 'PRIV' === t.key && 'com.apple.streaming.transportStreamTimestamp' === t.info;
1037        },
1038        ht = function (t) {
1039          var e = String.fromCharCode(t[0], t[1], t[2], t[3]),
1040            r = ot(t, 4);
1041          return { type: e, size: r, data: t.subarray(10, 10 + r) };
1042        },
1043        dt = function (t) {
1044          for (var e = 0, r = []; nt(t, e); ) {
1045            for (var i = ot(t, e + 6), n = (e += 10) + i; e + 8 < n; ) {
1046              var a = ht(t.subarray(e)),
1047                s = ct(a);
1048              s && r.push(s), (e += a.size + 10);
1049            }
1050            at(t, e) && (e += 10);
1051          }
1052          return r;
1053        },
1054        ct = function (t) {
1055          return 'PRIV' === t.type ? ft(t) : 'W' === t.type[0] ? vt(t) : gt(t);
1056        },
1057        ft = function (t) {
1058          if (!(t.size < 2)) {
1059            var e = pt(t.data, !0),
1060              r = new Uint8Array(t.data.subarray(e.length + 1));
1061            return { key: t.type, info: e, data: r.buffer };
1062          }
1063        },
1064        gt = function (t) {
1065          if (!(t.size < 2)) {
1066            if ('TXXX' === t.type) {
1067              var e = 1,
1068                r = pt(t.data.subarray(e), !0);
1069              e += r.length + 1;
1070              var i = pt(t.data.subarray(e));
1071              return { key: t.type, info: r, data: i };
1072            }
1073            var n = pt(t.data.subarray(1));
1074            return { key: t.type, data: n };
1075          }
1076        },
1077        vt = function (t) {
1078          if ('WXXX' === t.type) {
1079            if (t.size < 2) return;
1080            var e = 1,
1081              r = pt(t.data.subarray(e), !0);
1082            e += r.length + 1;
1083            var i = pt(t.data.subarray(e));
1084            return { key: t.type, info: r, data: i };
1085          }
1086          var n = pt(t.data);
1087          return { key: t.type, data: n };
1088        },
1089        mt = function (t) {
1090          if (8 === t.data.byteLength) {
1091            var e = new Uint8Array(t.data),
1092              r = 1 & e[3],
1093              i = (e[4] << 23) + (e[5] << 15) + (e[6] << 7) + e[7];
1094            return (i /= 45), r && (i += 47721858.84), Math.round(i);
1095          }
1096        },
1097        pt = function (t, e) {
1098          void 0 === e && (e = !1);
1099          var r = yt();
1100          if (r) {
1101            var i = r.decode(t);
1102            if (e) {
1103              var n = i.indexOf('\0');
1104              return -1 !== n ? i.substring(0, n) : i;
1105            }
1106            return i.replace(/\0/g, '');
1107          }
1108          for (var a, s, o, l = t.length, u = '', h = 0; h < l; ) {
1109            if (0 === (a = t[h++]) && e) return u;
1110            if (0 !== a && 3 !== a)
1111              switch (a >> 4) {
1112                case 0:
1113                case 1:
1114                case 2:
1115                case 3:
1116                case 4:
1117                case 5:
1118                case 6:
1119                case 7:
1120                  u += String.fromCharCode(a);
1121                  break;
1122                case 12:
1123                case 13:
1124                  (s = t[h++]), (u += String.fromCharCode(((31 & a) << 6) | (63 & s)));
1125                  break;
1126                case 14:
1127                  (s = t[h++]),
1128                    (o = t[h++]),
1129                    (u += String.fromCharCode(((15 & a) << 12) | ((63 & s) << 6) | ((63 & o) << 0)));
1130              }
1131          }
1132          return u;
1133        };
1134      function yt() {
1135        return it || void 0 === self.TextDecoder || (it = new self.TextDecoder('utf-8')), it;
1136      }
1137      var Tt = function (t) {
1138          for (var e = '', r = 0; r < t.length; r++) {
1139            var i = t[r].toString(16);
1140            i.length < 2 && (i = '0' + i), (e += i);
1141          }
1142          return e;
1143        },
1144        Et = Math.pow(2, 32) - 1,
1145        St = [].push,
1146        Lt = { video: 1, audio: 2, id3: 3, text: 4 };
1147      function Rt(t) {
1148        return String.fromCharCode.apply(null, t);
1149      }
1150      function At(t, e) {
1151        var r = (t[e] << 8) | t[e + 1];
1152        return r < 0 ? 65536 + r : r;
1153      }
1154      function kt(t, e) {
1155        var r = bt(t, e);
1156        return r < 0 ? 4294967296 + r : r;
1157      }
1158      function bt(t, e) {
1159        return (t[e] << 24) | (t[e + 1] << 16) | (t[e + 2] << 8) | t[e + 3];
1160      }
1161      function Dt(t, e, r) {
1162        (t[e] = r >> 24), (t[e + 1] = (r >> 16) & 255), (t[e + 2] = (r >> 8) & 255), (t[e + 3] = 255 & r);
1163      }
1164      function It(t, e) {
1165        var r = [];
1166        if (!e.length) return r;
1167        for (var i = t.byteLength, n = 0; n < i; ) {
1168          var a = kt(t, n),
1169            s = a > 1 ? n + a : i;
1170          if (Rt(t.subarray(n + 4, n + 8)) === e[0])
1171            if (1 === e.length) r.push(t.subarray(n + 8, s));
1172            else {
1173              var o = It(t.subarray(n + 8, s), e.slice(1));
1174              o.length && St.apply(r, o);
1175            }
1176          n = s;
1177        }
1178        return r;
1179      }
1180      function wt(t) {
1181        var e = [],
1182          r = t[0],
1183          i = 8,
1184          n = kt(t, i);
1185        (i += 4), (i += 0 === r ? 8 : 16), (i += 2);
1186        var a = t.length + 0,
1187          s = At(t, i);
1188        i += 2;
1189        for (var o = 0; o < s; o++) {
1190          var l = i,
1191            u = kt(t, l);
1192          l += 4;
1193          var h = 2147483647 & u;
1194          if (1 == (2147483648 & u) >>> 31) return w.warn('SIDX has hierarchical references (not supported)'), null;
1195          var d = kt(t, l);
1196          (l += 4),
1197            e.push({ referenceSize: h, subsegmentDuration: d, info: { duration: d / n, start: a, end: a + h - 1 } }),
1198            (a += h),
1199            (i = l += 4);
1200        }
1201        return { earliestPresentationTime: 0, timescale: n, version: r, referencesCount: s, references: e };
1202      }
1203      function Ct(t) {
1204        for (var e = [], r = It(t, ['moov', 'trak']), i = 0; i < r.length; i++) {
1205          var n = r[i],
1206            a = It(n, ['tkhd'])[0];
1207          if (a) {
1208            var s = a[0],
1209              o = 0 === s ? 12 : 20,
1210              l = kt(a, o),
1211              u = It(n, ['mdia', 'mdhd'])[0];
1212            if (u) {
1213              var h = kt(u, (o = 0 === (s = u[0]) ? 12 : 20)),
1214                d = It(n, ['mdia', 'hdlr'])[0];
1215              if (d) {
1216                var c = Rt(d.subarray(8, 12)),
1217                  f = { soun: O, vide: N }[c];
1218                if (f) {
1219                  var g = It(n, ['mdia', 'minf', 'stbl', 'stsd'])[0],
1220                    v = void 0;
1221                  g && (v = Rt(g.subarray(12, 16))),
1222                    (e[l] = { timescale: h, type: f }),
1223                    (e[f] = { timescale: h, id: l, codec: v });
1224                }
1225              }
1226            }
1227          }
1228        }
1229        return (
1230          It(t, ['moov', 'mvex', 'trex']).forEach(function (t) {
1231            var r = kt(t, 4),
1232              i = e[r];
1233            i && (i.default = { duration: kt(t, 12), flags: kt(t, 20) });
1234          }),
1235          e
1236        );
1237      }
1238      function _t(t) {
1239        var e = It(t, ['schm'])[0];
1240        if (e) {
1241          var r = Rt(e.subarray(4, 8));
1242          if ('cbcs' === r || 'cenc' === r) return It(t, ['schi', 'tenc'])[0];
1243        }
1244        return w.error("[eme] missing 'schm' box"), null;
1245      }
1246      function Pt(t) {
1247        var e = kt(t, 0),
1248          r = 8;
1249        1 & e && (r += 4), 4 & e && (r += 4);
1250        for (var i = 0, n = kt(t, 4), a = 0; a < n; a++)
1251          256 & e && ((i += kt(t, r)), (r += 4)), 512 & e && (r += 4), 1024 & e && (r += 4), 2048 & e && (r += 4);
1252        return i;
1253      }
1254      function xt(t, e) {
1255        var r = new Uint8Array(t.length + e.length);
1256        return r.set(t), r.set(e, t.length), r;
1257      }
1258      function Ft(t, e) {
1259        var r = [],
1260          i = e.samples,
1261          n = e.timescale,
1262          a = e.id,
1263          s = !1;
1264        return (
1265          It(i, ['moof']).map(function (o) {
1266            var l = o.byteOffset - 8;
1267            It(o, ['traf']).map(function (o) {
1268              var u = It(o, ['tfdt']).map(function (t) {
1269                var e = t[0],
1270                  r = kt(t, 4);
1271                return 1 === e && ((r *= Math.pow(2, 32)), (r += kt(t, 8))), r / n;
1272              })[0];
1273              return (
1274                void 0 !== u && (t = u),
1275                It(o, ['tfhd']).map(function (u) {
1276                  var h = kt(u, 4),
1277                    d = 16777215 & kt(u, 0),
1278                    c = 0,
1279                    f = 0 != (16 & d),
1280                    g = 0,
1281                    v = 0 != (32 & d),
1282                    m = 8;
1283                  h === a &&
1284                    (0 != (1 & d) && (m += 8),
1285                    0 != (2 & d) && (m += 4),
1286                    0 != (8 & d) && ((c = kt(u, m)), (m += 4)),
1287                    f && ((g = kt(u, m)), (m += 4)),
1288                    v && (m += 4),
1289                    'video' === e.type &&
1290                      (s = (function (t) {
1291                        if (!t) return !1;
1292                        var e = t.indexOf('.'),
1293                          r = e < 0 ? t : t.substring(0, e);
1294                        return 'hvc1' === r || 'hev1' === r || 'dvh1' === r || 'dvhe' === r;
1295                      })(e.codec)),
1296                    It(o, ['trun']).map(function (a) {
1297                      var o = a[0],
1298                        u = 16777215 & kt(a, 0),
1299                        h = 0 != (1 & u),
1300                        d = 0,
1301                        f = 0 != (4 & u),
1302                        v = 0 != (256 & u),
1303                        m = 0,
1304                        p = 0 != (512 & u),
1305                        y = 0,
1306                        T = 0 != (1024 & u),
1307                        E = 0 != (2048 & u),
1308                        S = 0,
1309                        L = kt(a, 4),
1310                        R = 8;
1311                      h && ((d = kt(a, R)), (R += 4)), f && (R += 4);
1312                      for (var A = d + l, k = 0; k < L; k++) {
1313                        if (
1314                          (v ? ((m = kt(a, R)), (R += 4)) : (m = c),
1315                          p ? ((y = kt(a, R)), (R += 4)) : (y = g),
1316                          T && (R += 4),
1317                          E && ((S = 0 === o ? kt(a, R) : bt(a, R)), (R += 4)),
1318                          e.type === N)
1319                        )
1320                          for (var b = 0; b < y; ) {
1321                            var D = kt(i, A);
1322                            Mt(s, i[(A += 4)]) && Ot(i.subarray(A, A + D), s ? 2 : 1, t + S / n, r),
1323                              (A += D),
1324                              (b += D + 4);
1325                          }
1326                        t += m / n;
1327                      }
1328                    }));
1329                })
1330              );
1331            });
1332          }),
1333          r
1334        );
1335      }
1336      function Mt(t, e) {
1337        if (t) {
1338          var r = (e >> 1) & 63;
1339          return 39 === r || 40 === r;
1340        }
1341        return 6 == (31 & e);
1342      }
1343      function Ot(t, e, r, i) {
1344        var n = Nt(t),
1345          a = 0;
1346        a += e;
1347        for (var s = 0, o = 0, l = !1, u = 0; a < n.length; ) {
1348          s = 0;
1349          do {
1350            if (a >= n.length) break;
1351            s += u = n[a++];
1352          } while (255 === u);
1353          o = 0;
1354          do {
1355            if (a >= n.length) break;
1356            o += u = n[a++];
1357          } while (255 === u);
1358          var h = n.length - a;
1359          if (!l && 4 === s && a < n.length) {
1360            if (((l = !0), 181 === n[a++])) {
1361              var d = At(n, a);
1362              if (((a += 2), 49 === d)) {
1363                var c = kt(n, a);
1364                if (((a += 4), 1195456820 === c)) {
1365                  var f = n[a++];
1366                  if (3 === f) {
1367                    var g = n[a++],
1368                      v = 64 & g,
1369                      m = v ? 2 + 3 * (31 & g) : 0,
1370                      p = new Uint8Array(m);
1371                    if (v) {
1372                      p[0] = g;
1373                      for (var y = 1; y < m; y++) p[y] = n[a++];
1374                    }
1375                    i.push({ type: f, payloadType: s, pts: r, bytes: p });
1376                  }
1377                }
1378              }
1379            }
1380          } else if (5 === s && o < h) {
1381            if (((l = !0), o > 16)) {
1382              for (var T = [], E = 0; E < 16; E++) {
1383                var S = n[a++].toString(16);
1384                T.push(1 == S.length ? '0' + S : S), (3 !== E && 5 !== E && 7 !== E && 9 !== E) || T.push('-');
1385              }
1386              for (var L = o - 16, R = new Uint8Array(L), A = 0; A < L; A++) R[A] = n[a++];
1387              i.push({ payloadType: s, pts: r, uuid: T.join(''), userData: pt(R), userDataBytes: R });
1388            }
1389          } else if (o < h) a += o;
1390          else if (o > h) break;
1391        }
1392      }
1393      function Nt(t) {
1394        for (var e = t.byteLength, r = [], i = 1; i < e - 2; )
1395          0 === t[i] && 0 === t[i + 1] && 3 === t[i + 2] ? (r.push(i + 2), (i += 2)) : i++;
1396        if (0 === r.length) return t;
1397        var n = e - r.length,
1398          a = new Uint8Array(n),
1399          s = 0;
1400        for (i = 0; i < n; s++, i++) s === r[0] && (s++, r.shift()), (a[i] = t[s]);
1401        return a;
1402      }
1403      function Ut(t, e, r) {
1404        if (16 !== t.byteLength) throw new RangeError('Invalid system id');
1405        var i, n, a;
1406        if (e) {
1407          (i = 1), (n = new Uint8Array(16 * e.length));
1408          for (var s = 0; s < e.length; s++) {
1409            var o = e[s];
1410            if (16 !== o.byteLength) throw new RangeError('Invalid key');
1411            n.set(o, 16 * s);
1412          }
1413        } else (i = 0), (n = new Uint8Array());
1414        i > 0
1415          ? ((a = new Uint8Array(4)), e.length > 0 && new DataView(a.buffer).setUint32(0, e.length, !1))
1416          : (a = new Uint8Array());
1417        var l = new Uint8Array(4);
1418        return (
1419          r && r.byteLength > 0 && new DataView(l.buffer).setUint32(0, r.byteLength, !1),
1420          (function (t) {
1421            for (var e = arguments.length, r = new Array(e > 1 ? e - 1 : 0), i = 1; i < e; i++) r[i - 1] = arguments[i];
1422            for (var n = r.length, a = 8, s = n; s--;
1422 ) a += r[s].byteLength;
1423            var o = new Uint8Array(a);
1424            for (
1425              o[0] = (a >> 24) & 255,
1426                o[1] = (a >> 16) & 255,
1427                o[2] = (a >> 8) & 255,
1428                o[3] = 255 & a,
1429                o.set(t, 4),
1430                s = 0,
1431                a = 8;
1432              s < n;
1433              s++
1434            )
1435              o.set(r[s], a), (a += r[s].byteLength);
1436            return o;
1437          })([112, 115, 115, 104], new Uint8Array([i, 0, 0, 0]), t, a, n, l, r || new Uint8Array())
1438        );
1439      }
1440      var Bt = {},
1441        Gt = (function () {
1442          function t(t, e, r, i, n) {
1443            void 0 === i && (i = [1]),
1444              void 0 === n && (n = null),
1445              (this.uri = void 0),
1446              (this.method = void 0),
1447              (this.keyFormat = void 0),
1448              (this.keyFormatVersions = void 0),
1449              (this.encrypted = void 0),
1450              (this.isCommonEncryption = void 0),
1451              (this.iv = null),
1452              (this.key = null),
1453              (this.keyId = null),
1454              (this.pssh = null),
1455              (this.method = t),
1456              (this.uri = e),
1457              (this.keyFormat = r),
1458              (this.keyFormatVersions = i),
1459              (this.iv = n),
1460              (this.encrypted = !!t && 'NONE' !== t),
1461              (this.isCommonEncryption = this.encrypted && 'AES-128' !== t);
1462          }
1463          t.clearKeyUriToKeyIdMap = function () {
1464            Bt = {};
1465          };
1466          var e = t.prototype;
1467          return (
1468            (e.isSupported = function () {
1469              if (this.method) {
1470                if ('AES-128' === this.method || 'NONE' === this.method) return !0;
1471                if ('identity' === this.keyFormat) return 'SAMPLE-AES' === this.method;
1472                switch (this.keyFormat) {
1473                  case X:
1474                  case Q:
1475                  case z:
1476                  case q:
1477                    return (
1478                      -1 !== ['ISO-23001-7', 'SAMPLE-AES', 'SAMPLE-AES-CENC', 'SAMPLE-AES-CTR'].indexOf(this.method)
1479                    );
1480                }
1481              }
1482              return !1;
1483            }),
1484            (e.getDecryptData = function (e) {
1485              if (!this.encrypted || !this.uri) return null;
1486              if ('AES-128' === this.method && this.uri && !this.iv) {
1487                'number' != typeof e &&
1488                  ('AES-128' !== this.method ||
1489                    this.iv ||
1490                    w.warn(
1491                      'missing IV for initialization segment with method="' + this.method + '" - compliance issue',
1492                    ),
1493                  (e = 0));
1494                var r = (function (t) {
1495                  for (var e = new Uint8Array(16), r = 12; r < 16; r++) e[r] = (t >> (8 * (15 - r))) & 255;
1496                  return e;
1497                })(e);
1498                return new t(this.method, this.uri, 'identity', this.keyFormatVersions, r);
1499              }
1500              var i = Y(this.uri);
1501              if (i)
1502                switch (this.keyFormat) {
1503                  case Q:
1504                    (this.pssh = i), i.length >= 22 && (this.keyId = i.subarray(i.length - 22, i.length - 6));
1505                    break;
1506                  case z:
1507                    var n = new Uint8Array([154, 4, 240, 121, 152, 64, 66, 134, 171, 146, 230, 91, 224, 136, 95, 149]);
1508                    this.pssh = Ut(n, null, i);
1509                    var a = new Uint16Array(i.buffer, i.byteOffset, i.byteLength / 2),
1510                      s = String.fromCharCode.apply(null, Array.from(a)),
1511                      o = s.substring(s.indexOf('<'), s.length),
1512                      l = new DOMParser().parseFromString(o, 'text/xml').getElementsByTagName('KID')[0];
1513                    if (l) {
1514                      var u = l.childNodes[0] ? l.childNodes[0].nodeValue : l.getAttribute('VALUE');
1515                      if (u) {
1516                        var h = V(u).subarray(0, 16);
1517                        !(function (t) {
1518                          var e = function (t, e, r) {
1519                            var i = t[e];
1520                            (t[e] = t[r]), (t[r] = i);
1521                          };
1522                          e(t, 0, 3), e(t, 1, 2), e(t, 4, 5), e(t, 6, 7);
1523                        })(h),
1524                          (this.keyId = h);
1525                      }
1526                    }
1527                    break;
1528                  default:
1529                    var d = i.subarray(0, 16);
1530                    if (16 !== d.length) {
1531                      var c = new Uint8Array(16);
1532                      c.set(d, 16 - d.length), (d = c);
1533                    }
1534                    this.keyId = d;
1535                }
1536              if (!this.keyId || 16 !== this.keyId.byteLength) {
1537                var f = Bt[this.uri];
1538                if (!f) {
1539                  var g = Object.keys(Bt).length % Number.MAX_SAFE_INTEGER;
1540                  (f = new Uint8Array(16)), new DataView(f.buffer, 12, 4).setUint32(0, g), (Bt[this.uri] = f);
1541                }
1542                this.keyId = f;
1543              }
1544              return this;
1545            }),
1546            t
1547          );
1548        })(),
1549        Kt = /\{\$([a-zA-Z0-9-_]+)\}/g;
1550      function Ht(t) {
1551        return Kt.test(t);
1552      }
1553      function Vt(t, e, r) {
1554        if (null !== t.variableList || t.hasVariableRefs)
1555          for (var i = r.length; i--; ) {
1556            var n = r[i],
1557              a = e[n];
1558            a && (e[n] = Yt(t, a));
1559          }
1560      }
1561      function Yt(t, e) {
1562        if (null !== t.variableList || t.hasVariableRefs) {
1563          var r = t.variableList;
1564          return e.replace(Kt, function (e) {
1565            var i = e.substring(2, e.length - 1),
1566              n = null == r ? void 0 : r[i];
1567            return void 0 === n
1568              ? (t.playlistParsingError ||
1569                  (t.playlistParsingError = new Error(
1570                    'Missing preceding EXT-X-DEFINE tag for Variable Reference: "' + i + '"',
1571                  )),
1572                e)
1573              : n;
1574          });
1575        }
1576        return e;
1577      }
1578      function Wt(t, e, r) {
1579        var i,
1580          n,
1581          a = t.variableList;
1582        if ((a || (t.variableList = a = {}), 'QUERYPARAM' in e)) {
1583          i = e.QUERYPARAM;
1584          try {
1585            var s = new self.URL(r).searchParams;
1586            if (!s.has(i)) throw new Error('"' + i + '" does not match any query parameter in URI: "' + r + '"');
1587            n = s.get(i);
1588          } catch (e) {
1589            t.playlistParsingError || (t.playlistParsingError = new Error('EXT-X-DEFINE QUERYPARAM: ' + e.message));
1590          }
1591        } else (i = e.NAME), (n = e.VALUE);
1592        i in a
1593          ? t.playlistParsingError ||
1594            (t.playlistParsingError = new Error('EXT-X-DEFINE duplicate Variable Name declarations: "' + i + '"'))
1595          : (a[i] = n || '');
1596      }
1597      function jt(t, e, r) {
1598        var i = e.IMPORT;
1599        if (r && i in r) {
1600          var n = t.variableList;
1601          n || (t.variableList = n = {}), (n[i] = r[i]);
1602        } else
1603          t.playlistParsingError ||
1604            (t.playlistParsingError = new Error(
1605              'EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "' + i + '"',
1606            ));
1607      }
1608      function qt() {
1609        if ('undefined' != typeof self) return self.MediaSource || self.WebKitMediaSource;
1610      }
1611      var Xt = {
1612          audio: {
1613            a3ds: !0,
1614            'ac-3': !0,
1615            'ac-4': !0,
1616            alac: !0,
1617            alaw: !0,
1618            dra1: !0,
1619            'dts+': !0,
1620            'dts-': !0,
1621            dtsc: !0,
1622            dtse: !0,
1623            dtsh: !0,
1624            'ec-3': !0,
1625            enca: !0,
1626            g719: !0,
1627            g726: !0,
1628            m4ae: !0,
1629            mha1: !0,
1630            mha2: !0,
1631            mhm1: !0,
1632            mhm2: !0,
1633            mlpa: !0,
1634            mp4a: !0,
1635            'raw ': !0,
1636            Opus: !0,
1637            opus: !0,
1638            samr: !0,
1639            sawb: !0,
1640            sawp: !0,
1641            sevc: !0,
1642            sqcp: !0,
1643            ssmv: !0,
1644            twos: !0,
1645            ulaw: !0,
1646          },
1647          video: {
1648            avc1: !0,
1649            avc2: !0,
1650            avc3: !0,
1651            avc4: !0,
1652            avcp: !0,
1653            av01: !0,
1654            drac: !0,
1655            dva1: !0,
1656            dvav: !0,
1657            dvh1: !0,
1658            dvhe: !0,
1659            encv: !0,
1660            hev1: !0,
1661            hvc1: !0,
1662            mjp2: !0,
1663            mp4v: !0,
1664            mvc1: !0,
1665            mvc2: !0,
1666            mvc3: !0,
1667            mvc4: !0,
1668            resv: !0,
1669            rv60: !0,
1670            s263: !0,
1671            svc1: !0,
1672            svc2: !0,
1673            'vc-1': !0,
1674            vp08: !0,
1675            vp09: !0,
1676          },
1677          text: { stpp: !0, wvtt: !0 },
1678        },
1679        zt = qt();
1680      function Qt(t, e) {
1681        var r;
1682        return null != (r = null == zt ? void 0 : zt.isTypeSupported((e || 'video') + '/mp4;codecs="' + t + '"')) && r;
1683      }
1684      var $t =
1685          /#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,
1686        Jt = /#EXT-X-MEDIA:(.*)/g,
1687        Zt = /^#EXT(?:INF|-X-TARGETDURATION):/m,
1688        te = new RegExp(
1689          [
1690            /#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,
1691            /(?!#) *(\S[\S ]*)/.source,
1692            /#EXT-X-BYTERANGE:*(.+)/.source,
1693            /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,
1694            /#.*/.source,
1695          ].join('|'),
1696          'g',
1697        ),
1698        ee = new RegExp(
1699          [
1700            /#(EXTM3U)/.source,
1701            /#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/
1702              .source,
1703            /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,
1704            /#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source,
1705            /(#)([^:]*):(.*)/.source,
1706            /(#)(.*)(?:.*)\r?\n?/.source,
1707          ].join('|'),
1708        ),
1709        re = (function () {
1710          function t() {}
1711          return (
1712            (t.findGroup = function (t, e) {
1713              for (var r = 0; r < t.length; r++) {
1714                var i = t[r];
1715                if (i.id === e) return i;
1716              }
1717            }),
1718            (t.convertAVC1ToAVCOTI = function (t) {
1719              var e = t.split('.');
1720              if (e.length > 2) {
1721                var r = e.shift() + '.';
1722                return (
1723                  (r += parseInt(e.shift()).toString(16)), (r += ('000' + parseInt(e.shift()).toString(16)).slice(-4))
1724                );
1725              }
1726              return t;
1727            }),
1728            (t.resolve = function (t, e) {
1729              return T.buildAbsoluteURL(e, t, { alwaysNormalize: !0 });
1730            }),
1731            (t.isMediaPlaylist = function (t) {
1732              return Zt.test(t);
1733            }),
1734            (t.parseMasterPlaylist = function (e, r) {
1735              var i,
1736                n = {
1737                  contentSteering: null,
1738                  levels: [],
1739                  playlistParsingError: null,
1740                  sessionData: null,
1741                  sessionKeys: null,
1742                  startTimeOffset: null,
1743                  variableList: null,
1744                  hasVariableRefs: Ht(e),
1745                },
1746                a = [];
1747              for ($t.lastIndex = 0; null != (i = $t.exec(e)); )
1748                if (i[1]) {
1749                  var s,
1750                    o = new P(i[1]);
1751                  Vt(n, o, [
1752                    'CODECS',
1753                    'SUPPLEMENTAL-CODECS',
1754                    'ALLOWED-CPC',
1755                    'PATHWAY-ID',
1756                    'STABLE-VARIANT-ID',
1757                    'AUDIO',
1758                    'VIDEO',
1759                    'SUBTITLES',
1760                    'CLOSED-CAPTIONS',
1761                    'NAME',
1762                  ]);
1763                  var l = Yt(n, i[2]),
1764                    u = {
1765                      attrs: o,
1766                      bitrate: o.decimalInteger('AVERAGE-BANDWIDTH') || o.decimalInteger('BANDWIDTH'),
1767                      name: o.NAME,
1768                      url: t.resolve(l, r),
1769                    },
1770                    h = o.decimalResolution('RESOLUTION');
1771                  h && ((u.width = h.width), (u.height = h.height)),
1772                    ae(
1773                      (o.CODECS || '').split(/[ ,]+/).filter(function (t) {
1774                        return t;
1775                      }),
1776                      u,
1777                    ),
1778                    u.videoCodec &&
1779                      -1 !== u.videoCodec.indexOf('avc1') &&
1780                      (u.videoCodec = t.convertAVC1ToAVCOTI(u.videoCodec)),
1781                    (null != (s = u.unknownCodecs) && s.length) || a.push(u),
1782                    n.levels.push(u);
1783                } else if (i[3]) {
1784                  var d = i[3],
1785                    c = i[4];
1786                  switch (d) {
1787                    case 'SESSION-DATA':
1788                      var f = new P(c);
1789                      Vt(n, f, ['DATA-ID', 'LANGUAGE', 'VALUE', 'URI']);
1790                      var g = f['DATA-ID'];
1791                      g && (null === n.sessionData && (n.sessionData = {}), (n.sessionData[g] = f));
1792                      break;
1793                    case 'SESSION-KEY':
1794                      var v = ie(c, r, n);
1795                      v.encrypted && v.isSupported()
1796                        ? (null === n.sessionKeys && (n.sessionKeys = []), n.sessionKeys.push(v))
1797                        : w.warn('[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "' + c + '"');
1798                      break;
1799                    case 'DEFINE':
1800                      var m = new P(c);
1801                      Vt(n, m, ['NAME', 'VALUE', 'QUERYPARAM']), Wt(n, m, r);
1802                      break;
1803                    case 'CONTENT-STEERING':
1804                      var p = new P(c);
1805                      Vt(n, p, ['SERVER-URI', 'PATHWAY-ID']),
1806                        (n.contentSteering = { uri: t.resolve(p['SERVER-URI'], r), pathwayId: p['PATHWAY-ID'] || '.' });
1807                      break;
1808                    case 'START':
1809                      n.startTimeOffset = ne(c);
1810                  }
1811                }
1812              var y = a.length > 0 && a.length < n.levels.length;
1813              return (
1814                (n.levels = y ? a : n.levels),
1815                0 === n.levels.length && (n.playlistParsingError = new Error('no levels found in manifest')),
1816                n
1817              );
1818            }),
1819            (t.parseMasterPlaylistMedia = function (e, r, i) {
1820              var n,
1821                a = {},
1822                s = i.levels,
1823                o = {
1824                  AUDIO: s.map(function (t) {
1825                    return { id: t.attrs.AUDIO, audioCodec: t.audioCodec };
1826                  }),
1827                  SUBTITLES: s.map(function (t) {
1828                    return { id: t.attrs.SUBTITLES, textCodec: t.textCodec };
1829                  }),
1830                  'CLOSED-CAPTIONS': [],
1831                },
1832                l = 0;
1833              for (Jt.lastIndex = 0; null !== (n = Jt.exec(e)); ) {
1834                var u = new P(n[1]),
1835                  h = u.TYPE;
1836                if (h) {
1837                  var d = o[h],
1838                    c = a[h] || [];
1839                  (a[h] = c),
1840                    Vt(i, u, [
1841                      'URI',
1842                      'GROUP-ID',
1843                      'LANGUAGE',
1844                      'ASSOC-LANGUAGE',
1845                      'STABLE-RENDITION-ID',
1846                      'NAME',
1847                      'INSTREAM-ID',
1848                      'CHARACTERISTICS',
1849                      'CHANNELS',
1850                    ]);
1851                  var f = {
1852                    attrs: u,
1853                    bitrate: 0,
1854                    id: l++,
1855                    groupId: u['GROUP-ID'] || '',
1856                    instreamId: u['INSTREAM-ID'],
1857                    name: u.NAME || u.LANGUAGE || '',
1858                    type: h,
1859                    default: u.bool('DEFAULT'),
1860                    autoselect: u.bool('AUTOSELECT'),
1861                    forced: u.bool('FORCED'),
1862                    lang: u.LANGUAGE,
1863                    url: u.URI ? t.resolve(u.URI, r) : '',
1864                  };
1865                  if (null != d && d.length) {
1866                    var g = t.findGroup(d, f.groupId) || d[0];
1867                    se(f, g, 'audioCodec'), se(f, g, 'textCodec');
1868                  }
1869                  c.push(f);
1870                }
1871              }
1872              return a;
1873            }),
1874            (t.parseLevelPlaylist = function (t, e, r, i, n, a) {
1875              var s,
1876                l,
1877                u,
1878                h = new H(e),
1879                d = h.fragments,
1880                c = null,
1881                f = 0,
1882                g = 0,
1883                v = 0,
1884                m = 0,
1885                p = null,
1886                y = new G(i, e),
1887                T = -1,
1888                S = !1;
1889              for (te.lastIndex = 0, h.m3u8 = t, h.hasVariableRefs = Ht(t); null !== (s = te.exec(t)); ) {
1890                S &&
1891                  ((S = !1),
1892                  ((y = new G(i, e)).start = v),
1893                  (y.sn = f),
1894                  (y.cc = m),
1895                  (y.level = r),
1896                  c &&
1897                    ((y.initSegment = c),
1898                    (y.rawProgramDateTime = c.rawProgramDateTime),
1899                    (c.rawProgramDateTime = null)));
1900                var L = s[1];
1901                if (L) {
1902                  y.duration = parseFloat(L);
1903                  var R = (' ' + s[2]).slice(1);
1904                  (y.title = R || null), y.tagList.push(R ? ['INF', L, R] : ['INF', L]);
1905                } else if (s[3]) {
1906                  if (E(y.duration)) {
1907                    (y.start = v), u && ue(y, u, h), (y.sn = f), (y.level = r), (y.cc = m), (y.urlId = n), d.push(y);
1908                    var A = (' ' + s[3]).slice(1);
1909                    (y.relurl = Yt(h, A)), oe(y, p), (p = y), (v += y.duration), f++, (g = 0), (S = !0);
1910                  }
1911                } else if (s[4]) {
1912                  var k = (' ' + s[4]).slice(1);
1913                  p ? y.setByteRange(k, p) : y.setByteRange(k);
1914                } else if (s[5])
1915                  (y.rawProgramDateTime = (' ' + s[5]).slice(1)),
1916                    y.tagList.push(['PROGRAM-DATE-TIME', y.rawProgramDateTime]),
1917                    -1 === T && (T = d.length);
1918                else {
1919                  if (!(s = s[0].match(ee))) {
1920                    w.warn('No matches on slow regex match for level playlist!');
1921                    continue;
1922                  }
1923                  for (l = 1; l < s.length && void 0 === s[l]; l++);
1924                  var b = (' ' + s[l]).slice(1),
1925                    D = (' ' + s[l + 1]).slice(1),
1926                    I = s[l + 2] ? (' ' + s[l + 2]).slice(1) : '';
1927                  switch (b) {
1928                    case 'PLAYLIST-TYPE':
1929                      h.type = D.toUpperCase();
1930                      break;
1931                    case 'MEDIA-SEQUENCE':
1932                      f = h.startSN = parseInt(D);
1933                      break;
1934                    case 'SKIP':
1935                      var C = new P(D);
1936                      Vt(h, C, ['RECENTLY-REMOVED-DATERANGES']);
1937                      var _ = C.decimalInteger('SKIPPED-SEGMENTS');
1938                      if (E(_)) {
1939                        h.skippedSegments = _;
1940                        for (var x = _; x--; ) d.unshift(null);
1941                        f += _;
1942                      }
1943                      var M = C.enumeratedString('RECENTLY-REMOVED-DATERANGES');
1944                      M && (h.recentlyRemovedDateranges = M.split('\t'));
1945                      break;
1946                    case 'TARGETDURATION':
1947                      h.targetduration = Math.max(parseInt(D), 1);
1948                      break;
1949                    case 'VERSION':
1950                      h.version = parseInt(D);
1951                      break;
1952                    case 'EXTM3U':
1953                      break;
1954                    case 'ENDLIST':
1955                      h.live = !1;
1956                      break;
1957                    case '#':
1958                      (D || I) && y.tagList.push(I ? [D, I] : [D]);
1959                      break;
1960                    case 'DISCONTINUITY':
1961                      m++, y.tagList.push(['DIS']);
1962                      break;
1963                    case 'GAP':
1964                      (y.gap = !0), y.tagList.push([b]);
1965                      break;
1966                    case 'BITRATE':
1967                      y.tagList.push([b, D]);
1968                      break;
1969                    case 'DATERANGE':
1970                      var O = new P(D);
1971                      Vt(h, O, ['ID', 'CLASS', 'START-DATE', 'END-DATE', 'SCTE35-CMD', 'SCTE35-OUT', 'SCTE35-IN']),
1972                        Vt(h, O, O.clientAttrs);
1973                      var N = new F(O, h.dateRanges[O.ID]);
1974                      N.isValid || h.skippedSegments
1975                        ? (h.dateRanges[N.id] = N)
1976                        : w.warn('Ignoring invalid DATERANGE tag: "' + D + '"'),
1977                        y.tagList.push(['EXT-X-DATERANGE', D]);
1978                      break;
1979                    case 'DEFINE':
1980                      var U = new P(D);
1981                      Vt(h, U, ['NAME', 'VALUE', 'IMPORT', 'QUERYPARAM']), 'IMPORT' in U ? jt(h, U, a) : Wt(h, U, e);
1982                      break;
1983                    case 'DISCONTINUITY-SEQUENCE':
1984                      m = parseInt(D);
1985                      break;
1986                    case 'KEY':
1987                      var B = ie(D, e, h);
1988                      if (B.isSupported()) {
1989                        if ('NONE' === B.method) {
1990                          u = void 0;
1991                          break;
1992                        }
1993                        u || (u = {}), u[B.keyFormat] && (u = o({}, u)), (u[B.keyFormat] = B);
1994                      } else w.warn('[Keys] Ignoring invalid EXT-X-KEY tag: "' + D + '"');
1995                      break;
1996                    case 'START':
1997                      h.startTimeOffset = ne(D);
1998                      break;
1999                    case 'MAP':
2000                      var V = new P(D);
2001                      if ((Vt(h, V, ['BYTERANGE', 'URI']), y.duration)) {
2002                        var Y = new G(i, e);
2003                        le(Y, V, r, u),
2004                          (c = Y),
2005                          (y.initSegment = c),
2006                          c.rawProgramDateTime &&
2007                            !y.rawProgramDateTime &&
2008                            (y.rawProgramDateTime = c.rawProgramDateTime);
2009                      } else le(y, V, r, u), (c = y), (S = !0);
2010                      break;
2011                    case 'SERVER-CONTROL':
2012                      var W = new P(D);
2013                      (h.canBlockReload = W.bool('CAN-BLOCK-RELOAD')),
2014                        (h.canSkipUntil = W.optionalFloat('CAN-SKIP-UNTIL', 0)),
2015                        (h.canSkipDateRanges = h.canSkipUntil > 0 && W.bool('CAN-SKIP-DATERANGES')),
2016                        (h.partHoldBack = W.optionalFloat('PART-HOLD-BACK', 0)),
2017                        (h.holdBack = W.optionalFloat('HOLD-BACK', 0));
2018                      break;
2019                    case 'PART-INF':
2020                      var j = new P(D);
2021                      h.partTarget = j.decimalFloatingPoint('PART-TARGET');
2022                      break;
2023                    case 'PART':
2024                      var q = h.partList;
2025                      q || (q = h.partList = []);
2026                      var X = g > 0 ? q[q.length - 1] : void 0,
2027                        z = g++,
2028                        Q = new P(D);
2029                      Vt(h, Q, ['BYTERANGE', 'URI']);
2030                      var $ = new K(Q, y, e, z, X);
2031                      q.push($), (y.duration += $.duration);
2032                      break;
2033                    case 'PRELOAD-HINT':
2034                      var J = new P(D);
2035                      Vt(h, J, ['URI']), (h.preloadHint = J);
2036                      break;
2037                    case 'RENDITION-REPORT':
2038                      var Z = new P(D);
2039                      Vt(h, Z, ['URI']), (h.renditionReports = h.renditionReports || []), h.renditionReports.push(Z);
2040                      break;
2041                    default:
2042                      w.warn('line parsed but not handled: ' + s);
2043                  }
2044                }
2045              }
2046              p && !p.relurl
2047                ? (d.pop(), (v -= p.duration), h.partList && (h.fragmentHint = p))
2048                : h.partList && (oe(y, p), (y.cc = m), (h.fragmentHint = y), u && ue(y, u, h));
2049              var tt = d.length,
2050                et = d[0],
2051                rt = d[tt - 1];
2052              if ((v += h.skippedSegments * h.targetduration) > 0 && tt && rt) {
2053                h.averagetargetduration = v / tt;
2054                var it = rt.sn;
2055                (h.endSN = 'initSegment' !== it ? it : 0), h.live || (rt.endList = !0), et && (h.startCC = et.cc);
2056              } else (h.endSN = 0), (h.startCC = 0);
2057              return (
2058                h.fragmentHint && (v += h.fragmentHint.duration),
2059                (h.totalduration = v),
2060                (h.endCC = m),
2061                T > 0 &&
2062                  (function (t, e) {
2063                    for (var r = t[e], i = e; i--; ) {
2064                      var n = t[i];
2065                      if (!n) return;
2066                      (n.programDateTime = r.programDateTime - 1e3 * n.duration), (r = n);
2067                    }
2068                  })(d, T),
2069                h
2070              );
2071            }),
2072            t
2073          );
2074        })();
2075      function ie(t, e, r) {
2076        var i,
2077          n,
2078          a = new P(t);
2079        Vt(r, a, ['KEYFORMAT', 'KEYFORMATVERSIONS', 'URI', 'IV', 'URI']);
2080        var s = null != (i = a.METHOD) ? i : '',
2081          o = a.URI,
2082          l = a.hexadecimalInteger('IV'),
2083          u = a.KEYFORMATVERSIONS,
2084          h = null != (n = a.KEYFORMAT) ? n : 'identity';
2085        o && a.IV && !l && w.error('Invalid IV: ' + a.IV);
2086        var d = o ? re.resolve(o, e) : '',
2087          c = (u || '1').split('/').map(Number).filter(Number.isFinite);
2088        return new Gt(s, d, h, c, l);
2089      }
2090      function ne(t) {
2091        var e = new P(t).decimalFloatingPoint('TIME-OFFSET');
2092        return E(e) ? e : null;
2093      }
2094      function ae(t, e) {
2095        ['video', 'audio', 'text'].forEach(function (r) {
2096          var i = t.filter(function (t) {
2097            return (function (t, e) {
2098              var r = Xt[e];
2099              return !!r && !0 === r[t.slice(0, 4)];
2100            })(t, r);
2101          });
2102          if (i.length) {
2103            var n = i.filter(function (t) {
2104              return 0 === t.lastIndexOf('avc1', 0) || 0 === t.lastIndexOf('mp4a', 0);
2105            });
2106            (e[r + 'Codec'] = n.length > 0 ? n[0] : i[0]),
2107              (t = t.filter(function (t) {
2108                return -1 === i.indexOf(t);
2109              }));
2110          }
2111        }),
2112          (e.unknownCodecs = t);
2113      }
2114      function se(t, e, r) {
2115        var i = e[r];
2116        i && (t[r] = i);
2117      }
2118      function oe(t, e) {
2119        t.rawProgramDateTime
2120          ? (t.programDateTime = Date.parse(t.rawProgramDateTime))
2121          : null != e && e.programDateTime && (t.programDateTime = e.endProgramDateTime),
2122          E(t.programDateTime) || ((t.programDateTime = null), (t.rawProgramDateTime = null));
2123      }
2124      function le(t, e, r, i) {
2125        (t.relurl = e.URI),
2126          e.BYTERANGE && t.setByteRange(e.BYTERANGE),
2127          (t.level = r),
2128          (t.sn = 'initSegment'),
2129          i && (t.levelkeys = i),
2130          (t.initSegment = null);
2131      }
2132      function ue(t, e, r) {
2133        t.levelkeys = e;
2134        var i = r.encryptedFragments;
2135        (i.length && i[i.length - 1].levelkeys === e) ||
2136          !Object.keys(e).some(function (t) {
2137            return e[t].isCommonEncryption;
2138          }) ||
2139          i.push(t);
2140      }
2141      var he = 'manifest',
2142        de = 'level',
2143        ce = 'audioTrack',
2144        fe = 'subtitleTrack',
2145        ge = 'main',
2146        ve = 'audio',
2147        me = 'subtitle';
2148      function pe(t) {
2149        switch (t.type) {
2150          case ce:
2151            return ve;
2152          case fe:
2153            return me;
2154          default:
2155            return ge;
2156        }
2157      }
2158      function ye(t, e) {
2159        var r = t.url;
2160        return (void 0 !== r && 0 !== r.indexOf('data:')) || (r = e.url), r;
2161      }
2162      var Te = (function () {
2163        function t(t) {
2164          (this.hls = void 0),
2165            (this.loaders = Object.create(null)),
2166            (this.variableList = null),
2167            (this.hls = t),
2168            this.registerListeners();
2169        }
2170        var e = t.prototype;
2171        return (
2172          (e.startLoad = function (t) {}),
2173          (e.stopLoad = function () {
2174            this.destroyInternalLoaders();
2175          }),
2176          (e.registerListeners = function () {
2177            var t = this.hls;
2178            t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
2179              t.on(S.LEVEL_LOADING, this.onLevelLoading, this),
2180              t.on(S.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this),
2181              t.on(S.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
2182          }),
2183          (e.unregisterListeners = function () {
2184            var t = this.hls;
2185            t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
2186              t.off(S.LEVEL_LOADING, this.onLevelLoading, this),
2187              t.off(S.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this),
2188              t.off(S.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
2189          }),
2190          (e.createInternalLoader = function (t) {
2191            var e = this.hls.config,
2192              r = e.pLoader,
2193              i = e.loader,
2194              n = new (r || i)(e);
2195            return (this.loaders[t.type] = n), n;
2196          }),
2197          (e.getInternalLoader = function (t) {
2198            return this.loaders[t.type];
2199          }),
2200          (e.resetInternalLoader = function (t) {
2201            this.loaders[t] && delete this.loaders[t];
2202          }),
2203          (e.destroyInternalLoaders = function () {
2204            for (var t in this.loaders) {
2205              var e = this.loaders[t];
2206              e && e.destroy(), this.resetInternalLoader(t);
2207            }
2208          }),
2209          (e.destroy = function () {
2210            (this.variableList = null), this.unregisterListeners(), this.destroyInternalLoaders();
2211          }),
2212          (e.onManifestLoading = function (t, e) {
2213            var r = e.url;
2214            (this.variableList = null),
2215              this.load({ id: null, level: 0, responseType: 'text', type: he, url: r, deliveryDirectives: null });
2216          }),
2217          (e.onLevelLoading = function (t, e) {
2218            var r = e.id,
2219              i = e.level,
2220              n = e.url,
2221              a = e.deliveryDirectives;
2222            this.load({ id: r, level: i, responseType: 'text', type: de, url: n, deliveryDirectives: a });
2223          }),
2224          (e.onAudioTrackLoading = function (t, e) {
2225            var r = e.id,
2226              i = e.groupId,
2227              n = e.url,
2228              a = e.deliveryDirectives;
2229            this.load({
2230              id: r,
2231              groupId: i,
2232              level: null,
2233              responseType: 'text',
2234              type: ce,
2235              url: n,
2236              deliveryDirectives: a,
2237            });
2238          }),
2239          (e.onSubtitleTrackLoading = function (t, e) {
2240            var r = e.id,
2241              i = e.groupId,
2242              n = e.url,
2243              a = e.deliveryDirectives;
2244            this.load({
2245              id: r,
2246              groupId: i,
2247              level: null,
2248              responseType: 'text',
2249              type: fe,
2250              url: n,
2251              deliveryDirectives: a,
2252            });
2253          }),
2254          (e.load = function (t) {
2255            var e,
2256              r,
2257              i,
2258              n = this,
2259              a = this.hls.config,
2260              s = this.getInternalLoader(t);
2261            if (s) {
2262              var l = s.context;
2263              if (l && l.url === t.url) return void w.trace('[playlist-loader]: playlist request ongoing');
2264              w.log('[playlist-loader]: aborting previous loader for type: ' + t.type), s.abort();
2265            }
2266            if (
2267              ((r =
2268                t.type === he
2269                  ? a.manifestLoadPolicy.default
2270                  : o({}, a.playlistLoadPolicy.default, { timeoutRetry: null, errorRetry: null })),
2271              (s = this.createInternalLoader(t)),
2272              null != (e = t.deliveryDirectives) &&
2273                e.part &&
2274                (t.type === de && null !== t.level
2275                  ? (i = this.hls.levels[t.level].details)
2276                  : t.type === ce && null !== t.id
2277                  ? (i = this.hls.audioTracks[t.id].details)
2278                  : t.type === fe && null !== t.id && (i = this.hls.subtitleTracks[t.id].details),
2279                i))
2280            ) {
2281              var u = i.partTarget,
2282                h = i.targetduration;
2283              if (u && h) {
2284                var d = 1e3 * Math.max(3 * u, 0.8 * h);
2285                r = o({}, r, {
2286                  maxTimeToFirstByteMs: Math.min(d, r.maxTimeToFirstByteMs),
2287                  maxLoadTimeMs: Math.min(d, r.maxTimeToFirstByteMs),
2288                });
2289              }
2290            }
2291            var c = r.errorRetry || r.timeoutRetry || {},
2292              f = {
2293                loadPolicy: r,
2294                timeout: r.maxLoadTimeMs,
2295                maxRetry: c.maxNumRetry || 0,
2296                retryDelay: c.retryDelayMs || 0,
2297                maxRetryDelay: c.maxRetryDelayMs || 0,
2298              },
2299              g = {
2300                onSuccess: function (t, e, r, i) {
2301                  var a = n.getInternalLoader(r);
2302                  n.resetInternalLoader(r.type);
2303                  var s = t.data;
2304                  0 === s.indexOf('#EXTM3U')
2305                    ? ((e.parsing.start = performance.now()),
2306                      re.isMediaPlaylist(s)
2307                        ? n.handleTrackOrLevelPlaylist(t, e, r, i || null, a)
2308                        : n.handleMasterPlaylist(t, e, r, i))
2309                    : n.handleManifestParsingError(t, r, new Error('no EXTM3U delimiter'), i || null, e);
2310                },
2311                onError: function (t, e, r, i) {
2312                  n.handleNetworkError(e, r, !1, t, i);
2313                },
2314                onTimeout: function (t, e, r) {
2315                  n.handleNetworkError(e, r, !0, void 0, t);
2316                },
2317              };
2318            s.load(t, f, g);
2319          }),
2320          (e.handleMasterPlaylist = function (t, e, r, i) {
2321            var n = this.hls,
2322              a = t.data,
2323              s = ye(t, r),
2324              o = re.parseMasterPlaylist(a, s);
2325            if (o.playlistParsingError) this.handleManifestParsingError(t, r, o.playlistParsingError, i, e);
2326            else {
2327              var l = o.contentSteering,
2328                u = o.levels,
2329                h = o.sessionData,
2330                d = o.sessionKeys,
2331                c = o.startTimeOffset,
2332                f = o.variableList;
2333              this.variableList = f;
2334              var g = re.parseMasterPlaylistMedia(a, s, o),
2335                v = g.AUDIO,
2336                m = void 0 === v ? [] : v,
2337                p = g.SUBTITLES,
2338                y = g['CLOSED-CAPTIONS'];
2339              m.length &&
2340                (m.some(function (t) {
2341                  return !t.url;
2342                }) ||
2343                  !u[0].audioCodec ||
2344                  u[0].attrs.AUDIO ||
2345                  (w.log(
2346                    '[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one',
2347                  ),
2348                  m.unshift({
2349                    type: 'main',
2350                    name: 'main',
2351                    groupId: 'main',
2352                    default: !1,
2353                    autoselect: !1,
2354                    forced: !1,
2355                    id: -1,
2356                    attrs: new P({}),
2357                    bitrate: 0,
2358                    url: '',
2359                  }))),
2360                n.trigger(S.MANIFEST_LOADED, {
2361                  levels: u,
2362                  audioTracks: m,
2363                  subtitles: p,
2364                  captions: y,
2365                  contentSteering: l,
2366                  url: s,
2367                  stats: e,
2368                  networkDetails: i,
2369                  sessionData: h,
2370                  sessionKeys: d,
2371                  startTimeOffset: c,
2372                  variableList: f,
2373                });
2374            }
2375          }),
2376          (e.handleTrackOrLevelPlaylist = function (t, e, r, i, n) {
2377            var a = this.hls,
2378              s = r.id,
2379              o = r.level,
2380              l = r.type,
2381              u = ye(t, r),
2382              h = E(s) ? s : 0,
2383              d = E(o) ? o : h,
2384              c = pe(r),
2385              f = re.parseLevelPlaylist(t.data, u, d, c, h, this.variableList);
2386            if (l === he) {
2387              var g = { attrs: new P({}), bitrate: 0, details: f, name: '', url: u };
2388              a.trigger(S.MANIFEST_LOADED, {
2389                levels: [g],
2390                audioTracks: [],
2391                url: u,
2392                stats: e,
2393                networkDetails: i,
2394                sessionData: null,
2395                sessionKeys: null,
2396                contentSteering: null,
2397                startTimeOffset: null,
2398                variableList: null,
2399              });
2400            }
2401            (e.parsing.end = performance.now()), (r.levelDetails = f), this.handlePlaylistLoaded(f, t, e, r, i, n);
2402          }),
2403          (e.handleManifestParsingError = function (t, e, r, i, n) {
2404            this.hls.trigger(S.ERROR, {
2405              type: L.NETWORK_ERROR,
2406              details: R.MANIFEST_PARSING_ERROR,
2407              fatal: e.type === he,
2408              url: t.url,
2409              err: r,
2410              error: r,
2411              reason: r.message,
2412              response: t,
2413              context: e,
2414              networkDetails: i,
2415              stats: n,
2416            });
2417          }),
2418          (e.handleNetworkError = function (t, e, r, n, a) {
2419            void 0 === r && (r = !1);
2420            var s =
2421              'A network ' +
2422              (r ? 'timeout' : 'error' + (n ? ' (status ' + n.code + ')' : '')) +
2423              ' occurred while loading ' +
2424              t.type;
2425            t.type === de
2426              ? (s += ': ' + t.level + ' id: ' + t.id)
2427              : (t.type !== ce && t.type !== fe) || (s += ' id: ' + t.id + ' group-id: "' + t.groupId + '"');
2428            var o = new Error(s);
2429            w.warn('[playlist-loader]: ' + s);
2430            var l = R.UNKNOWN,
2431              u = !1,
2432              h = this.getInternalLoader(t);
2433            switch (t.type) {
2434              case he:
2435                (l = r ? R.MANIFEST_LOAD_TIMEOUT : R.MANIFEST_LOAD_ERROR), (u = !0);
2436                break;
2437              case de:
2438                (l = r ? R.LEVEL_LOAD_TIMEOUT : R.LEVEL_LOAD_ERROR), (u = !1);
2439                break;
2440              case ce:
2441                (l = r ? R.AUDIO_TRACK_LOAD_TIMEOUT : R.AUDIO_TRACK_LOAD_ERROR), (u = !1);
2442                break;
2443              case fe:
2444                (l = r ? R.SUBTITLE_TRACK_LOAD_TIMEOUT : R.SUBTITLE_LOAD_ERROR), (u = !1);
2445            }
2446            h && this.resetInternalLoader(t.type);
2447            var d = {
2448              type: L.NETWORK_ERROR,
2449              details: l,
2450              fatal: u,
2451              url: t.url,
2452              loader: h,
2453              context: t,
2454              error: o,
2455              networkDetails: e,
2456              stats: a,
2457            };
2458            if (n) {
2459              var c = (null == e ? void 0 : e.url) || t.url;
2460              d.response = i({ url: c, data: void 0 }, n);
2461            }
2462            this.hls.trigger(S.ERROR, d);
2463          }),
2464          (e.handlePlaylistLoaded = function (t, e, r, i, n, a) {
2465            var s = this.hls,
2466              o = i.type,
2467              l = i.level,
2468              u = i.id,
2469              h = i.groupId,
2470              d = i.deliveryDirectives,
2471              c = ye(e, i),
2472              f = pe(i),
2473              g = 'number' == typeof i.level && f === ge ? l : void 0;
2474            if (t.fragments.length) {
2475              t.targetduration || (t.playlistParsingError = new Error('Missing Target Duration'));
2476              var v = t.playlistParsingError;
2477              if (v)
2478                s.trigger(S.ERROR, {
2479                  type: L.NETWORK_ERROR,
2480                  details: R.LEVEL_PARSING_ERROR,
2481                  fatal: !1,
2482                  url: c,
2483                  error: v,
2484                  reason: v.message,
2485                  response: e,
2486                  context: i,
2487                  level: g,
2488                  parent: f,
2489                  networkDetails: n,
2490                  stats: r,
2491                });
2492              else
2493                switch (
2494                  (t.live &&
2495                    a &&
2496                    (a.getCacheAge && (t.ageHeader = a.getCacheAge() || 0),
2497                    (a.getCacheAge && !isNaN(t.ageHeader)) || (t.ageHeader = 0)),
2498                  o)
2499                ) {
2500                  case he:
2501                  case de:
2502                    s.trigger(S.LEVEL_LOADED, {
2503                      details: t,
2504                      level: g || 0,
2505                      id: u || 0,
2506                      stats: r,
2507                      networkDetails: n,
2508                      deliveryDirectives: d,
2509                    });
2510                    break;
2511                  case ce:
2512                    s.trigger(S.AUDIO_TRACK_LOADED, {
2513                      details: t,
2514                      id: u || 0,
2515                      groupId: h || '',
2516                      stats: r,
2517                      networkDetails: n,
2518                      deliveryDirectives: d,
2519                    });
2520                    break;
2521                  case fe:
2522                    s.trigger(S.SUBTITLE_TRACK_LOADED, {
2523                      details: t,
2524                      id: u || 0,
2525                      groupId: h || '',
2526                      stats: r,
2527                      networkDetails: n,
2528                      deliveryDirectives: d,
2529                    });
2530                }
2531            } else {
2532              var m = new Error('No Segments found in Playlist');
2533              s.trigger(S.ERROR, {
2534                type: L.NETWORK_ERROR,
2535                details: R.LEVEL_EMPTY_ERROR,
2536                fatal: !1,
2537                url: c,
2538                error: m,
2539                reason: m.message,
2540                response: e,
2541                context: i,
2542                level: g,
2543                parent: f,
2544                networkDetails: n,
2545                stats: r,
2546              });
2547            }
2548          }),
2549          t
2550        );
2551      })();
2552      function Ee(t, e) {
2553        var r;
2554        try {
2555          r = new Event('addtrack');
2556        } catch (t) {
2557          (r = document.createEvent('Event')).initEvent('addtrack', !1, !1);
2558        }
2559        (r.track = t), e.dispatchEvent(r);
2560      }
2561      function Se(t, e) {
2562        var r = t.mode;
2563        if (('disabled' === r && (t.mode = 'hidden'), t.cues && !t.cues.getCueById(e.id)))
2564          try {
2565            if ((t.addCue(e), !t.cues.getCueById(e.id))) throw new Error('addCue is failed for: ' + e);
2566          } catch (r) {
2567            w.debug('[texttrack-utils]: ' + r);
2568            try {
2569              var i = new self.TextTrackCue(e.startTime, e.endTime, e.text);
2570              (i.id = e.id), t.addCue(i);
2571            } catch (t) {
2572              w.debug('[texttrack-utils]: Legacy TextTrackCue fallback failed: ' + t);
2573            }
2574          }
2575        'disabled' === r && (t.mode = r);
2576      }
2577      function Le(t) {
2578        var e = t.mode;
2579        if (('disabled' === e && (t.mode = 'hidden'), t.cues))
2580          for (var r = t.cues.length; r--; ) t.removeCue(t.cues[r]);
2581        'disabled' === e && (t.mode = e);
2582      }
2583      function Re(t, e, r, i) {
2584        var n = t.mode;
2585        if (('disabled' === n && (t.mode = 'hidden'), t.cues && t.cues.length > 0))
2586          for (
2587            var a = (function (t, e, r) {
2588                var i = [],
2589                  n = (function (t, e) {
2590                    if (e < t[0].startTime) return 0;
2591                    var r = t.length - 1;
2592                    if (e > t[r].endTime) return -1;
2593                    for (var i = 0, n = r; i <= n; ) {
2594                      var a = Math.floor((n + i) / 2);
2595                      if (e < t[a].startTime) n = a - 1;
2596                      else {
2597                        if (!(e > t[a].startTime && i < r)) return a;
2598                        i = a + 1;
2599                      }
2600                    }
2601                    return t[i].startTime - e < e - t[n].startTime ? i : n;
2602                  })(t, e);
2603                if (n > -1)
2604                  for (var a = n, s = t.length; a < s; a++) {
2605                    var o = t[a];
2606                    if (o.startTime >= e && o.endTime <= r) i.push(o);
2607                    else if (o.startTime > r) return i;
2608                  }
2609                return i;
2610              })(t.cues, e, r),
2611              s = 0;
2612            s < a.length;
2613            s++
2614          )
2615            (i && !i(a[s])) || t.removeCue(a[s]);
2616        'disabled' === n && (t.mode = n);
2617      }
2618      var Ae = 'org.id3',
2619        ke = 'com.apple.quicktime.HLS',
2620        be = 'https://aomedia.org/emsg/ID3';
2621      function De() {
2622        if ('undefined' != typeof self) return self.WebKitDataCue || self.VTTCue || self.TextTrackCue;
2623      }
2624      var Ie = (function () {
2625        var t = De();
2626        try {
2627          new t(0, Number.POSITIVE_INFINITY, '');
2628        } catch (t) {
2629          return Number.MAX_VALUE;
2630        }
2631        return Number.POSITIVE_INFINITY;
2632      })();
2633      function we(t, e) {
2634        return t.getTime() / 1e3 - e;
2635      }
2636      var Ce = (function () {
2637          function t(t) {
2638            (this.hls = void 0),
2639              (this.id3Track = null),
2640              (this.media = null),
2641              (this.dateRangeCuesAppended = {}),
2642              (this.hls = t),
2643              this._registerListeners();
2644          }
2645          var e = t.prototype;
2646          return (
2647            (e.destroy = function () {
2648              this._unregisterListeners(),
2649                (this.id3Track = null),
2650                (this.media = null),
2651                (this.dateRangeCuesAppended = {}),
2652                (this.hls = null);
2653            }),
2654            (e._registerListeners = function () {
2655              var t = this.hls;
2656              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
2657                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
2658                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
2659                t.on(S.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this),
2660                t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
2661                t.on(S.LEVEL_UPDATED, this.onLevelUpdated, this);
2662            }),
2663            (e._unregisterListeners = function () {
2664              var t = this.hls;
2665              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
2666                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
2667                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
2668                t.off(S.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this),
2669                t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
2670                t.off(S.LEVEL_UPDATED, this.onLevelUpdated, this);
2671            }),
2672            (e.onMediaAttached = function (t, e) {
2673              this.media = e.media;
2674            }),
2675            (e.onMediaDetaching = function () {
2676              this.id3Track &&
2677                (Le(this.id3Track), (this.id3Track = null), (this.media = null), (this.dateRangeCuesAppended = {}));
2678            }),
2679            (e.onManifestLoading = function () {
2680              this.dateRangeCuesAppended = {};
2681            }),
2682            (e.createTrack = function (t) {
2683              var e = this.getID3Track(t.textTracks);
2684              return (e.mode = 'hidden'), e;
2685            }),
2686            (e.getID3Track = function (t) {
2687              if (this.media) {
2688                for (var e = 0; e < t.length; e++) {
2689                  var r = t[e];
2690                  if ('metadata' === r.kind && 'id3' === r.label) return Ee(r, this.media), r;
2691                }
2692                return this.media.addTextTrack('metadata', 'id3');
2693              }
2694            }),
2695            (e.onFragParsingMetadata = function (t, e) {
2696              if (this.media) {
2697                var r = this.hls.config,
2698                  i = r.enableEmsgMetadataCues,
2699                  n = r.enableID3MetadataCues;
2700                if (i || n) {
2701                  var a = e.samples;
2702                  this.id3Track || (this.id3Track = this.createTrack(this.media));
2703                  for (var s = De(), o = 0; o < a.length; o++) {
2704                    var l = a[o].type;
2705                    if ((l !== be || i) && n) {
2706                      var u = dt(a[o].data);
2707                      if (u) {
2708                        var h = a[o].pts,
2709                          d = h + a[o].duration;
2710                        d > Ie && (d = Ie), d - h <= 0 && (d = h + 0.25);
2711                        for (var c = 0; c < u.length; c++) {
2712                          var f = u[c];
2713                          if (!ut(f)) {
2714                            this.updateId3CueEnds(h, l);
2715                            var g = new s(h, d, '');
2716                            (g.value = f), l && (g.type = l), this.id3Track.addCue(g);
2717                          }
2718                        }
2719                      }
2720                    }
2721                  }
2722                }
2723              }
2724            }),
2725            (e.updateId3CueEnds = function (t, e) {
2726              var r,
2727                i = null == (r = this.id3Track) ? void 0 : r.cues;
2728              if (i)
2729                for (var n = i.length; n--; ) {
2730                  var a = i[n];
2731                  a.type === e && a.startTime < t && a.endTime === Ie && (a.endTime = t);
2732                }
2733            }),
2734            (e.onBufferFlushing = function (t, e) {
2735              var r = e.startOffset,
2736                i = e.endOffset,
2737                n = e.type,
2738                a = this.id3Track,
2739                s = this.hls;
2740              if (s) {
2741                var o = s.config,
2742                  l = o.enableEmsgMetadataCues,
2743                  u = o.enableID3MetadataCues;
2744                a &&
2745                  (l || u) &&
2746                  Re(
2747                    a,
2748                    r,
2749                    i,
2750                    'audio' === n
2751                      ? function (t) {
2752                          return t.type === Ae && u;
2753                        }
2754                      : 'video' === n
2755                      ? function (t) {
2756                          return t.type === be && l;
2757                        }
2758                      : function (t) {
2759                          return (t.type === Ae && u) || (t.type === be && l);
2760                        },
2761                  );
2762              }
2763            }),
2764            (e.onLevelUpdated = function (t, e) {
2765              var r = this,
2766                i = e.details;
2767              if (this.media && i.hasProgramDateTime && this.hls.config.enableDateRangeMetadataCues) {
2768                var n = this.dateRangeCuesAppended,
2769                  a = this.id3Track,
2770                  s = i.dateRanges,
2771                  o = Object.keys(s);
2772                if (a)
2773                  for (
2774                    var l = Object.keys(n).filter(function (t) {
2775                        return !o.includes(t);
2776                      }),
2777                      u = function () {
2778                        var t = l[h];
2779                        Object.keys(n[t].cues).forEach(function (e) {
2780                          a.removeCue(n[t].cues[e]);
2781                        }),
2782                          delete n[t];
2783                      },
2784                      h = l.length;
2785                    h--;
2786
2787                  )
2788                    u();
2789                var d = i.fragments[i.fragments.length - 1];
2790                if (0 !== o.length && E(null == d ? void 0 : d.programDateTime)) {
2791                  this.id3Track || (this.id3Track = this.createTrack(this.media));
2792                  for (
2793                    var c = d.programDateTime / 1e3 - d.start,
2794                      f = De(),
2795                      g = function () {
2796                        var t = o[v],
2797                          e = s[t],
2798                          i = n[t],
2799                          a = (null == i ? void 0 : i.cues) || {},
2800                          l = (null == i ? void 0 : i.durationKnown) || !1,
2801                          u = we(e.startDate, c),
2802                          h = Ie,
2803                          d = e.endDate;
2804                        if (d) (h = we(d, c)), (l = !0);
2805                        else if (e.endOnNext && !l) {
2806                          var g = o
2807                            .reduce(function (t, r) {
2808                              var i = s[r];
2809                              return i.class === e.class && i.id !== r && i.startDate > e.startDate && t.push(i), t;
2810                            }, [])
2811                            .sort(function (t, e) {
2812                              return t.startDate.getTime() - e.startDate.getTime();
2813                            })[0];
2814                          g && ((h = we(g.startDate, c)), (l = !0));
2815                        }
2816                        for (var m, p, y = Object.keys(e.attr), T = 0; T < y.length; T++) {
2817                          var E = y[T];
2818                          if (
2819                            'ID' !== (p = E) &&
2820                            'CLASS' !== p &&
2821                            'START-DATE' !== p &&
2822                            'DURATION' !== p &&
2823                            'END-DATE' !== p &&
2824                            'END-ON-NEXT' !== p
2825                          ) {
2826                            var S = a[E];
2827                            if (S) l && !i.durationKnown && (S.endTime = h);
2828                            else {
2829                              var L = e.attr[E];
2830                              (S = new f(u, h, '')),
2831                                x(E) &&
2832                                  ((m = L),
2833                                  (L = Uint8Array.from(
2834                                    m
2835                                      .replace(/^0x/, '')
2836                                      .replace(/([\da-fA-F]{2}) ?/g, '0x$1 ')
2837                                      .replace(/ +$/, '')
2838                                      .split(' '),
2839                                  ).buffer)),
2840                                (S.value = { key: E, data: L }),
2841                                (S.type = ke),
2842                                (S.id = t),
2843                                r.id3Track.addCue(S),
2844                                (a[E] = S);
2845                            }
2846                          }
2847                        }
2848                        n[t] = { cues: a, dateRange: e, durationKnown: l };
2849                      },
2850                      v = 0;
2851                    v < o.length;
2852                    v++
2853                  )
2854                    g();
2855                }
2856              }
2857            }),
2858            t
2859          );
2860        })(),
2861        _e = (function () {
2862          function t(t) {
2863            var e = this;
2864            (this.hls = void 0),
2865              (this.config = void 0),
2866              (this.media = null),
2867              (this.levelDetails = null),
2868              (this.currentTime = 0),
2869              (this.stallCount = 0),
2870              (this._latency = null),
2871              (this.timeupdateHandler = function () {
2872                return e.timeupdate();
2873              }),
2874              (this.hls = t),
2875              (this.config = t.config),
2876              this.registerListeners();
2877          }
2878          var e = t.prototype;
2879          return (
2880            (e.destroy = function () {
2881              this.unregisterListeners(),
2882                this.onMediaDetaching(),
2883                (this.levelDetails = null),
2884                (this.hls = this.timeupdateHandler = null);
2885            }),
2886            (e.registerListeners = function () {
2887              this.hls.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
2888                this.hls.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
2889                this.hls.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
2890                this.hls.on(S.LEVEL_UPDATED, this.onLevelUpdated, this),
2891                this.hls.on(S.ERROR, this.onError, this);
2892            }),
2893            (e.unregisterListeners = function () {
2894              this.hls.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
2895                this.hls.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
2896                this.hls.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
2897                this.hls.off(S.LEVEL_UPDATED, this.onLevelUpdated, this),
2898                this.hls.off(S.ERROR, this.onError, this);
2899            }),
2900            (e.onMediaAttached = function (t, e) {
2901              (this.media = e.media), this.media.addEventListener('timeupdate', this.timeupdateHandler);
2902            }),
2903            (e.onMediaDetaching = function () {
2904              this.media && (this.media.removeEventListener('timeupdate', this.timeupdateHandler), (this.media = null));
2905            }),
2906            (e.onManifestLoading = function () {
2907              (this.levelDetails = null), (this._latency = null), (this.stallCount = 0);
2908            }),
2909            (e.onLevelUpdated = function (t, e) {
2910              var r = e.details;
2911              (this.levelDetails = r),
2912                r.advanced && this.timeupdate(),
2913                !r.live && this.media && this.media.removeEventListener('timeupdate', this.timeupdateHandler);
2914            }),
2915            (e.onError = function (t, e) {
2916              var r;
2917              e.details === R.BUFFER_STALLED_ERROR &&
2918                (this.stallCount++,
2919                null != (r = this.levelDetails) &&
2920                  r.live &&
2921                  w.warn('[playback-rate-controller]: Stall detected, adjusting target latency'));
2922            }),
2923            (e.timeupdate = function () {
2924              var t = this.media,
2925                e = this.levelDetails;
2926              if (t && e) {
2927                this.currentTime = t.currentTime;
2928                var r = this.computeLatency();
2929                if (null !== r) {
2930                  this._latency = r;
2931                  var i = this.config,
2932                    n = i.lowLatencyMode,
2933                    a = i.maxLiveSyncPlaybackRate;
2934                  if (n && 1 !== a) {
2935                    var s = this.targetLatency;
2936                    if (null !== s) {
2937                      var o = r - s,
2938                        l = o < Math.min(this.maxLatency, s + e.targetduration);
2939                      if (e.live && l && o > 0.05 && this.forwardBufferLength > 1) {
2940                        var u = Math.min(2, Math.max(1, a)),
2941                          h = Math.round((2 / (1 + Math.exp(-0.75 * o - this.edgeStalled))) * 20) / 20;
2942                        t.playbackRate = Math.min(u, Math.max(1, h));
2943                      } else 1 !== t.playbackRate && 0 !== t.playbackRate && (t.playbackRate = 1);
2944                    }
2945                  }
2946                }
2947              }
2948            }),
2949            (e.estimateLiveEdge = function () {
2950              var t = this.levelDetails;
2951              return null === t ? null : t.edge + t.age;
2952            }),
2953            (e.computeLatency = function () {
2954              var t = this.estimateLiveEdge();
2955              return null === t ? null : t - this.currentTime;
2956            }),
2957            a(t, [
2958              {
2959                key: 'latency',
2960                get: function () {
2961                  return this._latency || 0;
2962                },
2963              },
2964              {
2965                key: 'maxLatency',
2966                get: function () {
2967                  var t = this.config,
2968                    e = this.levelDetails;
2969                  return void 0 !== t.liveMaxLatencyDuration
2970                    ? t.liveMaxLatencyDuration
2971                    : e
2972                    ? t.liveMaxLatencyDurationCount * e.targetduration
2973                    : 0;
2974                },
2975              },
2976              {
2977                key: 'targetLatency',
2978                get: function () {
2979                  var t = this.levelDetails;
2980                  if (null === t) return null;
2981                  var e = t.holdBack,
2982                    r = t.partHoldBack,
2983                    i = t.targetduration,
2984                    n = this.config,
2985                    a = n.liveSyncDuration,
2986                    s = n.liveSyncDurationCount,
2987                    o = n.lowLatencyMode,
2988                    l = this.hls.userConfig,
2989                    u = (o && r) || e;
2990                  (l.liveSyncDuration || l.liveSyncDurationCount || 0 === u) && (u = void 0 !== a ? a : s * i);
2991                  var h = i;
2992                  return u + Math.min(1 * this.stallCount, h);
2993                },
2994              },
2995              {
2996                key: 'liveSyncPosition',
2997                get: function () {
2998                  var t = this.estimateLiveEdge(),
2999                    e = this.targetLatency,
3000                    r = this.levelDetails;
3001                  if (null === t || null === e || null === r) return null;
3002                  var i = r.edge,
3003                    n = t - e - this.edgeStalled,
3004                    a = i - r.totalduration,
3005                    s = i - ((this.config.lowLatencyMode && r.partTarget) || r.targetduration);
3006                  return Math.min(Math.max(a, n), s);
3007                },
3008              },
3009              {
3010                key: 'drift',
3011                get: function () {
3012                  var t = this.levelDetails;
3013                  return null === t ? 1 : t.drift;
3014                },
3015              },
3016              {
3017                key: 'edgeStalled',
3018                get: function () {
3019                  var t = this.levelDetails;
3020                  if (null === t) return 0;
3021                  var e = 3 * ((this.config.lowLatencyMode && t.partTarget) || t.targetduration);
3022                  return Math.max(t.age - e, 0);
3023                },
3024              },
3025              {
3026                key: 'forwardBufferLength',
3027                get: function () {
3028                  var t = this.media,
3029                    e = this.levelDetails;
3030                  if (!t || !e) return 0;
3031                  var r = t.buffered.length;
3032                  return (r ? t.buffered.end(r - 1) : e.edge) - this.currentTime;
3033                },
3034              },
3035            ]),
3036            t
3037          );
3038        })(),
3039        Pe = ['NONE', 'TYPE-0', 'TYPE-1', null],
3040        xe = '',
3041        Fe = 'YES',
3042        Me = 'v2',
3043        Oe = (function () {
3044          function t(t, e, r) {
3045            (this.msn = void 0),
3046              (this.part = void 0),
3047              (this.skip = void 0),
3048              (this.msn = t),
3049              (this.part = e),
3050              (this.skip = r);
3051          }
3052          return (
3053            (t.prototype.addDirectives = function (t) {
3054              var e = new self.URL(t);
3055              return (
3056                void 0 !== this.msn && e.searchParams.set('_HLS_msn', this.msn.toString()),
3057                void 0 !== this.part && e.searchParams.set('_HLS_part', this.part.toString()),
3058                this.skip && e.searchParams.set('_HLS_skip', this.skip),
3059                e.href
3060              );
3061            }),
3062            t
3063          );
3064        })(),
3065        Ne = (function () {
3066          function t(t) {
3067            (this._attrs = void 0),
3068              (this.audioCodec = void 0),
3069              (this.bitrate = void 0),
3070              (this.codecSet = void 0),
3071              (this.height = void 0),
3072              (this.id = void 0),
3073              (this.name = void 0),
3074              (this.videoCodec = void 0),
3075              (this.width = void 0),
3076              (this.unknownCodecs = void 0),
3077              (this.audioGroupIds = void 0),
3078              (this.details = void 0),
3079              (this.fragmentError = 0),
3080              (this.loadError = 0),
3081              (this.loaded = void 0),
3082              (this.realBitrate = 0),
3083              (this.textGroupIds = void 0),
3084              (this.url = void 0),
3085              (this._urlId = 0),
3086              (this.url = [t.url]),
3087              (this._attrs = [t.attrs]),
3088              (this.bitrate = t.bitrate),
3089              t.details && (this.details = t.details),
3090              (this.id = t.id || 0),
3091              (this.name = t.name),
3092              (this.width = t.width || 0),
3093              (this.height = t.height || 0),
3094              (this.audioCodec = t.audioCodec),
3095              (this.videoCodec = t.videoCodec),
3096              (this.unknownCodecs = t.unknownCodecs),
3097              (this.codecSet = [t.videoCodec, t.audioCodec]
3098                .filter(function (t) {
3099                  return t;
3100                })
3101                .join(',')
3102                .replace(/\.[^.,]+/g, ''));
3103          }
3104          return (
3105            (t.prototype.addFallback = function (t) {
3106              this.url.push(t.url), this._attrs.push(t.attrs);
3107            }),
3108            a(t, [
3109              {
3110                key: 'maxBitrate',
3111                get: function () {
3112                  return Math.max(this.realBitrate, this.bitrate);
3113                },
3114              },
3115              {
3116                key: 'attrs',
3117                get: function () {
3118                  return this._attrs[this._urlId];
3119                },
3120              },
3121              {
3122                key: 'pathwayId',
3123                get: function () {
3124                  return this.attrs['PATHWAY-ID'] || '.';
3125                },
3126              },
3127              {
3128                key: 'uri',
3129                get: function () {
3130                  return this.url[this._urlId] || '';
3131                },
3132              },
3133              {
3134                key: 'urlId',
3135                get: function () {
3136                  return this._urlId;
3137                },
3138                set: function (t) {
3139                  var e = t % this.url.length;
3140                  this._urlId !== e &&
3141                    ((this.fragmentError = 0), (this.loadError = 0), (this.details = void 0), (this._urlId = e));
3142                },
3143              },
3144              {
3145                key: 'audioGroupId',
3146                get: function () {
3147                  var t;
3148                  return null == (t = this.audioGroupIds) ? void 0 : t[this.urlId];
3149                },
3150              },
3151              {
3152                key: 'textGroupId',
3153                get: function () {
3154                  var t;
3155                  return null == (t = this.textGroupIds) ? void 0 : t[this.urlId];
3156                },
3157              },
3158            ]),
3159            t
3160          );
3161        })();
3162      function Ue(t, e) {
3163        var r = e.startPTS;
3164        if (E(r)) {
3165          var i,
3166            n = 0;
3167          e.sn > t.sn ? ((n = r - t.start), (i = t)) : ((n = t.start - r), (i = e)),
3168            i.duration !== n && (i.duration = n);
3169        } else
3170          e.sn > t.sn
3171            ? t.cc === e.cc && t.minEndPTS
3172              ? (e.start = t.start + (t.minEndPTS - t.start))
3173              : (e.start = t.start + t.duration)
3174            : (e.start = Math.max(t.start - e.duration, 0));
3175      }
3176      function Be(t, e, r, i, n, a) {
3177        i - r <= 0 &&
3178          (w.warn('Fragment should have a positive duration', e), (i = r + e.duration), (a = n + e.duration));
3179        var s = r,
3180          o = i,
3181          l = e.startPTS,
3182          u = e.endPTS;
3183        if (E(l)) {
3184          var h = Math.abs(l - r);
3185          E(e.deltaPTS) ? (e.deltaPTS = Math.max(h, e.deltaPTS)) : (e.deltaPTS = h),
3186            (s = Math.max(r, l)),
3187            (r = Math.min(r, l)),
3188            (n = Math.min(n, e.startDTS)),
3189            (o = Math.min(i, u)),
3190            (i = Math.max(i, u)),
3191            (a = Math.max(a, e.endDTS));
3192        }
3193        var d = r - e.start;
3194        0 !== e.start && (e.start = r),
3195          (e.duration = i - e.start),
3196          (e.startPTS = r),
3197          (e.maxStartPTS = s),
3198          (e.startDTS = n),
3199          (e.endPTS = i),
3200          (e.minEndPTS = o),
3201          (e.endDTS = a);
3202        var c,
3203          f = e.sn;
3204        if (!t || f < t.startSN || f > t.endSN) return 0;
3205        var g = f - t.startSN,
3206          v = t.fragments;
3207        for (v[g] = e, c = g; c > 0; c--) Ue(v[c], v[c - 1]);
3208        for (c = g; c < v.length - 1; c++) Ue(v[c], v[c + 1]);
3209        return t.fragmentHint && Ue(v[v.length - 1], t.fragmentHint), (t.PTSKnown = t.alignedSliding = !0), d;
3210      }
3211      function Ge(t, e) {
3212        for (var r = null, i = t.fragments, n = i.length - 1; n >= 0; n--) {
3213          var a = i[n].initSegment;
3214          if (a) {
3215            r = a;
3216            break;
3217          }
3218        }
3219        t.fragmentHint && delete t.fragmentHint.endPTS;
3220        var s,
3221          l,
3222          u,
3223          h,
3224          d,
3225          c = 0;
3226        if (
3227          ((function (t, e, r) {
3228            for (
3229              var i = e.skippedSegments,
3230                n = Math.max(t.startSN, e.startSN) - e.startSN,
3231                a = (t.fragmentHint ? 1 : 0) + (i ? e.endSN : Math.min(t.endSN, e.endSN)) - e.startSN,
3232                s = e.startSN - t.startSN,
3233                o = e.fragmentHint ? e.fragments.concat(e.fragmentHint) : e.fragments,
3234                l = t.fragmentHint ? t.fragments.concat(t.fragmentHint) : t.fragments,
3235                u = n;
3236              u <= a;
3237              u++
3238            ) {
3239              var h = l[s + u],
3240                d = o[u];
3241              i && !d && u < i && (d = e.fragments[u] = h), h && d && r(h, d);
3242            }
3243          })(t, e, function (t, i) {
3244            t.relurl && (c = t.cc - i.cc),
3245              E(t.startPTS) &&
3246                E(t.endPTS) &&
3247                ((i.start = i.startPTS = t.startPTS),
3248                (i.startDTS = t.startDTS),
3249                (i.maxStartPTS = t.maxStartPTS),
3250                (i.endPTS = t.endPTS),
3251                (i.endDTS = t.endDTS),
3252                (i.minEndPTS = t.minEndPTS),
3253                (i.duration = t.endPTS - t.startPTS),
3254                i.duration && (s = i),
3255                (e.PTSKnown = e.alignedSliding = !0)),
3256              (i.elementaryStreams = t.elementaryStreams),
3257              (i.loader = t.loader),
3258              (i.stats = t.stats),
3259              (i.urlId = t.urlId),
3260              t.initSegment && ((i.initSegment = t.initSegment), (r = t.initSegment));
3261          }),
3262          r &&
3263            (e.fragmentHint ? e.fragments.concat(e.fragmentHint) : e.fragments).forEac
3263h(function (t) {
3264              var e;
3265              (t.initSegment && t.initSegment.relurl !== (null == (e = r) ? void 0 : e.relurl)) || (t.initSegment = r);
3266            }),
3267          e.skippedSegments)
3268        )
3269          if (
3270            ((e.deltaUpdateFailed = e.fragments.some(function (t) {
3271              return !t;
3272            })),
3273            e.deltaUpdateFailed)
3274          ) {
3275            w.warn('[level-helper] Previous playlist missing segments skipped in delta playlist');
3276            for (var f = e.skippedSegments; f--; ) e.fragments.shift();
3277            (e.startSN = e.fragments[0].sn), (e.startCC = e.fragments[0].cc);
3278          } else
3279            e.canSkipDateRanges &&
3280              (e.dateRanges =
3281                ((l = t.dateRanges),
3282                (u = e.dateRanges),
3283                (h = e.recentlyRemovedDateranges),
3284                (d = o({}, l)),
3285                h &&
3286                  h.forEach(function (t) {
3287                    delete d[t];
3288                  }),
3289                Object.keys(u).forEach(function (t) {
3290                  var e = new F(u[t].attr, d[t]);
3291                  e.isValid
3292                    ? (d[t] = e)
3293                    : w.warn(
3294                        'Ignoring invalid Playlist Delta Update DATERANGE tag: "' + JSON.stringify(u[t].attr) + '"',
3295                      );
3296                }),
3297                d));
3298        var g = e.fragments;
3299        if (c) {
3300          w.warn('discontinuity sliding from playlist, take drift into account');
3301          for (var v = 0; v < g.length; v++) g[v].cc += c;
3302        }
3303        e.skippedSegments && (e.startCC = e.fragments[0].cc),
3304          (function (t, e, r) {
3305            if (t && e)
3306              for (var i = 0, n = 0, a = t.length; n <= a; n++) {
3307                var s = t[n],
3308                  o = e[n + i];
3309                s && o && s.index === o.index && s.fragment.sn === o.fragment.sn ? r(s, o) : i--;
3310              }
3311          })(t.partList, e.partList, function (t, e) {
3312            (e.elementaryStreams = t.elementaryStreams), (e.stats = t.stats);
3313          }),
3314          s ? Be(e, s, s.startPTS, s.endPTS, s.startDTS, s.endDTS) : Ke(t, e),
3315          g.length && (e.totalduration = e.edge - g[0].start),
3316          (e.driftStartTime = t.driftStartTime),
3317          (e.driftStart = t.driftStart);
3318        var m = e.advancedDateTime;
3319        if (e.advanced && m) {
3320          var p = e.edge;
3321          e.driftStart || ((e.driftStartTime = m), (e.driftStart = p)), (e.driftEndTime = m), (e.driftEnd = p);
3322        } else (e.driftEndTime = t.driftEndTime), (e.driftEnd = t.driftEnd), (e.advancedDateTime = t.advancedDateTime);
3323      }
3324      function Ke(t, e) {
3325        var r = e.startSN + e.skippedSegments - t.startSN,
3326          i = t.fragments;
3327        r < 0 || r >= i.length || He(e, i[r].start);
3328      }
3329      function He(t, e) {
3330        if (e) {
3331          for (var r = t.fragments, i = t.skippedSegments; i < r.length; i++) r[i].start += e;
3332          t.fragmentHint && (t.fragmentHint.start += e);
3333        }
3334      }
3335      function Ve(t, e, r) {
3336        var i;
3337        return null != t && t.details ? Ye(null == (i = t.details) ? void 0 : i.partList, e, r) : null;
3338      }
3339      function Ye(t, e, r) {
3340        if (t)
3341          for (var i = t.length; i--; ) {
3342            var n = t[i];
3343            if (n.index === r && n.fragment.sn === e) return n;
3344          }
3345        return null;
3346      }
3347      function We(t) {
3348        switch (t.details) {
3349          case R.FRAG_LOAD_TIMEOUT:
3350          case R.KEY_LOAD_TIMEOUT:
3351          case R.LEVEL_LOAD_TIMEOUT:
3352          case R.MANIFEST_LOAD_TIMEOUT:
3353            return !0;
3354        }
3355        return !1;
3356      }
3357      function je(t, e) {
3358        var r = We(e);
3359        return t.default[(r ? 'timeout' : 'error') + 'Retry'];
3360      }
3361      function qe(t, e) {
3362        var r = 'linear' === t.backoff ? 1 : Math.pow(2, e);
3363        return Math.min(r * t.retryDelayMs, t.maxRetryDelayMs);
3364      }
3365      function Xe(t) {
3366        return i(i({}, t), { errorRetry: null, timeoutRetry: null });
3367      }
3368      function ze(t, e, r, i) {
3369        return (
3370          !!t &&
3371          e < t.maxNumRetry &&
3372          ((function (t) {
3373            return (0 === t && !1 === navigator.onLine) || (!!t && (t < 400 || t > 499));
3374          })(i) ||
3375            !!r)
3376        );
3377      }
3378      var Qe = function (t, e) {
3379        for (var r = 0, i = t.length - 1, n = null, a = null; r <= i; ) {
3380          var s = e((a = t[(n = ((r + i) / 2) | 0)]));
3381          if (s > 0) r = n + 1;
3382          else {
3383            if (!(s < 0)) return a;
3384            i = n - 1;
3385          }
3386        }
3387        return null;
3388      };
3389      function $e(t, e, r, i) {
3390        void 0 === r && (r = 0), void 0 === i && (i = 0);
3391        var n = null;
3392        if (
3393          (t ? (n = e[t.sn - e[0].sn + 1] || null) : 0 === r && 0 === e[0].start && (n = e[0]), n && 0 === Je(r, i, n))
3394        )
3395          return n;
3396        var a = Qe(e, Je.bind(null, r, i));
3397        return !a || (a === t && n) ? n : a;
3398      }
3399      function Je(t, e, r) {
3400        if ((void 0 === t && (t = 0), void 0 === e && (e = 0), r.start <= t && r.start + r.duration > t)) return 0;
3401        var i = Math.min(e, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
3402        return r.start + r.duration - i <= t ? 1 : r.start - i > t && r.start ? -1 : 0;
3403      }
3404      function Ze(t, e, r) {
3405        var i = 1e3 * Math.min(e, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
3406        return (r.endProgramDateTime || 0) - i > t;
3407      }
3408      var tr,
3409        er = 3e5,
3410        rr = 0,
3411        ir = 2,
3412        nr = 5,
3413        ar = 0,
3414        sr = 1,
3415        or = 2,
3416        lr = (function () {
3417          function t(t) {
3418            (this.hls = void 0),
3419              (this.playlistError = 0),
3420              (this.penalizedRenditions = {}),
3421              (this.log = void 0),
3422              (this.warn = void 0),
3423              (this.error = void 0),
3424              (this.hls = t),
3425              (this.log = w.log.bind(w, '[info]:')),
3426              (this.warn = w.warn.bind(w, '[warning]:')),
3427              (this.error = w.error.bind(w, '[error]:')),
3428              this.registerListeners();
3429          }
3430          var e = t.prototype;
3431          return (
3432            (e.registerListeners = function () {
3433              var t = this.hls;
3434              t.on(S.ERROR, this.onError, this),
3435                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
3436                t.on(S.LEVEL_UPDATED, this.onLevelUpdated, this);
3437            }),
3438            (e.unregisterListeners = function () {
3439              var t = this.hls;
3440              t &&
3441                (t.off(S.ERROR, this.onError, this),
3442                t.off(S.ERROR, this.onErrorOut, this),
3443                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
3444                t.off(S.LEVEL_UPDATED, this.onLevelUpdated, this));
3445            }),
3446            (e.destroy = function () {
3447              this.unregisterListeners(), (this.hls = null), (this.penalizedRenditions = {});
3448            }),
3449            (e.startLoad = function (t) {
3450              this.playlistError = 0;
3451            }),
3452            (e.stopLoad = function () {}),
3453            (e.getVariantLevelIndex = function (t) {
3454              return (null == t ? void 0 : t.type) === ge ? t.level : this.hls.loadLevel;
3455            }),
3456            (e.onManifestLoading = function () {
3457              (this.playlistError = 0), (this.penalizedRenditions = {});
3458            }),
3459            (e.onLevelUpdated = function () {
3460              this.playlistError = 0;
3461            }),
3462            (e.onError = function (t, e) {
3463              var r, i;
3464              if (!e.fatal) {
3465                var n = this.hls,
3466                  a = e.context;
3467                switch (e.details) {
3468                  case R.FRAG_LOAD_ERROR:
3469                  case R.FRAG_LOAD_TIMEOUT:
3470                  case R.KEY_LOAD_ERROR:
3471                  case R.KEY_LOAD_TIMEOUT:
3472                    return void (e.errorAction = this.getFragRetryOrSwitchAction(e));
3473                  case R.FRAG_PARSING_ERROR:
3474                    if (null != (r = e.frag) && r.gap) return void (e.errorAction = { action: rr, flags: ar });
3475                  case R.FRAG_GAP:
3476                  case R.FRAG_DECRYPT_ERROR:
3477                    return (e.errorAction = this.getFragRetryOrSwitchAction(e)), void (e.errorAction.action = ir);
3478                  case R.LEVEL_EMPTY_ERROR:
3479                  case R.LEVEL_PARSING_ERROR:
3480                    var s,
3481                      o,
3482                      l = e.parent === ge ? e.level : n.loadLevel;
3483                    return void (e.details === R.LEVEL_EMPTY_ERROR &&
3484                    null != (s = e.context) &&
3485                    null != (o = s.levelDetails) &&
3486                    o.live
3487                      ? (e.errorAction = this.getPlaylistRetryOrSwitchAction(e, l))
3488                      : ((e.levelRetry = !1), (e.errorAction = this.getLevelSwitchAction(e, l))));
3489                  case R.LEVEL_LOAD_ERROR:
3490                  case R.LEVEL_LOAD_TIMEOUT:
3491                    return void (
3492                      'number' == typeof (null == a ? void 0 : a.level) &&
3493                      (e.errorAction = this.getPlaylistRetryOrSwitchAction(e, a.level))
3494                    );
3495                  case R.AUDIO_TRACK_LOAD_ERROR:
3496                  case R.AUDIO_TRACK_LOAD_TIMEOUT:
3497                  case R.SUBTITLE_LOAD_ERROR:
3498                  case R.SUBTITLE_TRACK_LOAD_TIMEOUT:
3499                    if (a) {
3500                      var u = n.levels[n.loadLevel];
3501                      if (
3502                        u &&
3503                        ((a.type === ce && a.groupId === u.audioGroupId) ||
3504                          (a.type === fe && a.groupId === u.textGroupId))
3505                      )
3506                        return (
3507                          (e.errorAction = this.getPlaylistRetryOrSwitchAction(e, n.loadLevel)),
3508                          (e.errorAction.action = ir),
3509                          void (e.errorAction.flags = sr)
3510                        );
3511                    }
3512                    return;
3513                  case R.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:
3514                    var h = n.levels[n.loadLevel],
3515                      d = null == h ? void 0 : h.attrs['HDCP-LEVEL'];
3516                    return void (d && (e.errorAction = { action: ir, flags: or, hdcpLevel: d }));
3517                  case R.BUFFER_ADD_CODEC_ERROR:
3518                  case R.REMUX_ALLOC_ERROR:
3519                    return void (e.errorAction = this.getLevelSwitchAction(e, null != (i = e.level) ? i : n.loadLevel));
3520                  case R.INTERNAL_EXCEPTION:
3521                  case R.BUFFER_APPENDING_ERROR:
3522                  case R.BUFFER_APPEND_ERROR:
3523                  case R.BUFFER_FULL_ERROR:
3524                  case R.LEVEL_SWITCH_ERROR:
3525                  case R.BUFFER_STALLED_ERROR:
3526                  case R.BUFFER_SEEK_OVER_HOLE:
3527                  case R.BUFFER_NUDGE_ON_STALL:
3528                    return void (e.errorAction = { action: rr, flags: ar });
3529                }
3530                if (e.type === L.KEY_SYSTEM_ERROR) {
3531                  var c = this.getVariantLevelIndex(e.frag);
3532                  return (e.levelRetry = !1), void (e.errorAction = this.getLevelSwitchAction(e, c));
3533                }
3534              }
3535            }),
3536            (e.getPlaylistRetryOrSwitchAction = function (t, e) {
3537              var r,
3538                i = je(this.hls.config.playlistLoadPolicy, t),
3539                n = this.playlistError++,
3540                a = null == (r = t.response) ? void 0 : r.code;
3541              if (ze(i, n, We(t), a)) return { action: nr, flags: ar, retryConfig: i, retryCount: n };
3542              var s = this.getLevelSwitchAction(t, e);
3543              return i && ((s.retryConfig = i), (s.retryCount = n)), s;
3544            }),
3545            (e.getFragRetryOrSwitchAction = function (t) {
3546              var e = this.hls,
3547                r = this.getVariantLevelIndex(t.frag),
3548                i = e.levels[r],
3549                n = e.config,
3550                a = n.fragLoadPolicy,
3551                s = n.keyLoadPolicy,
3552                o = je(t.details.startsWith('key') ? s : a, t),
3553                l = e.levels.reduce(function (t, e) {
3554                  return t + e.fragmentError;
3555                }, 0);
3556              if (i) {
3557                var u;
3558                t.details !== R.FRAG_GAP && i.fragmentError++;
3559                var h = null == (u = t.response) ? void 0 : u.code;
3560                if (ze(o, l, We(t), h)) return { action: nr, flags: ar, retryConfig: o, retryCount: l };
3561              }
3562              var d = this.getLevelSwitchAction(t, r);
3563              return o && ((d.retryConfig = o), (d.retryCount = l)), d;
3564            }),
3565            (e.getLevelSwitchAction = function (t, e) {
3566              var r = this.hls;
3567              null == e && (e = r.loadLevel);
3568              var i = this.hls.levels[e];
3569              if (i && (i.loadError++, r.autoLevelEnabled)) {
3570                for (
3571                  var n,
3572                    a,
3573                    s = -1,
3574                    o = r.levels,
3575                    l = r.loadLevel,
3576                    u = r.minAutoLevel,
3577                    h = r.maxAutoLevel,
3578                    d = null == (n = t.frag) ? void 0 : n.type,
3579                    c = null != (a = t.context) ? a : {},
3580                    f = c.type,
3581                    g = c.groupId,
3582                    v = o.length;
3583                  v--;
3584
3585                ) {
3586                  var m = (v + l) % o.length;
3587                  if (m !== l && m >= u && m <= h && 0 === o[m].loadError) {
3588                    var p = o[m];
3589                    if (t.details === R.FRAG_GAP && t.frag) {
3590                      var y = o[m].details;
3591                      if (y) {
3592                        var T = $e(t.frag, y.fragments, t.frag.start);
3593                        if (null != T && T.gap) continue;
3594                      }
3595                    } else {
3596                      if ((f === ce && g === p.audioGroupId) || (f === fe && g === p.textGroupId)) continue;
3597                      if (
3598                        (d === ve && i.audioGroupId === p.audioGroupId) ||
3599                        (d === me && i.textGroupId === p.textGroupId)
3600                      )
3601                        continue;
3602                    }
3603                    s = m;
3604                    break;
3605                  }
3606                }
3607                if (s > -1 && r.loadLevel !== s)
3608                  return (t.levelRetry = !0), (this.playlistError = 0), { action: ir, flags: ar, nextAutoLevel: s };
3609              }
3610              return { action: ir, flags: sr };
3611            }),
3612            (e.onErrorOut = function (t, e) {
3613              var r;
3614              switch (null == (r = e.errorAction) ? void 0 : r.action) {
3615                case rr:
3616                  break;
3617                case ir:
3618                  this.sendAlternateToPenaltyBox(e),
3619                    e.errorAction.resolved || e.details === R.FRAG_GAP || (e.fatal = !0);
3620              }
3621              e.fatal && this.hls.stopLoad();
3622            }),
3623            (e.sendAlternateToPenaltyBox = function (t) {
3624              var e = this.hls,
3625                r = t.errorAction;
3626              if (r) {
3627                var i = r.flags,
3628                  n = r.hdcpLevel,
3629                  a = r.nextAutoLevel;
3630                switch (i) {
3631                  case ar:
3632                    this.switchLevel(t, a);
3633                    break;
3634                  case sr:
3635                    r.resolved || (r.resolved = this.redundantFailover(t));
3636                    break;
3637                  case or:
3638                    n && ((e.maxHdcpLevel = Pe[Pe.indexOf(n) - 1]), (r.resolved = !0)),
3639                      this.warn('Restricting playback to HDCP-LEVEL of "' + e.maxHdcpLevel + '" or lower');
3640                }
3641                r.resolved || this.switchLevel(t, a);
3642              }
3643            }),
3644            (e.switchLevel = function (t, e) {
3645              void 0 !== e &&
3646                t.errorAction &&
3647                (this.warn('switching to level ' + e + ' after ' + t.details),
3648                (this.hls.nextAutoLevel = e),
3649                (t.errorAction.resolved = !0),
3650                (this.hls.nextLoadLevel = this.hls.nextAutoLevel));
3651            }),
3652            (e.redundantFailover = function (t) {
3653              var e = this,
3654                r = this.hls,
3655                i = this.penalizedRenditions,
3656                n = t.parent === ge ? t.level : r.loadLevel,
3657                a = r.levels[n],
3658                s = a.url.length,
3659                o = t.frag ? t.frag.urlId : a.urlId;
3660              a.urlId !== o || (t.frag && !a.details) || this.penalizeRendition(a, t);
3661              for (
3662                var l = function () {
3663                    var l = (o + u) % s,
3664                      h = i[l];
3665                    if (
3666                      !h ||
3667                      (function (t, e, r) {
3668                        if (performance.now() - t.lastErrorPerfMs > er) return !0;
3669                        var i = t.details;
3670                        if (e.details === R.FRAG_GAP && i && e.frag) {
3671                          var n = e.frag.start,
3672                            a = $e(null, i.fragments, n);
3673                          if (a && !a.gap) return !0;
3674                        }
3675                        if (r && t.errors.length < r.errors.length) {
3676                          var s = t.errors[t.errors.length - 1];
3677                          if (i && s.frag && e.frag && Math.abs(s.frag.start - e.frag.start) > 3 * i.targetduration)
3678                            return !0;
3679                        }
3680                        return !1;
3681                      })(h, t, i[o])
3682                    )
3683                      return (
3684                        e.warn(
3685                          'Switching to Redundant Stream ' +
3686                            (l + 1) +
3687                            '/' +
3688                            s +
3689                            ': "' +
3690                            a.url[l] +
3691                            '" after ' +
3692                            t.details,
3693                        ),
3694                        (e.playlistError = 0),
3695                        r.levels.forEach(function (t) {
3696                          t.urlId = l;
3697                        }),
3698                        (r.nextLoadLevel = n),
3699                        { v: !0 }
3700                      );
3701                  },
3702                  u = 1;
3703                u < s;
3704                u++
3705              ) {
3706                var h = l();
3707                if ('object' == typeof h) return h.v;
3708              }
3709              return !1;
3710            }),
3711            (e.penalizeRendition = function (t, e) {
3712              var r = this.penalizedRenditions,
3713                i = r[t.urlId] || { lastErrorPerfMs: 0, errors: [], details: void 0 };
3714              (i.lastErrorPerfMs = performance.now()), i.errors.push(e), (i.details = t.details), (r[t.urlId] = i);
3715            }),
3716            t
3717          );
3718        })(),
3719        ur = (function () {
3720          function t(t, e) {
3721            (this.hls = void 0),
3722              (this.timer = -1),
3723              (this.requestScheduled = -1),
3724              (this.canLoad = !1),
3725              (this.log = void 0),
3726              (this.warn = void 0),
3727              (this.log = w.log.bind(w, e + ':')),
3728              (this.warn = w.warn.bind(w, e + ':')),
3729              (this.hls = t);
3730          }
3731          var e = t.prototype;
3732          return (
3733            (e.destroy = function () {
3734              this.clearTimer(), (this.hls = this.log = this.warn = null);
3735            }),
3736            (e.clearTimer = function () {
3737              clearTimeout(this.timer), (this.timer = -1);
3738            }),
3739            (e.startLoad = function () {
3740              (this.canLoad = !0), (this.requestScheduled = -1), this.loadPlaylist();
3741            }),
3742            (e.stopLoad = function () {
3743              (this.canLoad = !1), this.clearTimer();
3744            }),
3745            (e.switchParams = function (t, e) {
3746              var r = null == e ? void 0 : e.renditionReports;
3747              if (r) {
3748                for (var i = -1, n = 0; n < r.length; n++) {
3749                  var a = r[n],
3750                    s = void 0;
3751                  try {
3752                    s = new self.URL(a.URI, e.url).href;
3753                  } catch (t) {
3754                    w.warn('Could not construct new URL for Rendition Report: ' + t), (s = a.URI || '');
3755                  }
3756                  if (s === t) {
3757                    i = n;
3758                    break;
3759                  }
3760                  s === t.substring(0, s.length) && (i = n);
3761                }
3762                if (-1 !== i) {
3763                  var o = r[i],
3764                    l = parseInt(o['LAST-MSN']) || (null == e ? void 0 : e.lastPartSn),
3765                    u = parseInt(o['LAST-PART']) || (null == e ? void 0 : e.lastPartIndex);
3766                  if (this.hls.config.lowLatencyMode) {
3767                    var h = Math.min(e.age - e.partTarget, e.targetduration);
3768                    u >= 0 && h > e.partTarget && (u += 1);
3769                  }
3770                  return new Oe(l, u >= 0 ? u : void 0, xe);
3771                }
3772              }
3773            }),
3774            (e.loadPlaylist = function (t) {
3775              -1 === this.requestScheduled && (this.requestScheduled = self.performance.now());
3776            }),
3777            (e.shouldLoadPlaylist = function (t) {
3778              return this.canLoad && !!t && !!t.url && (!t.details || t.details.live);
3779            }),
3780            (e.shouldReloadPlaylist = function (t) {
3781              return -1 === this.timer && -1 === this.requestScheduled && this.shouldLoadPlaylist(t);
3782            }),
3783            (e.playlistLoaded = function (t, e, r) {
3784              var i = this,
3785                n = e.details,
3786                a = e.stats,
3787                s = self.performance.now(),
3788                o = a.loading.first ? Math.max(0, s - a.loading.first) : 0;
3789              if (((n.advancedDateTime = Date.now() - o), n.live || (null != r && r.live))) {
3790                if (
3791                  (n.reloaded(r),
3792                  r &&
3793                    this.log(
3794                      'live playlist ' +
3795                        t +
3796                        ' ' +
3797                        (n.advanced
3798                          ? 'REFRESHED ' + n.lastPartSn + '-' + n.lastPartIndex
3799                          : n.updated
3800                          ? 'UPDATED'
3801                          : 'MISSED'),
3802                    ),
3803                  r && n.fragments.length > 0 && Ge(r, n),
3804                  !this.canLoad || !n.live)
3805                )
3806                  return;
3807                var l,
3808                  u = void 0,
3809                  h = void 0;
3810                if (n.canBlockReload && n.endSN && n.advanced) {
3811                  var d = this.hls.config.lowLatencyMode,
3812                    c = n.lastPartSn,
3813                    f = n.endSN,
3814                    g = n.lastPartIndex,
3815                    v = c === f;
3816                  -1 !== g ? ((u = v ? f + 1 : c), (h = v ? (d ? 0 : g) : g + 1)) : (u = f + 1);
3817                  var m = n.age,
3818                    p = m + n.ageHeader,
3819                    y = Math.min(p - n.partTarget, 1.5 * n.targetduration);
3820                  if (y > 0) {
3821                    if (r && y > r.tuneInGoal)
3822                      this.warn(
3823                        'CDN Tune-in goal increased from: ' +
3824                          r.tuneInGoal +
3825                          ' to: ' +
3826                          y +
3827                          ' with playlist age: ' +
3828                          n.age,
3829                      ),
3830                        (y = 0);
3831                    else {
3832                      var T = Math.floor(y / n.targetduration);
3833                      (u += T),
3834                        void 0 !== h && (h += Math.round((y % n.targetduration) / n.partTarget)),
3835                        this.log(
3836                          'CDN Tune-in age: ' +
3837                            n.ageHeader +
3838                            's last advanced ' +
3839                            m.toFixed(2) +
3840                            's goal: ' +
3841                            y +
3842                            ' skip sn ' +
3843                            T +
3844                            ' to part ' +
3845                            h,
3846                        );
3847                    }
3848                    n.tuneInGoal = y;
3849                  }
3850                  if (((l = this.getDeliveryDirectives(n, e.deliveryDirectives, u, h)), d || !v))
3851                    return void this.loadPlaylist(l);
3852                } else
3853                  (n.canBlockReload || n.canSkipUntil) &&
3854                    (l = this.getDeliveryDirectives(n, e.deliveryDirectives, u, h));
3855                var E = this.hls.mainForwardBufferInfo,
3856                  S = E ? E.end - E.len : 0,
3857                  L = (function (t, e) {
3858                    void 0 === e && (e = 1 / 0);
3859                    var r = 1e3 * t.targetduration;
3860                    if (t.updated) {
3861                      var i = t.fragments;
3862                      if (i.length && 4 * r > e) {
3863                        var n = 1e3 * i[i.length - 1].duration;
3864                        n < r && (r = n);
3865                      }
3866                    } else r /= 2;
3867                    return Math.round(r);
3868                  })(n, 1e3 * (n.edge - S));
3869                n.updated && s > this.requestScheduled + L && (this.requestScheduled = a.loading.start),
3870                  void 0 !== u && n.canBlockReload
3871                    ? (this.requestScheduled = a.loading.first + L - (1e3 * n.partTarget || 1e3))
3872                    : -1 === this.requestScheduled || this.requestScheduled + L < s
3873                    ? (this.requestScheduled = s)
3874                    : this.requestScheduled - s <= 0 && (this.requestScheduled += L);
3875                var R = this.requestScheduled - s;
3876                (R = Math.max(0, R)),
3877                  this.log('reload live playlist ' + t + ' in ' + Math.round(R) + ' ms'),
3878                  (this.timer = self.setTimeout(function () {
3879                    return i.loadPlaylist(l);
3880                  }, R));
3881              } else this.clearTimer();
3882            }),
3883            (e.getDeliveryDirectives = function (t, e, r, i) {
3884              var n = (function (t, e) {
3885                var r = t.canSkipUntil,
3886                  i = t.canSkipDateRanges,
3887                  n = t.endSN;
3888                return r && (void 0 !== e ? e - n : 0) < r ? (i ? Me : Fe) : xe;
3889              })(t, r);
3890              return (
3891                null != e && e.skip && t.deltaUpdateFailed && ((r = e.msn), (i = e.part), (n = xe)), new Oe(r, i, n)
3892              );
3893            }),
3894            (e.checkRetry = function (t) {
3895              var e = this,
3896                r = t.details,
3897                i = We(t),
3898                n = t.errorAction,
3899                a = n || {},
3900                s = a.action,
3901                o = a.retryCount,
3902                l = void 0 === o ? 0 : o,
3903                u = a.retryConfig,
3904                h = !!n && !!u && (s === nr || (!n.resolved && s === ir));
3905              if (h) {
3906                var d;
3907                if (((this.requestScheduled = -1), l >= u.maxNumRetry)) return !1;
3908                if (i && null != (d = t.context) && d.deliveryDirectives)
3909                  this.warn(
3910                    'Retrying playlist loading ' +
3911                      (l + 1) +
3912                      '/' +
3913                      u.maxNumRetry +
3914                      ' after "' +
3915                      r +
3916                      '" without delivery-directives',
3917                  ),
3918                    this.loadPlaylist();
3919                else {
3920                  var c = qe(u, l);
3921                  (this.timer = self.setTimeout(function () {
3922                    return e.loadPlaylist();
3923                  }, c)),
3924                    this.warn(
3925                      'Retrying playlist loading ' +
3926                        (l + 1) +
3927                        '/' +
3928                        u.maxNumRetry +
3929                        ' after "' +
3930                        r +
3931                        '" in ' +
3932                        c +
3933                        'ms',
3934                    );
3935                }
3936                (t.levelRetry = !0), (n.resolved = !0);
3937              }
3938              return h;
3939            }),
3940            t
3941          );
3942        })(),
3943        hr = (function (t) {
3944          function e(e, r) {
3945            var i;
3946            return (
3947              ((i = t.call(this, e, '[level-controller]') || this)._levels = []),
3948              (i._firstLevel = -1),
3949              (i._startLevel = void 0),
3950              (i.currentLevel = null),
3951              (i.currentLevelIndex = -1),
3952              (i.manualLevelIndex = -1),
3953              (i.steering = void 0),
3954              (i.onParsedComplete = void 0),
3955              (i.steering = r),
3956              i._registerListeners(),
3957              i
3958            );
3959          }
3960          l(e, t);
3961          var r = e.prototype;
3962          return (
3963            (r._registerListeners = function () {
3964              var t = this.hls;
3965              t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
3966                t.on(S.MANIFEST_LOADED, this.onManifestLoaded, this),
3967                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
3968                t.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
3969                t.on(S.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this),
3970                t.on(S.FRAG_LOADED, this.onFragLoaded, this),
3971                t.on(S.ERROR, this.onError, this);
3972            }),
3973            (r._unregisterListeners = function () {
3974              var t = this.hls;
3975              t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
3976                t.off(S.MANIFEST_LOADED, this.onManifestLoaded, this),
3977                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
3978                t.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
3979                t.off(S.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this),
3980                t.off(S.FRAG_LOADED, this.onFragLoaded, this),
3981                t.off(S.ERROR, this.onError, this);
3982            }),
3983            (r.destroy = function () {
3984              this._unregisterListeners(), (this.steering = null), this.resetLevels(), t.prototype.destroy.call(this);
3985            }),
3986            (r.startLoad = function () {
3987              this._levels.forEach(function (t) {
3988                (t.loadError = 0), (t.fragmentError = 0);
3989              }),
3990                t.prototype.startLoad.call(this);
3991            }),
3992            (r.resetLevels = function () {
3993              (this._startLevel = void 0),
3994                (this.manualLevelIndex = -1),
3995                (this.currentLevelIndex = -1),
3996                (this.currentLevel = null),
3997                (this._levels = []);
3998            }),
3999            (r.onManifestLoading = function (t, e) {
4000              this.resetLevels();
4001            }),
4002            (r.onManifestLoaded = function (t, e) {
4003              var r,
4004                i = [],
4005                n = {};
4006              e.levels.forEach(function (t) {
4007                var e,
4008                  a = t.attrs;
4009                -1 !== (null == (e = t.audioCodec) ? void 0 : e.indexOf('mp4a.40.34')) &&
4010                  (tr || (tr = /chrome|firefox/i.test(navigator.userAgent)), tr && (t.audioCodec = void 0));
4011                var s = a.AUDIO,
4012                  o = a.CODECS,
4013                  l = a['FRAME-RATE'],
4014                  u = a['PATHWAY-ID'],
4015                  h = a.RESOLUTION,
4016                  d = a.SUBTITLES,
4017                  c = (u || '.') + '-' + t.bitrate + '-' + h + '-' + l + '-' + o;
4018                (r = n[c]) ? r.addFallback(t) : ((r = new Ne(t)), (n[c] = r), i.push(r)),
4019                  dr(r, 'audio', s),
4020                  dr(r, 'text', d);
4021              }),
4022                this.filterAndSortMediaOptions(i, e);
4023            }),
4024            (r.filterAndSortMediaOptions = function (t, e) {
4025              var r = this,
4026                i = [],
4027                n = [],
4028                a = !1,
4029                s = !1,
4030                o = !1,
4031                l = t.filter(function (t) {
4032                  var e = t.audioCodec,
4033                    r = t.videoCodec,
4034                    i = t.width,
4035                    n = t.height,
4036                    l = t.unknownCodecs;
4037                  return (
4038                    a || (a = !(!i || !n)),
4039                    s || (s = !!r),
4040                    o || (o = !!e),
4041                    !(null != l && l.length) && (!e || Qt(e, 'audio')) && (!r || Qt(r, 'video'))
4042                  );
4043                });
4044              if (
4045                ((a || s) &&
4046                  o &&
4047                  (l = l.filter(function (t) {
4048                    var e = t.videoCodec,
4049                      r = t.width,
4050                      i = t.height;
4051                    return !!e || !(!r || !i);
4052                  })),
4053                0 !== l.length)
4054              ) {
4055                e.audioTracks &&
4056                  cr(
4057                    (i = e.audioTracks.filter(function (t) {
4058                      return !t.audioCodec || Qt(t.audioCodec, 'audio');
4059                    })),
4060                  ),
4061                  e.subtitles && cr((n = e.subtitles));
4062                var u = l.slice(0);
4063                l.sort(function (t, e) {
4064                  return t.attrs['HDCP-LEVEL'] !== e.attrs['HDCP-LEVEL']
4065                    ? (t.attrs['HDCP-LEVEL'] || '') > (e.attrs['HDCP-LEVEL'] || '')
4066                      ? 1
4067                      : -1
4068                    : t.bitrate !== e.bitrate
4069                    ? t.bitrate - e.bitrate
4070                    : t.attrs['FRAME-RATE'] !== e.attrs['FRAME-RATE']
4071                    ? t.attrs.decimalFloatingPoint('FRAME-RATE') - e.attrs.decimalFloatingPoint('FRAME-RATE')
4072                    : t.attrs.SCORE !== e.attrs.SCORE
4073                    ? t.attrs.decimalFloatingPoint('SCORE') - e.attrs.decimalFloatingPoint('SCORE')
4074                    : a && t.height !== e.height
4075                    ? t.height - e.height
4076                    : 0;
4077                });
4078                var h = u[0];
4079                if (this.steering && (l = this.steering.filterParsedLevels(l)).length !== u.length)
4080                  for (var d = 0; d < u.length; d++)
4081                    if (u[d].pathwayId === l[0].pathwayId) {
4082                      h = u[d];
4083                      break;
4084                    }
4085                this._levels = l;
4086                for (var c = 0; c < l.length; c++)
4087                  if (l[c] === h) {
4088                    (this._firstLevel = c),
4089                      this.log('manifest loaded, ' + l.length + ' level(s) found, first bitrate: ' + h.bitrate);
4090                    break;
4091                  }
4092                var f = o && !s,
4093                  g = {
4094                    levels: l,
4095                    audioTracks: i,
4096                    subtitleTracks: n,
4097                    sessionData: e.sessionData,
4098                    sessionKeys: e.sessionKeys,
4099                    firstLevel: this._firstLevel,
4100                    stats: e.stats,
4101                    audio: o,
4102                    video: s,
4103                    altAudio:
4104                      !f &&
4105                      i.some(function (t) {
4106                        return !!t.url;
4107                      }),
4108                  };
4109                this.hls.trigger(S.MANIFEST_PARSED, g),
4110                  (this.hls.config.autoStartLoad || this.hls.forceStartLoad) &&
4111                    this.hls.startLoad(this.hls.config.startPosition);
4112              } else
4113                Promise.resolve().then(function () {
4114                  if (r.hls) {
4115                    var t = new Error('no level with compatible codecs found in manifest');
4116                    r.hls.trigger(S.ERROR, {
4117                      type: L.MEDIA_ERROR,
4118                      details: R.MANIFEST_INCOMPATIBLE_CODECS_ERROR,
4119                      fatal: !0,
4120                      url: e.url,
4121                      error: t,
4122                      reason: t.message,
4123                    });
4124                  }
4125                });
4126            }),
4127            (r.onError = function (t, e) {
4128              !e.fatal && e.context && e.context.type === de && e.context.level === this.level && this.checkRetry(e);
4129            }),
4130            (r.onFragLoaded = function (t, e) {
4131              var r = e.frag;
4132              if (void 0 !== r && r.type === ge) {
4133                var i = this._levels[r.level];
4134                void 0 !== i && (i.loadError = 0);
4135              }
4136            }),
4137            (r.onLevelLoaded = function (t, e) {
4138              var r,
4139                i,
4140                n = e.level,
4141                a = e.details,
4142                s = this._levels[n];
4143              if (!s)
4144                return (
4145                  this.warn('Invalid level index ' + n),
4146                  void (null != (i = e.deliveryDirectives) && i.skip && (a.deltaUpdateFailed = !0))
4147                );
4148              n === this.currentLevelIndex
4149                ? (0 === s.fragmentError && (s.loadError = 0), this.playlistLoaded(n, e, s.details))
4150                : null != (r = e.deliveryDirectives) && r.skip && (a.deltaUpdateFailed = !0);
4151            }),
4152            (r.onAudioTrackSwitched = function (t, e) {
4153              var r = this.currentLevel;
4154              if (r) {
4155                var i = this.hls.audioTracks[e.id].groupId;
4156                if (r.audioGroupIds && r.audioGroupId !== i) {
4157                  for (var n = -1, a = 0; a < r.audioGroupIds.length; a++)
4158                    if (r.audioGroupIds[a] === i) {
4159                      n = a;
4160                      break;
4161                    }
4162                  -1 !== n && n !== r.urlId && ((r.urlId = n), this.canLoad && this.startLoad());
4163                }
4164              }
4165            }),
4166            (r.loadPlaylist = function (e) {
4167              t.prototype.loadPlaylist.call(this);
4168              var r = this.currentLevelIndex,
4169                i = this.currentLevel;
4170              if (i && this.shouldLoadPlaylist(i)) {
4171                var n = i.urlId,
4172                  a = i.uri;
4173                if (e)
4174                  try {
4175                    a = e.addDirectives(a);
4176                  } catch (t) {
4177                    this.warn('Could not construct new URL with HLS Delivery Directives: ' + t);
4178                  }
4179                var s = i.attrs['PATHWAY-ID'];
4180                this.log(
4181                  'Loading level index ' +
4182                    r +
4183                    (void 0 !== (null == e ? void 0 : e.msn) ? ' at sn ' + e.msn + ' part ' + e.part : '') +
4184                    ' with' +
4185                    (s ? ' Pathway ' + s : '') +
4186                    ' URI ' +
4187                    (n + 1) +
4188                    '/' +
4189                    i.url.length +
4190                    ' ' +
4191                    a,
4192                ),
4193                  this.clearTimer(),
4194                  this.hls.trigger(S.LEVEL_LOADING, { url: a, level: r, id: n, deliveryDirectives: e || null });
4195              }
4196            }),
4197            (r.removeLevel = function (t, e) {
4198              var r = this,
4199                i = function (t, r) {
4200                  return r !== e;
4201                },
4202                n = this._levels.filter(function (n, a) {
4203                  return (
4204                    a !== t ||
4205                    (n.url.length > 1 && void 0 !== e
4206                      ? ((n.url = n.url.filter(i)),
4207                        n.audioGroupIds && (n.audioGroupIds = n.audioGroupIds.filter(i)),
4208                        n.textGroupIds && (n.textGroupIds = n.textGroupIds.filter(i)),
4209                        (n.urlId = 0),
4210                        !0)
4211                      : (r.steering && r.steering.removeLevel(n), !1))
4212                  );
4213                });
4214              this.hls.trigger(S.LEVELS_UPDATED, { levels: n });
4215            }),
4216            (r.onLevelsUpdated = function (t, e) {
4217              var r = e.levels;
4218              r.forEach(function (t, e) {
4219                var r = t.details;
4220                null != r &&
4221                  r.fragments &&
4222                  r.fragments.forEach(function (t) {
4223                    t.level = e;
4224                  });
4225              }),
4226                (this._levels = r);
4227            }),
4228            a(e, [
4229              {
4230                key: 'levels',
4231                get: function () {
4232                  return 0 === this._levels.length ? null : this._levels;
4233                },
4234              },
4235              {
4236                key: 'level',
4237                get: function () {
4238                  return this.currentLevelIndex;
4239                },
4240                set: function (t) {
4241                  var e = this._levels;
4242                  if (0 !== e.length) {
4243                    if (t < 0 || t >= e.length) {
4244                      var r = new Error('invalid level idx'),
4245                        i = t < 0;
4246                      if (
4247                        (this.hls.trigger(S.ERROR, {
4248                          type: L.OTHER_ERROR,
4249                          details: R.LEVEL_SWITCH_ERROR,
4250                          level: t,
4251                          fatal: i,
4252                          error: r,
4253                          reason: r.message,
4254                        }),
4255                        i)
4256                      )
4257                        return;
4258                      t = Math.min(t, e.length - 1);
4259                    }
4260                    var n = this.currentLevelIndex,
4261                      a = this.currentLevel,
4262                      s = a ? a.attrs['PATHWAY-ID'] : void 0,
4263                      l = e[t],
4264                      u = l.attrs['PATHWAY-ID'];
4265                    if (
4266                      ((this.currentLevelIndex = t), (this.currentLevel = l), n !== t || !l.details || !a || s !== u)
4267                    ) {
4268                      this.log(
4269                        'Switching to level ' +
4270                          t +
4271                          (u ? ' with Pathway ' + u : '') +
4272                          ' from level ' +
4273                          n +
4274                          (s ? ' with Pathway ' + s : ''),
4275                      );
4276                      var h = o({}, l, {
4277                        level: t,
4278                        maxBitrate: l.maxBitrate,
4279                        attrs: l.attrs,
4280                        uri: l.uri,
4281                        urlId: l.urlId,
4282                      });
4283                      delete h._attrs, delete h._urlId, this.hls.trigger(S.LEVEL_SWITCHING, h);
4284                      var d = l.details;
4285                      if (!d || d.live) {
4286                        var c = this.switchParams(l.uri, null == a ? void 0 : a.details);
4287                        this.loadPlaylist(c);
4288                      }
4289                    }
4290                  }
4291                },
4292              },
4293              {
4294                key: 'manualLevel',
4295                get: function () {
4296                  return this.manualLevelIndex;
4297                },
4298                set: function (t) {
4299                  (this.manualLevelIndex = t),
4300                    void 0 === this._startLevel && (this._startLevel = t),
4301                    -1 !== t && (this.level = t);
4302                },
4303              },
4304              {
4305                key: 'firstLevel',
4306                get: function () {
4307                  return this._firstLevel;
4308                },
4309                set: function (t) {
4310                  this._firstLevel = t;
4311                },
4312              },
4313              {
4314                key: 'startLevel',
4315                get: function () {
4316                  if (void 0 === this._startLevel) {
4317                    var t = this.hls.config.startLevel;
4318                    return void 0 !== t ? t : this._firstLevel;
4319                  }
4320                  return this._startLevel;
4321                },
4322                set: function (t) {
4323                  this._startLevel = t;
4324                },
4325              },
4326              {
4327                key: 'nextLoadLevel',
4328                get: function () {
4329                  return -1 !== this.manualLevelIndex ? this.manualLevelIndex : this.hls.nextAutoLevel;
4330                },
4331                set: function (t) {
4332                  (this.level = t), -1 === this.manualLevelIndex && (this.hls.nextAutoLevel = t);
4333                },
4334              },
4335            ]),
4336            e
4337          );
4338        })(ur);
4339      function dr(t, e, r) {
4340        r &&
4341          ('audio' === e
4342            ? (t.audioGroupIds || (t.audioGroupIds = []), (t.audioGroupIds[t.url.length - 1] = r))
4343            : 'text' === e && (t.textGroupIds || (t.textGroupIds = []), (t.textGroupIds[t.url.length - 1] = r)));
4344      }
4345      function cr(t) {
4346        var e = {};
4347        t.forEach(function (t) {
4348          var r = t.groupId || '';
4349          (t.id = e[r] = e[r] || 0), e[r]++;
4350        });
4351      }
4352      var fr = 'NOT_LOADED',
4353        gr = 'APPENDING',
4354        vr = 'PARTIAL',
4355        mr = 'OK',
4356        pr = (function () {
4357          function t(t) {
4358            (this.activePartLists = Object.create(null)),
4359              (this.endListFragments = Object.create(null)),
4360              (this.fragments = Object.create(null)),
4361              (this.timeRanges = Object.create(null)),
4362              (this.bufferPadding = 0.2),
4363              (this.hls = void 0),
4364              (this.hasGaps = !1),
4365              (this.hls = t),
4366              this._registerListeners();
4367          }
4368          var e = t.prototype;
4369          return (
4370            (e._registerListeners = function () {
4371              var t = this.hls;
4372              t.on(S.BUFFER_APPENDED, this.onBufferAppended, this),
4373                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this),
4374                t.on(S.FRAG_LOADED, this.onFragLoaded, this);
4375            }),
4376            (e._unregisterListeners = function () {
4377              var t = this.hls;
4378              t.off(S.BUFFER_APPENDED, this.onBufferAppended, this),
4379                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this),
4380                t.off(S.FRAG_LOADED, this.onFragLoaded, this);
4381            }),
4382            (e.destroy = function () {
4383              this._unregisterListeners(),
4384                (this.fragments = this.activePartLists = this.endListFragments = this.timeRanges = null);
4385            }),
4386            (e.getAppendedFrag = function (t, e) {
4387              var r = this.activePartLists[e];
4388              if (r)
4389                for (var i = r.length; i--; ) {
4390                  var n = r[i];
4391                  if (!n) break;
4392                  var a = n.end;
4393                  if (n.start <= t && null !== a && t <= a) return n;
4394                }
4395              return this.getBufferedFrag(t, e);
4396            }),
4397            (e.getBufferedFrag = function (t, e) {
4398              for (var r = this.fragments, i = Object.keys(r), n = i.length; n--; ) {
4399                var a = r[i[n]];
4400                if ((null == a ? void 0 : a.body.type) === e && a.buffered) {
4401                  var s = a.body;
4402                  if (s.start <= t && t <= s.end) return s;
4403                }
4404              }
4405              return null;
4406            }),
4407            (e.detectEvictedFragments = function (t, e, r, i) {
4408              var n = this;
4409              this.timeRanges && (this.timeRanges[t] = e);
4410              var a = (null == i ? void 0 : i.fragment.sn) || -1;
4411              Object.keys(this.fragments).forEach(function (i) {
4412                var s = n.fragments[i];
4413                if (s && !(a >= s.body.sn))
4414                  if (s.buffered || s.loaded) {
4415                    var o = s.range[t];
4416                    o &&
4417                      o.time.some(function (t) {
4418                        var r = !n.isTimeBuffered(t.startPTS, t.endPTS, e);
4419                        return r && n.removeFragment(s.body), r;
4420                      });
4421                  } else s.body.type === r && n.removeFragment(s.body);
4422              });
4423            }),
4424            (e.detectPartialFragments = function (t) {
4425              var e = this,
4426                r = this.timeRanges,
4427                i = t.frag,
4428                n = t.part;
4429              if (r && 'initSegment' !== i.sn) {
4430                var a = Tr(i),
4431                  s = this.fragments[a];
4432                if (!(!s || (s.buffered && i.gap))) {
4433                  var o = !i.relurl;
4434                  Object.keys(r).forEach(function (t) {
4435                    var a = i.elementaryStreams[t];
4436                    if (a) {
4437                      var l = r[t],
4438                        u = o || !0 === a.partial;
4439                      s.range[t] = e.getBufferedTimes(i, n, u, l);
4440                    }
4441                  }),
4442                    (s.loaded = null),
4443                    Object.keys(s.range).length
4444                      ? ((s.buffered = !0),
4445                        (s.body.endList = i.endList || s.body.endList) && (this.endListFragments[s.body.type] = s),
4446                        yr(s) || this.removeParts(i.sn - 1, i.type))
4447                      : this.removeFragment(s.body);
4448                }
4449              }
4450            }),
4451            (e.removeParts = function (t, e) {
4452              var r = this.activePartLists[e];
4453              r &&
4454                (this.activePartLists[e] = r.filter(function (e) {
4455                  return e.fragment.sn >= t;
4456                }));
4457            }),
4458            (e.fragBuffered = function (t, e) {
4459              var r = Tr(t),
4460                i = this.fragments[r];
4461              !i &&
4462                e &&
4463                ((i = this.fragments[r] =
4464                  { body: t, appendedPTS: null, loaded: null, buffered: !1, range: Object.create(null) }),
4465                t.gap && (this.hasGaps = !0)),
4466                i && ((i.loaded = null), (i.buffered = !0));
4467            }),
4468            (e.getBufferedTimes = function (t, e, r, i) {
4469              for (
4470                var n = { time: [], partial: r },
4471                  a = t.start,
4472                  s = t.end,
4473                  o = t.minEndPTS || s,
4474                  l = t.maxStartPTS || a,
4475                  u = 0;
4476                u < i.length;
4477                u++
4478              ) {
4479                var h = i.start(u) - this.bufferPadding,
4480                  d = i.end(u) + this.bufferPadding;
4481                if (l >= h && o <= d) {
4482                  n.time.push({ startPTS: Math.max(a, i.start(u)), endPTS: Math.min(s, i.end(u)) });
4483                  break;
4484                }
4485                if (a < d && s > h)
4486                  (n.partial = !0), n.time.push({ startPTS: Math.max(a, i.start(u)), endPTS: Math.min(s, i.end(u)) });
4487                else if (s <= h) break;
4488              }
4489              return n;
4490            }),
4491            (e.getPartialFragment = function (t) {
4492              var e,
4493                r,
4494                i,
4495                n = null,
4496                a = 0,
4497                s = this.bufferPadding,
4498                o = this.fragments;
4499              return (
4500                Object.keys(o).forEach(function (l) {
4501                  var u = o[l];
4502                  u &&
4503                    yr(u) &&
4504                    ((r = u.body.start - s),
4505                    (i = u.body.end + s),
4506                    t >= r && t <= i && ((e = Math.min(t - r, i - t)), a <= e && ((n = u.body), (a = e))));
4507                }),
4508                n
4509              );
4510            }),
4511            (e.isEndListAppended = function (t) {
4512              var e = this.endListFragments[t];
4513              return void 0 !== e && (e.buffered || yr(e));
4514            }),
4515            (e.getState = function (t) {
4516              var e = Tr(t),
4517                r = this.fragments[e];
4518              return r ? (r.buffered ? (yr(r) ? vr : mr) : gr) : fr;
4519            }),
4520            (e.isTimeBuffered = function (t, e, r) {
4521              for (var i, n, a = 0; a < r.length; a++) {
4522                if (((i = r.start(a) - this.bufferPadding), (n = r.end(a) + this.bufferPadding), t >= i && e <= n))
4523                  return !0;
4524                if (e <= i) return !1;
4525              }
4526              return !1;
4527            }),
4528            (e.onFragLoaded = function (t, e) {
4529              var r = e.frag,
4530                i = e.part;
4531              if ('initSegment' !== r.sn && !r.bitrateTest) {
4532                var n = i ? null : e,
4533                  a = Tr(r);
4534                this.fragments[a] = { body: r, appendedPTS: null, loaded: n, buffered: !1, range: Object.create(null) };
4535              }
4536            }),
4537            (e.onBufferAppended = function (t, e) {
4538              var r = this,
4539                i = e.frag,
4540                n = e.part,
4541                a = e.timeRanges;
4542              if ('initSegment' !== i.sn) {
4543                var s = i.type;
4544                if (n) {
4545                  var o = this.activePartLists[s];
4546                  o || (this.activePartLists[s] = o = []), o.push(n);
4547                }
4548                (this.timeRanges = a),
4549                  Object.keys(a).forEach(function (t) {
4550                    var e = a[t];
4551                    r.detectEvictedFragments(t, e, s, n);
4552                  });
4553              }
4554            }),
4555            (e.onFragBuffered = function (t, e) {
4556              this.detectPartialFragments(e);
4557            }),
4558            (e.hasFragment = function (t) {
4559              var e = Tr(t);
4560              return !!this.fragments[e];
4561            }),
4562            (e.hasParts = function (t) {
4563              var e;
4564              return !(null == (e = this.activePartLists[t]) || !e.length);
4565            }),
4566            (e.removeFragmentsInRange = function (t, e, r, i, n) {
4567              var a = this;
4568              (i && !this.hasGaps) ||
4569                Object.keys(this.fragments).forEach(function (s) {
4570                  var o = a.fragments[s];
4571                  if (o) {
4572                    var l = o.body;
4573                    l.type !== r ||
4574                      (i && !l.gap) ||
4575                      (l.start < e && l.end > t && (o.buffered || n) && a.removeFragment(l));
4576                  }
4577                });
4578            }),
4579            (e.removeFragment = function (t) {
4580              var e = Tr(t);
4581              (t.stats.loaded = 0), t.clearElementaryStreamInfo();
4582              var r = this.activePartLists[t.type];
4583              if (r) {
4584                var i = t.sn;
4585                this.activePartLists[t.type] = r.filter(function (t) {
4586                  return t.fragment.sn !== i;
4587                });
4588              }
4589              delete this.fragments[e], t.endList && delete this.endListFragments[t.type];
4590            }),
4591            (e.removeAllFragments = function () {
4592              (this.fragments = Object.create(null)),
4593                (this.endListFragments = Object.create(null)),
4594                (this.activePartLists = Object.create(null)),
4595                (this.hasGaps = !1);
4596            }),
4597            t
4598          );
4599        })();
4600      function yr(t) {
4601        var e, r, i;
4602        return (
4603          t.buffered &&
4604          (t.body.gap ||
4605            (null == (e = t.range.video) ? void 0 : e.partial) ||
4606            (null == (r = t.range.audio) ? void 0 : r.partial) ||
4607            (null == (i = t.range.audiovideo) ? void 0 : i.partial))
4608        );
4609      }
4610      function Tr(t) {
4611        return t.type + '_' + t.level + '_' + t.urlId + '_' + t.sn;
4612      }
4613      var Er = Math.pow(2, 17),
4614        Sr = (function () {
4615          function t(t) {
4616            (this.config = void 0), (this.loader = null), (this.partLoadTimeout = -1), (this.config = t);
4617          }
4618          var e = t.prototype;
4619          return (
4620            (e.destroy = function () {
4621              this.loader && (this.loader.destroy(), (this.loader = null));
4622            }),
4623            (e.abort = function () {
4624              this.loader && this.loader.abort();
4625            }),
4626            (e.load = function (t, e) {
4627              var r = this,
4628                n = t.url;
4629              if (!n)
4630                return Promise.reject(
4631                  new Ar({
4632                    type: L.NETWORK_ERROR,
4633                    details: R.FRAG_LOAD_ERROR,
4634                    fatal: !1,
4635                    frag: t,
4636                    error: new Error('Fragment does not have a ' + (n ? 'part list' : 'url')),
4637                    networkDetails: null,
4638                  }),
4639                );
4640              this.abort();
4641              var a = this.config,
4642                s = a.fLoader,
4643                o = a.loader;
4644              return new Promise(function (l, u) {
4645                if ((r.loader && r.loader.destroy(), t.gap)) {
4646                  if (
4647                    t.tagList.some(function (t) {
4648                      return 'GAP' === t[0];
4649                    })
4650                  )
4651                    return void u(Rr(t));
4652                  t.gap = !1;
4653                }
4654                var h = (r.loader = t.loader = s ? new s(a) : new o(a)),
4655                  d = Lr(t),
4656                  c = Xe(a.fragLoadPolicy.default),
4657                  f = {
4658                    loadPolicy: c,
4659                    timeout: c.maxLoadTimeMs,
4660                    maxRetry: 0,
4661                    retryDelay: 0,
4662                    maxRetryDelay: 0,
4663                    highWaterMark: 'initSegment' === t.sn ? 1 / 0 : Er,
4664                  };
4665                (t.stats = h.stats),
4666                  h.load(d, f, {
4667                    onSuccess: function (e, i, n, a) {
4668                      r.resetLoader(t, h);
4669                      var s = e.data;
4670                      n.resetIV &&
4671                        t.decryptdata &&
4672                        ((t.decryptdata.iv = new Uint8Array(s.slice(0, 16))), (s = s.slice(16))),
4673                        l({ frag: t, part: null, payload: s, networkDetails: a });
4674                    },
4675                    onError: function (e, a, s, o) {
4676                      r.resetLoader(t, h),
4677                        u(
4678                          new Ar({
4679                            type: L.NETWORK_ERROR,
4680                            details: R.FRAG_LOAD_ERROR,
4681                            fatal: !1,
4682                            frag: t,
4683                            response: i({ url: n, data: void 0 }, e),
4684                            error: new Error('HTTP Error ' + e.code + ' ' + e.text),
4685                            networkDetails: s,
4686                            stats: o,
4687                          }),
4688                        );
4689                    },
4690                    onAbort: function (e, i, n) {
4691                      r.resetLoader(t, h),
4692                        u(
4693                          new Ar({
4694                            type: L.NETWORK_ERROR,
4695                            details: R.INTERNAL_ABORTED,
4696                            fatal: !1,
4697                            frag: t,
4698                            error: new Error('Aborted'),
4699                            networkDetails: n,
4700                            stats: e,
4701                          }),
4702                        );
4703                    },
4704                    onTimeout: function (e, i, n) {
4705                      r.resetLoader(t, h),
4706                        u(
4707                          new Ar({
4708                            type: L.NETWORK_ERROR,
4709                            details: R.FRAG_LOAD_TIMEOUT,
4710                            fatal: !1,
4711                            frag: t,
4712                            error: new Error('Timeout after ' + f.timeout + 'ms'),
4713                            networkDetails: n,
4714                            stats: e,
4715                          }),
4716                        );
4717                    },
4718                    onProgress: function (r, i, n, a) {
4719                      e && e({ frag: t, part: null, payload: n, networkDetails: a });
4720                    },
4721                  });
4722              });
4723            }),
4724            (e.loadPart = function (t, e, r) {
4725              var n = this;
4726              this.abort();
4727              var a = this.config,
4728                s = a.fLoader,
4729                o = a.loader;
4730              return new Promise(function (l, u) {
4731                if ((n.loader && n.loader.destroy(), t.gap || e.gap)) u(Rr(t, e));
4732                else {
4733                  var h = (n.loader = t.loader = s ? new s(a) : new o(a)),
4734                    d = Lr(t, e),
4735                    c = Xe(a.fragLoadPolicy.default),
4736                    f = {
4737                      loadPolicy: c,
4738                      timeout: c.maxLoadTimeMs,
4739                      maxRetry: 0,
4740                      retryDelay: 0,
4741                      maxRetryDelay: 0,
4742                      highWaterMark: Er,
4743                    };
4744                  (e.stats = h.stats),
4745                    h.load(d, f, {
4746                      onSuccess: function (i, a, s, o) {
4747                        n.resetLoader(t, h), n.updateStatsFromPart(t, e);
4748                        var u = { frag: t, part: e, payload: i.data, networkDetails: o };
4749                        r(u), l(u);
4750                      },
4751                      onError: function (r, a, s, o) {
4752                        n.resetLoader(t, h),
4753                          u(
4754                            new Ar({
4755                              type: L.NETWORK_ERROR,
4756                              details: R.FRAG_LOAD_ERROR,
4757                              fatal: !1,
4758                              frag: t,
4759                              part: e,
4760                              response: i({ url: d.url, data: void 0 }, r),
4761                              error: new Error('HTTP Error ' + r.code + ' ' + r.text),
4762                              networkDetails: s,
4763                              stats: o,
4764                            }),
4765                          );
4766                      },
4767                      onAbort: function (r, i, a) {
4768                        (t.stats.aborted = e.stats.aborted),
4769                          n.resetLoader(t, h),
4770                          u(
4771                            new Ar({
4772                              type: L.NETWORK_ERROR,
4773                              details: R.INTERNAL_ABORTED,
4774                              fatal: !1,
4775                              frag: t,
4776                              part: e,
4777                              error: new Error('Aborted'),
4778                              networkDetails: a,
4779                              stats: r,
4780                            }),
4781                          );
4782                      },
4783                      onTimeout: function (r, i, a) {
4784                        n.resetLoader(t, h),
4785                          u(
4786                            new Ar({
4787                              type: L.NETWORK_ERROR,
4788                              details: R.FRAG_LOAD_TIMEOUT,
4789                              fatal: !1,
4790                              frag: t,
4791                              part: e,
4792                              error: new Error('Timeout after ' + f.timeout + 'ms'),
4793                              networkDetails: a,
4794                              stats: r,
4795                            }),
4796                          );
4797                      },
4798                    });
4799                }
4800              });
4801            }),
4802            (e.updateStatsFromPart = function (t, e) {
4803              var r = t.stats,
4804                i = e.stats,
4805                n = i.total;
4806              if (((r.loaded += i.loaded), n)) {
4807                var a = Math.round(t.duration / e.duration),
4808                  s = Math.min(Math.round(r.loaded / n), a),
4809                  o = (a - s) * Math.round(r.loaded / s);
4810                r.total = r.loaded + o;
4811              } else r.total = Math.max(r.loaded, r.total);
4812              var l = r.loading,
4813                u = i.loading;
4814              l.start ? (l.first += u.first - u.start) : ((l.start = u.start), (l.first = u.first)), (l.end = u.end);
4815            }),
4816            (e.resetLoader = function (t, e) {
4817              (t.loader = null),
4818                this.loader === e && (self.clearTimeout(this.partLoadTimeout), (this.loader = null)),
4819                e.destroy();
4820            }),
4821            t
4822          );
4823        })();
4824      function Lr(t, e) {
4825        void 0 === e && (e = null);
4826        var r = e || t,
4827          i = { frag: t, part: e, responseType: 'arraybuffer', url: r.url, headers: {}, rangeStart: 0, rangeEnd: 0 },
4828          n = r.byteRangeStartOffset,
4829          a = r.byteRangeEndOffset;
4830        if (E(n) && E(a)) {
4831          var s,
4832            o = n,
4833            l = a;
4834          if ('initSegment' === t.sn && 'AES-128' === (null == (s = t.decryptdata) ? void 0 : s.method)) {
4835            var u = a - n;
4836            u % 16 && (l = a + (16 - (u % 16))), 0 !== n && ((i.resetIV = !0), (o = n - 16));
4837          }
4838          (i.rangeStart = o), (i.rangeEnd = l);
4839        }
4840        return i;
4841      }
4842      function Rr(t, e) {
4843        var r = new Error('GAP ' + (t.gap ? 'tag' : 'attribute') + ' found'),
4844          i = { type: L.MEDIA_ERROR, details: R.FRAG_GAP, fatal: !1, frag: t, error: r, networkDetails: null };
4845        return e && (i.part = e), ((e || t).stats.aborted = !0), new Ar(i);
4846      }
4847      var Ar = (function (t) {
4848          function e(e) {
4849            var r;
4850            return ((r = t.call(this, e.error.message) || this).data = void 0), (r.data = e), r;
4851          }
4852          return l(e, t), e;
4853        })(f(Error)),
4854        kr = (function () {
4855          function t(t) {
4856            (this.config = void 0), (this.keyUriToKeyInfo = {}), (this.emeController = null), (this.config = t);
4857          }
4858          var e = t.prototype;
4859          return (
4860            (e.abort = function (t) {
4861              for (var e in this.keyUriToKeyInfo) {
4862                var r = this.keyUriToKeyInfo[e].loader;
4863                if (r) {
4864                  if (t && t !== r.context.frag.type) return;
4865                  r.abort();
4866                }
4867              }
4868            }),
4869            (e.detach = function () {
4870              for (var t in this.keyUriToKeyInfo) {
4871                var e = this.keyUriToKeyInfo[t];
4872                (e.mediaKeySessionContext || e.decryptdata.isCommonEncryption) && delete this.keyUriToKeyInfo[t];
4873              }
4874            }),
4875            (e.destroy = function () {
4876              for (var t in (this.detach(), this.keyUriToKeyInfo)) {
4877                var e = this.keyUriToKeyInfo[t].loader;
4878                e && e.destroy();
4879              }
4880              this.keyUriToKeyInfo = {};
4881            }),
4882            (e.createKeyLoadError = function (t, e, r, i, n) {
4883              return (
4884                void 0 === e && (e = R.KEY_LOAD_ERROR),
4885                new Ar({
4886                  type: L.NETWORK_ERROR,
4887                  details: e,
4888                  fatal: !1,
4889                  frag: t,
4890                  response: n,
4891                  error: r,
4892                  networkDetails: i,
4893                })
4894              );
4895            }),
4896            (e.loadClear = function (t, e) {
4897              var r = this;
4898              if (this.emeController && this.config.emeEnabled)
4899                for (
4900                  var i = t.sn,
4901                    n = t.cc,
4902                    a = function () {
4903                      var t = e[s];
4904                      if (n <= t.cc && ('initSegment' === i || 'initSegment' === t.sn || i < t.sn))
4905                        return (
4906                          r.emeController.selectKeySystemFormat(t).then(function (e) {
4907                            t.setKeyFormat(e);
4908                          }),
4909                          'break'
4910                        );
4911                    },
4912                    s = 0;
4913                  s < e.length && 'break' !== a();
4914                  s++
4915                );
4916            }),
4917            (e.load = function (t) {
4918              var e = this;
4919              return !t.decryptdata && t.encrypted && this.emeController
4920                ? this.emeController.selectKeySystemFormat(t).then(function (r) {
4921                    return e.loadInternal(t, r);
4922                  })
4923                : this.loadInternal(t);
4924            }),
4925            (e.loadInternal = function (t, e) {
4926              var r, i;
4927              e && t.setKeyFormat(e);
4928              var n = t.decryptdata;
4929              if (!n) {
4930                var a = new Error(
4931                  e
4932                    ? 'Expected frag.decryptdata to be defined after setting format ' + e
4933                    : 'Missing decryption data on fragment in onKeyLoading',
4934                );
4935                return Promise.reject(this.createKeyLoadError(t, R.KEY_LOAD_ERROR, a));
4936              }
4937              var s = n.uri;
4938              if (!s)
4939                return Promise.reject(
4940                  this.createKeyLoadError(t, R.KEY_LOAD_ERROR, new Error('Invalid key URI: "' + s + '"')),
4941                );
4942              var o,
4943                l = this.keyUriToKeyInfo[s];
4944              if (null != (r = l) && r.decryptdata.key)
4945                return (n.key = l.decryptdata.key), Promise.resolve({ frag: t, keyInfo: l });
4946              if (null != (i = l) && i.keyLoadPromise)
4947                switch (null == (o = l.mediaKeySessionContext) ? void 0 : o.keyStatus) {
4948                  case void 0:
4949                  case 'status-pending':
4950                  case 'usable':
4951                  case 'usable-in-future':
4952                    return l.keyLoadPromise.then(function (e) {
4953                      return (n.key = e.keyInfo.decryptdata.key), { frag: t, keyInfo: l };
4954                    });
4955                }
4956              switch (
4957                ((l = this.keyUriToKeyInfo[s] =
4958                  { decryptdata: n, keyLoadPromise: null, loader: null, mediaKeySessionContext: null }),
4959                n.method)
4960              ) {
4961                case 'ISO-23001-7':
4962                case 'SAMPLE-AES':
4963                case 'SAMPLE-AES-CENC':
4964                case 'SAMPLE-AES-CTR':
4965                  return 'identity' === n.keyFormat ? this.loadKeyHTTP(l, t) : this.loadKeyEME(l, t);
4966                case 'AES-128':
4967                  return this.loadKeyHTTP(l, t);
4968                default:
4969                  return Promise.reject(
4970                    this.createKeyLoadError(
4971                      t,
4972                      R.KEY_LOAD_ERROR,
4973                      new Error('Key supplied with unsupported METHOD: "' + n.method + '"'),
4974                    ),
4975                  );
4976              }
4977            }),
4978            (e.loadKeyEME = function (t, e) {
4979              var r = { frag: e, keyInfo: t };
4980              if (this.emeController && this.config.emeEnabled) {
4981                var i = this.emeController.loadKey(r);
4982                if (i)
4983                  return (t.keyLoadPromise = i.then(function (e) {
4984                    return (t.mediaKeySessionContext = e), r;
4985                  })).catch(function (e) {
4986                    throw ((t.keyLoadPromise = null), e);
4987                  });
4988              }
4989              return Promise.resolve(r);
4990            }),
4991            (e.loadKeyHTTP = function (t, e) {
4992              var r = this,
4993                n = this.config,
4994                a = new (0, n.loader)(n);
4995              return (
4996                (e.keyLoader = t.loader = a),
4997                (t.keyLoadPromise = new Promise(function (s, o) {
4998                  var l = { keyInfo: t, frag: e, responseType: 'arraybuffer', url: t.decryptdata.uri },
4999                    u = n.keyLoadPolicy.default,
5000                    h = { loadPolicy: u, timeout: u.maxLoadTimeMs, maxRetry: 0, retryDelay: 0, maxRetryDelay: 0 },
5001                    d = {
5002                      onSuccess: function (t, e, i, n) {
5003                        var a = i.frag,
5004                          l = i.keyInfo,
5005                          u = i.url;
5006                        if (!a.decryptdata || l !== r.keyUriToKeyInfo[u])
5007                          return o(
5008                            r.createKeyLoadError(
5009                              a,
5010                              R.KEY_LOAD_ERROR,
5011                              new Error('after key load, decryptdata unset or changed'),
5012                              n,
5013                            ),
5014                          );
5015                        (l.decryptdata.key = a.decryptdata.key = new Uint8Array(t.data)),
5016                          (a.keyLoader = null),
5017                          (l.loader = null),
5018                          s({ frag: a, keyInfo: l });
5019                      },
5020                      onError: function (t, n, a, s) {
5021                        r.resetLoader(n),
5022                          o(
5023                            r.createKeyLoadError(
5024                              e,
5025                              R.KEY_LOAD_ERROR,
5026                              new Error('HTTP Error ' + t.code + ' loading key ' + t.text),
5027                              a,
5028                              i({ url: l.url, data: void 0 }, t),
5029                            ),
5030                          );
5031                      },
5032                      onTimeout: function (t, i, n) {
5033                        r.resetLoader(i),
5034                          o(r.createKeyLoadError(e, R.KEY_LOAD_TIMEOUT, new Error('key loading timed out'), n));
5035                      },
5036                      onAbort: function (t, i, n) {
5037                        r.resetLoader(i),
5038                          o(r.createKeyLoadError(e, R.INTERNAL_ABORTED, new Error('key loading aborted'), n));
5039                      },
5040                    };
5041                  a.load(l, h, d);
5042                }))
5043              );
5044            }),
5045            (e.resetLoader = function (t) {
5046              var e = t.frag,
5047                r = t.keyInfo,
5048                i = t.url,
5049                n = r.loader;
5050              e.keyLoader === n && ((e.keyLoader = null), (r.loader = null)),
5051                delete this.keyUriToKeyInfo[i],
5052                n && n.destroy();
5053            }),
5054            t
5055          );
5056        })(),
5057        br = (function () {
5058          function t() {
5059            (this._boundTick = void 0),
5060              (this._tickTimer = null),
5061              (this._tickInterval = null),
5062              (this._tickCallCount = 0),
5063              (this._boundTick = this.tick.bind(this));
5064          }
5065          var e = t.prototype;
5066          return (
5067            (e.destroy = function () {
5068              this.onHandlerDestroying(), this.onHandlerDestroyed();
5069            }),
5070            (e.onHandlerDestroying = function () {
5071              this.clearNextTick(), this.clearInterval();
5072            }),
5073            (e.onHandlerDestroyed = function () {}),
5074            (e.hasInterval = function () {
5075              return !!this._tickInterval;
5076            }),
5077            (e.hasNextTick = function () {
5078              return !!this._tickTimer;
5079            }),
5080            (e.setInterval = function (t) {
5081              return (
5082                !this._tickInterval &&
5083                ((this._tickCallCount = 0), (this._tickInterval = self.setInterval(this._boundTick, t)), !0)
5084              );
5085            }),
5086            (e.clearInterval = function () {
5087              return !!this._tickInterval && (self.clearInterval(this._tickInterval), (this._tickInterval = null), !0);
5088            }),
5089            (e.clearNextTick = function () {
5090              return !!this._tickTimer && (self.clearTimeout(this._tickTimer), (this._tickTimer = null), !0);
5091            }),
5092            (e.tick = function () {
5093              this._tickCallCount++,
5094                1 === this._tickCallCount &&
5095                  (this.doTick(), this._tickCallCount > 1 && this.tickImmediate(), (this._tickCallCount = 0));
5096            }),
5097            (e.tickImmediate = function () {
5098              this.clearNextTick(), (this._tickTimer = self.setTimeout(this._boundTick, 0));
5099            }),
5100            (e.doTick = function () {}),
5101            t
5102          );
5103        })(),
5104        Dr = {
5105          length: 0,
5106          start: function () {
5107            return 0;
5108          },
5109          end: function () {
5110            return 0;
5111          },
5112        },
5113        Ir = (function () {
5114          function t() {}
5115          return (
5116            (t.isBuffered = function (e, r) {
5117              try {
5118                if (e)
5119                  for (var i = t.getBuffered(e), n = 0; n < i.length; n++)
5120                    if (r >= i.start(n) && r <= i.end(n)) return !0;
5121              } catch (t) {}
5122              return !1;
5123            }),
5124            (t.bufferInfo = function (e, r, i) {
5125              try {
5126                if (e) {
5127                  var n,
5128                    a = t.getBuffered(e),
5129                    s = [];
5130                  for (n = 0; n < a.length; n++) s.push({ start: a.start(n), end: a.end(n) });
5131                  return this.bufferedInfo(s, r, i);
5132                }
5133              } catch (t) {}
5134              return { len: 0, start: r, end: r, nextStart: void 0 };
5135            }),
5136            (t.bufferedInfo = function (t, e, r) {
5137              (e = Math.max(0, e)),
5138                t.sort(function (t, e) {
5139                  var r = t.start - e.start;
5140                  return r || e.end - t.end;
5141                });
5142              var i = [];
5143              if (r)
5144                for (var n = 0; n < t.length; n++) {
5145                  var a = i.length;
5146                  if (a) {
5147                    var s = i[a - 1].end;
5148                    t[n].start - s < r ? t[n].end > s && (i[a - 1].end = t[n].end) : i.push(t[n]);
5149                  } else i.push(t[n]);
5150                }
5151              else i = t;
5152              for (var o, l = 0, u = e, h = e, d = 0; d < i.length; d++) {
5153                var c = i[d].start,
5154                  f = i[d].end;
5155                if (e + r >= c && e < f) (u = c), (l = (h = f) - e);
5156                else if (e + r < c) {
5157                  o = c;
5158                  break;
5159                }
5160              }
5161              return { len: l, start: u || 0, end: h || 0, nextStart: o };
5162            }),
5163            (t.getBuffered = function (t) {
5164              try {
5165                return t.buffered;
5166              } catch (t) {
5167                return w.log('failed to get media.buffered', t), Dr;
5168              }
5169            }),
5170            t
5171          );
5172        })(),
5173        wr = function (t, e, r, i, n, a) {
5174          void 0 === i && (i = 0),
5175            void 0 === n && (n = -1),
5176            void 0 === a && (a = !1),
5177            (this.level = void 0),
5178            (this.sn = void 0),
5179            (this.part = void 0),
5180            (this.id = void 0),
5181            (this.size = void 0),
5182            (this.partial = void 0),
5183            (this.transmuxing = { start: 0, executeStart: 0, executeEnd: 0, end: 0 }),
5184            (this.buffering = {
5185              audio: { start: 0, executeStart: 0, executeEnd: 0, end: 0 },
5186              video: { start: 0, executeStart: 0, executeEnd: 0, end: 0 },
5187              audiovideo: { start: 0, executeStart: 0, executeEnd: 0, end: 0 },
5188            }),
5189            (this.level = t),
5190            (this.sn = e),
5191            (this.id = r),
5192            (this.size = i),
5193            (this.part = n),
5194            (this.partial = a);
5195        };
5196      function Cr(t, e) {
5197        for (var r = null, i = 0, n = t.length; i < n; i++) {
5198          var a = t[i];
5199          if (a && a.cc === e) {
5200            r = a;
5201            break;
5202          }
5203        }
5204        return r;
5205      }
5206      function _r(t, e) {
5207        if (t) {
5208          var r = t.start + e;
5209          (t.start = t.startPTS = r), (t.endPTS = r + t.duration);
5210        }
5211      }
5212      function Pr(t, e) {
5213        for (var r = e.fragments, i = 0, n = r.length; i < n; i++) _r(r[i], t);
5214        e.fragmentHint && _r(e.fragmentHint, t), (e.alignedSliding = !0);
5215      }
5216      function xr(t, e, r) {
5217        e &&
5218          ((function (t, e, r) {
5219            if (
5220              (function (t, e, r) {
5221                return !(!e.details || !(r.endCC > r.startCC || (t && t.cc < r.startCC)));
5222              })(t, r, e)
5223            ) {
5224              var i = (function (t, e, r) {
5225                var i = t.fragments,
5226                  n = e.fragments;
5227                if (n.length && i.length) {
5228                  var a = Cr(i, n[0].cc);
5229                  if (a && (!a || a.startPTS)) return a;
5230                  w.log('No frag in previous level to align on');
5231                } else w.log('No fragments to align');
5232              })(r.details, e);
5233              i &&
5234                E(i.start) &&
5235                (w.log('Adjusting PTS using last level due to CC increase within current level ' + e.url),
5236                Pr(i.start, e));
5237            }
5238          })(t, r, e),
5239          !r.alignedSliding &&
5240            e.details &&
5241            (function (t, e) {
5242              if (e.fragments.length && t.hasProgramDateTime && e.hasProgramDateTime) {
5243                var r = e.fragments[0].programDateTime,
5244                  i = t.fragments[0].programDateTime,
5245                  n = (i - r) / 1e3 + e.fragments[0].start;
5246                n &&
5247                  E(n) &&
5248                  (w.log(
5249                    'Adjusting PTS using programDateTime delta ' +
5250                      (i - r) +
5251                      'ms, sliding:' +
5252                      n.toFixed(3) +
5253                      ' ' +
5254                      t.url +
5255                      ' ',
5256                  ),
5257                  Pr(n, t));
5258              }
5259            })(r, e.details),
5260          r.alignedSliding || !e.details || r.skippedSegments || Ke(e.details, r));
5261      }
5262      function Fr(t, e) {
5263        if (t.hasProgramDateTime && e.hasProgramDateTime) {
5264          var r = t.fragments,
5265            i = e.fragments;
5266          if (r.length && i.length) {
5267            var n = i[Math.round(i.length / 2) - 1],
5268              a = Cr(r, n.cc) || r[Math.round(r.length / 2) - 1],
5269              s = n.programDateTime,
5270              o = a.programDateTime;
5271            null !== s && null !== o && Pr((o - s) / 1e3 - (a.start - n.start), t);
5272          }
5273        }
5274      }
5275      var Mr = (function () {
5276          function t(t, e) {
5277            (this.subtle = void 0), (this.aesIV = void 0), (this.subtle = t), (this.aesIV = e);
5278          }
5279          return (
5280            (t.prototype.decrypt = function (t, e) {
5281              return this.subtle.decrypt({ name: 'AES-CBC', iv: this.aesIV }, e, t);
5282            }),
5283            t
5284          );
5285        })(),
5286        Or = (function () {
5287          function t(t, e) {
5288            (this.subtle = void 0), (this.key = void 0), (this.subtle = t), (this.key = e);
5289          }
5290          return (
5291            (t.prototype.expandKey = function () {
5292              return this.subtle.importKey('raw', this.key, { name: 'AES-CBC' }, !1, ['encrypt', 'decrypt']);
5293            }),
5294            t
5295          );
5296        })(),
5297        Nr = (function () {
5298          function t() {
5299            (this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]),
5300              (this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)]),
5301              (this.invSubMix = [
5302                new Uint32Array(256),
5303                new Uint32Array(256),
5304                new Uint32Array(256),
5305                new Uint32Array(256),
5306              ]),
5307              (this.sBox = new Uint32Array(256)),
5308              (this.invSBox = new Uint32Array(256)),
5309              (this.key = new Uint32Array(0)),
5310              (this.ksRows = 0),
5311              (this.keySize = 0),
5312              (this.keySchedule = void 0),
5313              (this.invKeySchedule = void 0),
5314              this.initTable();
5315          }
5316          var e = t.prototype;
5317          return (
5318            (e.uint8ArrayToUint32Array_ = function (t) {
5319              for (var e = new DataView(t), r = new Uint32Array(4), i = 0; i < 4; i++) r[i] = e.getUint32(4 * i);
5320              return r;
5321            }),
5322            (e.initTable = function () {
5323              var t = this.sBox,
5324                e = this.invSBox,
5325                r = this.subMix,
5326                i = r[0],
5327                n = r[1],
5328                a = r[2],
5329                s = r[3],
5330                o = this.invSubMix,
5331                l = o[0],
5332                u = o[1],
5333                h = o[2],
5334                d = o[3],
5335                c = new Uint32Array(256),
5336                f = 0,
5337                g = 0,
5338                v = 0;
5339              for (v = 0; v < 256; v++) c[v] = v < 128 ? v << 1 : (v << 1) ^ 283;
5340              for (v = 0; v < 256; v++) {
5341                var m = g ^ (g << 1) ^ (g << 2) ^ (g << 3) ^ (g << 4);
5342                (m = (m >>> 8) ^ (255 & m) ^ 99), (t[f] = m), (e[m] = f);
5343                var p = c[f],
5344                  y = c[p],
5345                  T = c[y],
5346                  E = (257 * c[m]) ^ (16843008 * m);
5347                (i[f] = (E << 24) | (E >>> 8)),
5348                  (n[f] = (E << 16) | (E >>> 16)),
5349                  (a[f] = (E << 8) | (E >>> 24)),
5350                  (s[f] = E),
5351                  (E = (16843009 * T) ^ (65537 * y) ^ (257 * p) ^ (16843008 * f)),
5352                  (l[m] = (E << 24) | (E >>> 8)),
5353                  (u[m] = (E << 16) | (E >>> 16)),
5354                  (h[m] = (E << 8) | (E >>> 24)),
5355                  (d[m] = E),
5356                  f ? ((f = p ^ c[c[c[T ^ p]]]), (g ^= c[c[g]])) : (f = g = 1);
5357              }
5358            }),
5359            (e.expandKey = function (t) {
5360              for (var e = this.uint8ArrayToUint32Array_(t), r = !0, i = 0; i < e.length && r; )
5361                (r = e[i] === this.key[i]), i++;
5362              if (!r) {
5363                this.key = e;
5364                var n = (this.keySize = e.length);
5365                if (4 !== n && 6 !== n && 8 !== n) throw new Error('Invalid aes key size=' + n);
5366                var a,
5367                  s,
5368                  o,
5369                  l,
5370                  u = (this.ksRows = 4 * (n + 6 + 1)),
5371                  h = (this.keySchedule = new Uint32Array(u)),
5372                  d = (this.invKeySchedule = new Uint32Array(u)),
5373                  c = this.sBox,
5374                  f = this.rcon,
5375                  g = this.invSubMix,
5376                  v = g[0],
5377                  m = g[1],
5378                  p = g[2],
5379                  y = g[3];
5380                for (a = 0; a < u; a++)
5381                  a < n
5382                    ? (o = h[a] = e[a])
5383                    : ((l = o),
5384                      a % n == 0
5385                        ? ((l =
5386                            (c[(l = (l << 8) | (l >>> 24)) >>> 24] << 24) |
5387                            (c[(l >>> 16) & 255] << 16) |
5388                            (c[(l >>> 8) & 255] << 8) |
5389                            c[255 & l]),
5390                          (l ^= f[(a / n) | 0] << 24))
5391                        : n > 6 &&
5392                          a % n == 4 &&
5393                          (l =
5394                            (c[l >>> 24] << 24) | (c[(l >>> 16) & 255] << 16) | (c[(l >>> 8) & 255] << 8) | c[255 & l]),
5395                      (h[a] = o = (h[a - n] ^ l) >>> 0));
5396                for (s = 0; s < u; s++)
5397                  (a = u - s),
5398                    (l = 3 & s ? h[a] : h[a - 4]),
5399                    (d[s] =
5400                      s < 4 || a <= 4
5401                        ? l
5402                        : v[c[l >>> 24]] ^ m[c[(l >>> 16) & 255]] ^ p[c[(l >>> 8) & 255]] ^ y[c[255 & l]]),
5403                    (d[s] = d[s] >>> 0);
5404              }
5405            }),
5406            (e.networkToHostOrderSwap = function (t) {
5407              return (t << 24) | ((65280 & t) << 8) | ((16711680 & t) >> 8) | (t >>> 24);
5408            }),
5409            (e.decrypt = function (t, e, r) {
5410              for (
5411                var i,
5412                  n,
5413                  a,
5414                  s,
5415                  o,
5416                  l,
5417                  u,
5418                  h,
5419                  d,
5420                  c,
5421                  f,
5422                  g,
5423                  v,
5424                  m,
5425                  p = this.keySize + 6,
5426                  y = this.invKeySchedule,
5427                  T = this.invSBox,
5428                  E = this.invSubMix,
5429                  S = E[0],
5430                  L = E[1],
5431                  R = E[2],
5432                  A = E[3],
5433                  k = this.uint8ArrayToUint32Array_(r),
5434                  b = k[0],
5435                  D = k[1],
5436                  I = k[2],
5437                  w = k[3],
5438                  C = new Int32Array(t),
5439                  _ = new Int32Array(C.length),
5440                  P = this.networkToHostOrderSwap;
5441                e < C.length;
5442
5443              ) {
5444                for (
5445                  d = P(C[e]),
5446                    c = P(C[e + 1]),
5447                    f = P(C[e + 2]),
5448                    g = P(C[e + 3]),
5449                    o = d ^ y[0],
5450                    l = g ^ y[1],
5451                    u = f ^ y[2],
5452                    h = c ^ y[3],
5453                    v = 4,
5454                    m = 1;
5455                  m < p;
5456                  m++
5457                )
5458                  (i = S[o >>> 24] ^ L[(l >> 16) & 255] ^ R[(u >> 8) & 255] ^ A[255 & h] ^ y[v]),
5459                    (n = S[l >>> 24] ^ L[(u >> 16) & 255] ^ R[(h >> 8) & 255] ^ A[255 & o] ^ y[v + 1]),
5460                    (a = S[u >>> 24] ^ L[(h >> 16) & 255] ^ R[(o >> 8) & 255] ^ A[255 & l] ^ y[v + 2]),
5461                    (s = S[h >>> 24] ^ L[(o >> 16) & 255] ^ R[(l >> 8) & 255] ^ A[255 & u] ^ y[v + 3]),
5462                    (o = i),
5463                    (l = n),
5464                    (u = a),
5465                    (h = s),
5466                    (v += 4);
5467                (i = (T[o >>> 24] << 24) ^ (T[(l >> 16) & 255] << 16) ^ (T[(u >> 8) & 255] << 8) ^ T[255 & h] ^ y[v]),
5468                  (n =
5469                    (T[l >>> 24] << 24) ^
5470                    (T[(u >> 16) & 255] << 16) ^
5471                    (T[(h >> 8) & 255] << 8) ^
5472                    T[255 & o] ^
5473                    y[v + 1]),
5474                  (a =
5475                    (T[u >>> 24] << 24) ^
5476                    (T[(h >> 16) & 255] << 16) ^
5477                    (T[(o >> 8) & 255] << 8) ^
5478                    T[255 & l] ^
5479                    y[v + 2]),
5480                  (s =
5481                    (T[h >>> 24] << 24) ^
5482                    (T[(o >> 16) & 255] << 16) ^
5483                    (T[(l >> 8) & 255] << 8) ^
5484                    T[255 & u] ^
5485                    y[v + 3]),
5486                  (_[e] = P(i ^ b)),
5487                  (_[e + 1] = P(s ^ D)),
5488                  (_[e + 2] = P(a ^ I)),
5489                  (_[e + 3] = P(n ^ w)),
5490                  (b = d),
5491                  (D = c),
5492                  (I = f),
5493                  (w = g),
5494                  (e += 4);
5495              }
5496              return _.buffer;
5497            }),
5498            t
5499          );
5500        })(),
5501        Ur = (function () {
5502          function t(t, e) {
5503            var r = (void 0 === e ? {} : e).removePKCS7Padding,
5504              i = void 0 === r || r;
5505            if (
5506              ((this.logEnabled = !0),
5507              (this.removePKCS7Padding = void 0),
5508              (this.subtle = null),
5509              (this.softwareDecrypter = null),
5510              (this.key = null),
5511              (this.fastAesKey = null),
5512              (this.remainderData = null),
5513              (this.currentIV = null),
5514              (this.currentResult = null),
5515              (this.useSoftware = void 0),
5516              (this.useSoftware = t.enableSoftwareAES),
5517              (this.removePKCS7Padding = i),
5518              i)
5519            )
5520              try {
5521                var n = self.crypto;
5522                n && (this.subtle = n.subtle || n.webkitSubtle);
5523              } catch (t) {}
5524            null === this.subtle && (this.useSoftware = !0);
5525          }
5526          var e = t.prototype;
5527          return (
5528            (e.destroy = function () {
5529              (this.subtle = null),
5530                (this.softwareDecrypter = null),
5531                (this.key = null),
5532                (this.fastAesKey = null),
5533                (this.remainderData = null),
5534                (this.currentIV = null),
5535                (this.currentResult = null);
5536            }),
5537            (e.isSync = function () {
5538              return this.useSoftware;
5539            }),
5540            (e.flush = function () {
5541              var t = this.currentResult,
5542                e = this.remainderData;
5543              if (!t || e) return this.reset(), null;
5544              var r,
5545                i,
5546                n,
5547                a = new Uint8Array(t);
5548              return (
5549                this.reset(),
5550                this.removePKCS7Padding
5551                  ? ((i = (r = a).byteLength), (n = i && new DataView(r.buffer).getUint8(i - 1)) ? rt(r, 0, i - n) : r)
5552                  : a
5553              );
5554            }),
5555            (e.reset = function () {
5556              (this.currentResult = null),
5557                (this.currentIV = null),
5558                (this.remainderData = null),
5559                this.softwareDecrypter && (this.softwareDecrypter = null);
5560            }),
5561            (e.decrypt = function (t, e, r) {
5562              var i = this;
5563              return this.useSoftware
5564                ? new Promise(function (n, a) {
5565                    i.softwareDecrypt(new Uint8Array(t), e, r);
5566                    var s = i.flush();
5567                    s ? n(s.buffer) : a(new Error('[softwareDecrypt] Failed to decrypt data'));
5568                  })
5569                : this.webCryptoDecrypt(new Uint8Array(t), e, r);
5570            }),
5571            (e.softwareDecrypt = function (t, e, r) {
5572              var i = this.currentIV,
5573                n = this.currentResult,
5574                a = this.remainderData;
5575              this.logOnce('JS AES decrypt'), a && ((t = xt(a, t)), (this.remainderData = null));
5576              var s = this.getValidChunk(t);
5577              if (!s.length) return null;
5578              i && (r = i);
5579              var o = this.softwareDecrypter;
5580              o || (o = this.softwareDecrypter = new Nr()), o.expandKey(e);
5581              var l = n;
5582              return (this.currentResult = o.decrypt(s.buffer, 0, r)), (this.currentIV = rt(s, -16).buffer), l || null;
5583            }),
5584            (e.webCryptoDecrypt = function (t, e, r) {
5585              var i = this,
5586                n = this.subtle;
5587              return (
5588                (this.key === e && this.fastAesKey) || ((this.key = e), (this.fastAesKey = new Or(n, e))),
5589                this.fastAesKey
5590                  .expandKey()
5591                  .then(function (e) {
5592                    return n
5593                      ? (i.logOnce('WebCrypto AES decrypt'), new Mr(n, new Uint8Array(r)).decrypt(t.buffer, e))
5594                      : Promise.reject(new Error('web crypto not initialized'));
5595                  })
5596                  .catch(function (n) {
5597                    return (
5598                      w.warn('[decrypter]: WebCrypto Error, disable WebCrypto API, ' + n.name + ': ' + n.message),
5599                      i.onWebCryptoError(t, e, r)
5600                    );
5601                  })
5602              );
5603            }),
5604            (e.onWebCryptoError = function (t, e, r) {
5605              (this.useSoftware = !0), (this.logEnabled = !0), this.softwareDecrypt(t, e, r);
5606              var i = this.flush();
5607              if (i) return i.buffer;
5608              throw new Error('WebCrypto and softwareDecrypt: failed to decrypt data');
5609            }),
5610            (e.getValidChunk = function (t) {
5611              var e = t,
5612                r = t.length - (t.length % 16);
5613              return r !== t.length && ((e = rt(t, 0, r)), (this.remainderData = rt(t, r))), e;
5614            }),
5615            (e.logOnce = function (t) {
5616              this.logEnabled && (w.log('[decrypter]: ' + t), (this.logEnabled = !1));
5617            }),
5618            t
5619          );
5620        })(),
5621        Br = function (t) {
5622          for (var e = '', r = t.length, i = 0; i < r; i++)
5623            e += '[' + t.start(i).toFixed(3) + '-' + t.end(i).toFixed(3) + ']';
5624          return e;
5625        },
5626        Gr = 'STOPPED',
5627        Kr = 'IDLE',
5628        Hr = 'KEY_LOADING',
5629        Vr = 'FRAG_LOADING',
5630        Yr = 'FRAG_LOADING_WAITING_RETRY',
5631        Wr = 'WAITING_TRACK',
5632        jr = 'PARSING',
5633        qr = 'PARSED',
5634        Xr = 'ENDED',
5635        zr = 'ERROR',
5636        Qr = 'WAITING_INIT_PTS',
5637        $r = 'WAITING_LEVEL',
5638        Jr = (function (t) {
5639          function e(e, r, i, n, a) {
5640            var s;
5641            return (
5642              ((s = t.call(this) || this).hls = void 0),
5643              (s.fragPrevious = null),
5644              (s.fragCurrent = null),
5645              (s.fragmentTracker = void 0),
5646              (s.transmuxer = null),
5647              (s._state = Gr),
5648              (s.playlistType = void 0),
5649              (s.media = null),
5650              (s.mediaBuffer = null),
5651              (s.config = void 0),
5652              (s.bitrateTest = !1),
5653              (s.lastCurrentTime = 0),
5654              (s.nextLoadPosition = 0),
5655              (s.startPosition = 0),
5656              (s.startTimeOffset = null),
5657              (s.loadedmetadata = !1),
5658              (s.retryDate = 0),
5659              (s.levels = null),
5660              (s.fragmentLoader = void 0),
5661              (s.keyLoader = void 0),
5662              (s.levelLastLoaded = null),
5663              (s.startFragRequested = !1),
5664              (s.decrypter = void 0),
5665              (s.initPTS = []),
5666              (s.onvseeking = null),
5667              (s.onvended = null),
5668              (s.logPrefix = ''),
5669              (s.log = void 0),
5670              (s.warn = void 0),
5671              (s.playlistType = a),
5672              (s.logPrefix = n),
5673              (s.log = w.log.bind(w, n + ':')),
5674              (s.warn = w.warn.bind(w, n + ':')),
5675              (s.hls = e),
5676              (s.fragmentLoader = new Sr(e.config)),
5677              (s.keyLoader = i),
5678              (s.fragmentTracker = r),
5679              (s.config = e.config),
5680              (s.decrypter = new Ur(e.config)),
5681              e.on(
5682                S.MANIFEST_LOADED,
5683                s.onManifestLoaded,
5684                (function (t) {
5685                  if (void 0 === t)
5686                    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
5687                  return t;
5688                })(s),
5689              ),
5690              s
5691            );
5692          }
5693          l(e, t);
5694          var r = e.prototype;
5695          return (
5696            (r.doTick = function () {
5697              this.onTickEnd();
5698            }),
5699            (r.onTickEnd = function () {}),
5700            (r.startLoad = function (t) {}),
5701            (r.stopLoad = function () {
5702              this.fragmentLoader.abort(), this.keyLoader.abort(this.playlistType);
5703              var t = this.fragCurrent;
5704              null != t && t.loader && (t.abortRequests(), this.fragmentTracker.removeFragment(t)),
5705                this.resetTransmuxer(),
5706                (this.fragCurrent = null),
5707                (this.fragPrevious = null),
5708                this.clearInterval(),
5709                this.clearNextTick(),
5710                (this.state = Gr);
5711            }),
5712            (r._streamEnded = function (t, e) {
5713              if (e.live || t.nextStart || !t.end || !this.media) return !1;
5714              var r = e.partList;
5715              if (null != r && r.length) {
5716                var i = r[r.length - 1];
5717                return Ir.isBuffered(this.media, i.start + i.duration / 2);
5718              }
5719              var n = e.fragments[e.fragments.length - 1].type;
5720              return this.fragmentTracker.isEndListAppended(n);
5721            }),
5722            (r.getLevelDetails = function () {
5723              var t;
5724              if (this.levels && null !== this.levelLastLoaded)
5725                return null == (t = this.levels[this.levelLastLoaded]) ? void 0 : t.details;
5726            }),
5727            (r.onMediaAttached = function (t, e) {
5728              var r = (this.media = this.mediaBuffer = e.media);
5729              (this.onvseeking = this.onMediaSeeking.bind(this)),
5730                (this.onvended = this.onMediaEnded.bind(this)),
5731                r.addEventListener('seeking', this.onvseeking),
5732                r.addEventListener('ended', this.onvended);
5733              var i = this.config;
5734              this.levels && i.autoStartLoad && this.state === Gr && this.startLoad(i.startPosition);
5735            }),
5736            (r.onMediaDetaching = function () {
5737              var t = this.media;
5738              null != t &&
5739                t.ended &&
5740                (this.log('MSE detaching and video ended, reset startPosition'),
5741                (this.startPosition = this.lastCurrentTime = 0)),
5742                t &&
5743                  this.onvseeking &&
5744                  this.onvended &&
5745                  (t.removeEventListener('seeking', this.onvseeking),
5746                  t.removeEventListener('ended', this.onvended),
5747                  (this.onvseeking = this.onvended = null)),
5748                this.keyLoader && this.keyLoader.detach(),
5749                (this.media = this.mediaBuffer = null),
5750                (this.loadedmetadata = !1),
5751                this.fragmentTracker.removeAllFragments(),
5752                this.stopLoad();
5753            }),
5754            (r.onMediaSeeking = function () {
5755              var t = this.config,
5756                e = this.fragCurrent,
5757                r = this.media,
5758                i = this.mediaBuffer,
5759                n = this.state,
5760                a = r ? r.currentTime : 0,
5761                s = Ir.bufferInfo(i || r, a, t.maxBufferHole);
5762              if ((this.log('media seeking to ' + (E(a) ? a.toFixed(3) : a) + ', state: ' + n), this.state === Xr))
5763                this.resetLoadingState();
5764              else if (e) {
5765                var o = t.maxFragLookUpTolerance,
5766                  l = e.start - o,
5767                  u = e.start + e.duration + o;
5768                if (!s.len || u < s.start || l > s.end) {
5769                  var h = a > u;
5770                  (a < l || h) &&
5771                    (h &&
5772                      e.loader &&
5773                      (this.log('seeking outside of buffer while fragment load in progress, cancel fragment load'),
5774                      e.abortRequests(),
5775                      this.resetLoadingState()),
5776                    (this.fragPrevious = null));
5777                }
5778              }
5779              r &&
5780                (this.fragmentTracker.removeFragmentsInRange(a, 1 / 0, this.playlistType, !0),
5781                (this.lastCurrentTime = a)),
5782                this.loadedmetadata || s.len || (this.nextLoadPosition = this.startPosition = a),
5783                this.tickImmediate();
5784            }),
5785            (r.onMediaEnded = function () {
5786              this.startPosition = this.lastCurrentTime = 0;
5787            }),
5788            (r.onManifestLoaded = function (t, e) {
5789              (this.startTimeOffset = e.startTimeOffset), (this.initPTS = []);
5790            }),
5791            (r.onHandlerDestroying = function () {
5792              this.stopLoad(), t.prototype.onHandlerDestroying.call(this);
5793            }),
5794            (r.onHandlerDestroyed = function () {
5795              (this.state = Gr),
5796                this.fragmentLoader && this.fragmentLoader.destroy(),
5797                this.keyLoader && this.keyLoader.destroy(),
5798                this.decrypter && this.decrypter.destroy(),
5799                (this.hls =
5800                  this.log =
5801                  this.warn =
5802                  this.decrypter =
5803                  this.keyLoader =
5804                  this.fragmentLoader =
5805                  this.fragmentTracker =
5806                    null),
5807                t.prototype.onHandlerDestroyed.call(this);
5808            }),
5809            (r.loadFragment = function (t, e, r) {
5810              this._loadFragForPlayback(t, e, r);
5811            }),
5812            (r._loadFragForPlayback = function (t, e, r) {
5813              var i = this;
5814              this._doFragLoad(t, e, r, function (e) {
5815                if (i.fragContextChanged(t))
5816                  return (
5817                    i.warn(
5818                      'Fragment ' +
5819                        t.sn +
5820                        (e.part ? ' p: ' + e.part.index : '') +
5821                        ' of level ' +
5822                        t.level +
5823                        ' was dropped during download.',
5824                    ),
5825                    void i.fragmentTracker.removeFragment(t)
5826                  );
5827                t.stats.chunkCount++, i._handleFragmentLoadProgress(e);
5828              })
5829                .then(function (e) {
5830                  if (e) {
5831                    var r = i.state;
5832                    i.fragContextChanged(t)
5833                      ? (r === Vr || (!i.fragCurrent && r === jr)) &&
5834                        (i.fragmentTracker.removeFragment(t), (i.state = Kr))
5835                      : ('payload' in e &&
5836                          (i.log('Loaded fragment ' + t.sn + ' of level ' + t.level), i.hls.trigger(S.FRAG_LOADED, e)),
5837                        i._handleFragmentLoadComplete(e));
5838                  }
5839                })
5840                .catch(function (e) {
5841                  i.state !== Gr && i.state !== zr && (i.warn(e), i.resetFragmentLoading(t));
5842                });
5843            }),
5844            (r.clearTrackerIfNeeded = function (t) {
5845              var e,
5846                r = this.fragmentTracker;
5847              if (r.getState(t) === gr) {
5848                var i = t.type,
5849                  n = this.getFwdBufferInfo(this.mediaBuffer, i),
5850                  a = Math.max(t.duration, n ? n.len : this.config.maxBufferLength);
5851                this.reduceMaxBufferLength(a) && r.removeFragment(t);
5852              } else
5853                0 === (null == (e = this.mediaBuffer) ? void 0 : e.buffered.length)
5854                  ? r.removeAllFragments()
5855                  : r.hasParts(t.type) &&
5856                    (r.detectPartialFragments({ frag: t, part: null, stats: t.stats, id: t.type }),
5857                    r.getState(t) === vr && r.removeFragment(t));
5858            }),
5859            (r.checkLiveUpdate = function (t) {
5860              if (t.updated && !t.live) {
5861                var e = t.fragments[t.fragments.length - 1];
5862                this.fragmentTracker.detectPartialFragments({ frag: e, part: null, stats: e.stats, id: e.type });
5863              }
5864              t.fragments[0] || (t.deltaUpdateFailed = !0);
5865            }),
5866            (r.flushMainBuffer = function (t, e, r) {
5867              if ((void 0 === r && (r = null), t - e)) {
5868                var i = { startOffset: t, endOffset: e, type: r };
5869                this.hls.trigger(S.BUFFER_FLUSHING, i);
5870              }
5871            }),
5872            (r._loadInitSegment = function (t, e) {
5873              var r = this;
5874              this._doFragLoad(t, e)
5875                .then(function (e) {
5876                  if (!e || r.fragContextChanged(t) || !r.levels) throw new Error('init load aborted');
5877                  return e;
5878                })
5879                .then(function (e) {
5880                  var i = r.hls,
5881                    n = e.payload,
5882                    a = t.decryptdata;
5883                  if (n && n.byteLength > 0 && a && a.key && a.iv && 'AES-128' === a.method) {
5884                    var s = self.performance.now();
5885                    return r.decrypter
5886                      .decrypt(new Uint8Array(n), a.key.buffer, a.iv.buffer)
5887                      .catch(function (e) {
5888                        throw (
5889                          (i.trigger(S.ERROR, {
5890                            type: L.MEDIA_ERROR,
5891                            details: R.FRAG_DECRYPT_ERROR,
5892                            fatal: !1,
5893                            error: e,
5894                            reason: e.message,
5895                            frag: t,
5896                          }),
5897                          e)
5898                        );
5899                      })
5900                      .then(function (r) {
5901                        var n = self.performance.now();
5902                        return (
5903                          i.trigger(S.FRAG_DECRYPTED, { frag: t, payload: r, stats: { tstart: s, tdecrypt: n } }),
5904                          (e.payload = r),
5905                          e
5906                        );
5907                      });
5908                  }
5909                  return e;
5910                })
5911                .then(function (i) {
5912                  var n = r.fragCurrent,
5913                    a = r.hls;
5914                  if (!r.levels) throw new Error('init load aborted, missing levels');
5915                  var s = t.stats;
5916                  (r.state = Kr),
5917                    (e.fragmentError = 0),
5918                    (t.data = new Uint8Array(i.payload)),
5919                    (s.parsing.start = s.buffering.start = self.performance.now()),
5920                    (s.parsing.end = s.buffering.end = self.performance.now()),
5921                    i.frag === n && a.trigger(S.FRAG_BUFFERED, { stats: s, frag: n, part: null, id: t.type }),
5922                    r.tick();
5923                })
5924                .catch(function (e) {
5925                  r.state !== Gr && r.state !== zr && (r.warn(e), r.resetFragmentLoading(t));
5926                });
5927            }),
5928            (r.fragContextChanged = function (t) {
5929              var e = this.fragCurrent;
5930              return !t || !e || t.level !== e.level || t.sn !== e.sn || t.urlId !== e.urlId;
5931            }),
5932            (r.fragBufferedComplete = function (t, e) {
5933              var r,
5934                i,
5935                n,
5936                a,
5937                s = this.mediaBuffer ? this.mediaBuffer : this.media;
5938              this.log(
5939                'Buffered ' +
5940                  t.type +
5941                  ' sn: ' +
5942                  t.sn +
5943                  (e ? ' part: ' + e.index : '') +
5944                  ' of ' +
5945                  (this.playlistType === ge ? 'level' : 'track') +
5946                  ' ' +
5947                  t.level +
5948                  ' (frag:[' +
5949                  (null != (r = t.startPTS) ? r : NaN).toFixed(3) +
5950                  '-' +
5951                  (null != (i = t.endPTS) ? i : NaN).toFixed(3) +
5952                  '] > buffer:' +
5953                  (s ? Br(Ir.getBuffered(s)) : '(detached)') +
5954                  ')',
5955              ),
5956                (this.state = Kr),
5957                s &&
5958                  (!this.loadedmetadata &&
5959                    t.type == ge &&
5960                    s.buffered.length &&
5961                    (null == (n = this.fragCurrent) ? void 0 : n.sn) ===
5962                      (null == (a = this.fragPrevious) ? void 0 : a.sn) &&
5963                    ((this.loadedmetadata = !0), this.seekToStartPos()),
5964                  this.tick());
5965            }),
5966            (r.seekToStartPos = function () {}),
5967            (r._handleFragmentLoadComplete = function (t) {
5968              var e = this.transmuxer;
5969              if (e) {
5970                var r = t.frag,
5971                  i = t.part,
5972                  n = t.partsLoaded,
5973                  a =
5974                    !n ||
5975                    0 === n.length ||
5976                    n.some(function (t) {
5977                      return !t;
5978                    }),
5979                  s = new wr(r.level, r.sn, r.stats.chunkCount + 1, 0, i ? i.index : -1, !a);
5980                e.flush(s);
5981              }
5982            }),
5983            (r._handleFragmentLoadProgress = function (t) {}),
5984            (r._doFragLoad = function (t, e, r, i) {
5985              var n,
5986                a = this;
5987              void 0 === r && (r = null);
5988              var s = null == e ? void 0 : e.details;
5989              if (!this.levels || !s) throw new Error('frag load aborted, missing level' + (s ? '' : ' detail') + 's');
5990              var o = null;
5991              if (
5992                (!t.encrypted || (null != (n = t.decryptdata) && n.key)
5993                  ? !t.encrypted && s.encryptedFragments.length && this.keyLoader.loadClear(t, s.encryptedFragments)
5994                  : (this.log(
5995                      'Loading key for ' +
5996                        t.sn +
5997                        ' of [' +
5998                        s.startSN +
5999                        '-' +
6000                        s.endSN +
6001                        '], ' +
6002                        ('[stream-controller]' === this.logPrefix ? 'level' : 'track') +
6003                        ' ' +
6004                        t.level,
6005                    ),
6006                    (this.state = Hr),
6007                    (this.fragCurrent = t),
6008                    (o = this.keyLoader.load(t).then(function (t) {
6009                      if (!a.fragContextChanged(t.frag))
6010                        return a.hls.trigger(S.KEY_LOADED, t), a.state === Hr && (a.state = Kr), t;
6011                    })),
6012                    this.hls.trigger(S.KEY_LOADING, { frag: t }),
6013                    null === this.fragCurrent &&
6014                      (o = Promise.reject(new Error('frag load aborted, context changed in KEY_LOADING')))),
6015                (r = Math.max(t.start, r || 0)),
6016                this.config.lowLatencyMode && 'initSegment' !== t.sn)
6017              ) {
6018                var l = s.partList;
6019                if (l && i) {
6020                  r > t.end && s.fragmentHint && (t = s.fragmentHint);
6021                  var u = this.getNextPart(l, t, r);
6022                  if (u > -1) {
6023                    var h,
6024                      d = l[u];
6025                    return (
6026                      this.log(
6027                        'Loading part sn: ' +
6028                          t.sn +
6029                          ' p: ' +
6030                          d.index +
6031                          ' cc: ' +
6032                          t.cc +
6033                          ' of playlist [' +
6034                          s.startSN +
6035                          '-' +
6036                          s.endSN +
6037                          '] parts [0-' +
6038                          u +
6039                          '-' +
6040                          (l.length - 1) +
6041                          '] ' +
6042                          ('[stream-controller]' === this.logPrefix ? 'level' : 'track') +
6043                          ': ' +
6044                          t.level +
6045                          ', target: ' +
6046                          parseFloat(r.toFixed(3)),
6047                      ),
6048                      (this.nextLoadPosition = d.start + d.duration),
6049                      (this.state = Vr),
6050                      (h = o
6051                        ? o
6052                            .then(function (r) {
6053                              return !r || a.fragContextChanged(r.frag) ? null : a.doFragPartsLoad(t, d, e, i);
6054                            })
6055                            .catch(function (t) {
6056                              return a.handleFragLoadError(t);
6057                            })
6058                        : this.doFragPartsLoad(t, d, e, i).catch(function (t) {
6059                            return a.handleFragLoadError(t);
6060                          })),
6061                      this.hls.trigger(S.FRAG_LOADING, { frag: t, part: d, targetBufferTime: r }),
6062                      null === this.fragCurrent
6063                        ? Promise.reject(new Error('frag load aborted, context changed in FRAG_LOADING parts'))
6064                        : h
6065                    );
6066                  }
6067                  if (!t.url || this.loadedEndOfParts(l, r)) return Promise.resolve(null);
6068                }
6069              }
6070              this.log(
6071                'Loading fragment ' +
6072                  t.sn +
6073                  ' cc: ' +
6074                  t.cc +
6075                  ' ' +
6076                  (s ? 'of [' + s.startSN + '-' + s.endSN + '] ' : '') +
6077                  ('[stream-controller]' === this.logPrefix ? 'level' : 'track') +
6078                  ': ' +
6079                  t.level +
6080                  ', target: ' +
6081                  parseFloat(r.toFixed(3)),
6082              ),
6083                E(t.sn) && !this.bitrateTest && (this.nextLoadPosition = t.start + t.duration),
6084                (this.state = Vr);
6085              var c,
6086                f = this.config.progressive;
6087              return (
6088                (c =
6089                  f && o
6090                    ? o
6091                        .then(function (e) {
6092                          return !e || a.fragContextChanged(null == e ? void 0 : e.frag)
6093                            ? null
6094                            : a.fragmentLoader.load(t, i);
6095                        })
6096                        .catch(function (t) {
6097                          return a.handleFragLoadError(t);
6098                        })
6099                    : Promise.all([this.fragmentLoader.load(t, f ? i : void 0), o])
6100                        .then(function (t) {
6101                          var e = t[0];
6102                          return !f && e && i && i(e), e;
6103                        })
6104                        .catch(function (t) {
6105                          return a.handleFragLoadError(t);
6106                        })),
6107                this.hls.trigger(S.FRAG_LOADING, { frag: t, targetBufferTime: r }),
6108                null === this.fragCurrent
6109                  ? Promise.reject(new Error('frag load aborted, context changed in FRAG_LOADING'))
6110                  : c
6111              );
6112            }),
6113            (r.doFragPartsLoad = function (t, e, r, i) {
6114              var n = this;
6115              return new Promise(function (a, s) {
6116                var o,
6117                  l = [],
6118                  u = null == (o = r.details) ? void 0 : o.partList;
6119                !(function e(o) {
6120                  n.fragmentLoader
6121                    .loadPart(t, o, i)
6122                    .then(function (i) {
6123                      l[o.index] = i;
6124                      var s = i.part;
6125                      n.hls.trigger(S.FRAG_LOADED, i);
6126                      var h = Ve(r, t.sn, o.index + 1) || Ye(u, t.sn, o.index + 1);
6127                      if (!h) return a({ frag: t, part: s, partsLoaded: l });
6128                      e(h);
6129                    })
6130                    .catch(s);
6131                })(e);
6132              });
6133            }),
6134            (r.handleFragLoadError = function (t) {
6135              if ('data' in t) {
6136                var e = t.data;
6137                t.data && e.details === R.INTERNAL_ABORTED
6138                  ? this.handleFragLoadAborted(e.frag, e.part)
6139                  : this.hls.trigger(S.ERROR, e);
6140              } else
6141                this.hls.trigger(S.ERROR, {
6142                  type: L.OTHER_ERROR,
6143                  details: R.INTERNAL_EXCEPTION,
6144                  err: t,
6145                  error: t,
6146                  fatal: !0,
6147                });
6148              return null;
6149            }),
6150            (r._handleTransmuxerFlush = function (t) {
6151              var e = this.getCurrentContext(t);
6152              if (e && this.state === jr) {
6153                var r = e.frag,
6154                  i = e.part,
6155                  n = e.level,
6156                  a = self.performance.now();
6157                (r.stats.parsing.end = a), i && (i.stats.parsing.end = a), this.updateLevelTiming(r, i, n, t.partial);
6158              } else this.fragCurrent || this.state === Gr || this.state === zr || (this.state = Kr);
6159            }),
6160            (r.getCurrentContext = function (t) {
6161              var e = this.levels,
6162                r = this.fragCurrent,
6163                i = t.level,
6164                n = t.sn,
6165                a = t.part;
6166              if (null == e || !e[i])
6167                return (
6168                  this.warn(
6169                    'Levels object was unset while buffering fragment ' +
6170                      n +
6171                      ' of level ' +
6172                      i +
6173                      '. The current chunk will not be buffered.',
6174                  ),
6175                  null
6176                );
6177              var s = e[i],
6178                o = a > -1 ? Ve(s, n, a) : null,
6179                l = o
6180                  ? o.fragment
6181                  : (function (t, e, r) {
6182                      if (null == t || !t.details) return null;
6183                      var i = t.details,
6184                        n = i.fragments[e - i.startSN];
6185                      return (
6186                        n || ((n = i.fragmentHint) && n.sn === e ? n : e < i.startSN && r && r.sn === e ? r : null)
6187                      );
6188                    })(s, n, r);
6189              return l ? (r && r !== l && (l.stats = r.stats), { frag: l, part: o, level: s }) : null;
6190            }),
6191            (r.bufferFragmentData = function (t, e, r, i, n) {
6192              var a;
6193              if (t && this.state === jr) {
6194                var s = t.data1,
6195                  o = t.data2,
6196                  l = s;
6197                if ((s && o && (l = xt(s, o)), null != (a = l) && a.length)) {
6198                  var u = { type: t.type, frag: e, part: r, chunkMeta: i, parent: e.type, data: l };
6199                  if ((this.hls.trigger(S.BUFFER_APPENDING, u), t.dropped && t.independent && !r)) {
6200                    if (n) return;
6201                    this.flushBufferGap(e);
6202                  }
6203                }
6204              }
6205            }),
6206            (r.flushBufferGap = function (t) {
6207              var e = this.media;
6208              if (e)
6209                if (Ir.isBuffered(e, e.currentTime)) {
6210                  var r = e.currentTime,
6211                    i = Ir.bufferInfo(e, r, 0),
6212                    n = t.duration,
6213                    a = Math.min(2 * this.config.maxFragLookUpTolerance, 0.25 * n),
6214                    s = Math.max(Math.min(t.start - a, i.end - a), r + a);
6215                  t.start - s > a && this.flushMainBuffer(s, t.start);
6216                } else this.flushMainBuffer(0, t.start);
6217            }),
6218            (r.getFwdBufferInfo = function (t, e) {
6219              var r = this.getLoadPosition();
6220              return E(r) ? this.getFwdBufferInfoAtPos(t, r, e) : null;
6221            }),
6222            (r.getFwdBufferInfoAtPos = function (t, e, r) {
6223              var i = this.config.maxBufferHole,
6224                n = Ir.bufferInfo(t, e, i);
6225              if (0 === n.len && void 0 !== n.nextStart) {
6226                var a = this.fragmentTracker.getBufferedFrag(e, r);
6227                if (a && n.nextStart < a.end) return Ir.bufferInfo(t, e, Math.max(n.nextStart, i));
6228              }
6229              return n;
6230            }),
6231            (r.getMaxBufferLength = function (t) {
6232              var e,
6233                r = this.config;
6234              return (
6235                (e = t ? Math.max((8 * r.maxBufferSize) / t, r.maxBufferLength) : r.maxBufferLength),
6236                Math.min(e, r.maxMaxBufferLength)
6237              );
6238            }),
6239            (r.reduceMaxBufferLength = function (t) {
6240              var e = this.config,
6241                r = t || e.maxBufferLength;
6242              return (
6243                e.maxMaxBufferLength >= r &&
6244                ((e.maxMaxBufferLength /= 2),
6245                this.warn('Reduce max buffer length to ' + e.maxMaxBufferLength + 's'),
6246                !0)
6247              );
6248            }),
6249            (r.getAppendedFrag = function (t, e) {
6250              var r = this.fragmentTracker.getAppendedFrag(t, ge);
6251              return r && 'fragment' in r ? r.fragment : r;
6252            }),
6253            (r.getNextFragment = function (t, e) {
6254              var r = e.fragments,
6255                i = r.length;
6256              if (!i) return null;
6257              var n,
6258                a = this.config,
6259                s = r[0].start;
6260              if (e.live) {
6261                var o = a.initialLiveManifestSize;
6262                if (i < o)
6263                  return this.warn('Not enough fragments to start playback (have: ' + i + ', need: ' + o + ')'), null;
6264                e.PTSKnown ||
6265                  this.startFragRequested ||
6266                  -1 !== this.startPosition ||
6267                  ((n = this.getInitialLiveFragment(e, r)),
6268                  (this.startPosition = n ? this.hls.liveSyncPosition || n.start : t));
6269              } else t <= s && (n = r[0]);
6270              if (!n) {
6271                var l = a.lowLatencyMode ? e.partEnd : e.fragmentEnd;
6272                n = this.getFragmentAtPosition(t, l, e);
6273              }
6274              return this.mapToInitFragWhenRequired(n);
6275            }),
6276            (r.isLoopLoading = function (t, e) {
6277              var r = this.fragmentTracker.getState(t);
6278              return (r === mr || (r === vr && !!t.gap)) && this.nextLoadPosition > e;
6279            }),
6280            (r.getNextFragmentLoopLoading = function (t, e, r, i, n) {
6281              var a = t.gap,
6282                s = this.getNextFragment(this.nextLoadPosition, e);
6283              if (null === s) return s;
6284              if (((t = s), a && t && !t.gap && r.nextStart)) {
6285                var o = this.getFwdBufferInfoAtPos(this.mediaBuffer ? this.mediaBuffer : this.media, r.nextStart, i);
6286                if (null !== o && r.len + o.len >= n)
6287                  return this.log('buffer full after gaps in "' + i + '" playlist starting at sn: ' + t.sn), null;
6288              }
6289              return t;
6290            }),
6291            (r.mapToInitFragWhenRequired = function (t) {
6292              return null == t || !t.initSegment || (null != t && t.initSegment.data) || this.bitrateTest
6293                ? t
6294                : t.initSegment;
6295            }),
6296            (r.getNextPart = function (t, e, r) {
6297              for (var i = -1, n = !1, a = !0, s = 0, o = t.length; s < o; s++) {
6298                var l = t[s];
6299                if (((a = a && !l.independent), i > -1 && r < l.start)) break;
6300                var u = l.loaded;
6301                u ? (i = -1) : (n || l.independent || a) && l.fragment === e && (i = s), (n = u);
6302              }
6303              return i;
6304            }),
6305            (r.loadedEndOfParts = function (t, e) {
6306              var r = t[t.length - 1];
6307              return r && e > r.start && r.loaded;
6308            }),
6309            (r.getInitialLiveFragment = function (t, e) {
6310              var r = this.fragPrevious,
6311                i = null;
6312              if (r) {
6313                if (
6314                  (t.hasProgramDateTime &&
6315                    (this.log('Live playlist, switching playlist, load frag with same PDT: ' + r.programDateTime),
6316                    (i = (function (t, e, r) {
6317                      if (null === e || !Array.isArray(t) || !t.length || !E(e)) return null;
6318                      if (e < (t[0].programDateTime || 0)) return null;
6319                      if (e >= (t[t.length - 1].endProgramDateTime || 0)) return null;
6320                      r = r || 0;
6321                      for (var i = 0; i < t.length; ++i) {
6322                        var n = t[i];
6323                        if (Ze(e, r, n)) return n;
6324                      }
6325                      return null;
6326                    })(e, r.endProgramDateTime, this.config.maxFragLookUpTolerance))),
6327                  !i)
6328                ) {
6329                  var n = r.sn + 1;
6330                  if (n >= t.startSN && n <= t.endSN) {
6331                    var a = e[n - t.startSN];
6332                    r.cc === a.cc &&
6333                      ((i = a), this.log('Live playlist, switching playlist, load frag with next SN: ' + i.sn));
6334                  }
6335                  i ||
6336                    ((i = (function (t, e) {
6337                      return Qe(t, function (t) {
6338                        return t.cc < e ? 1 : t.cc > e ? -1 : 0;
6339                      });
6340                    })(e, r.cc)),
6341                    i && this.log('Live playlist, switching playlist, load frag with same CC: ' + i.sn));
6342                }
6343              } else {
6344                var s = this.hls.liveSyncPosition;
6345                null !== s && (i = this.getFragmentAtPosition(s, this.bitrateTest ? t.fragmentEnd : t.edge, t));
6346              }
6347              return i;
6348            }),
6349            (r.getFragmentAtPosition = function (t, e, r) {
6350              var i,
6351                n = this.config,
6352                a = this.fragPrevious,
6353                s = r.fragments,
6354                o = r.endSN,
6355                l = r.fragmentHint,
6356                u = n.maxFragLookUpTolerance,
6357                h = r.partList,
6358                d = !!(n.lowLatencyMode && null != h && h.length && l);
6359              if (
6360                (d && l && !this.bitrateTest && ((s = s.concat(l)), (o = l.sn)),
6361                (i = t < e ? $e(a, s, t, t > e - u ? 0 : u) : s[s.length - 1]))
6362              ) {
6363                var c = i.sn - r.startSN,
6364                  f = this.fragmentTracker.getState(i);
6365                if (
6366                  ((f === mr || (f === vr && i.gap)) && (a = i),
6367                  a && i.sn === a.sn && (!d || h[0].fragment.sn > i.sn) && a && i.level === a.level)
6368                ) {
6369                  var g = s[c + 1];
6370                  i = i.sn < o && this.fragmentTracker.getState(g) !== mr ? g : null;
6371                }
6372              }
6373              return i;
6374            }),
6375            (r.synchronizeToLiveEdge = function (t) {
6376              var e = this.config,
6377                r = this.media;
6378              if (r) {
6379                var i = this.hls.liveSyncPosition,
6380                  n = r.currentTime,
6381                  a = t.fragments[0].start,
6382                  s = t.edge,
6383                  o = n >= a - e.maxFragLookUpTolerance && n <= s;
6384                if (null !== i && r.duration > i && (n < i || !o)) {
6385                  var l =
6386                    void 0 !== e.liveMaxLatencyDuration
6387                      ? e.liveMaxLatencyDuration
6388                      : e.liveMaxLatencyDurationCount * t.targetduration;
6389                  ((!o && r.readyState < 4) || n < s - l) &&
6390                    (this.loadedmetadata || (this.nextLoadPosition = i),
6391                    r.readyState &&
6392                      (this.warn(
6393                        'Playback: ' +
6394                          n.toFixed(3) +
6395                          ' is located too far from the end of live sliding playlist: ' +
6396                          s +
6397                          ', reset currentTime to : ' +
6398                          i.toFixed(3),
6399                      ),
6400                      (r.currentTime = i)));
6401                }
6402              }
6403            }),
6404            (r.alignPlaylists = function (t, e) {
6405              var r = this.levels,
6406                i = this.levelLastLoaded,
6407                n = this.fragPrevious,
6408                a = null !== i ? r[i] : null,
6409                s = t.fragments.length;
6410              if (!s) return this.warn('No fragments in live playlist'), 0;
6411              var o = t.fragments[0].start,
6412                l = !e,
6413                u = t.alignedSliding && E(o);
6414              if (l || (!u && !o)) {
6415                xr(n, a, t);
6416                var h = t.fragments[0].start;
6417                return (
6418                  this.log(
6419                    'Live playlist sliding: ' +
6420                      h.toFixed(2) +
6421                      ' start-sn: ' +
6422                      (e ? e.startSN : 'na') +
6423                      '->' +
6424                      t.startSN +
6425                      ' prev-sn: ' +
6426                      (n ? n.sn : 'na') +
6427                      ' fragments: ' +
6428                      s,
6429                  ),
6430                  h
6431                );
6432              }
6433              return o;
6434            }),
6435            (r.waitForCdnTuneIn = function (t) {
6436              return (
6437                t.live && t.canBlockReload && t.partTarget && t.tuneInGoal > Math.max(t.partHoldBack, 3 * t.partTarget)
6438              );
6439            }),
6440            (r.setStartPosition = function (t, e) {
6441              var r = this.startPosition;
6442              if ((r < e && (r = -1), -1 === r || -1 === this.lastCurrentTime)) {
6443                var i = null !== this.startTimeOffset,
6444                  n = i ? this.startTimeOffset : t.startTimeOffset;
6445                null !== n && E(n)
6446                  ? ((r = e + n),
6447                    n < 0 && (r += t.totalduration),
6448                    (r = Math.min(Math.max(e, r), e + t.totalduration)),
6449                    this.log(
6450                      'Start time offset ' +
6451                        n +
6452                        ' found in ' +
6453                        (i ? 'multivariant' : 'media') +
6454                        ' playlist, adjust startPosition to ' +
6455                        r,
6456                    ),
6457                    (this.startPosition = r))
6458                  : t.live
6459                  ? (r = this.hls.liveSyncPosition || e)
6460                  : (this.startPosition = r = 0),
6461                  (this.lastCurrentTime = r);
6462              }
6463              this.nextLoadPosition = r;
6464            }),
6465            (r.getLoadPosition = function () {
6466              var t = this.media,
6467                e = 0;
6468              return (
6469                this.loadedmetadata && t ? (e = t.currentTime) : this.nextLoadPosition && (e = this.nextLoadPosition), e
6470              );
6471            }),
6472            (r.handleFragLoadAborted = function (t, e) {
6473              this.transmuxer &&
6474                'initSegment' !== t.sn &&
6475                t.stats.aborted &&
6476                (this.warn(
6477                  'Fragment ' + t.sn + (e ? ' part ' + e.index : '') + ' of level ' + t.level + ' was aborted',
6478                ),
6479                this.resetFragmentLoading(t));
6480            }),
6481            (r.resetFragmentLoading = function (t) {
6482              (this.fragCurrent && (this.fragContextChanged(t) || this.state === Yr)) || (this.state = Kr);
6483            }),
6484            (r.onFragmentOrKeyLoadError = function (t, e) {
6485              if (e.chunkMeta && !e.frag) {
6486                var r = this.getCurrentContext(e.chunkMeta);
6487                r && (e.frag = r.frag);
6488              }
6489              var i = e.frag;
6490              if (i && i.type === t && this.levels)
6491                if (this.fragContextChanged(i)) {
6492                  var n;
6493                  this.warn(
6494                    'Frag load error must match current frag to retry ' +
6495                      i.url +
6496                      ' > ' +
6497                      (null == (n = this.fragCurrent) ? void 0 : n.url),
6498                  );
6499                } else {
6500                  var a = e.details === R.FRAG_GAP;
6501                  a && this.fragmentTracker.fragBuffered(i, !0);
6502                  var s = e.errorAction,
6503                    o = s || {},
6504                    l = o.action,
6505                    u = o.retryCount,
6506                    h = void 0 === u ? 0 : u,
6507                    d = o.retryConfig;
6508                  if (s && l === nr && d) {
6509                    var c;
6510                    this.resetStartWhenNotLoaded(null != (c = this.levelLastLoaded) ? c : i.level);
6511                    var f = qe(d, h);
6512                    this.warn(
6513                      'Fragment ' +
6514                        i.sn +
6515                        ' of ' +
6516                        t +
6517                        ' ' +
6518                        i.level +
6519                        ' errored with ' +
6520                        e.details +
6521                        ', retrying loading ' +
6522                        (h + 1) +
6523                        '/' +
6524                        d.maxNumRetry +
6525                        ' in ' +
6526                        f +
6527                        'ms',
6528                    ),
6529                      (s.resolved = !0),
6530                      (this.retryDate = self.performance.now() + f),
6531                      (this.state = Yr);
6532                  } else
6533                    d && s
6534                      ? (this.resetFragmentErrors(t),
6535                        h < d.maxNumRetry
6536                          ? a || (s.resolved = !0)
6537                          : w.warn(e.details + ' reached or exceeded max retry (' + h + ')'))
6538                      : (null == s ? void 0 : s.action) === ir
6539                      ? (this.state = $r)
6540                      : (this.state = zr);
6541                  this.tickImmediate();
6542                }
6543            }),
6544            (r.reduceLengthAndFlushBuffer = function (t) {
6545              if (this.state === jr || this.state === qr) {
6546                var e = t.parent,
6547                  r = this.getFwdBufferInfo(this.mediaBuffer, e),
6548                  i = r && r.len > 0.5;
6549                i && this.reduceMaxBufferLength(r.len);
6550                var n = !i;
6551                return (
6552                  n && this.warn('Buffer full error while media.currentTime is not buffered, flush ' + e + ' buffer'),
6553                  t.frag && (this.fragmentTracker.removeFragment(t.frag), (this.nextLoadPosition = t.frag.start)),
6554                  this.resetLoadingState(),
6555                  n
6556                );
6557              }
6558              return !1;
6559            }),
6560            (r.resetFragmentErrors = function (t) {
6561              t === ve && (this.fragCurrent = null),
6562                this.loadedmetadata || (this.startFragRequested = !1),
6563                this.state !== Gr && (this.state = Kr);
6564            }),
6565            (r.afterBufferFlushed = function (t, e, r) {
6566              if (t) {
6567                var i = Ir.getBuffered(t);
6568                this.fragmentTracker.detectEvictedFragments(e, i, r), this.state === Xr && this.resetLoadingState();
6569              }
6570            }),
6571            (r.resetLoadingState = function () {
6572              this.log('Reset loading state'), (this.fragCurrent = null), (this.fragPrevious = null), (this.state = Kr);
6573            }),
6574            (r.resetStartWhenNotLoaded = function (t) {
6575              if (!this.loadedmetadata) {
6576                this.startFragRequested = !1;
6577                var e = this.levels ? this.levels[t].details : null;
6578                null != e && e.live
6579                  ? ((this.startPosition = -1), this.setStartPosition(e, 0), this.resetLoadingState())
6580                  : (this.nextLoadPosition = this.startPosition);
6581              }
6582            }),
6583            (r.resetWhenMissingContext = function (t) {
6584              var e;
6585              this.warn(
6586                'The loading context changed while buffering fragment ' +
6587                  t.sn +
6588                  ' of level ' +
6589                  t.level +
6590                  '. This chunk will not be buffered.',
6591              ),
6592                this.removeUnbufferedFrags(),
6593                this.resetStartWhenNotLoaded(null != (e = this.levelLastLoaded) ? e : t.level),
6594                this.resetLoadingState();
6595            }),
6596            (r.removeUnbufferedFrags = function (t) {
6597              void 0 === t && (t = 0), this.fragmentTracker.removeFragmentsInRange(t, 1 / 0, this.playlistType, !1, !0);
6598            }),
6599            (r.updateLevelTiming = function (t, e, r, i) {
6600              var n,
6601                a = this,
6602                s = r.details;
6603              if (s) {
6604                if (
6605                  Object.keys(t.elementaryStreams).reduce(function (e, n) {
6606                    var o = t.elementaryStreams[n];
6607                    if (o) {
6608                      var l = o.endPTS - o.startPTS;
6609                      if (l <= 0)
6610                        return (
6611                          a.warn('Could not parse fragment ' + t.sn + ' ' + n + ' duration reliably (' + l + ')'),
6612                          e || !1
6613                        );
6614                      var u = i ? 0 : Be(s, t, o.startPTS, o.endPTS, o.startDTS, o.endDTS);
6615                      return (
6616                        a.hls.trigger(S.LEVEL_PTS_UPDATED, {
6617                          details: s,
6618                          level: r,
6619                          drift: u,
6620                          type: n,
6621                          frag: t,
6622                          start: o.startPTS,
6623                          end: o.endPTS,
6624                        }),
6625                        !0
6626                      );
6627                    }
6628                    return e;
6629                  }, !1)
6630                )
6631                  r.fragmentError = 0;
6632                else if (null === (null == (n = this.transmuxer) ? void 0 : n.error)) {
6633                  var o = new Error(
6634                    'Found no media in fragment ' +
6635                      t.sn +
6636                      ' of level ' +
6637                      t.level +
6638                      ' resetting transmuxer to fallback to playlist timing',
6639                  );
6640                  if (
6641                    (0 === r.fragmentError &&
6642                      (r.fragmentError++,
6643                      (t.gap = !0),
6644                      this.fragmentTracker.removeFragment(t),
6645                      this.fragmentTracker.fragBuffered(t, !0)),
6646                    this.warn(o.message),
6647                    this.hls.trigger(S.ERROR, {
6648                      type: L.MEDIA_ERROR,
6649                      details: R.FRAG_PARSING_ERROR,
6650                      fatal: !1,
6651                      error: o,
6652                      frag: t,
6653                      reason: 'Found no media in msn ' + t.sn + ' of level "' + r.url + '"',
6654                    }),
6655                    !this.hls)
6656                  )
6657                    return;
6658                  this.resetTransmuxer();
6659                }
6660                (this.state = qr), this.hls.trigger(S.FRAG_PARSED, { frag: t, part: e });
6661              } else this.warn('level.details undefined');
6662            }),
6663            (r.resetTransmuxer = function () {
6664              this.transmuxer && (this.transmuxer.destroy(), (this.transmuxer = null));
6665            }),
6666            (r.recoverWorkerError = function (t) {
6667              var e, r, i;
6668              'demuxerWorker' === t.event &&
6669                (this.fragmentTracker.removeAllFragments(),
6670                this.resetTransmuxer(),
6671                this.resetStartWhenNotLoaded(
6672                  null !=
6673                    (e = null != (r = this.levelLastLoaded) ? r : null == (i = this.fragCurrent) ? void 0 : i.level)
6674                    ? e
6675                    : 0,
6676                ),
6677                this.resetLoadingState());
6678            }),
6679            a(e, [
6680              {
6681                key: 'state',
6682                get: function () {
6683                  return this._state;
6684                },
6685                set: function (t) {
6686                  var e = this._state;
6687                  e !== t && ((this._state = t), this.log(e + '->' + t));
6688                },
6689              },
6690            ]),
6691            e
6692          );
6693        })(br);
6694      function Zr() {
6695        return self.SourceBuffer || self.WebKitSourceBuffer;
6696      }
6697      function ti(t, e) {
6698        return (
6699          void 0 === t && (t = ''),
6700          void 0 === e && (e = 9e4),
6701          { type: t, id: -1, pid: -1, inputTimeScale: e, sequenceNumber: -1, samples: [], dropped: 0 }
6702        );
6703      }
6704      var ei = (function () {
6705          function t() {
6706            (this._audioTrack = void 0),
6707              (this._id3Track = void 0),
6708              (this.frameIndex = 0),
6709              (this.cachedData = null),
6710              (this.basePTS = null),
6711              (this.initPTS = null),
6712              (this.lastPTS = null);
6713          }
6714          var e = t.prototype;
6715          return (
6716            (e.resetInitSegment = function (t, e, r, i) {
6717              this._id3Track = {
6718                type: 'id3',
6719                id: 3,
6720                pid: -1,
6721                inputTimeScale: 9e4,
6722                sequenceNumber: 0,
6723                samples: [],
6724                dropped: 0,
6725              };
6726            }),
6727            (e.resetTimeStamp = function (t) {
6728              (this.initPTS = t), this.resetContiguity();
6729            }),
6730            (e.resetContiguity = function () {
6731              (this.basePTS = null), (this.lastPTS = null), (this.frameIndex = 0);
6732            }),
6733            (e.canParse = function (t, e) {
6734              return !1;
6735            }),
6736            (e.appendFrame = function (t, e, r) {}),
6737            (e.demux = function (t, e) {
6738              this.cachedData && ((t = xt(this.cachedData, t)), (this.cachedData = null));
6739              var r,
6740                i = st(t, 0),
6741                n = i ? i.length : 0,
6742                a = this._audioTrack,
6743                s = this._id3Track,
6744                o = i
6745                  ? (function (t) {
6746                      for (var e = dt(t), r = 0; r < e.length; r++) {
6747                        var i = e[r];
6748                        if (ut(i)) return mt(i);
6749                      }
6750                    })(i)
6751                  : void 0,
6752                l = t.length;
6753              for (
6754                (null === this.basePTS || (0 === this.frameIndex && E(o))) &&
6755                  ((this.basePTS = ri(o, e, this.initPTS)), (this.lastPTS = this.basePTS)),
6756                  null === this.lastPTS && (this.lastPTS = this.basePTS),
6757                  i &&
6758                    i.length > 0 &&
6759                    s.samples.push({
6760                      pts: this.lastPTS,
6761                      dts: this.lastPTS,
6762                      data: i,
6763                      type: Ae,
6764                      duration: Number.POSITIVE_INFINITY,
6765                    });
6766                n < l;
6767
6768              ) {
6769                if (this.canParse(t, n)) {
6770                  var u = this.appendFrame(a, t, n);
6771                  u ? (this.frameIndex++, (this.lastPTS = u.sample.pts), (r = n += u.length)) : (n = l);
6772                } else
6773                  lt(t, n)
6774                    ? ((i = st(t, n)),
6775                      s.samples.push({
6776                        pts: this.lastPTS,
6777                        dts: this.lastPTS,
6778                        data: i,
6779                        type: Ae,
6780                        duration: Number.POSITIVE_INFINITY,
6781                      }),
6782                      (r = n += i.length))
6783                    : n++;
6784                if (n === l && r !== l) {
6785                  var h = rt(t, r);
6786                  this.cachedData ? (this.cachedData = xt(this.cachedData, h)) : (this.cachedData = h);
6787                }
6788              }
6789              return { audioTrack: a, videoTrack: ti(), id3Track: s, textTrack: ti() };
6790            }),
6791            (e.demuxSampleAes = function (t, e, r) {
6792              return Promise.reject(new Error('[' + this + '] This demuxer does not support Sample-AES decryption'));
6793            }),
6794            (e.flush = function (t) {
6795              var e = this.cachedData;
6796              return (
6797                e && ((this.cachedData = null), this.demux(e, 0)),
6798                { audioTrack: this._audioTrack, videoTrack: ti(), id3Track: this._id3Track, textTrack: ti() }
6799              );
6800            }),
6801            (e.destroy = function () {}),
6802            t
6803          );
6804        })(),
6805        ri = function (t, e, r) {
6806          return E(t) ? 90 * t : 9e4 * e + (r ? (9e4 * r.baseTime) / r.timescale : 0);
6807        };
6808      function ii(t, e) {
6809        return 255 === t[e] && 240 == (246 & t[e + 1]);
6810      }
6811      function ni(t, e) {
6812        return 1 & t[e + 1] ? 7 : 9;
6813      }
6814      function ai(t, e) {
6815        return ((3 & t[e + 3]) << 11) | (t[e + 4] << 3) | ((224 & t[e + 5]) >>> 5);
6816      }
6817      function si(t, e) {
6818        return e + 1 < t.length && ii(t, e);
6819      }
6820      function oi(t, e) {
6821        if (si(t, e)) {
6822          var r = ni(t, e);
6823          if (e + r >= t.length) return !1;
6824          var i = ai(t, e);
6825          if (i <= r) return !1;
6826          var n = e + i;
6827          return n === t.length || si(t, n);
6828        }
6829        return !1;
6830      }
6831      function li(t, e, r, i, n) {
6832        if (!t.samplerate) {
6833          var a = (function (t, e, r, i) {
6834            var n,
6835              a,
6836              s,
6837              o,
6838              l = navigator.userAgent.toLowerCase(),
6839              u = i,
6840              h = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
6841            n = 1 + ((192 & e[r + 2]) >>> 6);
6842            var d = (60 & e[r + 2]) >>> 2;
6843            if (!(d > h.length - 1))
6844              return (
6845                (s = (1 & e[r + 2]) << 2),
6846                (s |= (192 & e[r + 3]) >>> 6),
6847                w.log('manifest codec:' + i + ', ADTS type:' + n + ', samplingIndex:' + d),
6848                /firefox/i.test(l)
6849                  ? d >= 6
6850                    ? ((n = 5), (o = new Array(4)), (a = d - 3))
6851                    : ((n = 2), (o = new Array(2)), (a = d))
6852                  : -1 !== l.indexOf('android')
6853                  ? ((n = 2), (o = new Array(2)), (a = d))
6854                  : ((n = 5),
6855                    (o = new Array(4)),
6856                    (i && (-1 !== i.indexOf('mp4a.40.29') || -1 !== i.indexOf('mp4a.40.5'))) || (!i && d >= 6)
6857                      ? (a = d - 3)
6858                      : (((i && -1 !== i.indexOf('mp4a.40.2') && ((d >= 6 && 1 === s) || /vivaldi/i.test(l))) ||
6859                          (!i && 1 === s)) &&
6860                          ((n = 2), (o = new Array(2))),
6861                        (a = d))),
6862                (o[0] = n << 3),
6863                (o[0] |= (14 & d) >> 1),
6864                (o[1] |= (1 & d) << 7),
6865                (o[1] |= s << 3),
6866                5 === n && ((o[1] |= (14 & a) >> 1), (o[2] = (1 & a) << 7), (o[2] |= 8), (o[3] = 0)),
6867                { config: o, samplerate: h[d], channelCount: s, codec: 'mp4a.40.' + n, manifestCodec: u }
6868              );
6869            t.trigger(S.ERROR, {
6870              type: L.MEDIA_ERROR,
6871              details: R.FRAG_PARSING_ERROR,
6872              fatal: !0,
6873              reason: 'invalid ADTS sampling index:' + d,
6874            });
6875          })(e, r, i, n);
6876          if (!a) return;
6877          (t.config = a.config),
6878            (t.samplerate = a.samplerate),
6879            (t.channelCount = a.channelCount),
6880            (t.codec = a.codec),
6881            (t.manifestCodec = a.manifestCodec),
6882            w.log('parsed codec:' + t.codec + ', rate:' + a.samplerate + ', channels:' + a.channelCount);
6883        }
6884      }
6885      function ui(t) {
6886        return 9216e4 / t;
6887      }
6888      function hi(t, e, r, i, n) {
6889        var a,
6890          s = i + n * ui(t.samplerate),
6891          o = (function (t, e) {
6892            var r = ni(t, e);
6893            if (e + r <= t.length) {
6894              var i = ai(t, e) - r;
6895              if (i > 0) return { headerLength: r, frameLength: i };
6896            }
6897          })(e, r);
6898        if (o) {
6899          var l = o.frameLength,
6900            u = o.headerLength,
6901            h = u + l,
6902            d = Math.max(0, r + h - e.length);
6903          d ? (a = new Uint8Array(h - u)).set(e.subarray(r + u, e.length), 0) : (a = e.subarray(r + u, r + h));
6904          var c = { unit: a, pts: s };
6905          return d || t.samples.push(c), { sample: c, length: h, missing: d };
6906        }
6907        var f = e.length - r;
6908        return (
6909          (a = new Uint8Array(f)).set(e.subarray(r, e.length), 0),
6910          { sample: { unit: a, pts: s }, length: f, missing: -1 }
6911        );
6912      }
6913      var di = (function (t) {
6914          function e(e, r) {
6915            var i;
6916            return (
6917              ((i = t.call(this) || this).observer = void 0), (i.config = void 0), (i.observer = e), (i.config = r), i
6918            );
6919          }
6920          l(e, t);
6921          var r = e.prototype;
6922          return (
6923            (r.resetInitSegment = function (e, r, i, n) {
6924              t.prototype.resetInitSegment.call(this, e, r, i, n),
6925                (this._audioTrack = {
6926                  container: 'audio/adts',
6927                  type: 'audio',
6928                  id: 2,
6929                  pid: -1,
6930                  sequenceNumber: 0,
6931                  segmentCodec: 'aac',
6932                  samples: [],
6933                  manifestCodec: r,
6934                  duration: n,
6935                  inputTimeScale: 9e4,
6936                  dropped: 0,
6937                });
6938            }),
6939            (e.probe = function (t) {
6940              if (!t) return !1;
6941              for (var e = (st(t, 0) || []).length, r = t.length; e < r; e++)
6942                if (oi(t, e)) return w.log('ADTS sync word found !'), !0;
6943              return !1;
6944            }),
6945            (r.canParse = function (t, e) {
6946              return (function (t, e) {
6947                return (
6948                  (function (t, e) {
6949                    return e + 5 < t.length;
6950                  })(t, e) &&
6951                  ii(t, e) &&
6952                  ai(t, e) <= t.length - e
6953                );
6954              })(t, e);
6955            }),
6956            (r.appendFrame = function (t, e, r) {
6957              li(t, this.observer, e, r, t.manifestCodec);
6958              var i = hi(t, e, r, this.basePTS, this.frameIndex);
6959              if (i && 0 === i.missing) return i;
6960            }),
6961            e
6962          );
6963        })(ei),
6964        ci = /\/emsg[-/]ID3/i,
6965        fi = (function () {
6966          function t(t, e) {
6967            (this.remainderData = null),
6968              (this.timeOffset = 0),
6969              (this.config = void 0),
6970              (this.videoTrack = void 0),
6971              (this.audioTrack = void 0),
6972              (this.id3Track = void 0),
6973              (this.txtTrack = void 0),
6974              (this.config = e);
6975          }
6976          var e = t.prototype;
6977          return (
6978            (e.resetTimeStamp = function () {}),
6979            (e.resetInitSegment = function (t, e, r, i) {
6980              var n = (this.videoTrack = ti('video', 1)),
6981                a = (this.audioTrack = ti('audio', 1)),
6982                s = (this.txtTrack = ti('text', 1));
6983              if (((this.id3Track = ti('id3', 1)), (this.timeOffset = 0), null != t && t.byteLength)) {
6984                var o = Ct(t);
6985                if (o.video) {
6986                  var l = o.video,
6987                    u = l.id,
6988                    h = l.timescale,
6989                    d = l.codec;
6990                  (n.id = u), (n.timescale = s.timescale = h), (n.codec = d);
6991                }
6992                if (o.audio) {
6993                  var c = o.audio,
6994                    f = c.id,
6995                    g = c.timescale,
6996                    v = c.codec;
6997                  (a.id = f), (a.timescale = g), (a.codec = v);
6998                }
6999                (s.id = Lt.text), (n.sampleDuration = 0), (n.duration = a.duration = i);
7000              }
7001            }),
7002            (e.resetContiguity = function () {
7003              this.remainderData = null;
7004            }),
7005            (t.probe = function (t) {
7006              return It((t = t.length > 16384 ? t.subarray(0, 16384) : t), ['moof']).length > 0;
7007            }),
7008            (e.demux = function (t, e) {
7009              this.timeOffset = e;
7010              var r = t,
7011                i = this.videoTrack,
7012                n = this.txtTrack;
7013              if (this.config.progressive) {
7014                this.remainderData && (r = xt(this.remainderData, t));
7015                var a = (function (t) {
7016                  var e = { valid: null, remainder: null },
7017                    r = It(t, ['moof']);
7018                  if (!r) return e;
7019                  if (r.length < 2) return (e.remainder = t), e;
7020                  var i = r[r.length - 1];
7021                  return (e.valid = rt(t, 0, i.byteOffset - 8)), (e.remainder = rt(t, i.byteOffset - 8)), e;
7022                })(r);
7023                (this.remainderData = a.remainder), (i.samples = a.valid || new Uint8Array());
7024              } else i.samples = r;
7025              var s = this.extractID3Track(i, e);
7026              return (
7027                (n.samples = Ft(e, i)),
7028                { videoTrack: i, audioTrack: this.audioTrack, id3Track: s, textTrack: this.txtTrack }
7029              );
7030            }),
7031            (e.flush = function () {
7032              var t = this.timeOffset,
7033                e = this.videoTrack,
7034                r = this.txtTrack;
7035              (e.samples = this.remainderData || new Uint8Array()), (this.remainderData = null);
7036              var i = this.extractID3Track(e, this.timeOffset);
7037              return (r.samples = Ft(t, e)), { videoTrack: e, audioTrack: ti(), id3Track: i, textTrack: ti() };
7038            }),
7039            (e.extractID3Track = function (t, e) {
7040              var r = this.id3Track;
7041              if (t.samples.length) {
7042                var i = It(t.samples, ['emsg']);
7043                i &&
7044                  i.forEach(function (t) {
7045                    var i = (function (t) {
7046                      var e = t[0],
7047                        r = '',
7048                        i = '',
7049                        n = 0,
7050                        a = 0,
7051                        s = 0,
7052                        o = 0,
7053                        l = 0,
7054                        u = 0;
7055                      if (0 === e) {
7056                        for (; '\0' !== Rt(t.subarray(u, u + 1)); ) (r += Rt(t.subarray(u, u + 1))), (u += 1);
7057                        for (r += Rt(t.subarray(u, u + 1)), u += 1; '\0' !== Rt(t.subarray(u, u + 1)); )
7058                          (i += Rt(t.subarray(u, u + 1))), (u += 1);
7059                        (i += Rt(t.subarray(u, u + 1))),
7060                          (u += 1),
7061                          (n = kt(t, 12)),
7062                          (a = kt(t, 16)),
7063                          (o = kt(t, 20)),
7064                          (l = kt(t, 24)),
7065                          (u = 28);
7066                      } else if (1 === e) {
7067                        n = kt(t, (u += 4));
7068                        var h = kt(t, (u += 4)),
7069                          d = kt(t, (u += 4));
7070                        for (
7071                          u += 4,
7072                            s = Math.pow(2, 32) * h + d,
7073                            Number.isSafeInteger(s) ||
7074                              ((s = Number.MAX_SAFE_INTEGER),
7075                              w.warn(
7076                                'Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box',
7077                              )),
7078                            o = kt(t, u),
7079                            l = kt(t, (u += 4)),
7080                            u += 4;
7081                          '\0' !== Rt(t.subarray(u, u + 1));
7082
7083                        )
7084                          (r += Rt(t.subarray(u, u + 1))), (u += 1);
7085                        for (r += Rt(t.subarray(u, u + 1)), u += 1; '\0' !== Rt(t.subarray(u, u + 1)); )
7086                          (i += Rt(t.subarray(u, u + 1))), (u += 1);
7087                        (i += Rt(t.subarray(u, u + 1))), (u += 1);
7088                      }
7089                      return {
7090                        schemeIdUri: r,
7091                        value: i,
7092                        timeScale: n,
7093                        presentationTime: s,
7094                        presentationTimeDelta: a,
7095                        eventDuration: o,
7096                        id: l,
7097                        payload: t.subarray(u, t.byteLength),
7098                      };
7099                    })(t);
7100                    if (ci.test(i.schemeIdUri)) {
7101                      var n = E(i.presentationTime)
7102                          ? i.presentationTime / i.timeScale
7103                          : e + i.presentationTimeDelta / i.timeScale,
7104                        a = 4294967295 === i.eventDuration ? Number.POSITIVE_INFINITY : i.eventDuration / i.timeScale;
7105                      a <= 0.001 && (a = Number.POSITIVE_INFINITY);
7106                      var s = i.payload;
7107                      r.samples.push({ data: s, len: s.byteLength, dts: n, pts: n, type: be, duration: a });
7108                    }
7109                  });
7110              }
7111              return r;
7112            }),
7113            (e.demuxSampleAes = function (t, e, r) {
7114              return Promise.reject(new Error('The MP4 demuxer does not support SAMPLE-AES decryption'));
7115            }),
7116            (e.destroy = function () {}),
7117            t
7118          );
7119        })(),
7120        gi = null,
7121        vi = [
7122          32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192,
7123          224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96,
7124          112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,
7125        ],
7126        mi = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3],
7127        pi = [
7128          [0, 72, 144, 12],
7129          [0, 0, 0, 0],
7130          [0, 72, 144, 12],
7131          [0, 144, 144, 12],
7132        ],
7133        yi = [0, 1, 1, 4];
7134      function Ti(t, e, r, i, n) {
7135        if (!(r + 24 > e.length)) {
7136          var a = Ei(e, r);
7137          if (a && r + a.frameLength <= e.length) {
7138            var s = i + n * ((9e4 * a.samplesPerFrame) / a.sampleRate),
7139              o = { unit: e.subarray(r, r + a.frameLength), pts: s, dts: s };
7140            return (
7141              (t.config = []),
7142              (t.channelCount = a.channelCount),
7143              (t.samplerate = a.sampleRate),
7144              t.samples.push(o),
7145              { sample: o, length: a.frameLength, missing: 0 }
7146            );
7147          }
7148        }
7149      }
7150      function Ei(t, e) {
7151        var r = (t[e + 1] >> 3) & 3,
7152          i = (t[e + 1] >> 1) & 3,
7153          n = (t[e + 2] >> 4) & 15,
7154          a = (t[e + 2] >> 2) & 3;
7155        if (1 !== r && 0 !== n && 15 !== n && 3 !== a) {
7156          var s = (t[e + 2] >> 1) & 1,
7157            o = t[e + 3] >> 6,
7158            l = 1e3 * vi[14 * (3 === r ? 3 - i : 3 === i ? 3 : 4) + n - 1],
7159            u = mi[3 * (3 === r ? 0 : 2 === r ? 1 : 2) + a],
7160            h = 3 === o ? 1 : 2,
7161            d = pi[r][i],
7162            c = yi[i],
7163            f = 8 * d * c,
7164            g = Math.floor((d * l) / u + s) * c;
7165          if (null === gi) {
7166            var v = (navigator.userAgent || '').match(/Chrome\/(\d+)/i);
7167            gi = v ? parseInt(v[1]) : 0;
7168          }
7169          return (
7170            !!gi && gi <= 87 && 2 === i && l >= 224e3 && 0 === o && (t[e + 3] = 128 | t[e + 3]),
7171            { sampleRate: u, channelCount: h, frameLength: g, samplesPerFrame: f }
7172          );
7173        }
7174      }
7175      function Si(t, e) {
7176        return 255 === t[e] && 224 == (224 & t[e + 1]) && 0 != (6 & t[e + 1]);
7177      }
7178      function Li(t, e) {
7179        return e + 1 < t.length && Si(t, e);
7180      }
7181      function Ri(t, e) {
7182        if (e + 1 < t.length && Si(t, e)) {
7183          var r = Ei(t, e),
7184            i = 4;
7185          null != r && r.frameLength && (i = r.frameLength);
7186          var n = e + i;
7187          return n === t.length || Li(t, n);
7188        }
7189        return !1;
7190      }
7191      var Ai = (function () {
7192          function t(t) {
7193            (this.data = void 0),
7194              (this.bytesAvailable = void 0),
7195              (this.word = void 0),
7196              (this.bitsAvailable = void 0),
7197              (this.data = t),
7198              (this.bytesAvailable = t.byteLength),
7199              (this.word = 0),
7200              (this.bitsAvailable = 0);
7201          }
7202          var e = t.prototype;
7203          return (
7204            (e.loadWord = function () {
7205              var t = this.data,
7206                e = this.bytesAvailable,
7207                r = t.byteLength - e,
7208                i = new Uint8Array(4),
7209                n = Math.min(4, e);
7210              if (0 === n) throw new Error('no bytes available');
7211              i.set(t.subarray(r, r + n)),
7212                (this.word = new DataView(i.buffer).getUint32(0)),
7213                (this.bitsAvailable = 8 * n),
7214                (this.bytesAvailable -= n);
7215            }),
7216            (e.skipBits = function (t) {
7217              var e;
7218              (t = Math.min(t, 8 * this.bytesAvailable + this.bitsAvailable)),
7219                this.bitsAvailable > t
7220                  ? ((this.word <<= t), (this.bitsAvailable -= t))
7221                  : ((t -= this.bitsAvailable),
7222                    (t -= (e = t >> 3) << 3),
7223                    (this.bytesAvailable -= e),
7224                    this.loadWord(),
7225                    (this.word <<= t),
7226                    (this.bitsAvailable -= t));
7227            }),
7228            (e.readBits = function (t) {
7229              var e = Math.min(this.bitsAvailable, t),
7230                r = this.word >>> (32 - e);
7231              if (
7232                (t > 32 && w.error('Cannot read more than 32 bits at a time'),
7233                (this.bitsAvailable -= e),
7234                this.bitsAvailable > 0)
7235              )
7236                this.word <<= e;
7237              else {
7238                if (!(this.bytesAvailable > 0)) throw new Error('no bits available');
7239                this.loadWord();
7240              }
7241              return (e = t - e) > 0 && this.bitsAvailable ? (r << e) | this.readBits(e) : r;
7242            }),
7243            (e.skipLZ = function () {
7244              var t;
7245              for (t = 0; t < this.bitsAvailable;
7245 ++t)
7246                if (0 != (this.word & (2147483648 >>> t))) return (this.word <<= t), (this.bitsAvailable -= t), t;
7247              return this.loadWord(), t + this.skipLZ();
7248            }),
7249            (e.skipUEG = function () {
7250              this.skipBits(1 + this.skipLZ());
7251            }),
7252            (e.skipEG = function () {
7253              this.skipBits(1 + this.skipLZ());
7254            }),
7255            (e.readUEG = function () {
7256              var t = this.skipLZ();
7257              return this.readBits(t + 1) - 1;
7258            }),
7259            (e.readEG = function () {
7260              var t = this.readUEG();
7261              return 1 & t ? (1 + t) >>> 1 : -1 * (t >>> 1);
7262            }),
7263            (e.readBoolean = function () {
7264              return 1 === this.readBits(1);
7265            }),
7266            (e.readUByte = function () {
7267              return this.readBits(8);
7268            }),
7269            (e.readUShort = function () {
7270              return this.readBits(16);
7271            }),
7272            (e.readUInt = function () {
7273              return this.readBits(32);
7274            }),
7275            (e.skipScalingList = function (t) {
7276              for (var e = 8, r = 8, i = 0; i < t; i++)
7277                0 !== r && (r = (e + this.readEG() + 256) % 256), (e = 0 === r ? e : r);
7278            }),
7279            (e.readSPS = function () {
7280              var t,
7281                e,
7282                r,
7283                i = 0,
7284                n = 0,
7285                a = 0,
7286                s = 0,
7287                o = this.readUByte.bind(this),
7288                l = this.readBits.bind(this),
7289                u = this.readUEG.bind(this),
7290                h = this.readBoolean.bind(this),
7291                d = this.skipBits.bind(this),
7292                c = this.skipEG.bind(this),
7293                f = this.skipUEG.bind(this),
7294                g = this.skipScalingList.bind(this);
7295              o();
7296              var v = o();
7297              if (
7298                (l(5),
7299                d(3),
7300                o(),
7301                f(),
7302                100 === v ||
7303                  110 === v ||
7304                  122 === v ||
7305                  244 === v ||
7306                  44 === v ||
7307                  83 === v ||
7308                  86 === v ||
7309                  118 === v ||
7310                  128 === v)
7311              ) {
7312                var m = u();
7313                if ((3 === m && d(1), f(), f(), d(1), h()))
7314                  for (e = 3 !== m ? 8 : 12, r = 0; r < e; r++) h() && g(r < 6 ? 16 : 64);
7315              }
7316              f();
7317              var p = u();
7318              if (0 === p) u();
7319              else if (1 === p) for (d(1), c(), c(), t = u(), r = 0; r < t; r++) c();
7320              f(), d(1);
7321              var y = u(),
7322                T = u(),
7323                E = l(1);
7324              0 === E && d(1), d(1), h() && ((i = u()), (n = u()), (a = u()), (s = u()));
7325              var S = [1, 1];
7326              if (h() && h())
7327                switch (o()) {
7328                  case 1:
7329                    S = [1, 1];
7330                    break;
7331                  case 2:
7332                    S = [12, 11];
7333                    break;
7334                  case 3:
7335                    S = [10, 11];
7336                    break;
7337                  case 4:
7338                    S = [16, 11];
7339                    break;
7340                  case 5:
7341                    S = [40, 33];
7342                    break;
7343                  case 6:
7344                    S = [24, 11];
7345                    break;
7346                  case 7:
7347                    S = [20, 11];
7348                    break;
7349                  case 8:
7350                    S = [32, 11];
7351                    break;
7352                  case 9:
7353                    S = [80, 33];
7354                    break;
7355                  case 10:
7356                    S = [18, 11];
7357                    break;
7358                  case 11:
7359                    S = [15, 11];
7360                    break;
7361                  case 12:
7362                    S = [64, 33];
7363                    break;
7364                  case 13:
7365                    S = [160, 99];
7366                    break;
7367                  case 14:
7368                    S = [4, 3];
7369                    break;
7370                  case 15:
7371                    S = [3, 2];
7372                    break;
7373                  case 16:
7374                    S = [2, 1];
7375                    break;
7376                  case 255:
7377                    S = [(o() << 8) | o(), (o() << 8) | o()];
7378                }
7379              return {
7380                width: Math.ceil(16 * (y + 1) - 2 * i - 2 * n),
7381                height: (2 - E) * (T + 1) * 16 - (E ? 2 : 4) * (a + s),
7382                pixelRatio: S,
7383              };
7384            }),
7385            (e.readSliceType = function () {
7386              return this.readUByte(), this.readUEG(), this.readUEG();
7387            }),
7388            t
7389          );
7390        })(),
7391        ki = (function () {
7392          function t(t, e, r) {
7393            (this.keyData = void 0),
7394              (this.decrypter = void 0),
7395              (this.keyData = r),
7396              (this.decrypter = new Ur(e, { removePKCS7Padding: !1 }));
7397          }
7398          var e = t.prototype;
7399          return (
7400            (e.decryptBuffer = function (t) {
7401              return this.decrypter.decrypt(t, this.keyData.key.buffer, this.keyData.iv.buffer);
7402            }),
7403            (e.decryptAacSample = function (t, e, r) {
7404              var i = this,
7405                n = t[e].unit;
7406              if (!(n.length <= 16)) {
7407                var a = n.subarray(16, n.length - (n.length % 16)),
7408                  s = a.buffer.slice(a.byteOffset, a.byteOffset + a.length);
7409                this.decryptBuffer(s).then(function (a) {
7410                  var s = new Uint8Array(a);
7411                  n.set(s, 16), i.decrypter.isSync() || i.decryptAacSamples(t, e + 1, r);
7412                });
7413              }
7414            }),
7415            (e.decryptAacSamples = function (t, e, r) {
7416              for (; ; e++) {
7417                if (e >= t.length) return void r();
7418                if (!(t[e].unit.length < 32 || (this.decryptAacSample(t, e, r), this.decrypter.isSync()))) return;
7419              }
7420            }),
7421            (e.getAvcEncryptedData = function (t) {
7422              for (
7423                var e = 16 * Math.floor((t.length - 48) / 160) + 16, r = new Int8Array(e), i = 0, n = 32;
7424                n < t.length - 16;
7425                n += 160, i += 16
7426              )
7427                r.set(t.subarray(n, n + 16), i);
7428              return r;
7429            }),
7430            (e.getAvcDecryptedUnit = function (t, e) {
7431              for (var r = new Uint8Array(e), i = 0, n = 32; n < t.length - 16; n += 160, i += 16)
7432                t.set(r.subarray(i, i + 16), n);
7433              return t;
7434            }),
7435            (e.decryptAvcSample = function (t, e, r, i, n) {
7436              var a = this,
7437                s = Nt(n.data),
7438                o = this.getAvcEncryptedData(s);
7439              this.decryptBuffer(o.buffer).then(function (o) {
7440                (n.data = a.getAvcDecryptedUnit(s, o)), a.decrypter.isSync() || a.decryptAvcSamples(t, e, r + 1, i);
7441              });
7442            }),
7443            (e.decryptAvcSamples = function (t, e, r, i) {
7444              if (t instanceof Uint8Array) throw new Error('Cannot decrypt samples of type Uint8Array');
7445              for (; ; e++, r = 0) {
7446                if (e >= t.length) return void i();
7447                for (var n = t[e].units; !(r >= n.length); r++) {
7448                  var a = n[r];
7449                  if (
7450                    !(
7451                      a.data.length <= 48 ||
7452                      (1 !== a.type && 5 !== a.type) ||
7453                      (this.decryptAvcSample(t, e, r, i, a), this.decrypter.isSync())
7454                    )
7455                  )
7456                    return;
7457                }
7458              }
7459            }),
7460            t
7461          );
7462        })(),
7463        bi = 188,
7464        Di = (function () {
7465          function t(t, e, r) {
7466            (this.observer = void 0),
7467              (this.config = void 0),
7468              (this.typeSupported = void 0),
7469              (this.sampleAes = null),
7470              (this.pmtParsed = !1),
7471              (this.audioCodec = void 0),
7472              (this.videoCodec = void 0),
7473              (this._duration = 0),
7474              (this._pmtId = -1),
7475              (this._avcTrack = void 0),
7476              (this._audioTrack = void 0),
7477              (this._id3Track = void 0),
7478              (this._txtTrack = void 0),
7479              (this.aacOverFlow = null),
7480              (this.avcSample = null),
7481              (this.remainderData = null),
7482              (this.observer = t),
7483              (this.config = e),
7484              (this.typeSupported = r);
7485          }
7486          (t.probe = function (e) {
7487            var r = t.syncOffset(e);
7488            return r > 0 && w.warn('MPEG2-TS detected but first sync word found @ offset ' + r), -1 !== r;
7489          }),
7490            (t.syncOffset = function (t) {
7491              for (var e = t.length, r = Math.min(940, t.length - bi) + 1, i = 0; i < r; ) {
7492                for (var n = !1, a = -1, s = 0, o = i; o < e; o += bi) {
7493                  if (71 !== t[o]) {
7494                    if (s) return -1;
7495                    break;
7496                  }
7497                  if (
7498                    (s++,
7499                    -1 === a && 0 !== (a = o) && (r = Math.min(a + 18612, t.length - bi) + 1),
7500                    n || (n = 0 === wi(t, o)),
7501                    n && s > 1 && ((0 === a && s > 2) || o + bi > r))
7502                  )
7503                    return a;
7504                }
7505                i++;
7506              }
7507              return -1;
7508            }),
7509            (t.createTrack = function (t, e) {
7510              return {
7511                container: 'video' === t || 'audio' === t ? 'video/mp2t' : void 0,
7512                type: t,
7513                id: Lt[t],
7514                pid: -1,
7515                inputTimeScale: 9e4,
7516                sequenceNumber: 0,
7517                samples: [],
7518                dropped: 0,
7519                duration: 'audio' === t ? e : void 0,
7520              };
7521            });
7522          var e = t.prototype;
7523          return (
7524            (e.resetInitSegment = function (e, r, i, n) {
7525              (this.pmtParsed = !1),
7526                (this._pmtId = -1),
7527                (this._avcTrack = t.createTrack('video')),
7528                (this._audioTrack = t.createTrack('audio', n)),
7529                (this._id3Track = t.createTrack('id3')),
7530                (this._txtTrack = t.createTrack('text')),
7531                (this._audioTrack.segmentCodec = 'aac'),
7532                (this.aacOverFlow = null),
7533                (this.avcSample = null),
7534                (this.remainderData = null),
7535                (this.audioCodec = r),
7536                (this.videoCodec = i),
7537                (this._duration = n);
7538            }),
7539            (e.resetTimeStamp = function () {}),
7540            (e.resetContiguity = function () {
7541              var t = this._audioTrack,
7542                e = this._avcTrack,
7543                r = this._id3Track;
7544              t && (t.pesData = null),
7545                e && (e.pesData = null),
7546                r && (r.pesData = null),
7547                (this.aacOverFlow = null),
7548                (this.avcSample = null),
7549                (this.remainderData = null);
7550            }),
7551            (e.demux = function (e, r, i, n) {
7552              var a;
7553              void 0 === i && (i = !1), void 0 === n && (n = !1), i || (this.sampleAes = null);
7554              var s = this._avcTrack,
7555                o = this._audioTrack,
7556                l = this._id3Track,
7557                u = this._txtTrack,
7558                h = s.pid,
7559                d = s.pesData,
7560                c = o.pid,
7561                f = l.pid,
7562                g = o.pesData,
7563                v = l.pesData,
7564                m = null,
7565                p = this.pmtParsed,
7566                y = this._pmtId,
7567                T = e.length;
7568              if (
7569                (this.remainderData && ((T = (e = xt(this.remainderData, e)).length), (this.remainderData = null)),
7570                T < bi && !n)
7571              )
7572                return (this.remainderData = e), { audioTrack: o, videoTrack: s, id3Track: l, textTrack: u };
7573              var E = Math.max(0, t.syncOffset(e));
7574              (T -= (T - E) % bi) < e.byteLength &&
7575                !n &&
7576                (this.remainderData = new Uint8Array(e.buffer, T, e.buffer.byteLength - T));
7577              for (var A = 0, k = E; k < T; k += bi)
7578                if (71 === e[k]) {
7579                  var b = !!(64 & e[k + 1]),
7580                    D = wi(e, k),
7581                    I = void 0;
7582                  if ((48 & e[k + 3]) >> 4 > 1) {
7583                    if ((I = k + 5 + e[k + 4]) === k + bi) continue;
7584                  } else I = k + 4;
7585                  switch (D) {
7586                    case h:
7587                      b && (d && (a = Pi(d)) && this.parseAVCPES(s, u, a, !1), (d = { data: [], size: 0 })),
7588                        d && (d.data.push(e.subarray(I, k + bi)), (d.size += k + bi - I));
7589                      break;
7590                    case c:
7591                      if (b) {
7592                        if (g && (a = Pi(g)))
7593                          switch (o.segmentCodec) {
7594                            case 'aac':
7595                              this.parseAACPES(o, a);
7596                              break;
7597                            case 'mp3':
7598                              this.parseMPEGPES(o, a);
7599                          }
7600                        g = { data: [], size: 0 };
7601                      }
7602                      g && (g.data.push(e.subarray(I, k + bi)), (g.size += k + bi - I));
7603                      break;
7604                    case f:
7605                      b && (v && (a = Pi(v)) && this.parseID3PES(l, a), (v = { data: [], size: 0 })),
7606                        v && (v.data.push(e.subarray(I, k + bi)), (v.size += k + bi - I));
7607                      break;
7608                    case 0:
7609                      b && (I += e[I] + 1), (y = this._pmtId = Ci(e, I));
7610                      break;
7611                    case y:
7612                      b && (I += e[I] + 1);
7613                      var C = _i(e, I, this.typeSupported, i);
7614                      (h = C.avc) > 0 && (s.pid = h),
7615                        (c = C.audio) > 0 && ((o.pid = c), (o.segmentCodec = C.segmentCodec)),
7616                        (f = C.id3) > 0 && (l.pid = f),
7617                        null === m ||
7618                          p ||
7619                          (w.warn(
7620                            'MPEG-TS PMT found at ' +
7621                              k +
7622                              " after unknown PID '" +
7623                              m +
7624                              "'. Backtracking to sync byte @" +
7625                              E +
7626                              ' to parse all TS packets.',
7627                          ),
7628                          (m = null),
7629                          (k = E - 188)),
7630                        (p = this.pmtParsed = !0);
7631                      break;
7632                    case 17:
7633                    case 8191:
7634                      break;
7635                    default:
7636                      m = D;
7637                  }
7638                } else A++;
7639              if (A > 0) {
7640                var _ = new Error('Found ' + A + ' TS packet/s that do not start with 0x47');
7641                this.observer.emit(S.ERROR, S.ERROR, {
7642                  type: L.MEDIA_ERROR,
7643                  details: R.FRAG_PARSING_ERROR,
7644                  fatal: !1,
7645                  error: _,
7646                  reason: _.message,
7647                });
7648              }
7649              (s.pesData = d), (o.pesData = g), (l.pesData = v);
7650              var P = { audioTrack: o, videoTrack: s, id3Track: l, textTrack: u };
7651              return n && this.extractRemainingSamples(P), P;
7652            }),
7653            (e.flush = function () {
7654              var t,
7655                e = this.remainderData;
7656              return (
7657                (this.remainderData = null),
7658                (t = e
7659                  ? this.demux(e, -1, !1, !0)
7660                  : {
7661                      videoTrack: this._avcTrack,
7662                      audioTrack: this._audioTrack,
7663                      id3Track: this._id3Track,
7664                      textTrack: this._txtTrack,
7665                    }),
7666                this.extractRemainingSamples(t),
7667                this.sampleAes ? this.decrypt(t, this.sampleAes) : t
7668              );
7669            }),
7670            (e.extractRemainingSamples = function (t) {
7671              var e,
7672                r = t.audioTrack,
7673                i = t.videoTrack,
7674                n = t.id3Track,
7675                a = t.textTrack,
7676                s = i.pesData,
7677                o = r.pesData,
7678                l = n.pesData;
7679              if (
7680                (s && (e = Pi(s)) ? (this.parseAVCPES(i, a, e, !0), (i.pesData = null)) : (i.pesData = s),
7681                o && (e = Pi(o)))
7682              ) {
7683                switch (r.segmentCodec) {
7684                  case 'aac':
7685                    this.parseAACPES(r, e);
7686                    break;
7687                  case 'mp3':
7688                    this.parseMPEGPES(r, e);
7689                }
7690                r.pesData = null;
7691              } else
7692                null != o && o.size && w.log('last AAC PES packet truncated,might overlap between fragments'),
7693                  (r.pesData = o);
7694              l && (e = Pi(l)) ? (this.parseID3PES(n, e), (n.pesData = null)) : (n.pesData = l);
7695            }),
7696            (e.demuxSampleAes = function (t, e, r) {
7697              var i = this.demux(t, r, !0, !this.config.progressive),
7698                n = (this.sampleAes = new ki(this.observer, this.config, e));
7699              return this.decrypt(i, n);
7700            }),
7701            (e.decrypt = function (t, e) {
7702              return new Promise(function (r) {
7703                var i = t.audioTrack,
7704                  n = t.videoTrack;
7705                i.samples && 'aac' === i.segmentCodec
7706                  ? e.decryptAacSamples(i.samples, 0, function () {
7707                      n.samples
7708                        ? e.decryptAvcSamples(n.samples, 0, 0, function () {
7709                            r(t);
7710                          })
7711                        : r(t);
7712                    })
7713                  : n.samples &&
7714                    e.decryptAvcSamples(n.samples, 0, 0, function () {
7715                      r(t);
7716                    });
7717              });
7718            }),
7719            (e.destroy = function () {
7720              this._duration = 0;
7721            }),
7722            (e.parseAVCPES = function (t, e, r, i) {
7723              var n,
7724                a = this,
7725                s = this.parseAVCNALu(t, r.data),
7726                o = this.avcSample,
7727                l = !1;
7728              (r.data = null),
7729                o && s.length && !t.audFound && (xi(o, t), (o = this.avcSample = Ii(!1, r.pts, r.dts, ''))),
7730                s.forEach(function (i) {
7731                  var s;
7732                  switch (i.type) {
7733                    case 1:
7734                      var u = !1;
7735                      n = !0;
7736                      var h,
7737                        d = i.data;
7738                      if (l && d.length > 4) {
7739                        var c = new Ai(d).readSliceType();
7740                        (2 !== c && 4 !== c && 7 !== c && 9 !== c) || (u = !0);
7741                      }
7742                      u && null != (h = o) && h.frame && !o.key && (xi(o, t), (o = a.avcSample = null)),
7743                        o || (o = a.avcSample = Ii(!0, r.pts, r.dts, '')),
7744                        (o.frame = !0),
7745                        (o.key = u);
7746                      break;
7747                    case 5:
7748                      (n = !0),
7749                        null != (s = o) && s.frame && !o.key && (xi(o, t), (o = a.avcSample = null)),
7750                        o || (o = a.avcSample = Ii(!0, r.pts, r.dts, '')),
7751                        (o.key = !0),
7752                        (o.frame = !0);
7753                      break;
7754                    case 6:
7755                      (n = !0), Ot(i.data, 1, r.pts, e.samples);
7756                      break;
7757                    case 7:
7758                      if (((n = !0), (l = !0), !t.sps)) {
7759                        var f = i.data,
7760                          g = new Ai(f).readSPS();
7761                        (t.width = g.width),
7762                          (t.height = g.height),
7763                          (t.pixelRatio = g.pixelRatio),
7764                          (t.sps = [f]),
7765                          (t.duration = a._duration);
7766                        for (var v = f.subarray(1, 4), m = 'avc1.', p = 0; p < 3; p++) {
7767                          var y = v[p].toString(16);
7768                          y.length < 2 && (y = '0' + y), (m += y);
7769                        }
7770                        t.codec = m;
7771                      }
7772                      break;
7773                    case 8:
7774                      (n = !0), t.pps || (t.pps = [i.data]);
7775                      break;
7776                    case 9:
7777                      (n = !1), (t.audFound = !0), o && xi(o, t), (o = a.avcSample = Ii(!1, r.pts, r.dts, ''));
7778                      break;
7779                    case 12:
7780                      n = !0;
7781                      break;
7782                    default:
7783                      (n = !1), o && (o.debug += 'unknown NAL ' + i.type + ' ');
7784                  }
7785                  o && n && o.units.push(i);
7786                }),
7787                i && o && (xi(o, t), (this.avcSample = null));
7788            }),
7789            (e.getLastNalUnit = function (t) {
7790              var e,
7791                r,
7792                i = this.avcSample;
7793              if (((i && 0 !== i.units.length) || (i = t[t.length - 1]), null != (e = i) && e.units)) {
7794                var n = i.units;
7795                r = n[n.length - 1];
7796              }
7797              return r;
7798            }),
7799            (e.parseAVCNALu = function (t, e) {
7800              var r,
7801                i,
7802                n = e.byteLength,
7803                a = t.naluState || 0,
7804                s = a,
7805                o = [],
7806                l = 0,
7807                u = -1,
7808                h = 0;
7809              for (-1 === a && ((u = 0), (h = 31 & e[0]), (a = 0), (l = 1)); l < n; )
7810                if (((r = e[l++]), a))
7811                  if (1 !== a)
7812                    if (r)
7813                      if (1 === r) {
7814                        if (u >= 0) {
7815                          var d = { data: e.subarray(u, l - a - 1), type: h };
7816                          o.push(d);
7817                        } else {
7818                          var c = this.getLastNalUnit(t.samples);
7819                          if (
7820                            c &&
7821                            (s && l <= 4 - s && c.state && (c.data = c.data.subarray(0, c.data.byteLength - s)),
7822                            (i = l - a - 1) > 0)
7823                          ) {
7824                            var f = new Uint8Array(c.data.byteLength + i);
7825                            f.set(c.data, 0), f.set(e.subarray(0, i), c.data.byteLength), (c.data = f), (c.state = 0);
7826                          }
7827                        }
7828                        l < n ? ((u = l), (h = 31 & e[l]), (a = 0)) : (a = -1);
7829                      } else a = 0;
7830                    else a = 3;
7831                  else a = r ? 0 : 2;
7832                else a = r ? 0 : 1;
7833              if (u >= 0 && a >= 0) {
7834                var g = { data: e.subarray(u, n), type: h, state: a };
7835                o.push(g);
7836              }
7837              if (0 === o.length) {
7838                var v = this.getLastNalUnit(t.samples);
7839                if (v) {
7840                  var m = new Uint8Array(v.data.byteLength + e.byteLength);
7841                  m.set(v.data, 0), m.set(e, v.data.byteLength), (v.data = m);
7842                }
7843              }
7844              return (t.naluState = a), o;
7845            }),
7846            (e.parseAACPES = function (t, e) {
7847              var r,
7848                i,
7849                n,
7850                a = 0,
7851                s = this.aacOverFlow,
7852                o = e.data;
7853              if (s) {
7854                this.aacOverFlow = null;
7855                var l = s.missing,
7856                  u = s.sample.unit.byteLength;
7857                if (-1 === l) {
7858                  var h = new Uint8Array(u + o.byteLength);
7859                  h.set(s.sample.unit, 0), h.set(o, u), (o = h);
7860                } else {
7861                  var d = u - l;
7862                  s.sample.unit.set(o.subarray(0, l), d), t.samples.push(s.sample), (a = s.missing);
7863                }
7864              }
7865              for (r = a, i = o.length; r < i - 1 && !si(o, r); r++);
7866              if (r !== a) {
7867                var c,
7868                  f = r < i - 1;
7869                c = f ? 'AAC PES did not start with ADTS header,offset:' + r : 'No ADTS header found in AAC PES';
7870                var g = new Error(c);
7871                if (
7872                  (w.warn('parsing error: ' + c),
7873                  this.observer.emit(S.ERROR, S.ERROR, {
7874                    type: L.MEDIA_ERROR,
7875                    details: R.FRAG_PARSING_ERROR,
7876                    fatal: !1,
7877                    levelRetry: f,
7878                    error: g,
7879                    reason: c,
7880                  }),
7881                  !f)
7882                )
7883                  return;
7884              }
7885              if ((li(t, this.observer, o, r, this.audioCodec), void 0 !== e.pts)) n = e.pts;
7886              else {
7887                if (!s) return void w.warn('[tsdemuxer]: AAC PES unknown PTS');
7888                var v = ui(t.samplerate);
7889                n = s.sample.pts + v;
7890              }
7891              for (var m, p = 0; r < i; ) {
7892                if (((r += (m = hi(t, o, r, n, p)).length), m.missing)) {
7893                  this.aacOverFlow = m;
7894                  break;
7895                }
7896                for (p++; r < i - 1 && !si(o, r); r++);
7897              }
7898            }),
7899            (e.parseMPEGPES = function (t, e) {
7900              var r = e.data,
7901                i = r.length,
7902                n = 0,
7903                a = 0,
7904                s = e.pts;
7905              if (void 0 !== s)
7906                for (; a < i; )
7907                  if (Li(r, a)) {
7908                    var o = Ti(t, r, a, s, n);
7909                    if (!o) break;
7910                    (a += o.length), n++;
7911                  } else a++;
7912              else w.warn('[tsdemuxer]: MPEG PES unknown PTS');
7913            }),
7914            (e.parseID3PES = function (t, e) {
7915              if (void 0 !== e.pts) {
7916                var r = o({}, e, { type: this._avcTrack ? be : Ae, duration: Number.POSITIVE_INFINITY });
7917                t.samples.push(r);
7918              } else w.warn('[tsdemuxer]: ID3 PES unknown PTS');
7919            }),
7920            t
7921          );
7922        })();
7923      function Ii(t, e, r, i) {
7924        return { key: t, frame: !1, pts: e, dts: r, units: [], debug: i, length: 0 };
7925      }
7926      function wi(t, e) {
7927        return ((31 & t[e + 1]) << 8) + t[e + 2];
7928      }
7929      function Ci(t, e) {
7930        return ((31 & t[e + 10]) << 8) | t[e + 11];
7931      }
7932      function _i(t, e, r, i) {
7933        var n = { audio: -1, avc: -1, id3: -1, segmentCodec: 'aac' },
7934          a = e + 3 + (((15 & t[e + 1]) << 8) | t[e + 2]) - 4;
7935        for (e += 12 + (((15 & t[e + 10]) << 8) | t[e + 11]); e < a; ) {
7936          var s = wi(t, e);
7937          switch (t[e]) {
7938            case 207:
7939              if (!i) {
7940                w.log('ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream');
7941                break;
7942              }
7943            case 15:
7944              -1 === n.audio && (n.audio = s);
7945              break;
7946            case 21:
7947              -1 === n.id3 && (n.id3 = s);
7948              break;
7949            case 219:
7950              if (!i) {
7951                w.log('H.264 with AES-128-CBC slice encryption found in unencrypted stream');
7952                break;
7953              }
7954            case 27:
7955              -1 === n.avc && (n.avc = s);
7956              break;
7957            case 3:
7958            case 4:
7959              !0 !== r.mpeg && !0 !== r.mp3
7960                ? w.log('MPEG audio found, not supported in this browser')
7961                : -1 === n.audio && ((n.audio = s), (n.segmentCodec = 'mp3'));
7962              break;
7963            case 36:
7964              w.warn('Unsupported HEVC stream type found');
7965          }
7966          e += 5 + (((15 & t[e + 3]) << 8) | t[e + 4]);
7967        }
7968        return n;
7969      }
7970      function Pi(t) {
7971        var e,
7972          r,
7973          i,
7974          n,
7975          a,
7976          s = 0,
7977          o = t.data;
7978        if (!t || 0 === t.size) return null;
7979        for (; o[0].length < 19 && o.length > 1; ) {
7980          var l = new Uint8Array(o[0].length + o[1].length);
7981          l.set(o[0]), l.set(o[1], o[0].length), (o[0] = l), o.splice(1, 1);
7982        }
7983        if (1 === ((e = o[0])[0] << 16) + (e[1] << 8) + e[2]) {
7984          if ((r = (e[4] << 8) + e[5]) && r > t.size - 6) return null;
7985          var u = e[7];
7986          192 & u &&
7987            ((n =
7988              536870912 * (14 & e[9]) +
7989              4194304 * (255 & e[10]) +
7990              16384 * (254 & e[11]) +
7991              128 * (255 & e[12]) +
7992              (254 & e[13]) / 2),
7993            64 & u
7994              ? n -
7995                  (a =
7996                    536870912 * (14 & e[14]) +
7997                    4194304 * (255 & e[15]) +
7998                    16384 * (254 & e[16]) +
7999                    128 * (255 & e[17]) +
8000                    (254 & e[18]) / 2) >
8001                  54e5 && (w.warn(Math.round((n - a) / 9e4) + 's delta between PTS and DTS, align them'), (n = a))
8002              : (a = n));
8003          var h = (i = e[8]) + 9;
8004          if (t.size <= h) return null;
8005          t.size -= h;
8006          for (var d = new Uint8Array(t.size), c = 0, f = o.length; c < f; c++) {
8007            var g = (e = o[c]).byteLength;
8008            if (h) {
8009              if (h > g) {
8010                h -= g;
8011                continue;
8012              }
8013              (e = e.subarray(h)), (g -= h), (h = 0);
8014            }
8015            d.set(e, s), (s += g);
8016          }
8017          return r && (r -= i + 3), { data: d, pts: n, dts: a, len: r };
8018        }
8019        return null;
8020      }
8021      function xi(t, e) {
8022        if (t.units.length && t.frame) {
8023          if (void 0 === t.pts) {
8024            var r = e.samples,
8025              i = r.length;
8026            if (!i) return void e.dropped++;
8027            var n = r[i - 1];
8028            (t.pts = n.pts), (t.dts = n.dts);
8029          }
8030          e.samples.push(t);
8031        }
8032        t.debug.length && w.log(t.pts + '/' + t.dts + ':' + t.debug);
8033      }
8034      var Fi = (function (t) {
8035          function e() {
8036            return t.apply(this, arguments) || this;
8037          }
8038          l(e, t);
8039          var r = e.prototype;
8040          return (
8041            (r.resetInitSegment = function (e, r, i, n) {
8042              t.prototype.resetInitSegment.call(this, e, r, i, n),
8043                (this._audioTrack = {
8044                  container: 'audio/mpeg',
8045                  type: 'audio',
8046                  id: 2,
8047                  pid: -1,
8048                  sequenceNumber: 0,
8049                  segmentCodec: 'mp3',
8050                  samples: [],
8051                  manifestCodec: r,
8052                  duration: n,
8053                  inputTimeScale: 9e4,
8054                  dropped: 0,
8055                });
8056            }),
8057            (e.probe = function (t) {
8058              if (!t) return !1;
8059              for (var e = (st(t, 0) || []).length, r = t.length; e < r; e++)
8060                if (Ri(t, e)) return w.log('MPEG Audio sync word found !'), !0;
8061              return !1;
8062            }),
8063            (r.canParse = function (t, e) {
8064              return (function (t, e) {
8065                return Si(t, e) && 4 <= t.length - e;
8066              })(t, e);
8067            }),
8068            (r.appendFrame = function (t, e, r) {
8069              if (null !== this.basePTS) return Ti(t, e, r, this.basePTS, this.frameIndex);
8070            }),
8071            e
8072          );
8073        })(ei),
8074        Mi = (function () {
8075          function t() {}
8076          return (
8077            (t.getSilentFrame = function (t, e) {
8078              if ('mp4a.40.2' === t) {
8079                if (1 === e) return new Uint8Array([0, 200, 0, 128, 35, 128]);
8080                if (2 === e) return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);
8081                if (3 === e) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);
8082                if (4 === e)
8083                  return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);
8084                if (5 === e)
8085                  return new Uint8Array([
8086                    0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56,
8087                  ]);
8088                if (6 === e)
8089                  return new Uint8Array([
8090                    0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8,
8091                    224,
8092                  ]);
8093              } else {
8094                if (1 === e)
8095                  return new Uint8Array([
8096                    1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90,
8097                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
8098                    90, 90, 90, 90, 90, 90, 90, 90, 94,
8099                  ]);
8100                if (2 === e)
8101                  return new Uint8Array([
8102                    1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90,
8103                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
8104                    90, 90, 90, 90, 90, 90, 90, 90, 94,
8105                  ]);
8106                if (3 === e)
8107                  return new Uint8Array([
8108                    1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90,
8109                    90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
8110                    90, 90, 90, 90, 90, 90, 90, 90, 94,
8111                  ]);
8112              }
8113            }),
8114            t
8115          );
8116        })(),
8117        Oi = Math.pow(2, 32) - 1,
8118        Ni = (function () {
8119          function t() {}
8120          return (
8121            (t.init = function () {
8122              var e;
8123              for (e in ((t.types = {
8124                avc1: [],
8125                avcC: [],
8126                btrt: [],
8127                dinf: [],
8128                dref: [],
8129                esds: [],
8130                ftyp: [],
8131                hdlr: [],
8132                mdat: [],
8133                mdhd: [],
8134                mdia: [],
8135                mfhd: [],
8136                minf: [],
8137                moof: [],
8138                moov: [],
8139                mp4a: [],
8140                '.mp3': [],
8141                mvex: [],
8142               
8142 mvhd: [],
8143                pasp: [],
8144                sdtp: [],
8145                stbl: [],
8146                stco: [],
8147                stsc: [],
8148                stsd: [],
8149                stsz: [],
8150                stts: [],
8151                tfdt: [],
8152                tfhd: [],
8153                traf: [],
8154                trak: [],
8155                trun: [],
8156                trex: [],
8157                tkhd: [],
8158                vmhd: [],
8159                smhd: [],
8160              }),
8161              t.types))
8162                t.types.hasOwnProperty(e) &&
8163                  (t.types[e] = [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)]);
8164              var r = new Uint8Array([
8165                  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,
8166                  111, 72, 97, 110, 100, 108, 101, 114, 0,
8167                ]),
8168                i = new Uint8Array([
8169                  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,
8170                  100, 72, 97, 110, 100, 108, 101, 114, 0,
8171                ]);
8172              t.HDLR_TYPES = { video: r, audio: i };
8173              var n = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1]),
8174                a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
8175              (t.STTS = t.STSC = t.STCO = a),
8176                (t.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])),
8177                (t.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0])),
8178                (t.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])),
8179                (t.STSD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]));
8180              var s = new Uint8Array([105, 115, 111, 109]),
8181                o = new Uint8Array([97, 118, 99, 49]),
8182                l = new Uint8Array([0, 0, 0, 1]);
8183              (t.FTYP = t.box(t.types.ftyp, s, l, s, o)), (t.DINF = t.box(t.types.dinf, t.box(t.types.dref, n)));
8184            }),
8185            (t.box = function (t) {
8186              for (var e = 8, r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), n = 1; n < r; n++)
8187                i[n - 1] = arguments[n];
8188              for (var a = i.length, s = a; a--; ) e += i[a].byteLength;
8189              var o = new Uint8Array(e);
8190              for (
8191                o[0] = (e >> 24) & 255,
8192                  o[1] = (e >> 16) & 255,
8193                  o[2] = (e >> 8) & 255,
8194                  o[3] = 255 & e,
8195                  o.set(t, 4),
8196                  a = 0,
8197                  e = 8;
8198                a < s;
8199                a++
8200              )
8201                o.set(i[a], e), (e += i[a].byteLength);
8202              return o;
8203            }),
8204            (t.hdlr = function (e) {
8205              return t.box(t.types.hdlr, t.HDLR_TYPES[e]);
8206            }),
8207            (t.mdat = function (e) {
8208              return t.box(t.types.mdat, e);
8209            }),
8210            (t.mdhd = function (e, r) {
8211              r *= e;
8212              var i = Math.floor(r / (Oi + 1)),
8213                n = Math.floor(r % (Oi + 1));
8214              return t.box(
8215                t.types.mdhd,
8216                new Uint8Array([
8217                  1,
8218                  0,
8219                  0,
8220                  0,
8221                  0,
8222                  0,
8223                  0,
8224                  0,
8225                  0,
8226                  0,
8227                  0,
8228                  2,
8229                  0,
8230                  0,
8231                  0,
8232                  0,
8233                  0,
8234                  0,
8235                  0,
8236                  3,
8237                  (e >> 24) & 255,
8238                  (e >> 16) & 255,
8239                  (e >> 8) & 255,
8240                  255 & e,
8241                  i >> 24,
8242                  (i >> 16) & 255,
8243                  (i >> 8) & 255,
8244                  255 & i,
8245                  n >> 24,
8246                  (n >> 16) & 255,
8247                  (n >> 8) & 255,
8248                  255 & n,
8249                  85,
8250                  196,
8251                  0,
8252                  0,
8253                ]),
8254              );
8255            }),
8256            (t.mdia = function (e) {
8257              return t.box(t.types.mdia, t.mdhd(e.timescale, e.duration), t.hdlr(e.type), t.minf(e));
8258            }),
8259            (t.mfhd = function (e) {
8260              return t.box(
8261                t.types.mfhd,
8262                new Uint8Array([0, 0, 0, 0, e >> 24, (e >> 16) & 255, (e >> 8) & 255, 255 & e]),
8263              );
8264            }),
8265            (t.minf = function (e) {
8266              return 'audio' === e.type
8267                ? t.box(t.types.minf, t.box(t.types.smhd, t.SMHD), t.DINF, t.stbl(e))
8268                : t.box(t.types.minf, t.box(t.types.vmhd, t.VMHD), t.DINF, t.stbl(e));
8269            }),
8270            (t.moof = function (e, r, i) {
8271              return t.box(t.types.moof, t.mfhd(e), t.traf(i, r));
8272            }),
8273            (t.moov = function (e) {
8274              for (var r = e.length, i = []; r--; ) i[r] = t.trak(e[r]);
8275              return t.box.apply(
8276                null,
8277                [t.types.moov, t.mvhd(e[0].timescale, e[0].duration)].concat(i).c
8277oncat(t.mvex(e)),
8278              );
8279            }),
8280            (t.mvex = function (e) {
8281              for (var r = e.length, i = []; r--; ) i[r] = t.trex(e[r]);
8282              return t.box.apply(null, [t.types.mvex].concat(i));
8283            }),
8284            (t.mvhd = function (e, r) {
8285              r *= e;
8286              var i = Math.floor(r / (Oi + 1)),
8287                n = Math.floor(r % (Oi + 1)),
8288                a = new Uint8Array([
8289                  1,
8290                  0,
8291                  0,
8292                  0,
8293                  0,
8294                  0,
8295                  0,
8296                  0,
8297                  0,
8298                  0,
8299                  0,
8300                  2,
8301                  0,
8302                  0,
8303                  0,
8304                  0,
8305                  0,
8306                  0,
8307                  0,
8308                  3,
8309                  (e >> 24) & 255,
8310                  (e >> 16) & 255,
8311                  (e >> 8) & 255,
8312                  255 & e,
8313                  i >> 24,
8314                  (i >> 16) & 255,
8315                  (i >> 8) & 255,
8316                  255 & i,
8317                  n >> 24,
8318                  (n >> 16) & 255,
8319                  (n >> 8) & 255,
8320                  255 & n,
8321                  0,
8322                  1,
8323                  0,
8324                  0,
8325                  1,
8326                  0,
8327                  0,
8328                  0,
8329                  0,
8330                  0,
8331                  0,
8332                  0,
8333                  0,
8334                  0,
8335                  0,
8336                  0,
8337                  0,
8338                  1,
8339                  0,
8340                  0,
8341                  0,
8342                  0,
8343                  0,
8344                  0,
8345                  0,
8346                  0,
8347                  0,
8348                  0,
8349                  0,
8350                  0,
8351                  0,
8352                  0,
8353                  0,
8354                  1,
8355                  0,
8356                  0,
8357                  0,
8358                  0,
8359                  0,
8360                  0,
8361                  0,
8362                  0,
8363                  0,
8364                  0,
8365                  0,
8366                  0,
8367                  0,
8368                  0,
8369                  64,
8370                  0,
8371                  0,
8372                  0,
8373                  0,
8374                  0,
8375                  0,
8376                  0,
8377                  0,
8378                  0,
8379                  0,
8380                  0,
8381                  0,
8382                  0,
8383                  0,
8384                  0,
8385                  0,
8386                  0,
8387                  0,
8388                  0,
8389                  0,
8390                  0,
8391                  0,
8392                  0,
8393                  0,
8394                  0,
8395                  0,
8396                  0,
8397                  255,
8398                  255,
8399                  255,
8400                  255,
8401                ]);
8402              return t.box(t.types.mvhd, a);
8403            }),
8404            (t.sdtp = function (e) {
8405              var r,
8406                i,
8407                n = e.samples || [],
8408                a = new Uint8Array(4 + n.length);
8409              for (r = 0; r < n.length; r++)
8410                (i = n[r].flags), (a[r + 4] = (i.dependsOn << 4) | (i.isDependedOn << 2) | i.hasRedundancy);
8411              return t.box(t.types.sdtp, a);
8412            }),
8413            (t.stbl = function (e) {
8414              return t.box(
8415                t.types.stbl,
8416                t.stsd(e),
8417                t.box(t.types.stts, t.STTS),
8418                t.box(t.types.stsc, t.STSC),
8419                t.box(t.types.stsz, t.STSZ),
8420                t.box(t.types.stco, t.STCO),
8421              );
8422            }),
8423            (t.avc1 = function (e) {
8424              var r,
8425                i,
8426                n,
8427                a = [],
8428                s = [];
8429              for (r = 0; r < e.sps.length; r++)
8430                (n = (i = e.sps[r]).byteLength),
8431                  a.push((n >>> 8) & 255),
8432                  a.push(255 & n),
8433                  (a = a.concat(Array.prototype.slice.call(i)));
8434              for (r = 0; r < e.pps.length; r++)
8435                (n = (i = e.pps[r]).byteLength),
8436                  s.push((n >>> 8) & 255),
8437                  s.push(255 & n),
8438                  (s = s.concat(Array.prototype.slice.call(i)));
8439              var o = t.box(
8440                  t.types.avcC,
8441                  new Uint8Array(
8442                    [1, a[3], a[4], a[5], 255, 224 | e.sps.length].concat(a).concat([e.pps.length]).concat(s),
8443                  ),
8444                ),
8445                l = e.width,
8446                u = e.height,
8447                h = e.pixelRatio[0],
8448                d = e.pixelRatio[1];
8449              return t.box(
8450                t.types.avc1,
8451                new Uint8Array([
8452                  0,
8453                  0,
8454                  0,
8455                  0,
8456                  0,
8457                  0,
8458                  0,
8459                  1,
8460                  0,
8461                  0,
8462                  0,
8463                  0,
8464                  0,
8465                  0,
8466                  0,
8467                  0,
8468                  0,
8469                  0,
8470                  0,
8471                  0,
8472                  0,
8473                  0,
8474                  0,
8475                  0,
8476                  (l >> 8) & 255,
8477                  255 & l,
8478                  (u >> 8) & 255,
8479                  255 & u,
8480                  0,
8481                  72,
8482                  0,
8483                  0,
8484                  0,
8485                  72,
8486                  0,
8487                  0,
8488                  0,
8489                  0,
8490                  0,
8491                  0,
8492                  0,
8493                  1,
8494                  18,
8495                  100,
8496                  97,
8497                  105,
8498                  108,
8499                  121,
8500                  109,
8501                  111,
8502                  116,
8503                  105,
8504                  111,
8505                  110,
8506                  47,
8507                  104,
8508                  108,
8509                  115,
8510                  46,
8511                  106,
8512                  115,
8513                  0,
8514                  0,
8515                  0,
8516                  0,
8517                  0,
8518                  0,
8519                  0,
8520                  0,
8521                  0,
8522                  0,
8523                  0,
8524                  0,
8525                  0,
8526                  0,
8527                  24,
8528                  17,
8529                  17,
8530                ]),
8531                o,
8532                t.box(t.types.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])),
8533                t.box(
8534                  t.types.pasp,
8535                  new Uint8Array([
8536                    h >> 24,
8537                    (h >> 16) & 255,
8538                    (h >> 8) & 255,
8539                    255 & h,
8540                    d >> 24,
8541                    (d >> 16) & 255,
8542                    (d >> 8) & 255,
8543                    255 & d,
8544                  ]),
8545                ),
8546              );
8547            }),
8548            (t.esds = function (t) {
8549              var e = t.config.length;
8550              return new Uint8Array(
8551                [0, 0, 0, 0, 3, 23 + e, 0, 1, 0, 4, 15 + e, 64, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
8552                  .concat([e])
8553                  .concat(t.config)
8554                  .concat([6, 1, 2]),
8555              );
8556            }),
8557            (t.mp4a = function (e) {
8558              var r = e.samplerate;
8559              return t.box(
8560                t.types.mp4a,
8561                new Uint8Array([
8562                  0,
8563                  0,
8564                  0,
8565                  0,
8566                  0,
8567                  0,
8568                  0,
8569                  1,
8570                  0,
8571                  0,
8572                  0,
8573                  0,
8574                  0,
8575                  0,
8576                  0,
8577                  0,
8578                  0,
8579                  e.channelCount,
8580                  0,
8581                  16,
8582                  0,
8583                  0,
8584                  0,
8585                  0,
8586                  (r >> 8) & 255,
8587                  255 & r,
8588                  0,
8589                  0,
8590                ]),
8591                t.box(t.types.esds, t.esds(e)),
8592              );
8593            }),
8594            (t.mp3 = function (e) {
8595              var r = e.samplerate;
8596              return t.box(
8597                t.types['.mp3'],
8598                new Uint8Array([
8599                  0,
8600                  0,
8601                  0,
8602                  0,
8603                  0,
8604                  0,
8605                  0,
8606                  1,
8607                  0,
8608                  0,
8609                  0,
8610                  0,
8611                  0,
8612                  0,
8613                  0,
8614                  0,
8615                  0,
8616                  e.channelCount,
8617                  0,
8618                  16,
8619                  0,
8620                  0,
8621                  0,
8622                  0,
8623                  (r >> 8) & 255,
8624                  255 & r,
8625                  0,
8626                  0,
8627                ]),
8628              );
8629            }),
8630            (t.stsd = function (e) {
8631              return 'audio' === e.type
8632                ? 'mp3' === e.segmentCodec && 'mp3' === e.codec
8633                  ? t.box(t.types.stsd, t.STSD, t.mp3(e))
8634                  : t.box(t.types.stsd, t.STSD, t.mp4a(e))
8635                : t.box(t.types.stsd, t.STSD, t.avc1(e));
8636            }),
8637            (t.tkhd = function (e) {
8638              var r = e.id,
8639                i = e.duration * e.timescale,
8640                n = e.width,
8641                a = e.height,
8642                s = Math.floor(i / (Oi + 1)),
8643                o = Math.floor(i % (Oi + 1));
8644              return t.box(
8645                t.types.tkhd,
8646                new Uint8Array([
8647                  1,
8648                  0,
8649                  0,
8650                  7,
8651                  0,
8652                  0,
8653                  0,
8654                  0,
8655                  0,
8656                  0,
8657                  0,
8658                  2,
8659                  0,
8660                  0,
8661                  0,
8662                  0,
8663                  0,
8664                  0,
8665                  0,
8666                  3,
8667                  (r >> 24) & 255,
8668                  (r >> 16) & 255,
8669                  (r >> 8) & 255,
8670                  255 & r,
8671                  0,
8672                  0,
8673                  0,
8674                  0,
8675                  s >> 24,
8676                  (s >> 16) & 255,
8677                  (s >> 8) & 255,
8678                  255 & s,
8679                  o >> 24,
8680                  (o >> 16) & 255,
8681                  (o >> 8) & 255,
8682                  255 & o,
8683                  0,
8684                  0,
8685                  0,
8686                  0,
8687                  0,
8688                  0,
8689                  0,
8690                  0,
8691                  0,
8692                  0,
8693                  0,
8694                  0,
8695                  0,
8696                  0,
8697                  0,
8698                  0,
8699                  0,
8700                  1,
8701                  0,
8702                  0,
8703                  0,
8704                  0,
8705                  0,
8706                  0,
8707                  0,
8708                  0,
8709                  0,
8710                  0,
8711                  0,
8712                  0,
8713                  0,
8714                  0,
8715                  0,
8716                  1,
8717                  0,
8718                  0,
8719                  0,
8720                  0,
8721                  0,
8722                  0,
8723                  0,
8724                  0,
8725                  0,
8726                  0,
8727                  0,
8728                  0,
8729                  0,
8730                  0,
8731                  64,
8732                  0,
8733                  0,
8734                  0,
8735                  (n >> 8) & 255,
8736                  255 & n,
8737                  0,
8738                  0,
8739                  (a >> 8) & 255,
8740                  255 & a,
8741                  0,
8742                  0,
8743                ]),
8744              );
8745            }),
8746            (t.traf = function (e, r) {
8747              var i = t.sdtp(e),
8748                n = e.id,
8749                a = Math.floor(r / (Oi + 1)),
8750                s = Math.floor(r % (Oi + 1));
8751              return t.box(
8752                t.types.traf,
8753                t.box(t.types.tfhd, new Uint8Array([0, 0, 0, 0, n >> 24, (n >> 16) & 255, (n >> 8) & 255, 255 & n])),
8754                t.box(
8755                  t.types.tfdt,
8756                  new Uint8Array([
8757                    1,
8758                    0,
8759                    0,
8760                    0,
8761                    a >> 24,
8762                    (a >> 16) & 255,
8763                    (a >> 8) & 255,
8764                    255 & a,
8765                    s >> 24,
8766                    (s >> 16) & 255,
8767                    (s >> 8) & 255,
8768                    255 & s,
8769                  ]),
8770                ),
8771                t.trun(e, i.length + 16 + 20 + 8 + 16 + 8 + 8),
8772                i,
8773              );
8774            }),
8775            (t.trak = function (e) {
8776              return (e.duration = e.duration || 4294967295), t.box(t.types.trak, t.tkhd(e), t.mdia(e));
8777            }),
8778            (t.trex = function (e) {
8779              var r = e.id;
8780              return t.box(
8781                t.types.trex,
8782                new Uint8Array([
8783                  0,
8784                  0,
8785                  0,
8786                  0,
8787                  r >> 24,
8788                  (r >> 16) & 255,
8789                  (r >> 8) & 255,
8790                  255 & r,
8791                  0,
8792                  0,
8793                  0,
8794                  1,
8795                  0,
8796                  0,
8797                  0,
8798                  0,
8799                  0,
8800                  0,
8801                  0,
8802                  0,
8803                  0,
8804                  1,
8805                  0,
8806                  1,
8807                ]),
8808              );
8809            }),
8810            (t.trun = function (e, r) {
8811              var i,
8812                n,
8813                a,
8814                s,
8815                o,
8816                l,
8817                u = e.samples || [],
8818                h = u.length,
8819                d = 12 + 16 * h,
8820                c = new Uint8Array(d);
8821              for (
8822                r += 8 + d,
8823                  c.set(
8824                    [
8825                      'video' === e.type ? 1 : 0,
8826                      0,
8827                      15,
8828                      1,
8829                      (h >>> 24) & 255,
8830                      (h >>> 16) & 255,
8831                      (h >>> 8) & 255,
8832                      255 & h,
8833                      (r >>> 24) & 255,
8834                      (r >>> 16) & 255,
8835                      (r >>> 8) & 255,
8836                      255 & r,
8837                    ],
8838                    0,
8839                  ),
8840                  i = 0;
8841                i < h;
8842                i++
8843              )
8844                (a = (n = u[i]).duration),
8845                  (s = n.size),
8846                  (o = n.flags),
8847                  (l = n.cts),
8848                  c.set(
8849                    [
8850                      (a >>> 24) & 255,
8851                      (a >>> 16) & 255,
8852                      (a >>> 8) & 255,
8853                      255 & a,
8854                      (s >>> 24) & 255,
8855                      (s >>> 16) & 255,
8856                      (s >>> 8) & 255,
8857                      255 & s,
8858                      (o.isLeading << 2) | o.dependsOn,
8859                      (o.isDependedOn << 6) | (o.hasRedundancy << 4) | (o.paddingValue << 1) | o.isNonSync,
8860                      61440 & o.degradPrio,
8861                      15 & o.degradPrio,
8862                      (l >>> 24) & 255,
8863                      (l >>> 16) & 255,
8864                      (l >>> 8) & 255,
8865                      255 & l,
8866                    ],
8867                    12 + 16 * i,
8868                  );
8869              return t.box(t.types.trun, c);
8870            }),
8871            (t.initSegment = function (e) {
8872              t.types || t.init();
8873              var r = t.moov(e),
8874                i = new Uint8Array(t.FTYP.byteLength + r.byteLength);
8875              return i.set(t.FTYP), i.set(r, t.FTYP.byteLength), i;
8876            }),
8877            t
8878          );
8879        })();
8880      function Ui(t, e, r, i) {
8881        void 0 === r && (r = 1), void 0 === i && (i = !1);
8882        var n = t * e * r;
8883        return i ? Math.round(n) : n;
8884      }
8885      function Bi(t, e) {
8886        return void 0 === e && (e = !1), Ui(t, 1e3, 1 / 9e4, e);
8887      }
8888      (Ni.types = void 0),
8889        (Ni.HDLR_TYPES = void 0),
8890        (Ni.STTS = void 0),
8891        (Ni.STSC = void 0),
8892        (Ni.STCO = void 0),
8893        (Ni.STSZ = void 0),
8894        (Ni.VMHD = void 0),
8895        (Ni.SMHD = void 0),
8896        (Ni.STSD = void 0),
8897        (Ni.FTYP = void 0),
8898        (Ni.DINF = void 0);
8899      var Gi = null,
8900        Ki = null,
8901        Hi = (function () {
8902          function t(t, e, r, i) {
8903            if (
8904              ((this.observer = void 0),
8905              (this.config = void 0),
8906              (this.typeSupported = void 0),
8907              (this.ISGenerated = !1),
8908              (this._initPTS = null),
8909              (this._initDTS = null),
8910              (this.nextAvcDts = null),
8911              (this.nextAudioPts = null),
8912              (this.videoSampleDuration = null),
8913              (this.isAudioContiguous = !1),
8914              (this.isVideoContiguous = !1),
8915              (this.observer = t),
8916              (this.config = e),
8917              (this.typeSupported = r),
8918              (this.ISGenerated = !1),
8919              null === Gi)
8920            ) {
8921              var n = (navigator.userAgent || '').match(/Chrome\/(\d+)/i);
8922              Gi = n ? parseInt(n[1]) : 0;
8923            }
8924            if (null === Ki) {
8925              var a = navigator.userAgent.match(/Safari\/(\d+)/i);
8926              Ki = a ? parseInt(a[1]) : 0;
8927            }
8928          }
8929          var e = t.prototype;
8930          return (
8931            (e.destroy = function () {}),
8932            (e.resetTimeStamp = function (t) {
8933              w.log('[mp4-remuxer]: initPTS & initDTS reset'), (this._initPTS = this._initDTS = t);
8934            }),
8935            (e.resetNextTimestamp = function () {
8936              w.log('[mp4-remuxer]: reset next timestamp'),
8937                (this.isVideoContiguous = !1),
8938                (this.isAudioContiguous = !1);
8939            }),
8940            (e.resetInitSegment = function () {
8941              w.log('[mp4-remuxer]: ISGenerated flag reset'), (this.ISGenerated = !1);
8942            }),
8943            (e.getVideoStartPts = function (t) {
8944              var e = !1,
8945                r = t.reduce(function (t, r) {
8946                  var i = r.pts - t;
8947                  return i < -4294967296 ? ((e = !0), Vi(t, r.pts)) : i > 0 ? t : r.pts;
8948                }, t[0].pts);
8949              return e && w.debug('PTS rollover detected'), r;
8950            }),
8951            (e.remux = function (t, e, r, i, n, a, s, o) {
8952              var l,
8953                u,
8954                h,
8955                d,
8956                c,
8957                f,
8958                g = n,
8959                v = n,
8960                m = t.pid > -1,
8961                p = e.pid > -1,
8962                y = e.samples.length,
8963                T = t.samples.length > 0,
8964                E = (s && y > 0) || y > 1;
8965              if (((!m || T) && (!p || E)) || this.ISGenerated || s) {
8966                this.ISGenerated || (h = this.generateIS(t, e, n, a));
8967                var S,
8968                  L = this.isVideoContiguous,
8969                  R = -1;
8970                if (
8971                  E &&
8972                  ((R = (function (t) {
8973                    for (var e = 0; e < t.length; e++) if (t[e].key) return e;
8974                    return -1;
8975                  })(e.samples)),
8976                  !L && this.config.forceKeyFrameOnDiscontinuity)
8977                )
8978                  if (((f = !0), R > 0)) {
8979                    w.warn('[mp4-remuxer]: Dropped ' + R + ' out of ' + y + ' video samples due to a missing keyframe');
8980                    var A = this.getVideoStartPts(e.samples);
8981                    (e.samples = e.samples.slice(R)),
8982                      (e.dropped += R),
8983                      (S = v += (e.samples[0].pts - A) / e.inputTimeScale);
8984                  } else
8985                    -1 === R && (w.warn('[mp4-remuxer]: No keyframe found out of ' + y + ' video samples'), (f = !1));
8986                if (this.ISGenerated) {
8987                  if (T && E) {
8988                    var k = this.getVideoStartPts(e.samples),
8989                      b = (Vi(t.samples[0].pts, k) - k) / e.inputTimeScale;
8990                    (g += Math.max(0, b)), (v += Math.max(0, -b));
8991                  }
8992                  if (T) {
8993                    if (
8994                      (t.samplerate ||
8995                        (w.warn('[mp4-remuxer]: regenerate InitSegment as audio detected'),
8996                        (h = this.generateIS(t, e, n, a))),
8997                      (u = this.remuxAudio(t, g, this.isAudioContiguous, a, p || E || o === ve ? v : void 0)),
8998                      E)
8999                    ) {
9000                      var D = u ? u.endPTS - u.startPTS : 0;
9001                      e.inputTimeScale ||
9002                        (w.warn('[mp4-remuxer]: regenerate InitSegment as video detected'),
9003                        (h = this.generateIS(t, e, n, a))),
9004                        (l = this.remuxVideo(e, v, L, D));
9005                    }
9006                  } else E && (l = this.remuxVideo(e, v, L, 0));
9007                  l && ((l.firstKeyFrame = R), (l.independent = -1 !== R), (l.firstKeyFramePTS = S));
9008                }
9009              }
9010              return (
9011                this.ISGenerated &&
9012                  this._initPTS &&
9013                  this._initDTS &&
9014                  (r.samples.length && (c = Yi(r, n, this._initPTS, this._initDTS)),
9015                  i.samples.length && (d = Wi(i, n, this._initPTS))),
9016                { audio: u, video: l, initSegment: h, independent: f, text: d, id3: c }
9017              );
9018            }),
9019            (e.generateIS = function (t, e, r, i) {
9020              var n,
9021                a,
9022                s,
9023                o = t.samples,
9024                l = e.samples,
9025                u = this.typeSupported,
9026                h = {},
9027                d = this._initPTS,
9028                c = !d || i,
9029                f = 'audio/mp4';
9030              if (
9031                (c && (n = a = 1 / 0),
9032                t.config &&
9033                  o.length &&
9034                  ((t.timescale = t.samplerate),
9035                  'mp3' === t.segmentCodec &&
9036                    (u.mpeg ? ((f = 'audio/mpeg'), (t.codec = '')) : u.mp3 && (t.codec = 'mp3')),
9037                  (h.audio = {
9038                    id: 'audio',
9039                    container: f,
9040                    codec: t.codec,
9041                    initSegment: 'mp3' === t.segmentCodec && u.mpeg ? new Uint8Array(0) : Ni.initSegment([t]),
9042                    metadata: { channelCount: t.channelCount },
9043                  }),
9044                  c &&
9045                    ((s = t.inputTimeScale),
9046                    d && s === d.timescale ? (c = !1) : (n = a = o[0].pts - Math.round(s * r)))),
9047                e.sps &&
9048                  e.pps &&
9049                  l.length &&
9050                  ((e.timescale = e.inputTimeScale),
9051                  (h.video = {
9052                    id: 'main',
9053                    container: 'video/mp4',
9054                    codec: e.codec,
9055                    initSegment: Ni.initSegment([e]),
9056                    metadata: { width: e.width, height: e.height },
9057                  }),
9058                  c))
9059              )
9060                if (((s = e.inputTimeScale), d && s === d.timescale)) c = !1;
9061                else {
9062                  var g = this.getVideoStartPts(l),
9063                    v = Math.round(s * r);
9064                  (a = Math.min(a, Vi(l[0].dts, g) - v)), (n = Math.min(n, g - v));
9065                }
9066              if (Object.keys(h).length)
9067                return (
9068                  (this.ISGenerated = !0),
9069                  c
9070                    ? ((this._initPTS = { baseTime: n, timescale: s }), (this._initDTS = { baseTime: a, timescale: s }))
9071                    : (n = s = void 0),
9072                  { tracks: h, initPTS: n, timescale: s }
9073                );
9074            }),
9075            (e.remuxVideo = function (t, e, r, i) {
9076              var n,
9077                a,
9078                s = t.inputTimeScale,
9079                l = t.samples,
9080                u = [],
9081                h = l.length,
9082                d = this._initPTS,
9083                c = this.nextAvcDts,
9084                f = 8,
9085                g = this.videoSampleDuration,
9086                v = Number.POSITIVE_INFINITY,
9087                m = Number.NEGATIVE_INFINITY,
9088                p = !1;
9089              (r && null !== c) || (c = e * s - (l[0].pts - Vi(l[0].dts, l[0].pts)));
9090              for (var y = (d.baseTime * s) / d.timescale, T = 0; T < h; T++) {
9091                var E = l[T];
9092                (E.pts = Vi(E.pts - y, c)), (E.dts = Vi(E.dts - y, c)), E.dts < l[T > 0 ? T - 1 : T].dts && (p = !0);
9093              }
9094              p &&
9095                l.sort(function (t, e) {
9096                  var r = t.dts - e.dts,
9097                    i = t.pts - e.pts;
9098                  return r || i;
9099                }),
9100                (n = l[0].dts);
9101              var A = (a = l[l.length - 1].dts) - n,
9102                k = A ? Math.round(A / (h - 1)) : g || t.inputTimeScale / 30;
9103              if (r) {
9104                var b = n - c,
9105                  D = b > k,
9106                  I = b < -1;
9107                if (
9108                  (D || I) &&
9109                  (D
9110                    ? w.warn('AVC: ' + Bi(b, !0) + ' ms (' + b + 'dts) hole between fragments detected, filling it')
9111                    : w.warn('AVC: ' + Bi(-b, !0) + ' ms (' + b + 'dts) overlapping between fragments detected'),
9112                  !I || c >= l[0].pts)
9113                ) {
9114                  n = c;
9115                  var C = l[0].pts - b;
9116                  (l[0].dts = n),
9117                    (l[0].pts = C),
9118                    w.log(
9119                      'Video: First PTS/DTS adjusted: ' + Bi(C, !0) + '/' + Bi(n, !0) + ', delta: ' + Bi(b, !0) + ' ms',
9120                    );
9121                }
9122              }
9123              n = Math.max(0, n);
9124              for (var _ = 0, P = 0, x = 0; x < h; x++) {
9125                for (var F = l[x], M = F.units, O = M.length, N = 0, U = 0; U < O; U++) N += M[U].data.length;
9126                (P += N),
9127                  (_ += O),
9128                  (F.length = N),
9129                  (F.dts = Math.max(F.dts, n)),
9130                  (v = Math.min(F.pts, v)),
9131                  (m = Math.max(F.pts, m));
9132              }
9133              a = l[h - 1].dts;
9134              var B,
9135                G = P + 4 * _ + 8;
9136              try {
9137                B = new Uint8Array(G);
9138              } catch (t) {
9139                return void this.observer.emit(S.ERROR, S.ERROR, {
9140                  type: L.MUX_ERROR,
9141                  details: R.REMUX_ALLOC_ERROR,
9142                  fatal: !1,
9143                  error: t,
9144                  bytes: G,
9145                  reason: 'fail allocating video mdat ' + G,
9146                });
9147              }
9148              var K = new DataView(B.buffer);
9149              K.setUint32(0, G), B.set(Ni.types.mdat, 4);
9150              for (
9151                var H = !1,
9152                  V = Number.POSITIVE_INFINITY,
9153                  Y = Number.POSITIVE_INFINITY,
9154                  W = Number.NEGATIVE_INFINITY,
9155                  j = Number.NEGATIVE_INFINITY,
9156                  q = 0;
9157                q < h;
9158                q++
9159              ) {
9160                for (var X = l[q], z = X.units, Q = 0, $ = 0, J = z.length; $ < J; $++) {
9161                  var Z = z[$],
9162                    tt = Z.data,
9163                    et = Z.data.byteLength;
9164                  K.setUint32(f, et), (f += 4), B.set(tt, f), (f += et), (Q += 4 + et);
9165                }
9166                var rt = void 0;
9167                if (q < h - 1) (g = l[q + 1].dts - X.dts), (rt = l[q + 1].pts - X.pts);
9168                else {
9169                  var it = this.config,
9170                    nt = q > 0 ? X.dts - l[q - 1].dts : k;
9171                  if (
9172                    ((rt = q > 0 ? X.pts - l[q - 1].pts : k), it.stretchShortVideoTrack && null !== this.nextAudioPts)
9173                  ) {
9174                    var at = Math.floor(it.maxBufferHole * s),
9175                      st = (i ? v + i * s : this.nextAudioPts) - X.pts;
9176                    st > at
9177                      ? ((g = st - nt) < 0 ? (g = nt) : (H = !0),
9178                        w.log(
9179                          '[mp4-remuxer]: It is approximately ' +
9180                            st / 90 +
9181                            ' ms to the next segment; using duration ' +
9182                            g / 90 +
9183                            ' ms for the last video frame.',
9184                        ))
9185                      : (g = nt);
9186                  } else g = nt;
9187                }
9188                var ot = Math.round(X.pts - X.dts);
9189                (V = Math.min(V, g)),
9190                  (W = Math.max(W, g)),
9191                  (Y = Math.min(Y, rt)),
9192                  (j = Math.max(j, rt)),
9193                  u.push(new qi(X.key, g, Q, ot));
9194              }
9195              if (u.length)
9196                if (Gi) {
9197                  if (Gi < 70) {
9198                    var lt = u[0].flags;
9199                    (lt.dependsOn = 2), (lt.isNonSync = 0);
9200                  }
9201                } else if (Ki && j - Y < W - V && k / W < 0.025 && 0 === u[0].cts) {
9202                  w.warn(
9203                    'Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.',
9204                  );
9205                  for (var ut = n, ht = 0, dt = u.length; ht < dt; ht++) {
9206                    var ct = ut + u[ht].duration,
9207                      ft = ut + u[ht].cts;
9208                    if (ht < dt - 1) {
9209                      var gt = ct + u[ht + 1].cts;
9210                      u[ht].duration = gt - ft;
9211                    } else u[ht].duration = ht ? u[ht - 1].duration : k;
9212                    (u[ht].cts = 0), (ut = ct);
9213                  }
9214                }
9215              (g = H || !g ? k : g),
9216                (this.nextAvcDts = c = a + g),
9217                (this.videoSampleDuration = g),
9218                (this.isVideoContiguous = !0);
9219              var vt = {
9220                data1: Ni.moof(t.sequenceNumber++, n, o({}, t, { samples: u })),
9221                data2: B,
9222                startPTS: v / s,
9223                endPTS: (m + g) / s,
9224                startDTS: n / s,
9225                endDTS: c / s,
9226                type: 'video',
9227                hasAudio: !1,
9228                hasVideo: !0,
9229                nb: u.length,
9230                dropped: t.dropped,
9231              };
9232              return (t.samples = []), (t.dropped = 0), vt;
9233            }),
9234            (e.remuxAudio = function (t, e, r, i, n) {
9235              var a = t.inputTimeScale,
9236                s = a / (t.samplerate ? t.samplerate : a),
9237                l = 'aac' === t.segmentCodec ? 1024 : 1152,
9238                u = l * s,
9239                h = this._initPTS,
9240                d = 'mp3' === t.segmentCodec && this.typeSupported.mpeg,
9241                c = [],
9242                f = void 0 !== n,
9243                g = t.samples,
9244                v = d ? 0 : 8,
9245                m = this.nextAudioPts || -1,
9246                p = e * a,
9247                y = (h.baseTime * a) / h.timescale;
9248              if (
9249                ((this.isAudioContiguous = r =
9250                  r ||
9251                  (g.length && m > 0 && ((i && Math.abs(p - m) < 9e3) || Math.abs(Vi(g[0].pts - y, p) - m) < 20 * u))),
9252                g.forEach(function (t) {
9253                  t.pts = Vi(t.pts - y, p);
9254                }),
9255                !r || m < 0)
9256              ) {
9257                if (
9258                  ((g = g.filter(function (t) {
9259                    return t.pts >= 0;
9260                  })),
9261                  !g.length)
9262                )
9263                  return;
9264                m = 0 === n ? 0 : i && !f ? Math.max(0, p) : g[0].pts;
9265              }
9266              if ('aac' === t.segmentCodec)
9267                for (var T = this.config.maxAudioFramesDrift, E = 0, A = m; E < g.length; E++) {
9268                  var k = g[E],
9269                    b = k.pts,
9270                    D = b - A,
9271                    I = Math.abs((1e3 * D) / a);
9272                  if (D <= -T * u && f)
9273                    0 === E &&
9274                      (w.warn(
9275                        'Audio frame @ ' +
9276                          (b / a).toFixed(3) +
9277                          's overlaps nextAudioPts by ' +
9278                          Math.round((1e3 * D) / a) +
9279                          ' ms.',
9280                      ),
9281                      (this.nextAudioPts = m = A = b));
9282                  else if (D >= T * u && I < 1e4 && f) {
9283                    var C = Math.round(D / u);
9284                    (A = b - C * u) < 0 && (C--, (A += u)),
9285                      0 === E && (this.nextAudioPts = m = A),
9286                      w.warn(
9287                        '[mp4-remuxer]: Injecting ' +
9288                          C +
9289                          ' audio frame @ ' +
9290                          (A / a).toFixed(3) +
9291                          's due to ' +
9292                          Math.round((1e3 * D) / a) +
9293                          ' ms gap.',
9294                      );
9295                    for (var _ = 0; _ < C; _++) {
9296                      var P = Math.max(A, 0),
9297                        x = Mi.getSilentFrame(t.manifestCodec || t.codec, t.channelCount);
9298                      x ||
9299                        (w.log(
9300                          '[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.',
9301                        ),
9302                        (x = k.unit.subarray())),
9303                        g.splice(E, 0, { unit: x, pts: P }),
9304                        (A += u),
9305                        E++;
9306                    }
9307                  }
9308                  (k.pts = A), (A += u);
9309                }
9310              for (var F, M = null, O = null, N = 0, U = g.length; U--; ) N += g[U].unit.byteLength;
9311              for (var B = 0, G = g.length; B < G; B++) {
9312                var K = g[B],
9313                  H = K.unit,
9314                  V = K.pts;
9315                if (null !== O) c[B - 1].duration = Math.round((V - O) / s);
9316                else {
9317                  if ((r && 'aac' === t.segmentCodec && (V = m), (M = V), !(N > 0))) return;
9318                  N += v;
9319                  try {
9320                    F = new Uint8Array(N);
9321                  } catch (t) {
9322                    return void this.observer.emit(S.ERROR, S.ERROR, {
9323                      type: L.MUX_ERROR,
9324                      details: R.REMUX_ALLOC_ERROR,
9325                      fatal: !1,
9326                      error: t,
9327                      bytes: N,
9328                      reason: 'fail allocating audio mdat ' + N,
9329                    });
9330                  }
9331                  d || (new DataView(F.buffer).setUint32(0, N), F.set(Ni.types.mdat, 4));
9332                }
9333                F.set(H, v);
9334                var Y = H.byteLength;
9335                (v += Y), c.push(new qi(!0, l, Y, 0)), (O = V);
9336              }
9337              var W = c.length;
9338              if (W) {
9339                var j = c[c.length - 1];
9340                this.nextAudioPts = m = O + s * j.duration;
9341                var q = d ? new Uint8Array(0) : Ni.moof(t.sequenceNumber++, M / s, o({}, t, { samples: c }));
9342                t.samples = [];
9343                var X = M / a,
9344                  z = m / a,
9345                  Q = {
9346                    data1: q,
9347                    data2: F,
9348                    startPTS: X,
9349                    endPTS: z,
9350                    startDTS: X,
9351                    endDTS: z,
9352                    type: 'audio',
9353                    hasAudio: !0,
9354                    hasVideo: !1,
9355                    nb: W,
9356                  };
9357                return (this.isAudioContiguous = !0), Q;
9358              }
9359            }),
9360            (e.remuxEmptyAudio = function (t, e, r, i) {
9361              var n = t.inputTimeScale,
9362                a = n / (t.samplerate ? t.samplerate : n),
9363                s = this.nextAudioPts,
9364                o = this._initDTS,
9365                l = (9e4 * o.baseTime) / o.timescale,
9366                u = (null !== s ? s : i.startDTS * n) + l,
9367                h = i.endDTS * n + l,
9368                d = 1024 * a,
9369                c = Math.ceil((h - u) / d),
9370                f = Mi.getSilentFrame(t.manifestCodec || t.codec, t.channelCount);
9371              if ((w.warn('[mp4-remuxer]: remux empty Audio'), f)) {
9372                for (var g = [], v = 0; v < c; v++) {
9373                  var m = u + v * d;
9374                  g.push({ unit: f, pts: m, dts: m });
9375                }
9376                return (t.samples = g), this.remuxAudio(t, e, r, !1);
9377              }
9378              w.trace(
9379                '[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec',
9380              );
9381            }),
9382            t
9383          );
9384        })();
9385      function Vi(t, e) {
9386        var r;
9387        if (null === e) return t;
9388        for (r = e < t ? -8589934592 : 8589934592; Math.abs(t - e) > 4294967296; ) t += r;
9389        return t;
9390      }
9391      function Yi(t, e, r, i) {
9392        var n = t.samples.length;
9393        if (n) {
9394          for (var a = t.inputTimeScale, s = 0; s < n; s++) {
9395            var o = t.samples[s];
9396            (o.pts = Vi(o.pts - (r.baseTime * a) / r.timescale, e * a) / a),
9397              (o.dts = Vi(o.dts - (i.baseTime * a) / i.timescale, e * a) / a);
9398          }
9399          var l = t.samples;
9400          return (t.samples = []), { samples: l };
9401        }
9402      }
9403      function Wi(t, e, r) {
9404        var i = t.samples.length;
9405        if (i) {
9406          for (var n = t.inputTimeScale, a = 0; a < i; a++) {
9407            var s = t.samples[a];
9408            s.pts = Vi(s.pts - (r.baseTime * n) / r.timescale, e * n) / n;
9409          }
9410          t.samples.sort(function (t, e) {
9411            return t.pts - e.pts;
9412          });
9413          var o = t.samples;
9414          return (t.samples = []), { samples: o };
9415        }
9416      }
9417      var ji,
9418        qi = function (t, e, r, i) {
9419          (this.size = void 0),
9420            (this.duration = void 0),
9421            (this.cts = void 0),
9422            (this.flags = void 0),
9423            (this.duration = e),
9424            (this.size = r),
9425            (this.cts = i),
9426            (this.flags = new Xi(t));
9427        },
9428        Xi = function (t) {
9429          (this.isLeading = 0),
9430            (this.isDependedOn = 0),
9431            (this.hasRedundancy = 0),
9432            (this.degradPrio = 0),
9433            (this.dependsOn = 1),
9434            (this.isNonSync = 1),
9435            (this.dependsOn = t ? 2 : 1),
9436            (this.isNonSync = t ? 0 : 1);
9437        },
9438        zi = (function () {
9439          function t() {
9440            (this.emitInitSegment = !1),
9441              (this.audioCodec = void 0),
9442              (this.videoCodec = void 0),
9443              (this.initData = void 0),
9444              (this.initPTS = null),
9445              (this.initTracks = void 0),
9446              (this.lastEndTime = null);
9447          }
9448          var e = t.prototype;
9449          return (
9450            (e.destroy = function () {}),
9451            (e.resetTimeStamp = function (t) {
9452              (this.initPTS = t), (this.lastEndTime = null);
9453            }),
9454            (e.resetNextTimestamp = function () {
9455              this.lastEndTime = null;
9456            }),
9457            (e.resetInitSegment = function (t, e, r, i) {
9458              (this.audioCodec = e),
9459                (this.videoCodec = r),
9460                this.generateInitSegment(
9461                  (function (t, e) {
9462                    if (!t || !e) return t;
9463                    var r = e.keyId;
9464                    return (
9465                      r &&
9466                        e.isCommonEncryption &&
9467                        It(t, ['moov', 'trak']).forEach(function (t) {
9468                          var e = It(t, ['mdia', 'minf', 'stbl', 'stsd'])[0].subarray(8),
9469                            i = It(e, ['enca']),
9470                            n = i.length > 0;
9471                          n || (i = It(e, ['encv'])),
9472                            i.forEach(function (t) {
9473                              It(n ? t.subarray(28) : t.subarray(78), ['sinf']).forEach(function (t) {
9474                                var e = _t(t);
9475                                if (e) {
9476                                  var i = e.subarray(8, 24);
9477                                  i.some(function (t) {
9478                                    return 0 !== t;
9479                                  }) ||
9480                                    (w.log(
9481                                      "[eme] Patching keyId in 'enc" +
9482                                        (n ? 'a' : 'v') +
9483                                        ">sinf>>tenc' box: " +
9484                                        Tt(i) +
9485                                        ' -> ' +
9486                                        Tt(r),
9487                                    ),
9488                                    e.set(r, 8));
9489                                }
9490                              });
9491                            });
9492                        }),
9493                      t
9494                    );
9495                  })(t, i),
9496                ),
9497                (this.emitInitSegment = !0);
9498            }),
9499            (e.generateInitSegment = function (t) {
9500              var e = this.audioCodec,
9501                r = this.videoCodec;
9502              if (null == t || !t.byteLength) return (this.initTracks = void 0), void (this.initData = void 0);
9503              var i = (this.initData = Ct(t));
9504              e || (e = Qi(i.audio, O)), r || (r = Qi(i.video, N));
9505              var n = {};
9506              i.audio && i.video
9507                ? (n.audiovideo = { container: 'video/mp4', codec: e + ',' + r, initSegment: t, id: 'main' })
9508                : i.audio
9509                ? (n.audio = { container: 'audio/mp4', codec: e, initSegment: t, id: 'audio' })
9510                : i.video
9511                ? (n.video = { container: 'video/mp4', codec: r, initSegment: t, id: 'main' })
9512                : w.warn('[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.'),
9513                (this.initTracks = n);
9514            }),
9515            (e.remux = function (t, e, r, i, n, a) {
9516              var s,
9517                o,
9518                l = this.initPTS,
9519                u = this.lastEndTime,
9520                h = { audio: void 0, video: void 0, text: i, id3: r, initSegment: void 0 };
9521              E(u) || (u = this.lastEndTime = n || 0);
9522              var d = e.samples;
9523              if (null == d || !d.length) return h;
9524              var c = { initPTS: void 0, timescale: 1 },
9525                f = this.initData;
9526              if (
9527                ((null != (s = f) && s.length) || (this.generateInitSegment(d), (f = this.initData)),
9528                null == (o = f) || !o.length)
9529              )
9530                return w.warn('[passthrough-remuxer.ts]: Failed to generate initSegment.'), h;
9531              this.emitInitSegment && ((c.tracks = this.initTracks), (this.emitInitSegment = !1));
9532              var g = (function (t, e) {
9533                  for (var r = 0, i = 0, n = 0, a = It(t, ['moof', 'traf']), s = 0; s < a.length; s++) {
9534                    var o = a[s],
9535                      l = It(o, ['tfhd'])[0],
9536                      u = e[kt(l, 4)];
9537                    if (u) {
9538                      var h = u.default,
9539                        d = kt(l, 0) | (null == h ? void 0 : h.flags),
9540                        c = null == h ? void 0 : h.duration;
9541                      8 & d && (c = kt(l, 2 & d ? 12 : 8));
9542                      for (var f = u.timescale || 9e4, g = It(o, ['trun']), v = 0; v < g.length; v++)
9543                        !(r = Pt(g[v])) && c && (r = c * kt(g[v], 4)),
9544                          u.type === N ? (i += r / f) : u.type === O && (n += r / f);
9545                    }
9546                  }
9547                  if (0 === i && 0 === n) {
9548                    for (var m = 0, p = It(t, ['sidx']), y = 0; y < p.length; y++) {
9549                      var T = wt(p[y]);
9550                      null != T &&
9551                        T.references &&
9552                        (m += T.references.reduce(function (t, e) {
9553                          return t + e.info.duration || 0;
9554                        }, 0));
9555                    }
9556                    return m;
9557                  }
9558                  return i || n;
9559                })(d, f),
9560                v = (function (t, e) {
9561                  return It(e, ['moof', 'traf']).reduce(function (e, r) {
9562                    var i = It(r, ['tfdt'])[0],
9563                      n = i[0],
9564                      a = It(r, ['tfhd']).reduce(function (e, r) {
9565                        var a = kt(r, 4),
9566                          s = t[a];
9567                        if (s) {
9568                          var o = kt(i, 4);
9569                          if (1 === n) {
9570                            if (o === Et)
9571                              return (
9572                                w.warn(
9573                                  '[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time',
9574                                ),
9575                                e
9576                              );
9577                            (o *= Et + 1), (o += kt(i, 8));
9578                          }
9579                          var l = o / (s.timescale || 9e4);
9580                          if (isFinite(l) && (null === e || l < e)) return l;
9581                        }
9582                        return e;
9583                      }, null);
9584                    return null !== a && isFinite(a) && (null === e || a < e) ? a : e;
9585                  }, null);
9586                })(f, d),
9587                m = null === v ? n : v;
9588              ((function (t, e, r, i) {
9589                if (null === t) return !0;
9590                var n = Math.max(i, 1),
9591                  a = e - t.baseTime / t.timescale;
9592                return Math.abs(a - r) > n;
9593              })(l, m, n, g) ||
9594                (c.timescale !== l.timescale && a)) &&
9595                ((c.initPTS = m - n),
9596                l && 1 === l.timescale && w.warn('Adjusting initPTS by ' + (c.initPTS - l.baseTime)),
9597                (this.initPTS = l = { baseTime: c.initPTS, timescale: 1 }));
9598              var p = t ? m - l.baseTime / l.timescale : u,
9599                y = p + g;
9600              !(function (t, e, r) {
9601                It(e, ['moof', 'traf']).forEach(function (e) {
9602                  It(e, ['tfhd']).forEach(function (i) {
9603                    var n = kt(i, 4),
9604                      a = t[n];
9605                    if (a) {
9606                      var s = a.timescale || 9e4;
9607                      It(e, ['tfdt']).forEach(function (t) {
9608                        var e = t[0],
9609                          i = kt(t, 4);
9610                        if (0 === e) (i -= r * s), Dt(t, 4, (i = Math.max(i, 0)));
9611                        else {
9612                          (i *= Math.pow(2, 32)), (i += kt(t, 8)), (i -= r * s), (i = Math.max(i, 0));
9613                          var n = Math.floor(i / (Et + 1)),
9614                            a = Math.floor(i % (Et + 1));
9615                          Dt(t, 4, n), Dt(t, 8, a);
9616                        }
9617                      });
9618                    }
9619                  });
9620                });
9621              })(f, d, l.baseTime / l.timescale),
9622                g > 0
9623                  ? (this.lastEndTime = y)
9624                  : (w.warn('Duration parsed from mp4 should be greater than zero'), this.resetNextTimestamp());
9625              var T = !!f.audio,
9626                S = !!f.video,
9627                L = '';
9628              T && (L += 'audio'), S && (L += 'video');
9629              var R = {
9630                data1: d,
9631                startPTS: p,
9632                startDTS: p,
9633                endPTS: y,
9634                endDTS: y,
9635                type: L,
9636                hasAudio: T,
9637                hasVideo: S,
9638                nb: 1,
9639                dropped: 0,
9640              };
9641              return (
9642                (h.audio = 'audio' === R.type ? R : void 0),
9643                (h.video = 'audio' !== R.type ? R : void 0),
9644                (h.initSegment = c),
9645                (h.id3 = Yi(r, n, l, l)),
9646                i.samples.length && (h.text = Wi(i, n, l)),
9647                h
9648              );
9649            }),
9650            t
9651          );
9652        })();
9653      function Qi(t, e) {
9654        var r = null == t ? void 0 : t.codec;
9655        return r && r.length > 4
9656          ? r
9657          : 'hvc1' === r || 'hev1' === r
9658          ? 'hvc1.1.6.L120.90'
9659          : 'av01' === r
9660          ? 'av01.0.04M.08'
9661          : 'avc1' === r || e === N
9662          ? 'avc1.42e01e'
9663          : 'mp4a.40.5';
9664      }
9665      try {
9666        ji = self.performance.now.bind(self.performance);
9667      } catch (t) {
9668        w.debug('Unable to use Performance API on this environment'),
9669          (ji = 'undefined' != typeof self && self.Date.now);
9670      }
9671      var $i = [
9672          { demux: fi, remux: zi },
9673          { demux: Di, remux: Hi },
9674          { demux: di, remux: Hi },
9675          { demux: Fi, remux: Hi },
9676        ],
9677        Ji = (function () {
9678          function t(t, e, r, i, n) {
9679            (this.async = !1),
9680              (this.observer = void 0),
9681              (this.typeSupported = void 0),
9682              (this.config = void 0),
9683              (this.vendor = void 0),
9684              (this.id = void 0),
9685              (this.demuxer = void 0),
9686              (this.remuxer = void 0),
9687              (this.decrypter = void 0),
9688              (this.probe = void 0),
9689              (this.decryptionPromise = null),
9690              (this.transmuxConfig = void 0),
9691              (this.currentTransmuxState = void 0),
9692              (this.observer = t),
9693              (this.typeSupported = e),
9694              (this.config = r),
9695              (this.vendor = i),
9696              (this.id = n);
9697          }
9698          var e = t.prototype;
9699          return (
9700            (e.configure = function (t) {
9701              (this.transmuxConfig = t), this.decrypter && this.decrypter.reset();
9702            }),
9703            (e.push = function (t, e, r, i) {
9704              var n = this,
9705                a = r.transmuxing;
9706              a.executeStart = ji();
9707              var s = new Uint8Array(t),
9708                o = this.currentTransmuxState,
9709                l = this.transmuxConfig;
9710              i && (this.currentTransmuxState = i);
9711              var u = i || o,
9712                h = u.contiguous,
9713                d = u.discontinuity,
9714                c = u.trackSwitch,
9715                f = u.accurateTimeOffset,
9716                g = u.timeOffset,
9717                v = u.initSegmentChange,
9718                m = l.audioCodec,
9719                p = l.videoCodec,
9720                y = l.defaultInitPts,
9721                T = l.duration,
9722                E = l.initSegmentData,
9723                A = (function (t, e) {
9724                  var r = null;
9725                  return (
9726                    t.byteLength > 0 && null != e && null != e.key && null !== e.iv && null != e.method && (r = e), r
9727                  );
9728                })(s, e);
9729              if (A && 'AES-128' === A.method) {
9730                var k = this.getDecrypter();
9731                if (!k.isSync())
9732                  return (
9733                    (this.decryptionPromise = k.webCryptoDecrypt(s, A.key.buffer, A.iv.buffer).then(function (t) {
9734                      var e = n.push(t, null, r);
9735                      return (n.decryptionPromise = null), e;
9736                    })),
9737                    this.decryptionPromise
9738                  );
9739                var b = k.softwareDecrypt(s, A.key.buffer, A.iv.buffer);
9740                if ((r.part > -1 && (b = k.flush()), !b)) return (a.executeEnd = ji()), Zi(r);
9741                s = new Uint8Array(b);
9742              }
9743              var D = this.needsProbing(d, c);
9744              if (D) {
9745                var I = this.configureTransmuxer(s);
9746                if (I)
9747                  return (
9748                    w.warn('[transmuxer] ' + I.message),
9749                    this.observer.emit(S.ERROR, S.ERROR, {
9750                      type: L.MEDIA_ERROR,
9751                      details: R.FRAG_PARSING_ERROR,
9752                      fatal: !1,
9753                      error: I,
9754                      reason: I.message,
9755                    }),
9756                    (a.executeEnd = ji()),
9757                    Zi(r)
9758                  );
9759              }
9760              (d || c || v || D) && this.resetInitSegment(E, m, p, T, e),
9761                (d || v || D) && this.resetInitialTimestamp(y),
9762                h || this.resetContiguity();
9763              var C = this.transmux(s, A, g, f, r),
9764                _ = this.currentTransmuxState;
9765              return (_.contiguous = !0), (_.discontinuity = !1), (_.trackSwitch = !1), (a.executeEnd = ji()), C;
9766            }),
9767            (e.flush = function (t) {
9768              var e = this,
9769                r = t.transmuxing;
9770              r.executeStart = ji();
9771              var i = this.decrypter,
9772                n = this.currentTransmuxState,
9773                a = this.decryptionPromise;
9774              if (a)
9775                return a.then(function () {
9776                  return e.flush(t);
9777                });
9778              var s = [],
9779                o = n.timeOffset;
9780              if (i) {
9781                var l = i.flush();
9782                l && s.push(this.push(l, null, t));
9783              }
9784              var u = this.demuxer,
9785                h = this.remuxer;
9786              if (!u || !h) return (r.executeEnd = ji()), [Zi(t)];
9787              var d = u.flush(o);
9788              return tn(d)
9789                ? d.then(function (r) {
9790                    return e.flushRemux(s, r, t), s;
9791                  })
9792                : (this.flushRemux(s, d, t), s);
9793            }),
9794            (e.flushRemux = function (t, e, r) {
9795              var i = e.audioTrack,
9796                n = e.videoTrack,
9797                a = e.id3Track,
9798                s = e.textTrack,
9799                o = this.currentTransmuxState,
9800                l = o.accurateTimeOffset,
9801                u = o.timeOffset;
9802              w.log(
9803                '[transmuxer.ts]: Flushed fragment ' +
9804                  r.sn +
9805                  (r.part > -1 ? ' p: ' + r.part : '') +
9806                  ' of level ' +
9807                  r.level,
9808              );
9809              var h = this.remuxer.remux(i, n, a, s, u, l, !0, this.id);
9810              t.push({ remuxResult: h, chunkMeta: r }), (r.transmuxing.executeEnd = ji());
9811            }),
9812            (e.resetInitialTimestamp = function (t) {
9813              var e = this.demuxer,
9814                r = this.remuxer;
9815              e && r && (e.resetTimeStamp(t), r.resetTimeStamp(t));
9816            }),
9817            (e.resetContiguity = function () {
9818              var t = this.demuxer,
9819                e = this.remuxer;
9820              t && e && (t.resetContiguity(), e.resetNextTimestamp());
9821            }),
9822            (e.resetInitSegment = function (t, e, r, i, n) {
9823              var a = this.demuxer,
9824                s = this.remuxer;
9825              a && s && (a.resetInitSegment(t, e, r, i), s.resetInitSegment(t, e, r, n));
9826            }),
9827            (e.destroy = function () {
9828              this.demuxer && (this.demuxer.destroy(), (this.demuxer = void 0)),
9829                this.remuxer && (this.remuxer.destroy(), (this.remuxer = void 0));
9830            }),
9831            (e.transmux = function (t, e, r, i, n) {
9832              return e && 'SAMPLE-AES' === e.method
9833                ? this.transmuxSampleAes(t, e, r, i, n)
9834                : this.transmuxUnencrypted(t, r, i, n);
9835            }),
9836            (e.transmuxUnencrypted = function (t, e, r, i) {
9837              var n = this.demuxer.demux(t, e, !1, !this.config.progressive),
9838                a = n.audioTrack,
9839                s = n.videoTrack,
9840                o = n.id3Track,
9841                l = n.textTrack;
9842              return { remuxResult: this.remuxer.remux(a, s, o, l, e, r, !1, this.id), chunkMeta: i };
9843            }),
9844            (e.transmuxSampleAes = function (t, e, r, i, n) {
9845              var a = this;
9846              return this.demuxer.demuxSampleAes(t, e, r).then(function (t) {
9847                return {
9848                  remuxResult: a.remuxer.remux(t.audioTrack, t.videoTrack, t.id3Track, t.textTrack, r, i, !1, a.id),
9849                  chunkMeta: n,
9850                };
9851              });
9852            }),
9853            (e.configureTransmuxer = function (t) {
9854              for (
9855                var e,
9856                  r = this.config,
9857                  i = this.observer,
9858                  n = this.typeSupported,
9859                  a = this.vendor,
9860                  s = 0,
9861                  o = $i.length;
9862                s < o;
9863                s++
9864              )
9865                if ($i[s].demux.probe(t)) {
9866                  e = $i[s];
9867                  break;
9868                }
9869              if (!e) return new Error('Failed to find demuxer by probing fragment data');
9870              var l = this.demuxer,
9871                u = this.remuxer,
9872                h = e.remux,
9873                d = e.demux;
9874              (u && u instanceof h) || (this.remuxer = new h(i, r, n, a)),
9875                (l && l instanceof d) || ((this.demuxer = new d(i, r, n)), (this.probe = d.probe));
9876            }),
9877            (e.needsProbing = function (t, e) {
9878              return !this.demuxer || !this.remuxer || t || e;
9879            }),
9880            (e.getDecrypter = function () {
9881              var t = this.decrypter;
9882              return t || (t = this.decrypter = new Ur(this.config)), t;
9883            }),
9884            t
9885          );
9886        })(),
9887        Zi = function (t) {
9888          return { remuxResult: {}, chunkMeta: t };
9889        };
9890      function tn(t) {
9891        return 'then' in t && t.then instanceof Function;
9892      }
9893      var en = function (t, e, r, i, n) {
9894          (this.audioCodec = void 0),
9895            (this.videoCodec = void 0),
9896            (this.initSegmentData = void 0),
9897            (this.duration = void 0),
9898            (this.defaultInitPts = void 0),
9899            (this.audioCodec = t),
9900            (this.videoCodec = e),
9901            (this.initSegmentData = r),
9902            (this.duration = i),
9903            (this.defaultInitPts = n || null);
9904        },
9905        rn = function (t, e, r, i, n, a) {
9906          (this.discontinuity = void 0),
9907            (this.contiguous = void 0),
9908            (this.accurateTimeOffset = void 0),
9909            (this.trackSwitch = void 0),
9910            (this.timeOffset = void 0),
9911            (this.initSegmentChange = void 0),
9912            (this.discontinuity = t),
9913            (this.contiguous = e),
9914            (this.accurateTimeOffset = r),
9915            (this.trackSwitch = i),
9916            (this.timeOffset = n),
9917            (this.initSegmentChange = a);
9918        },
9919        nn = { exports: {} };
9920      !(function (t) {
9921        var e = Object.prototype.hasOwnProperty,
9922          r = '~';
9923        function i() {}
9924        function n(t, e, r) {
9925          (this.fn = t), (this.context = e), (this.once = r || !1);
9926        }
9927        function a(t, e, i, a, s) {
9928          if ('function' != typeof i) throw new TypeError('The listener must be a function');
9929          var o = new n(i, a || t, s),
9930            l = r ? r + e : e;
9931          return (
9932            t._events[l]
9933              ? t._events[l].fn
9934                ? (t._events[l] = [t._events[l], o])
9935                : t._events[l].push(o)
9936              : ((t._events[l] = o), t._eventsCount++),
9937            t
9938          );
9939        }
9940        function s(t, e) {
9941          0 == --t._eventsCount ? (t._events = new i()) : delete t._events[e];
9942        }
9943        function o() {
9944          (this._events = new i()), (this._eventsCount = 0);
9945        }
9946        Object.create && ((i.prototype = Object.create(null)), new i().__proto__ || (r = !1)),
9947          (o.prototype.eventNames = function () {
9948            var t,
9949              i,
9950              n = [];
9951            if (0 === this._eventsCount) return n;
9952            for (i in (t = this._events)) e.call(t, i) && n.push(r ? i.slice(1) : i);
9953            return Object.getOwnPropertySymbols ? n.concat(Object.getOwnPropertySymbols(t)) : n;
9954          }),
9955          (o.prototype.listeners = function (t) {
9956            var e = r ? r + t : t,
9957              i = this._events[e];
9958            if (!i) return [];
9959            if (i.fn) return [i.fn];
9960            for (var n = 0, a = i.length, s = new Array(a); n < a; n++) s[n] = i[n].fn;
9961            return s;
9962          }),
9963          (o.prototype.listenerCount = function (t) {
9964            var e = r ? r + t : t,
9965              i = this._events[e];
9966            return i ? (i.fn ? 1 : i.length) : 0;
9967          }),
9968          (o.prototype.emit = function (t, e, i, n, a, s) {
9969            var o = r ? r + t : t;
9970            if (!this._events[o]) return !1;
9971            var l,
9972              u,
9973              h = this._events[o],
9974              d = arguments.length;
9975            if (h.fn) {
9976              switch ((h.once && this.removeListener(t, h.fn, void 0, !0), d)) {
9977                case 1:
9978                  return h.fn.call(h.context), !0;
9979                case 2:
9980                  return h.fn.call(h.context, e), !0;
9981                case 3:
9982                  return h.fn.call(h.context, e, i), !0;
9983                case 4:
9984                  return h.fn.call(h.context, e, i, n), !0;
9985                case 5:
9986                  return h.fn.call(h.context, e, i, n, a), !0;
9987                case 6:
9988                  return h.fn.call(h.context, e, i, n, a, s), !0;
9989              }
9990              for (u = 1, l = new Array(d - 1); u < d; u++) l[u - 1] = arguments[u];
9991              h.fn.apply(h.context, l);
9992            } else {
9993              var c,
9994                f = h.length;
9995              for (u = 0; u < f; u++)
9996                switch ((h[u].once && this.removeListener(t, h[u].fn, void 0, !0), d)) {
9997                  case 1:
9998                    h[u].fn.call(h[u].context);
9999                    break;
10000                  case 2:
10001                    h[u].fn.call(h[u].context, e);
10002                    break;
10003                  case 3:
10004                    h[u].fn.call(h[u].context, e, i);
10005                    break;
10006                  case 4:
10007                    h[u].fn.call(h[u].context, e, i, n);
10008                    break;
10009                  default:
10010                    if (!l) for (c = 1, l = new Array(d - 1); c < d; c++) l[c - 1] = arguments[c];
10011                    h[u].fn.apply(h[u].context, l);
10012                }
10013            }
10014            return !0;
10015          }),
10016          (o.prototype.on = function (t, e, r) {
10017            return a(this, t, e, r, !1);
10018          }),
10019          (o.prototype.once = function (t, e, r) {
10020            return a(this, t, e, r, !0);
10021          }),
10022          (o.prototype.removeListener = function (t, e, i, n) {
10023            var a = r ? r + t : t;
10024            if (!this._events[a]) return this;
10025            if (!e) return s(this, a), this;
10026            var o = this._events[a];
10027            if (o.fn) o.fn !== e || (n && !o.once) || (i && o.context !== i) || s(this, a);
10028            else {
10029              for (var l = 0, u = [], h = o.length; l < h; l++)
10030                (o[l].fn !== e || (n && !o[l].once) || (i && o[l].context !== i)) && u.push(o[l]);
10031              u.length ? (this._events[a] = 1 === u.length ? u[0] : u) : s(this, a);
10032            }
10033            return this;
10034          }),
10035          (o.prototype.removeAllListeners = function (t) {
10036            var e;
10037            return (
10038              t
10039                ? ((e = r ? r + t : t), this._events[e] && s(this, e))
10040                : ((this._events = new i()), (this._eventsCount = 0)),
10041              this
10042            );
10043          }),
10044          (o.prototype.off = o.prototype.removeListener),
10045          (o.prototype.addListener = o.prototype.on),
10046          (o.prefixed = r),
10047          (o.EventEmitter = o),
10048          (t.exports = o);
10049      })(nn);
10050      var an = p(nn.exports);
10051      function sn(t, e) {
10052        if (!((r = e.remuxResult).audio || r.video || r.text || r.id3 || r.initSegment)) return !1;
10053        var r,
10054          i = [],
10055          n = e.remuxResult,
10056          a = n.audio,
10057          s = n.video;
10058        return a && on(i, a), s && on(i, s), t.postMessage({ event: 'transmuxComplete', data: e }, i), !0;
10059      }
10060      function on(t, e) {
10061        e.data1 && t.push(e.data1.buffer), e.data2 && t.push(e.data2.buffer);
10062      }
10063      function ln(t, e, r) {
10064        e.reduce(function (e, r) {
10065          return sn(t, r) || e;
10066        }, !1) || t.postMessage({ event: 'transmuxComplete', data: e[0] }),
10067          t.postMessage({ event: 'flush', data: r });
10068      }
10069      void 0 !== e &&
10070        e &&
10071        (function (t) {
10072          var e = new an(),
10073            r = function (e, r) {
10074              t.postMessage({ event: e, data: r });
10075            };
10076          e.on(S.FRAG_DECRYPTED, r), e.on(S.ERROR, r);
10077          var i = function () {
10078            var t = function (t) {
10079              var e = function (e) {
10080                r('workerLog', { logType: t, message: e });
10081              };
10082              w[t] = e;
10083            };
10084            for (var e in w) t(e);
10085          };
10086          t.addEventListener('message', function (n) {
10087            var a = n.data;
10088            switch (a.cmd) {
10089              case 'init':
10090                var s = JSON.parse(a.config);
10091                (t.transmuxer = new Ji(e, a.typeSupported, s, a.vendor, a.id)), I(s.debug, a.id), i(), r('init', null);
10092                break;
10093              case 'configure':
10094                t.transmuxer.configure(a.config);
10095                break;
10096              case 'demux':
10097                var o = t.transmuxer.push(a.data, a.decryptdata, a.chunkMeta, a.state);
10098                tn(o)
10099                  ? ((t.transmuxer.async = !0),
10100                    o
10101                      .then(function (e) {
10102                        sn(t, e);
10103                      })
10104                      .catch(function (t) {
10105                        r(S.ERROR, {
10106                          type: L.MEDIA_ERROR,
10107                          details: R.FRAG_PARSING_ERROR,
10108                          chunkMeta: a.chunkMeta,
10109                          fatal: !1,
10110                          error: t,
10111                          err: t,
10112                          reason: 'transmuxer-worker push error',
10113                        });
10114                      }))
10115                  : ((t.transmuxer.async = !1), sn(t, o));
10116                break;
10117              case 'flush':
10118                var l = a.chunkMeta,
10119                  u = t.transmuxer.flush(l);
10120                tn(u) || t.transmuxer.async
10121                  ? (tn(u) || (u = Promise.resolve(u)),
10122                    u
10123                      .then(function (e) {
10124                        ln(t, e, l);
10125                      })
10126                      .catch(function (t) {
10127                        r(S.ERROR, {
10128                          type: L.MEDIA_ERROR,
10129                          details: R.FRAG_PARSING_ERROR,
10130                          chunkMeta: a.chunkMeta,
10131                          fatal: !1,
10132                          error: t,
10133                          err: t,
10134                          reason: 'transmuxer-worker flush error',
10135                        });
10136                      }))
10137                  : ln(t, u, l);
10138            }
10139          });
10140        })(self);
10141      var un = qt() || {
10142          isTypeSupported: function () {
10143            return !1;
10144          },
10145        },
10146        hn = (function () {
10147          function e(e, r, i, n) {
10148            var a = this;
10149            (this.error = null),
10150              (this.hls = void 0),
10151              (this.id = void 0),
10152              (this.observer = void 0),
10153              (this.frag = null),
10154              (this.part = null),
10155              (this.useWorker = void 0),
10156              (this.workerContext = null),
10157              (this.onwmsg = void 0),
10158              (this.transmuxer = null),
10159              (this.onTransmuxComplete = void 0),
10160              (this.onFlush = void 0);
10161            var s = e.config;
10162            (this.hls = e),
10163              (this.id = r),
10164              (this.useWorker = !!s.enableWorker),
10165              (this.onTransmuxComplete = i),
10166              (this.onFlush = n);
10167            var o = function (t, e) {
10168              ((e = e || {}).frag = a.frag), (e.id = a.id), t === S.ERROR && (a.error = e.error), a.hls.trigger(t, e);
10169            };
10170            (this.observer = new an()), this.observer.on(S.FRAG_DECRYPTED, o), this.observer.on(S.ERROR, o);
10171            var l,
10172              u,
10173              h,
10174              d,
10175              c = {
10176                mp4: un.isTypeSupported('video/mp4'),
10177                mpeg: un.isTypeSupported('audio/mpeg'),
10178                mp3: un.isTypeSupported('audio/mp4; codecs="mp3"'),
10179              },
10180              f = navigator.vendor;
10181            if (!this.useWorker || 'undefined' == typeof Worker || (s.workerPath, 0))
10182              this.transmuxer = new Ji(this.observer, c, s, f, r);
10183            else
10184              try {
10185                s.workerPath
10186                  ? (w.log('loading Web Worker ' + s.workerPath + ' for "' + r + '"'),
10187                    (this.workerContext =
10188                      ((h = s.workerPath),
10189                      (d = new self.URL(h, self.location.href).href),
10190                      { worker: new self.Worker(d), scriptURL: d })))
10191                  : (w.log('injecting Web Worker for "' + r + '"'),
10192                    (this.workerContext =
10193                      ((l = new self.Blob(
10194                        [
10195                          'var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(' +
10196                            t.toString() +
10197                            ')(true);',
10198                        ],
10199                        { type: 'text/javascript' },
10200                      )),
10201                      (u = self.URL.createObjectURL(l)),
10202                      { worker: new self.Worker(u), objectURL: u }))),
10203                  (this.onwmsg = function (t) {
10204                    return a.onWorkerMessage(t);
10205                  });
10206                var g = this.workerContext.worker;
10207                g.addEventListener('message', this.onwmsg),
10208                  (g.onerror = function (t) {
10209                    var e = new Error(t.message + '  (' + t.filename + ':' + t.lineno + ')');
10210                    (s.enableWorker = !1),
10211                      w.warn('Error in "' + r + '" Web Worker, fallback to inline'),
10212                      a.hls.trigger(S.ERROR, {
10213                        type: L.OTHER_ERROR,
10214                        details: R.INTERNAL_EXCEPTION,
10215                        fatal: !1,
10216                        event: 'demuxerWorker',
10217                        error: e,
10218                      });
10219                  }),
10220                  g.postMessage({ cmd: 'init', typeSupported: c, vendor: f, id: r, config: JSON.stringify(s) });
10221              } catch (t) {
10222                w.warn('Error setting up "' + r + '" Web Worker, fallback to inline', t),
10223                  this.resetWorker(),
10224                  (this.error = null),
10225                  (this.transmuxer = new Ji(this.observer, c, s, f, r));
10226              }
10227          }
10228          var r = e.prototype;
10229          return (
10230            (r.resetWorker = function () {
10231              if (this.workerContext) {
10232                var t = this.workerContext,
10233                  e = t.worker,
10234                  r = t.objectURL;
10235                r && self.URL.revokeObjectURL(r),
10236                  e.removeEventListener('message', this.onwmsg),
10237                  (e.onerror = null),
10238                  e.terminate(),
10239                  (this.workerContext = null);
10240              }
10241            }),
10242            (r.destroy = function () {
10243              if (this.workerContext) this.resetWorker(), (this.onwmsg = void 0);
10244              else {
10245                var t = this.transmuxer;
10246                t && (t.destroy(), (this.transmuxer = null));
10247              }
10248              var e = this.observer;
10249              e && e.removeAllListeners(), (this.frag = null), (this.observer = null), (this.hls = null);
10250            }),
10251            (r.push = function (t, e, r, i, n, a, s, o, l, u) {
10252              var h,
10253                d,
10254                c = this;
10255              l.transmuxing.start = self.performance.now();
10256              var f = this.transmuxer,
10257                g = a ? a.start : n.start,
10258                v = n.decryptdata,
10259                m = this.frag,
10260                p = !(m && n.cc === m.cc),
10261                y = !(m && l.level === m.level),
10262                T = m ? l.sn - m.sn : -1,
10263                E = this.part ? l.part - this.part.index : -1,
10264                S = 0 === T && l.id > 1 && l.id === (null == m ? void 0 : m.stats.chunkCount),
10265                L = !y && (1 === T || (0 === T && (1 === E || (S && E <= 0)))),
10266                R = self.performance.now();
10267              (y || T || 0 === n.stats.parsing.start) && (n.stats.parsing.start = R),
10268                !a || (!E && L) || (a.stats.parsing.start = R);
10269              var A = !(
10270                  m && (null == (h = n.initSegment) ? void 0 : h.url) === (null == (d = m.initSegment) ? void 0 : d.url)
10271                ),
10272                k = new rn(p, L, o, y, g, A);
10273              if (!L || p || A) {
10274                w.log(
10275                  '[transmuxer-interface, ' +
10276                    n.type +
10277                    ']: Starting new transmux session for sn: ' +
10278                    l.sn +
10279                    ' p: ' +
10280                    l.part +
10281                    ' level: ' +
10282                    l.level +
10283                    ' id: ' +
10284                    l.id +
10285                    '\n        discontinuity: ' +
10286                    p +
10287                    '\n        trackSwitch: ' +
10288                    y +
10289                    '\n        contiguous: ' +
10290                    L +
10291                    '\n        accurateTimeOffset: ' +
10292                    o +
10293                    '\n        timeOffset: ' +
10294                    g +
10295                    '\n        initSegmentChange: ' +
10296                    A,
10297                );
10298                var b = new en(r, i, e, s, u);
10299                this.configureTransmuxer(b);
10300              }
10301              if (((this.frag = n), (this.part = a), this.workerContext))
10302                this.workerContext.worker.postMessage(
10303                  { cmd: 'demux', data: t, decryptdata: v, chunkMeta: l, state: k },
10304                  t instanceof ArrayBuffer ? [t] : [],
10305                );
10306              else if (f) {
10307                var D = f.push(t, v, l, k);
10308                tn(D)
10309                  ? ((f.async = !0),
10310                    D.then(function (t) {
10311                      c.handleTransmuxComplete(t);
10312                    }).catch(function (t) {
10313                      c.transmuxerError(t, l, 'transmuxer-interface push error');
10314                    }))
10315                  : ((f.async = !1), this.handleTransmuxComplete(D));
10316              }
10317            }),
10318            (r.flush = function (t) {
10319              var e = this;
10320              t.transmuxing.start = self.performance.now();
10321              var r = this.transmuxer;
10322              if (this.workerContext) this.workerContext.worker.postMessage({ cmd: 'flush', chunkMeta: t });
10323              else if (r) {
10324                var i = r.flush(t);
10325                tn(i) || r.async
10326                  ? (tn(i) || (i = Promise.resolve(i)),
10327                    i
10328                      .then(function (r) {
10329                        e.handleFlushResult(r, t);
10330                      })
10331                      .catch(function (r) {
10332                        e.transmuxerError(r, t, 'transmuxer-interface flush error');
10333                      }))
10334                  : this.handleFlushResult(i, t);
10335              }
10336            }),
10337            (r.transmuxerError = function (t, e, r) {
10338              this.hls &&
10339                ((this.error = t),
10340                this.hls.trigger(S.ERROR, {
10341                  type: L.MEDIA_ERROR,
10342                  details: R.FRAG_PARSING_ERROR,
10343                  chunkMeta: e,
10344                  fatal: !1,
10345                  error: t,
10346                  err: t,
10347                  reason: r,
10348                }));
10349            }),
10350            (r.handleFlushResult = function (t, e) {
10351              var r = this;
10352              t.forEach(function (t) {
10353                r.handleTransmuxComplete(t);
10354              }),
10355                this.onFlush(e);
10356            }),
10357            (r.onWorkerMessage = function (t) {
10358              var e = t.data,
10359                r = this.hls;
10360              switch (e.event) {
10361                case 'init':
10362                  var i,
10363                    n = null == (i = this.workerContext) ? void 0 : i.objectURL;
10364                  n && self.URL.revokeObjectURL(n);
10365                  break;
10366                case 'transmuxComplete':
10367                  this.handleTransmuxComplete(e.data);
10368                  break;
10369                case 'flush':
10370                  this.onFlush(e.data);
10371                  break;
10372                case 'workerLog':
10373                  w[e.data.logType] && w[e.data.logType](e.data.message);
10374                  break;
10375                default:
10376                  (e.data = e.data || {}), (e.data.frag = this.frag), (e.data.id = this.id), r.trigger(e.event, e.data);
10377              }
10378            }),
10379            (r.configureTransmuxer = function (t) {
10380              var e = this.transmuxer;
10381              this.workerContext
10382                ? this.workerContext.worker.postMessage({ cmd: 'configure', config: t })
10383                : e && e.configure(t);
10384            }),
10385            (r.handleTransmuxComplete = function (t) {
10386              (t.chunkMeta.transmuxing.end = self.performance.now()), this.onTransmuxComplete(t);
10387            }),
10388            e
10389          );
10390        })(),
10391        dn = (function () {
10392          function t(t, e, r, i) {
10393            (this.config = void 0),
10394              (this.media = null),
10395              (this.fragmentTracker = void 0),
10396              (this.hls = void 0),
10397              (this.nudgeRetry = 0),
10398              (this.stallReported = !1),
10399              (this.stalled = null),
10400              (this.moved = !1),
10401              (this.seeking = !1),
10402              (this.config = t),
10403              (this.media = e),
10404              (this.fragmentTracker = r),
10405              (this.hls = i);
10406          }
10407          var e = t.prototype;
10408          return (
10409            (e.destroy = function () {
10410              (this.media = null), (this.hls = this.fragmentTracker = null);
10411            }),
10412            (e.poll = function (t, e) {
10413              var r = this.config,
10414                i = this.media,
10415                n = this.stalled;
10416              if (null !== i) {
10417                var a = i.currentTime,
10418                  s = i.seeking,
10419                  o = this.seeking && !s,
10420                  l = !this.seeking && s;
10421                if (((this.seeking = s), a === t)) {
10422                  if (l || o) this.stalled = null;
10423                  else if (!((i.paused && !s) || i.ended || 0 === i.playbackRate) && Ir.getBuffered(i).length) {
10424                    var u = Ir.bufferInfo(i, a, 0),
10425                      h = u.len > 0,
10426                      d = u.nextStart || 0;
10427                    if (h || d) {
10428                      if (s) {
10429                        var c = u.len > 2,
10430                          f = !d || (e && e.start <= a) || (d - a > 2 && !this.fragmentTracker.getPartialFragment(a));
10431                        if (c || f) return;
10432                        this.moved = !1;
10433                      }
10434                      if (!this.moved && null !== this.stalled) {
10435                        var g,
10436                          v = Math.max(d, u.start || 0) - a,
10437                          m = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null,
10438                          p = (null == m || null == (g = m.details) ? void 0 : g.live)
10439                            ? 2 * m.details.targetduration
10440                            : 2,
10441                          y = this.fragmentTracker.getPartialFragment(a);
10442                        if (v > 0 && (v <= p || y)) return void this._trySkipBufferHole(y);
10443                      }
10444                      var T = self.performance.now();
10445                      if (null !== n) {
10446                        var E = T - n;
10447                        if (s || !(E >= 250) || (this._reportStall(u), this.media)) {
10448                          var S = Ir.bufferInfo(i, a, r.maxBufferHole);
10449                          this._tryFixBufferStall(S, E);
10450                        }
10451                      } else this.stalled = T;
10452                    }
10453                  }
10454                } else if (((this.moved = !0), null !== n)) {
10455                  if (this.stallReported) {
10456                    var L = self.performance.now() - n;
10457                    w.warn('playback not stuck anymore @' + a + ', after ' + Math.round(L) + 'ms'),
10458                      (this.stallReported = !1);
10459                  }
10460                  (this.stalled = null), (this.nudgeRetry = 0);
10461                }
10462              }
10463            }),
10464            (e._tryFixBufferStall = function (t, e) {
10465              var r = this.config,
10466                i = this.fragmentTracker,
10467                n = this.media;
10468              if (null !== n) {
10469                var a = n.currentTime,
10470                  s = i.getPartialFragment(a);
10471                if (s && (this._trySkipBufferHole(s) || !this.media)) return;
10472                (t.len > r.maxBufferHole || (t.nextStart && t.nextStart - a < r.maxBufferHole)) &&
10473                  e > 1e3 * r.highBufferWatchdogPeriod &&
10474                  (w.warn('Trying to nudge playhead over buffer-hole'), (this.stalled = null), this._tryNudgeBuffer());
10475              }
10476            }),
10477            (e._reportStall = function (t) {
10478              var e = this.hls,
10479                r = this.media;
10480              if (!this.stallReported && r) {
10481                this.stallReported = !0;
10482                var i = new Error(
10483                  'Playback stalling at @' + r.currentTime + ' due to low buffer (' + JSON.stringify(t) + ')',
10484                );
10485                w.warn(i.message),
10486                  e.trigger(S.ERROR, {
10487                    type: L.MEDIA_ERROR,
10488                    details: R.BUFFER_STALLED_ERROR,
10489                    fatal: !1,
10490                    error: i,
10491                    buffer: t.len,
10492                  });
10493              }
10494            }),
10495            (e._trySkipBufferHole = function (t) {
10496              var e = this.config,
10497                r = this.hls,
10498                i = this.media;
10499              if (null === i) return 0;
10500              var n = i.currentTime,
10501                a = Ir.bufferInfo(i, n, 0),
10502                s = n < a.start ? a.start : a.nextStart;
10503              if (s) {
10504                var o = a.len <= e.maxBufferHole,
10505                  l = a.len > 0 && a.len < 1 && i.readyState < 3,
10506                  u = s - n;
10507                if (u > 0 && (o || l)) {
10508                  if (u > e.maxBufferHole) {
10509                    var h = this.fragmentTracker,
10510                      d = !1;
10511                    if (0 === n) {
10512                      var c = h.getAppendedFrag(0, ge);
10513                      c && s < c.end && (d = !0);
10514                    }
10515                    if (!d) {
10516                      var f = t || h.getAppendedFrag(n, ge);
10517                      if (f) {
10518                        for (var g = !1, v = f.end; v < s; ) {
10519                          var m = h.getPartialFragment(v);
10520                          if (!m) {
10521                            g = !0;
10522                            break;
10523                          }
10524                          v += m.duration;
10525                        }
10526                        if (g) return 0;
10527                      }
10528                    }
10529                  }
10530                  var p = Math.max(s + 0.05, n + 0.1);
10531                  if (
10532                    (w.warn('skipping hole, adjusting currentTime from ' + n + ' to ' + p),
10533                    (this.moved = !0),
10534                    (this.stalled = null),
10535                    (i.currentTime = p),
10536                    t && !t.gap)
10537                  ) {
10538                    var y = new Error('fragment loaded with buffer holes, seeking from ' + n + ' to ' + p);
10539                    r.trigger(S.ERROR, {
10540                      type: L.MEDIA_ERROR,
10541                      details: R.BUFFER_SEEK_OVER_HOLE,
10542                      fatal: !1,
10543                      error: y,
10544                      reason: y.message,
10545                      frag: t,
10546                    });
10547                  }
10548                  return p;
10549                }
10550              }
10551              return 0;
10552            }),
10553            (e._tryNudgeBuffer = function () {
10554              var t = this.config,
10555                e = this.hls,
10556                r = this.media,
10557                i = this.nudgeRetry;
10558              if (null !== r) {
10559                var n = r.currentTime;
10560                if ((this.nudgeRetry++, i < t.nudgeMaxRetry)) {
10561                  var a = n + (i + 1) * t.nudgeOffset,
10562                    s = new Error("Nudging 'currentTime' from " + n + ' to ' + a);
10563                  w.warn(s.message),
10564                    (r.currentTime = a),
10565                    e.trigger(S.ERROR, { type: L.MEDIA_ERROR, details: R.BUFFER_NUDGE_ON_STALL, error: s, fatal: !1 });
10566                } else {
10567                  var o = new Error(
10568                    'Playhead still not moving while enough data buffered @' +
10569                      n +
10570                      ' after ' +
10571                      t.nudgeMaxRetry +
10572                      ' nudges',
10573                  );
10574                  w.error(o.message),
10575                    e.trigger(S.ERROR, { type: L.MEDIA_ERROR, details: R.BUFFER_STALLED_ERROR, error: o, fatal: !0 });
10576                }
10577              }
10578            }),
10579            t
10580          );
10581        })(),
10582        cn = (function (t) {
10583          function e(e, r, i) {
10584            var n;
10585            return (
10586              ((n = t.call(this, e, r, i, '[stream-controller]', ge) || this).audioCodecSwap = !1),
10587              (n.gapController = null),
10588              (n.level = -1),
10589              (n._forceStartLoad = !1),
10590              (n.altAudio = !1),
10591              (n.audioOnly = !1),
10592              (n.fragPlaying = null),
10593              (n.onvplaying = null),
10594              (n.onvseeked = null),
10595              (n.fragLastKbps = 0),
10596              (n.couldBacktrack = !1),
10597              (n.backtrackFragment = null),
10598              (n.audioCodecSwitch = !1),
10599              (n.videoBuffer = null),
10600              n._registerListeners(),
10601              n
10602            );
10603          }
10604          l(e, t);
10605          var r = e.prototype;
10606          return (
10607            (r._registerListeners = function () {
10608              var t = this.hls;
10609              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
10610                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
10611                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
10612                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
10613                t.on(S.LEVEL_LOADING, this.onLevelLoading, this),
10614                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
10615                t.on(S.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this),
10616                t.on(S.ERROR, this.onError, this),
10617                t.on(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this),
10618                t.on(S.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this),
10619                t.on(S.BUFFER_CREATED, this.onBufferCreated, this),
10620                t.on(S.BUFFER_FLUSHED, this.onBufferFlushed, this),
10621                t.on(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
10622                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this);
10623            }),
10624            (r._unregisterListeners = function () {
10625              var t = this.hls;
10626              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
10627                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
10628                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
10629                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
10630                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
10631                t.off(S.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this),
10632                t.off(S.ERROR, this.onError, this),
10633                t.off(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this),
10634                t.off(S.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this),
10635                t.off(S.BUFFER_CREATED, this.onBufferCreated, this),
10636                t.off(S.BUFFER_FLUSHED, this.onBufferFlushed, this),
10637                t.off(S.LEVELS_UPDATED, this.onLevelsUpdated, this),
10638                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this);
10639            }),
10640            (r.onHandlerDestroying = function () {
10641              this._unregisterListeners(), this.onMediaDetaching();
10642            }),
10643            (r.startLoad = function (t) {
10644              if (this.levels) {
10645                var e = this.lastCurrentTime,
10646                  r = this.hls;
10647                if ((this.stopLoad(), this.setInterval(100), (this.level = -1), !this.startFragRequested)) {
10648                  var i = r.startLevel;
10649                  -1 === i &&
10650                    (r.config.testBandwidth && this.levels.length > 1
10651                      ? ((i = 0), (this.bitrateTest = !0))
10652                      : (i = r.nextAutoLevel)),
10653                    (this.level = r.nextLoadLevel = i),
10654                    (this.loadedmetadata = !1);
10655                }
10656                e > 0 &&
10657                  -1 === t &&
10658                  (this.log('Override startPosition with lastCurrentTime @' + e.toFixed(3)), (t = e)),
10659                  (this.state = Kr),
10660                  (this.nextLoadPosition = this.startPosition = this.lastCurrentTime = t),
10661                  this.tick();
10662              } else (this._forceStartLoad = !0), (this.state = Gr);
10663            }),
10664            (r.stopLoad = function () {
10665              (this._forceStartLoad = !1), t.prototype.stopLoad.call(this);
10666            }),
10667            (r.doTick = function () {
10668              switch (this.state) {
10669                case $r:
10670                  var t,
10671                    e = this.levels,
10672                    r = this.level,
10673                    i = null == e || null == (t = e[r]) ? void 0 : t.details;
10674                  if (i && (!i.live || this.levelLastLoaded === this.level)) {
10675                    if (this.waitForCdnTuneIn(i)) break;
10676                    this.state = Kr;
10677                    break;
10678                  }
10679                  if (this.hls.nextLoadLevel !== this.level) {
10680                    this.state = Kr;
10681                    break;
10682                  }
10683                  break;
10684                case Yr:
10685                  var n,
10686                    a = self.performance.now(),
10687                    s = this.retryDate;
10688                  (!s || a >= s || (null != (n = this.media) && n.seeking)) &&
10689                    (this.resetStartWhenNotLoaded(this.level), (this.state = Kr));
10690              }
10691              this.state === Kr && this.doTickIdle(), this.onTickEnd();
10692            }),
10693            (r.onTickEnd = function () {
10694              t.prototype.onTickEnd.call(this), this.checkBuffer(), this.checkFragmentChanged();
10695            }),
10696            (r.doTickIdle = function () {
10697              var t = this.hls,
10698                e = this.levelLastLoaded,
10699                r = this.levels,
10700                i = this.media,
10701                n = t.config,
10702                a = t.nextLoadLevel;
10703              if (
10704                null !== e &&
10705                (i || (!this.startFragRequested && n.startFragPrefetch)) &&
10706                (!this.altAudio || !this.audioOnly) &&
10707                null != r &&
10708                r[a]
10709              ) {
10710                var s = r[a],
10711                  o = this.getMainFwdBufferInfo();
10712                if (null !== o) {
10713                  var l = this.getLevelDetails();
10714                  if (l && this._streamEnded(o, l)) {
10715                    var u = {};
10716                    return (
10717                      this.altAudio && (u.type = 'video'), this.hls.trigger(S.BUFFER_EOS, u), void (this.state = Xr)
10718                    );
10719                  }
10720                  t.loadLevel !== a &&
10721                    -1 === t.manualLevel &&
10722                    this.log('Adapting to level ' + a + ' from level ' + this.level),
10723                    (this.level = t.nextLoadLevel = a);
10724                  var h = s.details;
10725                  if (!h || this.state === $r || (h.live && this.levelLastLoaded !== a))
10726                    return (this.level = a), void (this.state = $r);
10727                  var d = o.len,
10728                    c = this.getMaxBufferLength(s.maxBitrate);
10729                  if (!(d >= c)) {
10730                    this.backtrackFragment && this.backtrackFragment.start > o.end && (this.backtrackFragment = null);
10731                    var f = this.backtrackFragment ? this.backtrackFragment.start : o.end,
10732                      g = this.getNextFragment(f, h);
10733                    if (
10734                      this.couldBacktrack &&
10735                      !this.fragPrevious &&
10736                      g &&
10737                      'initSegment' !== g.sn &&
10738                      this.fragmentTracker.getState(g) !== mr
10739                    ) {
10740                      var v,
10741                        m = (null != (v = this.backtrackFragment) ? v : g).sn - h.startSN,
10742                        p = h.fragments[m - 1];
10743                      p && g.cc === p.cc && ((g = p), this.fragmentTracker.removeFragment(p));
10744                    } else this.backtrackFragment && o.len && (this.backtrackFragment = null);
10745                    if (g && this.isLoopLoading(g, f)) {
10746                      if (!g.gap) {
10747                        var y = this.audioOnly && !this.altAudio ? O : N,
10748                          T = (y === N ? this.videoBuffer : this.mediaBuffer) || this.media;
10749                        T && this.afterBufferFlushed(T, y, ge);
10750                      }
10751                      g = this.getNextFragmentLoopLoading(g, h, o, ge, c);
10752                    }
10753                    g &&
10754                      (!g.initSegment || g.initSegment.data || this.bitrateTest || (g = g.initSegment),
10755                      this.loadFragment(g, s, f));
10756                  }
10757                }
10758              }
10759            }),
10760            (r.loadFragment = function (e, r, i) {
10761              var n = this.fragmentTracker.getState(e);
10762              (this.fragCurrent = e),
10763                n === fr || n === vr
10764                  ? 'initSegment' === e.sn
10765                    ? this._loadInitSegment(e, r)
10766                    : this.bitrateTest
10767                    ? (this.log(
10768                        'Fragment ' +
10769                          e.sn +
10770                          ' of level ' +
10771                          e.level +
10772                          ' is being downloaded to test bitrate and will not be buffered',
10773                      ),
10774                      this._loadBitrateTestFrag(e, r))
10775                    : ((this.startFragRequested = !0), t.prototype.loadFragment.call(this, e, r, i))
10776                  : this.clearTrackerIfNeeded(e);
10777            }),
10778            (r.getBufferedFrag = function (t) {
10779              return this.fragmentTracker.getBufferedFrag(t, ge);
10780            }),
10781            (r.followingBufferedFrag = function (t) {
10782              return t ? this.getBufferedFrag(t.end + 0.5) : null;
10783            }),
10784            (r.immediateLevelSwitch = function () {
10785              this.abortCurrentFrag(), this.flushMainBuffer(0, Number.POSITIVE_INFINITY);
10786            }),
10787            (r.nextLevelSwitch = function () {
10788              var t = this.levels,
10789                e = this.media;
10790              if (null != e && e.readyState) {
10791                var r,
10792                  i = this.getAppendedFrag(e.currentTime);
10793                i && i.start > 1 && this.flushMainBuffer(0, i.start - 1);
10794                var n = this.getLevelDetails();
10795                if (null != n && n.live) {
10796                  var a = this.getMainFwdBufferInfo();
10797                  if (!a || a.len < 2 * n.targetduration) return;
10798                }
10799                if (!e.paused && t) {
10800                  var s = t[this.hls.nextLoadLevel],
10801                    o = this.fragLastKbps;
10802                  r = o && this.fragCurrent ? (this.fragCurrent.duration * s.maxBitrate) / (1e3 * o) + 1 : 0;
10803                } else r = 0;
10804                var l = this.getBufferedFrag(e.currentTime + r);
10805                if (l) {
10806                  var u = this.followingBufferedFrag(l);
10807                  if (u) {
10808                    this.abortCurrentFrag();
10809                    var h = u.maxStartPTS ? u.maxStartPTS : u.start,
10810                      d = u.duration,
10811                      c = Math.max(
10812                        l.end,
10813                        h + Math.min(Math.max(d - this.config.maxFragLookUpTolerance, 0.5 * d), 0.75 * d),
10814                      );
10815                    this.flushMainBuffer(c, Number.POSITIVE_INFINITY);
10816                  }
10817                }
10818              }
10819            }),
10820            (r.abortCurrentFrag = function () {
10821              var t = this.fragCurrent;
10822              switch (
10823                ((this.fragCurrent = null),
10824                (this.backtrackFragment = null),
10825                t && (t.abortRequests(), this.fragmentTracker.removeFragment(t)),
10826                this.state)
10827              ) {
10828                case Hr:
10829                case Vr:
10830                case Yr:
10831                case jr:
10832                case qr:
10833                  this.state = Kr;
10834              }
10835              this.nextLoadPosition = this.getLoadPosition();
10836            }),
10837            (r.flushMainBuffer = function (e, r) {
10838              t.prototype.flushMainBuffer.call(this, e, r, this.altAudio ? 'video' : null);
10839            }),
10840            (r.onMediaAttached = function (e, r) {
10841              t.prototype.onMediaAttached.call(this, e, r);
10842              var i = r.media;
10843              (this.onvplaying = this.onMediaPlaying.bind(this)),
10844                (this.onvseeked = this.onMediaSeeked.bind(this)),
10845                i.addEventListener('playing', this.onvplaying),
10846                i.addEventListener('seeked', this.onvseeked),
10847                (this.gapController = new dn(this.config, i, this.fragmentTracker, this.hls));
10848            }),
10849            (r.onMediaDetaching = function () {
10850              var e = this.media;
10851              e &&
10852                this.onvplaying &&
10853                this.onvseeked &&
10854                (e.removeEventListener('playing', this.onvplaying),
10855                e.removeEventListener('seeked', this.onvseeked),
10856                (this.onvplaying = this.onvseeked = null),
10857                (this.videoBuffer = null)),
10858                (this.fragPlaying = null),
10859                this.gapController && (this.gapController.destroy(), (this.gapController = null)),
10860                t.prototype.onMediaDetaching.call(this);
10861            }),
10862            (r.onMediaPlaying = function () {
10863              this.tick();
10864            }),
10865            (r.onMediaSeeked = function () {
10866              var t = this.media,
10867                e = t ? t.currentTime : null;
10868              E(e) && this.log('Media seeked to ' + e.toFixed(3));
10869              var r = this.getMainFwdBufferInfo();
10870              null !== r && 0 !== r.len
10871                ? this.tick()
10872                : this.warn('Main forward buffer length on "seeked" event ' + (r ? r.len : 'empty') + ')');
10873            }),
10874            (r.onManifestLoading = function () {
10875              this.log('Trigger BUFFER_RESET'),
10876                this.hls.trigger(S.BUFFER_RESET, void 0),
10877                this.fragmentTracker.removeAllFragments(),
10878                (this.couldBacktrack = !1),
10879                (this.startPosition = this.lastCurrentTime = 0),
10880                (this.levels = this.fragPlaying = this.backtrackFragment = null),
10881                (this.altAudio = this.audioOnly = !1);
10882            }),
10883            (r.onManifestParsed = function (t, e) {
10884              var r,
10885                i,
10886                n,
10887                a = !1,
10888                s = !1;
10889              e.levels.forEach(function (t) {
10890                (r = t.audioCodec) &&
10891                  (-1 !== r.indexOf('mp4a.40.2') && (a = !0), -1 !== r.indexOf('mp4a.40.5') && (s = !0));
10892              }),
10893                (this.audioCodecSwitch =
10894                  a &&
10895                  s &&
10896                  !('function' == typeof (null == (n = Zr()) || null == (i = n.prototype) ? void 0 : i.changeType))),
10897                this.audioCodecSwitch &&
10898                  this.log('Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC'),
10899                (this.levels = e.levels),
10900                (this.startFragRequested = !1);
10901            }),
10902            (r.onLevelLoading = function (t, e) {
10903              var r = this.levels;
10904              if (r && this.state === Kr) {
10905                var i = r[e.level];
10906                (!i.details ||
10907                  (i.details.live && this.levelLastLoaded !== e.level) ||
10908                  this.waitForCdnTuneIn(i.details)) &&
10909                  (this.state = $r);
10910              }
10911            }),
10912            (r.onLevelLoaded = function (t, e) {
10913              var r,
10914                i = this.levels,
10915                n = e.level,
10916                a = e.details,
10917                s = a.totalduration;
10918              if (i) {
10919                this.log(
10920                  'Level ' +
10921                    n +
10922                    ' loaded [' +
10923                    a.startSN +
10924                    ',' +
10925                    a.endSN +
10926                    ']' +
10927                    (a.lastPartSn ? '[part-' + a.lastPartSn + '-' + a.lastPartIndex + ']' : '') +
10928                    ', cc [' +
10929                    a.startCC +
10930                    ', ' +
10931                    a.endCC +
10932                    '] duration:' +
10933                    s,
10934                );
10935                var o = i[n],
10936                  l = this.fragCurrent;
10937                !l ||
10938                  (this.state !== Vr && this.state !== Yr) ||
10939                  (l.level === e.level && l.urlId === o.urlId) ||
10940                  !l.loader ||
10941                  this.abortCurrentFrag();
10942                var u = 0;
10943                if (a.live || (null != (r = o.details) && r.live)) {
10944                  if ((this.checkLiveUpdate(a), a.deltaUpdateFailed)) return;
10945                  u = this.alignPlaylists(a, o.details);
10946                }
10947                if (
10948                  ((o.details = a),
10949                  (this.levelLastLoaded = n),
10950                  this.hls.trigger(S.LEVEL_UPDATED, { details: a, level: n }),
10951                  this.state === $r)
10952                ) {
10953                  if (this.waitForCdnTuneIn(a)) return;
10954                  this.state = Kr;
10955                }
10956                this.startFragRequested ? a.live && this.synchronizeToLiveEdge(a) : this.setStartPosition(a, u),
10957                  this.tick();
10958              } else this.warn('Levels were reset while loading level ' + n);
10959            }),
10960            (r._handleFragmentLoadProgress = function (t) {
10961              var e,
10962                r = t.frag,
10963                i = t.part,
10964                n = t.payload,
10965                a = this.levels;
10966              if (a) {
10967                var s = a[r.level],
10968                  o = s.details;
10969                if (!o)
10970                  return (
10971                    this.warn('Dropping fragment ' + r.sn + ' of level ' + r.level + ' after level details were reset'),
10972                    void this.fragmentTracker.removeFragment(r)
10973                  );
10974                var l = s.videoCodec,
10975                  u = o.PTSKnown || !o.live,
10976                  h = null == (e = r.initSegment) ? void 0 : e.data,
10977                  d = this._getAudioCodec(s),
10978                  c = (this.transmuxer =
10979                    this.transmuxer ||
10980                    new hn(
10981                      this.hls,
10982                      ge,
10983                      this._handleTransmuxComplete.bind(this),
10984                      this._handleTransmuxerFlush.bind(this),
10985                    )),
10986                  f = i ? i.index : -1,
10987                  g = -1 !== f,
10988                  v = new wr(r.level, r.sn, r.stats.chunkCount, n.byteLength, f, g),
10989                  m = this.initPTS[r.cc];
10990                c.push(n, h, d, l, r, i, o.totalduration, u, v, m);
10991              } else
10992                this.warn(
10993                  'Levels were reset while fragment load was in progress. Fragment ' +
10994                    r.sn +
10995                    ' of level ' +
10996                    r.level +
10997                    ' will not be buffered',
10998                );
10999            }),
11000            (r.onAudioTrackSwitching = function (t, e) {
11001              var r = this.altAudio;
11002              if (!e.url) {
11003                if (this.mediaBuffer !== this.media) {
11004                  this.log('Switching on main audio, use media.buffered to schedule main fragment loading'),
11005                    (this.mediaBuffer = this.media);
11006                  var i = this.fragCurrent;
11007                  i &&
11008                    (this.log('Switching to main audio track, cancel main fragment load'),
11009                    i.abortRequests(),
11010                    this.fragmentTracker.removeFragment(i)),
11011                    this.resetTransmuxer(),
11012                    this.resetLoadingState();
11013                } else this.audioOnly && this.resetTransmuxer();
11014                var n = this.hls;
11015                r &&
11016                  (n.trigger(S.BUFFER_FLUSHING, { startOffset: 0, endOffset: Number.POSITIVE_INFINITY, type: null }),
11017                  this.fragmentTracker.removeAllFragments()),
11018                  n.trigger(S.AUDIO_TRACK_SWITCHED, e);
11019              }
11020            }),
11021            (r.onAudioTrackSwitched = function (t, e) {
11022              var r = e.id,
11023                i = !!this.hls.audioTracks[r].url;
11024              if (i) {
11025                var n = this.videoBuffer;
11026                n &&
11027                  this.mediaBuffer !== n &&
11028                  (this.log('Switching on alternate audio, use video.buffered to schedule main fragment loading'),
11029                  (this.mediaBuffer = n));
11030              }
11031              (this.altAudio = i), this.tick();
11032            }),
11033            (r.onBufferCreated = function (t, e) {
11034              var r,
11035                i,
11036                n = e.tracks,
11037                a = !1;
11038              for (var s in n) {
11039                var o = n[s];
11040                if ('main' === o.id) {
11041                  if (((i = s), (r = o), 'video' === s)) {
11042                    var l = n[s];
11043                    l && (this.videoBuffer = l.buffer);
11044                  }
11045                } else a = !0;
11046              }
11047              a && r
11048                ? (this.log('Alternate track found, use ' + i + '.buffered to schedule main fragment loading'),
11049                  (this.mediaBuffer = r.buffer))
11050                : (this.mediaBuffer = this.media);
11051            }),
11052            (r.onFragBuffered = function (t, e) {
11053              var r = e.frag,
11054                i = e.part;
11055              if (!r || r.type === ge) {
11056                if (this.fragContextChanged(r))
11057                  return (
11058                    this.warn(
11059                      'Fragment ' +
11060                        r.sn +
11061                        (i ? ' p: ' + i.index : '') +
11062                        ' of level ' +
11063                        r.level +
11064                        ' finished buffering, but was aborted. state: ' +
11065                        this.state,
11066                    ),
11067                    void (this.state === qr && (this.state = Kr))
11068                  );
11069                var n = i ? i.stats : r.stats;
11070                (this.fragLastKbps = Math.round((8 * n.total) / (n.buffering.end - n.loading.first))),
11071                  'initSegment' !== r.sn && (this.fragPrevious = r),
11072                  this.fragBufferedComplete(r, i);
11073              }
11074            }),
11075            (r.onError = function (t, e) {
11076              var r;
11077              if (e.fatal) this.state = zr;
11078              else
11079                switch (e.details) {
11080                  case R.FRAG_GAP:
11081                  case R.FRAG_PARSING_ERROR:
11082                  case R.FRAG_DECRYPT_ERROR:
11083                  case R.FRAG_LOAD_ERROR:
11084                  case R.FRAG_LOAD_TIMEOUT:
11085                  case R.KEY_LOAD_ERROR:
11086                  case R.KEY_LOAD_TIMEOUT:
11087                    this.onFragmentOrKeyLoadError(ge, e);
11088                    break;
11089                  case R.LEVEL_LOAD_ERROR:
11090                  case R.LEVEL_LOAD_TIMEOUT:
11091                  case R.LEVEL_PARSING_ERROR:
11092                    e.levelRetry ||
11093                      this.state !== $r ||
11094                      (null == (r = e.context) ? void 0 : r.type) !== de ||
11095                      (this.state = Kr);
11096                    break;
11097                  case R.BUFFER_FULL_ERROR:
11098                    if (!e.parent || 'main' !== e.parent) return;
11099                    this.reduceLengthAndFlushBuffer(e) && this.flushMainBuffer(0, Number.POSITIVE_INFINITY);
11100                    break;
11101                  case R.INTERNAL_EXCEPTION:
11102                    this.recoverWorkerError(e);
11103                }
11104            }),
11105            (r.checkBuffer = function () {
11106              var t = this.media,
11107                e = this.gapController;
11108              if (t && e && t.readyState) {
11109                if (this.loadedmetadata || !Ir.getBuffered(t).length) {
11110                  var r = this.state !== Kr ? this.fragCurrent : null;
11111                  e.poll(this.lastCurrentTime, r);
11112                }
11113                this.lastCurrentTime = t.currentTime;
11114              }
11115            }),
11116            (r.onFragLoadEmergencyAborted = function () {
11117              (this.state = Kr),
11118                this.loadedmetadata || ((this.startFragRequested = !1), (this.nextLoadPosition = this.startPosition)),
11119                this.tickImmediate();
11120            }),
11121            (r.onBufferFlushed = function (t, e) {
11122              var r = e.type;
11123              if (r !== O || (this.audioOnly && !this.altAudio)) {
11124                var i = (r === N ? this.videoBuffer : this.mediaBuffer) || this.media;
11125                this.afterBufferFlushed(i, r, ge);
11126              }
11127            }),
11128            (r.onLevelsUpdated = function (t, e) {
11129              this.levels = e.levels;
11130            }),
11131            (r.swapAudioCodec = function () {
11132              this.audioCodecSwap = !this.audioCodecSwap;
11133            }),
11134            (r.seekToStartPos = function () {
11135              var t = this.media;
11136              if (t) {
11137                var e = t.currentTime,
11138                  r = this.startPosition;
11139                if (r >= 0 && e < r) {
11140                  if (t.seeking) return void this.log('could not seek to ' + r + ', already seeking at ' + e);
11141                  var i = Ir.getBuffered(t),
11142                    n = (i.length ? i.start(0) : 0) - r;
11143                  n > 0 &&
11144                    (n < this.config.maxBufferHole || n < this.config.maxFragLookUpTolerance) &&
11145                    (this.log('adjusting start position by ' + n + ' to match buffer start'),
11146                    (r += n),
11147                    (this.startPosition = r)),
11148                    this.log('seek to target start position ' + r + ' from current time ' + e),
11149                    (t.currentTime = r);
11150                }
11151              }
11152            }),
11153            (r._getAudioCodec = function (t) {
11154              var e = this.config.defaultAudioCodec || t.audioCodec;
11155              return (
11156                this.audioCodecSwap &&
11157                  e &&
11158                  (this.log('Swapping audio codec'), (e = -1 !== e.indexOf('mp4a.40.5') ? 'mp4a.40.2' : 'mp4a.40.5')),
11159                e
11160              );
11161            }),
11162            (r._loadBitrateTestFrag = function (t, e) {
11163              var r = this;
11164              (t.bitrateTest = !0),
11165                this._doFragLoad(t, e).then(function (i) {
11166                  var n = r.hls;
11167                  if (i && !r.fragContextChanged(t)) {
11168                    (e.fragmentError = 0), (r.state = Kr), (r.startFragRequested = !1), (r.bitrateTest = !1);
11169                    var a = t.stats;
11170                    (a.parsing.start = a.parsing.end = a.buffering.start = a.buffering.end = self.performance.now()),
11171                      n.trigger(S.FRAG_LOADED, i),
11172                      (t.bitrateTest = !1);
11173                  }
11174                });
11175            }),
11176            (r._handleTransmuxComplete = function (t) {
11177              var e,
11178                r = 'main',
11179                i = this.hls,
11180                n = t.remuxResult,
11181                a = t.chunkMeta,
11182                s = this.getCurrentContext(a);
11183              if (s) {
11184                var o = s.frag,
11185                  l = s.part,
11186                  u = s.level,
11187                  h = n.video,
11188                  d = n.text,
11189                  c = n.id3,
11190                  f = n.initSegment,
11191                  g = u.details,
11192                  v = this.altAudio ? void 0 : n.audio;
11193                if (this.fragContextChanged(o)) this.fragmentTracker.removeFragment(o);
11194                else {
11195                  if (((this.state = jr), f)) {
11196                    if (null != f && f.tracks) {
11197                      var m = o.initSegment || o;
11198                      this._bufferInitSegment(u, f.tracks, m, a),
11199                        i.trigger(S.FRAG_PARSING_INIT_SEGMENT, { frag: m, id: r, tracks: f.tracks });
11200                    }
11201                    var p = f.initPTS,
11202                      y = f.timescale;
11203                    E(p) &&
11204                      ((this.initPTS[o.cc] = { baseTime: p, timescale: y }),
11205                      i.trigger(S.INIT_PTS_FOUND, { frag: o, id: r, initPTS: p, timescale: y }));
11206                  }
11207                  if (h && g && 'initSegment' !== o.sn) {
11208                    var T = g.fragments[o.sn - 1 - g.startSN],
11209                      L = o.sn === g.startSN,
11210                      R = !T || o.cc > T.cc;
11211                    if (!1 !== n.independent) {
11212                      var A = h.startPTS,
11213                        k = h.endPTS,
11214                        b = h.startDTS,
11215                        D = h.endDTS;
11216                      if (l) l.elementaryStreams[h.type] = { startPTS: A, endPTS: k, startDTS: b, endDTS: D };
11217                      else if (
11218                        (h.firstKeyFrame && h.independent && 1 === a.id && !R && (this.couldBacktrack = !0),
11219                        h.dropped && h.independent)
11220                      ) {
11221                        var I = this.getMainFwdBufferInfo(),
11222                          w = (I ? I.end : this.getLoadPosition()) + this.config.maxBufferHole,
11223                          C = h.firstKeyFramePTS ? h.firstKeyFramePTS : A;
11224                        if (!L && w < C - this.config.maxBufferHole && !R) return void this.backtrack(o);
11225                        R && (o.gap = !0), o.setElementaryStreamInfo(h.type, o.start, k, o.start, D, !0);
11226                      }
11227                      o.setElementaryStreamInfo(h.type, A, k, b, D),
11228                        this.backtrackFragment && (this.backtrackFragment = o),
11229                        this.bufferFragmentData(h, o, l, a, L || R);
11230                    } else {
11231                      if (!L && !R) return void this.backtrack(o);
11232                      o.gap = !0;
11233                    }
11234                  }
11235                  if (v) {
11236                    var _ = v.startPTS,
11237                      P = v.endPTS,
11238                      x = v.startDTS,
11239                      F = v.endDTS;
11240                    l && (l.elementaryStreams[O] = { startPTS: _, endPTS: P, startDTS: x, endDTS: F }),
11241                      o.setElementaryStreamInfo(O, _, P, x, F),
11242                      this.bufferFragmentData(v, o, l, a);
11243                  }
11244                  if (g && null != c && null != (e = c.samples) && e.length) {
11245                    var M = { id: r, frag: o, details: g, samples: c.samples };
11246                    i.trigger(S.FRAG_PARSING_METADATA, M);
11247                  }
11248                  if (g && d) {
11249                    var N = { id: r, frag: o, details: g, samples: d.samples };
11250                    i.trigger(S.FRAG_PARSING_USERDATA, N);
11251                  }
11252                }
11253              } else this.resetWhenMissingContext(a);
11254            }),
11255            (r._bufferInitSegment = function (t, e, r, i) {
11256              var n = this;
11257              if (this.state === jr) {
11258                (this.audioOnly = !!e.audio && !e.video), this.altAudio && !this.audioOnly && delete e.audio;
11259                var a = e.audio,
11260                  s = e.video,
11261                  o = e.audiovideo;
11262                if (a) {
11263                  var l = t.audioCodec,
11264                    u = navigator.userAgent.toLowerCase();
11265                  this.audioCodecSwitch &&
11266                    (l && (l = -1 !== l.indexOf('mp4a.40.5') ? 'mp4a.40.2' : 'mp4a.40.5'),
11267                    1 !== a.metadata.channelCount && -1 === u.indexOf('firefox') && (l = 'mp4a.40.5')),
11268                    -1 !== u.indexOf('android') &&
11269                      'audio/mpeg' !== a.container &&
11270                      ((l = 'mp4a.40.2'), this.log('Android: force audio codec to ' + l)),
11271                    t.audioCodec &&
11272                      t.audioCodec !== l &&
11273                      this.log('Swapping manifest audio codec "' + t.audioCodec + '" for "' + l + '"'),
11274                    (a.levelCodec = l),
11275                    (a.id = 'main'),
11276                    this.log(
11277                      'Init audio buffer, container:' +
11278                        a.container +
11279                        ', codecs[selected/level/parsed]=[' +
11280                        (l || '') +
11281                        '/' +
11282                        (t.audioCodec || '') +
11283                        '/' +
11284                        a.codec +
11285                        ']',
11286                    );
11287                }
11288                s &&
11289                  ((s.levelCodec = t.videoCodec),
11290                  (s.id = 'main'),
11291                  this.log(
11292                    'Init video buffer, container:' +
11293                      s.container +
11294                      ', codecs[level/parsed]=[' +
11295                      (t.videoCodec || '') +
11296                      '/' +
11297                      s.codec +
11298                      ']',
11299                  )),
11300                  o &&
11301                    this.log(
11302                      'Init audiovideo buffer, container:' +
11303                        o.container +
11304                        ', codecs[level/parsed]=[' +
11305                        (t.attrs.CODECS || '') +
11306                        '/' +
11307                        o.codec +
11308                        ']',
11309                    ),
11310                  this.hls.trigger(S.BUFFER_CODECS, e),
11311                  Object.keys(e).forEach(function (t) {
11312                    var a = e[t].initSegment;
11313                    null != a &&
11314                      a.byteLength &&
11315                      n.hls.trigger(S.BUFFER_APPENDING, {
11316                        type: t,
11317                        data: a,
11318                        frag: r,
11319                        part: null,
11320                        chunkMeta: i,
11321                        parent: r.type,
11322                      });
11323                  }),
11324                  this.tick();
11325              }
11326            }),
11327            (r.getMainFwdBufferInfo = function () {
11328              return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, ge);
11329            }),
11330            (r.backtrack = function (t) {
11331              (this.couldBacktrack = !0),
11332                (this.backtrackFragment = t),
11333                this.resetTransmuxer(),
11334                this.flushBufferGap(t),
11335                this.fragmentTracker.removeFragment(t),
11336                (this.fragPrevious = null),
11337                (this.nextLoadPosition = t.start),
11338                (this.state = Kr);
11339            }),
11340            (r.checkFragmentChanged = function () {
11341              var t = this.media,
11342                e = null;
11343              if (t && t.readyState > 1 && !1 === t.seeking) {
11344                var r = t.currentTime;
11345                if (
11346                  (Ir.isBuffered(t, r)
11347                    ? (e = this.getAppendedFrag(r))
11348                    : Ir.isBuffered(t, r + 0.1) && (e = this.getAppendedFrag(r + 0.1)),
11349                  e)
11350                ) {
11351                  this.backtrackFragment = null;
11352                  var i = this.fragPlaying,
11353                    n = e.level;
11354                  (i && e.sn === i.sn && i.level === n && e.urlId === i.urlId) ||
11355                    ((this.fragPlaying = e),
11356                    this.hls.trigger(S.FRAG_CHANGED, { frag: e }),
11357                    (i && i.level === n) || this.hls.trigger(S.LEVEL_SWITCHED, { level: n }));
11358                }
11359              }
11360            }),
11361            a(e, [
11362              {
11363                key: 'nextLevel',
11364                get: function () {
11365                  var t = this.nextBufferedFrag;
11366                  return t ? t.level : -1;
11367                },
11368              },
11369              {
11370                key: 'currentFrag',
11371                get: function () {
11372                  var t = this.media;
11373                  return t ? this.fragPlaying || this.getAppendedFrag(t.currentTime) : null;
11374                },
11375              },
11376              {
11377                key: 'currentProgramDateTime',
11378                get: function () {
11379                  var t = this.media;
11380                  if (t) {
11381                    var e = t.currentTime,
11382                      r = this.currentFrag;
11383                    if (r && E(e) && E(r.programDateTime)) {
11384                      var i = r.programDateTime + 1e3 * (e - r.start);
11385                      return new Date(i);
11386                    }
11387                  }
11388                  return null;
11389                },
11390              },
11391              {
11392                key: 'currentLevel',
11393                get: function () {
11394                  var t = this.currentFrag;
11395                  return t ? t.level : -1;
11396                },
11397              },
11398              {
11399                key: 'nextBufferedFrag',
11400                get: function () {
11401                  var t = this.currentFrag;
11402                  return t ? this.followingBufferedFrag(t) : null;
11403                },
11404              },
11405              {
11406                key: 'forceStartLoad',
11407                get: function () {
11408                  return this._forceStartLoad;
11409                },
11410              },
11411            ]),
11412            e
11413          );
11414        })(Jr),
11415        fn = (function () {
11416          function t(t, e, r) {
11417            void 0 === e && (e = 0),
11418              void 0 === r && (r = 0),
11419              (this.halfLife = void 0),
11420              (this.alpha_ = void 0),
11421              (this.estimate_ = void 0),
11422              (this.totalWeight_ = void 0),
11423              (this.halfLife = t),
11424              (this.alpha_ = t ? Math.exp(Math.log(0.5) / t) : 0),
11425              (this.estimate_ = e),
11426              (this.totalWeight_ = r);
11427          }
11428          var e = t.prototype;
11429          return (
11430            (e.sample = function (t, e) {
11431              var r = Math.pow(this.alpha_, t);
11432              (this.estimate_ = e * (1 - r) + r * this.estimate_), (this.totalWeight_ += t);
11433            }),
11434            (e.getTotalWeight = function () {
11435              return this.totalWeight_;
11436            }),
11437            (e.getEstimate = function () {
11438              if (this.alpha_) {
11439                var t = 1 - Math.pow(this.alpha_, this.totalWeight_);
11440                if (t) return this.estimate_ / t;
11441              }
11442              return this.estimate_;
11443            }),
11444            t
11445          );
11446        })(),
11447        gn = (function () {
11448          function t(t, e, r, i) {
11449            void 0 === i && (i = 100),
11450              (this.defaultEstimate_ = void 0),
11451              (this.minWeight_ = void 0),
11452              (this.minDelayMs_ = void 0),
11453              (this.slow_ = void 0),
11454              (this.fast_ = void 0),
11455              (this.defaultTTFB_ = void 0),
11456              (this.ttfb_ = void 0),
11457              (this.defaultEstimate_ = r),
11458              (this.minWeight_ = 0.001),
11459              (this.minDelayMs_ = 50),
11460              (this.slow_ = new fn(t)),
11461              (this.fast_ = new fn(e)),
11462              (this.defaultTTFB_ = i),
11463              (this.ttfb_ = new fn(t));
11464          }
11465          var e = t.prototype;
11466          return (
11467            (e.update = function (t, e) {
11468              var r = this.slow_,
11469                i = this.fast_,
11470                n = this.ttfb_;
11471              r.halfLife !== t && (this.slow_ = new fn(t, r.getEstimate(), r.getTotalWeight(
11471))),
11472                i.halfLife !== e && (this.fast_ = new fn(e, i.getEstimate(), i.getTotalWeight())),
11473                n.halfLife !== t && (this.ttfb_ = new fn(t, n.getEstimate(), n.getTotalWeight()));
11474            }),
11475            (e.sample = function (t, e) {
11476              var r = (t = Math.max(t, this.minDelayMs_)) / 1e3,
11477                i = (8 * e) / r;
11478              this.fast_.sample(r, i), this.slow_.sample(r, i);
11479            }),
11480            (e.sampleTTFB = function (t) {
11481              var e = t / 1e3,
11482                r = Math.sqrt(2) * Math.exp(-Math.pow(e, 2) / 2);
11483              this.ttfb_.sample(r, Math.max(t, 5));
11484            }),
11485            (e.canEstimate = function () {
11486              return this.fast_.getTotalWeight() >= this.minWeight_;
11487            }),
11488            (e.getEstimate = function () {
11489              return this.canEstimate()
11490                ? Math.min(this.fast_.getEstimate(), this.slow_.getEstimate())
11491                : this.defaultEstimate_;
11492            }),
11493            (e.getEstimateTTFB = function () {
11494              return this.ttfb_.getTotalWeight() >= this.minWeight_ ? this.ttfb_.getEstimate() : this.defaultTTFB_;
11495            }),
11496            (e.destroy = function () {}),
11497            t
11498          );
11499        })(),
11500        vn = (function () {
11501          function t(t) {
11502            (this.hls = void 0),
11503              (this.lastLevelLoadSec = 0),
11504              (this.lastLoadedFragLevel = 0),
11505              (this._nextAutoLevel = -1),
11506              (this.timer = -1),
11507              (this.onCheck = this._abandonRulesCheck.bind(this)),
11508              (this.fragCurrent = null),
11509              (this.partCurrent = null),
11510              (this.bitrateTestDelay = 0),
11511              (this.bwEstimator = void 0),
11512              (this.hls = t);
11513            var e = t.config;
11514            (this.bwEstimator = new gn(e.abrEwmaSlowVoD, e.abrEwmaFastVoD, e.abrEwmaDefaultEstimate)),
11515              this.registerListeners();
11516          }
11517          var e = t.prototype;
11518          return (
11519            (e.registerListeners = function () {
11520              var t = this.hls;
11521              t.on(S.FRAG_LOADING, this.onFragLoading, this),
11522                t.on(S.FRAG_LOADED, this.onFragLoaded, this),
11523                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this),
11524                t.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
11525                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this);
11526            }),
11527            (e.unregisterListeners = function () {
11528              var t = this.hls;
11529              t.off(S.FRAG_LOADING, this.onFragLoading, this),
11530                t.off(S.FRAG_LOADED, this.onFragLoaded, this),
11531                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this),
11532                t.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
11533                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this);
11534            }),
11535            (e.destroy = function () {
11536              this.unregisterListeners(),
11537                this.clearTimer(),
11538                (this.hls = this.onCheck = null),
11539                (this.fragCurrent = this.partCurrent = null);
11540            }),
11541            (e.onFragLoading = function (t, e) {
11542              var r,
11543                i = e.frag;
11544              this.ignoreFragment(i) ||
11545                ((this.fragCurrent = i),
11546                (this.partCurrent = null != (r = e.part) ? r : null),
11547                this.clearTimer(),
11548                (this.timer = self.setInterval(this.onCheck, 100)));
11549            }),
11550            (e.onLevelSwitching = function (t, e) {
11551              this.clearTimer();
11552            }),
11553            (e.getTimeToLoadFrag = function (t, e, r, i) {
11554              return t + r / e + (i ? this.lastLevelLoadSec : 0);
11555            }),
11556            (e.onLevelLoaded = function (t, e) {
11557              var r = this.hls.config,
11558                i = e.stats,
11559                n = i.total,
11560                a = i.bwEstimate;
11561              E(n) && E(a) && (this.lastLevelLoadSec = (8 * n) / a),
11562                e.details.live
11563                  ? this.bwEstimator.update(r.abrEwmaSlowLive, r.abrEwmaFastLive)
11564                  : this.bwEstimator.update(r.abrEwmaSlowVoD, r.abrEwmaFastVoD);
11565            }),
11566            (e._abandonRulesCheck = function () {
11567              var t = this.fragCurrent,
11568                e = this.partCurrent,
11569                r = this.hls,
11570                i = r.autoLevelEnabled,
11571                n = r.media;
11572              if (t && n) {
11573                var a = performance.now(),
11574                  s = e ? e.stats : t.stats,
11575                  o = e ? e.duration : t.duration,
11576                  l = a - s.loading.start;
11577                if (s.aborted || (s.loaded && s.loaded === s.total) || 0 === t.level)
11578                  return this.clearTimer(), void (this._nextAutoLevel = -1);
11579                if (i && !n.paused && n.playbackRate && n.readyState) {
11580                  var u = r.mainForwardBufferInfo;
11581                  if (null !== u) {
11582                    var h = this.bwEstimator.getEstimateTTFB(),
11583                      d = Math.abs(n.playbackRate);
11584                    if (!(l <= Math.max(h, (o / (2 * d)) * 1e3))) {
11585                      var c = u.len / d;
11586                      if (!(c >= (2 * o) / d)) {
11587                        var f = s.loading.first ? s.loading.first - s.loading.start : -1,
11588                          g = s.loaded && f > -1,
11589                          v = this.bwEstimator.getEstimate(),
11590                          m = r.levels,
11591                          p = r.minAutoLevel,
11592                          y = m[t.level],
11593                          T = s.total || Math.max(s.loaded, Math.round((o * y.maxBitrate) / 8)),
11594                          L = l - f;
11595                        L < 1 && g && (L = Math.min(l, (8 * s.loaded) / v));
11596                        var R = g ? (1e3 * s.loaded) / L : 0,
11597                          A = R ? (T - s.loaded) / R : (8 * T) / v + h / 1e3;
11598                        if (!(A <= c)) {
11599                          var k,
11600                            b = R ? 8 * R : v,
11601                            D = Number.POSITIVE_INFINITY;
11602                          for (k = t.level - 1; k > p; k--) {
11603                            var I = m[k].maxBitrate;
11604                            if ((D = this.getTimeToLoadFrag(h / 1e3, b, o * I, !m[k].details)) < c) break;
11605                          }
11606                          D >= A ||
11607                            D > 10 * o ||
11608                            ((r.nextLoadLevel = k),
11609                            g ? this.bwEstimator.sample(l - Math.min(h, f), s.loaded) : this.bwEstimator.sampleTTFB(l),
11610                            this.clearTimer(),
11611                            w.warn(
11612                              '[abr] Fragment ' +
11613                                t.sn +
11614                                (e ? ' part ' + e.index : '') +
11615                                ' of level ' +
11616                                t.level +
11617                                ' is loading too slowly;\n      Time to underbuffer: ' +
11618                                c.toFixed(3) +
11619                                ' s\n      Estimated load time for current fragment: ' +
11620                                A.toFixed(3) +
11621                                ' s\n      Estimated load time for down switch fragment: ' +
11622                                D.toFixed(3) +
11623                                ' s\n      TTFB estimate: ' +
11624                                f +
11625                                '\n      Current BW estimate: ' +
11626                                (E(v) ? (v / 1024).toFixed(3) : 'Unknown') +
11627                                ' Kb/s\n      New BW estimate: ' +
11628                                (this.bwEstimator.getEstimate() / 1024).toFixed(3) +
11629                                ' Kb/s\n      Aborting and switching to level ' +
11630                                k,
11631                            ),
11632                            t.loader && ((this.fragCurrent = this.partCurrent = null), t.abortRequests()),
11633                            r.trigger(S.FRAG_LOAD_EMERGENCY_ABORTED, { frag: t, part: e, stats: s }));
11634                        }
11635                      }
11636                    }
11637                  }
11638                }
11639              }
11640            }),
11641            (e.onFragLoaded = function (t, e) {
11642              var r = e.frag,
11643                i = e.part,
11644                n = i ? i.stats : r.stats;
11645              if (
11646                (r.type === ge && this.bwEstimator.sampleTTFB(n.loading.first - n.loading.start),
11647                !this.ignoreFragment(r))
11648              ) {
11649                if (
11650                  (this.clearTimer(),
11651                  (this.lastLoadedFragLevel = r.level),
11652                  (this._nextAutoLevel = -1),
11653                  this.hls.config.abrMaxWithRealBitrate)
11654                ) {
11655                  var a = i ? i.duration : r.duration,
11656                    s = this.hls.levels[r.level],
11657                    o = (s.loaded ? s.loaded.bytes : 0) + n.loaded,
11658                    l = (s.loaded ? s.loaded.duration : 0) + a;
11659                  (s.loaded = { bytes: o, duration: l }), (s.realBitrate = Math.round((8 * o) / l));
11660                }
11661                if (r.bitrateTest) {
11662                  var u = { stats: n, frag: r, part: i, id: r.type };
11663                  this.onFragBuffered(S.FRAG_BUFFERED, u), (r.bitrateTest = !1);
11664                }
11665              }
11666            }),
11667            (e.onFragBuffered = function (t, e) {
11668              var r = e.frag,
11669                i = e.part,
11670                n = null != i && i.stats.loaded ? i.stats : r.stats;
11671              if (!n.aborted && !this.ignoreFragment(r)) {
11672                var a =
11673                  n.parsing.end -
11674                  n.loading.start -
11675                  Math.min(n.loading.first - n.loading.start, this.bwEstimator.getEstimateTTFB());
11676                this.bwEstimator.sample(a, n.loaded),
11677                  (n.bwEstimate = this.bwEstimator.getEstimate()),
11678                  r.bitrateTest ? (this.bitrateTestDelay = a / 1e3) : (this.bitrateTestDelay = 0);
11679              }
11680            }),
11681            (e.ignoreFragment = function (t) {
11682              return t.type !== ge || 'initSegment' === t.sn;
11683            }),
11684            (e.clearTimer = function () {
11685              self.clearInterval(this.timer);
11686            }),
11687            (e.getNextABRAutoLevel = function () {
11688              var t = this.fragCurrent,
11689                e = this.partCurrent,
11690                r = this.hls,
11691                i = r.maxAutoLevel,
11692                n = r.config,
11693                a = r.minAutoLevel,
11694                s = r.media,
11695                o = e ? e.duration : t ? t.duration : 0,
11696                l = s && 0 !== s.playbackRate ? Math.abs(s.playbackRate) : 1,
11697                u = this.bwEstimator ? this.bwEstimator.getEstimate() : n.abrEwmaDefaultEstimate,
11698                h = r.mainForwardBufferInfo,
11699                d = (h ? h.len : 0) / l,
11700                c = this.findBestLevel(u, a, i, d, n.abrBandWidthFactor, n.abrBandWidthUpFactor);
11701              if (c >= 0) return c;
11702              w.trace('[abr] ' + (d ? 'rebuffering expected' : 'buffer is empty') + ', finding optimal quality level');
11703              var f = o ? Math.min(o, n.maxStarvationDelay) : n.maxStarvationDelay,
11704                g = n.abrBandWidthFactor,
11705                v = n.abrBandWidthUpFactor;
11706              if (!d) {
11707                var m = this.bitrateTestDelay;
11708                m &&
11709                  ((f = (o ? Math.min(o, n.maxLoadingDelay) : n.maxLoadingDelay) - m),
11710                  w.trace(
11711                    '[abr] bitrate test took ' +
11712                      Math.round(1e3 * m) +
11713                      'ms, set first fragment max fetchDuration to ' +
11714                      Math.round(1e3 * f) +
11715                      ' ms',
11716                  ),
11717                  (g = v = 1));
11718              }
11719              return (c = this.findBestLevel(u, a, i, d + f, g, v)), Math.max(c, 0);
11720            }),
11721            (e.findBestLevel = function (t, e, r, i, n, a) {
11722              for (
11723                var s,
11724                  o = this.fragCurrent,
11725                  l = this.partCurrent,
11726                  u = this.lastLoadedFragLevel,
11727                  h = this.hls.levels,
11728                  d = h[u],
11729                  c = !(null == d || null == (s = d.details) || !s.live),
11730                  f = null == d ? void 0 : d.codecSet,
11731                  g = l ? l.duration : o ? o.duration : 0,
11732                  v = this.bwEstimator.getEstimateTTFB() / 1e3,
11733                  m = e,
11734                  p = -1,
11735                  y = r;
11736                y >= e;
11737                y--
11738              ) {
11739                var T = h[y];
11740                if (!T || (f && T.codecSet !== f)) T && ((m = Math.min(y, m)), (p = Math.max(y, p)));
11741                else {
11742                  -1 !== p &&
11743                    w.trace(
11744                      '[abr] Skipped level(s) ' +
11745                        m +
11746                        '-' +
11747                        p +
11748                        ' with CODECS:"' +
11749                        h[p].attrs.CODECS +
11750                        '"; not compatible with "' +
11751                        d.attrs.CODECS +
11752                        '"',
11753                    );
11754                  var S = T.details,
11755                    L = (l ? (null == S ? void 0 : S.partTarget) : null == S ? void 0 : S.averagetargetduration) || g,
11756                    R = void 0;
11757                  R = y <= u ? n * t : a * t;
11758                  var A = h[y].maxBitrate,
11759                    k = this.getTimeToLoadFrag(v, R, A * L, void 0 === S);
11760                  if (
11761                    (w.trace(
11762                      '[abr] level:' +
11763                        y +
11764                        ' adjustedbw-bitrate:' +
11765                        Math.round(R - A) +
11766                        ' avgDuration:' +
11767                        L.toFixed(1) +
11768                        ' maxFetchDuration:' +
11769                        i.toFixed(1) +
11770                        ' fetchDuration:' +
11771                        k.toFixed(1),
11772                    ),
11773                    R > A && (0 === k || !E(k) || (c && !this.bitrateTestDelay) || k < i))
11774                  )
11775                    return y;
11776                }
11777              }
11778              return -1;
11779            }),
11780            a(t, [
11781              {
11782                key: 'nextAutoLevel',
11783                get: function () {
11784                  var t = this._nextAutoLevel,
11785                    e = this.bwEstimator;
11786                  if (-1 !== t && !e.canEstimate()) return t;
11787                  var r = this.getNextABRAutoLevel();
11788                  if (-1 !== t) {
11789                    var i = this.hls.levels;
11790                    if (i.length > Math.max(t, r) && i[t].loadError <= i[r].loadError) return t;
11791                  }
11792                  return -1 !== t && (r = Math.min(t, r)), r;
11793                },
11794                set: function (t) {
11795                  this._nextAutoLevel = t;
11796                },
11797              },
11798            ]),
11799            t
11800          );
11801        })(),
11802        mn = (function () {
11803          function t() {
11804            (this.chunks = []), (this.dataLength = 0);
11805          }
11806          var e = t.prototype;
11807          return (
11808            (e.push = function (t) {
11809              this.chunks.push(t), (this.dataLength += t.length);
11810            }),
11811            (e.flush = function () {
11812              var t,
11813                e = this.chunks,
11814                r = this.dataLength;
11815              return e.length
11816                ? ((t =
11817                    1 === e.length
11818                      ? e[0]
11819                      : (function (t, e) {
11820                          for (var r = new Uint8Array(e), i = 0, n = 0; n < t.length; n++) {
11821                            var a = t[n];
11822                            r.set(a, i), (i += a.length);
11823                          }
11824                          return r;
11825                        })(e, r)),
11826                  this.reset(),
11827                  t)
11828                : new Uint8Array(0);
11829            }),
11830            (e.reset = function () {
11831              (this.chunks.length = 0), (this.dataLength = 0);
11832            }),
11833            t
11834          );
11835        })(),
11836        pn = (function (t) {
11837          function e(e, r, i) {
11838            var n;
11839            return (
11840              ((n = t.call(this, e, r, i, '[audio-stream-controller]', ve) || this).videoBuffer = null),
11841              (n.videoTrackCC = -1),
11842              (n.waitingVideoCC = -1),
11843              (n.bufferedTrack = null),
11844              (n.switchingTrack = null),
11845              (n.trackId = -1),
11846              (n.waitingData = null),
11847              (n.mainDetails = null),
11848              (n.bufferFlushed = !1),
11849              (n.cachedTrackLoadedData = null),
11850              n._registerListeners(),
11851              n
11852            );
11853          }
11854          l(e, t);
11855          var r = e.prototype;
11856          return (
11857            (r.onHandlerDestroying = function () {
11858              this._unregisterListeners(),
11859                (this.mainDetails = null),
11860                (this.bufferedTrack = null),
11861                (this.switchingTrack = null);
11862            }),
11863            (r._registerListeners = function () {
11864              var t = this.hls;
11865              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
11866                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
11867                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
11868                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
11869                t.on(S.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this),
11870                t.on(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this),
11871                t.on(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this),
11872                t.on(S.ERROR, this.onError, this),
11873                t.on(S.BUFFER_RESET, this.onBufferReset, this),
11874                t.on(S.BUFFER_CREATED, this.onBufferCreated, this),
11875                t.on(S.BUFFER_FLUSHED, this.onBufferFlushed, this),
11876                t.on(S.INIT_PTS_FOUND, this.onInitPtsFound, this),
11877                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this);
11878            }),
11879            (r._unregisterListeners = function () {
11880              var t = this.hls;
11881              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
11882                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
11883                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
11884                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
11885                t.off(S.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this),
11886                t.off(S.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this),
11887                t.off(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this),
11888                t.off(S.ERROR, this.onError, this),
11889                t.off(S.BUFFER_RESET, this.onBufferReset, this),
11890                t.off(S.BUFFER_CREATED, this.onBufferCreated, this),
11891                t.off(S.BUFFER_FLUSHED, this.onBufferFlushed, this),
11892                t.off(S.INIT_PTS_FOUND, this.onInitPtsFound, this),
11893                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this);
11894            }),
11895            (r.onInitPtsFound = function (t, e) {
11896              var r = e.frag,
11897                i = e.id,
11898                n = e.initPTS,
11899                a = e.timescale;
11900              if ('main' === i) {
11901                var s = r.cc;
11902                (this.initPTS[r.cc] = { baseTime: n, timescale: a }),
11903                  this.log('InitPTS for cc: ' + s + ' found from main: ' + n),
11904                  (this.videoTrackCC = s),
11905                  this.state === Qr && this.tick();
11906              }
11907            }),
11908            (r.startLoad = function (t) {
11909              if (!this.levels) return (this.startPosition = t), void (this.state = Gr);
11910              var e = this.lastCurrentTime;
11911              this.stopLoad(),
11912                this.setInterval(100),
11913                e > 0 && -1 === t
11914                  ? (this.log('Override startPosition with lastCurrentTime @' + e.toFixed(3)),
11915                    (t = e),
11916                    (this.state = Kr))
11917                  : ((this.loadedmetadata = !1), (this.state = Wr)),
11918                (this.nextLoadPosition = this.startPosition = this.lastCurrentTime = t),
11919                this.tick();
11920            }),
11921            (r.doTick = function () {
11922              switch (this.state) {
11923                case Kr:
11924                  this.doTickIdle();
11925                  break;
11926                case Wr:
11927                  var e,
11928                    r = this.levels,
11929                    i = this.trackId,
11930                    n = null == r || null == (e = r[i]) ? void 0 : e.details;
11931                  if (n) {
11932                    if (this.waitForCdnTuneIn(n)) break;
11933                    this.state = Qr;
11934                  }
11935                  break;
11936                case Yr:
11937                  var a,
11938                    s = performance.now(),
11939                    o = this.retryDate;
11940                  (!o || s >= o || (null != (a = this.media) && a.seeking)) &&
11941                    (this.log('RetryDate reached, switch back to IDLE state'),
11942                    this.resetStartWhenNotLoaded(this.trackId),
11943                    (this.state = Kr));
11944                  break;
11945                case Qr:
11946                  var l = this.waitingData;
11947                  if (l) {
11948                    var u = l.frag,
11949                      h = l.part,
11950                      d = l.cache,
11951                      c = l.complete;
11952                    if (void 0 !== this.initPTS[u.cc]) {
11953                      (this.waitingData = null), (this.waitingVideoCC = -1), (this.state = Vr);
11954                      var f = { frag: u, part: h, payload: d.flush(), networkDetails: null };
11955                      this._handleFragmentLoadProgress(f), c && t.prototype._handleFragmentLoadComplete.call(this, f);
11956                    } else if (this.videoTrackCC !== this.waitingVideoCC)
11957                      this.log(
11958                        'Waiting fragment cc (' + u.cc + ') cancelled because video is at cc ' + this.videoTrackCC,
11959                      ),
11960                        this.clearWaitingFragment();
11961                    else {
11962                      var g = this.getLoadPosition(),
11963                        v = Ir.bufferInfo(this.mediaBuffer, g, this.config.maxBufferHole);
11964                      Je(v.end, this.config.maxFragLookUpTolerance, u) < 0 &&
11965                        (this.log(
11966                          'Waiting fragment cc (' +
11967                            u.cc +
11968                            ') @ ' +
11969                            u.start +
11970                            ' cancelled because another fragment at ' +
11971                            v.end +
11972                            ' is needed',
11973                        ),
11974                        this.clearWaitingFragment());
11975                    }
11976                  } else this.state = Kr;
11977              }
11978              this.onTickEnd();
11979            }),
11980            (r.clearWaitingFragment = function () {
11981              var t = this.waitingData;
11982              t &&
11983                (this.fragmentTracker.removeFragment(t.frag),
11984                (this.waitingData = null),
11985                (this.waitingVideoCC = -1),
11986                (this.state = Kr));
11987            }),
11988            (r.resetLoadingState = function () {
11989              this.clearWaitingFragment(), t.prototype.resetLoadingState.call(this);
11990            }),
11991            (r.onTickEnd = function () {
11992              var t = this.media;
11993              null != t && t.readyState && (this.lastCurrentTime = t.currentTime);
11994            }),
11995            (r.doTickIdle = function () {
11996              var t = this.hls,
11997                e = this.levels,
11998                r = this.media,
11999                i = this.trackId,
12000                n = t.config;
12001              if (null != e && e[i] && (r || (!this.startFragRequested && n.startFragPrefetch))) {
12002                var a = e[i],
12003                  s = a.details;
12004                if (!s || (s.live && this.levelLastLoaded !== i) || this.waitForCdnTuneIn(s)) this.state = Wr;
12005                else {
12006                  var o = this.mediaBuffer ? this.mediaBuffer : this.media;
12007                  this.bufferFlushed && o && ((this.bufferFlushed = !1), this.afterBufferFlushed(o, O, ve));
12008                  var l = this.getFwdBufferInfo(o, ve);
12009                  if (null !== l) {
12010                    var u = this.bufferedTrack,
12011                      h = this.switchingTrack;
12012                    if (!h && this._streamEnded(l, s))
12013                      return t.trigger(S.BUFFER_EOS, { type: 'audio' }), void (this.state = Xr);
12014                    var d = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, ge),
12015                      c = l.len,
12016                      f = this.getMaxBufferLength(null == d ? void 0 : d.len);
12017                    if (!(c >= f) || h) {
12018                      var g = s.fragments[0].start,
12019                        v = l.end;
12020                      if (h && r) {
12021                        var m = this.getLoadPosition();
12022                        u && h.attrs !== u.attrs && (v = m),
12023                          s.PTSKnown &&
12024                            m < g &&
12025                            (l.end > g || l.nextStart) &&
12026                            (this.log('Alt audio track ahead of main track, seek to start of alt audio track'),
12027                            (r.currentTime = g + 0.05));
12028                      }
12029                      var p = this.getNextFragment(v, s),
12030                        y = !1;
12031                      if (
12032                        (p &&
12033                          this.isLoopLoading(p, v) &&
12034                          ((y = !!p.gap), (p = this.getNextFragmentLoopLoading(p, s, l, ge, f))),
12035                        p)
12036                      ) {
12037                        var T = d && p.start > d.end + s.targetduration;
12038                        if (T || ((null == d || !d.len) && l.len)) {
12039                          var E = this.getAppendedFrag(p.start, ge);
12040                          if (null === E) return;
12041                          if (
12042                            (y || (y = !!E.gap || (!!T && 0 === d.len)),
12043                            (T && !y) || (y && l.nextStart && l.nextStart < E.end))
12044                          )
12045                            return;
12046                        }
12047                        this.loadFragment(p, a, v);
12048                      } else this.bufferFlushed = !0;
12049                    }
12050                  }
12051                }
12052              }
12053            }),
12054            (r.getMaxBufferLength = function (e) {
12055              var r = t.prototype.getMaxBufferLength.call(this);
12056              return e ? Math.min(Math.max(r, e), this.config.maxMaxBufferLength) : r;
12057            }),
12058            (r.onMediaDetaching = function () {
12059              (this.videoBuffer = null), t.prototype.onMediaDetaching.call(this);
12060            }),
12061            (r.onAudioTracksUpdated = function (t, e) {
12062              var r = e.audioTracks;
12063              this.resetTransmuxer(),
12064                (this.levels = r.map(function (t) {
12065                  return new Ne(t);
12066                }));
12067            }),
12068            (r.onAudioTrackSwitching = function (t, e) {
12069              var r = !!e.url;
12070              this.trackId = e.id;
12071              var i = this.fragCurrent;
12072              i && (i.abortRequests(), this.removeUnbufferedFrags(i.start)),
12073                this.resetLoadingState(),
12074                r ? this.setInterval(100) : this.resetTransmuxer(),
12075                r
12076                  ? ((this.switchingTrack = e), (this.state = Kr))
12077                  : ((this.switchingTrack = null), (this.bufferedTrack = e), (this.state = Gr)),
12078                this.tick();
12079            }),
12080            (r.onManifestLoading = function () {
12081              this.fragmentTracker.removeAllFragments(),
12082                (this.startPosition = this.lastCurrentTime = 0),
12083                (this.bufferFlushed = !1),
12084                (this.levels =
12085                  this.mainDetails =
12086                  this.waitingData =
12087                  this.bufferedTrack =
12088                  this.cachedTrackLoadedData =
12089                  this.switchingTrack =
12090                    null),
12091                (this.startFragRequested = !1),
12092                (this.trackId = this.videoTrackCC = this.waitingVideoCC = -1);
12093            }),
12094            (r.onLevelLoaded = function (t, e) {
12095              (this.mainDetails = e.details),
12096                null !== this.cachedTrackLoadedData &&
12097                  (this.hls.trigger(S.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData),
12098                  (this.cachedTrackLoadedData = null));
12099            }),
12100            (r.onAudioTrackLoaded = function (t, e) {
12101              var r;
12102              if (null != this.mainDetails) {
12103                var i = this.levels,
12104                  n = e.details,
12105                  a = e.id;
12106                if (i) {
12107                  this.log(
12108                    'Track ' +
12109                      a +
12110                      ' loaded [' +
12111                      n.startSN +
12112                      ',' +
12113                      n.endSN +
12114                      ']' +
12115                      (n.lastPartSn ? '[part-' + n.lastPartSn + '-' + n.lastPartIndex + ']' : '') +
12116                      ',duration:' +
12117                      n.totalduration,
12118                  );
12119                  var s = i[a],
12120                    o = 0;
12121                  if (n.live || (null != (r = s.details) && r.live)) {
12122                    this.checkLiveUpdate(n);
12123                    var l = this.mainDetails;
12124                    if (n.deltaUpdateFailed || !l) return;
12125                    !s.details && n.hasProgramDateTime && l.hasProgramDateTime
12126                      ? (Fr(n, l), (o = n.fragments[0].start))
12127                      : (o = this.alignPlaylists(n, s.details));
12128                  }
12129                  (s.details = n),
12130                    (this.levelLastLoaded = a),
12131                    this.startFragRequested || (!this.mainDetails && n.live) || this.setStartPosition(s.details, o),
12132                    this.state !== Wr || this.waitForCdnTuneIn(n) || (this.state = Kr),
12133                    this.tick();
12134                } else this.warn('Audio tracks were reset while loading level ' + a);
12135              } else this.cachedTrackLoadedData = e;
12136            }),
12137            (r._handleFragmentLoadProgress = function (t) {
12138              var e,
12139                r = t.frag,
12140                i = t.part,
12141                n = t.payload,
12142                a = this.config,
12143                s = this.trackId,
12144                o = this.levels;
12145              if (o) {
12146                var l = o[s];
12147                if (l) {
12148                  var u = l.details;
12149                  if (!u)
12150                    return (
12151                      this.warn('Audio track details undefined on fragment load progress'),
12152                      void this.removeUnbufferedFrags(r.start)
12153                    );
12154                  var h = a.defaultAudioCodec || l.audioCodec || 'mp4a.40.2',
12155                    d = this.transmuxer;
12156                  d ||
12157                    (d = this.transmuxer =
12158                      new hn(
12159                        this.hls,
12160                        ve,
12161                        this._handleTransmuxComplete.bind(this),
12162                        this._handleTransmuxerFlush.bind(this),
12163                      ));
12164                  var c = this.initPTS[r.cc],
12165                    f = null == (e = r.initSegment) ? void 0 : e.data;
12166                  if (void 0 !== c) {
12167                    var g = i ? i.index : -1,
12168                      v = -1 !== g,
12169                      m = new wr(r.level, r.sn, r.stats.chunkCount, n.byteLength, g, v);
12170                    d.push(n, f, h, '', r, i, u.totalduration, !1, m, c);
12171                  } else
12172                    this.log(
12173                      'Unknown video PTS for cc ' +
12174                        r.cc +
12175                        ', waiting for video PTS before demuxing audio frag ' +
12176                        r.sn +
12177                        ' of [' +
12178                        u.startSN +
12179                        ' ,' +
12180                        u.endSN +
12181                        '],track ' +
12182                        s,
12183                    ),
12184                      (this.waitingData = this.waitingData || {
12185                        frag: r,
12186                        part: i,
12187                        cache: new mn(),
12188                        complete: !1,
12189                      }).cache.push(new Uint8Array(n)),
12190                      (this.waitingVideoCC = this.videoTrackCC),
12191                      (this.state = Qr);
12192                } else this.warn('Audio track is undefined on fragment load progress');
12193              } else
12194                this.warn(
12195                  'Audio tracks were reset while fragment load was in progress. Fragment ' +
12196                    r.sn +
12197                    ' of level ' +
12198                    r.level +
12199                    ' will not be buffered',
12200                );
12201            }),
12202            (r._handleFragmentLoadComplete = function (e) {
12203              this.waitingData
12204                ? (this.waitingData.complete = !0)
12205                : t.prototype._handleFragmentLoadComplete.call(this, e);
12206            }),
12207            (r.onBufferReset = function () {
12208              (this.mediaBuffer = this.videoBuffer = null), (this.loadedmetadata = !1);
12209            }),
12210            (r.onBufferCreated = function (t, e) {
12211              var r = e.tracks.audio;
12212              r && (this.mediaBuffer = r.buffer || null),
12213                e.tracks.video && (this.videoBuffer = e.tracks.video.buffer || null);
12214            }),
12215            (r.onFragBuffered = function (t, e) {
12216              var r = e.frag,
12217                n = e.part;
12218              if (r.type === ve)
12219                if (this.fragContextChanged(r))
12220                  this.warn(
12221                    'Fragment ' +
12222                      r.sn +
12223                      (n ? ' p: ' + n.index : '') +
12224                      ' of level ' +
12225                      r.level +
12226                      ' finished buffering, but was aborted. state: ' +
12227                      this.state +
12228                      ', audioSwitch: ' +
12229                      (this.switchingTrack ? this.switchingTrack.name : 'false'),
12230                  );
12231                else {
12232                  if ('initSegment' !== r.sn) {
12233                    this.fragPrevious = r;
12234                    var a = this.switchingTrack;
12235                    a &&
12236                      ((this.bufferedTrack = a),
12237                      (this.switchingTrack = null),
12238                      this.hls.trigger(S.AUDIO_TRACK_SWITCHED, i({}, a)));
12239                  }
12240                  this.fragBufferedComplete(r, n);
12241                }
12242              else if (!this.loadedmetadata && r.type === ge) {
12243                var s = this.videoBuffer || this.media;
12244                s && Ir.getBuffered(s).length && (this.loadedmetadata = !0);
12245              }
12246            }),
12247            (r.onError = function (e, r) {
12248              var i;
12249              if (r.fatal) this.state = zr;
12250              else
12251                switch (r.details) {
12252                  case R.FRAG_GAP:
12253                  case R.FRAG_PARSING_ERROR:
12254                  case R.FRAG_DECRYPT_ERROR:
12255                  case R.FRAG_LOAD_ERROR:
12256                  case R.FRAG_LOAD_TIMEOUT:
12257                  case R.KEY_LOAD_ERROR:
12258                  case R.KEY_LOAD_TIMEOUT:
12259                    this.onFragmentOrKeyLoadError(ve, r);
12260                    break;
12261                  case R.AUDIO_TRACK_LOAD_ERROR:
12262                  case R.AUDIO_TRACK_LOAD_TIMEOUT:
12263                  case R.LEVEL_PARSING_ERROR:
12264                    r.levelRetry ||
12265                      this.state !== Wr ||
12266                      (null == (i = r.context) ? void 0 : i.type) !== ce ||
12267                      (this.state = Kr);
12268                    break;
12269                  case R.BUFFER_FULL_ERROR:
12270                    if (!r.parent || 'audio' !== r.parent) return;
12271                    this.reduceLengthAndFlushBuffer(r) &&
12272                      ((this.bufferedTrack = null),
12273                      t.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio'));
12274                    break;
12275                  case R.INTERNAL_EXCEPTION:
12276                    this.recoverWorkerError(r);
12277                }
12278            }),
12279            (r.onBufferFlushed = function (t, e) {
12280              e.type === O && ((this.bufferFlushed = !0), this.state === Xr && (this.state = Kr));
12281            }),
12282            (r._handleTransmuxComplete = function (t) {
12283              var e,
12284                r = 'audio',
12285                i = this.hls,
12286                n = t.remuxResult,
12287                a = t.chunkMeta,
12288                s = this.getCurrentContext(a);
12289              if (s) {
12290                var l = s.frag,
12291                  u = s.part,
12292                  h = s.level.details,
12293                  d = n.audio,
12294                  c = n.text,
12295                  f = n.id3,
12296                  g = n.initSegment;
12297                if (!this.fragContextChanged(l) && h) {
12298                  if (
12299                    ((this.state = jr),
12300                    this.switchingTrack && d && this.completeAudioSwitch(this.switchingTrack),
12301                    null != g && g.tracks)
12302                  ) {
12303                    var v = l.initSegment || l;
12304                    this._bufferInitSegment(g.tracks, v, a),
12305                      i.trigger(S.FRAG_PARSING_INIT_SEGMENT, { frag: v, id: r, tracks: g.tracks });
12306                  }
12307                  if (d) {
12308                    var m = d.startPTS,
12309                      p = d.endPTS,
12310                      y = d.startDTS,
12311                      T = d.endDTS;
12312                    u && (u.elementaryStreams[O] = { startPTS: m, endPTS: p, startDTS: y, endDTS: T }),
12313                      l.setElementaryStreamInfo(O, m, p, y, T),
12314                      this.bufferFragmentData(d, l, u, a);
12315                  }
12316                  if (null != f && null != (e = f.samples) && e.length) {
12317                    var E = o({ id: r, frag: l, details: h }, f);
12318                    i.trigger(S.FRAG_PARSING_METADATA, E);
12319                  }
12320                  if (c) {
12321                    var L = o({ id: r, frag: l, details: h }, c);
12322                    i.trigger(S.FRAG_PARSING_USERDATA, L);
12323                  }
12324                } else this.fragmentTracker.removeFragment(l);
12325              } else this.resetWhenMissingContext(a);
12326            }),
12327            (r._bufferInitSegment = function (t, e, r) {
12328              if (this.state === jr) {
12329                t.video && delete t.video;
12330                var i = t.audio;
12331                if (i) {
12332                  (i.levelCodec = i.codec),
12333                    (i.id = 'audio'),
12334                    this.log('Init audio buffer, container:' + i.container + ', codecs[parsed]=[' + i.codec + ']'),
12335                    this.hls.trigger(S.BUFFER_CODECS, t);
12336                  var n = i.initSegment;
12337                  if (null != n && n.byteLength) {
12338                    var a = { type: 'audio', frag: e, part: null, chunkMeta: r, parent: e.type, data: n };
12339                    this.hls.trigger(S.BUFFER_APPENDING, a);
12340                  }
12341                  this.tick();
12342                }
12343              }
12344            }),
12345            (r.loadFragment = function (e, r, i) {
12346              var n,
12347                a = this.fragmentTracker.getState(e);
12348              (this.fragCurrent = e),
12349                this.switchingTrack || a === fr || a === vr
12350                  ? 'initSegment' === e.sn
12351                    ? this._loadInitSegment(e, r)
12352                    : null != (n = r.details) && n.live && !this.initPTS[e.cc]
12353                    ? (this.log(
12354                        'Waiting for video PTS in continuity counter ' +
12355                          e.cc +
12356                          ' of live stream before loading audio fragment ' +
12357                          e.sn +
12358                          ' of level ' +
12359                          this.trackId,
12360                      ),
12361                      (this.state = Qr))
12362                    : ((this.startFragRequested = !0), t.prototype.loadFragment.call(this, e, r, i))
12363                  : this.clearTrackerIfNeeded(e);
12364            }),
12365            (r.completeAudioSwitch = function (e) {
12366              var r = this.hls,
12367                n = this.media,
12368                a = this.bufferedTrack,
12369                s = null == a ? void 0 : a.attrs,
12370                o = e.attrs;
12371              n &&
12372                s &&
12373                (s.CHANNELS !== o.CHANNELS || s.NAME !== o.NAME || s.LANGUAGE !== o.LANGUAGE) &&
12374                (this.log('Switching audio track : flushing all audio'),
12375                t.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, 'audio')),
12376                (this.bufferedTrack = e),
12377                (this.switchingTrack = null),
12378                r.trigger(S.AUDIO_TRACK_SWITCHED, i({}, e));
12379            }),
12380            e
12381          );
12382        })(Jr),
12383        yn = (function (t) {
12384          function e(e) {
12385            var r;
12386            return (
12387              ((r = t.call(this, e, '[audio-track-controller]') || this).tracks = []),
12388              (r.groupId = null),
12389              (r.tracksInGroup = []),
12390              (r.trackId = -1),
12391              (r.currentTrack = null),
12392              (r.selectDefaultTrack = !0),
12393              r.registerListeners(),
12394              r
12395            );
12396          }
12397          l(e, t);
12398          var r = e.prototype;
12399          return (
12400            (r.registerListeners = function () {
12401              var t = this.hls;
12402              t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
12403                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
12404                t.on(S.LEVEL_LOADING, this.onLevelLoading, this),
12405                t.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
12406                t.on(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this),
12407                t.on(S.ERROR, this.onError, this);
12408            }),
12409            (r.unregisterListeners = function () {
12410              var t = this.hls;
12411              t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
12412                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
12413                t.off(S.LEVEL_LOADING, this.onLevelLoading, this),
12414                t.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
12415                t.off(S.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this),
12416                t.off(S.ERROR, this.onError, this);
12417            }),
12418            (r.destroy = function () {
12419              this.unregisterListeners(),
12420                (this.tracks.length = 0),
12421                (this.tracksInGroup.length = 0),
12422                (this.currentTrack = null),
12423                t.prototype.destroy.call(this);
12424            }),
12425            (r.onManifestLoading = function () {
12426              (this.tracks = []),
12427                (this.groupId = null),
12428                (this.tracksInGroup = []),
12429                (this.trackId = -1),
12430                (this.currentTrack = null),
12431                (this.selectDefaultTrack = !0);
12432            }),
12433            (r.onManifestParsed = function (t, e) {
12434              this.tracks = e.audioTracks || [];
12435            }),
12436            (r.onAudioTrackLoaded = function (t, e) {
12437              var r = e.id,
12438                i = e.groupId,
12439                n = e.details,
12440                a = this.tracksInGroup[r];
12441              if (a && a.groupId === i) {
12442                var s = a.details;
12443                (a.details = e.details),
12444                  this.log(
12445                    'audio-track ' +
12446                      r +
12447                      ' "' +
12448                      a.name +
12449                      '" lang:' +
12450                      a.lang +
12451                      ' group:' +
12452                      i +
12453                      ' loaded [' +
12454                      n.startSN +
12455                      '-' +
12456                      n.endSN +
12457                      ']',
12458                  ),
12459                  r === this.trackId && this.playlistLoaded(r, e, s);
12460              } else this.warn('Track with id:' + r + ' and group:' + i + ' not found in active group ' + a.groupId);
12461            }),
12462            (r.onLevelLoading = function (t, e) {
12463              this.switchLevel(e.level);
12464            }),
12465            (r.onLevelSwitching = function (t, e) {
12466              this.switchLevel(e.level);
12467            }),
12468            (r.switchLevel = function (t) {
12469              var e = this.hls.levels[t];
12470              if (null != e && e.audioGroupIds) {
12471                var r = e.audioGroupIds[e.urlId];
12472                if (this.groupId !== r) {
12473                  this.groupId = r || null;
12474                  var i = this.tracks.filter(function (t) {
12475                    return !r || t.groupId === r;
12476                  });
12477                  this.selectDefaultTrack &&
12478                    !i.some(function (t) {
12479                      return t.default;
12480                    }) &&
12481                    (this.selectDefaultTrack = !1),
12482                    (this.tracksInGroup = i);
12483                  var n = { audioTracks: i };
12484                  this.log('Updating audio tracks, ' + i.length + ' track(s) found in group:' + r),
12485                    this.hls.trigger(S.AUDIO_TRACKS_UPDATED, n),
12486                    this.selectInitialTrack();
12487                } else this.shouldReloadPlaylist(this.currentTrack) && this.setAudioTrack(this.trackId);
12488              }
12489            }),
12490            (r.onError = function (t, e) {
12491              !e.fatal &&
12492                e.context &&
12493                e.context.type === ce &&
12494                e.context.id === this.trackId &&
12495                e.context.groupId === this.groupId &&
12496                ((this.requestScheduled = -1), this.checkRetry(e));
12497            }),
12498            (r.setAudioTrack = function (t) {
12499              var e = this.tracksInGroup;
12500              if (t < 0 || t >= e.length) this.warn('Invalid id passed to audio-track controller');
12501              else {
12502                this.clearTimer();
12503                var r = this.currentTrack;
12504                e[this.trackId];
12505                var n = e[t],
12506                  a = n.groupId,
12507                  s = n.name;
12508                if (
12509                  (this.log('Switching to audio-track ' + t + ' "' + s + '" lang:' + n.lang + ' group:' + a),
12510                  (this.trackId = t),
12511                  (this.currentTrack = n),
12512                  (this.selectDefaultTrack = !1),
12513                  this.hls.trigger(S.AUDIO_TRACK_SWITCHING, i({}, n)),
12514                  !n.details || n.details.live)
12515                ) {
12516                  var o = this.switchParams(n.url, null == r ? void 0 : r.details);
12517                  this.loadPlaylist(o);
12518                }
12519              }
12520            }),
12521            (r.selectInitialTrack = function () {
12522              var t = this.tracksInGroup,
12523                e = this.findTrackId(this.currentTrack) | this.findTrackId(null);
12524              if (-1 !== e) this.setAudioTrack(e);
12525              else {
12526                var r = new Error(
12527                  'No track found for running audio group-ID: ' + this.groupId + ' track count: ' + t.length,
12528                );
12529                this.warn(r.message),
12530                  this.hls.trigger(S.ERROR, {
12531                    type: L.MEDIA_ERROR,
12532                    details: R.AUDIO_TRACK_LOAD_ERROR,
12533                    fatal: !0,
12534                    error: r,
12535                  });
12536              }
12537            }),
12538            (r.findTrackId = function (t) {
12539              for (var e = this.tracksInGroup, r = 0; r < e.length; r++) {
12540                var i = e[r];
12541                if (!this.selectDefaultTrack || i.default) {
12542                  if (
12543                    !t ||
12544                    (void 0 !== t.attrs['STABLE-RENDITION-ID'] &&
12545                      t.attrs['STABLE-RENDITION-ID'] === i.attrs['STABLE-RENDITION-ID'])
12546                  )
12547                    return i.id;
12548                  if (t.name === i.name && t.lang === i.lang) return i.id;
12549                }
12550              }
12551              return -1;
12552            }),
12553            (r.loadPlaylist = function (e) {
12554              t.prototype.loadPlaylist.call(this);
12555              var r = this.tracksInGroup[this.trackId];
12556              if (this.shouldLoadPlaylist(r)) {
12557                var i = r.id,
12558                  n = r.groupId,
12559                  a = r.url;
12560                if (e)
12561                  try {
12562                    a = e.addDirectives(a);
12563                  } catch (t) {
12564                    this.warn('Could not construct new URL with HLS Delivery Directives: ' + t);
12565                  }
12566                this.log('loading audio-track playlist ' + i + ' "' + r.name + '" lang:' + r.lang + ' group:' + n),
12567                  this.clearTimer(),
12568                  this.hls.trigger(S.AUDIO_TRACK_LOADING, { url: a, id: i, groupId: n, deliveryDirectives: e || null });
12569              }
12570            }),
12571            a(e, [
12572              {
12573                key: 'audioTracks',
12574                get: function () {
12575                  return this.tracksInGroup;
12576                },
12577              },
12578              {
12579                key: 'audioTrack',
12580                get: function () {
12581                  return this.trackId;
12582                },
12583                set: function (t) {
12584                  (this.selectDefaultTrack = !1), this.setAudioTrack(t);
12585                },
12586              },
12587            ]),
12588            e
12589          );
12590        })(ur);
12591      function Tn(t, e) {
12592        if (t.length !== e.length) return !1;
12593        for (var r = 0; r < t.length; r++) if (!En(t[r].attrs, e[r].attrs)) return !1;
12594        return !0;
12595      }
12596      function En(t, e) {
12597        var r = t['STABLE-RENDITION-ID'];
12598        return r
12599          ? r === e['STABLE-RENDITION-ID']
12600          : !['LANGUAGE', 'NAME', 'CHARACTERISTICS', 'AUTOSELECT', 'DEFAULT', 'FORCED'].some(function (r) {
12601              return t[r] !== e[r];
12602            });
12603      }
12604      var Sn = (function (t) {
12605          function e(e, r, i) {
12606            var n;
12607            return (
12608              ((n = t.call(this, e, r, i, '[subtitle-stream-controller]', me) || this).levels = []),
12609              (n.currentTrackId = -1),
12610              (n.tracksBuffered = []),
12611              (n.mainDetails = null),
12612              n._registerListeners(),
12613              n
12614            );
12615          }
12616          l(e, t);
12617          var r = e.prototype;
12618          return (
12619            (r.onHandlerDestroying = function () {
12620              this._unregisterListeners(), (this.mainDetails = null);
12621            }),
12622            (r._registerListeners = function () {
12623              var t = this.hls;
12624              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
12625                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
12626                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
12627                t.on(S.LEVEL_LOADED, this.onLevelLoaded, this),
12628                t.on(S.ERROR, this.onError, this),
12629                t.on(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this),
12630                t.on(S.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this),
12631                t.on(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this),
12632                t.on(S.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this),
12633                t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
12634                t.on(S.FRAG_BUFFERED, this.onFragBuffered, this);
12635            }),
12636            (r._unregisterListeners = function () {
12637              var t = this.hls;
12638              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
12639                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
12640                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
12641                t.off(S.LEVEL_LOADED, this.onLevelLoaded, this),
12642                t.off(S.ERROR, this.onError, this),
12643                t.off(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this),
12644                t.off(S.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this),
12645                t.off(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this),
12646                t.off(S.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this),
12647                t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
12648                t.off(S.FRAG_BUFFERED, this.onFragBuffered, this);
12649            }),
12650            (r.startLoad = function (t) {
12651              this.stopLoad(),
12652                (this.state = Kr),
12653                this.setInterval(500),
12654                (this.nextLoadPosition = this.startPosition = this.lastCurrentTime = t),
12655                this.tick();
12656            }),
12657            (r.onManifestLoading = function () {
12658              (this.mainDetails = null), this.fragmentTracker.removeAllFragments();
12659            }),
12660            (r.onMediaDetaching = function () {
12661              (this.tracksBuffered = []), t.prototype.onMediaDetaching.call(this);
12662            }),
12663            (r.onLevelLoaded = function (t, e) {
12664              this.mainDetails = e.details;
12665            }),
12666            (r.onSubtitleFragProcessed = function (t, e) {
12667              var r = e.frag,
12668                i = e.success;
12669              if (((this.fragPrevious = r), (this.state = Kr), i)) {
12670                var n = this.tracksBuffered[this.currentTrackId];
12671                if (n) {
12672                  for (var a, s = r.start, o = 0; o < n.length; o++)
12673                    if (s >= n[o].start && s <= n[o].end) {
12674                      a = n[o];
12675                      break;
12676                    }
12677                  var l = r.start + r.duration;
12678                  a ? (a.end = l) : ((a = { start: s, end: l }), n.push(a)), this.fragmentTracker.fragBuffered(r);
12679                }
12680              }
12681            }),
12682            (r.onBufferFlushing = function (t, e) {
12683              var r = e.startOffset,
12684                i = e.endOffset;
12685              if (0 === r && i !== Number.POSITIVE_INFINITY) {
12686                var n = i - 1;
12687                if (n <= 0) return;
12688                (e.endOffsetSubtitles = Math.max(0, n)),
12689                  this.tracksBuffered.forEach(function (t) {
12690                    for (var e = 0; e < t.length; )
12691                      if (t[e].end <= n) t.shift();
12692                      else {
12693                        if (!(t[e].start < n)) break;
12694                        (t[e].start = n), e++;
12695                      }
12696                  }),
12697                  this.fragmentTracker.removeFragmentsInRange(r, n, me);
12698              }
12699            }),
12700            (r.onFragBuffered = function (t, e) {
12701              var r;
12702              this.loadedmetadata ||
12703                e.frag.type !== ge ||
12704                (null != (r = this.media) && r.buffered.length && (this.loadedmetadata = !0));
12705            }),
12706            (r.onError = function (t, e) {
12707              var r = e.frag;
12708              (null == r ? void 0 : r.type) === me &&
12709                (this.fragCurrent && this.fragCurrent.abortRequests(), this.state !== Gr && (this.state = Kr));
12710            }),
12711            (r.onSubtitleTracksUpdated = function (t, e) {
12712              var r = this,
12713                i = e.subtitleTracks;
12714              Tn(this.levels, i)
12715                ? (this.levels = i.map(function (t) {
12716                    return new Ne(t);
12717                  }))
12718                : ((this.tracksBuffered = []),
12719                  (this.levels = i.map(function (t) {
12720                    var e = new Ne(t);
12721                    return (r.tracksBuffered[e.id] = []), e;
12722                  })),
12723                  this.fragmentTracker.removeFragmentsInRange(0, Number.POSITIVE_INFINITY, me),
12724                  (this.fragPrevious = null),
12725                  (this.mediaBuffer = null));
12726            }),
12727            (r.onSubtitleTrackSwitch = function (t, e) {
12728              if (((this.currentTrackId = e.id), this.levels.length && -1 !== this.currentTrackId)) {
12729                var r = this.levels[this.currentTrackId];
12730                null != r && r.details ? (this.mediaBuffer = this.mediaBufferTimeRanges) : (this.mediaBuffer = null),
12731                  r && this.setInterval(500);
12732              } else this.clearInterval();
12733            }),
12734            (r.onSubtitleTrackLoaded = function (t, e) {
12735              var r,
12736                i = e.details,
12737                n = e.id,
12738                a = this.currentTrackId,
12739                s = this.levels;
12740              if (s.length) {
12741                var o = s[a];
12742                if (!(n >= s.length || n !== a) && o) {
12743                  this.mediaBuffer = this.mediaBufferTimeRanges;
12744                  var l = 0;
12745                  if (i.live || (null != (r = o.details) && r.live)) {
12746                    var u = this.mainDetails;
12747                    if (i.deltaUpdateFailed || !u) return;
12748                    var h = u.fragments[0];
12749                    o.details
12750                      ? 0 === (l = this.alignPlaylists(i, o.details)) && h && He(i, (l = h.start))
12751                      : i.hasProgramDateTime && u.hasProgramDateTime
12752                      ? (Fr(i, u), (l = i.fragments[0].start))
12753                      : h && He(i, (l = h.start));
12754                  }
12755                  (o.details = i),
12756                    (this.levelLastLoaded = n),
12757                    this.startFragRequested || (!this.mainDetails && i.live) || this.setStartPosition(o.details, l),
12758                    this.tick(),
12759                    i.live &&
12760                      !this.fragCurrent &&
12761                      this.media &&
12762                      this.state === Kr &&
12763                      ($e(null, i.fragments, this.media.currentTime, 0) ||
12764                        (this.warn('Subtitle playlist not aligned with playback'), (o.details = void 0)));
12765                }
12766              }
12767            }),
12768            (r._handleFragmentLoadComplete = function (t) {
12769              var e = this,
12770                r = t.frag,
12771                i = t.payload,
12772                n = r.decryptdata,
12773                a = this.hls;
12774              if (
12775                !this.fragContextChanged(r) &&
12776                i &&
12777                i.byteLength > 0 &&
12778                n &&
12779                n.key &&
12780                n.iv &&
12781                'AES-128' === n.method
12782              ) {
12783                var s = performance.now();
12784                this.decrypter
12785                  .decrypt(new Uint8Array(i), n.key.buffer, n.iv.buffer)
12786                  .catch(function (t) {
12787                    throw (
12788                      (a.trigger(S.ERROR, {
12789                        type: L.MEDIA_ERROR,
12790                        details: R.FRAG_DECRYPT_ERROR,
12791                        fatal: !1,
12792                        error: t,
12793                        reason: t.message,
12794                        frag: r,
12795                      }),
12796                      t)
12797                    );
12798                  })
12799                  .then(function (t) {
12800                    var e = performance.now();
12801                    a.trigger(S.FRAG_DECRYPTED, { frag: r, payload: t, stats: { tstart: s, tdecrypt: e } });
12802                  })
12803                  .catch(function (t) {
12804                    e.warn(t.name + ': ' + t.message), (e.state = Kr);
12805                  });
12806              }
12807            }),
12808            (r.doTick = function () {
12809              if (this.media) {
12810                if (this.state === Kr) {
12811                  var t = this.currentTrackId,
12812                    e = this.levels,
12813                    r = e[t];
12814                  if (!e.length || !r || !r.details) return;
12815                  var i = this.config,
12816                    n = this.getLoadPosition(),
12817                    a = Ir.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], n, i.maxBufferHole),
12818                    s = a.end,
12819                    o = a.len,
12820                    l = this.getFwdBufferInfo(this.media, ge),
12821                    u = r.details;
12822                  if (o > this.getMaxBufferLength(null == l ? void 0 : l.len) + u.levelTargetDuration) return;
12823                  var h = u.fragments,
12824                    d = h.length,
12825                    c = u.edge,
12826                    f = null,
12827                    g = this.fragPrevious;
12828                  if (s < c) {
12829                    var v = i.maxFragLookUpTolerance,
12830                      m = s > c - v ? 0 : v;
12831                    !(f = $e(g, h, Math.max(h[0].start, s), m)) && g && g.start < h[0].start && (f = h[0]);
12832                  } else f = h[d - 1];
12833                  if (!f) return;
12834                  if ('initSegment' !== (f = this.mapToInitFragWhenRequired(f)).sn) {
12835                    var p = h[f.sn - u.startSN - 1];
12836                    p && p.cc === f.cc && this.fragmentTracker.getState(p) === fr && (f = p);
12837                  }
12838                  this.fragmentTracker.getState(f) === fr && this.loadFragment(f, r, s);
12839                }
12840              } else this.state = Kr;
12841            }),
12842            (r.getMaxBufferLength = function (e) {
12843              var r = t.prototype.getMaxBufferLength.call(this);
12844              return e ? Math.max(r, e) : r;
12845            }),
12846            (r.loadFragment = function (e, r, i) {
12847              (this.fragCurrent = e),
12848                'initSegment' === e.sn
12849                  ? this._loadInitSegment(e, r)
12850                  : ((this.startFragRequested = !0), t.prototype.loadFragment.call(this, e, r, i));
12851            }),
12852            a(e, [
12853              {
12854                key: 'mediaBufferTimeRanges',
12855                get: function () {
12856                  return new Ln(this.tracksBuffered[this.currentTrackId] || []);
12857                },
12858              },
12859            ]),
12860            e
12861          );
12862        })(Jr),
12863        Ln = function (t) {
12864          this.buffered = void 0;
12865          var e = function (e, r, i) {
12866            if ((r >>>= 0) > i - 1)
12867              throw new DOMException(
12868                "Failed to execute '" +
12869                  e +
12870                  "' on 'TimeRanges': The index provided (" +
12871                  r +
12872                  ') is greater than the maximum bound (' +
12873                  i +
12874                  ')',
12875              );
12876            return t[r][e];
12877          };
12878          this.buffered = {
12879            get length() {
12880              return t.length;
12881            },
12882            end: function (r) {
12883              return e('end', r, t.length);
12884            },
12885            start: function (r) {
12886              return e('start', r, t.length);
12887            },
12888          };
12889        },
12890        Rn = (function (t) {
12891          function e(e) {
12892            var r;
12893            return (
12894              ((r = t.call(this, e, '[subtitle-track-controller]') || this).media = null),
12895              (r.tracks = []),
12896              (r.groupId = null),
12897              (r.tracksInGroup = []),
12898              (r.trackId = -1),
12899              (r.selectDefaultTrack = !0),
12900              (r.queuedDefaultTrack = -1),
12901              (r.trackChangeListener = function () {
12902                return r.onTextTracksChanged();
12903              }),
12904              (r.asyncPollTrackChange = function () {
12905                return r.pollTrackChange(0);
12906              }),
12907              (r.useTextTrackPolling = !1),
12908              (r.subtitlePollingInterval = -1),
12909              (r._subtitleDisplay = !0),
12910              r.registerListeners(),
12911              r
12912            );
12913          }
12914          l(e, t);
12915          var r = e.prototype;
12916          return (
12917            (r.destroy = function () {
12918              this.unregisterListeners(),
12919                (this.tracks.length = 0),
12920                (this.tracksInGroup.length = 0),
12921                (this.trackChangeListener = this.asyncPollTrackChange = null),
12922                t.prototype.destroy.call(this);
12923            }),
12924            (r.registerListeners = function () {
12925              var t = this.hls;
12926              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
12927                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
12928                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
12929                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
12930                t.on(S.LEVEL_LOADING, this.onLevelLoading, this),
12931                t.on(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
12932                t.on(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this),
12933                t.on(S.ERROR, this.onError, this);
12934            }),
12935            (r.unregisterListeners = function () {
12936              var t = this.hls;
12937              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
12938                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
12939                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
12940                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
12941                t.off(S.LEVEL_LOADING, this.onLevelLoading, this),
12942                t.off(S.LEVEL_SWITCHING, this.onLevelSwitching, this),
12943                t.off(S.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this),
12944                t.off(S.ERROR, this.onError, this);
12945            }),
12946            (r.onMediaAttached = function (t, e) {
12947              (this.media = e.media),
12948                this.media &&
12949                  (this.queuedDefaultTrack > -1 &&
12950                    ((this.subtitleTrack = this.queuedDefaultTrack), (this.queuedDefaultTrack = -1)),
12951                  (this.useTextTrackPolling = !(this.media.textTracks && 'onchange' in this.media.textTracks)),
12952                  this.useTextTrackPolling
12953                    ? this.pollTrackChange(500)
12954                    : this.media.textTracks.addEventListener('change', this.asyncPollTrackChange));
12955            }),
12956            (r.pollTrackChange = function (t) {
12957              self.clearInterval(this.subtitlePollingInterval),
12958                (this.subtitlePollingInterval = self.setInterval(this.trackChangeListener, t));
12959            }),
12960            (r.onMediaDetaching = function () {
12961              this.media &&
12962                (self.clearInterval(this.subtitlePollingInterval),
12963                this.useTextTrackPolling ||
12964                  this.media.textTracks.removeEventListener('change', this.asyncPollTrackChange),
12965                this.trackId > -1 && (this.queuedDefaultTrack = this.trackId),
12966                An(this.media.textTracks).forEach(function (t) {
12967                  Le(t);
12968                }),
12969                (this.subtitleTrack = -1),
12970                (this.media = null));
12971            }),
12972            (r.onManifestLoading = function () {
12973              (this.tracks = []),
12974                (this.groupId = null),
12975                (this.tracksInGroup = []),
12976                (this.trackId = -1),
12977                (this.selectDefaultTrack = !0);
12978            }),
12979            (r.onManifestParsed = function (t, e) {
12980              this.tracks = e.subtitleTracks;
12981            }),
12982            (r.onSubtitleTrackLoaded = function (t, e) {
12983              var r = e.id,
12984                i = e.details,
12985                n = this.trackId,
12986                a = this.tracksInGroup[n];
12987              if (a) {
12988                var s = a.details;
12989                (a.details = e.details),
12990                  this.log('subtitle track ' + r + ' loaded [' + i.startSN + '-' + i.endSN + ']'),
12991                  r === this.trackId && this.playlistLoaded(r, e, s);
12992              } else this.warn('Invalid subtitle track id ' + r);
12993            }),
12994            (r.onLevelLoading = function (t, e) {
12995              this.switchLevel(e.level);
12996            }),
12997            (r.onLevelSwitching = function (t, e) {
12998              this.switchLevel(e.level);
12999            }),
13000            (r.switchLevel = function (t) {
13001              var e = this.hls.levels[t];
13002              if (null != e && e.textGroupIds) {
13003                var r = e.textGroupIds[e.urlId],
13004                  i = this.tracksInGroup ? this.tracksInGroup[this.trackId] : void 0;
13005                if (this.groupId !== r) {
13006                  var n = this.tracks.filter(function (t) {
13007                    return !r || t.groupId === r;
13008                  });
13009                  this.tracksInGroup = n;
13010                  var a = this.findTrackId(null == i ? void 0 : i.name) || this.findTrackId();
13011                  this.groupId = r || null;
13012                  var s = { subtitleTracks: n };
13013                  this.log('Updating subtitle tracks, ' + n.length + ' track(s) found in "' + r + '" group-id'),
13014                    this.hls.trigger(S.SUBTITLE_TRACKS_UPDATED, s),
13015                    -1 !== a && this.setSubtitleTrack(a, i);
13016                } else this.shouldReloadPlaylist(i) && this.setSubtitleTrack(this.trackId, i);
13017              }
13018            }),
13019            (r.findTrackId = function (t) {
13020              for (var e = this.tracksInGroup, r = 0; r < e.length; r++) {
13021                var i = e[r];
13022                if ((!this.selectDefaultTrack || i.default) && (!t || t === i.name)) return i.id;
13023              }
13024              return -1;
13025            }),
13026            (r.onError = function (t, e) {
13027              !e.fatal &&
13028                e.context &&
13029                e.context.type === fe &&
13030                e.context.id === this.trackId &&
13031                e.context.groupId === this.groupId &&
13032                this.checkRetry(e);
13033            }),
13034            (r.loadPlaylist = function (e) {
13035              t.prototype.loadPlaylist.call(this);
13036              var r = this.tracksInGroup[this.trackId];
13037              if (this.shouldLoadPlaylist(r)) {
13038                var i = r.id,
13039                  n = r.groupId,
13040                  a = r.url;
13041                if (e)
13042                  try {
13043                    a = e.addDirectives(a);
13044                  } catch (t) {
13045                    this.warn('Could not construct new URL with HLS Delivery Directives: ' + t);
13046                  }
13047                this.log('Loading subtitle playlist for id ' + i),
13048                  this.hls.trigger(S.SUBTITLE_TRACK_LOADING, {
13049                    url: a,
13050                    id: i,
13051                    groupId: n,
13052                    deliveryDirectives: e || null,
13053                  });
13054              }
13055            }),
13056            (r.toggleTrackModes = function (t) {
13057              var e = this,
13058                r = this.media,
13059                i = this.trackId;
13060              if (r) {
13061                var n = An(r.textTracks),
13062                  a = n.filter(function (t) {
13063                    return t.groupId === e.groupId;
13064                  });
13065                if (-1 === t)
13066                  [].slice.call(n).forEach(function (t) {
13067                    t.mode = 'disabled';
13068                  });
13069                else {
13070                  var s = a[i];
13071                  s && (s.mode = 'disabled');
13072                }
13073                var o = a[t];
13074                o && (o.mode = this.subtitleDisplay ? 'showing' : 'hidden');
13075              }
13076            }),
13077            (r.setSubtitleTrack = function (t, e) {
13078              var r,
13079                i = this.tracksInGroup;
13080              if (this.media) {
13081                if (
13082                  (this.trackId !== t && this.toggleTrackModes(t),
13083                  !((this.trackId === t && (-1 === t || (null != (r = i[t]) && r.details))) || t < -1 || t >= i.length))
13084                ) {
13085                  this.clearTimer();
13086                  var n = i[t];
13087                  if (
13088                    (this.log(
13089                      'Switching to subtitle-track ' +
13090                        t +
13091                        (n ? ' "' + n.name + '" lang:' + n.lang + ' group:' + n.groupId : ''),
13092                    ),
13093                    (this.trackId = t),
13094                    n)
13095                  ) {
13096                    var a = n.id,
13097                      s = n.groupId,
13098                      o = void 0 === s ? '' : s,
13099                      l = n.name,
13100                      u = n.type,
13101                      h = n.url;
13102                    this.hls.trigger(S.SUBTITLE_TRACK_SWITCH, { id: a, groupId: o, name: l, type: u, url: h });
13103                    var d = this.switchParams(n.url, null == e ? void 0 : e.details);
13104                    this.loadPlaylist(d);
13105                  } else this.hls.trigger(S.SUBTITLE_TRACK_SWITCH, { id: t });
13106                }
13107              } else this.queuedDefaultTrack = t;
13108            }),
13109            (r.onTextTracksChanged = function () {
13110              if (
13111                (this.useTextTrackPolling || self.clearInterval(this.subtitlePollingInterval),
13112                this.media && this.hls.config.renderTextTracksNatively)
13113              ) {
13114                for (var t = -1, e = An(this.media.textTracks), r = 0; r < e.length; r++)
13115                  if ('hidden' === e[r].mode) t = r;
13116                  else if ('showing' === e[r].mode) {
13117                    t = r;
13118                    break;
13119                  }
13120                this.subtitleTrack !== t && (this.subtitleTrack = t);
13121              }
13122            }),
13123            a(e, [
13124              {
13125                key: 'subtitleDisplay',
13126                get: function () {
13127                  return this._subtitleDisplay;
13128                },
13129                set: function (t) {
13130                  (this._subtitleDisplay = t), this.trackId > -1 && this.toggleTrackModes(this.trackId);
13131                },
13132              },
13133              {
13134                key: 'subtitleTracks',
13135                get: function () {
13136                  return this.tracksInGroup;
13137                },
13138              },
13139              {
13140                key: 'subtitleTrack',
13141                get: function () {
13142                  return this.trackId;
13143                },
13144                set: function (t) {
13145                  this.selectDefaultTrack = !1;
13146                  var e = this.tracksInGroup ? this.tracksInGroup[this.trackId] : void 0;
13147                  this.setSubtitleTrack(t, e);
13148                },
13149              },
13150            ]),
13151            e
13152          );
13153        })(ur);
13154      function An(t) {
13155        for (var e = [], r = 0; r < t.length; r++) {
13156          var i = t[r];
13157          ('subtitles' !== i.kind && 'captions' !== i.kind) || !i.label || e.push(t[r]);
13158        }
13159        return e;
13160      }
13161      var kn = (function () {
13162          function t(t) {
13163            (this.buffers = void 0), (this.queues = { video: [], audio: [], audiovideo: [] }), (this.buffers = t);
13164          }
13165          var e = t.prototype;
13166          return (
13167            (e.append = function (t, e) {
13168              var r = this.queues[e];
13169              r.push(t), 1 === r.length && this.buffers[e] && this.executeNext(e);
13170            }),
13171            (e.insertAbort = function (t, e) {
13172              this.queues[e].unshift(t), this.executeNext(e);
13173            }),
13174            (e.appendBlocker = function (t) {
13175              var e,
13176                r = new Promise(function (t) {
13177                  e = t;
13178                }),
13179                i = { execute: e, onStart: function () {}, onComplete: function () {}, onError: function () {} };
13180              return this.append(i, t), r;
13181            }),
13182            (e.executeNext = function (t) {
13183              var e = this.buffers,
13184                r = this.queues,
13185                i = e[t],
13186                n = r[t];
13187              if (n.length) {
13188                var a = n[0];
13189                try {
13190                  a.execute();
13191                } catch (e) {
13192                  w.warn('[buffer-operation-queue]: Unhandled exception executing the current operation'),
13193                    a.onError(e),
13194                    (null != i && i.updating) || (n.shift(), this.executeNext(t));
13195                }
13196              }
13197            }),
13198            (e.shiftAndExecuteNext = function (t) {
13199              this.queues[t].shift(), this.executeNext(t);
13200            }),
13201            (e.current = function (t) {
13202              return this.queues[t][0];
13203            }),
13204            t
13205          );
13206        })(),
13207        bn = qt(),
13208        Dn = /([ha]vc.)(?:\.[^.,]+)+/,
13209        In = (function () {
13210          function t(t) {
13211            var e = this;
13212            (this.details = null),
13213              (this._objectUrl = null),
13214              (this.operationQueue = void 0),
13215              (this.listeners = void 0),
13216              (this.hls = void 0),
13217              (this.bufferCodecEventsExpected = 0),
13218              (this._bufferCodecEventsTotal = 0),
13219              (this.media = null),
13220              (this.mediaSource = null),
13221              (this.lastMpegAudioChunk = null),
13222              (this.appendError = 0),
13223              (this.tracks = {}),
13224              (this.pendingTracks = {}),
13225              (this.sourceBuffer = void 0),
13226              (this._onMediaSourceOpen = function () {
13227                var t = e.media,
13228                  r = e.mediaSource;
13229                w.log('[buffer-controller]: Media source opened'),
13230                  t &&
13231                    (t.removeEventListener('emptied', e._onMediaEmptied),
13232                    e.updateMediaElementDuration(),
13233                    e.hls.trigger(S.MEDIA_ATTACHED, { media: t })),
13234                  r && r.removeEventListener('sourceopen', e._onMediaSourceOpen),
13235                  e.checkPendingTracks();
13236              }),
13237              (this._onMediaSourceClose = function () {
13238                w.log('[buffer-controller]: Media source closed');
13239              }),
13240              (this._onMediaSourceEnded = function () {
13241                w.log('[buffer-controller]: Media source ended');
13242              }),
13243              (this._onMediaEmptied = function () {
13244                var t = e.media,
13245                  r = e._objectUrl;
13246                t &&
13247                  t.src !== r &&
13248                  w.error('Media element src was set while attaching MediaSource (' + r + ' > ' + t.src + ')');
13249              }),
13250              (this.hls = t),
13251              this._initSourceBuffer(),
13252              this.registerListeners();
13253          }
13254          var e = t.prototype;
13255          return (
13256            (e.hasSourceTypes = function () {
13257              return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;
13258            }),
13259            (e.destroy = function () {
13260              this.unregisterListeners(), (this.details = null), (this.lastMpegAudioChunk = null);
13261            }),
13262            (e.registerListeners = function () {
13263              var t = this.hls;
13264              t.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
13265                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
13266                t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
13267                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
13268                t.on(S.BUFFER_RESET, this.onBufferReset, this),
13269                t.on(S.BUFFER_APPENDING, this.onBufferAppending, this),
13270                t.on(S.BUFFER_CODECS, this.onBufferCodecs, this),
13271                t.on(S.BUFFER_EOS, this.onBufferEos, this),
13272                t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
13273                t.on(S.LEVEL_UPDATED, this.onLevelUpdated, this),
13274                t.on(S.FRAG_PARSED, this.onFragParsed, this),
13275                t.on(S.FRAG_CHANGED, this.onFragChanged, this);
13276            }),
13277            (e.unregisterListeners = function () {
13278              var t = this.hls;
13279              t.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
13280                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
13281                t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
13282                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
13283                t.off(S.BUFFER_RESET, this.onBufferReset, this),
13284                t.off(S.BUFFER_APPENDING, this.onBufferAppending, this),
13285                t.off(S.BUFFER_CODECS, this.onBufferCodecs, this),
13286                t.off(S.BUFFER_EOS, this.onBufferEos, this),
13287                t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
13288                t.off(S.LEVEL_UPDATED, this.onLevelUpdated, this),
13289                t.off(S.FRAG_PARSED, this.onFragParsed, this),
13290                t.off(S.FRAG_CHANGED, this.onFragChanged, this);
13291            }),
13292            (e._initSourceBuffer = function () {
13293              (this.sourceBuffer = {}),
13294                (this.operationQueue = new kn(this.sourceBuffer)),
13295                (this.listeners = { audio: [], video: [], audiovideo: [] }),
13296                (this.lastMpegAudioChunk = null);
13297            }),
13298            (e.onManifestLoading = function () {
13299              (this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = 0), (this.details = null);
13300            }),
13301            (e.onManifestParsed = function (t, e) {
13302              var r = 2;
13303              ((e.audio && !e.video) || !e.altAudio) && (r = 1),
13304                (this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = r),
13305                w.log(this.bufferCodecEventsExpected + ' bufferCodec event
13305(s) expected');
13306            }),
13307            (e.onMediaAttaching = function (t, e) {
13308              var r = (this.media = e.media);
13309              if (r && bn) {
13310                var i = (this.mediaSource = new bn());
13311                i.addEventListener('sourceopen', this._onMediaSourceOpen),
13312                  i.addEventListener('sourceended', this._onMediaSourceEnded),
13313                  i.addEventListener('sourceclose', this._onMediaSourceClose),
13314                  (r.src = self.URL.createObjectURL(i)),
13315                  (this._objectUrl = r.src),
13316                  r.addEventListener('emptied', this._onMediaEmptied);
13317              }
13318            }),
13319            (e.onMediaDetaching = function () {
13320              var t = this.media,
13321                e = this.mediaSource,
13322                r = this._objectUrl;
13323              if (e) {
13324                if ((w.log('[buffer-controller]: media source detaching'), 'open' === e.readyState))
13325                  try {
13326                    e.endOfStream();
13327                  } catch (t) {
13328                    w.warn('[buffer-controller]: onMediaDetaching: ' + t.message + ' while calling endOfStream');
13329                  }
13330                this.onBufferReset(),
13331                  e.removeEventListener('sourceopen', this._onMediaSourceOpen),
13332                  e.removeEventListener('sourceended', this._onMediaSourceEnded),
13333                  e.removeEventListener('sourceclose', this._onMediaSourceClose),
13334                  t &&
13335                    (t.removeEventListener('emptied', this._onMediaEmptied),
13336                    r && self.URL.revokeObjectURL(r),
13337                    t.src === r
13338                      ? (t.removeAttribute('src'), t.load())
13339                      : w.warn('[buffer-controller]: media.src was changed by a third party - skip cleanup')),
13340                  (this.mediaSource = null),
13341                  (this.media = null),
13342                  (this._objectUrl = null),
13343                  (this.bufferCodecEventsExpected = this._bufferCodecEventsTotal),
13344                  (this.pendingTracks = {}),
13345                  (this.tracks = {});
13346              }
13347              this.hls.trigger(S.MEDIA_DETACHED, void 0);
13348            }),
13349            (e.onBufferReset = function () {
13350              var t = this;
13351              this.getSourceBufferTypes().forEach(function (e) {
13352                var r = t.sourceBuffer[e];
13353                try {
13354                  r &&
13355                    (t.removeBufferListeners(e),
13356                    t.mediaSource && t.mediaSource.removeSourceBuffer(r),
13357                    (t.sourceBuffer[e] = void 0));
13358                } catch (t) {
13359                  w.warn('[buffer-controller]: Failed to reset the ' + e + ' buffer', t);
13360                }
13361              }),
13362                this._initSourceBuffer();
13363            }),
13364            (e.onBufferCodecs = function (t, e) {
13365              var r = this,
13366                i = this.getSourceBufferTypes().length;
13367              Object.keys(e).forEach(function (t) {
13368                if (i) {
13369                  var n = r.tracks[t];
13370                  if (n && 'function' == typeof n.buffer.changeType) {
13371                    var a = e[t],
13372                      s = a.id,
13373                      o = a.codec,
13374                      l = a.levelCodec,
13375                      u = a.container,
13376                      h = a.metadata,
13377                      d = (n.levelCodec || n.codec).replace(Dn, '$1'),
13378                      c = (l || o).replace(Dn, '$1');
13379                    if (d !== c) {
13380                      var f = u + ';codecs=' + (l || o);
13381                      r.appendChangeType(t, f),
13382                        w.log('[buffer-controller]: switching codec ' + d + ' to ' + c),
13383                        (r.tracks[t] = { buffer: n.buffer, codec: o, container: u, levelCodec: l, metadata: h, id: s });
13384                    }
13385                  }
13386                } else r.pendingTracks[t] = e[t];
13387              }),
13388                i ||
13389                  ((this.bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0)),
13390                  this.mediaSource && 'open' === this.mediaSource.readyState && this.checkPendingTracks());
13391            }),
13392            (e.appendChangeType = function (t, e) {
13393              var r = this,
13394                i = this.operationQueue,
13395                n = {
13396                  execute: function () {
13397                    var n = r.sourceBuffer[t];
13398                    n && (w.log('[buffer-controller]: changing ' + t + ' sourceBuffer type to ' + e), n.changeType(e)),
13399                      i.shiftAndExecuteNext(t);
13400                  },
13401                  onStart: function () {},
13402                  onComplete: function () {},
13403                  onError: function (e) {
13404                    w.warn('[buffer-controller]: Failed to change ' + t + ' SourceBuffer type', e);
13405                  },
13406                };
13407              i.append(n, t);
13408            }),
13409            (e.onBufferAppending = function (t, e) {
13410              var r = this,
13411                i = this.hls,
13412                n = this.operationQueue,
13413                a = this.tracks,
13414                s = e.data,
13415                o = e.type,
13416                l = e.frag,
13417                u = e.part,
13418                h = e.chunkMeta,
13419                d = h.buffering[o],
13420                c = self.performance.now();
13421              d.start = c;
13422              var f = l.stats.buffering,
13423                g = u ? u.stats.buffering : null;
13424              0 === f.start && (f.start = c), g && 0 === g.start && (g.start = c);
13425              var v = a.audio,
13426                m = !1;
13427              'audio' === o &&
13428                'audio/mpeg' === (null == v ? void 0 : v.container) &&
13429                ((m = !this.lastMpegAudioChunk || 1 === h.id || this.lastMpegAudioChunk.sn !== h.sn),
13430                (this.lastMpegAudioChunk = h));
13431              var p = l.start,
13432                y = {
13433                  execute: function () {
13434                    if (((d.executeStart = self.performance.now()), m)) {
13435                      var t = r.sourceBuffer[o];
13436                      if (t) {
13437                        var e = p - t.timestampOffset;
13438                        Math.abs(e) >= 0.1 &&
13439                          (w.log(
13440                            '[buffer-controller]: Updating audio SourceBuffer timestampOffset to ' +
13441                              p +
13442                              ' (delta: ' +
13443                              e +
13444                              ') sn: ' +
13445                              l.sn +
13446                              ')',
13447                          ),
13448                          (t.timestampOffset = p));
13449                      }
13450                    }
13451                    r.appendExecutor(s, o);
13452                  },
13453                  onStart: function () {},
13454                  onComplete: function () {
13455                    var t = self.performance.now();
13456                    (d.executeEnd = d.end = t), 0 === f.first && (f.first = t), g && 0 === g.first && (g.first = t);
13457                    var e = r.sourceBuffer,
13458                      i = {};
13459                    for (var n in e) i[n] = Ir.getBuffered(e[n]);
13460                    (r.appendError = 0),
13461                      r.hls.trigger(S.BUFFER_APPENDED, {
13462                        type: o,
13463                        frag: l,
13464                        part: u,
13465                        chunkMeta: h,
13466                        parent: l.type,
13467                        timeRanges: i,
13468                      });
13469                  },
13470                  onError: function (t) {
13471                    w.error(
13472                      '[buffer-controller]: Error encountered while trying to append to the ' + o + ' SourceBuffer',
13473                      t,
13474                    );
13475                    var e = {
13476                      type: L.MEDIA_ERROR,
13477                      parent: l.type,
13478                      details: R.BUFFER_APPEND_ERROR,
13479                      frag: l,
13480                      part: u,
13481                      chunkMeta: h,
13482                      error: t,
13483                      err: t,
13484                      fatal: !1,
13485                    };
13486                    t.code === DOMException.QUOTA_EXCEEDED_ERR
13487                      ? (e.details = R.BUFFER_FULL_ERROR)
13488                      : (r.appendError++,
13489                        (e.details = R.BUFFER_APPEND_ERROR),
13490                        r.appendError > i.config.appendErrorMaxRetry &&
13491                          (w.error(
13492                            '[buffer-controller]: Failed ' +
13493                              i.config.appendErrorMaxRetry +
13494                              ' times to append segment in sourceBuffer',
13495                          ),
13496                          (e.fatal = !0))),
13497                      i.trigger(S.ERROR, e);
13498                  },
13499                };
13500              n.append(y, o);
13501            }),
13502            (e.onBufferFlushing = function (t, e) {
13503              var r = this,
13504                i = this.operationQueue,
13505                n = function (t) {
13506                  return {
13507                    execute: r.removeExecutor.bind(r, t, e.startOffset, e.endOffset),
13508                    onStart: function () {},
13509                    onComplete: function () {
13510                      r.hls.trigger(S.BUFFER_FLUSHED, { type: t });
13511                    },
13512                    onError: function (e) {
13513                      w.warn('[buffer-controller]: Failed to remove from ' + t + ' SourceBuffer', e);
13514                    },
13515                  };
13516                };
13517              e.type
13518                ? i.append(n(e.type), e.type)
13519                : this.getSourceBufferTypes().forEach(function (t) {
13520                    i.append(n(t), t);
13521                  });
13522            }),
13523            (e.onFragParsed = function (t, e) {
13524              var r = this,
13525                i = e.frag,
13526                n = e.part,
13527                a = [],
13528                s = n ? n.elementaryStreams : i.elementaryStreams;
13529              s[U] ? a.push('audiovideo') : (s[O] && a.push('audio'), s[N] && a.push('video')),
13530                0 === a.length &&
13531                  w.warn(
13532                    'Fragments must have at least one ElementaryStreamType set. type: ' +
13533                      i.type +
13534                      ' level: ' +
13535                      i.level +
13536                      ' sn: ' +
13537                      i.sn,
13538                  ),
13539                this.blockBuffers(function () {
13540                  var t = self.performance.now();
13541                  (i.stats.buffering.end = t), n && (n.stats.buffering.end = t);
13542                  var e = n ? n.stats : i.stats;
13543                  r.hls.trigger(S.FRAG_BUFFERED, { frag: i, part: n, stats: e, id: i.type });
13544                }, a);
13545            }),
13546            (e.onFragChanged = function (t, e) {
13547              this.flushBackBuffer();
13548            }),
13549            (e.onBufferEos = function (t, e) {
13550              var r = this;
13551              this.getSourceBufferTypes().reduce(function (t, i) {
13552                var n = r.sourceBuffer[i];
13553                return (
13554                  !n ||
13555                    (e.type && e.type !== i) ||
13556                    ((n.ending = !0),
13557                    n.ended || ((n.ended = !0), w.log('[buffer-controller]: ' + i + ' sourceBuffer now EOS'))),
13558                  t && !(n && !n.ended)
13559                );
13560              }, !0) &&
13561                (w.log('[buffer-controller]: Queueing mediaSource.endOfStream()'),
13562                this.blockBuffers(function () {
13563                  r.getSourceBufferTypes().forEach(function (t) {
13564                    var e = r.sourceBuffer[t];
13565                    e && (e.ending = !1);
13566                  });
13567                  var t = r.mediaSource;
13568                  t && 'open' === t.readyState
13569                    ? (w.log('[buffer-controller]: Calling mediaSource.endOfStream()'), t.endOfStream())
13570                    : t &&
13571                      w.info(
13572                        '[buffer-controller]: Could not call mediaSource.endOfStream(). mediaSource.readyState: ' +
13573                          t.readyState,
13574                      );
13575                }));
13576            }),
13577            (e.onLevelUpdated = function (t, e) {
13578              var r = e.details;
13579              r.fragments.length &&
13580                ((this.details = r),
13581                this.getSourceBufferTypes().length
13582                  ? this.blockBuffers(this.updateMediaElementDuration.bind(this))
13583                  : this.updateMediaElementDuration());
13584            }),
13585            (e.flushBackBuffer = function () {
13586              var t = this.hls,
13587                e = this.details,
13588                r = this.media,
13589                i = this.sourceBuffer;
13590              if (r && null !== e) {
13591                var n = this.getSourceBufferTypes();
13592                if (n.length) {
13593                  var a =
13594                    e.live && null !== t.config.liveBackBufferLength
13595                      ? t.config.liveBackBufferLength
13596                      : t.config.backBufferLength;
13597                  if (E(a) && !(a < 0)) {
13598                    var s = r.currentTime,
13599                      o = e.levelTargetDuration,
13600                      l = Math.max(a, o),
13601                      u = Math.floor(s / o) * o - l;
13602                    n.forEach(function (r) {
13603                      var n = i[r];
13604                      if (n) {
13605                        var a = Ir.getBuffered(n);
13606                        if (a.length > 0 && u > a.start(0)) {
13607                          if ((t.trigger(S.BACK_BUFFER_REACHED, { bufferEnd: u }), e.live))
13608                            t.trigger(S.LIVE_BACK_BUFFER_REACHED, { bufferEnd: u });
13609                          else if (n.ended && a.end(a.length - 1) - s < 2 * o)
13610                            return void w.info(
13611                              '[buffer-controller]: Cannot flush ' +
13612                                r +
13613                                ' back buffer while SourceBuffer is in ended state',
13614                            );
13615                          t.trigger(S.BUFFER_FLUSHING, { startOffset: 0, endOffset: u, type: r });
13616                        }
13617                      }
13618                    });
13619                  }
13620                }
13621              }
13622            }),
13623            (e.updateMediaElementDuration = function () {
13624              if (this.details && this.media && this.mediaSource && 'open' === this.mediaSource.readyState) {
13625                var t = this.details,
13626                  e = this.hls,
13627                  r = this.media,
13628                  i = this.mediaSource,
13629                  n = t.fragments[0].start + t.totalduration,
13630                  a = r.duration,
13631                  s = E(i.duration) ? i.duration : 0;
13632                t.live && e.config.liveDurationInfinity
13633                  ? (w.log('[buffer-controller]: Media Source duration is set to Infinity'),
13634                    (i.duration = 1 / 0),
13635                    this.updateSeekableRange(t))
13636                  : ((n > s && n > a) || !E(a)) &&
13637                    (w.log('[buffer-controller]: Updating Media Source duration to ' + n.toFixed(3)), (i.duration = n));
13638              }
13639            }),
13640            (e.updateSeekableRange = function (t) {
13641              var e = this.mediaSource,
13642                r = t.fragments;
13643              if (r.length && t.live && null != e && e.setLiveSeekableRange) {
13644                var i = Math.max(0, r[0].start),
13645                  n = Math.max(i, i + t.totalduration);
13646                e.setLiveSeekableRange(i, n);
13647              }
13648            }),
13649            (e.checkPendingTracks = function () {
13650              var t = this.bufferCodecEventsExpected,
13651                e = this.operationQueue,
13652                r = this.pendingTracks,
13653                i = Object.keys(r).length;
13654              if ((i && !t) || 2 === i) {
13655                this.createSourceBuffers(r), (this.pendingTracks = {});
13656                var n = this.getSourceBufferTypes();
13657                if (n.length)
13658                  this.hls.trigger(S.BUFFER_CREATED, { tracks: this.tracks }),
13659                    n.forEach(function (t) {
13660                      e.executeNext(t);
13661                    });
13662                else {
13663                  var a = new Error('could not create source buffer for media codec(s)');
13664                  this.hls.trigger(S.ERROR, {
13665                    type: L.MEDIA_ERROR,
13666                    details: R.BUFFER_INCOMPATIBLE_CODECS_ERROR,
13667                    fatal: !0,
13668                    error: a,
13669                    reason: a.message,
13670                  });
13671                }
13672              }
13673            }),
13674            (e.createSourceBuffers = function (t) {
13675              var e = this.sourceBuffer,
13676                r = this.mediaSource;
13677              if (!r) throw Error('createSourceBuffers called when mediaSource was null');
13678              for (var i in t)
13679                if (!e[i]) {
13680                  var n = t[i];
13681                  if (!n) throw Error('source buffer exists for track ' + i + ', however track does not');
13682                  var a = n.levelCodec || n.codec,
13683                    s = n.container + ';codecs=' + a;
13684                  w.log('[buffer-controller]: creating sourceBuffer(' + s + ')');
13685                  try {
13686                    var o = (e[i] = r.addSourceBuffer(s)),
13687                      l = i;
13688                    this.addBufferListener(l, 'updatestart', this._onSBUpdateStart),
13689                      this.addBufferListener(l, 'updateend', this._onSBUpdateEnd),
13690                      this.addBufferListener(l, 'error', this._onSBUpdateError),
13691                      (this.tracks[i] = {
13692                        buffer: o,
13693                        codec: a,
13694                        container: n.container,
13695                        levelCodec: n.levelCodec,
13696                        metadata: n.metadata,
13697                        id: n.id,
13698                      });
13699                  } catch (t) {
13700                    w.error('[buffer-controller]: error while trying to add sourceBuffer: ' + t.message),
13701                      this.hls.trigger(S.ERROR, {
13702                        type: L.MEDIA_ERROR,
13703                        details: R.BUFFER_ADD_CODEC_ERROR,
13704                        fatal: !1,
13705                        error: t,
13706                        mimeType: s,
13707                      });
13708                  }
13709                }
13710            }),
13711            (e._onSBUpdateStart = function (t) {
13712              this.operationQueue.current(t).onStart();
13713            }),
13714            (e._onSBUpdateEnd = function (t) {
13715              var e = this.operationQueue;
13716              e.current(t).onComplete(), e.shiftAndExecuteNext(t);
13717            }),
13718            (e._onSBUpdateError = function (t, e) {
13719              var r = new Error(t + ' SourceBuffer error');
13720              w.error('[buffer-controller]: ' + r, e),
13721                this.hls.trigger(S.ERROR, {
13722                  type: L.MEDIA_ERROR,
13723                  details: R.BUFFER_APPENDING_ERROR,
13724                  error: r,
13725                  fatal: !1,
13726                });
13727              var i = this.operationQueue.current(t);
13728              i && i.onError(e);
13729            }),
13730            (e.removeExecutor = function (t, e, r) {
13731              var i = this.media,
13732                n = this.mediaSource,
13733                a = this.operationQueue,
13734                s = this.sourceBuffer[t];
13735              if (!i || !n || !s)
13736                return (
13737                  w.warn(
13738                    '[buffer-controller]: Attempting to remove from the ' + t + ' SourceBuffer, but it does not exist',
13739                  ),
13740                  void a.shiftAndExecuteNext(t)
13741                );
13742              var o = E(i.duration) ? i.duration : 1 / 0,
13743                l = E(n.duration) ? n.duration : 1 / 0,
13744                u = Math.max(0, e),
13745                h = Math.min(r, o, l);
13746              h > u && !s.ending
13747                ? ((s.ended = !1),
13748                  w.log('[buffer-controller]: Removing [' + u + ',' + h + '] from the ' + t + ' SourceBuffer'),
13749                  s.remove(u, h))
13750                : a.shiftAndExecuteNext(t);
13751            }),
13752            (e.appendExecutor = function (t, e) {
13753              var r = this.operationQueue,
13754                i = this.sourceBuffer[e];
13755              if (!i)
13756                return (
13757                  w.warn(
13758                    '[buffer-controller]: Attempting to append to the ' + e + ' SourceBuffer, but it does not exist',
13759                  ),
13760                  void r.shiftAndExecuteNext(e)
13761                );
13762              (i.ended = !1), i.appendBuffer(t);
13763            }),
13764            (e.blockBuffers = function (t, e) {
13765              var r = this;
13766              if ((void 0 === e && (e = this.getSourceBufferTypes()), !e.length))
13767                return (
13768                  w.log('[buffer-controller]: Blocking operation requested, but no SourceBuffers exist'),
13769                  void Promise.resolve().then(t)
13770                );
13771              var i = this.operationQueue,
13772                n = e.map(function (t) {
13773                  return i.appendBlocker(t);
13774                });
13775              Promise.all(n).then(function () {
13776                t(),
13777                  e.forEach(function (t) {
13778                    var e = r.sourceBuffer[t];
13779                    (null != e && e.updating) || i.shiftAndExecuteNext(t);
13780                  });
13781              });
13782            }),
13783            (e.getSourceBufferTypes = function () {
13784              return Object.keys(this.sourceBuffer);
13785            }),
13786            (e.addBufferListener = function (t, e, r) {
13787              var i = this.sourceBuffer[t];
13788              if (i) {
13789                var n = r.bind(this, t);
13790                this.listeners[t].push({ event: e, listener: n }), i.addEventListener(e, n);
13791              }
13792            }),
13793            (e.removeBufferListeners = function (t) {
13794              var e = this.sourceBuffer[t];
13795              e &&
13796                this.listeners[t].forEach(function (t) {
13797                  e.removeEventListener(t.event, t.listener);
13798                });
13799            }),
13800            t
13801          );
13802        })(),
13803        wn = {
13804          42: 225,
13805          92: 233,
13806          94: 237,
13807          95: 243,
13808          96: 250,
13809          123: 231,
13810          124: 247,
13811          125: 209,
13812          126: 241,
13813          127: 9608,
13814          128: 174,
13815          129: 176,
13816          130: 189,
13817          131: 191,
13818          132: 8482,
13819          133: 162,
13820          134: 163,
13821          135: 9834,
13822          136: 224,
13823          137: 32,
13824          138: 232,
13825          139: 226,
13826          140: 234,
13827          141: 238,
13828          142: 244,
13829          143: 251,
13830          144: 193,
13831          145: 201,
13832          146: 211,
13833          147: 218,
13834          148: 220,
13835          149: 252,
13836          150: 8216,
13837          151: 161,
13838          152: 42,
13839          153: 8217,
13840          154: 9473,
13841          155: 169,
13842          156: 8480,
13843          157: 8226,
13844          158: 8220,
13845          159: 8221,
13846          160: 192,
13847          161: 194,
13848          162: 199,
13849          163: 200,
13850          164: 202,
13851          165: 203,
13852          166: 235,
13853          167: 206,
13854          168: 207,
13855          169: 239,
13856          170: 212,
13857          171: 217,
13858          172: 249,
13859          173: 219,
13860          174: 171,
13861          175: 187,
13862          176: 195,
13863          177: 227,
13864          178: 205,
13865          179: 204,
13866          180: 236,
13867          181: 210,
13868          182: 242,
13869          183: 213,
13870          184: 245,
13871          185: 123,
13872          186: 125,
13873          187: 92,
13874          188: 94,
13875          189: 95,
13876          190: 124,
13877          191: 8764,
13878          192: 196,
13879          193: 228,
13880          194: 214,
13881          195: 246,
13882          196: 223,
13883          197: 165,
13884          198: 164,
13885          199: 9475,
13886          200: 197,
13887          201: 229,
13888          202: 216,
13889          203: 248,
13890          204: 9487,
13891          205: 9491,
13892          206: 9495,
13893          207: 9499,
13894        },
13895        Cn = function (t) {
13896          var e = t;
13897          return wn.hasOwnProperty(t) && (e = wn[t]), String.fromCharCode(e);
13898        },
13899        _n = 15,
13900        Pn = 100,
13901        xn = { 17: 1, 18: 3, 21: 5, 22: 7, 23: 9, 16: 11, 19: 12, 20: 14 },
13902        Fn = { 17: 2, 18: 4, 21: 6, 22: 8, 23: 10, 19: 13, 20: 15 },
13903        Mn = { 25: 1, 26: 3, 29: 5, 30: 7, 31: 9, 24: 11, 27: 12, 28: 14 },
13904        On = { 25: 2, 26: 4, 29: 6, 30: 8, 31: 10, 27: 13, 28: 15 },
13905        Nn = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent'],
13906        Un = (function () {
13907          function t() {
13908            (this.time = null), (this.verboseLevel = 0);
13909          }
13910          return (
13911            (t.prototype.log = function (t, e) {
13912              if (this.verboseLevel >= t) {
13913                var r = 'function' == typeof e ? e() : e;
13914                w.log(this.time + ' [' + t + '] ' + r);
13915              }
13916            }),
13917            t
13918          );
13919        })(),
13920        Bn = function (t) {
13921          for (var e = [], r = 0; r < t.length; r++) e.push(t[r].toString(16));
13922          return e;
13923        },
13924        Gn = (function () {
13925          function t(t, e, r, i, n) {
13926            (this.foreground = void 0),
13927              (this.underline = void 0),
13928              (this.italics = void 0),
13929              (this.background = void 0),
13930              (this.flash = void 0),
13931              (this.foreground = t || 'white'),
13932              (this.underline = e || !1),
13933              (this.italics = r || !1),
13934              (this.background = i || 'black'),
13935              (this.flash = n || !1);
13936          }
13937          var e = t.prototype;
13938          return (
13939            (e.reset = function () {
13940              (this.foreground = 'white'),
13941                (this.underline = !1),
13942                (this.italics = !1),
13943                (this.background = 'black'),
13944                (this.flash = !1);
13945            }),
13946            (e.setStyles = function (t) {
13947              for (var e = ['foreground', 'underline', 'italics', 'background', 'flash'], r = 0; r < e.length; r++) {
13948                var i = e[r];
13949                t.hasOwnProperty(i) && (this[i] = t[i]);
13950              }
13951            }),
13952            (e.isDefault = function () {
13953              return (
13954                'white' === this.foreground &&
13955                !this.underline &&
13956                !this.italics &&
13957                'black' === this.background &&
13958                !this.flash
13959              );
13960            }),
13961            (e.equals = function (t) {
13962              return (
13963                this.foreground === t.foreground &&
13964                this.underline === t.underline &&
13965                this.italics === t.italics &&
13966                this.background === t.background &&
13967                this.flash === t.flash
13968              );
13969            }),
13970            (e.copy = function (t) {
13971              (this.foreground = t.foreground),
13972                (this.underline = t.underline),
13973                (this.italics = t.italics),
13974                (this.background = t.background),
13975                (this.flash = t.flash);
13976            }),
13977            (e.toString = function () {
13978              return (
13979                'color=' +
13980                this.foreground +
13981                ', underline=' +
13982                this.underline +
13983                ', italics=' +
13984                this.italics +
13985                ', background=' +
13986                this.background +
13987                ', flash=' +
13988                this.flash
13989              );
13990            }),
13991            t
13992          );
13993        })(),
13994        Kn = (function () {
13995          function t(t, e, r, i, n, a) {
13996            (this.uchar = void 0),
13997              (this.penState = void 0),
13998              (this.uchar = t || ' '),
13999              (this.penState = new Gn(e, r, i, n, a));
14000          }
14001          var e = t.prototype;
14002          return (
14003            (e.reset = function () {
14004              (this.uchar = ' '), this.penState.reset();
14005            }),
14006            (e.setChar = function (t, e) {
14007              (this.uchar = t), this.penState.copy(e);
14008            }),
14009            (e.setPenState = function (t) {
14010              this.penState.copy(t);
14011            }),
14012            (e.equals = function (t) {
14013              return this.uchar === t.uchar && this.penState.equals(t.penState);
14014            }),
14015            (e.copy = function (t) {
14016              (this.uchar = t.uchar), this.penState.copy(t.penState);
14017            }),
14018            (e.isEmpty = function () {
14019              return ' ' === this.uchar && this.penState.isDefault();
14020            }),
14021            t
14022          );
14023        })(),
14024        Hn = (function () {
14025          function t(t) {
14026            (this.chars = void 0),
14027              (this.pos = void 0),
14028              (this.currPenState = void 0),
14029              (this.cueStartTime = void 0),
14030              (this.logger = void 0),
14031              (this.chars = []);
14032            for (var e = 0; e < Pn; e++) this.chars.push(new Kn());
14033            (this.logger = t), (this.pos = 0), (this.currPenState = new Gn());
14034          }
14035          var e = t.prototype;
14036          return (
14037            (e.equals = function (t) {
14038              for (var e = !0, r = 0; r < Pn; r++)
14039                if (!this.chars[r].equals(t.chars[r])) {
14040                  e = !1;
14041                  break;
14042                }
14043              return e;
14044            }),
14045            (e.copy = function (t) {
14046              for (var e = 0; e < Pn; e++) this.chars[e].copy(t.chars[e]);
14047            }),
14048            (e.isEmpty = function () {
14049              for (var t = !0, e = 0; e < Pn; e++)
14050                if (!this.chars[e].isEmpty()) {
14051                  t = !1;
14052                  break;
14053                }
14054              return t;
14055            }),
14056            (e.setCursor = function (t) {
14057              this.pos !== t && (this.pos = t),
14058                this.pos < 0
14059                  ? (this.logger.log(3, 'Negative cursor position ' + this.pos), (this.pos = 0))
14060                  : this.pos > Pn && (this.logger.log(3, 'Too large cursor position ' + this.pos), (this.pos = Pn));
14061            }),
14062            (e.moveCursor = function (t) {
14063              var e = this.pos + t;
14064              if (t > 1) for (var r = this.pos + 1; r < e + 1; r++) this.chars[r].setPenState(this.currPenState);
14065              this.setCursor(e);
14066            }),
14067            (e.backSpace = function () {
14068              this.moveCursor(-1), this.chars[this.pos].setChar(' ', this.currPenState);
14069            }),
14070            (e.insertChar = function (t) {
14071              var e = this;
14072              t >= 144 && this.backSpace();
14073              var r = Cn(t);
14074              this.pos >= Pn
14075                ? this.logger.log(0, function () {
14076                    return 'Cannot insert ' + t.toString(16) + ' (' + r + ') at position ' + e.pos + '. Skipping it!';
14077                  })
14078                : (this.chars[this.pos].setChar(r, this.currPenState), this.moveCursor(1));
14079            }),
14080            (e.clearFromPos = function (t) {
14081              var e;
14082              for (e = t; e < Pn; e++) this.chars[e].reset();
14083            }),
14084            (e.clear = function () {
14085              this.clearFromPos(0), (this.pos = 0), this.currPenState.reset();
14086            }),
14087            (e.clearToEndOfRow = function () {
14088              this.clearFromPos(this.pos);
14089            }),
14090            (e.getTextString = function () {
14091              for (var t = [], e = !0, r = 0; r < Pn; r++) {
14092                var i = this.chars[r].uchar;
14093                ' ' !== i && (e = !1), t.push(i);
14094              }
14095              return e ? '' : t.join('');
14096            }),
14097            (e.setPenStyles = function (t) {
14098              this.currPenState.setStyles(t), this.chars[this.pos].setPenState(this.currPenState);
14099            }),
14100            t
14101          );
14102        })(),
14103        Vn = (function () {
14104          function t(t) {
14105            (this.rows = void 0),
14106              (this.currRow = void 0),
14107              (this.nrRollUpRows = void 0),
14108              (this.lastOutputScreen = void 0),
14109              (this.logger = void 0),
14110              (this.rows = []);
14111            for (var e = 0; e < _n; e++) this.rows.push(new Hn(t));
14112            (this.logger = t),
14113              (this.currRow = 14),
14114              (this.nrRollUpRows = null),
14115              (this.lastOutputScreen = null),
14116              this.reset();
14117          }
14118          var e = t.prototype;
14119          return (
14120            (e.reset = function () {
14121              for (var t = 0; t < _n; t++) this.rows[t].clear();
14122              this.currRow = 14;
14123            }),
14124            (e.equals = function (t) {
14125              for (var e = !0, r = 0; r < _n; r++)
14126                if (!this.rows[r].equals(t.rows[r])) {
14127                  e = !1;
14128                  break;
14129                }
14130              return e;
14131            }),
14132            (e.copy = function (t) {
14133              for (var e = 0; e < _n; e++) this.rows[e].copy(t.rows[e]);
14134            }),
14135            (e.isEmpty = function () {
14136              for (var t = !0, e = 0; e < _n; e++)
14137                if (!this.rows[e].isEmpty()) {
14138                  t = !1;
14139                  break;
14140                }
14141              return t;
14142            }),
14143            (e.backSpace = function () {
14144              this.rows[this.currRow].backSpace();
14145            }),
14146            (e.clearToEndOfRow = function () {
14147              this.rows[this.currRow].clearToEndOfRow();
14148            }),
14149            (e.insertChar = function (t) {
14150              this.rows[this.currRow].insertChar(t);
14151            }),
14152            (e.setPen = function (t) {
14153              this.rows[this.currRow].setPenStyles(t);
14154            }),
14155            (e.moveCursor = function (t) {
14156              this.rows[this.currRow].moveCursor(t);
14157            }),
14158            (e.setCursor = function (t) {
14159              this.logger.log(2, 'setCursor: ' + t), this.rows[this.currRow].setCursor(t);
14160            }),
14161            (e.setPAC = function (t) {
14162              this.logger.log(2, function () {
14163                return 'pacData = ' + JSON.stringify(t);
14164              });
14165              var e = t.row - 1;
14166              if (
14167                (this.nrRollUpRows && e < this.nrRollUpRows - 1 && (e = this.nrRollUpRows - 1),
14168                this.nrRollUpRows && this.currRow !== e)
14169              ) {
14170                for (var r = 0; r < _n; r++) this.rows[r].clear();
14171                var i = this.currRow + 1 - this.nrRollUpRows,
14172                  n = this.lastOutputScreen;
14173                if (n) {
14174                  var a = n.rows[i].cueStartTime,
14175                    s = this.logger.time;
14176                  if (a && null !== s && a < s)
14177                    for (var o = 0; o < this.nrRollUpRows; o++)
14178                      this.rows[e - this.nrRollUpRows + o + 1].copy(n.rows[i + o]);
14179                }
14180              }
14181              this.currRow = e;
14182              var l = this.rows[this.currRow];
14183              if (null !== t.indent) {
14184                var u = t.indent,
14185                  h = Math.max(u - 1, 0);
14186                l.setCursor(t.indent), (t.color = l.chars[h].penState.foreground);
14187              }
14188              var d = {
14189                foreground: t.color,
14190                underline: t.underline,
14191                italics: t.italics,
14192                background: 'black',
14193                flash: !1,
14194              };
14195              this.setPen(d);
14196            }),
14197            (e.setBkgData = function (t) {
14198              this.logger.log(2, function () {
14199                return 'bkgData = ' + JSON.stringify(t);
14200              }),
14201                this.backSpace(),
14202                this.setPen(t),
14203                this.insertChar(32);
14204            }),
14205            (e.setRollUpRows = function (t) {
14206              this.nrRollUpRows = t;
14207            }),
14208            (e.rollUp = function () {
14209              var t = this;
14210              if (null !== this.nrRollUpRows) {
14211                this.logger.log(1, function () {
14212                  return t.getDisplayText();
14213                });
14214                var e = this.currRow + 1 - this.nrRollUpRows,
14215                  r = this.rows.splice(e, 1)[0];
14216                r.clear(), this.rows.splice(this.currRow, 0, r), this.logger.log(2, 'Rolling up');
14217              } else this.logger.log(3, 'roll_up but nrRollUpRows not set yet');
14218            }),
14219            (e.getDisplayText = function (t) {
14220              t = t || !1;
14221              for (var e = [], r = '', i = -1, n = 0; n < _n; n++) {
14222                var a = this.rows[n].getTextString();
14223                a && ((i = n + 1), t ? e.push('Row ' + i + ": '" + a + "'") : e.push(a.trim()));
14224              }
14225              return e.length > 0 && (r = t ? '[' + e.join(' | ') + ']' : e.join('\n')), r;
14226            }),
14227            (e.getTextAndFormat = function () {
14228              return this.rows;
14229            }),
14230            t
14231          );
14232        })(),
14233        Yn = (function () {
14234          function t(t, e, r) {
14235            (this.chNr = void 0),
14236              (this.outputFilter = void 0),
14237              (this.mode = void 0),
14238              (this.verbose = void 0),
14239              (this.displayedMemory = void 0),
14240              (this.nonDisplayedMemory = void 0),
14241              (this.lastOutputScreen = void 0),
14242              (this.currRollUpRow = void 0),
14243              (this.writeScreen = void 0),
14244              (this.cueStartTime = void 0),
14245              (this.logger = void 0),
14246              (this.chNr = t),
14247              (this.outputFilter = e),
14248              (this.mode = null),
14249              (this.verbose = 0),
14250              (this.displayedMemory = new Vn(r)),
14251              (this.nonDisplayedMemory = new Vn(r)),
14252              (this.lastOutputScreen = new Vn(r)),
14253              (this.currRollUpRow = this.displayedMemory.rows[14]),
14254              (this.writeScreen = this.displayedMemory),
14255              (this.mode = null),
14256              (this.cueStartTime = null),
14257              (this.logger = r);
14258          }
14259          var e = t.prototype;
14260          return (
14261            (e.reset = function () {
14262              (this.mode = null),
14263                this.displayedMemory.reset(),
14264                this.nonDisplayedMemory.reset(),
14265                this.lastOutputScreen.reset(),
14266                this.outputFilter.reset(),
14267                (this.currRollUpRow = this.displayedMemory.rows[14]),
14268                (this.writeScreen = this.displayedMemory),
14269                (this.mode = null),
14270                (this.cueStartTime = null);
14271            }),
14272            (e.getHandler = function () {
14273              return this.outputFilter;
14274            }),
14275            (e.setHandler = function (t) {
14276              this.outputFilter = t;
14277            }),
14278            (e.setPAC = function (t) {
14279              this.writeScreen.setPAC(t);
14280            }),
14281            (e.setBkgData = function (t) {
14282              this.writeScreen.setBkgData(t);
14283            }),
14284            (e.setMode = function (t) {
14285              t !== this.mode &&
14286                ((this.mode = t),
14287                this.logger.log(2, function () {
14288                  return 'MODE=' + t;
14289                }),
14290                'MODE_POP-ON' === this.mode
14291                  ? (this.writeScreen = this.nonDisplayedMemory)
14292                  : ((this.writeScreen = this.displayedMemory), this.writeScreen.reset()),
14293                'MODE_ROLL-UP' !== this.mode &&
14294                  ((this.displayedMemory.nrRollUpRows = null), (this.nonDisplayedMemory.nrRollUpRows = null)),
14295                (this.mode = t));
14296            }),
14297            (e.insertChars = function (t) {
14298              for (var e = this, r = 0; r < t.length; r++) this.writeScreen.insertChar(t[r]);
14299              var i = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';
14300              this.logger.log(2, function () {
14301                return i + ': ' + e.writeScreen.getDisplayText(!0);
14302              }),
14303                ('MODE_PAINT-ON' !== this.mode && 'MODE_ROLL-UP' !== this.mode) ||
14304                  (this.logger.log(1, function () {
14305                    return 'DISPLAYED: ' + e.displayedMemory.getDisplayText(!0);
14306                  }),
14307                  this.outputDataUpdate());
14308            }),
14309            (e.ccRCL = function () {
14310              this.logger.log(2, 'RCL - Resume Caption Loading'), this.setMode('MODE_POP-ON');
14311            }),
14312            (e.ccBS = function () {
14313              this.logger.log(2, 'BS - BackSpace'),
14314                'MODE_TEXT' !== this.mode &&
14315                  (this.writeScreen.backSpace(), this.writeScreen === this.displayedMemory && this.outputDataUpdate());
14316            }),
14317            (e.ccAOF = function () {}),
14318            (e.ccAON = function () {}),
14319            (e.ccDER = function () {
14320              this.logger.log(2, 'DER- Delete to End of Row'),
14321                this.writeScreen.clearToEndOfRow(),
14322                this.outputDataUpdate();
14323            }),
14324            (e.ccRU = function (t) {
14325              this.logger.log(2, 'RU(' + t + ') - Roll Up'),
14326                (this.writeScreen = this.displayedMemory),
14327                this.setMode('MODE_ROLL-UP'),
14328                this.writeScreen.setRollUpRows(t);
14329            }),
14330            (e.ccFON = function () {
14331              this.logger.log(2, 'FON - Flash On'), this.writeScreen.setPen({ flash: !0 });
14332            }),
14333            (e.ccRDC = function () {
14334              this.logger.log(2, 'RDC - Resume Direct Captioning'), this.setMode('MODE_PAINT-ON');
14335            }),
14336            (e.ccTR = function () {
14337              this.logger.log(2, 'TR'), this.setMode('MODE_TEXT');
14338            }),
14339            (e.ccRTD = function () {
14340              this.logger.log(2, 'RTD'), this.setMode('MODE_TEXT');
14341            }),
14342            (e.ccEDM = function () {
14343              this.logger.log(2, 'EDM - Erase Displayed Memory'),
14344                this.displayedMemory.reset(),
14345                this.outputDataUpdate(!0);
14346            }),
14347            (e.ccCR = function () {
14348              this.logger.log(2, 'CR - Carriage Return'), this.writeScreen.rollUp(), this.outputDataUpdate(!0);
14349            }),
14350            (e.ccENM = function () {
14351              this.logger.log(2, 'ENM - Erase Non-displayed Memory'), this.nonDisplayedMemory.reset();
14352            }),
14353            (e.ccEOC = function () {
14354              var t = this;
14355              if ((this.logger.log(2, 'EOC - End Of Caption'), 'MODE_POP-ON' === this.mode)) {
14356                var e = this.displayedMemory;
14357                (this.displayedMemory = this.nonDisplayedMemory),
14358                  (this.nonDisplayedMemory = e),
14359                  (this.writeScreen = this.nonDisplayedMemory),
14360                  this.logger.log(1, function () {
14361                    return 'DISP: ' + t.displayedMemory.getDisplayText();
14362                  });
14363              }
14364              this.outputDataUpdate(!0);
14365            }),
14366            (e.ccTO = function (t) {
14367              this.logger.log(2, 'TO(' + t + ') - Tab Offset'), this.writeScreen.moveCursor(t);
14368            }),
14369            (e.ccMIDROW = function (t) {
14370              var e = { flash: !1 };
14371              if (((e.underline = t % 2 == 1), (e.italics = t >= 46), e.italics)) e.foreground = 'white';
14372              else {
14373                var r = Math.floor(t / 2) - 16;
14374                e.foreground = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta'][r];
14375              }
14376              this.logger.log(2, 'MIDROW: ' + JSON.stringify(e)), this.writeScreen.setPen(e);
14377            }),
14378            (e.outputDataUpdate = function (t) {
14379              void 0 === t && (t = !1);
14380              var e = this.logger.time;
14381              null !== e &&
14382                this.outputFilter &&
14383                (null !== this.cueStartTime || this.displayedMemory.isEmpty()
14384                  ? this.displayedMemory.equals(this.lastOutputScreen) ||
14385                    (this.outputFilter.newCue(this.cueStartTime, e, this.lastOutputScreen),
14386                    t && this.outputFilter.dispatchCue && this.outputFilter.dispatchCue(),
14387                    (this.cueStartTime = this.displayedMemory.isEmpty() ? null : e))
14388                  : (this.cueStartTime = e),
14389                this.lastOutputScreen.copy(this.displayedMemory));
14390            }),
14391            (e.cueSplitAtTime = function (t) {
14392              this.outputFilter &&
14393                (this.displayedMemory.isEmpty() ||
14394                  (this.outputFilter.newCue && this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory),
14395                  (this.cueStartTime = t)));
14396            }),
14397            t
14398          );
14399        })(),
14400        Wn = (function () {
14401          function t(t, e, r) {
14402            (this.channels = void 0), (this.currentChannel = 0), (this.cmdHistory = void 0), (this.logger = void 0);
14403            var i = new Un();
14404            (this.channels = [null, new Yn(t, e, i), new Yn(t + 1, r, i)]),
14405              (this.cmdHistory = { a: null, b: null }),
14406              (this.logger = i);
14407          }
14408          var e = t.prototype;
14409          return (
14410            (e.getHandler = function (t) {
14411              return this.channels[t].getHandler();
14412            }),
14413            (e.setHandler = function (t, e) {
14414              this.channels[t].setHandler(e);
14415            }),
14416            (e.addData = function (t, e) {
14417              var r,
14418                i,
14419                n,
14420                a = !1;
14421              this.logger.time = t;
14422              for (var s = 0; s < e.length; s += 2)
14423                if (((i = 127 & e[s]), (n = 127 & e[s + 1]), 0 !== i || 0 !== n)) {
14424                  if (
14425                    (this.logger.log(3, '[' + Bn([e[s], e[s + 1]]) + '] -> (' + Bn([i, n]) + ')'),
14426                    (r = this.parseCmd(i, n)) || (r = this.parseMidrow(i, n)),
14427                    r || (r = this.parsePAC(i, n)),
14428                    r || (r = this.parseBackgroundAttributes(i, n)),
14429                    !r && (a = this.parseChars(i, n)))
14430                  ) {
14431                    var o = this.currentChannel;
14432                    o && o > 0
14433                      ? this.channels[o].insertChars(a)
14434                      : this.logger.log(2, 'No channel found yet. TEXT-MODE?');
14435                  }
14436                  r ||
14437                    a ||
14438                    this.logger.log(2, "Couldn't parse cleaned data " + Bn([i, n]) + ' orig: ' + Bn([e[s], e[s + 1]]));
14439                }
14440            }),
14441            (e.parseCmd = function (t, e) {
14442              var r = this.cmdHistory;
14443              if (
14444                !(
14445                  ((20 === t || 28 === t || 21 === t || 29 === t) && e >= 32 && e <= 47) ||
14446                  ((23 === t || 31 === t) && e >= 33 && e <= 35)
14447                )
14448              )
14449                return !1;
14450              if (qn(t, e, r))
14451                return jn(null, null, r), this.logger.log(3, 'Repeated command (' + Bn([t, e]) + ') is dropped'), !0;
14452              var i = 20 === t || 21 === t || 23 === t ? 1 : 2,
14453                n = this.channels[i];
14454              return (
14455                20 === t || 21 === t || 28 === t || 29 === t
14456                  ? 32 === e
14457                    ? n.ccRCL()
14458                    : 33 === e
14459                    ? n.ccBS()
14460                    : 34 === e
14461                    ? n.ccAOF()
14462                    : 35 === e
14463                    ? n.ccAON()
14464                    : 36 === e
14465                    ? n.ccDER()
14466                    : 37 === e
14467                    ? n.ccRU(2)
14468                    : 38 === e
14469                    ? n.ccRU(3)
14470                    : 39 === e
14471                    ? n.ccRU(4)
14472                    : 40 === e
14473                    ? n.ccFON()
14474                    : 41 === e
14475                    ? n.ccRDC()
14476                    : 42 === e
14477                    ? n.ccTR()
14478                    : 43 === e
14479                    ? n.ccRTD()
14480                    : 44 === e
14481                    ? n.ccEDM()
14482                    : 45 === e
14483                    ? n.ccCR()
14484                    : 46 === e
14485                    ? n.ccENM()
14486                    : 47 === e && n.ccEOC()
14487                  : n.ccTO(e - 32),
14488                jn(t, e, r),
14489                (this.currentChannel = i),
14490                !0
14491              );
14492            }),
14493            (e.parseMidrow = function (t, e) {
14494              var r = 0;
14495              if ((17 === t || 25 === t) && e >= 32 && e <= 47) {
14496                if ((r = 17 === t ? 1 : 2) !== this.currentChannel)
14497                  return this.logger.log(0, 'Mismatch channel in midrow parsing'), !1;
14498                var i = this.channels[r];
14499                return !!i && (i.ccMIDROW(e), this.logger.log(3, 'MIDROW (' + Bn([t, e]) + ')'), !0);
14500              }
14501              return !1;
14502            }),
14503            (e.parsePAC = function (t, e) {
14504              var r,
14505                i = this.cmdHistory;
14506              if (
14507                !(
14508                  (((t >= 17 && t <= 23) || (t >= 25 && t <= 31)) && e >= 64 && e <= 127) ||
14509                  ((16 === t || 24 === t) && e >= 64 && e <= 95)
14510                )
14511              )
14512                return !1;
14513              if (qn(t, e, i)) return jn(null, null, i), !0;
14514              var n = t <= 23 ? 1 : 2;
14515              r = e >= 64 && e <= 95 ? (1 === n ? xn[t] : Mn[t]) : 1 === n ? Fn[t] : On[t];
14516              var a = this.channels[n];
14517              return !!a && (a.setPAC(this.interpretPAC(r, e)), jn(t, e, i), (this.currentChannel = n), !0);
14518            }),
14519            (e.interpretPAC = function (t, e) {
14520              var r,
14521                i = { color: null, italics: !1, indent: null, underline: !1, row: t };
14522              return (
14523                (r = e > 95 ? e - 96 : e - 64),
14524                (i.underline = 1 == (1 & r)),
14525                r <= 13
14526                  ? (i.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][
14527                      Math.floor(r / 2)
14528                    ])
14529                  : r <= 15
14530                  ? ((i.italics = !0), (i.color = 'white'))
14531                  : (i.indent = 4 * Math.floor((r - 16) / 2)),
14532                i
14533              );
14534            }),
14535            (e.parseChars = function (t, e) {
14536              var r,
14537                i,
14538                n = null,
14539                a = null;
14540              if (
14541                (t >= 25 ? ((r = 2), (a = t - 8)) : ((r = 1), (a = t)),
14542                a >= 17 && a <= 19
14543                  ? ((i = 17 === a ? e + 80 : 18 === a ? e + 112 : e + 144),
14544                    this.logger.log(2, "Special char '" + Cn(i) + "' in channel " + r),
14545                    (n = [i]))
14546                  : t >
14546= 32 && t <= 127 && (n = 0 === e ? [t] : [t, e]),
14547                n)
14548              ) {
14549                var s = Bn(n);
14550                this.logger.log(3, 'Char codes =  ' + s.join(',')), jn(t, e, this.cmdHistory);
14551              }
14552              return n;
14553            }),
14554            (e.parseBackgroundAttributes = function (t, e) {
14555              var r;
14556              if (!(((16 === t || 24 === t) && e >= 32 && e <= 47) || ((23 === t || 31 === t) && e >= 45 && e <= 47)))
14557                return !1;
14558              var i = {};
14559              16 === t || 24 === t
14560                ? ((r = Math.floor((e - 32) / 2)),
14561                  (i.background = Nn[r]),
14562                  e % 2 == 1 && (i.background = i.background + '_semi'))
14563                : 45 === e
14564                ? (i.background = 'transparent')
14565                : ((i.foreground = 'black'), 47 === e && (i.underline = !0));
14566              var n = t <= 23 ? 1 : 2;
14567              return this.channels[n].setBkgData(i), jn(t, e, this.cmdHistory), !0;
14568            }),
14569            (e.reset = function () {
14570              for (var t = 0; t < Object.keys(this.channels).length; t++) {
14571                var e = this.channels[t];
14572                e && e.reset();
14573              }
14574              this.cmdHistory = { a: null, b: null };
14575            }),
14576            (e.cueSplitAtTime = function (t) {
14577              for (var e = 0; e < this.channels.length; e++) {
14578                var r = this.channels[e];
14579                r && r.cueSplitAtTime(t);
14580              }
14581            }),
14582            t
14583          );
14584        })();
14585      function jn(t, e, r) {
14586        (r.a = t), (r.b = e);
14587      }
14588      function qn(t, e, r) {
14589        return r.a === t && r.b === e;
14590      }
14591      var Xn = (function () {
14592          function t(t, e) {
14593            (this.timelineController = void 0),
14594              (this.cueRanges = []),
14595              (this.trackName = void 0),
14596              (this.startTime = null),
14597              (this.endTime = null),
14598              (this.screen = null),
14599              (this.timelineController = t),
14600              (this.trackName = e);
14601          }
14602          var e = t.prototype;
14603          return (
14604            (e.dispatchCue = function () {
14605              null !== this.startTime &&
14606                (this.timelineController.addCues(
14607                  this.trackName,
14608                  this.startTime,
14609                  this.endTime,
14610                  this.screen,
14611                  this.cueRanges,
14612                ),
14613                (this.startTime = null));
14614            }),
14615            (e.newCue = function (t, e, r) {
14616              (null === this.startTime || this.startTime > t) && (this.startTime = t),
14617                (this.endTime = e),
14618                (this.screen = r),
14619                this.timelineController.createCaptionsTrack(this.trackName);
14620            }),
14621            (e.reset = function () {
14622              (this.cueRanges = []), (this.startTime = null);
14623            }),
14624            t
14625          );
14626        })(),
14627        zn = (function () {
14628          if ('undefined' != typeof self && self.VTTCue) return self.VTTCue;
14629          var t = ['', 'lr', 'rl'],
14630            e = ['start', 'middle', 'end', 'left', 'right'];
14631          function r(t, e) {
14632            if ('string' != typeof e) return !1;
14633            if (!Array.isArray(t)) return !1;
14634            var r = e.toLowerCase();
14635            return !!~t.indexOf(r) && r;
14636          }
14637          function i(t) {
14638            return r(e, t);
14639          }
14640          function n(t) {
14641            for (var e = arguments.length, r = new Array(e > 1 ? e - 1 : 0), i = 1; i < e; i++) r[i - 1] = arguments[i];
14642            for (var n = 1; n < arguments.length; n++) {
14643              var a = arguments[n];
14644              for (var s in a) t[s] = a[s];
14645            }
14646            return t;
14647          }
14648          function a(e, a, s) {
14649            var o = this,
14650              l = { enumerable: !0 };
14651            o.hasBeenReset = !1;
14652            var u = '',
14653              h = !1,
14654              d = e,
14655              c = a,
14656              f = s,
14657              g = null,
14658              v = '',
14659              m = !0,
14660              p = 'auto',
14661              y = 'start',
14662              T = 50,
14663              E = 'middle',
14664              S = 50,
14665              L = 'middle';
14666            Object.defineProperty(
14667              o,
14668              'id',
14669              n({}, l, {
14670                get: function () {
14671                  return u;
14672                },
14673                set: function (t) {
14674                  u = '' + t;
14675                },
14676              }),
14677            ),
14678              Object.defineProperty(
14679                o,
14680                'pauseOnExit',
14681                n({}, l, {
14682                  get: function () {
14683                    return h;
14684                  },
14685                  set: function (t) {
14686                    h = !!t;
14687                  },
14688                }),
14689              ),
14690              Object.defineProperty(
14691                o,
14692                'startTime',
14693                n({}, l, {
14694                  get: function () {
14695                    return d;
14696                  },
14697                  set: function (t) {
14698                    if ('number' != typeof t) throw new TypeError('Start time must be set to a number.');
14699                    (d = t), (this.hasBeenReset = !0);
14700                  },
14701                }),
14702              ),
14703              Object.defineProperty(
14704                o,
14705                'endTime',
14706                n({}, l, {
14707                  get: function () {
14708                    return c;
14709                  },
14710                  set: function (t) {
14711                    if ('number' != typeof t) throw new TypeError('End time must be set to a number.');
14712                    (c = t), (this.hasBeenReset = !0);
14713                  },
14714                }),
14715              ),
14716              Object.defineProperty(
14717                o,
14718                'text',
14719                n({}, l, {
14720                  get: function () {
14721                    return f;
14722                  },
14723                  set: function (t) {
14724                    (f = '' + t), (this.hasBeenReset = !0);
14725                  },
14726                }),
14727              ),
14728              Object.defineProperty(
14729                o,
14730                'region',
14731                n({}, l, {
14732                  get: function () {
14733                    return g;
14734                  },
14735                  set: function (t) {
14736                    (g = t), (this.hasBeenReset = !0);
14737                  },
14738                }),
14739              ),
14740              Object.defineProperty(
14741                o,
14742                'vertical',
14743                n({}, l, {
14744                  get: function () {
14745                    return v;
14746                  },
14747                  set: function (e) {
14748                    var i = (function (e) {
14749                      return r(t, e);
14750                    })(e);
14751                    if (!1 === i) throw new SyntaxError('An invalid or illegal string was specified.');
14752                    (v = i), (this.hasBeenReset = !0);
14753                  },
14754                }),
14755              ),
14756              Object.defineProperty(
14757                o,
14758                'snapToLines',
14759                n({}, l, {
14760                  get: function () {
14761                    return m;
14762                  },
14763                  set: function (t) {
14764                    (m = !!t), (this.hasBeenReset = !0);
14765                  },
14766                }),
14767              ),
14768              Object.defineProperty(
14769                o,
14770                'line',
14771                n({}, l, {
14772                  get: function () {
14773                    return p;
14774                  },
14775                  set: function (t) {
14776                    if ('number' != typeof t && 'auto' !== t)
14777                      throw new SyntaxError('An invalid number or illegal string was specified.');
14778                    (p = t), (this.hasBeenReset = !0);
14779                  },
14780                }),
14781              ),
14782              Object.defineProperty(
14783                o,
14784                'lineAlign',
14785                n({}, l, {
14786                  get: function () {
14787                    return y;
14788                  },
14789                  set: function (t) {
14790                    var e = i(t);
14791                    if (!e) throw new SyntaxError('An invalid or illegal string was specified.');
14792                    (y = e), (this.hasBeenReset = !0);
14793                  },
14794                }),
14795              ),
14796              Object.defineProperty(
14797                o,
14798                'position',
14799                n({}, l, {
14800                  get: function () {
14801                    return T;
14802                  },
14803                  set: function (t) {
14804                    if (t < 0 || t > 100) throw new Error('Position must be between 0 and 100.');
14805                    (T = t), (this.hasBeenReset = !0);
14806                  },
14807                }),
14808              ),
14809              Object.defineProperty(
14810                o,
14811                'positionAlign',
14812                n({}, l, {
14813                  get: function () {
14814                    return E;
14815                  },
14816                  set: function (t) {
14817                    var e = i(t);
14818                    if (!e) throw new SyntaxError('An invalid or illegal string was specified.');
14819                    (E = e), (this.hasBeenReset = !0);
14820                  },
14821                }),
14822              ),
14823              Object.defineProperty(
14824                o,
14825                'size',
14826                n({}, l, {
14827                  get: function () {
14828                    return S;
14829                  },
14830                  set: function (t) {
14831                    if (t < 0 || t > 100) throw new Error('Size must be between 0 and 100.');
14832                    (S = t), (this.hasBeenReset = !0);
14833                  },
14834                }),
14835              ),
14836              Object.defineProperty(
14837                o,
14838                'align',
14839                n({}, l, {
14840                  get: function () {
14841                    return L;
14842                  },
14843                  set: function (t) {
14844                    var e = i(t);
14845                    if (!e) throw new SyntaxError('An invalid or illegal string was specified.');
14846                    (L = e), (this.hasBeenReset = !0);
14847                  },
14848                }),
14849              ),
14850              (o.displayState = void 0);
14851          }
14852          return (
14853            (a.prototype.getCueAsHTML = function () {
14854              return self.WebVTT.convertCueToDOMTree(self, this.text);
14855            }),
14856            a
14857          );
14858        })(),
14859        Qn = (function () {
14860          function t() {}
14861          return (
14862            (t.prototype.decode = function (t, e) {
14863              if (!t) return '';
14864              if ('string' != typeof t) throw new Error('Error - expected string data.');
14865              return decodeURIComponent(encodeURIComponent(t));
14866            }),
14867            t
14868          );
14869        })();
14870      function $n(t) {
14871        function e(t, e, r, i) {
14872          return 3600 * (0 | t) + 60 * (0 | e) + (0 | r) + parseFloat(i || 0);
14873        }
14874        var r = t.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);
14875        return r ? (parseFloat(r[2]) > 59 ? e(r[2], r[3], 0, r[4]) : e(r[1], r[2], r[3], r[4])) : null;
14876      }
14877      var Jn = (function () {
14878        function t() {
14879          this.values = Object.create(null);
14880        }
14881        var e = t.prototype;
14882        return (
14883          (e.set = function (t, e) {
14884            this.get(t) || '' === e || (this.values[t] = e);
14885          }),
14886          (e.get = function (t, e, r) {
14887            return r ? (this.has(t) ? this.values[t] : e[r]) : this.has(t) ? this.values[t] : e;
14888          }),
14889          (e.has = function (t) {
14890            return t in this.values;
14891          }),
14892          (e.alt = function (t, e, r) {
14893            for (var i = 0; i < r.length; ++i)
14894              if (e === r[i]) {
14895                this.set(t, e);
14896                break;
14897              }
14898          }),
14899          (e.integer = function (t, e) {
14900            /^-?\d+$/.test(e) && this.set(t, parseInt(e, 10));
14901          }),
14902          (e.percent = function (t, e) {
14903            if (/^([\d]{1,3})(\.[\d]*)?%$/.test(e)) {
14904              var r = parseFloat(e);
14905              if (r >= 0 && r <= 100) return this.set(t, r), !0;
14906            }
14907            return !1;
14908          }),
14909          t
14910        );
14911      })();
14912      function Zn(t, e, r, i) {
14913        var n = i ? t.split(i) : [t];
14914        for (var a in n)
14915          if ('string' == typeof n[a]) {
14916            var s = n[a].split(r);
14917            2 === s.length && e(s[0], s[1]);
14918          }
14919      }
14920      var ta = new zn(0, 0, ''),
14921        ea = 'middle' === ta.align ? 'middle' : 'center';
14922      function ra(t, e, r) {
14923        var i = t;
14924        function n() {
14925          var e = $n(t);
14926          if (null === e) throw new Error('Malformed timestamp: ' + i);
14927          return (t = t.replace(/^[^\sa-zA-Z-]+/, '')), e;
14928        }
14929        function a() {
14930          t = t.replace(/^\s+/, '');
14931        }
14932        if ((a(), (e.startTime = n()), a(), '--\x3e' !== t.slice(0, 3)))
14933          throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): " + i);
14934        (t = t.slice(3)),
14935          a(),
14936          (e.endTime = n()),
14937          a(),
14938          (function (t, e) {
14939            var i = new Jn();
14940            Zn(
14941              t,
14942              function (t, e) {
14943                var n;
14944                switch (t) {
14945                  case 'region':
14946                    for (var a = r.length - 1; a >= 0; a--)
14947                      if (r[a].id === e) {
14948                        i.set(t, r[a].region);
14949                        break;
14950                      }
14951                    break;
14952                  case 'vertical':
14953                    i.alt(t, e, ['rl', 'lr']);
14954                    break;
14955                  case 'line':
14956                    (n = e.split(',')),
14957                      i.integer(t, n[0]),
14958                      i.percent(t, n[0]) && i.set('snapToLines', !1),
14959                      i.alt(t, n[0], ['auto']),
14960                      2 === n.length && i.alt('lineAlign', n[1], ['start', ea, 'end']);
14961                    break;
14962                  case 'position':
14963                    (n = e.split(',')),
14964                      i.percent(t, n[0]),
14965                      2 === n.length &&
14966                        i.alt('positionAlign', n[1], ['start', ea, 'end', 'line-left', 'line-right', 'auto']);
14967                    break;
14968                  case 'size':
14969                    i.percent(t, e);
14970                    break;
14971                  case 'align':
14972                    i.alt(t, e, ['start', ea, 'end', 'left', 'right']);
14973                }
14974              },
14975              /:/,
14976              /\s/,
14977            ),
14978              (e.region = i.get('region', null)),
14979              (e.vertical = i.get('vertical', ''));
14980            var n = i.get('line', 'auto');
14981            'auto' === n && -1 === ta.line && (n = -1),
14982              (e.line = n),
14983              (e.lineAlign = i.get('lineAlign', 'start')),
14984              (e.snapToLines = i.get('snapToLines', !0)),
14985              (e.size = i.get('size', 100)),
14986              (e.align = i.get('align', ea));
14987            var a = i.get('position', 'auto');
14988            'auto' === a &&
14989              50 === ta.position &&
14990              (a = 'start' === e.align || 'left' === e.align ? 0 : 'end' === e.align || 'right' === e.align ? 100 : 50),
14991              (e.position = a);
14992          })(t, e);
14993      }
14994      function ia(t) {
14995        return t.replace(/<br(?: \/)?>/gi, '\n');
14996      }
14997      var na = (function () {
14998          function t() {
14999            (this.state = 'INITIAL'),
15000              (this.buffer = ''),
15001              (this.decoder = new Qn()),
15002              (this.regionList = []),
15003              (this.cue = null),
15004              (this.oncue = void 0),
15005              (this.onparsingerror = void 0),
15006              (this.onflush = void 0);
15007          }
15008          var e = t.prototype;
15009          return (
15010            (e.parse = function (t) {
15011              var e = this;
15012              function r() {
15013                var t = e.buffer,
15014                  r = 0;
15015                for (t = ia(t); r < t.length && '\r' !== t[r] && '\n' !== t[r]; ) ++r;
15016                var i = t.slice(0, r);
15017                return '\r' === t[r] && ++r, '\n' === t[r] && ++r, (e.buffer = t.slice(r)), i;
15018              }
15019              t && (e.buffer += e.decoder.decode(t, { stream: !0 }));
15020              try {
15021                var i = '';
15022                if ('INITIAL' === e.state) {
15023                  if (!/\r\n|\n/.test(e.buffer)) return this;
15024                  var n = (i = r()).match(/^()?WEBVTT([ \t].*)?$/);
15025                  if (null == n || !n[0]) throw new Error('Malformed WebVTT signature.');
15026                  e.state = 'HEADER';
15027                }
15028                for (var a = !1; e.buffer; ) {
15029                  if (!/\r\n|\n/.test(e.buffer)) return this;
15030                  switch ((a ? (a = !1) : (i = r()), e.state)) {
15031                    case 'HEADER':
15032                      /:/.test(i) ? Zn(i, function (t, e) {}, /:/) : i || (e.state = 'ID');
15033                      continue;
15034                    case 'NOTE':
15035                      i || (e.state = 'ID');
15036                      continue;
15037                    case 'ID':
15038                      if (/^NOTE($|[ \t])/.test(i)) {
15039                        e.state = 'NOTE';
15040                        break;
15041                      }
15042                      if (!i) continue;
15043                      if (((e.cue = new zn(0, 0, '')), (e.state = 'CUE'), -1 === i.indexOf('--\x3e'))) {
15044                        e.cue.id = i;
15045                        continue;
15046                      }
15047                    case 'CUE':
15048                      if (!e.cue) {
15049                        e.state = 'BADCUE';
15050                        continue;
15051                      }
15052                      try {
15053                        ra(i, e.cue, e.regionList);
15054                      } catch (t) {
15055                        (e.cue = null), (e.state = 'BADCUE');
15056                        continue;
15057                      }
15058                      e.state = 'CUETEXT';
15059                      continue;
15060                    case 'CUETEXT':
15061                      var s = -1 !== i.indexOf('--\x3e');
15062                      if (!i || (s && (a = !0))) {
15063                        e.oncue && e.cue && e.oncue(e.cue), (e.cue = null), (e.state = 'ID');
15064                        continue;
15065                      }
15066                      if (null === e.cue) continue;
15067                      e.cue.text && (e.cue.text += '\n'), (e.cue.text += i);
15068                      continue;
15069                    case 'BADCUE':
15070                      i || (e.state = 'ID');
15071                  }
15072                }
15073              } catch (t) {
15074                'CUETEXT' === e.state && e.cue && e.oncue && e.oncue(e.cue),
15075                  (e.cue = null),
15076                  (e.state = 'INITIAL' === e.state ? 'BADWEBVTT' : 'BADCUE');
15077              }
15078              return this;
15079            }),
15080            (e.flush = function () {
15081              var t = this;
15082              try {
15083                if (
15084                  ((t.cue || 'HEADER' === t.state) && ((t.buffer += '\n\n'), t.parse()),
15085                  'INITIAL' === t.state || 'BADWEBVTT' === t.state)
15086                )
15087                  throw new Error('Malformed WebVTT signature.');
15088              } catch (e) {
15089                t.onparsingerror && t.onparsingerror(e);
15090              }
15091              return t.onflush && t.onflush(), this;
15092            }),
15093            t
15094          );
15095        })(),
15096        aa = /\r\n|\n\r|\n|\r/g,
15097        sa = function (t, e, r) {
15098          return void 0 === r && (r = 0), t.slice(r, r + e.length) === e;
15099        },
15100        oa = function (t) {
15101          for (var e = 5381, r = t.length; r; ) e = (33 * e) ^ t.charCodeAt(--r);
15102          return (e >>> 0).toString();
15103        };
15104      function la(t, e, r) {
15105        return oa(t.toString()) + oa(e.toString()) + oa(r);
15106      }
15107      function ua(t, e, r, i, n, a, s) {
15108        var o,
15109          l,
15110          u,
15111          h = new na(),
15112          d = pt(new Uint8Array(t)).trim().replace(aa, '\n').split('\n'),
15113          c = [],
15114          f = e ? ((o = e.baseTime), void 0 === (l = e.timescale) && (l = 1), Ui(o, 9e4, 1 / l)) : 0,
15115          g = '00:00.000',
15116          v = 0,
15117          m = 0,
15118          p = !0;
15119        (h.oncue = function (t) {
15120          var a = r[i],
15121            s = r.ccOffset,
15122            o = (v - f) / 9e4;
15123          if (
15124            (null != a &&
15125              a.new &&
15126              (void 0 !== m
15127                ? (s = r.ccOffset = a.start)
15128                : (function (t, e, r) {
15129                    var i = t[e],
15130                      n = t[i.prevCC];
15131                    if (!n || (!n.new && i.new))
15132                      return (t.ccOffset = t.presentationOffset = i.start), void (i.new = !1);
15133                    for (; null != (a = n) && a.new; ) {
15134                      var a;
15135                      (t.ccOffset += i.start - n.start), (i.new = !1), (n = t[(i = n).prevCC]);
15136                    }
15137                    t.presentationOffset = r;
15138                  })(r, i, o)),
15139            o)
15140          ) {
15141            if (!e) return void (u = new Error('Missing initPTS for VTT MPEGTS'));
15142            s = o - r.presentationOffset;
15143          }
15144          var l = t.endTime - t.startTime,
15145            h = Vi(9e4 * (t.startTime + s - m), 9e4 * n) / 9e4;
15146          (t.startTime = Math.max(h, 0)), (t.endTime = Math.max(h + l, 0));
15147          var d = t.text.trim();
15148          (t.text = decodeURIComponent(encodeURIComponent(d))),
15149            t.id || (t.id = la(t.startTime, t.endTime, d)),
15150            t.endTime > 0 && c.push(t);
15151        }),
15152          (h.onparsingerror = function (t) {
15153            u = t;
15154          }),
15155          (h.onflush = function () {
15156            u ? s(u) : a(c);
15157          }),
15158          d.forEach(function (t) {
15159            if (p) {
15160              if (sa(t, 'X-TIMESTAMP-MAP=')) {
15161                (p = !1),
15162                  t
15163                    .slice(16)
15164                    .split(',')
15165                    .forEach(function (t) {
15166                      sa(t, 'LOCAL:') ? (g = t.slice(6)) : sa(t, 'MPEGTS:') && (v = parseInt(t.slice(7)));
15167                    });
15168                try {
15169                  m =
15170                    (function (t) {
15171                      var e = parseInt(t.slice(-3)),
15172                        r = parseInt(t.slice(-6, -4)),
15173                        i = parseInt(t.slice(-9, -7)),
15174                        n = t.length > 9 ? parseInt(t.substring(0, t.indexOf(':'))) : 0;
15175                      if (!(E(e) && E(r) && E(i) && E(n))) throw Error('Malformed X-TIMESTAMP-MAP: Local:' + t);
15176                      return (e += 1e3 * r), (e += 6e4 * i) + 36e5 * n;
15177                    })(g) / 1e3;
15178                } catch (t) {
15179                  u = t;
15180                }
15181                return;
15182              }
15183              '' === t && (p = !1);
15184            }
15185            h.parse(t + '\n');
15186          }),
15187          h.flush();
15188      }
15189      var ha = 'stpp.ttml.im1t',
15190        da = /^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,
15191        ca = /^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,
15192        fa = { left: 'start', center: 'center', right: 'end', start: 'start', end: 'end' };
15193      function ga(t, e, r, i) {
15194        var n = It(new Uint8Array(t), ['mdat']);
15195        if (0 !== n.length) {
15196          var a,
15197            s,
15198            l,
15199            u,
15200            h = n.map(function (t) {
15201              return pt(t);
15202            }),
15203            d =
15204              ((a = e.baseTime),
15205              (s = 1),
15206              void 0 === (l = e.timescale) && (l = 1),
15207              void 0 === u && (u = !1),
15208              Ui(a, s, 1 / l, u));
15209          try {
15210            h.forEach(function (t) {
15211              return r(
15212                (function (t, e) {
15213                  var r = new DOMParser().parseFromString(t, 'text/xml').getElementsByTagName('tt')[0];
15214                  if (!r) throw new Error('Invalid ttml');
15215                  var i = { frameRate: 30, subFrameRate: 1, frameRateMultiplier: 0, tickRate: 0 },
15216                    n = Object.keys(i).reduce(function (t, e) {
15217                      return (t[e] = r.getAttribute('ttp:' + e) || i[e]), t;
15218                    }, {}),
15219                    a = 'preserve' !== r.getAttribute('xml:space'),
15220                    s = ma(va(r, 'styling', 'style')),
15221                    l = ma(va(r, 'layout', 'region')),
15222                    u = va(r, 'body', '[begin]');
15223                  return [].map
15224                    .call(u, function (t) {
15225                      var r = pa(t, a);
15226                      if (!r || !t.hasAttribute('begin')) return null;
15227                      var i = Ea(t.getAttribute('begin'), n),
15228                        u = Ea(t.getAttribute('dur'), n),
15229                        h = Ea(t.getAttribute('end'), n);
15230                      if (null === i) throw Ta(t);
15231                      if (null === h) {
15232                        if (null === u) throw Ta(t);
15233                        h = i + u;
15234                      }
15235                      var d = new zn(i - e, h - e, r);
15236                      d.id = la(d.startTime, d.endTime, d.text);
15237                      var c = (function (t, e, r) {
15238                          var i = 'http://www.w3.org/ns/ttml#styling',
15239                            n = null,
15240                            a = ['displayAlign', 'textAlign', 'color', 'backgroundColor', 'fontSize', 'fontFamily'],
15241                            s = null != t && t.hasAttribute('style') ? t.getAttribute('style') : null;
15242                          return (
15243                            s && r.hasOwnProperty(s) && (n = r[s]),
15244                            a.reduce(function (r, a) {
15245                              var s = ya(e, i, a) || ya(t, i, a) || ya(n, i, a);
15246                              return s && (r[a] = s), r;
15247                            }, {})
15248                          );
15249                        })(l[t.getAttribute('region')], s[t.getAttribute('style')], s),
15250                        f = c.textAlign;
15251                      if (f) {
15252                        var g = fa[f];
15253                        g && (d.lineAlign = g), (d.align = f);
15254                      }
15255                      return o(d, c), d;
15256                    })
15257                    .filter(function (t) {
15258                      return null !== t;
15259                    });
15260                })(t, d),
15261              );
15262            });
15263          } catch (t) {
15264            i(t);
15265          }
15266        } else i(new Error('Could not parse IMSC1 mdat'));
15267      }
15268      function va(t, e, r) {
15269        var i = t.getElementsByTagName(e)[0];
15270        return i ? [].slice.call(i.querySelectorAll(r)) : [];
15271      }
15272      function ma(t) {
15273        return t.reduce(function (t, e) {
15274          var r = e.getAttribute('xml:id');
15275          return r && (t[r] = e), t;
15276        }, {});
15277      }
15278      function pa(t, e) {
15279        return [].slice.call(t.childNodes).reduce(function (t, r, i) {
15280          var n;
15281          return 'br' === r.nodeName && i
15282            ? t + '\n'
15283            : null != (n = r.childNodes) && n.length
15284            ? pa(r, e)
15285            : e
15286            ? t + r.textContent.trim().replace(/\s+/g, ' ')
15287            : t + r.textContent;
15288        }, '');
15289      }
15290      function ya(t, e, r) {
15291        return t && t.hasAttributeNS(e, r) ? t.getAttributeNS(e, r) : null;
15292      }
15293      function Ta(t) {
15294        return new Error('Could not parse ttml timestamp ' + t);
15295      }
15296      function Ea(t, e) {
15297        if (!t) return null;
15298        var r = $n(t);
15299        return (
15300          null === r &&
15301            (da.test(t)
15302              ? (r = (function (t, e) {
15303                  var r = da.exec(t),
15304                    i = (0 | r[4]) + (0 | r[5]) / e.subFrameRate;
15305                  return 3600 * (0 | r[1]) + 60 * (0 | r[2]) + (0 | r[3]) + i / e.frameRate;
15306                })(t, e))
15307              : ca.test(t) &&
15308                (r = (function (t, e) {
15309                  var r = ca.exec(t),
15310                    i = Number(r[1]);
15311                  switch (r[2]) {
15312                    case 'h':
15313                      return 3600 * i;
15314                    case 'm':
15315                      return 60 * i;
15316                    case 'ms':
15317                      return 1e3 * i;
15318                    case 'f':
15319                      return i / e.frameRate;
15320                    case 't':
15321                      return i / e.tickRate;
15322                  }
15323                  return i;
15324                })(t, e))),
15325          r
15326        );
15327      }
15328      var Sa = (function () {
15329        function t(t) {
15330          if (
15331            ((this.hls = void 0),
15332            (this.media = null),
15333            (this.config = void 0),
15334            (this.enabled = !0),
15335            (this.Cues = void 0),
15336            (this.textTracks = []),
15337            (this.tracks = []),
15338            (this.initPTS = []),
15339            (this.unparsedVttFrags = []),
15340            (this.captionsTracks = {}),
15341            (this.nonNativeCaptionsTracks = {}),
15342            (this.cea608Parser1 = void 0),
15343            (this.cea608Parser2 = void 0),
15344            (this.lastSn = -1),
15345            (this.lastPartIndex = -1),
15346            (this.prevCC = -1),
15347            (this.vttCCs = { ccOffset: 0, presentationOffset: 0, 0: { start: 0, prevCC: -1, new: !0 } }),
15348            (this.captionsProperties = void 0),
15349            (this.hls = t),
15350            (this.config = t.config),
15351            (this.Cues = t.config.cueHandler),
15352            (this.captionsProperties = {
15353              textTrack1: {
15354                label: this.config.captionsTextTrack1Label,
15355                languageCode: this.config.captionsTextTrack1LanguageCode,
15356              },
15357              textTrack2: {
15358                label: this.config.captionsTextTrack2Label,
15359                languageCode: this.config.captionsTextTrack2LanguageCode,
15360              },
15361              textTrack3: {
15362                label: this.config.captionsTextTrack3Label,
15363                languageCode: this.config.captionsTextTrack3LanguageCode,
15364              },
15365              textTrack4: {
15366                label: this.config.captionsTextTrack4Label,
15367                languageCode: this.config.captionsTextTrack4LanguageCode,
15368              },
15369            }),
15370            this.config.enableCEA708Captions)
15371          ) {
15372            var e = new Xn(this, 'textTrack1'),
15373              r = new Xn(this, 'textTrack2'),
15374              i = new Xn(this, 'textTrack3'),
15375              n = new Xn(this, 'textTrack4');
15376            (this.cea608Parser1 = new Wn(1, e, r)), (this.cea608Parser2 = new Wn(3, i, n));
15377          }
15378          t.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
15379            t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this),
15380            t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
15381            t.on(S.MANIFEST_LOADED, this.onManifestLoaded, this),
15382            t.on(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this),
15383            t.on(S.FRAG_LOADING, this.onFragLoading, this),
15384            t.on(S.FRAG_LOADED, this.onFragLoaded, this),
15385            t.on(S.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this),
15386            t.on(S.FRAG_DECRYPTED, this.onFragDecrypted, this),
15387            t.on(S.INIT_PTS_FOUND, this.onInitPtsFound, this),
15388            t.on(S.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this),
15389            t.on(S.BUFFER_FLUSHING, this.onBufferFlushing, this);
15390        }
15391        var e = t.prototype;
15392        return (
15393          (e.destroy = function () {
15394            var t = this.hls;
15395            t.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
15396              t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this),
15397              t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
15398              t.off(S.MANIFEST_LOADED, this.onManifestLoaded, this),
15399              t.off(S.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this),
15400              t.off(S.FRAG_LOADING, this.onFragLoading, this),
15401              t.off(S.FRAG_LOADED, this.onFragLoaded, this),
15402              t.off(S.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this),
15403              t.off(S.FRAG_DECRYPTED, this.onFragDecrypted, this),
15404              t.off(S.INIT_PTS_FOUND, this.onInitPtsFound, this),
15405              t.off(S.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this),
15406              t.off(S.BUFFER_FLUSHING, this.onBufferFlushing, this),
15407              (this.hls = this.config = this.cea608Parser1 = this.cea608Parser2 = null);
15408          }),
15409          (e.addCues = function (t, e, r, i, n) {
15410            for (var a, s, o, l, u = !1, h = n.length; h--; ) {
15411              var d = n[h],
15412                c = ((a = d[0]), (s = d[1]), (o = e), (l = r), Math.min(s, l) - Math.max(a, o));
15413              if (c >= 0 && ((d[0] = Math.min(d[0], e)), (d[1] = Math.max(d[1], r)), (u = !0), c / (r - e) > 0.5))
15414                return;
15415            }
15416            if ((u || n.push([e, r]), this.config.renderTextTracksNatively)) {
15417              var f = this.captionsTracks[t];
15418              this.Cues.newCue(f, e, r, i);
15419            } else {
15420              var g = this.Cues.newCue(null, e, r, i);
15421              this.hls.trigger(S.CUES_PARSED, { type: 'captions', cues: g, track: t });
15422            }
15423          }),
15424          (e.onInitPtsFound = function (t, e) {
15425            var r = this,
15426              i = e.frag,
15427              n = e.id,
15428              a = e.initPTS,
15429              s = e.timescale,
15430              o = this.unparsedVttFrags;
15431            'main' === n && (this.initPTS[i.cc] = { baseTime: a, timescale: s }),
15432              o.length &&
15433                ((this.unparsedVttFrags = []),
15434                o.forEach(function (t) {
15435                  r.onFragLoaded(S.FRAG_LOADED, t);
15436                }));
15437          }),
15438          (e.getExistingTrack = function (t) {
15439            var e = this.media;
15440            if (e)
15441              for (var r = 0; r < e.textTracks.length; r++) {
15442                var i = e.textTracks[r];
15443                if (i[t]) return i;
15444              }
15445            return null;
15446          }),
15447          (e.createCaptionsTrack = function (t) {
15448            this.config.renderTextTracksNatively ? this.createNativeTrack(t) : this.createNonNativeTrack(t);
15449          }),
15450          (e.createNativeTrack = function (t) {
15451            if (!this.captionsTracks[t]) {
15452              var e = this.captionsProperties,
15453                r = this.captionsTracks,
15454                i = this.media,
15455                n = e[t],
15456                a = n.label,
15457                s = n.languageCode,
15458                o = this.getExistingTrack(t);
15459              if (o) (r[t] = o), Le(r[t]), Ee(r[t], i);
15460              else {
15461                var l = this.createTextTrack('captions', a, s);
15462                l && ((l[t] = !0), (r[t] = l));
15463              }
15464            }
15465          }),
15466          (e.createNonNativeTrack = function (t) {
15467            if (!this.nonNativeCaptionsTracks[t]) {
15468              var e = this.captionsProperties[t];
15469              if (e) {
15470                var r = {
15471                  _id: t,
15472                  label: e.label,
15473                  kind: 'captions',
15474                  default: !!e.media && !!e.media.default,
15475                  closedCaptions: e.media,
15476                };
15477                (this.nonNativeCaptionsTracks[t] = r),
15478                  this.hls.trigger(S.NON_NATIVE_TEXT_TRACKS_FOUND, { tracks: [r] });
15479              }
15480            }
15481          }),
15482          (e.createTextTrack = function (t, e, r) {
15483            var i = this.media;
15484            if (i) return i.addTextTrack(t, e, r);
15485          }),
15486          (e.onMediaAttaching = function (t, e) {
15487            (this.media = e.media), this._cleanTracks();
15488          }),
15489          (e.onMediaDetaching = function () {
15490            var t = this.captionsTracks;
15491            Object.keys(t).forEach(function (e) {
15492              Le(t[e]), delete t[e];
15493            }),
15494              (this.nonNativeCaptionsTracks = {});
15495          }),
15496          (e.onManifestLoading = function () {
15497            (this.lastSn = -1),
15498              (this.lastPartIndex = -1),
15499              (this.prevCC = -1),
15500              (this.vttCCs = { ccOffset: 0, presentationOffset: 0, 0: { start: 0, prevCC: -1, new: !0 } }),
15501              this._cleanTracks(),
15502              (this.tracks = []),
15503              (this.captionsTracks = {}),
15504              (this.nonNativeCaptionsTracks = {}),
15505              (this.textTracks = []),
15506              (this.unparsedVttFrags = []),
15507              (this.initPTS = []),
15508              this.cea608Parser1 && this.cea608Parser2 && (this.cea608Parser1.reset(), this.cea608Parser2.reset());
15509          }),
15510          (e._cleanTracks = function () {
15511            var t = this.media;
15512            if (t) {
15513              var e = t.textTracks;
15514              if (e) for (var r = 0; r < e.length; r++) Le(e[r]);
15515            }
15516          }),
15517          (e.onSubtitleTracksUpdated = function (t, e) {
15518            var r = this,
15519              i = e.subtitleTracks || [],
15520              n = i.some(function (t) {
15521                return t.textCodec === ha;
15522              });
15523            if (this.config.enableWebVTT || (n && this.config.enableIMSC1)) {
15524              if (Tn(this.tracks, i)) return void (this.tracks = i);
15525              if (((this.textTracks = []), (this.tracks = i), this.config.renderTextTracksNatively)) {
15526                var a = this.media ? this.media.textTracks : null;
15527                this.tracks.forEach(function (t, e) {
15528                  var i;
15529                  if (a && e < a.length) {
15530                    for (var n = null, s = 0; s < a.length; s++)
15531                      if (La(a[s], t)) {
15532                        n = a[s];
15533                        break;
15534                      }
15535                    n && (i = n);
15536                  }
15537                  if (i) Le(i);
15538                  else {
15539                    var o = r._captionsOrSubtitlesFromCharacteristics(t);
15540                    (i = r.createTextTrack(o, t.name, t.lang)) && (i.mode = 'disabled');
15541                  }
15542                  i && ((i.groupId = t.groupId), r.textTracks.push(i));
15543                });
15544              } else if (this.tracks.length) {
15545                var s = this.tracks.map(function (t) {
15546                  return { label: t.name, kind: t.type.toLowerCase(), default: t.default, subtitleTrack: t };
15547                });
15548                this.hls.trigger(S.NON_NATIVE_TEXT_TRACKS_FOUND, { tracks: s });
15549              }
15550            }
15551          }),
15552          (e._captionsOrSubtitlesFromCharacteristics = function (t) {
15553            if (t.attrs.CHARACTERISTICS) {
15554              var e = /transcribes-spoken-dialog/gi.test(t.attrs.CHARACTERISTICS),
15555                r = /describes-music-and-sound/gi.test(t.attrs.CHARACTERISTICS);
15556              if (e && r) return 'captions';
15557            }
15558            return 'subtitles';
15559          }),
15560          (e.onManifestLoaded = function (t, e) {
15561            var r = this;
15562            this.config.enableCEA708Captions &&
15563              e.captions &&
15564              e.captions.forEach(function (t) {
15565                var e = /(?:CC|SERVICE)([1-4])/.exec(t.instreamId);
15566                if (e) {
15567                  var i = 'textTrack' + e[1],
15568                    n = r.captionsProperties[i];
15569                  n && ((n.label = t.name), t.lang && (n.languageCode = t.lang), (n.media = t));
15570                }
15571              });
15572          }),
15573          (e.closedCaptionsForLevel = function (t) {
15574            var e = this.hls.levels[t.level];
15575            return null == e ? void 0 : e.attrs['CLOSED-CAPTIONS'];
15576          }),
15577          (e.onFragLoading = function (t, e) {
15578            var r = this.cea608Parser1,
15579              i = this.cea608Parser2,
15580              n = this.lastSn,
15581              a = this.lastPartIndex;
15582            if (this.enabled && r && i && e.frag.type === ge) {
15583              var s,
15584                o,
15585                l = e.frag.sn,
15586                u = null != (s = null == e || null == (o = e.part) ? void 0 : o.index) ? s : -1;
15587              l === n + 1 || (l === n && u === a + 1) || (r.reset(), i.reset()),
15588                (this.lastSn = l),
15589                (this.lastPartIndex = u);
15590            }
15591          }),
15592          (e.onFragLoaded = function (t, e) {
15593            var r = e.frag,
15594              i = e.payload;
15595            if (r.type === me)
15596              if (i.byteLength) {
15597                var n = r.decryptdata,
15598                  a = 'stats' in e;
15599                if (null == n || !n.encrypted || a) {
15600                  var s = this.tracks[r.level],
15601                    o = this.vttCCs;
15602                  o[r.cc] || ((o[r.cc] = { start: r.start, prevCC: this.prevCC, new: !0 }), (this.prevCC = r.cc)),
15603                    s && s.textCodec === ha ? this._parseIMSC1(r, i) : this._parseVTTs(e);
15604                }
15605              } else
15606                this.hls.trigger(S.SUBTITLE_FRAG_PROCESSED, {
15607                  success: !1,
15608                  frag: r,
15609                  error: new Error('Empty subtitle payload'),
15610                });
15611          }),
15612          (e._parseIMSC1 = function (t, e) {
15613            var r = this,
15614              i = this.hls;
15615            ga(
15616              e,
15617              this.initPTS[t.cc],
15618              function (e) {
15619                r._appendCues(e, t.level), i.trigger(S.SUBTITLE_FRAG_PROCESSED, { success: !0, frag: t });
15620              },
15621              function (e) {
15622                w.log('Failed to parse IMSC1: ' + e),
15623                  i.trigger(S.SUBTITLE_FRAG_PROCESSED, { success: !1, frag: t, error: e });
15624              },
15625            );
15626          }),
15627          (e._parseVTTs = function (t) {
15628            var e,
15629              r = this,
15630              i = t.frag,
15631              n = t.payload,
15632              a = this.initPTS,
15633              s = this.unparsedVttFrags,
15634              o = a.length - 1;
15635            if (a[i.cc] || -1 !== o) {
15636              var l = this.hls;
15637              ua(
15638                null != (e = i.initSegment) && e.data ? xt(i.initSegment.data, new Uint8Array(n)) : n,
15639                this.initPTS[i.cc],
15640                this.vttCCs,
15641                i.cc,
15642                i.start,
15643                function (t) {
15644                  r._appendCues(t, i.level), l.trigger(S.SUBTITLE_FRAG_PROCESSED, { success: !0, frag: i });
15645                },
15646                function (e) {
15647                  var a = 'Missing initPTS for VTT MPEGTS' === e.message;
15648                  a ? s.push(t) : r._fallbackToIMSC1(i, n),
15649                    w.log('Failed to parse VTT cue: ' + e),
15650                    (a && o > i.cc) || l.trigger(S.SUBTITLE_FRAG_PROCESSED, { success: !1, frag: i, error: e });
15651                },
15652              );
15653            } else s.push(t);
15654          }),
15655          (e._fallbackToIMSC1 = function (t, e) {
15656            var r = this,
15657              i = this.tracks[t.level];
15658            i.textCodec ||
15659              ga(
15660                e,
15661                this.initPTS[t.cc],
15662                function () {
15663                  (i.textCodec = ha), r._parseIMSC1(t, e);
15664                },
15665                function () {
15666                  i.textCodec = 'wvtt';
15667                },
15668              );
15669          }),
15670          (e._appendCues = function (t, e) {
15671            var r = this.hls;
15672            if (this.config.renderTextTracksNatively) {
15673              var i = this.textTracks[e];
15674              if (!i || 'disabled' === i.mode) return;
15675              t.forEach(function (t) {
15676                return Se(i, t);
15677              });
15678            } else {
15679              var n = this.tracks[e];
15680              if (!n) return;
15681              var a = n.default ? 'default' : 'subtitles' + e;
15682              r.trigger(S.CUES_PARSED, { type: 'subtitles', cues: t, track: a });
15683            }
15684          }),
15685          (e.onFragDecrypted = function (t, e) {
15686            e.frag.type === me && this.onFragLoaded(S.FRAG_LOADED, e);
15687          }),
15688          (e.onSubtitleTracksCleared = function () {
15689            (this.tracks = []), (this.captionsTracks = {});
15690          }),
15691          (e.onFragParsingUserdata = function (t, e) {
15692            var r = this.cea608Parser1,
15693              i = this.cea608Parser2;
15694            if (this.enabled && r && i) {
15695              var n = e.frag,
15696                a = e.samples;
15697              if (n.type !== ge || 'NONE' !== this.closedCaptionsForLevel(n))
15698                for (var s = 0; s < a.length; s++) {
15699                  var o = a[s].bytes;
15700                  if (o) {
15701                    var l = this.extractCea608Data(o);
15702                    r.addData(a[s].pts, l[0]), i.addData(a[s].pts, l[1]);
15703                  }
15704                }
15705            }
15706          }),
15707          (e.onBufferFlushing = function (t, e) {
15708            var r = e.startOffset,
15709              i = e.endOffset,
15710              n = e.endOffsetSubtitles,
15711              a = e.type,
15712              s = this.media;
15713            if (s && !(s.currentTime < i)) {
15714              if (!a || 'video' === a) {
15715                var o = this.captionsTracks;
15716                Object.keys(o).forEach(function (t) {
15717                  return Re(o[t], r, i);
15718                });
15719              }
15720              if (this.config.renderTextTracksNatively && 0 === r && void 0 !== n) {
15721                var l = this.textTracks;
15722                Object.keys(l).forEach(function (t) {
15723                  return Re(l[t], r, n);
15724                });
15725              }
15726            }
15727          }),
15728          (e.extractCea608Data = function (t) {
15729            for (var e = [[], []], r = 31 & t[0], i = 2, n = 0; n < r; n++) {
15730              var a = t[i++],
15731                s = 127 & t[i++],
15732                o = 127 & t[i++];
15733              if ((0 !== s || 0 !== o) && 0 != (4 & a)) {
15734                var l = 3 & a;
15735                (0 !== l && 1 !== l) || (e[l].push(s), e[l].push(o));
15736              }
15737            }
15738            return e;
15739          }),
15740          t
15741        );
15742      })();
15743      function La(t, e) {
15744        return !!t && t.label === e.name && !(t.textTrack1 || t.textTrack2);
15745      }
15746      var Ra = (function () {
15747          function t(t) {
15748            (this.hls = void 0),
15749              (this.autoLevelCapping = void 0),
15750              (this.firstLevel = void 0),
15751              (this.media = void 0),
15752              (this.restrictedLevels = void 0),
15753              (this.timer = void 0),
15754              (this.clientRect = void 0),
15755              (this.streamController = void 0),
15756              (this.hls = t),
15757              (this.autoLevelCapping = Number.POSITIVE_INFINITY),
15758              (this.firstLevel = -1),
15759              (this.media = null),
15760              (this.restrictedLevels = []),
15761              (this.timer = void 0),
15762              (this.clientRect = null),
15763              this.registerListeners();
15764          }
15765          var e = t.prototype;
15766          return (
15767            (e.setStreamController = function (t) {
15768              this.streamController = t;
15769            }),
15770            (e.destroy = function () {
15771              this.unregisterListener(),
15772                this.hls.config.capLevelToPlayerSize && this.stopCapping(),
15773                (this.media = null),
15774                (this.clientRect = null),
15775                (this.hls = this.streamController = null);
15776            }),
15777            (e.registerListeners = function () {
15778              var t = this.hls;
15779              t.on(S.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this),
15780                t.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
15781                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
15782                t.on(S.BUFFER_CODECS, this.onBufferCodecs, this),
15783                t.on(S.MEDIA_DETACHING, this.onMediaDetaching, this);
15784            }),
15785            (e.unregisterListener = function () {
15786              var t = this.hls;
15787              t.off(S.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this),
15788                t.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this),
15789                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
15790                t.off(S.BUFFER_CODECS, this.onBufferCodecs, this),
15791                t.off(S.MEDIA_DETACHING, this.onMediaDetaching, this);
15792            }),
15793            (e.onFpsDropLevelCapping = function (t, e) {
15794              var r = this.hls.levels[e.droppedLevel];
15795              this.isLevelAllowed(r) &&
15796                this.restrictedLevels.push({ bitrate: r.bitrate, height: r.height, width: r.width });
15797            }),
15798            (e.onMediaAttaching = function (t, e) {
15799              (this.media = e.media instanceof HTMLVideoElement ? e.media : null), (this.clientRect = null);
15800            }),
15801            (e.onManifestParsed = function (t, e) {
15802              var r = this.hls;
15803              (this.restrictedLevels = []),
15804                (this.firstLevel = e.firstLevel),
15805                r.config.capLevelToPlayerSize && e.video && this.startCapping();
15806            }),
15807            (e.onBufferCodecs = function (t, e) {
15808              this.hls.config.capLevelToPlayerSize && e.video && this.startCapping();
15809            }),
15810            (e.onMediaDetaching = function () {
15811              this.stopCapping();
15812            }),
15813            (e.detectPlayerSize = function () {
15814              if (this.media && this.mediaHeight > 0 && this.mediaWidth > 0) {
15815                var t = this.hls.levels;
15816                if (t.length) {
15817                  var e = this.hls;
15818                  (e.autoLevelCapping = this.getMaxLevel(t.length - 1)),
15819                    e.autoLevelCapping > this.autoLevelCapping &&
15820                      this.streamController &&
15821                      this.streamController.nextLevelSwitch(),
15822                    (this.autoLevelCapping = e.autoLevelCapping);
15823                }
15824              }
15825            }),
15826            (e.getMaxLevel = function (e) {
15827              var r = this,
15828                i = this.hls.levels;
15829              if (!i.length) return -1;
15830              var n = i.filter(function (t, i) {
15831                return r.isLevelAllowed(t) && i <= e;
15832              });
15833              return (this.clientRect = null), t.getMaxLevelByMediaSize(n, this.mediaWidth, this.mediaHeight);
15834            }),
15835            (e.startCapping = function () {
15836              this.timer ||
15837                ((this.autoLevelCapping = Number.POSITIVE_INFINITY),
15838                (this.hls.firstLevel = this.getMaxLevel(this.firstLevel)),
15839                self.clearInterval(this.timer),
15840                (this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1e3)),
15841                this.detectPlayerSize());
15842            }),
15843            (e.stopCapping = function () {
15844              (this.restrictedLevels = []),
15845                (this.firstLevel = -1),
15846                (this.autoLevelCapping = Number.POSITIVE_INFINITY),
15847                this.timer && (self.clearInterval(this.timer), (this.timer = void 0));
15848            }),
15849            (e.getDimensions = function () {
15850              if (this.clientRect) return this.clientRect;
15851              var t = this.media,
15852                e = { width: 0, height: 0 };
15853              if (t) {
15854                var r = t.getBoundingClientRect();
15855                (e.width = r.width),
15856                  (e.height = r.height),
15857                  e.width ||
15858                    e.height ||
15859                    ((e.width = r.right - r.left || t.width || 0), (e.height = r.bottom - r.top || t.height || 0));
15860              }
15861              return (this.clientRect = e), e;
15862            }),
15863            (e.isLevelAllowed = function (t) {
15864              return !this.restrictedLevels.some(function (e) {
15865                return t.bitrate === e.bitrate && t.width === e.width && t.height === e.height;
15866              });
15867            }),
15868            (t.getMaxLevelByMediaSize = function (t, e, r) {
15869              if (null == t || !t.length) return -1;
15870              for (var i, n, a = t.length - 1, s = 0; s < t.length; s += 1) {
15871                var o = t[s];
15872                if (
15873                  (o.width >= e || o.height >= r) &&
15874                  ((i = o), !(n = t[s + 1]) || i.width !== n.width || i.height !== n.height)
15875                ) {
15876                  a = s;
15877                  break;
15878                }
15879              }
15880              return a;
15881            }),
15882            a(t, [
15883              {
15884                key: 'mediaWidth',
15885                get: function () {
15886                  return this.getDimensions().width * this.contentScaleFactor;
15887                },
15888              },
15889              {
15890                key: 'mediaHeight',
15891                get: function () {
15892                  return this.getDimensions().height * this.contentScaleFactor;
15893                },
15894              },
15895              {
15896                key: 'contentScaleFactor',
15897                get: function () {
15898                  var t = 1;
15899                  if (!this.hls.config.ignoreDevicePixelRatio)
15900                    try {
15901                      t = self.devicePixelRatio;
15902                    } catch (t) {}
15903                  return t;
15904                },
15905              },
15906            ]),
15907            t
15908          );
15909        })(),
15910        Aa = (function () {
15911          function t(t) {
15912            (this.hls = void 0),
15913              (this.isVideoPlaybackQualityAvailable = !1),
15914              (this.timer = void 0),
15915              (this.media = null),
15916              (this.lastTime = void 0),
15917              (this.lastDroppedFrames = 0),
15918              (this.lastDecodedFrames = 0),
15919              (this.streamController = void 0),
15920              (this.hls = t),
15921              this.registerListeners();
15922          }
15923          var e = t.prototype;
15924          return (
15925            (e.setStreamController = function (t) {
15926              this.streamController = t;
15927            }),
15928            (e.registerListeners = function () {
15929              this.hls.on(S.MEDIA_ATTACHING, this.onMediaAttaching, this);
15930            }),
15931            (e.unregisterListeners = function () {
15932              this.hls.off(S.MEDIA_ATTACHING, this.onMediaAttaching, this);
15933            }),
15934            (e.destroy = function () {
15935              this.timer && clearInterval(this.timer),
15936                this.unregisterListeners(),
15937                (this.isVideoPlaybackQualityAvailable = !1),
15938                (this.media = null);
15939            }),
15940            (e.onMediaAttaching = function (t, e) {
15941              var r = this.hls.config;
15942              if (r.capLevelOnFPSDrop) {
15943                var i = e.media instanceof self.HTMLVideoElement ? e.media : null;
15944                (this.media = i),
15945                  i && 'function' == typeof i.getVideoPlaybackQuality && (this.isVideoPlaybackQualityAvailable = !0),
15946                  self.clearInterval(this.timer),
15947                  (this.timer = self.setInterval(this.checkFPSInterval.bind(this), r.fpsDroppedMonitoringPeriod));
15948              }
15949            }),
15950            (e.checkFPS = function (t, e, r) {
15951              var i = performance.now();
15952              if (e) {
15953                if (this.lastTime) {
15954                  var n = i - this.lastTime,
15955                    a = r - this.lastDroppedFrames,
15956                    s = e - this.lastDecodedFrames,
15957                    o = (1e3 * a) / n,
15958                    l = this.hls;
15959                  if (
15960                    (l.trigger(S.FPS_DROP, { currentDropped: a, currentDecoded: s, totalDroppedFrames: r }),
15961                    o > 0 && a > l.config.fpsDroppedMonitoringThreshold * s)
15962                  ) {
15963                    var u = l.currentLevel;
15964                    w.warn('drop FPS ratio greater than max allowed value for currentLevel: ' + u),
15965                      u > 0 &&
15966                        (-1 === l.autoLevelCapping || l.autoLevelCapping >= u) &&
15967                        ((u -= 1),
15968                        l.trigger(S.FPS_DROP_LEVEL_CAPPING, { level: u, droppedLevel: l.currentLevel }),
15969                        (l.autoLevelCapping = u),
15970                        this.streamController.nextLevelSwitch());
15971                  }
15972                }
15973                (this.lastTime = i), (this.lastDroppedFrames = r), (this.lastDecodedFrames = e);
15974              }
15975            }),
15976            (e.checkFPSInterval = function () {
15977              var t = this.media;
15978              if (t)
15979                if (this.isVideoPlaybackQualityAvailable) {
15980                  var e = t.getVideoPlaybackQuality();
15981                  this.checkFPS(t, e.totalVideoFrames, e.droppedVideoFrames);
15982                } else this.checkFPS(t, t.webkitDecodedFrameCount, t.webkitDroppedFrameCount);
15983            }),
15984            t
15985          );
15986        })(),
15987        ka = '[eme]',
15988        ba = (function () {
15989          function t(e) {
15990            (this.hls = void 0),
15991              (this.config = void 0),
15992              (this.media = null),
15993              (this.keyFormatPromise = null),
15994              (this.keySystemAccessPromises = {}),
15995              (this._requestLicenseFailureCount = 0),
15996              (this.mediaKeySessions = []),
15997              (this.keyIdToKeySessionPromise = {}),
15998              (this.setMediaKeysQueue = t.CDMCleanupPromise ? [t.CDMCleanupPromise] : []),
15999              (this.onMediaEncrypted = this._onMediaEncrypted.bind(this)),
16000              (this.onWaitingForKey = this._onWaitingForKey.bind(this)),
16001              (this.debug = w.debug.bind(w, ka)),
16002              (this.log = w.log.bind(w, ka)),
16003              (this.warn = w.warn.bind(w, ka)),
16004              (this.error = w.error.bind(w, ka)),
16005              (this.hls = e),
16006              (this.config = e.config),
16007              this.registerListeners();
16008          }
16009          var e = t.prototype;
16010          return (
16011            (e.destroy = function () {
16012              this.unregisterListeners(), this.onMediaDetached();
16013              var t = this.config;
16014              (t.requestMediaKeySystemAccessFunc = null),
16015                (t.licenseXhrSetup = t.licenseResponseCallback = void 0),
16016                (t.drmSystems = t.drmSystemOptions = {}),
16017                (this.hls = this.onMediaEncrypted = this.onWaitingForKey = this.keyIdToKeySessionPromise = null),
16018                (this.config = null);
16019            }),
16020            (e.registerListeners = function () {
16021              this.hls.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
16022                this.hls.on(S.MEDIA_DETACHED, this.onMediaDetached, this),
16023                this.hls.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
16024                this.hls.on(S.MANIFEST_LOADED, this.onManifestLoaded, this);
16025            }),
16026            (e.unregisterListeners = function () {
16027              this.hls.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
16028                this.hls.off(S.MEDIA_DETACHED, this.onMediaDetached, this),
16029                this.hls.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
16030                this.hls.off(S.MANIFEST_LOADED, this.onManifestLoaded, this);
16031            }),
16032            (e.getLicenseServerUrl = function (t) {
16033              var e = this.config,
16034                r = e.drmSystems,
16035                i = e.widevineLicenseUrl,
16036                n = r[t];
16037              if (n) return n.licenseUrl;
16038              if (t === j.WIDEVINE && i) return i;
16039              throw new Error('no license server URL configured for key-system "' + t + '"');
16040            }),
16041            (e.getServerCertificateUrl = function (t) {
16042              var e = this.config.drmSystems[t];
16043              if (e) return e.serverCertificateUrl;
16044              this.log('No Server Certificate in config.drmSystems["' + t + '"]');
16045            }),
16046            (e.attemptKeySystemAccess = function (t) {
16047              var e = this,
16048                r = this.hls.levels,
16049                i = function (t, e, r) {
16050                  return !!t && r.indexOf(t) === e;
16051                },
16052                n = r
16053                  .map(function (t) {
16054                    return t.audioCodec;
16055                  })
16056                  .filter(i),
16057                a = r
16058                  .map(function (t) {
16059                    return t.videoCodec;
16060                  })
16061                  .filter(i);
16062              return (
16063                n.length + a.length === 0 && a.push('avc1.42e01e'),
16064                new Promise(function (r, i) {
16065                  !(function t(s) {
16066                    var o = s.shift();
16067                    e.getMediaKeysPromise(o, n, a)
16068                      .then(function (t) {
16069                        return r({ keySystem: o, mediaKeys: t });
16070                      })
16071                      .catch(function (e) {
16072                        s.length
16073                          ? t(s)
16074                          : i(
16075                              e instanceof Da
16076                                ? e
16077                                : new Da(
16078                                    { type: L.KEY_SYSTEM_ERROR, details: R.KEY_SYSTEM_NO_ACCESS, error: e, fatal: !0 },
16079                                    e.message,
16080                                  ),
16081                            );
16082                      });
16083                  })(t);
16084                })
16085              );
16086            }),
16087            (e.requestMediaKeySystemAccess = function (t, e) {
16088              var r = this.config.requestMediaKeySystemAccessFunc;
16089              if ('function' != typeof r) {
16090                var i = 'Configured requestMediaKeySystemAccess is not a function ' + r;
16091                return (
16092                  null === et &&
16093                    'http:' === self.location.protocol &&
16094                    (i =
16095                      'navigator.requestMediaKeySystemAccess is not available over insecure protocol ' +
16096                      location.protocol),
16097                  Promise.reject(new Error(i))
16098                );
16099              }
16100              return r(t, e);
16101            }),
16102            (e.getMediaKeysPromise = function (t, e, r) {
16103              var i = this,
16104                n = (function (t, e, r, i) {
16105                  var n;
16106                  switch (t) {
16107                    case j.FAIRPLAY:
16108                      n = ['cenc', 'sinf'];
16109                      break;
16110                    case j.WIDEVINE:
16111                    case j.PLAYREADY:
16112                      n = ['cenc'];
16113                      break;
16114                    case j.CLEARKEY:
16115                      n = ['cenc', 'keyids'];
16116                      break;
16117                    default:
16118                      throw new Error('Unknown key-system: ' + t);
16119                  }
16120                  return (function (t, e, r, i) {
16121                    return [
16122                      {
16123                        initDataTypes: t,
16124                        persistentState: i.persistentState || 'not-allowed',
16125                        distinctiveIdentifier: i.distinctiveIdentifier || 'not-allowed',
16126                        sessionTypes: i.sessionTypes || [i.sessionType || 'temporary'],
16127                        audioCapabilities: e.map(function (t) {
16128                          return {
16129                            contentType: 'audio/mp4; codecs="' + t + '"',
16130                            robustness: i.audioRobustness || '',
16131                            encryptionScheme: i.audioEncryptionScheme || null,
16132                          };
16133                        }),
16134                        videoCapabilities: r.map(function (t) {
16135                          return {
16136                            contentType: 'video/mp4; codecs="' + t + '"',
16137                            robustness: i.videoRobustness || '',
16138                            encryptionScheme: i.videoEncryptionScheme || null,
16139                          };
16140                        }),
16141                      },
16142                    ];
16143                  })(n, e, r, i);
16144                })(t, e, r, this.config.drmSystemOptions),
16145                a = this.keySystemAccessPromises[t],
16146                s = null == a ? void 0 : a.keySystemAccess;
16147              if (!s) {
16148                this.log('Requesting encrypted media "' + t + '" key-system access with config: ' + JSON.stringify(n)),
16149                  (s = this.requestMediaKeySystemAccess(t, n));
16150                var o = (this.keySystemAccessPromises[t] = { keySystemAccess: s });
16151                return (
16152                  s.catch(function (e) {
16153                    i.log('Failed to obtain access to key-system "' + t + '": ' + e);
16154                  }),
16155                  s.then(function (e) {
16156                    i.log('Access for key-system "' + e.keySystem + '" obtained');
16157                    var r = i.fetchServerCertificate(t);
16158                    return (
16159                      i.log('Create media-keys for "' + t + '"'),
16160                      (o.mediaKeys = e.createMediaKeys().then(function (e) {
16161                        return (
16162                          i.log('Media-keys created for "' + t + '"'),
16163                          r.then(function (r) {
16164                            return r ? i.setMediaKeysServerCertificate(e, t, r) : e;
16165                          })
16166                        );
16167                      })),
16168                      o.mediaKeys.catch(function (e) {
16169                        i.error('Failed to create media-keys for "' + t + '"}: ' + e);
16170                      }),
16171                      o.mediaKeys
16172                    );
16173                  })
16174                );
16175              }
16176              return s.then(function () {
16177                return a.mediaKeys;
16178              });
16179            }),
16180            (e.createMediaKeySessionContext = function (t) {
16181              var e = t.decryptdata,
16182                r = t.keySystem,
16183                i = t.mediaKeys;
16184              this.log('Creating key-system session "' + r + '" keyId: ' + Tt(e.keyId || []));
16185              var n = i.createSession(),
16186                a = { decryptdata: e, keySystem: r, mediaKeys: i, mediaKeysSession: n, keyStatus: 'status-pending' };
16187              return this.mediaKeySessions.push(a), a;
16188            }),
16189            (e.renewKeySession = function (t) {
16190              var e = t.decryptdata;
16191              if (e.pssh) {
16192                var r = this.createMediaKeySessionContext(t),
16193                  i = this.getKeyIdString(e);
16194                this.keyIdToKeySessionPromise[i] = this.generateRequestWithPreferredKeySession(
16195                  r,
16196                  'cenc',
16197                  e.pssh,
16198                  'expired',
16199                );
16200              } else this.warn('Could not renew expired session. Missing pssh initData.');
16201              this.removeSession(t);
16202            }),
16203            (e.getKeyIdString = function (t) {
16204              if (!t) throw new Error('Could not read keyId of undefined decryptdata');
16205              if (null === t.keyId) throw new Error('keyId is null');
16206              return Tt(t.keyId);
16207            }),
16208            (e.updateKeySession = function (t, e) {
16209              var r,
16210                i = t.mediaKeysSession;
16211              return (
16212                this.log(
16213                  'Updating key-session "' +
16214                    i.sessionId +
16215                    '" for keyID ' +
16216                    Tt((null == (r = t.decryptdata) ? void 0 : r.keyId) || []) +
16217                    '\n      } (data length: ' +
16218                    (e ? e.byteLength : e) +
16219                    ')',
16220                ),
16221                i.update(e)
16222              );
16223            }),
16224            (e.selectKeySystemFormat = function (t) {
16225              var e = Object.keys(t.levelkeys || {});
16226              return (
16227                this.keyFormatPromise ||
16228                  (this.log(
16229                    'Selecting key-system from fragment (sn: ' +
16230                      t.sn +
16231                      ' ' +
16232                      t.type +
16233                      ': ' +
16234                      t.level +
16235                      ') key formats ' +
16236                      e.join(', '),
16237                  ),
16238                  (this.keyFormatPromise = this.getKeyFormatPromise(e))),
16239                this.keyFormatPromise
16240              );
16241            }),
16242            (e.getKeyFormatPromise = function (t) {
16243              var e = this;
16244              return new Promise(function (r, i) {
16245                var n = tt(e.config),
16246                  a = t.map($).filter(function (t) {
16247                    return !!t && -1 !== n.indexOf(t);
16248                  });
16249                return e
16250                  .getKeySystemSelectionPromise(a)
16251                  .then(function (t) {
16252                    var e = t.keySystem,
16253                      n = Z(e);
16254                    n ? r(n) : i(new Error('Unable to find format for key-system "' + e + '"'));
16255                  })
16256                  .catch(i);
16257              });
16258            }),
16259            (e.loadKey = function (t) {
16260              var e = this,
16261                r = t.keyInfo.decryptdata,
16262                i = this.getKeyIdString(r),
16263                n = '(keyId: ' + i + ' format: "' + r.keyFormat + '" method: ' + r.method + ' uri: ' + r.uri + ')';
16264              this.log('Starting session for key ' + n);
16265              var a = this.keyIdToKeySessionPromise[i];
16266              return (
16267                a ||
16268                  (a = this.keyIdToKeySessionPromise[i] =
16269                    this.getKeySystemForKeyPromise(r).then(function (i) {
16270                      var a = i.keySystem,
16271                        s = i.mediaKeys;
16272                      return (
16273                        e.throwIfDestroyed(),
16274                        e.log(
16275                          'Handle encrypted media sn: ' +
16276                            t.frag.sn +
16277                            ' ' +
16278                            t.frag.type +
16279                            ': ' +
16280                            t.frag.level +
16281                            ' using key ' +
16282                            n,
16283                        ),
16284                        e.attemptSetMediaKeys(a, s).then(function () {
16285                          e.throwIfDestroyed();
16286                          var t = e.createMediaKeySessionContext({ keySystem: a, mediaKeys: s, decryptdata: r });
16287                          return e.generateRequestWithPreferredKeySession(t, 'cenc', r.pssh, 'playlist-key');
16288                        })
16289                      );
16290                    })).catch(function (t) {
16291                    return e.handleError(t);
16292                  }),
16293                a
16294              );
16295            }),
16296            (e.throwIfDestroyed = function (t) {
16297              if (!this.hls) throw new Error('invalid state');
16298            }),
16299            (e.handleError = function (t) {
16300              this.hls &&
16301                (this.error(t.message),
16302                t instanceof Da
16303                  ? this.hls.trigger(S.ERROR, t.data)
16304                  : this.hls.trigger(S.ERROR, {
16305                      type: L.KEY_SYSTEM_ERROR,
16306                      details: R.KEY_SYSTEM_NO_KEYS,
16307                      error: t,
16308                      fatal: !0,
16309                    }));
16310            }),
16311            (e.getKeySystemForKeyPromise = function (t) {
16312              var e = this.getKeyIdString(t),
16313                r = this.keyIdToKeySessionPromise[e];
16314              if (!r) {
16315                var i = $(t.keyFormat),
16316                  n = i ? [i] : tt(this.config);
16317                return this.attemptKeySystemAccess(n);
16318              }
16319              return r;
16320            }),
16321            (e.getKeySystemSelectionPromise = function (t) {
16322              if ((t.length || (t = tt(this.config)), 0 === t.length))
16323                throw new Da(
16324                  { type: L.KEY_SYSTEM_ERROR, details: R.KEY_SYSTEM_NO_CONFIGURED_LICENSE, fatal: !0 },
16325                  'Missing key-system license configuration options ' +
16326                    JSON.stringify({ drmSystems: this.config.drmSystems }),
16327                );
16328              return this.attemptKeySystemAccess(t);
16329            }),
16330            (e._onMediaEncrypted = function (t) {
16331              var e = this,
16332                r = t.initDataType,
16333                i = t.initData;
16334              if ((this.debug('"' + t.type + '" event: init data type: "' + r + '"'), null !== i)) {
16335                var n, a;
16336                if ('sinf' === r && this.config.drmSystems[j.FAIRPLAY]) {
16337                  var s = Rt(new Uint8Array(i));
16338                  try {
16339                    var o = V(JSON.parse(s).sinf),
16340                      l = _t(new Uint8Array(o));
16341                    if (!l) return;
16342                    (n = l.subarray(8, 24)), (a = j.FAIRPLAY);
16343                  } catch (t) {
16344                    return void this.warn('Failed to parse sinf "encrypted" event message initData');
16345                  }
16346                } else {
16347                  var u = (function (t) {
16348                    if (!(t instanceof ArrayBuffer) || t.byteLength < 32) return null;
16349                    var e = { version: 0, systemId: '', kids: null, data: null },
16350                      r = new DataView(t),
16351                      i = r.getUint32(0);
16352                    if (t.byteLength !== i && i > 44) return null;
16353                    if (1886614376 !== r.getUint32(4)) return null;
16354                    if (((e.version = r.getUint32(8) >>> 24), e.version > 1)) return null;
16355                    e.systemId = Tt(new Uint8Array(t, 12, 16));
16356                    var n = r.getUint32(28);
16357                    if (0 === e.version) {
16358                      if (i - 32 < n) return null;
16359                      e.data = new Uint8Array(t, 32, n);
16360                    } else if (1 === e.version) {
16361                      e.kids = [];
16362                      for (var a = 0; a < n; a++) e.kids.push(new Uint8Array(t, 32 + 16 * a, 16));
16363                    }
16364                    return e;
16365                  })(i);
16366                  if (null === u) return;
16367                  0 === u.version && u.systemId === J && u.data && (n = u.data.subarray(8, 24)),
16368                    (a = (function (t) {
16369                      if (t === J) return j.WIDEVINE;
16370                    })(u.systemId));
16371                }
16372                if (a && n) {
16373                  for (
16374                    var h = Tt(n),
16375                      d = this.keyIdToKeySessionPromise,
16376                      c = this.mediaKeySessions,
16377                      f = d[h],
16378                      g = function () {
16379                        var t = c[v],
16380                          a = t.decryptdata;
16381                        if (a.pssh || !a.keyId) return 'continue';
16382                        var s = Tt(a.keyId);
16383                        return h === s || -1 !== a.uri.replace(/-/g, '').indexOf(h)
16384                          ? ((f = d[s]),
16385                            delete d[s],
16386                            (a.pssh = new Uint8Array(i)),
16387                            (a.keyId = n),
16388                            (f = d[h] =
16389                              f.then(function () {
16390                                return e.generateRequestWithPreferredKeySession(t, r, i, 'encrypted-event-key-match');
16391                              })),
16392                            'break')
16393                          : void 0;
16394                      },
16395                      v = 0;
16396                    v < c.length;
16397                    v++
16398                  ) {
16399                    var m = g();
16400                    if ('continue' !== m && 'break' === m) break;
16401                  }
16402                  f ||
16403                    (f = d[h] =
16404                      this.getKeySystemSelectionPromise([a]).then(function (t) {
16405                        var a,
16406                          s = t.keySystem,
16407                          o = t.mediaKeys;
16408                        e.throwIfDestroyed();
16409                        var l = new Gt('ISO-23001-7', h, null != (a = Z(s)) ? a : '');
16410                        return (
16411                          (l.pssh = new Uint8Array(i)),
16412                          (l.keyId = n),
16413                          e.attemptSetMediaKeys(s, o).then(function () {
16414                            e.throwIfDestroyed();
16415                            var t = e.createMediaKeySessionContext({ decryptdata: l, keySystem: s, mediaKeys: o });
16416                            return e.generateRequestWithPreferredKeySession(t, r, i, 'encrypted-event-no-match');
16417                          })
16418                        );
16419                      })),
16420                    f.catch(function (t) {
16421                      return e.handleError(t);
16422                    });
16423                }
16424              }
16425            }),
16426            (e._onWaitingForKey = function (t) {
16427              this.log('"' + t.type + '" event');
16428            }),
16429            (e.attemptSetMediaKeys = function (t, e) {
16430              var r = this,
16431                i = this.setMediaKeysQueue.slice();
16432              this.log('Setting media-keys for "' + t + '"');
16433              var n = Promise.all(i).then(function () {
16434                if (!r.media) throw new Error('Attempted to set mediaKeys without media element attached');
16435                return r.media.setMediaKeys(e);
16436              });
16437              return (
16438                this.setMediaKeysQueue.push(n),
16439                n.then(function () {
16440                  r.log('Media-keys set for "' + t + '"'),
16441                    i.push(n),
16442                    (r.setMediaKeysQueue = r.setMediaKeysQueue.filter(function (t) {
16443                      return -1 === i.indexOf(t);
16444                    }));
16445                })
16446              );
16447            }),
16448            (e.generateRequestWithPreferredKeySession = function (t, e, r, i) {
16449              var n,
16450                a,
16451                s = this,
16452                o = null == (n = this.config.drmSystems) || null == (a = n[t.keySystem]) ? void 0 : a.generateRequest;
16453              if (o)
16454                try {
16455                  var l = o.call(this.hls, e, r, t);
16456                  if (!l) throw new Error('Invalid response from configured generateRequest filter');
16457                  (e = l.initDataType), (r = t.decryptdata.pssh = l.initData ? new Uint8Array(l.initData) : null);
16458                } catch (t) {
16459                  var u;
16460                  if ((this.warn(t.message), null != (u = this.hls) && u.config.debug)) throw t;
16461                }
16462              if (null === r)
16463                return this.log('Skipping key-session request for "' + i + '" (no initData)'), Promise.resolve(t);
16464              var h = this.getKeyIdString(t.decryptdata);
16465              this.log(
16466                'Generating key-session request for "' +
16467                  i +
16468                  '": ' +
16469                  h +
16470                  ' (init data type: ' +
16471                  e +
16472                  ' length: ' +
16473                  (r ? r.byteLength : null) +
16474                  ')',
16475              );
16476              var d = new an();
16477              (t.mediaKeysSession.onmessage = function (e) {
16478                var r = t.mediaKeysSession;
16479                if (r) {
16480                  var i = e.messageType,
16481                    n = e.message;
16482                  s.log('"' + i + '" message event for session "' + r.sessionId + '" message size: ' + n.byteLength),
16483                    'license-request' === i || 'license-renewal' === i
16484                      ? s.renewLicense(t, n).catch(function (t) {
16485                          s.handleError(t), d.emit('error', t);
16486                        })
16487                      : 'license-release' === i
16488                      ? t.keySystem === j.FAIRPLAY && (s.updateKeySession(t, W('acknowledged')), s.removeSession(t))
16489                      : s.warn('unhandled media key message type "' + i + '"');
16490                } else d.emit('error', new Error('invalid state'));
16491              }),
16492                (t.mediaKeysSession.onkeystatuseschange = function (e) {
16493                  if (t.mediaKeysSession) {
16494                    s.onKeyStatusChange(t);
16495                    var r = t.keyStatus;
16496                    d.emit('keyStatus', r),
16497                      'expired' === r && (s.warn(t.keySystem + ' expired for key ' + h), s.renewKeySession(t));
16498                  } else d.emit('error', new Error('invalid state'));
16499                });
16500              var c = new Promise(function (t, e) {
16501                d.on('error', e),
16502                  d.on('keyStatus', function (r) {
16503                    r.startsWith('usable')
16504                      ? t()
16505                      : 'output-restricted' === r
16506                      ? e(
16507                          new Da(
16508                            { type: L.KEY_SYSTEM_ERROR, details: R.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED, fatal: !1 },
16509                            'HDCP level output restricted',
16510                          ),
16511                        )
16512                      : 'internal-error' === r
16513                      ? e(
16514                          new Da(
16515                            { type: L.KEY_SYSTEM_ERROR, details: R.KEY_SYSTEM_STATUS_INTERNAL_ERROR, fatal: !0 },
16516                            'key status changed to "' + r + '"',
16517                          ),
16518                        )
16519                      : 'expired' === r
16520                      ? e(new Error('key expired while generating request'))
16521                      : s.warn('unhandled key status change "' + r + '"');
16522                  });
16523              });
16524              return t.mediaKeysSession
16525                .generateRequest(e, r)
16526                .then(function () {
16527                  var e;
16528                  s.log(
16529                    'Request generated for key-session "' +
16530                      (null == (e = t.mediaKeysSession) ? void 0 : e.sessionId) +
16531                      '" keyId: ' +
16532                      h,
16533                  );
16534                })
16535                .catch(function (t) {
16536                  throw new Da(
16537                    { type: L.KEY_SYSTEM_ERROR, details: R.KEY_SYSTEM_NO_SESSION, error: t, fatal: !1 },
16538                    'Error generating key-session request: ' + t,
16539                  );
16540                })
16541                .then(function () {
16542                  return c;
16543                })
16544                .catch(function (e) {
16545                  throw (d.removeAllListeners(), s.removeSession(t), e);
16546                })
16547                .then(function () {
16548                  return d.removeAllListeners(), t;
16549                });
16550            }),
16551            (e.onKeyStatusChange = function (t) {
16552              var e = this;
16553              t.mediaKeysSession.keyStatuses.forEach(function (r, i) {
16554                e.log(
16555                  'key status change "' +
16556                    r +
16557                    '" for keyStatuses keyId: ' +
16558                    Tt('buffer' in i ? new Uint8Array(i.buffer, i.byteOffset, i.byteLength) : new Uint8Array(i)) +
16559                    ' session keyId: ' +
16560                    Tt(new Uint8Array(t.decryptdata.keyId || [])) +
16561                    ' uri: ' +
16562                    t.decryptdata.uri,
16563                ),
16564                  (t.keyStatus = r);
16565              });
16566            }),
16567            (e.fetchServerCertificate = function (t) {
16568              var e = this.config,
16569                r = new (0, e.loader)(e),
16570                n = this.getServerCertificateUrl(t);
16571              return n
16572                ? (this.log('Fetching serverCertificate for "' + t + '"'),
16573                  new Promise(function (a, s) {
16574                    var o = { responseType: 'arraybuffer', url: n },
16575                      l = e.certLoadPolicy.default,
16576                      u = { loadPolicy: l, timeout: l.maxLoadTimeMs, maxRetry: 0, retryDelay: 0, maxRetryDelay: 0 },
16577                      h = {
16578                        onSuccess: function (t, e, r, i) {
16579                          a(t.data);
16580                        },
16581                        onError: function (e, r, a, l) {
16582                          s(
16583                            new Da(
16584                              {
16585                                type: L.KEY_SYSTEM_ERROR,
16586                                details: R.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
16587                                fatal: !0,
16588                                networkDetails: a,
16589                                response: i({ url: o.url, data: void 0 }, e),
16590                              },
16591                              '"' +
16592                                t +
16593                                '" certificate request failed (' +
16594                                n +
16595                                '). Status: ' +
16596                                e.code +
16597                                ' (' +
16598                                e.text +
16599                                ')',
16600                            ),
16601                          );
16602                        },
16603                        onTimeout: function (e, r, i) {
16604                          s(
16605                            new Da(
16606                              {
16607                                type: L.KEY_SYSTEM_ERROR,
16608                                details: R.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
16609                                fatal: !0,
16610                                networkDetails: i,
16611                                response: { url: o.url, data: void 0 },
16612                              },
16613                              '"' + t + '" certificate request timed out (' + n + ')',
16614                            ),
16615                          );
16616                        },
16617                        onAbort: function (t, e, r) {
16618                          s(new Error('aborted'));
16619                        },
16620                      };
16621                    r.load(o, u, h);
16622                  }))
16623                : Promise.resolve();
16624            }),
16625            (e.setMediaKeysServerCertificate = function (t, e, r) {
16626              var i = this;
16627              return new Promise(function (n, a) {
16628                t.setServerCertificate(r)
16629                  .then(function (a) {
16630                    i.log(
16631                      'setServerCertificate ' +
16632                        (a ? 'success' : 'not supported by CDM') +
16633                        ' (' +
16634                        (null == r ? void 0 : r.byteLength) +
16635                        ') on "' +
16636                        e +
16637                        '"',
16638                    ),
16639                      n(t);
16640                  })
16641                  .catch(function (t) {
16642                    a(
16643                      new Da(
16644                        {
16645                          type: L.KEY_SYSTEM_ERROR,
16646                          details: R.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,
16647                          error: t,
16648                          fatal: !0,
16649                        },
16650                        t.message,
16651                      ),
16652                    );
16653                  });
16654              });
16655            }),
16656            (e.renewLicense = function (t, e) {
16657              var r = this;
16658              return this.requestLicense(t, new Uint8Array(e)).then(function (e) {
16659                return r.updateKeySession(t, new Uint8Array(e)).catch(function (t) {
16660                  throw new Da(
16661                    { type: L.KEY_SYSTEM_ERROR, details: R.KEY_SYSTEM_SESSION_UPDATE_FAILED, error: t, fatal: !0 },
16662                    t.message,
16663                  );
16664                });
16665              });
16666            }),
16667            (e.setupLicenseXHR = function (t, e, r, i) {
16668              var n = this,
16669                a = this.config.licenseXhrSetup;
16670              return a
16671                ? Promise.resolve()
16672                    .then(function () {
16673                      if (!r.decryptdata) throw new Error('Key removed');
16674                      return a.call(n.hls, t, e, r, i);
16675                    })
16676                    .catch(function (s) {
16677                      if (!r.decryptdata) throw s;
16678                      return t.open('POST', e, !0), a.call(n.hls, t, e, r, i);
16679                    })
16680                    .then(function (r) {
16681                      return t.readyState || t.open('POST', e, !0), { xhr: t, licenseChallenge: r || i };
16682                    })
16683                : (t.open('POST', e, !0), Promise.resolve({ xhr: t, licenseChallenge: i }));
16684            }),
16685            (e.requestLicense = function (t, e) {
16686              var r = this,
16687                i = this.config.keyLoadPolicy.default;
16688              return new Promise(function (n, a) {
16689                var s = r.getLicenseServerUrl(t.keySystem);
16690                r.log('Sending license request to URL: ' + s);
16691                var o = new XMLHttpRequest();
16692                (o.responseType = 'arraybuffer'),
16693                  (o.onreadystatechange = function () {
16694                    if (!r.hls || !t.mediaKeysSession) return a(new Error('invalid state'));
16695                    if (4 === o.readyState)
16696                      if (200 === o.status) {
16697                        r._requestLicenseFailureCount = 0;
16698                        var l = o.response;
16699                        r.log('License received ' + (l instanceof ArrayBuffer ? l.byteLength : l));
16700                        var u = r.config.licenseResponseCallback;
16701                        if (u)
16702                          try {
16703                            l = u.call(r.hls, o, s, t);
16704                          } catch (t) {
16705                            r.error(t);
16706                          }
16707                        n(l);
16708                      } else {
16709                        var h = i.errorRetry,
16710                          d = h ? h.maxNumRetry : 0;
16711                        if (
16712                          (r._requestLicenseFailureCount++,
16713                          r._requestLicenseFailureCount > d || (o.status >= 400 && o.status < 500))
16714                        )
16715                          a(
16716                            new Da(
16717                              {
16718                                type: L.KEY_SYSTEM_ERROR,
16719                                details: R.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
16720                                fatal: !0,
16721                                networkDetails: o,
16722                                response: { url: s, data: void 0, code: o.status, text: o.statusText },
16723                              },
16724                              'License Request XHR failed (' + s + '). Status: ' + o.status + ' (' + o.statusText + ')',
16725                            ),
16726                          );
16727                        else {
16728                          var c = d - r._requestLicenseFailureCount + 1;
16729                          r.warn('Retrying license request, ' + c + ' attempts left'),
16730                            r.requestLicense(t, e).then(n, a);
16731                        }
16732                      }
16733                  }),
16734                  t.licenseXhr && t.licenseXhr.readyState !== XMLHttpRequest.DONE && t.licenseXhr.abort(),
16735                  (t.licenseXhr = o),
16736                  r.setupLicenseXHR(o, s, t, e).then(function (t) {
16737                    var e = t.xhr,
16738                      r = t.licenseChallenge;
16739                    e.send(r);
16740                  });
16741              });
16742            }),
16743            (e.onMediaAttached = function (t, e) {
16744              if (this.config.emeEnabled) {
16745                var r = e.media;
16746                (this.media = r),
16747                  r.addEventListener('encrypted', this.onMediaEncrypted),
16748                  r.addEventListener('waitingforkey', this.onWaitingForKey);
16749              }
16750            }),
16751            (e.onMediaDetached = function () {
16752              var e = this,
16753                r = this.media,
16754                i = this.mediaKeySessions;
16755              r &&
16756                (r.removeEventListener('encrypted', this.onMediaEncrypted),
16757                r.removeEventListener('waitingforkey', this.onWaitingForKey),
16758                (this.media = null)),
16759                (this._requestLicenseFailureCount = 0),
16760                (this.setMediaKeysQueue = []),
16761                (this.mediaKeySessions = []),
16762                (this.keyIdToKeySessionPromise = {}),
16763                Gt.clearKeyUriToKeyIdMap();
16764              var n = i.length;
16765              t.CDMCleanupPromise = Promise.all(
16766                i
16767                  .map(function (t) {
16768                    return e.removeSession(t);
16769                  })
16770                  .concat(
16771                    null == r
16772                      ? void 0
16773                      : r.setMediaKeys(null).catch(function (t) {
16774                          e.log('Could not clear media keys: ' + t + '. media.src: ' + (null == r ? void 0 : r.src));
16775                        }),
16776                  ),
16777              )
16778                .then(function () {
16779                  n && (e.log('finished closing key sessions and clearing media keys'), (i.length = 0));
16780                })
16781                .catch(function (t) {
16782                  e.log(
16783                    'Could not close sessions and clear media keys: ' +
16784                      t +
16785                      '. media.src: ' +
16786                      (null == r ? void 0 : r.src),
16787                  );
16788                });
16789            }),
16790            (e.onManifestLoading = function () {
16791              this.keyFormatPromise = null;
16792            }),
16793            (e.onManifestLoaded = function (t, e) {
16794              var r = e.sessionKeys;
16795              if (r && this.config.emeEnabled && !this.keyFormatPromise) {
16796                var i = r.reduce(function (t, e) {
16797                  return -1 === t.indexOf(e.keyFormat) && t.push(e.keyFormat), t;
16798                }, []);
16799                this.log('Selecting key-system from session-keys ' + i.join(', ')),
16800                  (this.keyFormatPromise = this.getKeyFormatPromise(i));
16801              }
16802            }),
16803            (e.removeSession = function (t) {
16804              var e = this,
16805                r = t.mediaKeysSession,
16806                i = t.licenseXhr;
16807              if (r) {
16808                this.log('Remove licenses and keys and close session ' + r.sessionId),
16809                  (r.onmessage = null),
16810                  (r.onkeystatuseschange = null),
16811                  i && i.readyState !== XMLHttpRequest.DONE && i.abort(),
16812                  (t.mediaKeysSession = t.decryptdata = t.licenseXhr = void 0);
16813                var n = this.mediaKeySessions.indexOf(t);
16814                return (
16815                  n > -1 && this.mediaKeySessions.splice(n, 1),
16816                  r
16817                    .remove()
16818                    .catch(function (t) {
16819                      e.log('Could not remove session: ' + t);
16820                    })
16821                    .then(function () {
16822                      return r.close();
16823                    })
16824                    .catch(function (t) {
16825                      e.log('Could not close session: ' + t);
16826                    })
16827                );
16828              }
16829            }),
16830            t
16831          );
16832        })();
16833      ba.CDMCleanupPromise = void 0;
16834      var Da = (function (t) {
16835          function e(e, r) {
16836            var i;
16837            return (
16838              ((i = t.call(this, r) || this).data = void 0),
16839              e.error || (e.error = new Error(r)),
16840              (i.data = e),
16841              (e.err = e.error),
16842              i
16843            );
16844          }
16845          return l(e, t), e;
16846        })(f(Error)),
16847        Ia = 'm',
16848        wa = 'a',
16849        Ca = 'v',
16850        _a = 'av',
16851        Pa = 'i',
16852        xa = 'tt',
16853        Fa = (function () {
16854          function t(e) {
16855            var r = this;
16856            (this.hls = void 0),
16857              (this.config = void 0),
16858              (this.media = void 0),
16859              (this.sid = void 0),
16860              (this.cid = void 0),
16861              (this.useHeaders = !1),
16862              (this.initialized = !1),
16863              (this.starved = !1),
16864              (this.buffering = !0),
16865              (this.audioBuffer = void 0),
16866              (this.videoBuffer = void 0),
16867              (this.onWaiting = function () {
16868                r.initialized && (r.starved = !0), (r.buffering = !0);
16869              }),
16870              (this.onPlaying = function () {
16871                r.initialized || (r.initialized = !0), (r.buffering = !1);
16872              }),
16873              (this.applyPlaylistData = function (t) {
16874                try {
16875                  r.apply(t, { ot: Ia, su: !r.initialized });
16876                } catch (t) {
16877                  w.warn('Could not generate manifest CMCD data.', t);
16878                }
16879              }),
16880              (this.applyFragmentData = function (t) {
16881                try {
16882                  var e = t.frag,
16883                    i = r.hls.levels[e.level],
16884                    n = r.getObjectType(e),
16885                    a = { d: 1e3 * e.duration, ot: n };
16886                  (n !== Ca && n !== wa && n != _a) ||
16887                    ((a.br = i.bitrate / 1e3), (a.tb = r.getTopBandwidth(n) / 1e3), (a.bl = r.getBufferLength(n))),
16888                    r.apply(t, a);
16889                } catch (t) {
16890                  w.warn('Could not generate segment CMCD data.', t);
16891                }
16892              }),
16893              (this.hls = e);
16894            var i = (this.config = e.config),
16895              n = i.cmcd;
16896            null != n &&
16897              ((i.pLoader = this.createPlaylistLoader()),
16898              (i.fLoader = this.createFragmentLoader()),
16899              (this.sid = n.sessionId || t.uuid()),
16900              (this.cid = n.contentId),
16901              (this.useHeaders = !0 === n.useHeaders),
16902              this.registerListeners());
16903          }
16904          var e = t.prototype;
16905          return (
16906            (e.registerListeners = function () {
16907              var t = this.hls;
16908              t.on(S.MEDIA_ATTACHED, this.onMediaAttached, this),
16909                t.on(S.MEDIA_DETACHED, this.onMediaDetached, this),
16910                t.on(S.BUFFER_CREATED, this.onBufferCreated, this);
16911            }),
16912            (e.unregisterListeners = function () {
16913              var t = this.hls;
16914              t.off(S.MEDIA_ATTACHED, this.onMediaAttached, this),
16915                t.off(S.MEDIA_DETACHED, this.onMediaDetached, this),
16916                t.off(S.BUFFER_CREATED, this.onBufferCreated, this);
16917            }),
16918            (e.destroy = function () {
16919              this.unregisterListeners(),
16920                this.onMediaDetached(),
16921                (this.hls = this.config = this.audioBuffer = this.videoBuffer = null);
16922            }),
16923            (e.onMediaAttached = function (t, e) {
16924              (this.media = e.media),
16925                this.media.addEventListener('waiting', this.onWaiting),
16926                this.media.addEventListener('playing', this.onPlaying);
16927            }),
16928            (e.onMediaDetached = function () {
16929              this.media &&
16930                (this.media.removeEventListener('waiting', this.onWaiting),
16931                this.media.removeEventListener('playing', this.onPlaying),
16932                (this.media = null));
16933            }),
16934            (e.onBufferCreated = function (t, e) {
16935              var r, i;
16936              (this.audioBuffer = null == (r = e.tracks.audio) ? void 0 : r.buffer),
16937                (this.videoBuffer = null == (i = e.tracks.video) ? void 0 : i.buffer);
16938            }),
16939            (e.createData = function () {
16940              var t;
16941              return {
16942                v: 1,
16943                sf: 'h',
16944                sid: this.sid,
16945                cid: this.cid,
16946                pr: null == (t = this.media) ? void 0 : t.playbackRate,
16947                mtp: this.hls.bandwidthEstimate / 1e3,
16948              };
16949            }),
16950            (e.apply = function (e, r) {
16951              void 0 === r && (r = {}), o(r, this.createData());
16952              var i = r.ot === Pa || r.ot === Ca || r.ot === _a;
16953              if (
16954                (this.starved && i && ((r.bs = !0), (r.su = !0), (this.starved = !1)),
16955                null == r.su && (r.su = this.buffering),
16956                this.useHeaders)
16957              ) {
16958                var n = t.toHeaders(r);
16959                if (!Object.keys(n).length) return;
16960                e.headers || (e.headers = {}), o(e.headers, n);
16961              } else {
16962                var a = t.toQuery(r);
16963                if (!a) return;
16964                e.url = t.appendQueryToUri(e.url, a);
16965              }
16966            }),
16967            (e.getObjectType = function (t) {
16968              var e = t.type;
16969              return 'subtitle' === e
16970                ? xa
16971                : 'initSegment' === t.sn
16972                ? Pa
16973                : 'audio' === e
16974                ? wa
16975                : 'main' === e
16976                ? this.hls.audioTracks.length
16977                  ? Ca
16978                  : _a
16979                : void 0;
16980            }),
16981            (e.getTopBandwidth = function (t) {
16982              var e,
16983                r = 0,
16984                i = this.hls;
16985              if (t === wa) e = i.audioTracks;
16986              else {
16987                var n = i.maxAutoLevel,
16988                  a = n > -1 ? n + 1 : i.levels.length;
16989                e = i.levels.slice(0, a);
16990              }
16991              for (var s, o = v(e); !(s = o()).done; ) {
16992                var l = s.value;
16993                l.bitrate > r && (r = l.bitrate);
16994              }
16995              return r > 0 ? r : NaN;
16996            }),
16997            (e.getBufferLength = function (t) {
16998              var e = this.hls.media,
16999                r = t === wa ? this.audioBuffer : this.videoBuffer;
17000              return r && e ? 1e3 * Ir.bufferInfo(r, e.currentTime, this.config.maxBufferHole).len : NaN;
17001            }),
17002            (e.createPlaylistLoader = function () {
17003              var t = this.config.pLoader,
17004                e = this.applyPlaylistData,
17005                r = t || this.config.loader;
17006              return (function () {
17007                function t(t) {
17008                  (this.loader = void 0), (this.loader = new r(t));
17009                }
17010                var i = t.prototype;
17011                return (
17012                  (i.destroy = function () {
17013                    this.loader.destroy();
17014                  }),
17015                  (i.abort = function () {
17016                    this.loader.abort();
17017                  }),
17018                  (i.load = function (t, r, i) {
17019                    e(t), this.loader.load(t, r, i);
17020                  }),
17021                  a(t, [
17022                    {
17023                      key: 'stats',
17024                      get: function () {
17025                        return this.loader.stats;
17026                      },
17027                    },
17028                    {
17029                      key: 'context',
17030                      get: function () {
17031                        return this.loader.context;
17032                      },
17033                    },
17034                  ]),
17035                  t
17036                );
17037              })();
17038            }),
17039            (e.createFragmentLoader = function () {
17040              var t = this.config.fLoader,
17041                e = this.applyFragmentData,
17042                r = t || this.config.loader;
17043              return (function () {
17044                function t(t) {
17045                  (this.loader = void 0), (this.loader = new r(t));
17046                }
17047                var i = t.prototype;
17048                return (
17049                  (i.destroy = function () {
17050                    this.loader.destroy();
17051                  }),
17052                  (i.abort = function () {
17053                    this.loader.abort();
17054                  }),
17055                  (i.load = function (t, r, i) {
17056                    e(t), this.loader.load(t, r, i);
17057                  }),
17058                  a(t, [
17059                    {
17060                      key: 'stats',
17061                      get: function () {
17062                        return this.loader.stats;
17063                      },
17064                    },
17065                    {
17066                      key: 'context',
17067                      get: function () {
17068                        return this.loader.context;
17069                      },
17070                    },
17071                  ]),
17072                  t
17073                );
17074              })();
17075            }),
17076            (t.uuid = function () {
17077              var t = URL.createObjectURL(new Blob()),
17078                e = t.toString();
17079              return URL.revokeObjectURL(t), e.slice(e.lastIndexOf('/') + 1);
17080            }),
17081            (t.serialize = function (t) {
17082              for (
17083                var e,
17084                  r = [],
17085                  i = function (t) {
17086                    return !Number.isNaN(t) && null != t && '' !== t && !1 !== t;
17087                  },
17088                  n = function (t) {
17089                    return Math.round(t);
17090                  },
17091                  a = function (t) {
17092                    return 100 * n(t / 100);
17093                  },
17094                  s = {
17095                    br: n,
17096                    d: n,
17097                    bl: a,
17098                    dl: a,
17099                    mtp: a,
17100                    nor: function (t) {
17101                      return encodeURIComponent(t);
17102                    },
17103                    rtp: a,
17104                    tb: n,
17105                  },
17106                  o = v(Object.keys(t || {}).sort());
17107                !(e = o()).done;
17108
17109              ) {
17110                var l = e.value,
17111                  u = t[l];
17112                if (i(u) && !(('v' === l && 1 === u) || ('pr' == l && 1 === u))) {
17113                  var h = s[l];
17114                  h && (u = h(u));
17115                  var d = typeof u,
17116                    c = void 0;
17117                  (c =
17118                    'ot' === l || 'sf' === l || 'st' === l
17119                      ? l + '=' + u
17120                      : 'boolean' === d
17121                      ? l
17122                      : 'number' === d
17123                      ? l + '=' + u
17124                      : l + '=' + JSON.stringify(u)),
17125                    r.push(c);
17126                }
17127              }
17128              return r.join(',');
17129            }),
17130            (t.toHeaders = function (e) {
17131              for (
17132                var r = {},
17133                  i = ['Object', 'Request', 'Session', 'Status'],
17134                  n = [{}, {}, {}, {}],
17135                  a = {
17136                    br: 0,
17137                    d: 0,
17138                    ot: 0,
17139                    tb: 0,
17140                    bl: 1,
17141                    dl: 1,
17142                    mtp: 1,
17143                    nor: 1,
17144                    nrr: 1,
17145                    su: 1,
17146                    cid: 2,
17147                    pr: 2,
17148                    sf: 2,
17149                    sid: 2,
17150                    st: 2,
17151                    v: 2,
17152                    bs: 3,
17153                    rtp: 3,
17154                  },
17155                  s = 0,
17156                  o = Object.keys(e);
17157                s < o.length;
17158                s++
17159              ) {
17160                var l = o[s];
17161                n[null != a[l] ? a[l] : 1][l] = e[l];
17162              }
17163              for (var u = 0; u < n.length; u++) {
17164                var h = t.serialize(n[u]);
17165                h && (r['CMCD-' + i[u]] = h);
17166              }
17167              return r;
17168            }),
17169            (t.toQuery = function (e) {
17170              return 'CMCD=' + encodeURIComponent(t.serialize(e));
17171            }),
17172            (t.appendQueryToUri = function (t, e) {
17173              if (!e) return t;
17174              var r = t.includes('?') ? '&' : '?';
17175              return '' + t + r + e;
17176            }),
17177            t
17178          );
17179        })(),
17180        Ma = (function () {
17181          function t(t) {
17182            (this.hls = void 0),
17183              (this.log = void 0),
17184              (this.loader = null),
17185              (this.uri = null),
17186              (this.pathwayId = '.'),
17187              (this.pathwayPriority = null),
17188              (this.timeToLoad = 300),
17189              (this.reloadTimer = -1),
17190              (this.updated = 0),
17191              (this.started = !1),
17192              (this.enabled = !0),
17193              (this.levels = null),
17194              (this.audioTracks = null),
17195              (this.subtitleTracks = null),
17196              (this.penalizedPathways = {}),
17197              (this.hls = t),
17198              (this.log = w.log.bind(w, '[content-steering]:')),
17199              this.registerListeners();
17200          }
17201          var e = t.prototype;
17202          return (
17203            (e.registerListeners = function () {
17204              var t = this.hls;
17205              t.on(S.MANIFEST_LOADING, this.onManifestLoading, this),
17206                t.on(S.MANIFEST_LOADED, this.onManifestLoaded, this),
17207                t.on(S.MANIFEST_PARSED, this.onManifestParsed, this),
17208                t.on(S.ERROR, this.onError, this);
17209            }),
17210            (e.unregisterListeners = function () {
17211              var t = this.hls;
17212              t &&
17213                (t.off(S.MANIFEST_LOADING, this.onManifestLoading, this),
17214                t.off(S.MANIFEST_LOADED, this.onManifestLoaded, this),
17215                t.off(S.MANIFEST_PARSED, this.onManifestParsed, this),
17216                t.off(S.ERROR, this.onError, this));
17217            }),
17218            (e.startLoad = function () {
17219              if (((this.started = !0), self.clearTimeout(this.reloadTimer), this.enabled && this.uri))
17220                if (this.updated) {
17221                  var t = Math.max(1e3 * this.timeToLoad - (performance.now() - this.updated), 0);
17222                  this.scheduleRefresh(this.uri, t);
17223                } else this.loadSteeringManifest(this.uri);
17224            }),
17225            (e.stopLoad = function () {
17226              (this.started = !1),
17227                this.loader && (this.loader.destroy(), (this.loader = null)),
17228                self.clearTimeout(this.reloadTimer);
17229            }),
17230            (e.destroy = function () {
17231              this.unregisterListeners(),
17232                this.stopLoad(),
17233                (this.hls = null),
17234                (this.levels = this.audioTracks = this.subtitleTracks = null);
17235            }),
17236            (e.removeLevel = function (t) {
17237              var e = this.levels;
17238              e &&
17239                (this.levels = e.filter(function (e) {
17240                  return e !== t;
17241                }));
17242            }),
17243            (e.onManifestLoading = function () {
17244              this.stopLoad(),
17245                (this.enabled = !0),
17246                (this.timeToLoad = 300),
17247                (this.updated = 0),
17248                (this.uri = null),
17249                (this.pathwayId = '.'),
17250                (this.levels = this.audioTracks = this.subtitleTracks = null);
17251            }),
17252            (e.onManifestLoaded = function (t, e) {
17253              var r = e.contentSteering;
17254              null !== r && ((this.pathwayId = r.pathwayId), (this.uri = r.uri), this.started && this.startLoad());
17255            }),
17256            (e.onManifestParsed = function (t, e) {
17257              (this.audioTracks = e.audioTracks), (this.subtitleTracks = e.subtitleTracks);
17258            }),
17259            (e.onError = function (t, e) {
17260              var r = e.errorAction;
17261              if ((null == r ? void 0 : r.action) === ir && r.flags === sr) {
17262                var i = this.pathwayPriority,
17263                  n = this.pathwayId;
17264                this.penalizedPathways[n] || (this.penalizedPathways[n] = performance.now()),
17265                  !i &&
17266                    this.levels &&
17267                    (i = this.levels.reduce(function (t, e) {
17268                      return -1 === t.indexOf(e.pathwayId) && t.push(e.pathwayId), t;
17269                    }, [])),
17270                  i && i.length > 1 && (this.updatePathwayPriority(i), (r.resolved = this.pathwayId !== n));
17271              }
17272            }),
17273            (e.filterParsedLevels = function (t) {
17274              this.levels = t;
17275              var e = this.getLevelsForPathway(this.pathwayId);
17276              if (0 === e.length) {
17277                var r = t[0].pathwayId;
17278                this.log('No levels found in Pathway ' + this.pathwayId + '. Setting initial Pathway to "' + r + '"'),
17279                  (e = this.getLevelsForPathway(r)),
17280                  (this.pathwayId = r);
17281              }
17282              return e.length !== t.length
17283                ? (this.log('Found ' + e.length + '/' + t.length + ' levels in Pathway "' + this.pathwayId + '"'), e)
17284                : t;
17285            }),
17286            (e.getLevelsForPathway = function (t) {
17287              return null === this.levels
17288                ? []
17289                : this.levels.filter(function (e) {
17290                    return t === e.pathwayId;
17291                  });
17292            }),
17293            (e.updatePathwayPriority = function (t) {
17294              var e;
17295              this.pathwayPriority = t;
17296              var r = this.penalizedPathways,
17297                i = performance.now();
17298              Object.keys(r).forEach(function (t) {
17299                i - r[t] > 3e5 && delete r[t];
17300              });
17301              for (var n = 0; n < t.length; n++) {
17302                var a = t[n];
17303                if (!r[a]) {
17304                  if (a === this.pathwayId) return;
17305                  var s = this.hls.nextLoadLevel,
17306                    o = this.hls.levels[s];
17307                  if ((e = this.getLevelsForPathway(a)).length > 0) {
17308                    this.log('Setting Pathway to "' + a + '"'),
17309                      (this.pathwayId = a),
17310                      this.hls.trigger(S.LEVELS_UPDATED, { levels: e });
17311                    var l = this.hls.levels[s];
17312                    o &&
17313                      l &&
17314                      this.levels &&
17315                      (l.attrs['STABLE-VARIANT-ID'] !== o.attrs['STABLE-VARIANT-ID'] &&
17316                        l.bitrate !== o.bitrate &&
17317                        this.log('Unstable Pathways change from bitrate ' + o.bitrate + ' to ' + l.bitrate),
17318                      (this.hls.nextLoadLevel = s));
17319                    break;
17320                  }
17321                }
17322              }
17323            }),
17324            (e.clonePathways = function (t) {
17325              var e = this,
17326                r = this.levels;
17327              if (r) {
17328                var i = {},
17329                  n = {};
17330                t.forEach(function (t) {
17331                  var a = t.ID,
17332                    s = t['BASE-ID'],
17333                    l = t['URI-REPLACEMENT'];
17334                  if (
17335                    !r.some(function (t) {
17336                      return t.pathwayId === a;
17337                    })
17338                  ) {
17339                    var u = e.getLevelsForPathway(s).map(function (t) {
17340                      var e = o({}, t);
17341                      (e.details = void 0), (e.url = Na(t.uri, t.attrs['STABLE-VARIANT-ID'], 'PER-VARIANT-URIS', l));
17342                      var r = new P(t.attrs);
17343                      r['PATHWAY-ID'] = a;
17344                      var s = r.AUDIO && r.AUDIO + '_clone_' + a,
17345                        u = r.SUBTITLES && r.SUBTITLES + '_clone_' + a;
17346                      s && ((i[r.AUDIO] = s), (r.AUDIO = s)),
17347                        u && ((n[r.SUBTITLES] = u), (r.SUBTITLES = u)),
17348                        (e.attrs = r);
17349                      var h = new Ne(e);
17350                      return dr(h, 'audio', s), dr(h, 'text', u), h;
17351                    });
17352                    r.push.apply(r, u), Oa(e.audioTracks, i, l, a), Oa(e.subt
17352itleTracks, n, l, a);
17353                  }
17354                });
17355              }
17356            }),
17357            (e.loadSteeringManifest = function (t) {
17358              var e,
17359                r = this,
17360                i = this.hls.config,
17361                n = i.loader;
17362              this.loader && this.loader.destroy(), (this.loader = new n(i));
17363              try {
17364                e = new self.URL(t);
17365              } catch (e) {
17366                return (this.enabled = !1), void this.log('Failed to parse Steering Manifest URI: ' + t);
17367              }
17368              if ('data:' !== e.protocol) {
17369                var a = 0 | (this.hls.bandwidthEstimate || i.abrEwmaDefaultEstimate);
17370                e.searchParams.set('_HLS_pathway', this.pathwayId), e.searchParams.set('_HLS_throughput', '' + a);
17371              }
17372              var s = { responseType: 'json', url: e.href },
17373                o = i.steeringManifestLoadPolicy.default,
17374                l = o.errorRetry || o.timeoutRetry || {},
17375                u = {
17376                  loadPolicy: o,
17377                  timeout: o.maxLoadTimeMs,
17378                  maxRetry: l.maxNumRetry || 0,
17379                  retryDelay: l.retryDelayMs || 0,
17380                  maxRetryDelay: l.maxRetryDelayMs || 0,
17381                },
17382                h = {
17383                  onSuccess: function (t, i, n, a) {
17384                    r.log('Loaded steering manifest: "' + e + '"');
17385                    var s = t.data;
17386                    if (1 === s.VERSION) {
17387                      (r.updated = performance.now()), (r.timeToLoad = s.TTL);
17388                      var o = s['RELOAD-URI'],
17389                        l = s['PATHWAY-CLONES'],
17390                        u = s['PATHWAY-PRIORITY'];
17391                      if (o)
17392                        try {
17393                          r.uri = new self.URL(o, e).href;
17394                        } catch (t) {
17395                          return (r.enabled = !1), void r.log('Failed to parse Steering Manifest RELOAD-URI: ' + o);
17396                        }
17397                      r.scheduleRefresh(r.uri || n.url), l && r.clonePathways(l), u && r.updatePathwayPriority(u);
17398                    } else r.log('Steering VERSION ' + s.VERSION + ' not supported!');
17399                  },
17400                  onError: function (t, e, i, n) {
17401                    if (
17402                      (r.log('Error loading steering manifest: ' + t.code + ' ' + t.text + ' (' + e.url + ')'),
17403                      r.stopLoad(),
17404                      410 === t.code)
17405                    )
17406                      return (r.enabled = !1), void r.log('Steering manifest ' + e.url + ' no longer available');
17407                    var a = 1e3 * r.timeToLoad;
17408                    if (429 !== t.code) r.scheduleRefresh(r.uri || e.url, a);
17409                    else {
17410                      var s = r.loader;
17411                      if ('function' == typeof (null == s ? void 0 : s.getResponseHeader)) {
17412                        var o = s.getResponseHeader('Retry-After');
17413                        o && (a = 1e3 * parseFloat(o));
17414                      }
17415                      r.log('Steering manifest ' + e.url + ' rate limited');
17416                    }
17417                  },
17418                  onTimeout: function (t, e, i) {
17419                    r.log('Timeout loading steering manifest (' + e.url + ')'), r.scheduleRefresh(r.uri || e.url);
17420                  },
17421                };
17422              this.log('Requesting steering manifest: ' + e), this.loader.load(s, u, h);
17423            }),
17424            (e.scheduleRefresh = function (t, e) {
17425              var r = this;
17426              void 0 === e && (e = 1e3 * this.timeToLoad),
17427                self.clearTimeout(this.reloadTimer),
17428                (this.reloadTimer = self.setTimeout(function () {
17429                  r.loadSteeringManifest(t);
17430                }, e));
17431            }),
17432            t
17433          );
17434        })();
17435      function Oa(t, e, r, i) {
17436        t &&
17437          Object.keys(e).forEach(function (n) {
17438            var a = t
17439              .filter(function (t) {
17440                return t.groupId === n;
17441              })
17442              .map(function (t) {
17443                var a = o({}, t);
17444                return (
17445                  (a.details = void 0),
17446                  (a.attrs = new P(a.attrs)),
17447                  (a.url = a.attrs.URI = Na(t.url, t.attrs['STABLE-RENDITION-ID'], 'PER-RENDITION-URIS', r)),
17448                  (a.groupId = a.attrs['GROUP-ID'] = e[n]),
17449                  (a.attrs['PATHWAY-ID'] = i),
17450                  a
17451                );
17452              });
17453            t.push.apply(t, a);
17454          });
17455      }
17456      function Na(t, e, r, i) {
17457        var n,
17458          a = i.HOST,
17459          s = i.PARAMS,
17460          o = i[r];
17461        e && (n = null == o ? void 0 : o[e]) && (t = n);
17462        var l = new self.URL(t);
17463        return (
17464          a && !n && (l.host = a),
17465          s &&
17466            Object.keys(s)
17467              .sort()
17468              .forEach(function (t) {
17469                t && l.searchParams.set(t, s[t]);
17470              }),
17471          l.href
17472        );
17473      }
17474      var Ua = /^age:\s*[\d.]+\s*$/im,
17475        Ba = (function () {
17476          function t(t) {
17477            (this.xhrSetup = void 0),
17478              (this.requestTimeout = void 0),
17479              (this.retryTimeout = void 0),
17480              (this.retryDelay = void 0),
17481              (this.config = null),
17482              (this.callbacks = null),
17483              (this.context = void 0),
17484              (this.loader = null),
17485              (this.stats = void 0),
17486              (this.xhrSetup = (t && t.xhrSetup) || null),
17487              (this.stats = new M()),
17488              (this.retryDelay = 0);
17489          }
17490          var e = t.prototype;
17491          return (
17492            (e.destroy = function () {
17493              (this.callbacks = null), this.abortInternal(), (this.loader = null), (this.config = null);
17494            }),
17495            (e.abortInternal = function () {
17496              var t = this.loader;
17497              self.clearTimeout(this.requestTimeout),
17498                self.clearTimeout(this.retryTimeout),
17499                t &&
17500                  ((t.onreadystatechange = null),
17501                  (t.onprogress = null),
17502                  4 !== t.readyState && ((this.stats.aborted = !0), t.abort()));
17503            }),
17504            (e.abort = function () {
17505              var t;
17506              this.abortInternal(),
17507                null != (t = this.callbacks) &&
17508                  t.onAbort &&
17509                  this.callbacks.onAbort(this.stats, this.context, this.loader);
17510            }),
17511            (e.load = function (t, e, r) {
17512              if (this.stats.loading.start) throw new Error('Loader can only be used once.');
17513              (this.stats.loading.start = self.performance.now()),
17514                (this.context = t),
17515                (this.config = e),
17516                (this.callbacks = r),
17517                this.loadInternal();
17518            }),
17519            (e.loadInternal = function () {
17520              var t = this,
17521                e = this.config,
17522                r = this.context;
17523              if (e) {
17524                var i = (this.loader = new self.XMLHttpRequest()),
17525                  n = this.stats;
17526                (n.loading.first = 0), (n.loaded = 0), (n.aborted = !1);
17527                var a = this.xhrSetup;
17528                a
17529                  ? Promise.resolve()
17530                      .then(function () {
17531                        if (!t.stats.aborted) return a(i, r.url);
17532                      })
17533                      .catch(function (t) {
17534                        return i.open('GET', r.url, !0), a(i, r.url);
17535                      })
17536                      .then(function () {
17537                        t.stats.aborted || t.openAndSendXhr(i, r, e);
17538                      })
17539                      .catch(function (e) {
17540                        t.callbacks.onError({ code: i.status, text: e.message }, r, i, n);
17541                      })
17542                  : this.openAndSendXhr(i, r, e);
17543              }
17544            }),
17545            (e.openAndSendXhr = function (t, e, r) {
17546              t.readyState || t.open('GET', e.url, !0);
17547              var i = this.context.headers,
17548                n = r.loadPolicy,
17549                a = n.maxTimeToFirstByteMs,
17550                s = n.maxLoadTimeMs;
17551              if (i) for (var o in i) t.setRequestHeader(o, i[o]);
17552              e.rangeEnd && t.setRequestHeader('Range', 'bytes=' + e.rangeStart + '-' + (e.rangeEnd - 1)),
17553                (t.onreadystatechange = this.readystatechange.bind(this)),
17554                (t.onprogress = this.loadprogress.bind(this)),
17555                (t.responseType = e.responseType),
17556                self.clearTimeout(this.requestTimeout),
17557                (r.timeout = a && E(a) ? a : s),
17558                (this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), r.timeout)),
17559                t.send();
17560            }),
17561            (e.readystatechange = function () {
17562              var t = this.context,
17563                e = this.loader,
17564                r = this.stats;
17565              if (t && e) {
17566                var i = e.readyState,
17567                  n = this.config;
17568                if (
17569                  !r.aborted &&
17570                  i >= 2 &&
17571                  (0 === r.loading.first &&
17572                    ((r.loading.first = Math.max(self.performance.now(), r.loading.start)),
17573                    n.timeout !== n.loadPolicy.maxLoadTimeMs &&
17574                      (self.clearTimeout(this.requestTimeout),
17575                      (n.timeout = n.loadPolicy.maxLoadTimeMs),
17576                      (this.requestTimeout = self.setTimeout(
17577                        this.loadtimeout.bind(this),
17578                        n.loadPolicy.maxLoadTimeMs - (r.loading.first - r.loading.start),
17579                      )))),
17580                  4 === i)
17581                ) {
17582                  self.clearTimeout(this.requestTimeout), (e.onreadystatechange = null), (e.onprogress = null);
17583                  var a = e.status,
17584                    s = 'text' !== e.responseType;
17585                  if (a >= 200 && a < 300 && ((s && e.response) || null !== e.responseText)) {
17586                    r.loading.end = Math.max(self.performance.now(), r.loading.first);
17587                    var o = s ? e.response : e.responseText,
17588                      l = 'arraybuffer' === e.responseType ? o.byteLength : o.length;
17589                    if (
17590                      ((r.loaded = r.total = l),
17591                      (r.bwEstimate = (8e3 * r.total) / (r.loading.end - r.loading.first)),
17592                      !this.callbacks)
17593                    )
17594                      return;
17595                    var u = this.callbacks.onProgress;
17596                    if ((u && u(r, t, o, e), !this.callbacks)) return;
17597                    var h = { url: e.responseURL, data: o, code: a };
17598                    this.callbacks.onSuccess(h, r, t, e);
17599                  } else {
17600                    var d = n.loadPolicy.errorRetry;
17601                    ze(d, r.retry, !1, a)
17602                      ? this.retry(d)
17603                      : (w.error(a + ' while loading ' + t.url),
17604                        this.callbacks.onError({ code: a, text: e.statusText }, t, e, r));
17605                  }
17606                }
17607              }
17608            }),
17609            (e.loadtimeout = function () {
17610              var t,
17611                e = null == (t = this.config) ? void 0 : t.loadPolicy.timeoutRetry;
17612              if (ze(e, this.stats.retry, !0)) this.retry(e);
17613              else {
17614                w.warn('timeout while loading ' + this.context.url);
17615                var r = this.callbacks;
17616                r && (this.abortInternal(), r.onTimeout(this.stats, this.context, this.loader));
17617              }
17618            }),
17619            (e.retry = function (t) {
17620              var e = this.context,
17621                r = this.stats;
17622              (this.retryDelay = qe(t, r.retry)),
17623                r.retry++,
17624                w.warn(
17625                  (status ? 'HTTP Status ' + status : 'Timeout') +
17626                    ' while loading ' +
17627                    e.url +
17628                    ', retrying ' +
17629                    r.retry +
17630                    '/' +
17631                    t.maxNumRetry +
17632                    ' in ' +
17633                    this.retryDelay +
17634                    'ms',
17635                ),
17636                this.abortInternal(),
17637                (this.loader = null),
17638                self.clearTimeout(this.retryTimeout),
17639                (this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay));
17640            }),
17641            (e.loadprogress = function (t) {
17642              var e = this.stats;
17643              (e.loaded = t.loaded), t.lengthComputable && (e.total = t.total);
17644            }),
17645            (e.getCacheAge = function () {
17646              var t = null;
17647              if (this.loader && Ua.test(this.loader.getAllResponseHeaders())) {
17648                var e = this.loader.getResponseHeader('age');
17649                t = e ? parseFloat(e) : null;
17650              }
17651              return t;
17652            }),
17653            (e.getResponseHeader = function (t) {
17654              return this.loader &&
17655                new RegExp('^' + t + ':\\s*[\\d.]+\\s*$', 'im').test(this.loader.getAllResponseHeaders())
17656                ? this.loader.getResponseHeader(t)
17657                : null;
17658            }),
17659            t
17660          );
17661        })(),
17662        Ga = /(\d+)-(\d+)\/(\d+)/,
17663        Ka = (function () {
17664          function t(t) {
17665            (this.fetchSetup = void 0),
17666              (this.requestTimeout = void 0),
17667              (this.request = void 0),
17668              (this.response = void 0),
17669              (this.controller = void 0),
17670              (this.context = void 0),
17671              (this.config = null),
17672              (this.callbacks = null),
17673              (this.stats = void 0),
17674              (this.loader = null),
17675              (this.fetchSetup = t.fetchSetup || Ha),
17676              (this.controller = new self.AbortController()),
17677              (this.stats = new M());
17678          }
17679          var e = t.prototype;
17680          return (
17681            (e.destroy = function () {
17682              (this.loader = this.callbacks = null), this.abortInternal();
17683            }),
17684            (e.abortInternal = function () {
17685              var t = this.response;
17686              (null != t && t.ok) || ((this.stats.aborted = !0), this.controller.abort());
17687            }),
17688            (e.abort = function () {
17689              var t;
17690              this.abortInternal(),
17691                null != (t = this.callbacks) &&
17692                  t.onAbort &&
17693                  this.callbacks.onAbort(this.stats, this.context, this.response);
17694            }),
17695            (e.load = function (t, e, r) {
17696              var i = this,
17697                n = this.stats;
17698              if (n.loading.start) throw new Error('Loader can only be used once.');
17699              n.loading.start = self.performance.now();
17700              var a = (function (t, e) {
17701                  var r = {
17702                    method: 'GET',
17703                    mode: 'cors',
17704                    credentials: 'same-origin',
17705                    signal: e,
17706                    headers: new self.Headers(o({}, t.headers)),
17707                  };
17708                  return (
17709                    t.rangeEnd && r.headers.set('Range', 'bytes=' + t.rangeStart + '-' + String(t.rangeEnd - 1)), r
17710                  );
17711                })(t, this.controller.signal),
17712                s = r.onProgress,
17713                l = 'arraybuffer' === t.responseType,
17714                u = l ? 'byteLength' : 'length',
17715                h = e.loadPolicy,
17716                d = h.maxTimeToFirstByteMs,
17717                c = h.maxLoadTimeMs;
17718              (this.context = t),
17719                (this.config = e),
17720                (this.callbacks = r),
17721                (this.request = this.fetchSetup(t, a)),
17722                self.clearTimeout(this.requestTimeout),
17723                (e.timeout = d && E(d) ? d : c),
17724                (this.requestTimeout = self.setTimeout(function () {
17725                  i.abortInternal(), r.onTimeout(n, t, i.response);
17726                }, e.timeout)),
17727                self
17728                  .fetch(this.request)
17729                  .then(function (a) {
17730                    i.response = i.loader = a;
17731                    var o = Math.max(self.performance.now(), n.loading.start);
17732                    if (
17733                      (self.clearTimeout(i.requestTimeout),
17734                      (e.timeout = c),
17735                      (i.requestTimeout = self.setTimeout(function () {
17736                        i.abortInternal(), r.onTimeout(n, t, i.response);
17737                      }, c - (o - n.loading.start))),
17738                      !a.ok)
17739                    ) {
17740                      var u = a.status,
17741                        h = a.statusText;
17742                      throw new Va(h || 'fetch, bad network response', u, a);
17743                    }
17744                    return (
17745                      (n.loading.first = o),
17746                      (n.total =
17747                        (function (t) {
17748                          var e = t.get('Content-Range');
17749                          if (e) {
17750                            var r = (function (t) {
17751                              var e = Ga.exec(t);
17752                              if (e) return parseInt(e[2]) - parseInt(e[1]) + 1;
17753                            })(e);
17754                            if (E(r)) return r;
17755                          }
17756                          var i = t.get('Content-Length');
17757                          if (i) return parseInt(i);
17758                        })(a.headers) || n.total),
17759                      s && E(e.highWaterMark)
17760                        ? i.loadProgressively(a, n, t, e.highWaterMark, s)
17761                        : l
17762                        ? a.arrayBuffer()
17763                        : 'json' === t.responseType
17764                        ? a.json()
17765                        : a.text()
17766                    );
17767                  })
17768                  .then(function (a) {
17769                    var o = i.response;
17770                    self.clearTimeout(i.requestTimeout),
17771                      (n.loading.end = Math.max(self.performance.now(), n.loading.first));
17772                    var l = a[u];
17773                    l && (n.loaded = n.total = l);
17774                    var h = { url: o.url, data: a, code: o.status };
17775                    s && !E(e.highWaterMark) && s(n, t, a, o), r.onSuccess(h, n, t, o);
17776                  })
17777                  .catch(function (e) {
17778                    if ((self.clearTimeout(i.requestTimeout), !n.aborted)) {
17779                      var a = (e && e.code) || 0,
17780                        s = e ? e.message : null;
17781                      r.onError({ code: a, text: s }, t, e ? e.details : null, n);
17782                    }
17783                  });
17784            }),
17785            (e.getCacheAge = function () {
17786              var t = null;
17787              if (this.response) {
17788                var e = this.response.headers.get('age');
17789                t = e ? parseFloat(e) : null;
17790              }
17791              return t;
17792            }),
17793            (e.getResponseHeader = function (t) {
17794              return this.response ? this.response.headers.get(t) : null;
17795            }),
17796            (e.loadProgressively = function (t, e, r, i, n) {
17797              void 0 === i && (i = 0);
17798              var a = new mn(),
17799                s = t.body.getReader();
17800              return (function o() {
17801                return s
17802                  .read()
17803                  .then(function (s) {
17804                    if (s.done) return a.dataLength && n(e, r, a.flush(), t), Promise.resolve(new ArrayBuffer(0));
17805                    var l = s.value,
17806                      u = l.length;
17807                    return (
17808                      (e.loaded += u),
17809                      u < i || a.dataLength ? (a.push(l), a.dataLength >= i && n(e, r, a.flush(), t)) : n(e, r, l, t),
17810                      o()
17811                    );
17812                  })
17813                  .catch(function () {
17814                    return Promise.reject();
17815                  });
17816              })();
17817            }),
17818            t
17819          );
17820        })();
17821      function Ha(t, e) {
17822        return new self.Request(t.url, e);
17823      }
17824      var Va = (function (t) {
17825          function e(e, r, i) {
17826            var n;
17827            return (
17828              ((n = t.call(this, e) || this).code = void 0), (n.details = void 0), (n.code = r), (n.details = i), n
17829            );
17830          }
17831          return l(e, t), e;
17832        })(f(Error)),
17833        Ya = /\s/,
17834        Wa = i(
17835          i(
17836            {
17837              autoStartLoad: !0,
17838              startPosition: -1,
17839              defaultAudioCodec: void 0,
17840              debug: !1,
17841              capLevelOnFPSDrop: !1,
17842              capLevelToPlayerSize: !1,
17843              ignoreDevicePixelRatio: !1,
17844              initialLiveManifestSize: 1,
17845              maxBufferLength: 30,
17846              backBufferLength: 1 / 0,
17847              maxBufferSize: 6e7,
17848              maxBufferHole: 0.1,
17849              highBufferWatchdogPeriod: 2,
17850              nudgeOffset: 0.1,
17851              nudgeMaxRetry: 3,
17852              maxFragLookUpTolerance: 0.25,
17853              liveSyncDurationCount: 3,
17854              liveMaxLatencyDurationCount: 1 / 0,
17855              liveSyncDuration: void 0,
17856              liveMaxLatencyDuration: void 0,
17857              maxLiveSyncPlaybackRate: 1,
17858              liveDurationInfinity: !1,
17859              liveBackBufferLength: null,
17860              maxMaxBufferLength: 600,
17861              enableWorker: !0,
17862              workerPath: null,
17863              enableSoftwareAES: !0,
17864              startLevel: void 0,
17865              startFragPrefetch: !1,
17866              fpsDroppedMonitoringPeriod: 5e3,
17867              fpsDroppedMonitoringThreshold: 0.2,
17868              appendErrorMaxRetry: 3,
17869              loader: Ba,
17870              fLoader: void 0,
17871              pLoader: void 0,
17872              xhrSetup: void 0,
17873              licenseXhrSetup: void 0,
17874              licenseResponseCallback: void 0,
17875              abrController: vn,
17876              bufferController: In,
17877              capLevelController: Ra,
17878              errorController: lr,
17879              fpsController: Aa,
17880              stretchShortVideoTrack: !1,
17881              maxAudioFramesDrift: 1,
17882              forceKeyFrameOnDiscontinuity: !0,
17883              abrEwmaFastLive: 3,
17884              abrEwmaSlowLive: 9,
17885              abrEwmaFastVoD: 3,
17886              abrEwmaSlowVoD: 9,
17887              abrEwmaDefaultEstimate: 5e5,
17888              abrBandWidthFactor: 0.95,
17889              abrBandWidthUpFactor: 0.7,
17890              abrMaxWithRealBitrate: !1,
17891              maxStarvationDelay: 4,
17892              maxLoadingDelay: 4,
17893              minAutoBitrate: 0,
17894              emeEnabled: !1,
17895              widevineLicenseUrl: void 0,
17896              drmSystems: {},
17897              drmSystemOptions: {},
17898              requestMediaKeySystemAccessFunc: et,
17899              testBandwidth: !0,
17900              progressive: !1,
17901              lowLatencyMode: !0,
17902              cmcd: void 0,
17903              enableDateRangeMetadataCues: !0,
17904              enableEmsgMetadataCues: !0,
17905              enableID3MetadataCues: !0,
17906              certLoadPolicy: {
17907                default: { maxTimeToFirstByteMs: 8e3, maxLoadTimeMs: 2e4, timeoutRetry: null, errorRetry: null },
17908              },
17909              keyLoadPolicy: {
17910                default: {
17911                  maxTimeToFirstByteMs: 8e3,
17912                  maxLoadTimeMs: 2e4,
17913                  timeoutRetry: { maxNumRetry: 1, retryDelayMs: 1e3, maxRetryDelayMs: 2e4, backoff: 'linear' },
17914                  errorRetry: { maxNumRetry: 8, retryDelayMs: 1e3, maxRetryDelayMs: 2e4, backoff: 'linear' },
17915                },
17916              },
17917              manifestLoadPolicy: {
17918                default: {
17919                  maxTimeToFirstByteMs: 1 / 0,
17920                  maxLoadTimeMs: 2e4,
17921                  timeoutRetry: { maxNumRetry: 2, retryDelayMs: 0, maxRetryDelayMs: 0 },
17922                  errorRetry: { maxNumRetry: 1, retryDelayMs: 1e3, maxRetryDelayMs: 8e3 },
17923                },
17924              },
17925              playlistLoadPolicy: {
17926                default: {
17927                  maxTimeToFirstByteMs: 1e4,
17928                  maxLoadTimeMs: 2e4,
17929                  timeoutRetry: { maxNumRetry: 2, retryDelayMs: 0, maxRetryDelayMs: 0 },
17930                  errorRetry: { maxNumRetry: 2, retryDelayMs: 1e3, maxRetryDelayMs: 8e3 },
17931                },
17932              },
17933              fragLoadPolicy: {
17934                default: {
17935                  maxTimeToFirstByteMs: 1e4,
17936                  maxLoadTimeMs: 12e4,
17937                  timeoutRetry: { maxNumRetry: 4, retryDelayMs: 0, maxRetryDelayMs: 0 },
17938                  errorRetry: { maxNumRetry: 6, retryDelayMs: 1e3, maxRetryDelayMs: 8e3 },
17939                },
17940              },
17941              steeringManifestLoadPolicy: {
17942                default: {
17943                  maxTimeToFirstByteMs: 1e4,
17944                  maxLoadTimeMs: 2e4,
17945                  timeoutRetry: { maxNumRetry: 2, retryDelayMs: 0, maxRetryDelayMs: 0 },
17946                  errorRetry: { maxNumRetry: 1, retryDelayMs: 1e3, maxRetryDelayMs: 8e3 },
17947                },
17948              },
17949              manifestLoadingTimeOut: 1e4,
17950              manifestLoadingMaxRetry: 1,
17951              manifestLoadingRetryDelay: 1e3,
17952              manifestLoadingMaxRetryTimeout: 64e3,
17953              levelLoadingTimeOut: 1e4,
17954              levelLoadingMaxRetry: 4,
17955              levelLoadingRetryDelay: 1e3,
17956              levelLoadingMaxRetryTimeout: 64e3,
17957              fragLoadingTimeOut: 2e4,
17958              fragLoadingMaxRetry: 6,
17959              fragLoadingRetryDelay: 1e3,
17960              fragLoadingMaxRetryTimeout: 64e3,
17961            },
17962            {
17963              cueHandler: {
17964                newCue: function (t, e, r, i) {
17965                  for (var n, a, s, o, l, u = [], h = self.VTTCue || self.TextTrackCue, d = 0; d < i.rows.length; d++)
17966                    if (((s = !0), (o = 0), (l = ''), !(n = i.rows[d]).isEmpty())) {
17967                      for (var c, f = 0; f < n.chars.length; f++)
17968                        Ya.test(n.chars[f].uchar) && s ? o++ : ((l += n.chars[f].uchar), (s = !1));
17969                      (n.cueStartTime = e), e === r && (r += 1e-4), o >= 16 ? o-- : o++;
17970                      var g = ia(l.trim()),
17971                        v = la(e, r, g);
17972                      (null != t && null != (c = t.cues) && c.getCueById(v)) ||
17973                        (((a = new h(e, r, g)).id = v),
17974                        (a.line = d + 1),
17975                        (a.align = 'left'),
17976                        (a.position = 10 + Math.min(80, 10 * Math.floor((8 * o) / 32))),
17977                        u.push(a));
17978                    }
17979                  return (
17980                    t &&
17981                      u.length &&
17982                      (u.sort(function (t, e) {
17983                        return 'auto' === t.line || 'auto' === e.line
17984                          ? 0
17985                          : t.line > 8 && e.line > 8
17986                          ? e.line - t.line
17987                          : t.line - e.line;
17988                      }),
17989                      u.forEach(function (e) {
17990                        return Se(t, e);
17991                      })),
17992                    u
17993                  );
17994                },
17995              },
17996              enableWebVTT: !0,
17997              enableIMSC1: !0,
17998              enableCEA708Captions: !0,
17999              captionsTextTrack1Label: 'English',
18000              captionsTextTrack1LanguageCode: 'en',
18001              captionsTextTrack2Label: 'Spanish',
18002              captionsTextTrack2LanguageCode: 'es',
18003              captionsTextTrack3Label: 'Unknown CC',
18004              captionsTextTrack3LanguageCode: '',
18005              captionsTextTrack4Label: 'Unknown CC',
18006              captionsTextTrack4LanguageCode: '',
18007              renderTextTracksNatively: !0,
18008            },
18009          ),
18010          {},
18011          {
18012            subtitleStreamController: Sn,
18013            subtitleTrackController: Rn,
18014            timelineController: Sa,
18015            audioStreamController: pn,
18016            audioTrackController: yn,
18017            emeController: ba,
18018            cmcdController: Fa,
18019            contentSteeringController: Ma,
18020          },
18021        );
18022      function ja(t) {
18023        return t && 'object' == typeof t
18024          ? Array.isArray(t)
18025            ? t.map(ja)
18026            : Object.keys(t).reduce(function (e, r) {
18027                return (e[r] = ja(t[r])), e;
18028              }, {})
18029          : t;
18030      }
18031      function qa(t) {
18032        var e = t.loader;
18033        e !== Ka && e !== Ba
18034          ? (w.log('[config]: Custom loader detected, cannot enable progressive streaming'), (t.progressive = !1))
18035          : (function () {
18036              if (self.fetch && self.AbortController && self.ReadableStream && self.Request)
18037                try {
18038                  return new self.ReadableStream({}), !0;
18039                } catch (t) {}
18040              return !1;
18041            })() &&
18042            ((t.loader = Ka),
18043            (t.progressive = !0),
18044            (t.enableSoftwareAES = !0),
18045            w.log('[config]: Progressive streaming enabled, using FetchLoader'));
18046      }
18047      var Xa = (function () {
18048        function t(e) {
18049          void 0 === e && (e = {}),
18050            (this.config = void 0),
18051            (this.userConfig = void 0),
18052            (this.coreComponents = void 0),
18053            (this.networkControllers = void 0),
18054            (this._emitter = new an()),
18055            (this._autoLevelCapping = void 0),
18056            (this._maxHdcpLevel = null),
18057            (this.abrController = void 0),
18058            (this.bufferController = void 0),
18059            (this.capLevelController = void 0),
18060            (this.latencyController = void 0),
18061            (this.levelController = void 0),
18062            (this.streamController = void 0),
18063            (this.audioTrackController = void 0),
18064            (this.subtitleTrackController = void 0),
18065            (this.emeController = void 0),
18066            (this.cmcdController = void 0),
18067            (this._media = null),
18068            (this.url = null),
18069            I(e.debug || !1, 'Hls instance');
18070          var r = (this.config = (function (t, e) {
18071            if (
18072              (e.liveSyncDurationCount || e.liveMaxLatencyDurationCount) &&
18073              (e.liveSyncDuration || e.liveMaxLatencyDuration)
18074            )
18075              throw new Error(
18076                "Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration",
18077              );
18078            if (
18079              void 0 !== e.liveMaxLatencyDurationCount &&
18080              (void 0 === e.liveSyncDurationCount || e.liveMaxLatencyDurationCount <= e.liveSyncDurationCount)
18081            )
18082              throw new Error(
18083                'Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"',
18084              );
18085            if (
18086              void 0 !== e.liveMaxLatencyDuration &&
18087              (void 0 === e.liveSyncDuration || e.liveMaxLatencyDuration <= e.liveSyncDuration)
18088            )
18089              throw new Error(
18090                'Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"',
18091              );
18092            var r = ja(t),
18093              n = ['TimeOut', 'MaxRetry', 'RetryDelay', 'MaxRetryTimeout'];
18094            return (
18095              ['manifest', 'level', 'frag'].forEach(function (t) {
18096                var i = ('level' === t ? 'playlist' : t) + 'LoadPolicy',
18097                  a = void 0 === e[i],
18098                  s = [];
18099                n.forEach(function (n) {
18100                  var o = t + 'Loading' + n,
18101                    l = e[o];
18102                  if (void 0 !== l && a) {
18103                    s.push(o);
18104                    var u = r[i].default;
18105                    switch (((e[i] = { default: u }), n)) {
18106                      case 'TimeOut':
18107                        (u.maxLoadTimeMs = l), (u.maxTimeToFirstByteMs = l);
18108                        break;
18109                      case 'MaxRetry':
18110                        (u.errorRetry.maxNumRetry = l), (u.timeoutRetry.maxNumRetry = l);
18111                        break;
18112                      case 'RetryDelay':
18113                        (u.errorRetry.retryDelayMs = l), (u.timeoutRetry.retryDelayMs = l);
18114                        break;
18115                      case 'MaxRetryTimeout':
18116                        (u.errorRetry.maxRetryDelayMs = l), (u.timeoutRetry.maxRetryDelayMs = l);
18117                    }
18118                  }
18119                }),
18120                  s.length &&
18121                    w.warn(
18122                      'hls.js config: "' +
18123                        s.join('", "') +
18124                        '" setting(s) are deprecated, use "' +
18125                        i +
18126                        '": ' +
18127                        JSON.stringify(e[i]),
18128                    );
18129              }),
18130              i(i({}, r), e)
18131            );
18132          })(t.DefaultConfig, e));
18133          (this.userConfig = e), (this._autoLevelCapping = -1), r.progressive && qa(r);
18134          var n = r.abrController,
18135            a = r.bufferController,
18136            s = r.capLevelController,
18137            o = r.errorController,
18138            l = r.fpsController,
18139            u = new o(this),
18140            h = (this.abrController = new n(this)),
18141            d = (this.bufferController = new a(this)),
18142            c = (this.capLevelController = new s(this)),
18143            f = new l(this),
18144            g = new Te(this),
18145            v = new Ce(this),
18146            m = r.contentSteeringController,
18147            p = m ? new m(this) : null,
18148            y = (this.levelController = new hr(this, p)),
18149            T = new pr(this),
18150            E = new kr(this.config),
18151            L = (this.streamController = new cn(this, T, E));
18152          c.setStreamController(L), f.setStreamController(L);
18153          var R = [g, y, L];
18154          p && R.splice(1, 0, p), (this.networkControllers = R);
18155          var A = [h, d, c, f, v, T];
18156          this.audioTrackController = this.createController(r.audioTrackController, R);
18157          var k = r.audioStreamController;
18158          k && R.push(new k(this, T, E)),
18159            (this.subtitleTrackController = this.createController(r.subtitleTrackController, R));
18160          var b = r.subtitleStreamController;
18161          b && R.push(new b(this, T, E)),
18162            this.createController(r.timelineController, A),
18163            (E.emeController = this.emeController = this.createController(r.emeController, A)),
18164            (this.cmcdController = this.createController(r.cmcdController, A)),
18165            (this.latencyController = this.createController(_e, A)),
18166            (this.coreComponents = A),
18167            R.push(u);
18168          var D = u.onErrorOut;
18169          'function' == typeof D && this.on(S.ERROR, D, u);
18170        }
18171        t.isSupported = function () {
18172          return (function () {
18173            var t = qt();
18174            if (!t) return !1;
18175            var e = Zr(),
18176              r =
18177                t &&
18178                'function' == typeof t.isTypeSupported &&
18179                t.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),
18180              i =
18181                !e ||
18182                (e.prototype &&
18183                  'function' == typeof e.prototype.appendBuffer &&
18184                  'function' == typeof e.prototype.remove);
18185            return !!r && !!i;
18186          })();
18187        };
18188        var e = t.prototype;
18189        return (
18190          (e.createController = function (t, e) {
18191            if (t) {
18192              var r = new t(this);
18193              return e && e.push(r), r;
18194            }
18195            return null;
18196          }),
18197          (e.on = function (t, e, r) {
18198            void 0 === r && (r = this), this._emitter.on(t, e, r);
18199          }),
18200          (e.once = function (t, e, r) {
18201            void 0 === r && (r = this), this._emitter.once(t, e, r);
18202          }),
18203          (e.removeAllListeners = function (t) {
18204            this._emitter.removeAllListeners(t);
18205          }),
18206          (e.off = function (t, e, r, i) {
18207            void 0 === r && (r = this), this._emitter.off(t, e, r, i);
18208          }),
18209          (e.listeners = function (t) {
18210            return this._emitter.listeners(t);
18211          }),
18212          (e.emit = function (t, e, r) {
18213            return this._emitter.emit(t, e, r);
18214          }),
18215          (e.trigger = function (t, e) {
18216            if (this.config.debug) return this.emit(t, t, e);
18217            try {
18218              return this.emit(t, t, e);
18219            } catch (e) {
18220              w.error(
18221                'An internal error happened while handling event ' +
18222                  t +
18223                  '. Error message: "' +
18224                  e.message +
18225                  '". Here is a stacktrace:',
18226                e,
18227              ),
18228                this.trigger(S.ERROR, {
18229                  type: L.OTHER_ERROR,
18230                  details: R.INTERNAL_EXCEPTION,
18231                  fatal: !1,
18232                  event: t,
18233                  error: e,
18234                });
18235            }
18236            return !1;
18237          }),
18238          (e.listenerCount = function (t) {
18239            return this._emitter.listenerCount(t);
18240          }),
18241          (e.destroy = function () {
18242            w.log('destroy'),
18243              this.trigger(S.DESTROYING, void 0),
18244              this.detachMedia(),
18245              this.removeAllListeners(),
18246              (this._autoLevelCapping = -1),
18247              (this.url = null),
18248              this.networkControllers.forEach(function (t) {
18249                return t.destroy();
18250              }),
18251              (this.networkControllers.length = 0),
18252              this.coreComponents.forEach(function (t) {
18253                return t.destroy();
18254              }),
18255              (this.coreComponents.length = 0);
18256            var t = this.config;
18257            (t.xhrSetup = t.fetchSetup = void 0), (this.userConfig = null);
18258          }),
18259          (e.attachMedia = function (t) {
18260            w.log('attachMedia'), (this._media = t), this.trigger(S.MEDIA_ATTACHING, { media: t });
18261          }),
18262          (e.detachMedia = function () {
18263            w.log('detachMedia'), this.trigger(S.MEDIA_DETACHING, void 0), (this._media = null);
18264          }),
18265          (e.loadSource = function (t) {
18266            this.stopLoad();
18267            var e = this.media,
18268              r = this.url,
18269              i = (this.url = T.buildAbsoluteURL(self.location.href, t, { alwaysNormalize: !0 }));
18270            w.log('loadSource:' + i),
18271              e &&
18272                r &&
18273                (r !== i || this.bufferController.hasSourceTypes()) &&
18274                (this.detachMedia(), this.attachMedia(e)),
18275              this.trigger(S.MANIFEST_LOADING, { url: t });
18276          }),
18277          (e.startLoad = function (t) {
18278            void 0 === t && (t = -1),
18279              w.log('startLoad(' + t + ')'),
18280              this.networkControllers.forEach(function (e) {
18281                e.startLoad(t);
18282              });
18283          }),
18284          (e.stopLoad = function () {
18285            w.log('stopLoad'),
18286              this.networkControllers.forEach(function (t) {
18287                t.stopLoad();
18288              });
18289          }),
18290          (e.swapAudioCodec = function () {
18291            w.log('swapAudioCodec'), this.streamController.swapAudioCodec();
18292          }),
18293          (e.recoverMediaError = function () {
18294            w.log('recoverMediaError');
18295            var t = this._media;
18296            this.detachMedia(), t && this.attachMedia(t);
18297          }),
18298          (e.removeLevel = function (t, e) {
18299            void 0 === e && (e = 0), this.levelController.removeLevel(t, e);
18300          }),
18301          a(
18302            t,
18303            [
18304              {
18305                key: 'levels',
18306                get: function () {
18307                  var t = this.levelController.levels;
18308                  return t || [];
18309                },
18310              },
18311              {
18312                key: 'currentLevel',
18313                get: function () {
18314                  return this.streamController.currentLevel;
18315                },
18316                set: function (t) {
18317                  w.log('set currentLevel:' + t),
18318                    (this.loadLevel = t),
18319                    this.abrController.clearTimer(),
18320                    this.streamController.immediateLevelSwitch();
18321                },
18322              },
18323              {
18324                key: 'nextLevel',
18325                get: function () {
18326                  return this.streamController.nextLevel;
18327                },
18328                set: function (t) {
18329                  w.log('set nextLevel:' + t),
18330                    (this.levelController.manualLevel = t),
18331                    this.streamController.nextLevelSwitch();
18332                },
18333              },
18334              {
18335                key: 'loadLevel',
18336                get: function () {
18337                  return this.levelController.level;
18338                },
18339                set: function (t) {
18340                  w.log('set loadLevel:' + t), (this.levelController.manualLevel = t);
18341                },
18342              },
18343              {
18344                key: 'nextLoadLevel',
18345                get: function () {
18346                  return this.levelController.nextLoadLevel;
18347                },
18348                set: function (t) {
18349                  this.levelController.nextLoadLevel = t;
18350                },
18351              },
18352              {
18353                key: 'firstLevel',
18354                get: function () {
18355                  return Math.max(this.levelController.firstLevel, this.minAutoLevel);
18356                },
18357                set: function (t) {
18358                  w.log('set firstLevel:' + t), (this.levelController.firstLevel = t);
18359                },
18360              },
18361              {
18362                key: 'startLevel',
18363                get: function () {
18364                  return this.levelController.startLevel;
18365                },
18366                set: function (t) {
18367                  w.log('set startLevel:' + t),
18368                    -1 !== t && (t = Math.max(t, this.minAutoLevel)),
18369                    (this.levelController.startLevel = t);
18370                },
18371              },
18372              {
18373                key: 'capLevelToPlayerSize',
18374                get: function () {
18375                  return this.config.capLevelToPlayerSize;
18376                },
18377                set: function (t) {
18378                  var e = !!t;
18379                  e !== this.config.capLevelToPlayerSize &&
18380                    (e
18381                      ? this.capLevelController.startCapping()
18382                      : (this.capLevelController.stopCapping(),
18383                        (this.autoLevelCapping = -1),
18384                        this.streamController.nextLevelSwitch()),
18385                    (this.config.capLevelToPlayerSize = e));
18386                },
18387              },
18388              {
18389                key: 'autoLevelCapping',
18390                get: function () {
18391                  return this._autoLevelCapping;
18392                },
18393                set: function (t) {
18394                  this._autoLevelCapping !== t && (w.log('set autoLevelCapping:' + t), (this._autoLevelCapping = t));
18395                },
18396              },
18397              {
18398                key: 'bandwidthEstimate',
18399                get: function () {
18400                  var t = this.abrController.bwEstimator;
18401                  return t ? t.getEstimate() : NaN;
18402                },
18403              },
18404              {
18405                key: 'ttfbEstimate',
18406                get: function () {
18407                  var t = this.abrController.bwEstimator;
18408                  return t ? t.getEstimateTTFB() : NaN;
18409                },
18410              },
18411              {
18412                key: 'maxHdcpLevel',
18413                get: function () {
18414                  return this._maxHdcpLevel;
18415                },
18416                set: function (t) {
18417                  Pe.indexOf(t) > -1 && (this._maxHdcpLevel = t);
18418                },
18419              },
18420              {
18421                key: 'autoLevelEnabled',
18422                get: function () {
18423                  return -1 === this.levelController.manualLevel;
18424                },
18425              },
18426              {
18427                key: 'manualLevel',
18428                get: function () {
18429                  return this.levelController.manualLevel;
18430                },
18431              },
18432              {
18433                key: 'minAutoLevel',
18434                get: function () {
18435                  var t = this.levels,
18436                    e = this.config.minAutoBitrate;
18437                  if (!t) return 0;
18438                  for (var r = t.length, i = 0; i < r; i++) if (t[i].maxBitrate >= e) return i;
18439                  return 0;
18440                },
18441              },
18442              {
18443                key: 'maxAutoLevel',
18444                get: function () {
18445                  var t,
18446                    e = this.levels,
18447                    r = this.autoLevelCapping,
18448                    i = this.maxHdcpLevel;
18449                  if (((t = -1 === r && e && e.length ? e.length - 1 : r), i))
18450                    for (var n = t; n--; ) {
18451                      var a = e[n].attrs['HDCP-LEVEL'];
18452                      if (a && a <= i) return n;
18453                    }
18454                  return t;
18455                },
18456              },
18457              {
18458                key: 'nextAutoLevel',
18459                get: function () {
18460                  return Math.min(Math.max(this.abrController.nextAutoLevel, this.minAutoLevel), this.maxAutoLevel);
18461                },
18462                set: function (t) {
18463                  this.abrController.nextAutoLevel = Math.max(this.minAutoLevel, t);
18464                },
18465              },
18466              {
18467                key: 'playingDate',
18468                get: function () {
18469                  return this.streamController.currentProgramDateTime;
18470                },
18471              },
18472              {
18473                key: 'mainForwardBufferInfo',
18474                get: function () {
18475                  return this.streamController.getMainFwdBufferInfo();
18476                },
18477              },
18478              {
18479                key: 'audioTracks',
18480                get: function () {
18481                  var t = this.audioTrackController;
18482                  return t ? t.audioTracks : [];
18483                },
18484              },
18485              {
18486                key: 'audioTrack',
18487                get: function () {
18488                  var t = this.audioTrackController;
18489                  return t ? t.audioTrack : -1;
18490                },
18491                set: function (t) {
18492                  var e = this.audioTrackController;
18493                  e && (e.audioTrack = t);
18494                },
18495              },
18496              {
18497                key: 'subtitleTracks',
18498                get: function () {
18499                  var t = this.subtitleTrackController;
18500                  return t ? t.subtitleTracks : [];
18501                },
18502              },
18503              {
18504                key: 'subtitleTrack',
18505                get: function () {
18506                  var t = this.subtitleTrackController;
18507                  return t ? t.subtitleTrack : -1;
18508                },
18509                set: function (t) {
18510                  var e = this.subtitleTrackController;
18511                  e && (e.subtitleTrack = t);
18512                },
18513              },
18514              {
18515                key: 'media',
18516                get: function () {
18517                  return this._media;
18518                },
18519              },
18520              {
18521                key: 'subtitleDisplay',
18522                get: function () {
18523                  var t = this.subtitleTrackController;
18524                  return !!t && t.subtitleDisplay;
18525                },
18526                set: function (t) {
18527                  var e = this.subtitleTrackController;
18528                  e && (e.subtitleDisplay = t);
18529                },
18530              },
18531              {
18532                key: 'lowLatencyMode',
18533                get: function () {
18534                  return this.config.lowLatencyMode;
18535                },
18536                set: function (t) {
18537                  this.config.lowLatencyMode = t;
18538                },
18539              },
18540              {
18541                key: 'liveSyncPosition',
18542                get: function () {
18543                  return this.latencyController.liveSyncPosition;
18544                },
18545              },
18546              {
18547                key: 'latency',
18548                get: function () {
18549                  return this.latencyController.latency;
18550                },
18551              },
18552              {
18553                key: 'maxLatency',
18554                get: function () {
18555                  return this.latencyController.maxLatency;
18556                },
18557              },
18558              {
18559                key: 'targetLatency',
18560                get: function () {
18561                  return this.latencyController.targetLatency;
18562                },
18563              },
18564              {
18565                key: 'drift',
18566                get: function () {
18567                  return this.latencyController.drift;
18568                },
18569              },
18570              {
18571                key: 'forceStartLoad',
18572                get: function () {
18573                  return this.streamController.forceStartLoad;
18574                },
18575              },
18576            ],
18577            [
18578              {
18579                key: 'version',
18580                get: function () {
18581                  return '1.4.12';
18582                },
18583              },
18584              {
18585                key: 'Events',
18586                get: function () {
18587                  return S;
18588                },
18589              },
18590              {
18591                key: 'ErrorTypes',
18592                get: function () {
18593                  return L;
18594                },
18595              },
18596              {
18597                key: 'ErrorDetails',
18598                get: function () {
18599                  return R;
18600                },
18601              },
18602              {
18603                key: 'DefaultConfig',
18604                get: function () {
18605                  return t.defaultConfig ? t.defaultConfig : Wa;
18606                },
18607                set: function (e) {
18608                  t.defaultConfig = e;
18609                },
18610              },
18611            ],
18612          ),
18613          t
18614        );
18615      })();
18616      return (Xa.defaultConfig = void 0), Xa;
18617    }),
18618    'object' == typeof exports && 'undefined' != typeof module
18619      ? (module.exports = i())
18620      : 'function' == typeof define && define.amd
18621      ? define(i)
18622      : ((r = 'undefined' != typeof globalThis ? globalThis : r || self).Hls = i());
18623})(!1);
18624//# sourceMappingURL=hls.min.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.