PageSourceSearch

https://hedcet.com/desktop/js/hls.min.js

js hedcet.com collected 2026-09-24 14:44:32 UTC 537,189 bytes, 14,408 lines download raw bytes

1"undefined" != typeof window &&
2  (function (e, t) {
3    "object" == typeof exports && "object" == typeof module
4      ? (module.exports = t())
5      : "function" == typeof define && define.amd
6      ? define([], t)
7      : "object" == typeof exports
8      ? (exports.Hls = t())
9      : (e.Hls = t());
10  })(this, function () {
11    return (function (e) {
12      var t = {};
13      function r(i) {
14        if (t[i]) return t[i].exports;
15        var a = (t[i] = { i: i, l: !1, exports: {} });
16        return e[i].call(a.exports, a, a.exports, r), (a.l = !0), a.exports;
17      }
18      return (
19        (r.m = e),
20        (r.c = t),
21        (r.d = function (e, t, i) {
22          r.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: i });
23        }),
24        (r.r = function (e) {
25          "undefined" != typeof Symbol &&
26            Symbol.toStringTag &&
27            Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }),
28            Object.defineProperty(e, "__esModule", { value: !0 });
29        }),
30        (r.t = function (e, t) {
31          if ((1 & t && (e = r(e)), 8 & t)) return e;
32          if (4 & t && "object" == typeof e && e && e.__esModule) return e;
33          var i = Object.create(null);
34          if (
35            (r.r(i),
36            Object.defineProperty(i, "default", { enumerable: !0, value: e }),
37            2 & t && "string" != typeof e)
38          )
39            for (var a in e)
40              r.d(
41                i,
42                a,
43                function (t) {
44                  return e[t];
45                }.bind(null, a)
46              );
47          return i;
48        }),
49        (r.n = function (e) {
50          var t =
51            e && e.__esModule
52              ? function () {
53                  return e.default;
54                }
55              : function () {
56                  return e;
57                };
58          return r.d(t, "a", t), t;
59        }),
60        (r.o = function (e, t) {
61          return Object.prototype.hasOwnProperty.call(e, t);
62        }),
63        (r.p = "/dist/"),
64        r((r.s = 13))
65      );
66    })([
67      function (e, t, r) {
68        "use strict";
69        r.d(t, "a", function () {
70          return u;
71        }),
72          r.d(t, "b", function () {
73            return c;
74          });
75        var i = r(5);
76        function a() {}
77        var n = { trace: a, debug: a, log: a, warn: a, info: a, error: a },
78          s = n;
79        function o(e, t) {
80          return (t = "[" + e + "] > " + t);
81        }
82        var l = Object(i.a)();
83        function d(e) {
84          var t = l.console[e];
85          return t
86            ? function () {
87                for (
88                  var r = arguments.length, i = new Array(r), a = 0;
89                  a < r;
90                  a++
91                )
92                  i[a] = arguments[a];
93                i[0] && (i[0] = o(e, i[0])), t.apply(l.console, i);
94              }
95            : a;
96        }
97        var u = function (e) {
98            if ((l.console && !0 === e) || "object" == typeof e) {
99              !(function (e) {
100                for (
101                  var t = arguments.length,
102                    r = new Array(t > 1 ? t - 1 : 0),
103                    i = 1;
104                  i < t;
105                  i++
106                )
107                  r[i - 1] = arguments[i];
108                r.forEach(function (t) {
109                  s[t] = e[t] ? e[t].bind(e) : d(t);
110                });
111              })(e, "debug", "log", "info", "warn", "error");
112              try {
113                s.log();
114              } catch (e) {
115                s = n;
116              }
117            } else s = n;
118          },
119          c = s;
120      },
121      function (e, t, r) {
122        "use strict";
123        t.a = {
124          MEDIA_ATTACHING: "hlsMediaAttaching",
125          MEDIA_ATTACHED: "hlsMediaAttached",
126          MEDIA_DETACHING: "hlsMediaDetaching",
127          MEDIA_DETACHED: "hlsMediaDetached",
128          BUFFER_RESET: "hlsBufferReset",
129          BUFFER_CODECS: "hlsBufferCodecs",
130          BUFFER_CREATED: "hlsBufferCreated",
131          BUFFER_APPENDING: "hlsBufferAppending",
132          BUFFER_APPENDED: "hlsBufferAppended",
133          BUFFER_EOS: "hlsBufferEos",
134          BUFFER_FLUSHING: "hlsBufferFlushing",
135          BUFFER_FLUSHED: "hlsBufferFlushed",
136          MANIFEST_LOADING: "hlsManifestLoading",
137          MANIFEST_LOADED: "hlsManifestLoaded",
138          MANIFEST_PARSED: "hlsManifestParsed",
139          LEVEL_SWITCHING: "hlsLevelSwitching",
140          LEVEL_SWITCHED: "hlsLevelSwitched",
141          LEVEL_LOADING: "hlsLevelLoading",
142          LEVEL_LOADED: "hlsLevelLoaded",
143          LEVEL_UPDATED: "hlsLevelUpdated",
144          LEVEL_PTS_UPDATED: "hlsLevelPtsUpdated",
145          AUDIO_TRACKS_UPDATED: "hlsAudioTracksUpdated",
146          AUDIO_TRACK_SWITCHING: "hlsAudioTrackSwitching",
147          AUDIO_TRACK_SWITCHED: "hlsAudioTrackSwitched",
148          AUDIO_TRACK_LOADING: "hlsAudioTrackLoading",
149          AUDIO_TRACK_LOADED: "hlsAudioTrackLoaded",
150          SUBTITLE_TRACKS_UPDATED: "hlsSubtitleTracksUpdated",
151          SUBTITLE_TRACK_SWITCH: "hlsSubtitleTrackSwitch",
152          SUBTITLE_TRACK_LOADING: "hlsSubtitleTrackLoading",
153          SUBTITLE_TRACK_LOADED: "hlsSubtitleTrackLoaded",
154          SUBTITLE_FRAG_PROCESSED: "hlsSubtitleFragProcessed",
155          INIT_PTS_FOUND: "hlsInitPtsFound",
156          FRAG_LOADING: "hlsFragLoading",
157          FRAG_LOAD_PROGRESS: "hlsFragLoadProgress",
158          FRAG_LOAD_EMERGENCY_ABORTED: "hlsFragLoadEmergencyAborted",
159          FRAG_LOADED: "hlsFragLoaded",
160          FRAG_DECRYPTED: "hlsFragDecrypted",
161          FRAG_PARSING_INIT_SEGMENT: "hlsFragParsingInitSegment",
162          FRAG_PARSING_USERDATA: "hlsFragParsingUserdata",
163          FRAG_PARSING_METADATA: "hlsFragParsingMetadata",
164          FRAG_PARSING_DATA: "hlsFragParsingData",
165          FRAG_PARSED: "hlsFragParsed",
166          FRAG_BUFFERED: "hlsFragBuffered",
167          FRAG_CHANGED: "hlsFragChanged",
168          FPS_DROP: "hlsFpsDrop",
169          FPS_DROP_LEVEL_CAPPING: "hlsFpsDropLevelCapping",
170          ERROR: "hlsError",
171          DESTROYING: "hlsDestroying",
172          KEY_LOADING: "hlsKeyLoading",
173          KEY_LOADED: "hlsKeyLoaded",
174          STREAM_STATE_TRANSITION: "hlsStreamStateTransition",
175          LIVE_BACK_BUFFER_REACHED: "hlsLiveBackBufferReached",
176        };
177      },
178      function (e, t, r) {
179        "use strict";
180        var i, a;
181        r.d(t, "b", function () {
182          return i;
183        }),
184          r.d(t, "a", function () {
185            return a;
186          }),
187          (function (e) {
188            (e.NETWORK_ERROR = "networkError"),
189              (e.MEDIA_ERROR = "mediaError"),
190              (e.KEY_SYSTEM_ERROR = "keySystemError"),
191              (e.MUX_ERROR = "muxError"),
192              (e.OTHER_ERROR = "otherError");
193          })(i || (i = {})),
194          (function (e) {
195            (e.KEY_SYSTEM_NO_KEYS = "keySystemNoKeys"),
196              (e.KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess"),
197              (e.KEY_SYSTEM_NO_SESSION = "keySystemNoSession"),
198              (e.KEY_SYSTEM_LICENSE_REQUEST_FAILED =
199                "keySystemLicenseRequestFailed"),
200              (e.KEY_SYSTEM_NO_INIT_DATA = "keySystemNoInitData"),
201              (e.MANIFEST_LOAD_ERROR = "manifestLoadError"),
202              (e.MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut"),
203              (e.MANIFEST_PARSING_ERROR = "manifestParsingError"),
204              (e.MANIFEST_INCOMPATIBLE_CODECS_ERROR =
205                "manifestIncompatibleCodecsError"),
206              (e.LEVEL_LOAD_ERROR = "levelLoadError"),
207              (e.LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut"),
208              (e.LEVEL_SWITCH_ERROR = "levelSwitchError"),
209              (e.AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError"),
210              (e.AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut"),
211              (e.FRAG_LOAD_ERROR = "fragLoadError"),
212              (e.FRAG_LOAD_TIMEOUT = "fragLoadTimeOut"),
213              (e.FRAG_DECRYPT_ERROR = "fragDecryptError"),
214              (e.FRAG_PARSING_ERROR = "fragParsingError"),
215              (e.REMUX_ALLOC_ERROR = "remuxAllocError"),
216              (e.KEY_LOAD_ERROR = "keyLoadError"),
217              (e.KEY_LOAD_TIMEOUT = "keyLoadTimeOut"),
218              (e.BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError"),
219              (e.BUFFER_APPEND_ERROR = "bufferAppendError"),
220              (e.BUFFER_APPENDING_ERROR = "bufferAppendingError"),
221              (e.BUFFER_STALLED_ERROR = "bufferStalledError"),
222              (e.BUFFER_FULL_ERROR = "bufferFullError"),
223              (e.BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole"),
224              (e.BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall"),
225              (e.INTERNAL_EXCEPTION = "internalException");
226          })(a || (a = {}));
227      },
228      function (e, t, r) {
229        "use strict";
230        r.d(t, "a", function () {
231          return i;
232        });
233        var i =
234          Number.isFinite ||
235          function (e) {
236            return "number" == typeof e && isFinite(e);
237          };
238      },
239      function (e, t, r) {
240        "use strict";
241        r.d(t, "b", function () {
242          return o;
243        });
244        var i,
245          a = r(5),
246          n = (function () {
247            function e() {}
248            return (
249              (e.isHeader = function (e, t) {
250                return (
251                  t + 10 <= e.length &&
252                  73 === e[t] &&
253                  68 === e[t + 1] &&
254                  51 === e[t + 2] &&
255                  e[t + 3] < 255 &&
256                  e[t + 4] < 255 &&
257                  e[t + 6] < 128 &&
258                  e[t + 7] < 128 &&
259                  e[t + 8] < 128 &&
260                  e[t + 9] < 128
261                );
262              }),
263              (e.isFooter = function (e, t) {
264                return (
265                  t + 10 <= e.length &&
266                  51 === e[t] &&
267                  68 === e[t + 1] &&
268                  73 === e[t + 2] &&
269                  e[t + 3] < 255 &&
270                  e[t + 4] < 255 &&
271                  e[t + 6] < 128 &&
272                  e[t + 7] < 128 &&
273                  e[t + 8] < 128 &&
274                  e[t + 9] < 128
275                );
276              }),
277              (e.getID3Data = function (t, r) {
278                for (var i = r, a = 0; e.isHeader(t, r); ) {
279                  (a += 10),
280                    (a += e._readSize(t, r + 6)),
281                    e.isFooter(t, r + 10) && (a += 10),
282                    (r += a);
283                }
284                if (a > 0) return t.subarray(i, i + a);
285              }),
286              (e._readSize = function (e, t) {
287                var r = 0;
288                return (
289                  (r = (127 & e[t]) << 21),
290                  (r |= (127 & e[t + 1]) << 14),
291                  (r |= (127 & e[t + 2]) << 7),
292                  (r |= 127 & e[t + 3])
293                );
294              }),
295              (e.getTimeStamp = function (t) {
296                for (var r = e.getID3Frames(t), i = 0; i < r.length; i++) {
297                  var a = r[i];
298                  if (e.isTimeStampFrame(a)) return e._readTimeStamp(a);
299                }
300              }),
301              (e.isTimeStampFrame = function (e) {
302                return (
303                  e &&
304                  "PRIV" === e.key &&
305                  "com.apple.streaming.transportStreamTimestamp" === e.info
306                );
307              }),
308              (e._getFrameData = function (t) {
309                var r = String.fromCharCode(t[0], t[1], t[2], t[3]),
310                  i = e._readSize(t, 4);
311                return { type: r, size: i, data: t.subarray(10, 10 + i
311) };
312              }),
313              (e.getID3Frames = function (t) {
314                for (var r = 0, i = []; e.isHeader(t, r); ) {
315                  for (
316                    var a = e._readSize(t, r + 6), n = (r += 10) + a;
317                    r + 8 < n;
318
319                  ) {
320                    var s = e._getFrameData(t.subarray(r)),
321                      o = e._decodeFrame(s);
322                    o && i.push(o), (r += s.size + 10);
323                  }
324                  e.isFooter(t, r) && (r += 10);
325                }
326                return i;
327              }),
328              (e._decodeFrame = function (t) {
329                return "PRIV" === t.type
330                  ? e._decodePrivFrame(t)
331                  : "T" === t.type[0]
332                  ? e._decodeTextFrame(t)
333                  : "W" === t.type[0]
334                  ? e._decodeURLFrame(t)
335                  : void 0;
336              }),
337              (e._readTimeStamp = function (e) {
338                if (8 === e.data.byteLength) {
339                  var t = new Uint8Array(e.data),
340                    r = 1 & t[3],
341                    i = (t[4] << 23) + (t[5] << 15) + (t[6] << 7) + t[7];
342                  return (i /= 45), r && (i += 47721858.84), Math.round(i);
343                }
344              }),
345              (e._decodePrivFrame = function (t) {
346                if (!(t.size < 2)) {
347                  var r = e._utf8ArrayToStr(t.data, !0),
348                    i = new Uint8Array(t.data.subarray(r.length + 1));
349                  return { key: t.type, info: r, data: i.buffer };
350                }
351              }),
352              (e._decodeTextFrame = function (t) {
353                if (!(t.size < 2)) {
354                  if ("TXXX" === t.type) {
355                    var r = 1,
356                      i = e._utf8ArrayToStr(t.data.subarray(r), !0);
357                    r += i.length + 1;
358                    var a = e._utf8ArrayToStr(t.data.subarray(r));
359                    return { key: t.type, info: i, data: a };
360                  }
361                  var n = e._utf8ArrayToStr(t.data.subarray(1));
362                  return { key: t.type, data: n };
363                }
364              }),
365              (e._decodeURLFrame = function (t) {
366                if ("WXXX" === t.type) {
367                  if (t.size < 2) return;
368                  var r = 1,
369                    i = e._utf8ArrayToStr(t.data.subarray(r));
370                  r += i.length + 1;
371                  var a = e._utf8ArrayToStr(t.data.subarray(r));
372                  return { key: t.type, info: i, data: a };
373                }
374                var n = e._utf8ArrayToStr(t.data);
375                return { key: t.type, data: n };
376              }),
377              (e._utf8ArrayToStr = function (e, t) {
378                void 0 === t && (t = !1);
379                var r = s();
380                if (r) {
381                  var i = r.decode(e);
382                  if (t) {
383                    var a = i.indexOf("\0");
384                    return -1 !== a ? i.substring(0, a) : i;
385                  }
386                  return i.replace(/\0/g, "");
387                }
388                for (var n, o, l, d = e.length, u = "", c = 0; c < d; ) {
389                  if (0 === (n = e[c++]) && t) return u;
390                  if (0 !== n && 3 !== n)
391                    switch (n >> 4) {
392                      case 0:
393                      case 1:
394                      case 2:
395                      case 3:
396                      case 4:
397                      case 5:
398                      case 6:
399                      case 7:
400                        u += String.fromCharCode(n);
401                        break;
402                      case 12:
403                      case 13:
404                        (o = e[c++]),
405                          (u += String.fromCharCode(
406                            ((31 & n) << 6) | (63 & o)
407                          ));
408                        break;
409                      case 14:
410                        (o = e[c++]),
411                          (l = e[c++]),
412                          (u += String.fromCharCode(
413                            ((15 & n) << 12) | ((63 & o) << 6) | ((63 & l) << 0)
414                          ));
415                    }
416                }
417                return u;
418              }),
419              e
420            );
421          })();
422        function s() {
423          var e = Object(a.a)();
424          return (
425            i || void 0 === e.TextDecoder || (i = new e.TextDecoder("utf-8")), i
426          );
427        }
428        var o = n._utf8ArrayToStr;
429        t.a = n;
430      },
431      function (e, t, r) {
432        "use strict";
433        function i() {
434          return "undefined" == typeof window ? self : window;
435        }
436        r.d(t, "a", function () {
437          return i;
438        });
439      },
440      function (e, t, r) {
441        var i, a, n, s, o;
442        (i =
443          /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/\?#]*\/)*.*?)??(;.*?)?(\?.*?)?(#.*?)?$/),
444          (a = /^([^\/?#]*)(.*)$/),
445          (n = /(?:\/|^)\.(?=\/)/g),
446          (s = /(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g),
447          (o = {
448            buildAbsoluteURL: function (e, t, r) {
449              if (((r = r || {}), (e = e.trim()), !(t = t.trim()))) {
450                if (!r.alwaysNormalize) return e;
451                var i = o.parseURL(e);
452                if (!i) throw new Error("Error trying to parse base URL.");
453                return (
454                  (i.path = o.normalizePath(i.path)), o.buildURLFromParts(i)
455                );
456              }
457              var n = o.parseURL(t);
458              if (!n) throw new Error("Error trying to parse relative URL.");
459              if (n.scheme)
460                return r.alwaysNormalize
461                  ? ((n.path = o.normalizePath(n.path)), o.buildURLFromParts(n))
462                  : t;
463              var s = o.parseURL(e);
464              if (!s) throw new Error("Error trying to parse base URL.");
465              if (!s.netLoc && s.path && "/" !== s.path[0]) {
466                var l = a.exec(s.path);
467                (s.netLoc = l[1]), (s.path = l[2]);
468              }
469              s.netLoc && !s.path && (s.path = "/");
470              var d = {
471                scheme: s.scheme,
472                netLoc: n.netLoc,
473                path: null,
474                params: n.params,
475                query: n.query,
476                fragment: n.fragment,
477              };
478              if (!n.netLoc && ((d.netLoc = s.netLoc), "/" !== n.path[0]))
479                if (n.path) {
480                  var u = s.path,
481                    c = u.substring(0, u.lastIndexOf("/") + 1) + n.path;
482                  d.path = o.normalizePath(c);
483                } else
484                  (d.path = s.path),
485                    n.params ||
486                      ((d.params = s.params), n.query || (d.query = s.query));
487              return (
488                null === d.path &&
489                  (d.path = r.alwaysNormalize
490                    ? o.normalizePath(n.path)
491                    : n.path),
492                o.buildURLFromParts(d)
493              );
494            },
495            parseURL: function (e) {
496              var t = i.exec(e);
497              return t
498                ? {
499                    scheme: t[1] || "",
500                    netLoc: t[2] || "",
501                    path: t[3] || "",
502                    params: t[4] || "",
503                    query: t[5] || "",
504                    fragment: t[6] || "",
505                  }
506                : null;
507            },
508            normalizePath: function (e) {
509              for (
510                e = e.split("").reverse().join("").replace(n, "");
511                e.length !== (e = e.replace(s, "")).length;
512
513              );
514              return e.split("").reverse().join("");
515            },
516            buildURLFromParts: function (e) {
517              return (
518                e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment
519              );
520            },
521          }),
522          (e.exports = o);
523      },
524      function (e, t, r) {
525        "use strict";
526        var i = (function () {
527            function e(e, t) {
528              (this.subtle = e), (this.aesIV = t);
529            }
530            return (
531              (e.prototype.decrypt = function (e, t) {
532                return this.subtle.decrypt(
533                  { name: "AES-CBC", iv: this.aesIV },
534                  t,
535                  e
536                );
537              }),
538              e
539            );
540          })(),
541          a = (function () {
542            function e(e, t) {
543              (this.subtle = e), (this.key = t);
544            }
545            return (
546              (e.prototype.expandKey = function () {
547                return this.subtle.importKey(
548                  "raw",
549                  this.key,
550                  { name: "AES-CBC" },
551                  !1,
552                  ["encrypt", "decrypt"]
553                );
554              }),
555              e
556            );
557          })();
558        var n = (function () {
559            function e() {
560              (this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]),
561                (this.subMix = [
562                  new Uint32Array(256),
563                  new Uint32Array(256),
564                  new Uint32Array(256),
565                  new Uint32Array(256),
566                ]),
567                (this.invSubMix = [
568                  new Uint32Array(256),
569                  new Uint32Array(256),
570                  new Uint32Array(256),
571                  new Uint32Array(256),
572                ]),
573                (this.sBox = new Uint32Array(256)),
574                (this.invSBox = new Uint32Array(256)),
575                (this.key = new Uint32Array(0)),
576                this.initTable();
577            }
578            var t = e.prototype;
579            return (
580              (t.uint8ArrayToUint32Array_ = function (e) {
581                for (
582                  var t = new DataView(e), r = new Uint32Array(4), i = 0;
583                  i < 4;
584                  i++
585                )
586                  r[i] = t.getUint32(4 * i);
587                return r;
588              }),
589              (t.initTable = function () {
590                var e = this.sBox,
591                  t = this.invSBox,
592                  r = this.subMix,
593                  i = r[0],
594                  a = r[1],
595                  n = r[2],
596                  s = r[3],
597                  o = this.invSubMix,
598                  l = o[0],
599                  d = o[1],
600                  u = o[2],
601                  c = o[3],
602                  h = new Uint32Array(256),
603                  f = 0,
604                  g = 0,
605                  p = 0;
606                for (p = 0; p < 256; p++)
607                  h[p] = p < 128 ? p << 1 : (p << 1) ^ 283;
608                for (p = 0; p < 256; p++) {
609                  var v = g ^ (g << 1) ^ (g << 2) ^ (g << 3) ^ (g << 4);
610                  (v = (v >>> 8) ^ (255 & v) ^ 99), (e[f] = v), (t[v] = f);
611                  var m = h[f],
612                    y = h[m],
613                    b = h[y],
614                    T = (257 * h[v]) ^ (16843008 * v);
615                  (i[f] = (T << 24) | (T >>> 8)),
616                    (a[f] = (T << 16) | (T >>> 16)),
617                    (n[f] = (T << 8) | (T >>> 24)),
618                    (s[f] = T),
619                    (T =
620                      (16843009 * b) ^
621                      (65537 * y) ^
622                      (257 * m) ^
623                      (16843008 * f)),
624                    (l[v] = (T << 24) | (T >>> 8)),
625                    (d[v] = (T << 16) | (T >>> 16)),
626                    (u[v] = (T << 8) | (T >>> 24)),
627                    (c[v] = T),
628                    f
629                      ? ((f = m ^ h[h[h[b ^ m]]]), (g ^= h[h[g]]))
630                      : (f = g = 1);
631                }
632              }),
633              (t.expandKey = function (e) {
634                for (
635                  var t = this.uint8ArrayToUint32Array_(e), r = !0, i = 0;
636                  i < t.length && r;
637
638                )
639                  (r = t[i] === this.key[i]), i++;
640                if (!r) {
641                  this.key = t;
642                  var a = (this.keySize = t.length);
643                  if (4 !== a && 6 !== a && 8 !== a)
644                    throw new Error("Invalid aes key size=" + a);
645                  var n,
646                    s,
647                    o,
648                    l,
649                    d = (this.ksRows = 4 * (a + 6 + 1)),
650                    u = (this.keySchedule = new Uint32Array(d)),
651                    c = (this.invKeySchedule = new Uint32Array(d)),
652                    h = this.sBox,
653                    f = this.rcon,
654                    g = this.invSubMix,
655                    p = g[0],
656                    v = g[1],
657                    m = g[2],
658                    y = g[3];
659                  for (n = 0; n < d; n++)
660                    n < a
661                      ? (o = u[n] = t[n])
662                      : ((l = o),
663                        n % a == 0
664                          ? ((l =
665                              (h[(l = (l << 8) | (l >>> 24)) >>> 24] << 24) |
666                              (h[(l >>> 16) & 255] << 16) |
667                              (h[(l >>> 8) & 255] << 8) |
668                              h[255 & l]),
669                            (l ^= f[(n / a) | 0] << 24))
670                          : a > 6 &&
671                            n % a == 4 &&
672                            (l =
673                              (h[l >>> 24] << 24) |
674                              (h[(l >>> 16) & 255] << 16) |
675                              (h[(l >>> 8) & 255] << 8) |
676                              h[255 & l]),
677                        (u[n] = o = (u[n - a] ^ l) >>> 0));
678                  for (s = 0; s < d; s++)
679                    (n = d - s),
680                      (l = 3 & s ? u[n] : u[n - 4]),
681                      (c[s] =
682                        s < 4 || n <= 4
683                          ? l
684                          : p[h[l >>> 24]] ^
685                            v[h[(l >>> 16) & 255]] ^
686                            m[h[(l >>> 8) & 255]] ^
687                            y[h[255 & l]]),
688                      (c[s] = c[s] >>> 0);
689                }
690              }),
691              (t.networkToHostOrderSwap = function (e) {
692                return (
693                  (e << 24) |
694                  ((65280 & e) << 8) |
695                  ((16711680 & e) >> 8) |
696                  (e >>> 24)
697                );
698              }),
699              (t.decrypt = function (e, t, r, i) {
700                for (
701                  var a,
702                    n,
703                    s,
704                    o,
705                    l,
706                    d,
707                    u,
708                    c,
709                    h,
710                    f,
711                    g,
712                    p,
713                    v,
714                    m,
715                    y,
716                    b,
717                    T,
718                    E = this.keySize + 6,
719                    S = this.invKeySchedule,
720                    _ = this.invSBox,
721                    A = this.invSubMix,
722                    R = A[0],
723                    w = A[1],
724                    L = A[2],
725                    k = A[3],
726                    D = this.uint8ArrayToUint32Array_(r),
727                    C = D[0],
728                    O = D[1],
729                    I = D[2],
730                    P = D[3],
731                    x = new Int32Array(e),
732                    M = new Int32Array(x.length),
733                    F = this.networkToHostOrderSwap;
734                  t < x.length;
735
736                ) {
737                  for (
738                    h = F(x[t]),
739                      f = F(x[t + 1]),
740                      g = F(x[t + 2]),
741                      p = F(x[t + 3]),
742                      l = h ^ S[0],
743                      d = p ^ S[1],
744                      u = g ^ S[2],
745                      c = f ^ S[3],
746                      v = 4,
747                      m = 1;
748                    m < E;
749                    m++
750                  )
751                    (a =
752                      R[l >>> 24] ^
753                      w[(d >> 16) & 255] ^
754                      L[(u >> 8) & 255] ^
755                      k[255 & c] ^
756                      S[v]),
757                      (n =
758                        R[d >>> 24] ^
759                        w[(u >> 16) & 255] ^
760                        L[(c >> 8) & 255] ^
761                        k[255 & l] ^
762                        S[v + 1]),
763                      (s =
764                        R[u >>
764> 24] ^
765                        w[(c >> 16) & 255] ^
766                        L[(l >> 8) & 255] ^
767                        k[255 & d] ^
768                        S[v + 2]),
769                      (o =
770                        R[c >>> 24] ^
771                        w[(l >> 16) & 255] ^
772                        L[(d >> 8) & 255] ^
773                        k[255 & u] ^
774                        S[v + 3]),
775                      (l = a),
776                      (d = n),
777                      (u = s),
778                      (c = o),
779                      (v += 4);
780                  (a =
781                    (_[l >>> 24] << 24) ^
782                    (_[(d >> 16) & 255] << 16) ^
783                    (_[(u >> 8) & 255] << 8) ^
784                    _[255 & c] ^
785                    S[v]),
786                    (n =
787                      (_[d >>> 24] << 24) ^
788                      (_[(u >> 16) & 255] << 16) ^
789                      (_[(c >> 8) & 255] << 8) ^
790                      _[255 & l] ^
791                      S[v + 1]),
792                    (s =
793                      (_[u >>> 24] << 24) ^
794                      (_[(c >> 16) & 255] << 16) ^
795                      (_[(l >> 8) & 255] << 8) ^
796                      _[255 & d] ^
797                      S[v + 2]),
798                    (o =
799                      (_[c >>> 24] << 24) ^
800                      (_[(l >> 16) & 255] << 16) ^
801                      (_[(d >> 8) & 255] << 8) ^
802                      _[255 & u] ^
803                      S[v + 3]),
804                    (v += 3),
805                    (M[t] = F(a ^ C)),
806                    (M[t + 1] = F(o ^ O)),
807                    (M[t + 2] = F(s ^ I)),
808                    (M[t + 3] = F(n ^ P)),
809                    (C = h),
810                    (O = f),
811                    (I = g),
812                    (P = p),
813                    (t += 4);
814                }
815                return i
816                  ? ((y = M.buffer),
817                    (b = y.byteLength),
818                    (T = b && new DataView(y).getUint8(b - 1))
819                      ? y.slice(0, b - T)
820                      : y)
821                  : M.buffer;
822              }),
823              (t.destroy = function () {
824                (this.key = void 0),
825                  (this.keySize = void 0),
826                  (this.ksRows = void 0),
827                  (this.sBox = void 0),
828                  (this.invSBox = void 0),
829                  (this.subMix = void 0),
830                  (this.invSubMix = void 0),
831                  (this.keySchedule = void 0),
832                  (this.invKeySchedule = void 0),
833                  (this.rcon = void 0);
834              }),
835              e
836            );
837          })(),
838          s = r(2),
839          o = r(0),
840          l = r(1),
841          d = r(5),
842          u = Object(d.a)(),
843          c = (function () {
844            function e(e, t, r) {
845              var i = (void 0 === r ? {} : r).removePKCS7Padding,
846                a = void 0 === i || i;
847              if (
848                ((this.logEnabled = !0),
849                (this.observer = e),
850                (this.config = t),
851                (this.removePKCS7Padding = a),
852                a)
853              )
854                try {
855                  var n = u.crypto;
856                  n && (this.subtle = n.subtle || n.webkitSubtle);
857                } catch (e) {}
858              this.disableWebCrypto = !this.subtle;
859            }
860            var t = e.prototype;
861            return (
862              (t.isSync = function () {
863                return this.disableWebCrypto && this.config.enableSoftwareAES;
864              }),
865              (t.decrypt = function (e, t, r, s) {
866                var l = this;
867                if (this.disableWebCrypto && this.config.enableSoftwareAES) {
868                  this.logEnabled &&
869                    (o.b.log("JS AES decrypt"), (this.logEnabled = !1));
870                  var d = this.decryptor;
871                  d || (this.decryptor = d = new n()),
872                    d.expandKey(t),
873                    s(d.decrypt(e, 0, r, this.removePKCS7Padding));
874                } else {
875                  this.logEnabled &&
876                    (o.b.log("WebCrypto AES decrypt"), (this.logEnabled = !1));
877                  var u = this.subtle;
878                  this.key !== t &&
879                    ((this.key = t), (this.fastAesKey = new a(u, t))),
880                    this.fastAesKey
881                      .expandKey()
882                      .then(function (a) {
883                        new i(u, r)
884                          .decrypt(e, a)
885                          .catch(function (i) {
886                            l.onWebCryptoError(i, e, t, r, s);
887                          })
888                          .then(function (e) {
889                            s(e);
890                          });
891                      })
892                      .catch(function (i) {
893                        l.onWebCryptoError(i, e, t, r, s);
894                      });
895                }
896              }),
897              (t.onWebCryptoError = function (e, t, r, i, a) {
898                this.config.enableSoftwareAES
899                  ? (o.b.log("WebCrypto Error, disable WebCrypto API"),
900                    (this.disableWebCrypto = !0),
901                    (this.logEnabled = !0),
902                    this.decrypt(t, r, i, a))
903                  : (o.b.error("decrypting error : " + e.message),
904                    this.observer.trigger(l.a.ERROR, {
905                      type: s.b.MEDIA_ERROR,
906                      details: s.a.FRAG_DECRYPT_ERROR,
907                      fatal: !0,
908                      reason: e.message,
909                    }));
910              }),
911              (t.destroy = function () {
912                var e = this.decryptor;
913                e && (e.destroy(), (this.decryptor = void 0));
914              }),
915              e
916            );
917          })();
918        t.a = c;
919      },
920      function (e, t, r) {
921        "use strict";
922        var i = Object.prototype.hasOwnProperty,
923          a = "~";
924        function n() {}
925        function s(e, t, r) {
926          (this.fn = e), (this.context = t), (this.once = r || !1);
927        }
928        function o(e, t, r, i, n) {
929          if ("function" != typeof r)
930            throw new TypeError("The listener must be a function");
931          var o = new s(r, i || e, n),
932            l = a ? a + t : t;
933          return (
934            e._events[l]
935              ? e._events[l].fn
936                ? (e._events[l] = [e._events[l], o])
937                : e._events[l].push(o)
938              : ((e._events[l] = o), e._eventsCount++),
939            e
940          );
941        }
942        function l(e, t) {
943          0 == --e._eventsCount ? (e._events = new n()) : delete e._events[t];
944        }
945        function d() {
946          (this._events = new n()), (this._eventsCount = 0);
947        }
948        Object.create &&
949          ((n.prototype = Object.create(null)), new n().__proto__ || (a = !1)),
950          (d.prototype.eventNames = function () {
951            var e,
952              t,
953              r = [];
954            if (0 === this._eventsCount) return r;
955            for (t in (e = this._events))
956              i.call(e, t) && r.push(a ? t.slice(1) : t);
957            return Object.getOwnPropertySymbols
958              ? r.concat(Object.getOwnPropertySymbols(e))
959              : r;
960          }),
961          (d.prototype.listeners = function (e) {
962            var t = a ? a + e : e,
963              r = this._events[t];
964            if (!r) return [];
965            if (r.fn) return [r.fn];
966            for (var i = 0, n = r.length, s = new Array(n); i < n; i++)
967              s[i] = r[i].fn;
968            return s;
969          }),
970          (d.prototype.listenerCount = function (e) {
971            var t = a ? a + e : e,
972              r = this._events[t];
973            return r ? (r.fn ? 1 : r.length) : 0;
974          }),
975          (d.prototype.emit = function (e, t, r, i, n, s) {
976            var o = a ? a + e : e;
977            if (!this._events[o]) return !1;
978            var l,
979              d,
980              u = this._events[o],
981              c = arguments.length;
982            if (u.fn) {
983              switch ((u.once && this.removeListener(e, u.fn, void 0, !0), c)) {
984                case 1:
985                  return u.fn.call(u.context), !0;
986                case 2:
987                  return u.fn.call(u.context, t), !0;
988                case 3:
989                  return u.fn.call(u.context, t, r), !0;
990                case 4:
991                  return u.fn.call(u.context, t, r, i), !0;
992                case 5:
993                  return u.fn.call(u.context, t, r, i, n), !0;
994                case 6:
995                  return u.fn.call(u.context, t, r, i, n, s), !0;
996              }
997              for (d = 1, l = new Array(c - 1); d < c; d++)
998                l[d - 1] = arguments[d];
999              u.fn.apply(u.context, l);
1000            } else {
1001              var h,
1002                f = u.length;
1003              for (d = 0; d < f; d++)
1004                switch (
1005                  (u[d].once && this.removeListener(e, u[d].fn, void 0, !0), c)
1006                ) {
1007                  case 1:
1008                    u[d].fn.call(u[d].context);
1009                    break;
1010                  case 2:
1011                    u[d].fn.call(u[d].context, t);
1012                    break;
1013                  case 3:
1014                    u[d].fn.call(u[d].context, t, r);
1015                    break;
1016                  case 4:
1017                    u[d].fn.call(u[d].context, t, r, i);
1018                    break;
1019                  default:
1020                    if (!l)
1021                      for (h = 1, l = new Array(c - 1); h < c; h++)
1022                        l[h - 1] = arguments[h];
1023                    u[d].fn.apply(u[d].context, l);
1024                }
1025            }
1026            return !0;
1027          }),
1028          (d.prototype.on = function (e, t, r) {
1029            return o(this, e, t, r, !1);
1030          }),
1031          (d.prototype.once = function (e, t, r) {
1032            return o(this, e, t, r, !0);
1033          }),
1034          (d.prototype.removeListener = function (e, t, r, i) {
1035            var n = a ? a + e : e;
1036            if (!this._events[n]) return this;
1037            if (!t) return l(this, n), this;
1038            var s = this._events[n];
1039            if (s.fn)
1040              s.fn !== t ||
1041                (i && !s.once) ||
1042                (r && s.context !== r) ||
1043                l(this, n);
1044            else {
1045              for (var o = 0, d = [], u = s.length; o < u; o++)
1046                (s[o].fn !== t ||
1047                  (i && !s[o].once) ||
1048                  (r && s[o].context !== r)) &&
1049                  d.push(s[o]);
1050              d.length
1051                ? (this._events[n] = 1 === d.length ? d[0] : d)
1052                : l(this, n);
1053            }
1054            return this;
1055          }),
1056          (d.prototype.removeAllListeners = function (e) {
1057            var t;
1058            return (
1059              e
1060                ? ((t = a ? a + e : e), this._events[t] && l(this, t))
1061                : ((this._events = new n()), (this._eventsCount = 0)),
1062              this
1063            );
1064          }),
1065          (d.prototype.off = d.prototype.removeListener),
1066          (d.prototype.addListener = d.prototype.on),
1067          (d.prefixed = a),
1068          (d.EventEmitter = d),
1069          (e.exports = d);
1070      },
1071      function (e, t, r) {
1072        "use strict";
1073        var i = r(1),
1074          a = r(2),
1075          n = r(7),
1076          s = r(3),
1077          o = r(0),
1078          l = r(5);
1079        function d(e, t) {
1080          return 255 === e[t] && 240 == (246 & e[t + 1]);
1081        }
1082        function u(e, t) {
1083          return 1 & e[t + 1] ? 7 : 9;
1084        }
1085        function c(e, t) {
1086          return (
1087            ((3 & e[t + 3]) << 11) | (e[t + 4] << 3) | ((224 & e[t + 5]) >>> 5)
1088          );
1089        }
1090        function h(e, t) {
1091          return !!(t + 1 < e.length && d(e, t));
1092        }
1093        function f(e, t) {
1094          if (h(e, t)) {
1095            var r = u(e, t);
1096            t + 5 < e.length && (r = c(e, t));
1097            var i = t + r;
1098            if (i === e.length || (i + 1 < e.length && d(e, i))) return !0;
1099          }
1100          return !1;
1101        }
1102        function g(e, t, r, n, s) {
1103          if (!e.samplerate) {
1104            var l = (function (e, t, r, n) {
1105              var s,
1106                l,
1107                d,
1108                u,
1109                c,
1110                h = navigator.userAgent.toLowerCase(),
1111                f = n,
1112                g = [
1113                  96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3,
1114                  11025, 8e3, 7350,
1115                ];
1116              if (
1117                ((s = 1 + ((192 & t[r + 2]) >>> 6)),
1118                !((l = (60 & t[r + 2]) >>> 2) > g.length - 1))
1119              )
1120                return (
1121                  (u = (1 & t[r + 2]) << 2),
1122                  (u |= (192 & t[r + 3]) >>> 6),
1123                  o.b.log(
1124                    "manifest codec:" +
1125                      n +
1126                      ",ADTS data:type:" +
1127                      s +
1128                      ",sampleingIndex:" +
1129                      l +
1130                      "[" +
1131                      g[l] +
1132                      "Hz],channelConfig:" +
1133                      u
1134                  ),
1135                  /firefox/i.test(h)
1136                    ? l >= 6
1137                      ? ((s = 5), (c = new Array(4)), (d = l - 3))
1138                      : ((s = 2), (c = new Array(2)), (d = l))
1139                    : -1 !== h.indexOf("android")
1140                    ? ((s = 2), (c = new Array(2)), (d = l))
1141                    : ((s = 5),
1142                      (c = new Array(4)),
1143                      (n &&
1144                        (-1 !== n.indexOf("mp4a.40.29") ||
1145                          -1 !== n.indexOf("mp4a.40.5"))) ||
1146                      (!n && l >= 6)
1147                        ? (d = l - 3)
1148                        : (((n &&
1149                            -1 !== n.indexOf("mp4a.40.2") &&
1150                            ((l >= 6 && 1 === u) || /vivaldi/i.test(h))) ||
1151                            (!n && 1 === u)) &&
1152                            ((s = 2), (c = new Array(2))),
1153                          (d = l))),
1154                  (c[0] = s << 3),
1155                  (c[0] |= (14 & l) >> 1),
1156                  (c[1] |= (1 & l) << 7),
1157                  (c[1] |= u << 3),
1158                  5 === s &&
1159                    ((c[1] |= (14 & d) >> 1),
1160                    (c[2] = (1 & d) << 7),
1161                    (c[2] |= 8),
1162                    (c[3] = 0)),
1163                  {
1164                    config: c,
1165                    samplerate: g[l],
1166                    channelCount: u,
1167                    codec: "mp4a.40." + s,
1168                    manifestCodec: f,
1169                  }
1170                );
1171              e.trigger(i.a.ERROR, {
1172                type: a.b.MEDIA_ERROR,
1173                details: a.a.FRAG_PARSING_ERROR,
1174                fatal: !0,
1175                reason: "invalid ADTS sampling index:" + l,
1176              });
1177            })(t, r, n, s);
1178            (e.config = l.config),
1179              (e.samplerate = l.samplerate),
1180              (e.channelCount = l.channelCount),
1181              (e.codec = l.codec),
1182              (e.manifestCodec = l.manifestCodec),
1183              o.b.log(
1184                "parsed codec:" +
1185                  e.codec +
1186                  ",rate:" +
1187                  l.samplerate +
1188                  ",nb channel:" +
1189                  l.channelCount
1190              );
1191          }
1192        }
1193        function p(e) {
1194          return 9216e4 / e;
1195        }
1196        function v(e, t, r, i, a) {
1197          var n = (function (e, t, r, i, a) {
1198            var n,
1199              s,
1200              o = e.length;
1201            if (((n = u(e, t)), (s = c(e, t)), (s -= n) > 0 && t + n + s <= o))
1202              return { headerLength: n, frameLength: s, stamp: r + i * a };
1203          })(t, r, i, a, p(e.samplerate));
1204          if (n) {
1205            var s = n.stamp,
1206              o = n.headerLength,
1207              l = n.frameLength,
1208              d = { unit: t.subarray(r + o, r + o + l), pts: s, dts: s };
1209            return e.samples.push(d), { sample: d, length: l + o };
1210          }
1211        }
1212        var m = r(4),
1213          y = (function () {
1214            function e(e, t, r) {
1215              (this.observer = e), (this.config = r), (this.remuxer = t);
1216            }
1217            var t = e.prototype;
1218            return (
1219              (t.resetInitSegment = function (e, t, r, i) {
1220                this._audioTrack = {
1221                  container: "audio/adts",
1222                  type: "audio",
1223                  id: 0,
1224                  sequenceNumber: 0,
1225                  isAAC: !0,
1226                  samples: [],
1227                  len: 0,
1228                  manifestCodec: t,
1229                  duration: i,
1230                  inputTimeScale: 9e4,
1231                };
1232              }),
1233              (t.resetTimeStamp = function () {}),
1234              (e.probe = function (e) {
1235                if (!e) return !1;
1236                for (
1237                  var t = (m.a.getID3Data(e, 0) || []).length, r = e.length;
1238                  t < r;
1239                  t++
1240                )
1241                  if (f(e, t)) return o.b.log("ADTS sync word found !"), !0;
1242                return !1;
1243              }),
1244              (t.append = function (e, t, r, i) {
1245                for (
1246                  var a = this._audioTrack,
1247                    n = m.a.getID3Data(e, 0) || [],
1248                    l = m.a.getTimeStamp(n),
1249                    d = Object(s.a)(l) ? 90 * l : 9e4 * t,
1250                    u = 0,
1251                    c = d,
1252                    f = e.length,
1253                    p = n.length,
1254                    y = [{ pts: c, dts: c, data: n }];
1255                  p < f - 1;
1256
1257                )
1258                  if (h(e, p) && p + 5 < f) {
1259                    g(a, this.observer, e, p, a.manifestCodec);
1260                    var b = v(a, e, p, d, u);
1261                    if (!b) {
1262                      o.b.log("Unable to parse AAC frame");
1263                      break;
1264                    }
1265                    (p += b.length), (c = b.sample.pts), u++;
1266                  } else
1267                    m.a.isHeader(e, p)
1268                      ? ((n = m.a.getID3Data(e, p)),
1269                        y.push({ pts: c, dts: c, data: n }),
1270                        (p += n.length))
1271                      : p++;
1272                this.remuxer.remux(
1273                  a,
1274                  { samples: [] },
1275                  { samples: y, inputTimeScale: 9e4 },
1276                  { samples: [] },
1277                  t,
1278                  r,
1279                  i
1280                );
1281              }),
1282              (t.destroy = function () {}),
1283              e
1284            );
1285          })(),
1286          b = r(10),
1287          T = {
1288            BitratesMap: [
1289              32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448,
1290              32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384,
1291              32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32,
1292              48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16,
1293              24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160,
1294            ],
1295            SamplingRateMap: [
1296              44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3,
1297            ],
1298            SamplesCoefficients: [
1299              [0, 72, 144, 12],
1300              [0, 0, 0, 0],
1301              [0, 72, 144, 12],
1302              [0, 144, 144, 12],
1303            ],
1304            BytesInSlot: [0, 1, 1, 4],
1305            appendFrame: function (e, t, r, i, a) {
1306              if (!(r + 24 > t.length)) {
1307                var n = this.parseHeader(t, r);
1308                if (n && r + n.frameLength <= t.length) {
1309                  var s = i + a * ((9e4 * n.samplesPerFrame) / n.sampleRate),
1310                    o = {
1311                      unit: t.subarray(r, r + n.frameLength),
1312                      pts: s,
1313                      dts: s,
1314                    };
1315                  return (
1316                    (e.config = []),
1317                    (e.channelCount = n.channelCount),
1318                    (e.samplerate = n.sampleRate),
1319                    e.samples.push(o),
1320                    { sample: o, length: n.frameLength }
1321                  );
1322                }
1323              }
1324            },
1325            parseHeader: function (e, t) {
1326              var r = (e[t + 1] >> 3) & 3,
1327                i = (e[t + 1] >> 1) & 3,
1328                a = (e[t + 2] >> 4) & 15,
1329                n = (e[t + 2] >> 2) & 3,
1330                s = (e[t + 2] >> 1) & 1;
1331              if (1 !== r && 0 !== a && 15 !== a && 3 !== n) {
1332                var o = 3 === r ? 3 - i : 3 === i ? 3 : 4,
1333                  l = 1e3 * T.BitratesMap[14 * o + a - 1],
1334                  d = 3 === r ? 0 : 2 === r ? 1 : 2,
1335                  u = T.SamplingRateMap[3 * d + n],
1336                  c = e[t + 3] >> 6 == 3 ? 1 : 2,
1337                  h = T.SamplesCoefficients[r][i],
1338                  f = T.BytesInSlot[i],
1339                  g = 8 * h * f;
1340                return {
1341                  sampleRate: u,
1342                  channelCount: c,
1343                  frameLength: parseInt((h * l) / u + s, 10) * f,
1344                  samplesPerFrame: g,
1345                };
1346              }
1347            },
1348            isHeaderPattern: function (e, t) {
1349              return (
1350                255 === e[t] && 224 == (224 & e[t + 1]) && 0 != (6 & e[t + 1])
1351              );
1352            },
1353            isHeader: function (e, t) {
1354              return !!(t + 1 < e.length && this.isHeaderPattern(e, t));
1355            },
1356            probe: function (e, t) {
1357              if (t + 1 < e.length && this.isHeaderPattern(e, t)) {
1358                var r = this.parseHeader(e, t),
1359                  i = 4;
1360                r && r.frameLength && (i = r.frameLength);
1361                var a = t + i;
1362                if (
1363                  a === e.length ||
1364                  (a + 1 < e.length && this.isHeaderPattern(e, a))
1365                )
1366                  return !0;
1367              }
1368              return !1;
1369            },
1370          },
1371          E = T,
1372          S = (function () {
1373            function e(e) {
1374              (this.data = e),
1375                (this.bytesAvailable = e.byteLength),
1376                (this.word = 0),
1377                (this.bitsAvailable = 0);
1378            }
1379            var t = e.prototype;
1380            return (
1381              (t.loadWord = function () {
1382                var e = this.data,
1383                  t = this.bytesAvailable,
1384                  r = e.byteLength - t,
1385                  i = new Uint8Array(4),
1386                  a = Math.min(4, t);
1387                if (0 === a) throw new Error("no bytes available");
1388                i.set(e.subarray(r, r + a)),
1389                  (this.word = new DataView(i.buffer).getUint32(0)),
1390                  (this.bitsAvailable = 8 * a),
1391                  (this.bytesAvailable -= a);
1392              }),
1393              (t.skipBits = function (e) {
1394                var t;
1395                this.bitsAvailable > e
1396                  ? ((this.word <<= e), (this.bitsAvailable -= e))
1397                  : ((e -= this.bitsAvailable),
1398                    (e -= (t = e >> 3) >> 3),
1399                    (this.bytesAvailable -= t),
1400                    this.loadWord(),
1401                    (this.word <<= e),
1402                    (this.bitsAvailable -= e));
1403              }),
1404              (t.readBits = function (e) {
1405                var t = Math.min(this.bitsAvailable, e),
1406                  r = this.word >>> (32 - t);
1407                return (
1408                  e > 32 &&
1409                    o.b.error("Cannot read more than 32 bits at a time"),
1410                  (this.bitsAvailable -= t),
1411                  this.bitsAvailable > 0
1412                    ? (this.word <<= t)
1413                    : this.bytesAvailable > 0 && this.loadWord(),
1414                  (t = e - t) > 0 && this.bitsAvailable
1415                    ? (r << t) | this.readBits(t)
1416                    : r
1417                );
1418              }),
1419              (t.skipLZ = function () {
1420                var e;
1421                for (e = 0; e < this.bitsAvailable; ++e)
1422                  if (0 != (this.word & (2147483648 >>> e)))
1423                    return (this.word <<= e), (this.bitsAvailable -= e), e;
1424                return this.loadWord(), e + this.skipLZ();
1425              }),
1426              (t.skipUEG = function () {
1427                this.skipBits(1 + this.skipLZ());
1428              }),
1429              (t.skipEG = function () {
1430                this.skipBits(1 + this.skipLZ());
1431              }),
1432              (t.readUEG = function () {
1433                var e = this.skipLZ();
1434                return this.readBits(e + 1) - 1;
1435              }),
1436              (t.readEG = function () {
1437                var e = this.readUEG();
1438                return 1 & e ? (1 + e) >>> 1 : -1 * (e >>> 1);
1439              }),
1440              (t.readBoolean = function () {
1441                return 1 === this.readBits(1);
1442              }),
1443              (t.readUByte = function () {
1444                return this.readBits(8);
1445              }),
1446              (t.readUShort = function () {
1447                return this.readBits(16);
1448              }),
1449              (t.readUInt = function () {
1450                return this.readBits(32);
1451              }),
1452              (t.skipScalingList = function (e) {
1453                var t,
1454                  r = 8,
1455                  i = 8;
1456                for (t = 0; t < e; t++)
1457                  0 !== i && (i = (r + this.readEG() + 256) % 256),
1458                    (r = 0 === i ? r : i);
1459              }),
1460              (t.readSPS = function () {
1461                var e,
1462                  t,
1463                  r,
1464                  i,
1465                  a,
1466                  n,
1467                  s,
1468                  o = 0,
1469                  l = 0,
1470                  d = 0,
1471                  u = 0,
1472                  c = this.readUByte.bind(this),
1473                  h = this.readBits.bind(this),
1474                  f = this.readUEG.bind(this),
1475                  g = this.readBoolean.bind(this),
1476                  p = this.skipBits.bind(this),
1477                  v = this.skipEG.bind(this),
1478                  m = this.skipUEG.bind(this),
1479                  y = this.skipScalingList.bind(this);
1480                if (
1481                  (c(),
1482                  (e = c()),
1483                  h(5),
1484                  p(3),
1485                  c(),
1486                  m(),
1487                  100 === e ||
1488                    110 === e ||
1489                    122 === e ||
1490                    244 === e ||
1491                    44 === e ||
1492                    83 === e ||
1493                    86 === e ||
1494                    118 === e ||
1495                    128 === e)
1496                ) {
1497                  var b = f();
1498                  if ((3 === b && p(1), m(), m(), p(1), g()))
1499                    for (n = 3 !== b ? 8 : 12, s = 0; s < n; s++)
1500                      g() && y(s < 6 ? 16 : 64);
1501                }
1502                m();
1503                var T = f();
1504                if (0 === T) f();
1505                else if (1 === T)
1506                  for (p(1), v(), v(), t = f(), s = 0; s < t; s++) v();
1507                m(),
1508                  p(1),
1509                  (r = f()),
1510                  (i = f()),
1511                  0 === (a = h(1)) && p(1),
1512                  p(1),
1513                  g() && ((o = f()), (l = f()), (d = f()), (u = f()));
1514                var E = [1, 1];
1515                if (g() && g())
1516                  switch (c()) {
1517                    case 1:
1518                      E = [1, 1];
1519                      break;
1520                    case 2:
1521                      E = [12, 11];
1522                      break;
1523                    case 3:
1524                      E = [10, 11];
1525                      break;
1526                    case 4:
1527                      E = [16, 11];
1528                      break;
1529                    case 5:
1530                      E = [40, 33];
1531                      break;
1532                    case 6:
1533                      E = [24, 11];
1534                      break;
1535                    case 7:
1536                      E = [20, 11];
1537                      break;
1538                    case 8:
1539                      E = [32, 11];
1540                      break;
1541                    case 9:
1542                      E = [80, 33];
1543                      break;
1544                    case 10:
1545                      E = [18, 11];
1546                      break;
1547                    case 11:
1548                      E = [15, 11];
1549                      break;
1550                    case 12:
1551                      E = [64, 33];
1552                      break;
1553                    case 13:
1554                      E = [160, 99];
1555                      break;
1556                    case 14:
1557                      E = [4, 3];
1558                      break;
1559                    case 15:
1560                      E = [3, 2];
1561                      break;
1562                    case 16:
1563                      E = [2, 1];
1564                      break;
1565                    case 255:
1566                      E = [(c() << 8) | c(), (c() << 8) | c()];
1567                  }
1568                return {
1569                  width: Math.ceil(16 * (r + 1) - 2 * o - 2 * l),
1570                  height: (2 - a) * (i + 1) * 16 - (a ? 2 : 4) * (d + u),
1571                  pixelRatio: E,
1572                };
1573              }),
1574              (t.readSliceType = function () {
1575                return this.readUByte(), this.readUEG(), this.readUEG();
1576              }),
1577              e
1578            );
1579          })(),
1580          _ = (function () {
1581            function e(e, t, r, i) {
1582              (this.decryptdata = r),
1583                (this.discardEPB = i),
1584                (this.decrypter = new n.a(e, t, { removePKCS7Padding: !1 }));
1585            }
1586            var t = e.prototype;
1587            return (
1588              (t.decryptBuffer = function (e, t) {
1589                this.decrypter.decrypt(
1590                  e,
1591                  this.decryptdata.key.buffer,
1592                  this.decryptdata.iv.buffer,
1593                  t
1594                );
1595              }),
1596              (t.decryptAacSample = function (e, t, r, i) {
1597                var a = e[t].unit,
1598                  n = a.subarray(16, a.length - (a.length % 16)),
1599                  s = n.buffer.slice(n.byteOffset, n.byteOffset + n.length),
1600                  o = this;
1601                this.decryptBuffer(s, function (n) {
1602                  (n = new Uint8Array(n)),
1603                    a.set(n, 16),
1604                    i || o.decryptAacSamples(e, t + 1, r);
1605                });
1606              }),
1607              (t.decryptAacSamples = function (e, t, r) {
1608                for (; ; t++) {
1609                  if (t >= e.length) return void r();
1610                  if (!(e[t].unit.length < 32)) {
1611                    var i = this.decrypter.isSync();
1612                    if ((this.decryptAacSample(e, t, r, i), !i)) return;
1613                  }
1614                }
1615              }),
1616              (t.getAvcEncryptedData = function (e) {
1617                for (
1618                  var t = 16 * Math.floor((e.length - 48) / 160) + 16,
1619                    r = new Int8Array(t),
1620                    i = 0,
1621                    a = 32;
1622                  a <= e.length - 16;
1623                  a += 160, i += 16
1624                )
1625                  r.set(e.subarray(a, a + 16), i);
1626                return r;
1627              }),
1628              (t.getAvcDecryptedUnit = function (e, t) {
1629                t = new Uint8Array(t);
1630                for (var r = 0, i = 32; i <= e.length - 16; i += 160, r += 16)
1631                  e.set(t.subarray(r, r + 16), i);
1632                return e;
1633              }),
1634              (t.decryptAvcSample = function (e, t, r, i, a, n) {
1635                var s = this.discardEPB(a.data),
1636                  o = this.getAvcEncryptedData(s),
1637                  l = this;
1638                this.decryptBuffer(o.buffer, function (o) {
1639                  (a.data = l.getAvcDecryptedUnit(s, o)),
1640                    n || l.decryptAvcSamples(e, t, r + 1, i);
1641                });
1642              }),
1643              (t.decryptAvcSamples = function (e, t, r, i) {
1644                for (; ; t++, r = 0) {
1645                  if (t >= e.length) return void i();
1646                  for (var a = e[t].units; !(r >= a.length); r++) {
1647                    var n = a[r];
1648                    if (!(n.length <= 48 || (1 !== n.type && 5 !== n.type))) {
1649                      var s = this.decrypter.isSync();
1650                      if ((this.decryptAvcSample(e, t, r, i, n, s), !s)) return;
1651                    }
1652                  }
1653                }
1654              }),
1655              e
1656            );
1657          })(),
1658          A = { video: 1, audio: 2, id3: 3, text: 4 },
1659          R = (function () {
1660            function e(e, t, r, i) {
1661              (this.observer = e),
1662                (this.config = r),
1663                (this.typeSupported = i),
1664                (this.remuxer = t),
1665                (this.sampleAes = null);
1666            }
1667            var t = e.prototype;
1668            return (
1669              (t.setDecryptData = function (e) {
1670                null != e && null != e.key && "SAMPLE-AES" === e.method
1671                  ? (this.sampleAes = new _(
1672                      this.observer,
1673                      this.config,
1674                      e,
1675                      this.discardEPB
1676                    ))
1677                  : (this.sampleAes = null);
1678              }),
1679              (e.probe = function (t) {
1680                var r = e._syncOffset(t);
1681                return (
1682                  !(r < 0) &&
1683                  (r &&
1684                    o.b.warn(
1685                      "MPEG2-TS detected but first sync word found @ offset " +
1686                        r +
1687                        ", junk ahead ?"
1688                    ),
1689                  !0)
1690                );
1691              }),
1692              (e._syncOffset = function (e) {
1693                for (var t = Math.min(1e3, e.length - 564), r = 0; r < t; ) {
1694                  if (71 === e[r] && 71 === e[r + 188] && 71 === e[r + 376])
1695                    return r;
1696                  r++;
1697                }
1698                return -1;
1699              }),
1700              (e.createTrack = function (e, t) {
1701                return {
1702                  container:
1703                    "video" === e || "audio" === e ? "video/mp2t" : void 0,
1704                  type: e,
1705                  id: A[e],
1706                  pid: -1,
1707                  inputTimeScale: 9e4,
1708                  sequenceNumber: 0,
1709                  samples: [],
1710                  dropped: "video" === e ? 0 : void 0,
1711                  isAAC: "audio" === e || void 0,
1712                  duration: "audio" === e ? t : void 0,
1713                };
1714              }),
1715              (t.resetInitSegment = function (t, r, i, a) {
1716                (this.pmtParsed = !1),
1717                  (this._pmtId = -1),
1718                  (this._avcTrack = e.createTrack("video", a)),
1719                  (this._audioTrack = e.createTrack("audio", a)),
1720                  (this._id3Track = e.createTrack("id3", a)),
1721                  (this._txtTrack = e.createTrack("text", a)),
1722                  (this.aacOverFlow = null),
1723                  (this.aacLastPTS = null),
1724                  (this.avcSample = null),
1725                  (this.audioCodec = r),
1726                  (this.videoCodec = i),
1727                  (this._duration = a);
1728              }),
1729              (t.resetTimeStamp = function () {}),
1730              (t.append = function (t, r, n, s) {
1731                var l,
1732                  d,
1733                  u,
1734                  c,
1735                  h,
1736                  f = t.length,
1737                  g = !1;
1738                this.contiguous = n;
1739                var p = this.pmtParsed,
1740                  v = this._avcTrack,
1741                  m = this._audioTrack,
1742                  y = this._id3Track,
1743                  b = v.pid,
1744                  T = m.pid,
1745                  E = y.pid,
1746                  S = this._pmtId,
1747                  _ = v.pesData,
1748                  A = m.pesData,
1749                  R = y.pesData,
1750                  w = this._parsePAT,
1751                  L = this._parsePMT,
1752                  k = this._parsePES,
1753                  D = this._parseAVCPES.bind(this),
1754                  C = this._parseAACPES.bind(this),
1755                  O = this._parseMPEGPES.bind(this),
1756                  I = this._parseID3PES.bind(this),
1757                  P = e._syncOffset(t);
1758                for (f -= (f + P) % 188, l = P; l < f; l += 188)
1759                  if (71 === t[l]) {
1760                    if (
1761                      ((d = !!(64 & t[l + 1])),
1762                      (u = ((31 & t[l + 1]) << 8) + t[l + 2]),
1763                      (48 & t[l + 3]) >> 4 > 1)
1764                    ) {
1765                      if ((c = l + 5 + t[l + 4]) === l + 188) continue;
1766                    } else c = l + 4;
1767                    switch (u) {
1768                      case b:
1769                        d &&
1770                          (_ && (h = k(_)) && D(h, !1),
1771                          (_ = { data: [], size: 0 })),
1772                          _ &&
1773                            (_.data.push(t.subarray(c, l + 188)),
1774                            (_.size += l + 188 - c));
1775                        break;
1776                      case T:
1777                        d &&
1778                          (A && (h = k(A)) && (m.isAAC ? C(h) : O(h)),
1779                          (A = { data: [], size: 0 })),
1780                          A &&
1781                            (A.data.push(t.subarray(c, l + 188)),
1782                            (A.size += l + 188 - c));
1783                        break;
1784                      case E:
1785                        d &&
1786                          (R && (h = k(R)) && I(h),
1787                          (R = { data: [], size: 0 })),
1788                          R &&
1789                            (R.data.push(t.subarray(c, l + 188)),
1790                            (R.size += l + 188 - c));
1791                        break;
1792                      case 0:
1793                        d && (c += t[c] + 1), (S = this._pmtId = w(t, c));
1794                        break;
1795                      case S:
1796                        d && (c += t[c] + 1);
1797                        var x = L(
1798                          t,
1799                          c,
1800                          !0 === this.typeSupported.mpeg ||
1801                            !0 === this.typeSupported.mp3,
1802                          null != this.sampleAes
1803                        );
1804                        (b = x.avc) > 0 && (v.pid = b),
1805                          (T = x.audio) > 0 &&
1806                            ((m.pid = T), (m.isAAC = x.isAAC)),
1807                          (E = x.id3) > 0 && (y.pid = E),
1808                          g &&
1809                            !p &&
1810                            (o.b.log("reparse from beginning"),
1811                            (g = !1),
1812                            (l = P - 188)),
1813                          (p = this.pmtParsed = !0);
1814                        break;
1815                      case 17:
1816                      case 8191:
1817                        break;
1818                      default:
1819                        g = !0;
1820                    }
1821                  } else
1822                    this.observer.trigger(i.a.ERROR, {
1823                      type: a.b.MEDIA_ERROR,
1824                      details: a.a.FRAG_PARSING_ERROR,
1825                      fatal: !1,
1826                      reason: "TS packet did not start with 0x47",
1827                    });
1828                _ && (h = k(_))
1829                  ? (D(h, !0), (v.pesData = null))
1830                  : (v.pesData = _),
1831                  A && (h = k(A))
1832                    ? (m.isAAC ? C(h) : O(h), (m.pesData = null))
1833                    : (A &&
1834                        A.size &&
1835                        o.b.log(
1836                          "last AAC PES packet truncated,might overlap between fragments"
1837                        ),
1838                      (m.pesData = A)),
1839                  R && (h = k(R))
1840                    ? (I(h), (y.pesData = null))
1841                    : (y.pesData = R),
1842                  null == this.sampleAes
1843                    ? this.remuxer.remux(m, v, y, this._txtTrack, r, n, s)
1844                    : this.decryptAndRemux(m, v, y, this._txtTrack, r, n, s);
1845              }),
1846              (t.decryptAndRemux = function (e, t, r, i, a, n, s) {
1847                if (e.samples && e.isAAC) {
1848                  var o = this;
1849                  this.sampleAes.decryptAacSamples(e.samples, 0, function () {
1850                    o.decryptAndRemuxAvc(e, t, r, i, a, n, s);
1851                  });
1852                } else this.decryptAndRemuxAvc(e, t, r, i, a, n, s);
1853              }),
1854              (t.decryptAndRemuxAvc = function (e, t, r, i, a, n, s) {
1855                if (t.samples) {
1856                  var o = this;
1857                  this.sampleAes.decryptAvcSamples(
1858                    t.samples,
1859                    0,
1860                    0,
1861                    function () {
1862                      o.remuxer.remux(e, t, r, i, a, n, s);
1863                    }
1864                  );
1865                } else this.remuxer.remux(e, t, r, i, a, n, s);
1866              }),
1867              (t.destroy = function () {
1868                (this._initPTS = this._initDTS = void 0), (this._duration = 0);
1869              }),
1870              (t._parsePAT = function (e, t) {
1871                return ((31 & e[t + 10]) << 8) | e[t + 11];
1872              }),
1873              (t._parsePMT = function (e, t, r, i) {
1874                var a,
1875                  n,
1876                  s = { audio: -1, avc: -1, id3: -1, isAAC: !0 };
1877                for (
1878                  a = t + 3 + (((15 & e[t + 1]) << 8) | e[t + 2]) - 4,
1879                    t += 12 + (((15 & e[t + 10]) << 8) | e[t + 11]);
1880                  t < a;
1881
1882                ) {
1883                  switch (((n = ((31 & e[t + 1]) << 8) | e[t + 2]), e[t])) {
1884                    case 207:
1885                      if (!i) {
1886                        o.b.log("unknown stream type:" + e[t]);
1887                        break;
1888                      }
1889                    case 15:
1890                      -1 === s.audio && (s.audio = n);
1891                      break;
1892                    case 21:
1893                      -1 === s.id3 && (s.id3 = n);
1894                      break;
1895                    case 219:
1896                      if (!i) {
1897                        o.b.log("unknown stream type:" + e[t]);
1898                        break;
1899                      }
1900                    case 27:
1901                      -1 === s.avc && (s.avc = n);
1902                      break;
1903                    case 3:
1904                    case 4:
1905                      r
1906                        ? -1 === s.audio && ((s.audio = n), (s.isAAC = !1))
1907                        : o.b.log(
1908                            "MPEG audio found, not supported in this browser for now"
1909                          );
1910                      break;
1911                    case 36:
1912                      o.b.warn("HEVC stream type found, not supported for now");
1913                      break;
1914                    default:
1915                      o.b.log("unknown stream type:" + e[t]);
1916                  }
1917                  t += 5 + (((15 & e[t + 3]) << 8) | e[t + 4]);
1918                }
1919                return s;
1920              }),
1921              (t._parsePES = function (e) {
1922                var t,
1923                  r,
1924                  i,
1925                  a,
1926                  n,
1927                  s,
1928                  l,
1929                  d,
1930                  u = 0,
1931                  c = e.data;
1932                if (!e || 0 === e.size) return null;
1933                for (; c[0].length < 19 && c.length > 1; ) {
1934                  var h = new Uint8Array(c[0].length + c[1].length);
1935                  h.set(c[0]),
1936                    h.set(c[1], c[0].length),
1937                    (c[0] = h),
1938                    c.splice(1, 1);
1939                }
1940                if (1 === ((t = c[0])[0] << 16) + (t[1] << 8) + t[2]) {
1941                  if ((i = (t[4] << 8) + t[5]) && i > e.size - 6) return null;
1942                  if (
1943                    (192 & (r = t[7]) &&
1944                      ((s =
1945                        536870912 * (14 & t[9]) +
1946                        4194304 * (255 & t[10]) +
1947                        16384 * (254 & t[11]) +
1948                        128 * (255 & t[12]) +
1949                        (254 & t[13]) / 2) > 4294967295 && (s -= 8589934592),
1950                      64 & r
1951                        ? ((l =
1952                            536870912 * (14 & t[14]) +
1953                            4194304 * (255 & t[15]) +
1954                            16384 * (254 & t[16]) +
1955                            128 * (255 & t[17]) +
1956                            (254 & t[18]) / 2) > 4294967295 &&
1957                            (l -= 8589934592),
1958                          s - l > 54e5 &&
1959                            (o.b.warn(
1960                              Math.round((s - l) / 9e4) +
1961                                "s delta between PTS and DTS, align them"
1962                            ),
1963                            (s = l)))
1964                        : (l = s)),
1965                    (d = (a = t[8]) + 9),
1966                    e.size <= d)
1967                  )
1968                    return null;
1969                  (e.size -= d), (n = new Uint8Array(e.size));
1970                  for (var f = 0, g = c.length; f < g; f++) {
1971                    var p = (t = c[f]).byteLength;
1972                    if (d) {
1973                      if (d > p) {
1974                        d -= p;
1975                        continue;
1976                      }
1977                      (t = t.subarray(d)), (p -= d), (d = 0);
1978                    }
1979                    n.set(t, u), (u += p);
1980                  }
1981                  return i && (i -= a + 3), { data: n, pts: s, dts: l, len: i };
1982                }
1983                return null;
1984              }),
1985              (t.pushAccesUnit = function (e, t) {
1986                if (e.units.length && e.frame) {
1987                  var r = t.samples,
1988                    i = r.length;
1989                  if (isNaN(e.pts)) {
1990                    if (!i) return void t.dropped++;
1991                    var a = r[i - 1];
1992                    (e.pts = a.pts), (e.dts = a.dts);
1993                  }
1994                  !this.config.forceKeyFrameOnDiscontinuity ||
1995                  !0 === e.key ||
1996                  (t.sps && (i || this.contiguous))
1997                    ? ((e.id = i), r.push(e))
1998                    : t.dropped++;
1999                }
2000                e.debug.length && o.b.log(e.pts + "/" + e.dts + ":" + e.debug);
2001              }),
2002              (t._parseAVCPES = function (e, t) {
2003                var r,
2004                  i,
2005                  a,
2006                  n = this,
2007                  s = this._avcTrack,
2008                  o = this._parseAVCNALu(e.data),
2009                  l = this.avcSample,
2010                  d = !1,
2011                  u = this.pushAccesUnit.bind(this),
2012                  c = function (e, t, r, i) {
2013                    return { key: e, pts: t, dts: r, units: [], debug: i };
2014                  };
2015                (e.data = null),
2016                  l &&
2017                    o.length &&
2018                    !s.audFound &&
2019                    (u(l, s), (l = this.avcSample = c(!1, e.pts, e.dts, ""))),
2020                  o.forEach(function (t) {
2021                    switch (t.type) {
2022                      case 1:
2023                        (i = !0),
2024                          l || (l = n.avcSample = c(!0, e.pts, e.dts, "")),
2025                          (l.frame = !0);
2026                        var o = t.data;
2027                        if (d && o.length > 4) {
2028                          var h = new S(o).readSliceType();
2029                          (2 !== h && 4 !== h && 7 !== h && 9 !== h) ||
2030                            (l.key = !0);
2031                        }
2032                        break;
2033                      case 5:
2034                        (i = !0),
2035                          l || (l = n.avcSample = c(!0, e.pts, e.dts, "")),
2036                          (l.key = !0),
2037                          (l.frame = !0);
2038                        break;
2039                      case 6:
2040                        (i = !0), (r = new S(n.discardEPB(t.data))).readUByte();
2041                        for (
2042                          var f = 0, g = 0, p = !1, v = 0;
2043                          !p && r.bytesAvailable > 1;
2044
2045                        ) {
2046                          f = 0;
2047                          do {
2048                            f += v = r.readUByte();
2049                          } while (255 === v);
2050                          g = 0;
2051                          do {
2052                            g += v = r.readUByte();
2053                          } while (255 === v);
2054                          if (4 === f && 0 !== r.bytesAvailable) {
2055                            if (((p = !0), 181 === r.readUByte()))
2056                              if (49 === r.readUShort())
2057                                if (1195456820 === r.readUInt())
2058                                  if (3 === r.readUByte()) {
2059                                    var y = r.readUByte(),
2060                                      b = 31 & y,
2061                                      T = [y, r.readUByte()];
2062                                    for (a = 0; a < b; a++)
2063                                      T.push(r.readUByte()),
2064                                        T.push(r.readUByte()),
2065                                        T.push(r.readUByte());
2066                                    n._insertSampleInOrder(
2067                                      n._txtTrack.samples,
2068                                      { type: 3, pts: e.pts, bytes: T }
2069                                    );
2070                                  }
2071                          } else if (5 === f && 0 !== r.bytesAvailable) {
2072                            if (((p = !0), g > 16)) {
2073                              var E = [];
2074                              for (a = 0; a < 16; a++)
2075                                E.push(r.readUByte().toString(16)),
2076                                  (3 !== a && 5 !== a && 7 !== a && 9 !== a) ||
2077                                    E.push("-");
2078                              var _ = g - 16,
2079                                A = new Uint8Array(_);
2080                              for (a = 0; a < _; a++) A[a] = r.readUByte();
2081                              n._insertSampleInOrder(n._txtTrack.samples, {
2082                                pts: e.pts,
2083                                payloadType: f,
2084                                uuid: E.join(""),
2085                                userDataBytes: A,
2086                                userData: Object(m.b)(A.buffer),
2087                              });
2088                            }
2089                          } else if (g < r.bytesAvailable)
2090                            for (a = 0; a < g; a++) r.readUByte();
2091                        }
2092                        break;
2093                      case 7:
2094                        if (((i = !0), (d = !0), !s.sps)) {
2095                          var R = (r = new S(t.data)).readSPS();
2096                          (s.width = R.width),
2097                            (s.height = R.height),
2098                            (s.pixelRatio = R.pixelRatio),
2099                            (s.sps = [t.data]),
2100                            (s.duration = n._duration);
2101                          var w = t.data.subarray(1, 4),
2102                            L = "avc1.";
2103                          for (a = 0; a < 3; a++) {
2104                            var k = w[a].toString(16);
2105                            k.length < 2 && (k = "0" + k), (L += k);
2106                          }
2107                          s.codec = L;
2108                        }
2109                        break;
2110                      case 8:
2111                        (i = !0), s.pps || (s.pps = [t.data]);
2112                        break;
2113                      case 9:
2114                        (i = !1),
2115                          (s.audFound = !0),
2116                          l && u(l, s),
2117                          (l = n.avcSample = c(!1, e.pts, e.dts, ""));
2118                        break;
2119                      case 12:
2120                        i = !1;
2121                        break;
2122                      default:
2123                        (i = !1),
2124                          l && (l.debug += "unknown NAL " + t.type + " ");
2125                    }
2126                    l && i && l.units.push(t);
2127                  }),
2128                  t && l && (u(l, s), (this.avcSample = null));
2129              }),
2130              (t._insertSampleInOrder = function (e, t) {
2131                var r = e.length;
2132                if (r > 0) {
2133                  if (t.pts >= e[r - 1].pts) e.push(t);
2134                  else
2135                    for (var i = r - 1; i >= 0; i--)
2136                      if (t.pts < e[i].pts) {
2137                        e.splice(i, 0, t);
2138                        break;
2139                      }
2140                } else e.push(t);
2141              }),
2142              (t._getLastNalUnit = function () {
2143                var e,
2144                  t = this.avcSample;
2145                if (!t || 0 === t.units.length) {
2146                  var r = this._avcTrack.samples;
2147                  t = r[r.length - 1];
2148                }
2149                if (t) {
2150                  var i = t.units;
2151                  e = i[i.length - 1];
2152                }
2153                return e;
2154              }),
2155              (t._parseAVCNALu = function (e) {
2156                var t,
2157                  r,
2158                  i,
2159                  a,
2160                  n = 0,
2161                  s = e.byteLength,
2162                  o = this._avcTrack,
2163                  l = o.naluState || 0,
2164                  d = l,
2165                  u = [],
2166                  c = -1;
2167                for (
2168                  -1 === l && ((c = 0), (a = 31 & e[0]), (l = 0), (n = 1));
2169                  n < s;
2170
2171                )
2172                  if (((t = e[n++]), l))
2173                    if (1 !== l)
2174                      if (t)
2175                        if (1 === t) {
2176                          if (c >= 0)
2177                            (i = { data: e.subarray(c, n - l - 1), type: a }),
2178                              u.push(i);
2179                          else {
2180                            var h = this._getLastNalUnit();
2181                            if (
2182                              h &&
2183                              (d &&
2184                                n <= 4 - d &&
2185                                h.state &&
2186                                (h.data = h.data.subarray(
2187                                  0,
2188                                  h.data.byteLength - d
2189                                )),
2190                              (r = n - l - 1) > 0)
2191                            ) {
2192                              var f = new Uint8Array(h.data.byteLength + r);
2193                              f.set(h.data, 0),
2194                                f.set(e.subarray(0, r), h.data.byteLength),
2195                                (h.data = f);
2196                            }
2197                          }
2198                          n < s
2199                            ? ((c = n), (a = 31 & e[n]), (l = 0))
2200                            : (l = -1);
2201                        } else l = 0;
2202                      else l = 3;
2203                    else l = t ? 0 : 2;
2204                  else l = t ? 0 : 1;
2205                if (
2206                  (c >= 0 &&
2207                    l >= 0 &&
2208                    ((i = { data: e.subarray(c, s), type: a, state: l }),
2209                    u.push(i)),
2210                  0 === u.length)
2211                ) {
2212                  var g = this._getLastNalUnit();
2213                  if (g) {
2214                    var p = new Uint8Array(g.data.byteLength + e.byteLength);
2215                    p.set(g.data, 0), p.set(e, g.data.byteLength), (g.data = p);
2216                  }
2217                }
2218                return (o.naluState = l), u;
2219              }),
2220              (t.discardEPB = function (e) {
2221                for (var t, r, i = e.byteLength, a = [], n = 1; n < i - 2; )
2222                  0 === e[n] && 0 === e[n + 1] && 3 === e[n + 2]
2223                    ? (a.push(n + 2), (n += 2))
2224                    : n++;
2225                if (0 === a.length) return e;
2226                (t = i - a.length), (r = new Uint8Array(t));
2227                var s = 0;
2228                for (n = 0; n < t; s++, n++)
2229                  s === a[0] && (s++, a.shift()), (r[n] = e[s]);
2230                return r;
2231              }),
2232              (t._parseAACPES = function (e) {
2233                var t,
2234                  r,
2235                  n,
2236                  s,
2237                  l,
2238                  d,
2239                  u,
2240                  c = this._audioTrack,
2241                  f = e.data,
2242                  m = e.pts,
2243                  y = this.aacOverFlow,
2244                  b = this.aacLastPTS;
2245                if (y) {
2246                  var T = new Uint8Array(y.byteLength + f.byteLength);
2247                  T.set(y, 0), T.set(f, y.byteLength), (f = T);
2248                }
2249                for (n = 0, l = f.length; n < l - 1 && !h(f, n); n++);
2250                if (
2251                  n &&
2252                  (n < l - 1
2253                    ? ((d =
2254                        "AAC PES did not start with ADTS header,offset:" + n),
2255                      (u = !1))
2256                    : ((d = "no ADTS header found in AAC PES"), (u = !0)),
2257                  o.b.warn("parsing error:" + d),
2258                  this.observer.trigger(i.a.ERROR, {
2259                    type: a.b.MEDIA_ERROR,
2260                    details: a.a.FRAG_PARSING_ERROR,
2261                    fatal: u,
2262                    reason: d,
2263                  }),
2264                  u)
2265                )
2266                  return;
2267                if (
2268                  (g(c, this.observer, f, n, this.audioCodec),
2269                  (r = 0),
2270                  (t = p(c.samplerate)),
2271                  y && b)
2272                ) {
2273                  var E = b + t;
2274                  Math.abs(E - m) > 1 &&
2275                    (o.b.log(
2276                      "AAC: align PTS for overlapping frames by " +
2277                        Math.round((E - m) / 90)
2278                    ),
2279                    (m = E));
2280                }
2281                for (; n < l; ) {
2282                  if (h(f, n)) {
2283                    if (n + 5 < l) {
2284                      var S = v(c, f, n, m, r);
2285                      if (S) {
2286                        (n += S.length), (s = S.sample.pts), r++;
2287                        continue;
2288                      }
2289                    }
2290                    break;
2291                  }
2292                  n++;
2293                }
2294                (y = n < l ? f.subarray(n, l) : null),
2295                  (this.aacOverFlow = y),
2296                  (this.aacLastPTS = s);
2297              }),
2298              (t._parseMPEGPES = function (e) {
2299                for (
2300                  var t = e.data, r = t.length, i = 0, a = 0, n = e.pts;
2301                  a < r;
2302
2303                )
2304                  if (E.isHeader(t, a)) {
2305                    var s = E.appendFrame(this._audioTrack, t, a, n, i);
2306                    if (!s) break;
2307                    (a += s.length), i++;
2308                  } else a++;
2309              }),
2310              (t._parseID3PES = function (e) {
2311                this._id3Track.samples.push(e);
2312              }),
2313              e
2314            );
2315          })(),
2316          w = (function () {
2317            function e(e, t, r) {
2318              (this.observer = e), (this.config = r), (this.remuxer = t);
2319            }
2320            var t = e.prototype;
2321            return (
2322              (t.resetInitSegment = function (e, t, r, i) {
2323                this._audioTrack = {
2324                  container: "audio/mpeg",
2325                  type: "audio",
2326                  id: -1,
2327                  sequenceNumber: 0,
2328                  isAAC: !1,
2329                  samples: [],
2330                  len: 0,
2331                  manifestCodec: t,
2332                  duration: i,
2333                  inputTimeScale: 9e4,
2334                };
2335              }),
2336              (t.resetTimeStamp = function () {}),
2337              (e.probe = function (e) {
2338                var t,
2339                  r,
2340                  i = m.a.getID3Data(e, 0);
2341                if (i && void 0 !== m.a.getTimeStamp(i))
2342                  for (
2343                    t = i.length, r = Math.min(e.length - 1, t + 100);
2344                    t < r;
2345                    t++
2346                  )
2347                    if (E.probe(e, t))
2348                      return o.b.log("MPEG Audio sync word found !"), !0;
2349                return !1;
2350              }),
2351              (t.append = function (e, t, r, i) {
2352                for (
2353                  var a = m.a.getID3Data(e, 0),
2354                    n = m.a.getTimeStamp(a),
2355                    s = n ? 90 * n : 9e4 * t,
2356                    o = a.length,
2357                    l = e.length,
2358                    d = 0,
2359                    u = 0,
2360                    c = this._audioTrack,
2361                    h = [{ pts: s, dts: s, data: a }];
2362                  o < l;
2363
2364                )
2365                  if (E.isHeader(e, o)) {
2366                    var f = E.appendFrame(c, e, o, s, d);
2367                    if (!f) break;
2368                    (o += f.length), (u = f.sample.pts), d++;
2369                  } else
2370                    m.a.isHeader(e, o)
2371                      ? ((a = m.a.getID3Data(e, o)),
2372                        h.push({ pts: u, dts: u, data: a }),
2373                        (o += a.length))
2374                      : o++;
2375                this.remuxer.remux(
2376                  c,
2377                  { samples: [] },
2378                  { samples: h, inputTimeScale: 9e4 },
2379                  { samples: [] },
2380                  t,
2381                  r,
2382                  i
2383                );
2384              }),
2385              (t.destroy = function () {}),
2386              e
2387            );
2388          })(),
2389          L = (function () {
2390            function e() {}
2391            return (
2392              (e.getSilentFrame = function (e, t) {
2393                switch (e) {
2394                  case "mp4a.40.2":
2395                    if (1 === t)
2396                      return new Uint8Array([0, 200, 0, 128, 35, 128]);
2397                    if (2 === t)
2398                      return new Uint8Array([
2399                        33, 0, 73, 144, 2, 25, 0, 35, 128,
2400                      ]);
2401                    if (3 === t)
2402                      return new Uint8Array([
2403                        0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142,
2404                      ]);
2405                    if (4 === t)
2406                      return new Uint8Array([
2407                        0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44,
2408                        128, 8, 2, 56,
2409                      ]);
2410                    if (5 === t)
2411                      return new Uint8Array([
2412                        0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48,
2413                        4, 153, 0, 33, 144, 2, 56,
2414                      ]);
2415                    if (6 === t)
2416                      return new Uint8Array([
2417                        0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48,
2418                        4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224,
2419                      ]);
2420                    break;
2421                  default:
2422                    if (1 === t)
2423                      return new Uint8Array([
2424                        1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28,
2425                        6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
2426                        90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
2427                        90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
2428                        90, 90, 94,
2429                      ]);
2430                    if (2 === t)
2431                      return new Uint8Array([
2432                        1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0,
2433                        149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90,
2434                        90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
2435                        90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
2436                        90, 90, 94,
2437                      ]);
2438                    if (3 === t)
2439                      return new Uint8Array([
2440                        1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0,
2441                        149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90,
2442                        90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
2443                        90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
2444                        90, 90, 94,
2445                      ]);
2446                }
2447                return null;
2448              }),
2449              e
2450            );
2451          })(),
2452          k = Math.pow(2, 32) - 1,
2453          D = (function () {
2454            function e() {}
2455            return (
2456              (e.init = function () {
2457                var t;
2458                for (t in ((e.types = {
2459                  avc1: [],
2460                  avcC: [],
2461                  btrt: [],
2462                  dinf: [],
2463                  dref: [],
2464                  esds: [],
2465                  ftyp: [],
2466                  hdlr: [],
2467                  mdat: [],
2468                  mdhd: [],
2469                  mdia: [],
2470                  mfhd: [],
2471                  minf: [],
2472                  moof: [],
2473                  moov: [],
2474                  mp4a: [],
2475                  ".mp3": [],
2476                  mvex: [],
2477                  mvhd: [],
2478                  pasp: [],
2479                  sdtp: [],
2480                  stbl: [],
2481                  stco: [],
2482                  stsc: [],
2483                  stsd: [],
2484                  stsz: [],
2485                  stts: [],
2486                  tfdt: [],
2487                  tfhd: [],
2488                  traf: [],
2489                  trak: [],
2490                  trun: [],
2491                  trex: [],
2492                  tkhd: [],
2493                  vmhd: [],
2494                  smhd: [],
2495                }),
2496                e.types))
2497                  e.types.hasOwnProperty(t) &&
2498                    (e.types[t] = [
2499                      t.charCodeAt(0),
2500                      t.charCodeAt(1),
2501                      t.charCodeAt(2),
2502                      t.charCodeAt(3),
2503                    ]);
2504                var r = new Uint8Array([
2505                    0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0,
2506                    0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110,
2507                    100, 108, 101, 114, 0,
2508                  ]),
2509                  i = new Uint8Array([
2510                    0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0,
2511                    0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110,
2512                    100, 108, 101, 114, 0,
2513                  ]);
2514                e.HDLR_TYPES = { video: r, audio: i };
2515                var a = new Uint8Array([
2516                    0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0,
2517                    0, 0, 1,
2518                  ]),
2519                  n = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
2520                (e.STTS = e.STSC = e.STCO = n),
2521                  (e.STSZ = new Uint8Array([
2522                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2523                  ])),
2524                  (e.VMHD = new Uint8Array([
2525                    0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
2526                  ])),
2527                  (e.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])),
2528                  (e.STSD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]));
2529                var s = new Uint8Array([105, 115, 111, 109]),
2530                  o = new Uint8Array([97, 118, 99, 49]),
2531                  l = new Uint8Array([0, 0, 0, 1]);
2532                (e.FTYP = e.box(e.types.ftyp, s, l, s, o)),
2533                  (e.DINF = e.box(e.types.dinf, e.box(e.types.dref, a)));
2534              }),
2535              (e.box = function (e) {
2536                for (
2537                  var t,
2538                    r = Array.prototype.slice.call(arguments, 1),
2539                    i = 8,
2540                    a = r.length,
2541                    n = a;
2542                  a--;
2543
2544                )
2545                  i += r[a].byteLength;
2546                for (
2547                  (t = new Uint8Array(i))[0] = (i >> 24) & 255,
2548                    t[1] = (i >> 16) & 255,
2549                    t[2] = (i >> 8) & 255,
2550                    t[3] = 255 & i,
2551                    t.set(e, 4),
2552                    a = 0,
2553                    i = 8;
2554                  a < n;
2555                  a++
2556                )
2557                  t.set(r[a], i), (i += r[a].byteLength);
2558                return t;
2559              }),
2560              (e.hdlr = function (t) {
2561                return e.box(e.types.hdlr, e.HDLR_TYPES[t]);
2562              }),
2563              (e.mdat = function (t) {
2564                return e.box(e.types.mdat, t);
2565              }),
2566              (e.mdhd = function (t, r) {
2567                r *= t;
2568                var i = Math.floor(r / (k + 1)),
2569                  a = Math.floor(r % (k + 1));
2570                return e.box(
2571                  e.types.mdhd,
2572                  new Uint8Array([
2573                    1,
2574                    0,
2575                    0,
2576                    0,
2577                    0,
2578                    0,
2579                    0,
2580                    0,
2581                    0,
2582                    0,
2583                    0,
2584                    2,
2585                    0,
2586                    0,
2587                    0,
2588                    0,
2589                    0,
2590                    0,
2591                    0,
2592                    3,
2593                    (t >> 24) & 255,
2594                    (t >> 16) & 255,
2595                    (t >> 8) & 255,
2596                    255 & t,
2597                    i >> 24,
2598                    (i >> 16) & 255,
2599                    (i >> 8) & 255,
2600                    255 & i,
2601                    a >> 24,
2602                    (a >> 16) & 255,
2603                    (a >> 8) & 255,
2604                    255 & a,
2605                    85,
2606                    196,
2607                    0,
2608                    0,
2609                  ])
2610                );
2611              }),
2612              (e.mdia = function (t) {
2613                return e.box(
2614                  e.types.mdia,
2615                  e.mdhd(t.timescale, t.duration),
2616                  e.hdlr(t.type),
2617                  e.minf(t)
2618                );
2619              }),
2620              (e.mfhd = function (t) {
2621                return e.box(
2622                  e.types.mfhd,
2623                  new Uint8Array([
2624                    0,
2625                    0,
2626                    0,
2627                    0,
2628                    t >> 24,
2629                    (t >> 16) & 255,
2630                    (t >> 8) & 255,
2631                    255 & t,
2632                  ])
2633                );
2634              }),
2635              (e.minf = function (t) {
2636                return "audio" === t.type
2637                  ? e.box(
2638                      e.types.minf,
2639                      e.box(e.types.smhd, e.SMHD),
2640                      e.DINF,
2641                      e.stbl(t)
2642                    )
2643                  : e.box(
2644                      e.types.minf,
2645                      e.box(e.types.vmhd, e.VMHD),
2646                      e.DINF,
2647                      e.stbl(t)
2648                    );
2649              }),
2650              (e.moof = function (t, r, i) {
2651                return e.box(e.types.moof, e.mfhd(t), e.traf(i, r));
2652              }),
2653              (e.moov = function (t) {
2654                for (var r = t.length, i = []; r--; ) i[r] = e.trak(t[r]);
2655                return e.box.apply(
2656                  null,
2657                  [e.types.moov, e.mvhd(t[0].timescale, t[0].duration)]
2658                    .concat(i)
2659                    .concat(e.mvex(t))
2660                );
2661              }),
2662              (e.mvex = function (t) {
2663                for (var r = t.length, i = []; r--; ) i[r] = e.trex(t[r]);
2664                return e.box.apply(null, [e.types.mvex].concat(i));
2665              }),
2666              (e.mvhd = function (t, r) {
2667                r *= t;
2668                var i = Math.floor(r / (k + 1)),
2669                  a = Math.floor(r % (k + 1)),
2670                  n = new Uint8Array([
2671                    1,
2672                    0,
2673                    0,
2674                    0,
2675                    0,
2676                    0,
2677                    0,
2678                    0,
2679                    0,
2680                    0,
2681                    0,
2682                    2,
2683                    0,
2684                    0,
2685                    0,
2686                    0,
2687                    0,
2688                    0,
2689                    0,
2690                    3,
2691                    (t >> 24) & 255,
2692                    (t >> 16) & 255,
2693                    (t >> 8) & 255,
2694                    255 & t,
2695                    i >> 24,
2696                    (i >> 16) & 255,
2697                    (i >> 8) & 255,
2698                    255 & i,
2699                    a >> 24,
2700                    (a >> 16) & 255,
2701                    (a >> 8) & 255,
2702                    255 & a,
2703                    0,
2704                    1,
2705                    0,
2706                    0,
2707                    1,
2708                    0,
2709                    0,
2710                    0,
2711                    0,
2712                    0,
2713                    0,
2714                    0,
2715                    0,
2716                    0,
2717                    0,
2718                    0,
2719                    0,
2720                    1,
2721                    0,
2722                    0,
2723                    0,
2724                    0,
2725                    0,
2726                    0,
2727                    0,
2728                    0,
2729                    0,
2730                    0,
2731                    0,
2732                    0,
2733                    0,
2734                    0,
2735                    0,
2736                    1,
2737                    0,
2738                    0,
2739                    0,
2740                    0,
2741                    0,
2742                    0,
2743                    0,
2744                    0,
2745                    0,
2746                    0,
2747                    0,
2748                    0,
2749                    0,
2750                    0,
2751                    64,
2752                    0,
2753                    0,
2754                    0,
2755                    0,
2756                    0,
2757                    0,
2758                    0,
2759                    0,
2760                    0,
2761                    0,
2762                    0,
2763                    0,
2764                    0,
2765                    0,
2766                    0,
2767                    0,
2768                    0,
2769                    0,
2770                    0,
2771                    0,
2772                    0,
2773                    0,
2774                    0,
2775                    0,
2776                    0,
2777                    0,
2778                    0,
2779                    255,
2780                    255,
2781                    255,
2782                    255,
2783                  ]);
2784                return e.box(e.types.mvhd, n);
2785              }),
2786              (e.sdtp = function (t) {
2787                var r,
2788                  i,
2789                  a = t.samples || [],
2790                  n = new Uint8Array(4 + a.length);
2791                for (i = 0; i < a.length; i++)
2792                  (r = a[i].flags),
2793                    (n[i + 4] =
2794                      (r.dependsOn << 4) |
2795                      (r.isDependedOn << 2) |
2796                      r.hasRedundancy);
2797                return e.box(e.types.sdtp, n);
2798              }),
2799              (e.stbl = function (t) {
2800                return e.box(
2801                  e.types.stbl,
2802                  e.stsd(t),
2803                  e.box(e.types.stts, e.STTS),
2804                  e.box(e.types.stsc, e.STSC),
2805                  e.box(e.types.stsz, e.STSZ),
2806                  e.box(e.types.stco, e.STCO)
2807                );
2808              }),
2809              (e.avc1 = function (t) {
2810                var r,
2811                  i,
2812                  a,
2813                  n = [],
2814                  s = [];
2815                for (r = 0; r < t.sps.length; r++)
2816                  (a = (i = t.sps[r]).byteLength),
2817                    n.push((a >>> 8) & 255),
2818                    n.push(255 & a),
2819                    (n = n.concat(Array.prototype.slice.call(i)));
2820                for (r = 0; r < t.pps.length; r++)
2821                  (a = (i = t.pps[r]).byteLength),
2822                    s.push((a >>> 8) & 255),
2823                    s.push(255 & a),
2824                    (s = s.concat(Array.prototype.slice.call(i)));
2825                var o = e.box(
2826                    e.types.avcC,
2827                    new Uint8Array(
2828                      [1, n[3], n[4], n[5], 255, 224 | t.sps.length]
2829                        .concat(n)
2830                        .concat([t.pps.length])
2831                        .concat(s)
2832                    )
2833                  ),
2834                  l = t.width,
2835                  d = t.height,
2836                  u = t.pixelRatio[0],
2837                  c = t.pixelRatio[1];
2838                return e.box(
2839                  e.types.avc1,
2840                  new Uint8Array([
2841                    0,
2842                    0,
2843                    0,
2844                    0,
2845                    0,
2846                    0,
2847                    0,
2848                    1,
2849                    0,
2850                    0,
2851                    0,
2852                    0,
2853                    0,
2854                    0,
2855                    0,
2856                    0,
2857                    0,
2858                    0,
2859                    0,
2860                    0,
2861                    0,
2862                    0,
2863                    0,
2864                    0,
2865                    (l >> 8) & 255,
2866                    255 & l,
2867                    (d >> 8) & 255,
2868                    255 & d,
2869                    0,
2870                    72,
2871                    0,
2872                    0,
2873                    0,
2874                    72,
2875                    0,
2876                    0,
2877                    0,
2878                    0,
2879                    0,
2880                    0,
2881                    0,
2882                    1,
2883                    18,
2884                    100,
2885                    97,
2886                    105,
2887                    108,
2888                    121,
2889                    109,
2890                    111,
2891                    116,
2892                    105,
2893                    111,
2894                    110,
2895                    47,
2896                    104,
2897                    108,
2898                    115,
2899                    46,
2900                    106,
2901                    115,
2902                    0,
2903                    0,
2904                    0,
2905                    0,
2906                    0,
2907                    0,
2908                    0,
2909                    0,
2910                    0,
2911                    0,
2912                    0,
2913                    0,
2914                    0,
2915                    0,
2916                    24,
2917                    17,
2918                    17,
2919                  ]),
2920                  o,
2921                  e.box(
2922                    e.types.btrt,
2923                    new Uint8Array([
2924                      0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192,
2925                    ])
2926                  ),
2927                  e.box(
2928                    e.types.pasp,
2929                    new Uint8Array([
2930                      u >> 24,
2931                      (u >> 16) & 255,
2932                      (u >> 8) & 255,
2933                      255 & u,
2934                      c >> 24,
2935                      (c >> 16) & 255,
2936                      (c >> 8) & 255,
2937                      255 & c,
2938                    ])
2939                  )
2940                );
2941              }),
2942              (e.esds = function (e) {
2943                var t = e.config.length;
2944                return new Uint8Array(
2945                  [
2946                    0,
2947                    0,
2948                    0,
2949                    0,
2950                    3,
2951                    23 + t,
2952                    0,
2953                    1,
2954                    0,
2955                    4,
2956                    15 + t,
2957                    64,
2958                    21,
2959                    0,
2960                    0,
2961                    0,
2962                    0,
2963                    0,
2964                    0,
2965                    0,
2966                    0,
2967                    0,
2968                    0,
2969                    0,
2970                    5,
2971                  ]
2972                    .concat([t])
2973                    .concat(e.config)
2974                    .concat([6, 1, 2])
2975                );
2976              }),
2977              (e.mp4a = function (t) {
2978                var r = t.samplerate;
2979                return e.box(
2980                  e.types.mp4a,
2981                  new Uint8Array([
2982                    0,
2983                    0,
2984                    0,
2985                    0,
2986                    0,
2987                    0,
2988                    0,
2989                    1,
2990                    0,
2991                    0,
2992                    0,
2993                    0,
2994                    0,
2995                    0,
2996                    0,
2997                    0,
2998                    0,
2999                    t.channelCount,
3000                    0,
3001                    16,
3002                    0,
3003                    0,
3004                    0,
3005                    0,
3006                    (r >> 8) & 255,
3007                    255 & r,
3008                    0,
3009                    0,
3010                  ]),
3011                  e.box(e.types.esds, e.esds(t))
3012                );
3013              }),
3014              (e.mp3 = function (t) {
3015                var r = t.samplerate;
3016                return e.box(
3017                  e.types[".mp3"],
3018                  new Uint8Array([
3019                    0,
3020                    0,
3021                    0,
3022                    0,
3023                    0,
3024                    0,
3025                    0,
3026                    1,
3027                    0,
3028                    0,
3029                    0,
3030                    0,
3031                    0,
3032                    0,
3033                    0,
3034                    0,
3035                    0,
3036                    t.channelCount,
3037                    0,
3038                    16,
3039                    0,
3040                    0,
3041                    0,
3042                    0,
3043                    (r >> 8) & 255,
3044                    255 & r,
3045                    0,
3046                    0,
3047                  ])
3048                );
3049              }),
3050              (e.stsd = function (t) {
3051                return "audio" === t.type
3052                  ? t.isAAC || "mp3" !== t.codec
3053                    ? e.box(e.types.stsd, e.STSD, e.mp4a(t))
3054                    : e.box(e.types.stsd, e.STSD, e.mp3(t))
3055                  : e.box(e.types.stsd, e.STSD, e.avc1(t));
3056              }),
3057              (e.tkhd = function (t) {
3058                var r = t.id,
3059                  i = t.duration * t.timescale,
3060                  a = t.width,
3061                  n = t.height,
3062                  s = Math.floor(i / (k + 1)),
3063                  o = Math.floor(i % (k + 1));
3064                return e.box(
3065                  e.types.tkhd,
3066                  new Uint8Array([
3067                    1,
3068                    0,
3069                    0,
3070                    7,
3071                    0,
3072                    0,
3073                    0,
3074                    0,
3075                    0,
3076                    0,
3077                    0,
3078                    2,
3079                    0,
3080                    0,
3081                    0,
3082                    0,
3083                    0,
3084                    0,
3085                    0,
3086                    3,
3087                    (r >> 24) & 255,
3088                    (r >> 16) & 255,
3089                    (r >> 8) & 255,
3090                    255 & r,
3091                    0,
3092                    0,
3093                    0,
3094                    0,
3095                    s >> 24,
3096                    (s >> 16) & 255,
3097                    (s >> 8) & 255,
3098                    255 & s,
3099                    o >> 24,
3100                    (o >> 16) & 255,
3101                    (o >> 8) & 255,
3102                    255 & o,
3103                    0,
3104                    0,
3105                    0,
3106                    0,
3107                    0,
3108                    0,
3109                    0,
3110                    0,
3111                    0,
3112                    0,
3113                    0,
3114                    0,
3115                    0,
3116                    0,
3117                    0,
3118                    0,
3119                    0,
3120                    1,
3121                    0,
3122                    0,
3123                    0,
3124                    0,
3125                    0,
3126                    0,
3127                    0,
3128                    0,
3129                    0,
3130                    0,
3131                    0,
3132                    0,
3133                    0,
3134                    0,
3135                    0,
3136                    1,
3137                    0,
3138                    0,
3139                    0,
3140                    0,
3141                    0,
3142                    0,
3143                    0,
3144                    0,
3145                    0,
3146                    0,
3147                    0,
3148                    0,
3149                    0,
3150                    0,
3151                    64,
3152                    0,
3153                    0,
3154                    0,
3155                    (a >> 8) & 255,
3156                    255 & a,
3157                    0,
3158                    0,
3159                    (n >> 8) & 255,
3160                    255 & n,
3161                    0,
3162                    0,
3163                  ])
3164                );
3165              }),
3166              (e.traf = function (t, r) {
3167                var i = e.sdtp(t),
3168                  a = t.id,
3169                  n = Math.floor(r / (k + 1)),
3170                  s = Math.floor(r % (k + 1));
3171                return e.box(
3172                  e.types.traf,
3173                  e.box(
3174                    e.types.tfhd,
3175                    new Uint8Array([
3176                      0,
3177                      0,
3178                      0,
3179                      0,
3180                      a >> 24,
3181                      (a >> 16) & 255,
3182                      (a >> 8) & 255,
3183                      255 & a,
3184                    ])
3185                  ),
3186                  e.box(
3187                    e.types.tfdt,
3188                    new Uint8Array([
3189                      1,
3190                      0,
3191                      0,
3192                      0,
3193                      n >> 24,
3194                      (n >> 16) & 255,
3195                      (n >> 8) & 255,
3196                      255 & n,
3197                      s >> 24,
3198                      (s >> 16) & 255,
3199                      (s >> 8) & 255,
3200                      255 & s,
3201                    ])
3202                  ),
3203                  e.trun(t, i.length + 16 + 20 + 8 + 16 + 8 + 8),
3204                  i
3205                );
3206              }),
3207              (e.trak = function (t) {
3208                return (
3209                  (t.duration = t.duration || 4294967295),
3210                  e.box(e.types.trak, e.tkhd(t), e.mdia(t))
3211                );
3212              }),
3213              (e.trex = function (t) {
3214                var r = t.id;
3215                return e.box(
3216                  e.types.trex,
3217                  new Uint8Array([
3218                    0,
3219                    0,
3220                    0,
3221                    0,
3222                    r >> 24,
3223                    (r >> 16) & 255,
3224                    (r >> 8) & 255,
3225                    255 & r,
3226                    0,
3227                    0,
3228                    0,
3229                    1,
3230                    0,
3231                    0,
3232                    0,
3233                    0,
3234                    0,
3235                    0,
3236                    0,
3237                    0,
3238                    0,
3239                    1,
3240                    0,
3241                    1,
3242                  ])
3243                );
3244              }),
3245              (e.trun = function (t, r) {
3246                var i,
3247                  a,
3248                  n,
3249                  s,
3250                  o,
3251                  l,
3252                  d = t.samples || [],
3253                  u = d.length,
3254                  c = 12 + 16 * u,
3255                  h = new Uint8Array(c);
3256                for (
3257                  r += 8 + c,
3258                    h.set(
3259                      [
3260                        0,
3261                        0,
3262                        15,
3263                        1,
3264                        (u >>> 24) & 255,
3265                        (u >>> 16) & 255,
3266                        (u >>> 8) & 255,
3267                        255 & u,
3268                        (r >>> 24) & 255,
3269                        (r >>> 16) & 255,
3270                        (r >>> 8) & 255,
3271                        255 & r,
3272                      ],
3273                      0
3274                    ),
3275                    i = 0;
3276                  i < u;
3277                  i++
3278                )
3279                  (n = (a = d[i]).duration),
3280                    (s = a.size),
3281                    (o = a.flags),
3282                    (l = a.cts),
3283                    h.set(
3284                      [
3285                        (n >>> 24) & 255,
3286                        (n >>> 16) & 255,
3287                        (n >>> 8) & 255,
3288                        255 & n,
3289                        (s >>> 24) & 255,
3290                        (s >>> 16) & 255,
3291                        (s >>> 8) & 255,
3292                        255 & s,
3293                        (o.isLeading << 2) | o.dependsOn,
3294                        (o.isDependedOn << 6) |
3295                          (o.hasRedundancy << 4) |
3296                          (o.paddingValue << 1) |
3297                          o.isNonSync,
3298                        61440 & o.degradPrio,
3299                        15 & o.degradPrio,
3300                        (l >>> 24) & 255,
3301                        (l >>> 16) & 255,
3302                        (l >>> 8) & 255,
3303                        255 & l,
3304                      ],
3305                      12 + 16 * i
3306                    );
3307                return e.box(e.types.trun, h);
3308              }),
3309              (e.initSegment = function (t) {
3310                e.types || e.init();
3311                var r,
3312                  i = e.moov(t);
3313                return (
3314                  (r = new Uint8Array(e.FTYP.byteLength + i.byteLength)).set(
3315                    e.FTYP
3316                  ),
3317                  r.set(i, e.FTYP.byteLength),
3318                  r
3319                );
3320              }),
3321              e
3322            );
3323          })();
3324        function C(e, t, r, i) {
3325          void 0 === r && (r = 1), void 0 === i && (i = !1);
3326          var a = e * t * r;
3327          return i ? Math.round(a) : a;
3328        }
3329        function O(e, t) {
3330          return void 0 === t && (t = !1), C(e, 1e3, 1 / 9e4, t);
3331        }
3332        function I(e, t) {
3333          return void 0 === t && (t = 1), C(e, 9e4, 1 / t);
3334        }
3335        var P,
3336          x = I(10),
3337          M = I(0.2),
3338          F = (function () {
3339            function e(e, t, r, i) {
3340              (this.observer = e), (this.config = t), (this.typeSupported = r);
3341              var a = navigator.userAgent;
3342              (this.isSafari =
3343                i && i.indexOf("Apple") > -1 && a && !a.match("CriOS")),
3344                (this.ISGenerated = !1);
3345            }
3346            var t = e.prototype;
3347            return (
3348              (t.destroy = function () {}),
3349              (t.resetTimeStamp = function (e) {
3350                this._initPTS = this._initDTS = e;
3351              }),
3352              (t.resetInitSegment = function () {
3353                this.ISGenerated = !1;
3354              }),
3355              (t.remux = function (e, t, r, a, n, s, l) {
3356                if (
3357                  (this.ISGenerated || this.generateIS(e, t, n),
3358                  this.ISGenerated)
3359                ) {
3360                  var d = e.samples.length,
3361                    u = t.samples.length,
3362                    c = n,
3363                    h = n;
3364                  if (d && u) {
3365                    var f =
3366                      (e.samples[0].pts - t.samples[0].pts) / t.inputTimeScale;
3367                    (c += Math.max(0, f)), (h += Math.max(0, -f));
3368                  }
3369                  if (d) {
3370                    e.timescale ||
3371                      (o.b.warn("regenerate InitSegment as audio detected"),
3372                      this.generateIS(e, t, n));
3373                    var g,
3374                      p = this.remuxAudio(e, c, s, l);
3375                    if (u)
3376                      p && (g = p.endPTS - p.startPTS),
3377                        t.timescale ||
3378                          (o.b.warn("regenerate InitSegment as video detected"),
3379                          this.generateIS(e, t, n)),
3380                        this.remuxVideo(t, h, s, g, l);
3381                  } else if (u) {
3382                    var v = this.remuxVideo(t, h, s, 0, l);
3383                    v && e.codec && this.remuxEmptyAudio(e, c, s, v);
3384                  }
3385                }
3386                r.samples.length && this.remuxID3(r, n),
3387                  a.samples.length && this.remuxText(a, n),
3388                  this.observer.trigger(i.a.FRAG_PARSED);
3389              }),
3390              (t.generateIS = function (e, t, r) {
3391                var n,
3392                  s,
3393                  l = this.observer,
3394                  d = e.samples,
3395                  u = t.samples,
3396                  c = this.typeSupported,
3397                  h = "audio/mp4",
3398                  f = {},
3399                  g = { tracks: f },
3400                  p = void 0 === this._initPTS;
3401                if (
3402                  (p && (n = s = 1 / 0),
3403                  e.config &&
3404                    d.length &&
3405                    ((e.timescale = e.samplerate),
3406                    o.b.log("audio sampling rate : " + e.samplerate),
3407                    e.isAAC ||
3408                      (c.mpeg
3409                        ? ((h = "audio/mpeg"), (e.codec = ""))
3410                        : c.mp3 && (e.codec = "mp3")),
3411                    (f.audio = {
3412                      container: h,
3413                      codec: e.codec,
3414                      initSegment:
3415                        !e.isAAC && c.mpeg
3416                          ? new Uint8Array()
3417                          : D.initSegment([e]),
3418                      metadata: { channelCount: e.channelCount },
3419                    }),
3420                    p && (n = s = d[0].pts - e.inputTimeScale * r)),
3421                  t.sps && t.pps && u.length)
3422                ) {
3423                  var v = t.inputTimeScale;
3424                  (t.timescale = v),
3425                    (f.video = {
3426                      container: "video/mp4",
3427                      codec: t.codec,
3428                      initSegment: D.initSegment([t]),
3429                      metadata: { width: t.width, height: t.height },
3430                    }),
3431                    p &&
3432                      ((n = Math.min(n, u[0].pts - v * r)),
3433                      (s = Math.min(s, u[0].dts - v * r)),
3434                      this.observer.trigger(i.a.INIT_PTS_FOUND, {
3435                        initPTS: n,
3436                      }));
3437                }
3438                Object.keys(f).length
3439                  ? (l.trigger(i.a.FRAG_PARSING_INIT_SEGMENT, g),
3440                    (this.ISGenerated = !0),
3441                    p && ((this._initPTS = n), (this._initDTS = s)))
3442                  : l.trigger(i.a.ERROR, {
3443                      type: a.b.MEDIA_ERROR,
3444                      details: a.a.FRAG_PARSING_ERROR,
3445                      fatal: !1,
3446                      reason: "no audio/video samples found",
3447                    });
3448              }),
3449              (t.remuxVideo = function (e, t, r, n, s) {
3450                var l,
3451                  d,
3452                  u,
3453                  c,
3454                  h,
3455                  f,
3456                  g,
3457                  p = 8,
3458                  v = e.timescale,
3459                  m = e.samples,
3460                  y = [],
3461                  b = m.length,
3462                  T = this._PTSNormalize,
3463                  E = this._initPTS,
3464                  S = this.nextAvcDts,
3465                  _ = this.isSafari;
3466                if (0 !== b) {
3467                  _ &&
3468                    (r |=
3469                      m.length &&
3470                      S &&
3471                      ((s && Math.abs(t - S / v) < 0.1) ||
3472                        Math.abs(m[0].pts - S - E) < v / 5)),
3473                    r || (S = t * v),
3474                    m.forEach(function (e) {
3475                      (e.pts = T(e.pts - E, S)), (e.dts = T(e.dts - E, S));
3476                    }),
3477                    m.sort(function (e, t) {
3478                      var r = e.dts - t.dts,
3479                        i = e.pts - t.pts;
3480                      return r || i || e.id - t.id;
3481                    });
3482                  var A = m.reduce(function (e, t) {
3483                    return Math.max(Math.min(e, t.pts - t.dts), -1 * M);
3484                  }, 0);
3485                  if (A < 0) {
3486                    o.b.warn(
3487                      "PTS < DTS detected in video samples, shifting DTS by " +
3488                        O(A, !0) +
3489                        " ms to overcome this issue"
3490                    );
3491                    for (var R = 0; R < m.length; R++) m[R].dts += A;
3492                  }
3493                  var w = m[0];
3494                  (h = Math.max(w.dts, 0)), (c = Math.max(w.pts, 0));
3495                  var L = h - S;
3496                  r &&
3497                    L &&
3498                    (L > 1
3499                      ? o.b.log(
3500                          "AVC: " +
3501                            O(L, !0) +
3502                            " ms hole between fragments detected,filling it"
3503                        )
3504                      : L < -1 &&
3505                        o.b.log(
3506                          "AVC: " +
3507                            O(-L, !0) +
3508                            " ms overlapping between fragments detected"
3509                        ),
3510                    (h = S),
3511                    (m[0].dts = h),
3512                    (c = Math.max(c - L, S)),
3513                    (m[0].pts = c),
3514                    o.b.log(
3515                      "Video: PTS/DTS adjusted: " +
3516                        O(c, !0) +
3517                        "/" +
3518                        O(h, !0) +
3519                        ", delta: " +
3520                        O(L, !0) +
3521                        " ms"
3522                    )),
3523                    (w = m[m.length - 1]),
3524                    (g = Math.max(w.dts, 0)),
3525                    (f = Math.max(w.pts, 0, g)),
3526                    _ && (l = Math.round((g - h) / (m.length - 1)));
3527                  for (var k = 0, C = 0, I = 0; I < b; I++) {
3528                    for (
3529                      var P = m[I], x = P.units, F = x.length, U = 0, N = 0;
3530                      N < F;
3531                      N++
3532                    )
3533                      U += x[N].data.length;
3534                    (C += U),
3535                      (k += F),
3536                      (P.length = U),
3537                      (P.dts = _ ? h + I * l : Math.max(P.dts, h)),
3538                      (P.pts = Math.max(P.pts, P.dts));
3539                  }
3540                  var B = C + 4 * k + 8;
3541                  try {
3542                    d = new Uint8Array(B);
3543                  } catch (e) {
3544                    return void this.observer.trigger(i.a.ERROR, {
3545                      type: a.b.MUX_ERROR,
3546                      details: a.a.REMUX_ALLOC_ERROR,
3547                      fatal: !1,
3548                      bytes: B,
3549                      reason: "fail allocating video mdat " + B,
3550                    });
3551                  }
3552                  var G = new DataView(d.buffer);
3553                  G.setUint32(0, B), d.set(D.types.mdat, 4);
3554                  for (var K = 0; K < b; K++) {
3555                    for (
3556                      var j = m[K],
3557                        H = j.units,
3558                        V = 0,
3559                        Y = void 0,
3560                        W = 0,
3561                        q = H.length;
3562                      W < q;
3563                      W++
3564                    ) {
3565                      var z = H[W],
3566                        X = z.data,
3567                        Q = z.data.byteLength;
3568                      G.setUint32(p, Q),
3569                        (p += 4),
3570                        d.set(X, p),
3571                        (p += Q),
3572                        (V += 4 + Q);
3573                    }
3574                    if (_) Y = Math.max(0, l * Math.round((j.pts - j.dts) / l));
3575                    else {
3576                      if (K < b - 1) l = m[K + 1].dts - j.dts;
3577                      else {
3578                        var $ = this.config,
3579                          J = j.dts - m[K > 0 ? K - 1 : K].dts;
3580                        if ($.stretchShortVideoTrack) {
3581                          var Z = $.maxBufferHole,
3582                            ee = Math.floor(Z * v),
3583                            te = (n ? c + n * v : this.nextAudioPts) - j.pts;
3584                          te > ee
3585                            ? ((l = te - J) < 0 && (l = J),
3586                              o.b.log(
3587                                "It is approximately " +
3588                                  O(te, !1) +
3589                                  " ms to the next segment; using duration " +
3590                                  O(l, !1) +
3591                                  " ms for the last video frame."
3592                              ))
3593                            : (l = J);
3594                        } else l = J;
3595                      }
3596                      Y = Math.round(j.pts - j.dts);
3597                    }
3598                    y.push({
3599                      size: V,
3600                      duration: l,
3601                      cts: Y,
3602                      flags: {
3603                        isLeading: 0,
3604                        isDependedOn: 0,
3605                        hasRedundancy: 0,
3606                        degradPrio: 0,
3607                        dependsOn: j.key ? 2 : 1,
3608                        isNonSync: j.key ? 0 : 1,
3609                      },
3610                    });
3611                  }
3612                  this.nextAvcDts = g + l;
3613                  var re = e.dropped;
3614                  if (
3615                    ((e.nbNalu = 0),
3616                    (e.dropped = 0),
3617                    y.length &&
3618                      navigator.userAgent.toLowerCase().indexOf("chrome") > -1)
3619                  ) {
3620                    var ie = y[0].flags;
3621                    (ie.dependsOn = 2), (ie.isNonSync = 0);
3622                  }
3623                  (e.samples = y),
3624                    (u = D.moof(e.sequenceNumber++, h, e)),
3625                    (e.samples = []);
3626                  var ae = {
3627                    data1: u,
3628                    data2: d,
3629                    startPTS: c / v,
3630                    endPTS: (f + l) / v,
3631                    startDTS: h / v,
3632                    endDTS: this.nextAvcDts / v,
3633                    type: "video",
3634                    hasAudio: !1,
3635                    hasVideo: !0,
3636                    nb: y.length,
3637                    dropped: re,
3638                  };
3639                  return this.observer.trigger(i.a.FRAG_PARSING_DATA, ae), ae;
3640                }
3641              }),
3642              (t.remuxAudio = function (e, t, r, n) {
3643                var s,
3644                  l,
3645                  d,
3646                  u,
3647                  c,
3648                  h,
3649                  f = e.inputTimeScale,
3650                  g = e.timescale,
3651                  p = f / g,
3652                  v = (e.isAAC ? 1024 : 1152) * p,
3653                  m = this._PTSNormalize,
3654                  y = this._initPTS,
3655                  b = !e.isAAC && this.typeSupported.mpeg,
3656                  T = b ? 0 : 8,
3657                  E = e.samples,
3658                  S = [],
3659                  _ = this.nextAudioPts;
3660                if (
3661                  ((r |=
3662                    E.length &&
3663                    _ &&
3664                    ((n && Math.abs(t - _ / f) < 0.1) ||
3665                      Math.abs(E[0].pts - _ - y) < 20 * v)),
3666                  E.forEach(function (e) {
3667                    e.pts = e.dts = m(e.pts - y, t * f);
3668                  }),
3669                  0 !==
3670                    (E = E.filter(function (e) {
3671                      return e.pts >= 0;
3672                    })).length)
3673                ) {
3674                  if ((r || (_ = n ? t * f : E[0].pts), e.isAAC))
3675                    for (
3676                      var A = this.config.maxAudioFramesDrift, R = 0, w = _;
3677                      R < E.length;
3678
3679                    ) {
3680                      var k,
3681                        C = E[R];
3682                      if ((k = C.pts - w) <= -A * v)
3683                        o.b.warn(
3684                          "Dropping 1 audio frame @ " +
3685                            O(w, !0) +
3686                            " ms due to " +
3687                            O(k, !0) +
3688                            " ms overlap."
3689                        ),
3690                          E.splice(R, 1);
3691                      else if (k >= A * v && k < x && w) {
3692                        var I = Math.round(k / v);
3693                        o.b.warn(
3694                          "Injecting " +
3695                            I +
3696                            " audio frames @ " +
3697                            O(w, !0) +
3698                            " ms due to " +
3699                            O(w, !0) +
3700                            " ms gap."
3701                        );
3702                        for (var P = 0; P < I; P++) {
3703                          var M = Math.max(w, 0);
3704                          (l = L.getSilentFrame(
3705                            e.manifestCodec || e.codec,
3706                            e.channelCount
3707                          )) ||
3708                            (o.b.log(
3709                              "Unable to get silent frame for given audio codec; duplicating last frame instead."
3710                            ),
3711                            (l = C.unit.subarray())),
3712                            E.splice(R, 0, { unit: l, pts: M, dts: M }),
3713                            (w += v),
3714                            R++;
3715                        }
3716                        (C.pts = C.dts = w), (w += v), R++;
3717                      } else Math.abs(k), (C.pts = C.dts = w), (w += v), R++;
3718                    }
3719                  for (var F = E.length, U = 0; F--; )
3720                    U += E[F].unit.byteLength;
3721                  for (var N = 0, B = E.length; N < B; N++) {
3722                    var G = E[N],
3723                      K = G.unit,
3724                      j = G.pts;
3725                    if (void 0 !== h) s.duration = Math.round((j - h) / p);
3726                    else {
3727                      var H = j - _,
3728                        V = 0;
3729                      if (r && e.isAAC && H) {
3730                        if (H > 0 && H < x)
3731                          (V = Math.round((j - _) / v)),
3732                            o.b.log(
3733                              O(H, !0) +
3734                                " ms hole between AAC samples detected,filling it"
3735                            ),
3736                            V > 0 &&
3737                              ((l = L.getSilentFrame(
3738                                e.manifestCodec || e.codec,
3739                                e.channelCount
3740                              )) || (l = K.subarray()),
3741                              (U += V * l.length));
3742                        else if (H < -12) {
3743                          o.b.log(
3744                            "drop overlapping AAC sample, expected/parsed/delta: " +
3745                              O(_, !0) +
3746                              " ms / " +
3747                              O(j, !0) +
3748                              " ms / " +
3749                              O(-H, !0) +
3750                              " ms"
3751                          ),
3752                            (U -= K.byteLength);
3753                          continue;
3754                        }
3755                        j = _;
3756                      }
3757                      if (((c = j), !(U > 0))) return;
3758                      U += T;
3759                      try {
3760                        d = new Uint8Array(U);
3761                      } catch (e) {
3762                        return void this.observer.trigger(i.a.ERROR, {
3763                          type: a.b.MUX_ERROR,
3764                          details: a.a.REMUX_ALLOC_ERROR,
3765                          fatal: !1,
3766                          bytes: U,
3767                          reason: "fail allocating audio mdat " + U,
3768                        });
3769                      }
3770                      b ||
3771                        (new DataView(d.buffer).setUint32(0, U),
3772                        d.set(D.types.mdat, 4));
3773                      for (var Y = 0; Y < V; Y++)
3774                        (l = L.getSilentFrame(
3775                          e.manifestCodec || e.codec,
3776                          e.channelCount
3777                        )) ||
3778                          (o.b.log(
3779                            "Unable to get silent frame for given audio codec; duplicating this frame instead."
3780                          ),
3781                          (l = K.subarray())),
3782                          d.set(l, T),
3783                          (T += l.byteLength),
3784                          (s = {
3785                            size: l.byteLength,
3786                            cts: 0,
3787                            duration: 1024,
3788                            flags: {
3789                              isLeading: 0,
3790                              isDependedOn: 0,
3791                              hasRedundancy: 0,
3792                              degradPrio: 0,
3793                              dependsOn: 1,
3794                            },
3795                          }),
3796                          S.push(s);
3797                    }
3798                    d.set(K, T);
3799                    var W = K.byteLength;
3800                    (T += W),
3801                      (s = {
3802                        size: W,
3803                        cts: 0,
3804                        duration: 0,
3805                        flags: {
3806                          isLeading: 0,
3807                          isDependedOn: 0,
3808                          hasRedundancy: 0,
3809                          degradPrio: 0,
3810                          dependsOn: 1,
3811                        },
3812                      }),
3813                      S.push(s),
3814                      (h = j);
3815                  }
3816                  var q = 0;
3817                  if (
3818                    ((F = S.length) >= 2 &&
3819                      ((q = S[F - 2].duration), (s.duration = q)),
3820                    F)
3821                  ) {
3822                    (this.nextAudioPts = _ = h + p * q),
3823                      (e.samples = S),
3824                      (u = b
3825                        ? new Uint8Array()
3826                        : D.moof(e.sequenceNumber++, c / p, e)),
3827                      (e.samples = []);
3828                    var z = c / f,
3829                      X = _ / f,
3830                      Q = {
3831                        data1: u,
3832                        data2: d,
3833                        startPTS: z,
3834                        endPTS: X,
3835                        startDTS: z,
3836                        endDTS: X,
3837                        type: "audio",
3838                        hasAudio: !0,
3839                        hasVideo: !1,
3840                        nb: F,
3841                      };
3842                    return this.observer.trigger(i.a.FRAG_PARSING_DATA, Q), Q;
3843                  }
3844                  return null;
3845                }
3846              }),
3847              (t.remuxEmptyAudio = function (e, t, r, i) {
3848                var a = e.inputTimeScale,
3849                  n = a / (e.samplerate ? e.samplerate : a),
3850                  s = this.nextAudioPts,
3851                  l = (void 0 !== s ? s : i.startDTS * a) + this._initDTS,
3852                  d = i.endDTS * a + this._initDTS,
3853                  u = 1024 * n,
3854                  c = Math.ceil((d - l) / u),
3855                  h = L.getSilentFrame(
3856                    e.manifestCodec || e.codec,
3857                    e.channelCount
3858                  );
3859                if ((o.b.warn("remux empty Audio"), h)) {
3860                  for (var f = [], g = 0; g < c; g++) {
3861                    var p = l + g * u;
3862                    f.push({ unit: h, pts: p, dts: p });
3863                  }
3864                  (e.samples = f), this.remuxAudio(e, t, r);
3865                } else
3866                  o.b.trace(
3867                    "Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!"
3868                  );
3869              }),
3870              (t.remuxID3 = function (e) {
3871                var t,
3872                  r = e.samples.length,
3873                  a = e.inputTimeScale,
3874                  n = this._initPTS,
3875                  s = this._initDTS;
3876                if (r) {
3877                  for (var o = 0; o < r; o++)
3878                    ((t = e.samples[o]).pts = (t.pts - n) / a),
3879                      (t.dts = (t.dts - s) / a);
3880                  this.observer.trigger(i.a.FRAG_PARSING_METADATA, {
3881                    samples: e.samples,
3882                  });
3883                }
3884                e.samples = [];
3885              }),
3886              (t.remuxText = function (e) {
3887                e.samples.sort(function (e, t) {
3888                  return e.pts - t.pts;
3889                });
3890                var t,
3891                  r = e.samples.length,
3892                  a = e.inputTimeScale,
3893                  n = this._initPTS;
3894                if (r) {
3895                  for (var s = 0; s < r; s++)
3896                    (t = e.samples[s]).pts = (t.pts - n) / a;
3897                  this.observer.trigger(i.a.FRAG_PARSING_USERDATA, {
3898                    samples: e.samples,
3899                  });
3900                }
3901                e.samples = [];
3902              }),
3903              (t._PTSNormalize = function (e, t) {
3904                var r;
3905                if (void 0 === t) return e;
3906                for (
3907                  r = t < e ? -8589934592 : 8589934592;
3908                  Math.abs(e - t) > 4294967296;
3909
3910                )
3911                  e += r;
3912                return e;
3913              }),
3914              e
3915            );
3916          })(),
3917          U = (function () {
3918            function e(e) {
3919              this.observer = e;
3920            }
3921            var t = e.prototype;
3922            return (
3923              (t.destroy = function () {}),
3924              (t.resetTimeStamp = function () {}),
3925              (t.resetInitSegment = function () {}),
3926              (t.remux = function (e, t, r, a, n, s, o, l) {
3927                var d = this.observer,
3928                  u = "";
3929                e && (u += "audio"),
3930                  t && (u += "video"),
3931                  d.trigger(i.a.FRAG_PARSING_DATA, {
3932                    data1: l,
3933                    startPTS: n,
3934                    startDTS: n,
3935                    type: u,
3936                    hasAudio: !!e,
3937                    hasVideo: !!t,
3938                    nb: 1,
3939                    dropped: 0,
3940                  }),
3941                  d.trigger(i.a.FRAG_PARSED);
3942              }),
3943              e
3944            );
3945          })(),
3946          N = Object(l.a)();
3947        try {
3948          P = N.performance.now.bind(N.performance);
3949        } catch (e) {
3950          o.b.debug("Unable to use Performance API on this environment"),
3951            (P = N.Date.now);
3952        }
3953        var B = (function () {
3954          function e(e, t, r, i) {
3955            (this.observer = e),
3956              (this.typeSupported = t),
3957              (this.config = r),
3958              (this.vendor = i);
3959          }
3960          var t = e.prototype;
3961          return (
3962            (t.destroy = function () {
3963              var e = this.demuxer;
3964              e && e.destroy();
3965            }),
3966            (t.push = function (e, t, r, a, s, o, l, d, u, c, h, f) {
3967              var g = this;
3968              if (
3969                e.byteLength > 0 &&
3970                null != t &&
3971                null != t.key &&
3972                "AES-128" === t.method
3973              ) {
3974                var p = this.decrypter;
3975                null == p &&
3976                  (p = this.decrypter = new n.a(this.observer, this.config));
3977                var v = P();
3978                p.decrypt(e, t.key.buffer, t.iv.buffer, function (e) {
3979                  var n = P();
3980                  g.observer.trigger(i.a.FRAG_DECRYPTED, {
3981                    stats: { tstart: v, tdecrypt: n },
3982                  }),
3983                    g.pushDecrypted(
3984                      new Uint8Array(e),
3985                      t,
3986                      new Uint8Array(r),
3987                      a,
3988                      s,
3989                      o,
3990                      l,
3991                      d,
3992                      u,
3993                      c,
3994                      h,
3995                      f
3996                    );
3997                });
3998              } else
3999                this.pushDecrypted(
4000                  new Uint8Array(e),
4001                  t,
4002                  new Uint8Array(r),
4003                  a,
4004                  s,
4005                  o,
4006                  l,
4007                  d,
4008                  u,
4009                  c,
4010                  h,
4011                  f
4012                );
4013            }),
4014            (t.pushDecrypted = function (e, t, r, n, s, o, l, d, u, c, h, f) {
4015              var g = this.demuxer;
4016              if (!g || ((l || d) && !this.probe(e))) {
4017                for (
4018                  var p = this.observer,
4019                    v = this.typeSupported,
4020                    m = this.config,
4021                    T = [
4022                      { demux: R, remux: F },
4023                      { demux: b.a, remux: U },
4024                      { demux: y, remux: F },
4025                      { demux: w, remux: F },
4026                    ],
4027                    E = 0,
4028                    S = T.length;
4029                  E < S;
4030                  E++
4031                ) {
4032                  var _ = T[E],
4033                    A = _.demux.probe;
4034                  if (A(e)) {
4035                    var L = (this.remuxer = new _.remux(p, m, v, this.vendor));
4036                    (g = new _.demux(p, L, m, v)), (this.probe = A);
4037                    break;
4038                  }
4039                }
4040                if (!g)
4041                  return void p.trigger(i.a.ERROR, {
4042                    type: a.b.MEDIA_ERROR,
4043                    details: a.a.FRAG_PARSING_ERROR,
4044                    fatal: !0,
4045                    reason: "no demux matching with content found",
4046                  });
4047                this.demuxer = g;
4048              }
4049              var k = this.remuxer;
4050              (l || d) &&
4051                (g.resetInitSegment(r, n, s, c), k.resetInitSegment()),
4052                l && (g.resetTimeStamp(f), k.resetTimeStamp(f)),
4053                "function" == typeof g.setDecryptData && g.setDecryptData(t),
4054                g.append(e, o, u, h);
4055            }),
4056            e
4057          );
4058        })();
4059        t.a = B;
4060      },
4061      function (e, t, r) {
4062        "use strict";
4063        var i = r(0),
4064          a = r(1),
4065          n = Math.pow(2, 32) - 1,
4066          s = (function () {
4067            function e(e, t) {
4068              (this.observer = e), (this.remuxer = t);
4069            }
4070            var t = e.prototype;
4071            return (
4072              (t.resetTimeStamp = function (e) {
4073                this.initPTS = e;
4074              }),
4075              (t.resetInitSegment = function (t, r, i, n) {
4076                if (t && t.byteLength) {
4077                  var s = (this.initData = e.parseInitSegment(t));
4078                  null == r && (r = "mp4a.40.5"),
4079                    null == i && (i = "avc1.42e01e");
4080                  var o = {};
4081                  s.audio && s.video
4082                    ? (o.audiovideo = {
4083                        container: "video/mp4",
4084                        codec: r + "," + i,
4085                        initSegment: n ? t : null,
4086                      })
4087                    : (s.audio &&
4088                        (o.audio = {
4089                          container: "audio/mp4",
4090                          codec: r,
4091                          initSegment: n ? t : null,
4092                        }),
4093                      s.video &&
4094                        (o.video = {
4095                          container: "video/mp4",
4096                          codec: i,
4097                          initSegment: n ? t : null,
4098                        })),
4099                    this.observer.trigger(a.a.FRAG_PARSING_INIT_SEGMENT, {
4100                      tracks: o,
4101                    });
4102                } else r && (this.audioCodec = r), i && (this.videoCodec = i);
4103              }),
4104              (e.probe = function (t) {
4105                return (
4106                  e.findBox(
4107                    { data: t, start: 0, end: Math.min(t.length, 16384) },
4108                    ["moof"]
4109                  ).length > 0
4110                );
4111              }),
4112              (e.bin2str = function (e) {
4113                return String.fromCharCode.apply(null, e);
4114              }),
4115              (e.readUint16 = function (e, t) {
4116                e.data && ((t += e.start), (e = e.data));
4117                var r = (e[t] << 8) | e[t + 1];
4118                return r < 0 ? 65536 + r : r;
4119              }),
4120              (e.readUint32 = function (e, t) {
4121                e.data && ((t += e.start), (e = e.data));
4122                var r =
4123                  (e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | e[t + 3];
4124                return r < 0 ? 4294967296 + r : r;
4125              }),
4126              (e.writeUint32 = function (e, t, r) {
4127                e.data && ((t += e.start), (e = e.data)),
4128                  (e[t] = r >> 24),
4129                  (e[t + 1] = (r >> 16) & 255),
4130                  (e[t + 2] = (r >> 8) & 255),
4131                  (e[t + 3] = 255 & r);
4132              }),
4133              (e.findBox = function (t, r) {
4134                var i,
4135                  a,
4136                  n,
4137                  s,
4138                  o,
4139                  l,
4140                  d = [];
4141                if (
4142                  (t.data
4143                    ? ((o = t.start), (n = t.end), (t = t.data))
4144                    : ((o = 0), (n = t.byteLength)),
4145                  !r.length)
4146                )
4147                  return null;
4148                for (i = o; i < n; )
4149                  (l = (a = e.readUint32(t, i)) > 1 ? i + a : n),
4150                    e.bin2str(t.subarray(i + 4, i + 8)) === r[0] &&
4151                      (1 === r.length
4152                        ? d.push({ data: t, start: i + 8, end: l })
4153                        : (s = e.findBox(
4154                            { data: t, start: i + 8, end: l },
4155                            r.slice(1)
4156                          )).length && (d = d.concat(s))),
4157                    (i = l);
4158                return d;
4159              }),
4160              (e.parseSegmentIndex = function (t) {
4161                var r,
4162                  i = e.findBox(t, ["moov"])[0],
4163                  a = i ? i.end : null,
4164                  n = 0,
4165                  s = e.findBox(t, ["sidx"]);
4166                if (!s || !s[0]) return null;
4167                r = [];
4168                var o = (s = s[0]).data[0];
4169                n = 0 === o ? 8 : 16;
4170                var l = e.readUint32(s, n);
4171                n += 4;
4172                (n += 0 === o ? 8 : 16), (n += 2);
4173                var d = s.end + 0,
4174                  u = e.readUint16(s, n);
4175                n += 2;
4176                for (var c = 0; c < u; c++) {
4177                  var h = n,
4178                    f = e.readUint32(s, h);
4179                  h += 4;
4180                  var g = 2147483647 & f;
4181                  if (1 === (2147483648 & f) >>> 31)
4182                    return void console.warn(
4183                      "SIDX has hierarchical references (not supported)"
4184                    );
4185                  var p = e.readUint32(s, h);
4186                  (h += 4),
4187                    r.push({
4188                      referenceSize: g,
4189                      subsegmentDuration: p,
4190                      info: { duration: p / l, start: d, end: d + g - 1 },
4191                    }),
4192                    (d += g),
4193                    (n = h += 4);
4194                }
4195                return {
4196                  earliestPresentationTime: 0,
4197                  timescale: l,
4198                  version: o,
4199                  referencesCount: u,
4200                  references: r,
4201                  moovEndOffset: a,
4202                };
4203              }),
4204              (e.parseInitSegment = function (t) {
4205                var r = [];
4206                return (
4207                  e.findBox(t, ["moov", "trak"]).forEach(function (t) {
4208                    var a = e.findBox(t, ["tkhd"])[0];
4209                    if (a) {
4210                      var n = a.data[a.start],
4211                        s = 0 === n ? 12 : 20,
4212                        o = e.readUint32(a, s),
4213                        l = e.findBox(t, ["mdia", "mdhd"])[0];
4214                      if (l) {
4215                        s = 0 === (n = l.data[l.start]) ? 12 : 20;
4216                        var d = e.readUint32(l, s),
4217                          u = e.findBox(t, ["mdia", "hdlr"])[0];
4218                        if (u) {
4219                          var c = { soun: "audio", vide: "video" }[
4220                            e.bin2str(
4221                              u.data.subarray(u.start + 8, u.start + 12)
4222                            )
4223                          ];
4224                          if (c) {
4225                            var h = e.findBox(t, [
4226                              "mdia",
4227                              "minf",
4228                              "stbl",
4229                              "stsd",
4230                            ]);
4231                            if (h.length) {
4232                              h = h[0];
4233                              var f = e.bin2str(
4234                                h.data.subarray(h.start + 12, h.start + 16)
4235                              );
4236                              i.b.log("MP4Demuxer:" + c + ":" + f + " found");
4237                            }
4238                            (r[o] = { timescale: d, type: c }),
4239                              (r[c] = { timescale: d, id: o });
4240                          }
4241                        }
4242                      }
4243                    }
4244                  }),
4245                  r
4246                );
4247              }),
4248              (e.getStartDTS = function (t, r) {
4249                var i, a, n;
4250                return (
4251                  (i = e.findBox(r, ["moof", "traf"])),
4252                  (a = [].concat.apply(
4253                    [],
4254                    i.map(function (r) {
4255                      return e.findBox(r, ["tfhd"]).map(function (i) {
4256                        var a, n;
4257                        return (
4258                          (a = e.readUint32(i, 4)),
4259                          (n = t[a].timescale || 9e4),
4260                          e.findBox(r, ["tfdt"]).map(function (t) {
4261                            var r, i;
4262                            return (
4263                              (r = t.data[t.start]),
4264                              (i = e.readUint32(t, 4)),
4265                              1 === r &&
4266                                ((i *= Math.pow(2, 32)),
4267                                (i += e.readUint32(t, 8))),
4268                              i
4269                            );
4270                          })[0] / n
4271                        );
4272                      });
4273                    })
4274                  )),
4275                  (n = Math.min.apply(null, a)),
4276                  isFinite(n) ? n : 0
4277                );
4278              }),
4279              (e.offsetStartDTS = function (t, r, i) {
4280                e.findBox(r, ["moof", "traf"]).map(function (r) {
4281                  return e.findBox(r, ["tfhd"]).map(function (a) {
4282                    var s = e.readUint32(a, 4),
4283                      o = t[s].timescale || 9e4;
4284                    e.findBox(r, ["tfdt"]).map(function (t) {
4285                      var r = t.data[t.start],
4286                        a = e.readUint32(t, 4);
4287                      if (0 === r) e.writeUint32(t, 4, a - i * o);
4288                      else {
4289                        (a *= Math.pow(2, 32)),
4290                          (a += e.readUint32(t, 8)),
4291                          (a -= i * o),
4292                          (a = Math.max(a, 0));
4293                        var s = Math.floor(a / (n + 1)),
4294                          l = Math.floor(a % (n + 1));
4295                        e.writeUint32(t, 4, s), e.writeUint32(t, 8, l);
4296                      }
4297                    });
4298                  });
4299                });
4300              }),
4301              (t.append = function (t, r, i, n) {
4302                var s = this.initData;
4303                s ||
4304                  (this.resetInitSegment(
4305                    t,
4306                    this.audioCodec,
4307                    this.videoCodec,
4308                    !1
4309                  ),
4310                  (s = this.initData));
4311                var o,
4312                  l = this.initPTS;
4313                if (void 0 === l) {
4314                  var d = e.getStartDTS(s, t);
4315                  (this.initPTS = l = d - r),
4316                    this.observer.trigger(a.a.INIT_PTS_FOUND, { initPTS: l });
4317                }
4318                e.offsetStartDTS(s, t, l),
4319                  (o = e.getStartDTS(s, t)),
4320                  this.remuxer.remux(s.audio, s.video, null, null, o, i, n, t);
4321              }),
4322              (t.destroy = function () {}),
4323              e
4324            );
4325          })();
4326        t.a = s;
4327      },
4328      function (e, t, r) {
4329        function i(e) {
4330          var t = {};
4331          function r(i) {
4332            if (t[i]) return t[i].exports;
4333            var a = (t[i] = { i: i, l: !1, exports: {} });
4334            return e[i].call(a.exports, a, a.exports, r), (a.l = !0), a.exports;
4335          }
4336          (r.m = e),
4337            (r.c = t),
4338            (r.i = function (e) {
4339              return e;
4340            }),
4341            (r.d = function (e, t, i) {
4342              r.o(e, t) ||
4343                Object.defineProperty(e, t, {
4344                  configurable: !1,
4345                  enumerable: !0,
4346                  get: i,
4347                });
4348            }),
4349            (r.r = function (e) {
4350              Object.defineProperty(e, "__esModule", { value: !0 });
4351            }),
4352            (r.n = function (e) {
4353              var t =
4354                e && e.__esModule
4355                  ? function () {
4356                      return e.default;
4357                    }
4358                  : function () {
4359                      return e;
4360                    };
4361              return r.d(t, "a", t), t;
4362            }),
4363            (r.o = function (e, t) {
4364              return Object.prototype.hasOwnProperty.call(e, t);
4365            }),
4366            (r.p = "/"),
4367            (r.oe = function (e) {
4368              throw (console.error(e), e);
4369            });
4370          var i = r((r.s = ENTRY_MODULE));
4371          return i.default || i;
4372        }
4373        var a = "\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)";
4374        function n(e) {
4375          return (e + "").replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
4376        }
4377        function s(e, t, i) {
4378          var s = {};
4379          s[i] = [];
4380          var o = t.toString(),
4381            l = o.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);
4382          if (!l) return s;
4383          for (
4384            var d, u = l[1], c = new RegExp("(\\\\n|\\W)" + n(u) + a, "g");
4385            (d = c.exec(o));
4386
4387          )
4388            "dll-reference" !== d[3] && s[i].push(d[3]);
4389          for (
4390            c = new RegExp(
4391              "\\(" +
4392                n(u) +
4393                '\\("(dll-reference\\s([\\.|\\-|\\+|\\w|/|@]+))"\\)\\)' +
4394                a,
4395              "g"
4396            );
4397            (d = c.exec(o));
4398
4399          )
4400            e[d[2]] || (s[i].push(d[1]), (e[d[2]] = r(d[1]).m)),
4401              (s[d[2]] = s[d[2]] || []),
4402              s[d[2]].push(d[4]);
4403          for (var h, f = Object.keys(s), g = 0; g < f.length; g++)
4404            for (var p = 0; p < s[f[g]].length; p++)
4405              (h = s[f[g]][p]), isNaN(1 * h) || (s[f[g]][p] = 1 * s[f[g]][p]);
4406          return s;
4407        }
4408        function o(e) {
4409          return Object.keys(e).reduce(function (t, r) {
4410            return t || e[r].length > 0;
4411          }, !1);
4412        }
4413        e.exports = function (e, t) {
4414          t = t || {};
4415          var a = { main: r.m },
4416            n = t.all
4417              ? { main: Object.keys(a.main) }
4418              : (function (e, t) {
4419                  for (
4420                    var r = { main: [t] }, i = { main: [] }, a = { main: {} };
4421                    o(r);
4422
4423                  )
4424                    for (var n = Object.keys(r), l = 0; l < n.length; l++) {
4425                      var d = n[l],
4426                        u = r[d].pop();
4427                      if (((a[d] = a[d] || {}), !a[d][u] && e[d][u])) {
4428                        (a[d][u] = !0), (i[d] = i[d] || []), i[d].push(u);
4429                        for (
4430                          var c = s(e, e[d][u], d), h = Object.keys(c), f = 0;
4431                          f < h.length;
4432                          f++
4433                        )
4434                          (r[h[f]] = r[h[f]] || []),
4435                            (r[h[f]] = r[h[f]].concat(c[h[f]]));
4436                      }
4437                    }
4438                  return i;
4439                })(a, e),
4440            l = "";
4441          Object.keys(n)
4442            .filter(function (e) {
4443              return "main" !== e;
4444            })
4445            .forEach(function (e) {
4446              for (var t = 0; n[e][t]; ) t++;
4447              n[e].push(t),
4448                (a[e][t] =
4449                  "(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })"),
4450                (l =
4451                  l +
4452                  "var " +
4453                  e +
4454                  " = (" +
4455                  i.toString().replace("ENTRY_MODULE", JSON.stringify(t)) +
4456                  ")({" +
4457                  n[e]
4458                    .map(function (t) {
4459                      return JSON.stringify(t) + ": " + a[e][t].toString();
4460                    })
4461                    .join(",") +
4462                  "});\n");
4463            }),
4464            (l =
4465              l +
4466              "new ((" +
4467              i.toString().replace("ENTRY_MODULE", JSON.stringify(e)) +
4468              ")({" +
4469              n.main
4470                .map(function (e) {
4471                  return JSON.stringify(e) + ": " + a.main[e].toString();
4472                })
4473                .join(",") +
4474              "}))(self);");
4475          var d = new window.Blob([l], { type: "text/javascript" });
4476          if (t.bare) return d;
4477          var u = (
4478              window.URL ||
4479              window.webkitURL ||
4480              window.mozURL ||
4481              window.msURL
4482            ).createObjectURL(d),
4483            c = new window.Worker(u);
4484          return (c.objectURL = u), c;
4485        };
4486      },
4487      function (e, t, r) {
4488        "use strict";
4489        r.r(t);
4490        var i = r(9),
4491          a = r(1),
4492          n = r(0),
4493          s = r(8);
4494        t.default = function (e) {
4495          var t = new s.EventEmitter();
4496          (t.trigger = function (e) {
4497            for (
4498              var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), a = 1;
4499              a < r;
4500              a++
4501            )
4502              i[a - 1] = arguments[a];
4503            t.emit.apply(t, [e, e].concat(i));
4504          }),
4505            (t.off = function (e) {
4506              for (
4507                var r = arguments.length,
4508                  i = new Array(r > 1 ? r - 1 : 0),
4509                  a = 1;
4510                a < r;
4511                a++
4512              )
4513                i[a - 1] = arguments[a];
4514              t.removeListener.apply(t, [e].concat(i));
4515            });
4516          var r = function (t, r) {
4517            e.postMessage({ event: t, data: r });
4518          };
4519          e.addEventListener("message", function (a) {
4520            var s = a.data;
4521            switch (s.cmd) {
4522              case "init":
4523                var o = JSON.parse(s.config);
4524                (e.demuxer = new i.a(t, s.typeSupported, o, s.vendor)),
4525                  Object(n.a)(o.debug),
4526                  r("init", null);
4527                break;
4528              case "demux":
4529                e.demuxer.push(
4530                  s.data,
4531                  s.decryptdata,
4532                  s.initSegment,
4533                  s.audioCodec,
4534                  s.videoCodec,
4535                  s.timeOffset,
4536                  s.discontinuity,
4537                  s.trackSwitch,
4538                  s.contiguous,
4539                  s.duration,
4540                  s.accurateTimeOffset,
4541                  s.defaultInitPTS
4542                );
4543            }
4544          }),
4545            t.on(a.a.FRAG_DECRYPTED, r),
4546            t.on(a.a.FRAG_PARSING_INIT_SEGMENT, r),
4547            t.on(a.a.FRAG_PARSED, r),
4548            t.on(a.a.ERROR, r),
4549            t.on(a.a.FRAG_PARSING_METADATA, r),
4550            t.on(a.a.FRAG_PARSING_USERDATA, r),
4551            t.on(a.a.INIT_PTS_FOUND, r),
4552            t.on(a.a.FRAG_PARSING_DATA, function (t, r) {
4553              var i = [],
4554                a = { event: t, data: r };
4555              r.data1 &&
4556                ((a.data1 = r.data1.buffer),
4557                i.push(r.data1.buffer),
4558                delete r.data1),
4559                r.data2 &&
4560                  ((a.data2 = r.data2.buffer),
4561                  i.push(r.data2.buffer),
4562                  delete r.data2),
4563                e.postMessage(a, i);
4564            });
4565        };
4566      },
4567      function (e, t, r) {
4568        "use strict";
4569        r.r(t);
4570        var i = {};
4571        r.r(i),
4572          r.d(i, "newCue", function () {
4573            return vt;
4574          });
4575        var a,
4576          n,
4577          s = r(6),
4578          o = r(2),
4579          l = r(3),
4580          d = r(1),
4581          u = r(0),
4582          c = {
4583            hlsEventGeneric: !0,
4584            hlsHandlerDestroying: !0,
4585            hlsHandlerDestroyed: !0,
4586          },
4587          h = (function () {
4588            function e(e) {
4589              (this.hls = void 0),
4590                (this.handledEvents = void 0),
4591                (this.useGenericHandler = void 0),
4592                (this.hls = e),
4593                (this.onEvent = this.onEvent.bind(this));
4594              for (
4595                var t = arguments.length,
4596                  r = new Array(t > 1 ? t - 1 : 0),
4597                  i = 1;
4598                i < t;
4599                i++
4600              )
4601                r[i - 1] = arguments[i];
4602              (this.handledEvents = r),
4603                (this.useGenericHandler = !0),
4604                this.registerListeners();
4605            }
4606            var t = e.prototype;
4607            return (
4608              (t.destroy = function () {
4609                this.onHandlerDestroying(),
4610                  this.unregisterListeners(),
4611                  this.onHandlerDestroyed();
4612              }),
4613              (t.onHandlerDestroying = function () {}),
4614              (t.onHandlerDestroyed = function () {}),
4615              (t.isEventHandler = function () {
4616                return (
4617                  "object" == typeof this.handledEvents &&
4618                  this.handledEvents.length &&
4619                  "function" == typeof this.onEvent
4620                );
4621              }),
4622              (t.registerListeners = function () {
4623                this.isEventHandler() &&
4624                  this.handledEvents.forEach(function (e) {
4625                    if (c[e]) throw new Error("Forbidden event-name: " + e);
4626                    this.hls.on(e, this.onEvent);
4627                  }, this);
4628              }),
4629              (t.unregisterListeners = function () {
4630                this.isEventHandler() &&
4631                  this.handledEvents.forEach(function (e) {
4632                    this.hls.off(e, this.onEvent);
4633                  }, this);
4634              }),
4635              (t.onEvent = function (e, t) {
4636                this.onEventGeneric(e, t);
4637              }),
4638              (t.onEventGeneric = function (e, t) {
4639                try {
4640                  (function (e, t) {
4641                    var r = "on" + e.replace("hls", "");
4642                    if ("function" != typeof this[r])
4643                      throw new Error(
4644                        "Event " +
4645                          e +
4646                          " has no generic handler in this " +
4647                          this.constructor.name +
4648                          " class (tried " +
4649                          r +
4650                          ")"
4651                      );
4652                    return this[r].bind(this, t);
4653                  }
4654                    .call(this, e, t)
4655                    .call());
4656                } catch (t) {
4657                  u.b.error(
4658                    "An internal error happened while handling event " +
4659                      e +
4660                      '. Error message: "' +
4661                      t.message +
4662                      '". Here is a stacktrace:',
4663                    t
4664                  ),
4665                    this.hls.trigger(d.a.ERROR, {
4666                      type: o.b.OTHER_ERROR,
4667                      details: o.a.INTERNAL_EXCEPTION,
4668                      fatal: !1,
4669                      event: e,
4670                      err: t,
4671                    });
4672                }
4673              }),
4674              e
4675            );
4676          })();
4677        !(function (e) {
4678          (e.MANIFEST = "manifest"),
4679            (e.LEVEL = "level"),
4680            (e.AUDIO_TRACK = "audioTrack"),
4681            (e.SUBTITLE_TRACK = "subtitleTrack");
4682        })(a || (a = {})),
4683          (function (e) {
4684            (e.MAIN = "main"), (e.AUDIO = "audio"), (e.SUBTITLE = "subtitle");
4685          })(n || (n = {}));
4686        var f = r(10);
4687        function g(e, t) {
4688          for (var r = 0; r < t.length; r++) {
4689            var i = t[r];
4690            (i.enumerable = i.enumerable || !1),
4691              (i.configurable = !0),
4692              "value" in i && (i.writable = !0),
4693              Object.defineProperty(e, i.key, i);
4694          }
4695        }
4696        var p,
4697          v = (function () {
4698            function e(e, t) {
4699              (this._uri = null),
4700                (this.baseuri = void 0),
4701                (this.reluri = void 0),
4702                (this.method = null),
4703                (this.key = null),
4704                (this.iv = null),
4705                (this.baseuri = e),
4706                (this.reluri = t);
4707            }
4708            var t, r, i;
4709            return (
4710              (t = e),
4711              (r = [
4712                {
4713                  key: "uri",
4714                  get: function () {
4715                    return (
4716                      !this._uri &&
4717                        this.reluri &&
4718                        (this._uri = Object(s.buildAbsoluteURL)(
4719                          this.baseuri,
4720                          this.reluri,
4721                          { alwaysNormalize: !0 }
4722                        )),
4723                      this._uri
4724                    );
4725                  },
4726                },
4727              ]) && g(t.prototype, r),
4728              i && g(t, i),
4729              e
4730            );
4731          })();
4732        function m(e, t) {
4733          for (var r = 0; r < t.length; r++) {
4734            var i = t[r];
4735            (i.enumerable = i.enumerable || !1),
4736              (i.configurable = !0),
4737              "value" in i && (i.writable = !0),
4738              Object.defineProperty(e, i.key, i);
4739          }
4740        }
4741        !(function (e) {
4742          (e.AUDIO = "audio"), (e.VIDEO = "video");
4743        })(p || (p = {}));
4744        var y = (function () {
4745          function e() {
4746            var e;
4747            (this._url = null),
4748              (this._byteRange = null),
4749              (this._decryptdata = null),
4750              (this._elementaryStreams =
4751                (((e = {})[p.AUDIO] = !1), (e[p.VIDEO] = !1), e)),
4752              (this.deltaPTS = 0),
4753              (this.rawProgramDateTime = null),
4754              (this.programDateTime = null),
4755              (this.title = null),
4756              (this.tagList = []),
4757              (this.cc = void 0),
4758              (this.type = void 0),
4759              (this.relurl = void 0),
4760              (this.baseurl = void 0),
4761              (this.duration = void 0),
4762              (this.start = void 0),
4763              (this.sn = 0),
4764              (this.urlId = 0),
4765              (this.level = 0),
4766              (this.levelkey = void 0),
4767              (this.loader = void 0);
4768          }
4769          var t,
4770            r,
4771            i,
4772            a = e.prototype;
4773          return (
4774            (a.setByteRange = function (e, t) {
4775              var r = e.split("@", 2),
4776                i = [];
4777              1 === r.length
4778                ? (i[0] = t ? t.byteRangeEndOffset : 0)
4779                : (i[0] = parseInt(r[1])),
4780                (i[1] = parseInt(r[0]) + i[0]),
4781                (this._byteRange = i);
4782            }),
4783            (a.addElementaryStream = function (e) {
4784              this._elementaryStreams[e] = !0;
4785            }),
4786            (a.hasElementaryStream = function (e) {
4787              return !0 === this._elementaryStreams[e];
4788            }),
4789            (a.createInitializationVector = function (e) {
4790              for (var t = new Uint8Array(16), r = 12; r < 16; r++)
4791                t[r] = (e >> (8 * (15 - r))) & 255;
4792              return t;
4793            }),
4794            (a.setDecryptDataFromLevelKey = function (e, t) {
4795              var r = e;
4796              return (
4797                e &&
4798                  e.method &&
4799                  e.uri &&
4800                  !e.iv &&
4801                  (((r = new v(e.baseuri, e.reluri)).method = e.method),
4802                  (r.iv = this.createInitializationVector(t))),
4803                r
4804              );
4805            }),
4806            (t = e),
4807            (r = [
4808              {
4809                key: "url",
4810                get: function () {
4811                  return (
4812                    !this._url &&
4813                      this.relurl &&
4814                      (this._url = Object(s.buildAbsoluteURL)(
4815                        this.baseurl,
4816                        this.relurl,
4817                        { alwaysNormalize: !0 }
4818                      )),
4819                    this._url
4820                  );
4821                },
4822                set: function (e) {
4823                  this._url = e;
4824                },
4825              },
4826              {
4827                key: "byteRange",
4828                get: function () {
4829                  return this._byteRange ? this._byteRange : [];
4830                },
4831              },
4832              {
4833                key: "byteRangeStartOffset",
4834                get: function () {
4835                  return this.byteRange[0];
4836                },
4837              },
4838              {
4839                key: "byteRangeEndOffset",
4840                get: function () {
4841                  return this.byteRange[1];
4842                },
4843              },
4844              {
4845                key: "decryptdata",
4846                get: function () {
4847                  if (!this.levelkey && !this._decryptdata) return null;
4848                  if (!this._decryptdata && this.levelkey) {
4849                    var e = this.sn;
4850                    "number" != typeof e &&
4851                      (this.levelkey &&
4852                        "AES-128" === this.levelkey.method &&
4853                        !this.levelkey.iv &&
4854                        u.b.warn(
4855                          'missing IV for initialization segment with method="' +
4856                            this.levelkey.method +
4857                            '" - compliance issue'
4858                        ),
4859                      (e = 0)),
4860                      (this._decryptdata = this.setDecryptDataFromLevelKey(
4861                        this.levelkey,
4862                        e
4863                      ));
4864                  }
4865                  return this._decryptdata;
4866                },
4867              },
4868              {
4869                key: "endProgramDateTime",
4870                get: function () {
4871                  if (null === this.programDateTime) return null;
4872                  if (!Object(l.a)(this.programDateTime)) return null;
4873                  var e = Object(l.a)(this.duration) ? this.duration : 0;
4874                  return this.programDateTime + 1e3 * e;
4875                },
4876              },
4877              {
4878                key: "encrypted",
4879                get: function () {
4880                  return !(
4881                    !this.decryptdata ||
4882                    null === this.decryptdata.uri ||
4883                    null !== this.decryptdata.key
4884                  );
4885                },
4886              },
4887            ]) && m(t.prototype, r),
4888            i && m(t, i),
4889            e
4890          );
4891        })();
4892        function b(e, t) {
4893          for (var r = 0; r < t.length; r++) {
4894            var i = t[r];
4895            (i.enumerable = i.enumerable || !1),
4896              (i.configurable = !0),
4897              "value" in i && (i.writable = !0),
4898              Object.defineProperty(e, i.key, i);
4899          }
4900        }
4901        var T = (function () {
4902            function e(e) {
4903              (this.endCC = 0),
4904                (this.endSN = 0),
4905                (this.fragments = []),
4906                (this.initSegment = null),
4907                (this.live = !0),
4908                (this.needSidxRanges = !1),
4909                (this.startCC = 0),
4910                (this.startSN = 0),
4911                (this.startTimeOffset = null),
4912                (this.targetduration = 0),
4913                (this.totalduration = 0),
4914                (this.type = null),
4915                (this.url = e),
4916                (this.version = null);
4917            }
4918            var t, r, i;
4919            return (
4920              (t = e),
4921              (r = [
4922                {
4923                  key: "hasProgramDateTime",
4924                  get: function () {
4925                    return !(
4926                      !this.fragments[0] ||
4927                      !Object(l.a)(this.fragments[0].programDateTime)
4928                    );
4929                  },
4930                },
4931              ]) && b(t.prototype, r),
4932              i && b(t, i),
4933              e
4934            );
4935          })(),
4936          E = /^(\d+)x(\d+)$/,
4937          S = /\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,
4938          _ = (function () {
4939            function e(t) {
4940              for (var r in ("string" == typeof t && (t = e.parseAttrList(t)),
4941              t))
4942                t.hasOwnProperty(r) && (this[r] = t[r]);
4943            }
4944            var t = e.prototype;
4945            return (
4946              (t.decimalInteger = function (e) {
4947                var t = parseInt(this[e], 10);
4948                return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t;
4949              }),
4950              (t.hexadecimalInteger = function (e) {
4951                if (this[e]) {
4952                  var t = (this[e] || "0x").slice(2);
4953                  t = (1 & t.length ? "0" : "") + t;
4954                  for (
4955                    var r = new Uint8Array(t.length / 2), i = 0;
4956                    i < t.length / 2;
4957                    i++
4958                  )
4959                    r[i] = parseInt(t.slice(2 * i, 2 * i + 2), 16);
4960                  return r;
4961                }
4962                return null;
4963              }),
4964              (t.hexadecimalIntegerAsNumber = function (e) {
4965                var t = parseInt(this[e], 16);
4966                return t > Number.MAX_SAFE_INTEGER ? 1 / 0 : t;
4967              }),
4968              (t.decimalFloatingPoint = function (e) {
4969                return parseFloat(this[e]);
4970              }),
4971              (t.enumeratedString = function (e) {
4972                return this[e];
4973              }),
4974              (t.decimalResolution = function (e) {
4975                var t = E.exec(this[e]);
4976                if (null !== t)
4977                  return {
4978                    width: parseInt(t[1], 10),
4979                    height: parseInt(t[2], 10),
4980                  };
4981              }),
4982              (e.parseAttrList = function (e) {
4983                var t,
4984                  r = {};
4985                for (S.lastIndex = 0; null !== (t = S.exec(e)); ) {
4986                  var i = t[2];
4987                  0 === i.indexOf('"') &&
4988                    i.lastIndexOf('"') === i.length - 1 &&
4989                    (i = i.slice(1, -1)),
4990                    (r[t[1]] = i);
4991                }
4992                return r;
4993              }),
4994              e
4995            );
4996          })(),
4997          A = {
4998            audio: {
4999              a3ds: !0,
5000              "ac-3": !0,
5001              "ac-4": !0,
5002              alac: !0,
5003              alaw: !0,
5004              dra1: !0,
5005              "dts+": !0,
5006              "dts-": !0,
5007              dtsc: !0,
5008              dtse: !0,
5009              dtsh: !0,
5010              "ec-3": !0,
5011              enca: !0,
5012              g719: !0,
5013              g726: !0,
5014              m4ae: !0,
5015              mha1: !0,
5016              mha2: !0,
5017              mhm1: !0,
5018              mhm2: !0,
5019              mlpa: !0,
5020              mp4a: !0,
5021              "raw ": !0,
5022              Opus: !0,
5023              samr: !0,
5024              sawb: !0,
5025              sawp: !0,
5026              sevc: !0,
5027              sqcp: !0,
5028              ssmv: !0,
5029              twos: !0,
5030              ulaw: !0,
5031            },
5032            video: {
5033              avc1: !0,
5034              avc2: !0,
5035              avc3: !0,
5036              avc4: !0,
5037              avcp: !0,
5038              drac: !0,
5039              dvav: !0,
5040              dvhe: !0,
5041              encv: !0,
5042              hev1: !0,
5043              hvc1: !0,
5044              mjp2: !0,
5045              mp4v: !0,
5046              mvc1: !0,
5047              mvc2: !0,
5048              mvc3: !0,
5049              mvc4: !0,
5050              resv: !0,
5051              rv60: !0,
5052              s263: !0,
5053              svc1: !0,
5054              svc2: !0,
5055              "vc-1": !0,
5056              vp08: !0,
5057              vp09: !0,
5058            },
5059          };
5060        function R(e, t) {
5061          return MediaSource.isTypeSupported(
5062            (t || "video") + '/mp4;codecs="' + e + '"'
5063          );
5064        }
5065        var w = /#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g,
5066          L = /#EXT-X-MEDIA:(.*)/g,
5067          k = new RegExp(
5068            [
5069              /#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,
5070              /|(?!#)([\S+ ?]+)/.source,
5071              /|#EXT-X-BYTERANGE:*(.+)/.source,
5072              /|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,
5073              /|#.*/.source,
5074            ].join(""),
5075            "g"
5076          ),
5077          D =
5078            /(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)([^:]*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/,
5079          C = /\.(mp4|m4s|m4v|m4a)$/i,
5080          O = (function () {
5081            function e() {}
5082            return (
5083              (e.findGroup = function (e, t) {
5084                for (var r = 0; r < e.length; r++) {
5085                  var i = e[r];
5086                  if (i.id === t) return i;
5087                }
5088              }),
5089              (e.convertAVC1ToAVCOTI = function (e) {
5090                var t,
5091                  r = e.split(".");
5092                return (
5093                  r.length > 2
5094                    ? ((t = r.shift() + "."),
5095                      (t += parseInt(r.shift()).toString(16)),
5096                      (t += ("000" + parseInt(r.shift()).toString(16)).substr(
5097                        -4
5098                      )))
5099                    : (t = e),
5100                  t
5101                );
5102              }),
5103              (e.resolve = function (e, t) {
5104                return s.buildAbsoluteURL(t, e, { alwaysNormalize: !0 });
5105              }),
5106              (e.parseMasterPlaylist = function (t, r) {
5107                var i,
5108                  a = [];
5109                function n(e, t) {
5110                  ["video", "audio"].forEach(function (r) {
5111                    var i = e.filter(function (e) {
5112                      return (function (e, t) {
5113                        var r = A[t];
5114                        return !!r && !0 === r[e.slice(0, 4)];
5115                      })(e, r);
5116                    });
5117                    if (i.length) {
5118                      var a = i.filter(function (e) {
5119                        return (
5120                          0 === e.lastIndexOf("avc1", 0) ||
5121                          0 === e.lastIndexOf("mp4a", 0)
5122                        );
5123                      });
5124                      (t[r + "Codec"] = a.length > 0 ? a[0] : i[0]),
5125                        (e = e.filter(function (e) {
5126                          return -1 === i.indexOf(e);
5127                        }));
5128                    }
5129                  }),
5130                    (t.unknownCodecs = e);
5131                }
5132                for (w.lastIndex = 0; null != (i = w.exec(t)); ) {
5133                  var s = {},
5134                    o = (s.attrs = new _(i[1]));
5135                  s.url = e.resolve(i[2], r);
5136                  var l = o.decimalResolution("RESOLUTION");
5137                  l && ((s.width = l.width), (s.height = l.height)),
5138                    (s.bitrate =
5139                      o.decimalInteger("AVERAGE-BANDWIDTH") ||
5140                      o.decimalInteger("BANDWIDTH")),
5141                    (s.name = o.NAME),
5142                    n([].concat((o.CODECS || "").split(/[ ,]+/)), s),
5143                    s.videoCodec &&
5144                      -1 !== s.videoCodec.indexOf("avc1") &&
5145                      (s.videoCodec = e.convertAVC1ToAVCOTI(s.videoCodec)),
5146                    a.push(s);
5147                }
5148                return a;
5149              }),
5150              (e.parseMasterPlaylistMedia = function (t, r, i, a) {
5151                var n;
5152                void 0 === a && (a = []);
5153                var s = [],
5154                  o = 0;
5155                for (L.lastIndex = 0; null !== (n = L.exec(t)); ) {
5156                  var l = new _(n[1]);
5157                  if (l.TYPE === i) {
5158                    var d = {
5159                      id: o++,
5160                      groupId: l["GROUP-ID"],
5161                      name: l.NAME || l.LANGUAGE,
5162                      type: i,
5163                      default: "YES" === l.DEFAULT,
5164                      autoselect: "YES" === l.AUTOSELECT,
5165                      forced: "YES" === l.FORCED,
5166                      lang: l.LANGUAGE,
5167                    };
5168                    if ((l.URI && (d.url = e.resolve(l.URI, r)), a.length)) {
5169                      var u = e.findGroup(a, d.groupId);
5170                      d.audioCodec = u ? u.codec : a[0].codec;
5171                    }
5172                    s.push(d);
5173                  }
5174                }
5175                return s;
5176              }),
5177              (e.parseLevelPlaylist = function (e, t, r, i, a) {
5178                var n,
5179                  s,
5180                  o,
5181                  d = 0,
5182                  c = 0,
5183                  h = new T(t),
5184                  f = 0,
5185                  g = null,
5186                  p = new y(),
5187                  m = null;
5188                for (k.lastIndex = 0; null !== (n = k.exec(e)); ) {
5189                  var b = n[1];
5190                  if (b) {
5191                    p.duration = parseFloat(b);
5192                    var E = (" " + n[2]).slice(1);
5193                    (p.title = E || null),
5194                      p.tagList.push(E ? ["INF", b, E] : ["INF", b]);
5195                  } else if (n[3]) {
5196                    if (Object(l.a)(p.duration)) {
5197                      var S = d++;
5198                      (p.type = i),
5199                        (p.start = c),
5200                        o && (p.levelkey = o),
5201                        (p.sn = S),
5202                        (p.level = r),
5203                        (p.cc = f),
5204                        (p.urlId = a),
5205                        (p.baseurl = t),
5206                        (p.relurl = (" " + n[3]).slice(1)),
5207                        I(p, g),
5208                        h.fragments.push(p),
5209                        (g = p),
5210                        (c += p.duration),
5211                        (p = new y());
5212                    }
5213                  } else if (n[4]) {
5214                    var A = (" " + n[4]).slice(1);
5215                    g ? p.setByteRange(A, g) : p.setByteRange(A);
5216                  } else if (n[5])
5217                    (p.rawProgramDateTime = (" " + n[5]).slice(1)),
5218                      p.tagList.push([
5219                        "PROGRAM-DATE-TIME",
5220                        p.rawProgramDateTime,
5221                      ]),
5222                      null === m && (m = h.fragments.length);
5223                  else {
5224                    if (!(n = n[0].match(D))) {
5225                      u.b.warn(
5226                        "No matches on slow regex match for level playlist!"
5227                      );
5228                      continue;
5229                    }
5230                    for (s = 1; s < n.length && void 0 === n[s]; s++);
5231                    var R = (" " + n[s + 1]).slice(1),
5232                      w = (" " + n[s + 2]).slice(1);
5233                    switch (n[s]) {
5234                      case "#":
5235                        p.tagList.push(w ? [R, w] : [R]);
5236                        break;
5237                      case "PLAYLIST-TYPE":
5238                        h.type = R.toUpperCase();
5239                        break;
5240                      case "MEDIA-SEQUENCE":
5241                        d = h.startSN = parseInt(R);
5242                        break;
5243                      case "TARGETDURATION":
5244                        h.targetduration = parseFloat(R);
5245                        break;
5246                      case "VERSION":
5247                        h.version = parseInt(R);
5248                        break;
5249                      case "EXTM3U":
5250                        break;
5251                      case "ENDLIST":
5252                        h.live = !1;
5253                        break;
5254                      case "DIS":
5255                        f++, p.tagList.push(["DIS"]);
5256                        break;
5257                      case "DISCONTINUITY-SEQ":
5258                        f = parseInt(R);
5259                        break;
5260                      case "KEY":
5261                        var L = new _(R),
5262                          O = L.enumeratedString("METHOD"),
5263                          P = L.URI,
5264                          x = L.hexadecimalInteger("IV");
5265                        O &&
5266                          ((o = new v(t, P)),
5267                          P &&
5268                            [
5269                              "AES-128",
5270                              "SAMPLE-AES",
5271                              "SAMPLE-AES-CENC",
5272                            ].indexOf(O) >= 0 &&
5273                            ((o.method = O), (o.key = null), (o.iv = x)));
5274                        break;
5275                      case "START":
5276                        var M = new _(R).decimalFloatingPoint("TIME-OFFSET");
5277                        Object(l.a)(M) && (h.startTimeOffset = M);
5278                        break;
5279                      case "MAP":
5280                        var F = new _(R);
5281                        (p.relurl = F.URI),
5282                          F.BYTERANGE && p.setByteRange(F.BYTERANGE),
5283                          (p.baseurl = t),
5284                          (p.level = r),
5285                          (p.type = i),
5286                          (p.sn = "initSegment"),
5287                          (h.initSegment = p),
5288                          ((p = new y()).rawProgramDateTime =
5289                            h.initSegment.rawProgramDateTime);
5290                        break;
5291                      default:
5292                        u.b.warn("line parsed but not handled: " + n);
5293                    }
5294                  }
5295                }
5296                return (
5297                  (p = g) &&
5298                    !p.relurl &&
5299                    (h.fragments.pop(), (c -= p.duration)),
5300                  (h.totalduration = c),
5301                  (h.averagetargetduration = c / h.fragments.length),
5302                  (h.endSN = d - 1),
5303                  (h.startCC = h.fragments[0] ? h.fragments[0].cc : 0),
5304                  (h.endCC = f),
5305                  !h.initSegment &&
5306                    h.fragments.length &&
5307                    h.fragments.every(function (e) {
5308                      return C.test(e.relurl);
5309                    }) &&
5310                    (u.b.warn(
5311                      "MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"
5312                    ),
5313                    ((p = new y()).relurl = h.fragments[0].relurl),
5314                    (p.baseurl = t),
5315                    (p.level = r),
5316                    (p.type = i),
5317                    (p.sn = "initSegment"),
5318                    (h.initSegment = p),
5319                    (h.needSidxRanges = !0)),
5320                  m &&
5321                    (function (e, t) {
5322                      for (var r = e[t], i = t - 1; i >= 0; i--) {
5323                        var a = e[i];
5324                        (a.programDateTime =
5325                          r.programDateTime - 1e3 * a.duration),
5326                          (r = a);
5327                      }
5328                    })(h.fragments, m),
5329                  h
5330                );
5331              }),
5332              e
5333            );
5334          })();
5335        function I(e, t) {
5336          e.rawProgramDateTime
5337            ? (e.programDateTime = Date.parse(e.rawProgramDateTime))
5338            : t &&
5339              t.programDateTime &&
5340              (e.programDateTime = t.endProgramDateTime),
5341            Object(l.a)(e.programDateTime) ||
5342              ((e.programDateTime = null), (e.rawProgramDateTime = null));
5343        }
5344        var P = window.performance,
5345          x = (function (e) {
5346            var t, r;
5347            function i(t) {
5348              var r;
5349              return (
5350                ((r =
5351                  e.call(
5352                    this,
5353                    t,
5354                    d.a.MANIFEST_LOADING,
5355                    d.a.LEVEL_LOADING,
5356                    d.a.AUDIO_TRACK_LOADING,
5357                    d.a.SUBTITLE_TRACK_LOADING
5358                  ) || this).loaders = {}),
5359                r
5360              );
5361            }
5362            (r = e),
5363              ((t = i).prototype = Object.create(r.prototype)),
5364              (t.prototype.constructor = t),
5365              (t.__proto__ = r),
5366              (i.canHaveQualityLevels = function (e) {
5367                return e !== a.AUDIO_TRACK && e !== a.SUBTITLE_TRACK;
5368              }),
5369              (i.mapContextToLevelType = function (e) {
5370                switch (e.type) {
5371                  case a.AUDIO_TRACK:
5372                    return n.AUDIO;
5373                  case a.SUBTITLE_TRACK:
5374                    return n.SUBTITLE;
5375                  default:
5376                    return n.MAIN;
5377                }
5378              }),
5379              (i.getResponseUrl = function (e, t) {
5380                var r = e.url;
5381                return (
5382                  (void 0 !== r && 0 !== r.indexOf("data:")) || (r = t.url), r
5383                );
5384              });
5385            var s = i.prototype;
5386            return (
5387              (s.createInternalLoader = function (e) {
5388                var t = this.hls.config,
5389                  r = t.pLoader,
5390                  i = t.loader,
5391                  a = new (r || i)(t);
5392                return (e.loader = a), (this.loaders[e.type] = a), a;
5393              }),
5394              (s.getInternalLoader = function (e) {
5395                return this.loaders[e.type];
5396              }),
5397              (s.resetInternalLoader = function (e) {
5398                this.loaders[e] && delete this.loaders[e];
5399              }),
5400              (s.destroyInternalLoaders = function () {
5401                for (var e in this.loaders) {
5402                  var t = this.loaders[e];
5403                  t && t.destroy(), this.resetInternalLoader(e);
5404                }
5405              }),
5406              (s.destroy = function () {
5407                this.destroyInternalLoaders(), e.prototype.destroy.call(this);
5408              }),
5409              (s.onManifestLoading = function (e) {
5410                this.load({
5411                  url: e.url,
5412                  type: a.MANIFEST,
5413                  level: 0,
5414                  id: null,
5415                  responseType: "text",
5416                });
5417              }),
5418              (s.onLevelLoading = function (e) {
5419                this.load({
5420                  url: e.url,
5421                  type: a.LEVEL,
5422                  level: e.level,
5423                  id: e.id,
5424                  responseType: "text",
5425                });
5426              }),
5427              (s.onAudioTrackLoading = function (e) {
5428                this.load({
5429                  url: e.url,
5430                  type: a.AUDIO_TRACK,
5431                  level: null,
5432                  id: e.id,
5433                  responseType: "text",
5434                });
5435              }),
5436              (s.onSubtitleTrackLoading = function (e) {
5437                this.load({
5438                  url: e.url,
5439                  type: a.SUBTITLE_TRACK,
5440                  level: null,
5441                  id: e.id,
5442                  responseType: "text",
5443                });
5444              }),
5445              (s.load = function (e) {
5446                var t = this.hls.config;
5447                u.b.debug(
5448                  "Loading playlist of type " +
5449                    e.type +
5450                    ", level: " +
5451                    e.level +
5452                    ", id: " +
5453                    e.id
5454                );
5455                var r,
5456                  i,
5457                  n,
5458                  s,
5459                  o = this.getInternalLoader(e);
5460                if (o) {
5461                  var l = o.context;
5462                  if (l && l.url === e.url)
5463                    return u.b.trace("playlist request ongoing"), !1;
5464                  u.b.warn("aborting previous loader for type: " + e.type),
5465                    o.abort();
5466                }
5467                switch (e.type) {
5468                  case a.MANIFEST:
5469                    (r = t.manifestLoadingMaxRetry),
5470                      (i = t.manifestLoadingTimeOut),
5471                      (n = t.manifestLoadingRetryDelay),
5472                      (s = t.manifestLoadingMaxRetryTimeout);
5473                    break;
5474                  case a.LEVEL:
5475                    (r = 0), (s = 0), (n = 0), (i = t.levelLoadingTimeOut);
5476                    break;
5477                  default:
5478                    (r = t.levelLoadingMaxRetry),
5479                      (i = t.levelLoadingTimeOut),
5480                      (n = t.levelLoadingRetryDelay),
5481                      (s = t.levelLoadingMaxRetryTimeout);
5482                }
5483                o = this.createInternalLoader(e);
5484                var d = {
5485                    timeout: i,
5486                    maxRetry: r,
5487                    retryDelay: n,
5488                    maxRetryDelay: s,
5489                  },
5490                  c = {
5491                    onSuccess: this.loadsuccess.bind(this),
5492                    onError: this.loaderror.bind(this),
5493                    onTimeout: this.loadtimeout.bind(this),
5494                  };
5495                return (
5496                  u.b.debug(
5497                    "Calling internal loader delegate for URL: " + e.url
5498                  ),
5499                  o.load(e, d, c),
5500                  !0
5501                );
5502              }),
5503              (s.loadsuccess = function (e, t, r, i) {
5504                if ((void 0 === i && (i = null), r.isSidxRequest))
5505                  return (
5506                    this._handleSidxRequest(e, r),
5507                    void this._handlePlaylistLoaded(e, t, r, i)
5508                  );
5509                if (
5510                  (this.resetInternalLoader(r.type), "string" != typeof e.data)
5511                )
5512                  throw new Error(
5513                    'expected responseType of "text" for PlaylistLoader'
5514                  );
5515                var a = e.data;
5516                (t.tload = P.now()),
5517                  0 === a.indexOf("#EXTM3U")
5518                    ? a.indexOf("#EXTINF:") > 0 ||
5519                      a.indexOf("#EXT-X-TARGETDURATION:") > 0
5520                      ? this._handleTrackOrLevelPlaylist(e, t, r, i)
5521                      : this._handleMasterPlaylist(e, t, r, i)
5522                    : this._handleManifestParsingError(
5523                        e,
5524                        r,
5525                        "no EXTM3U delimiter",
5526                        i
5527                      );
5528              }),
5529              (s.loaderror = function (e, t, r) {
5530                void 0 === r && (r = null),
5531                  this._handleNetworkError(t, r, !1, e);
5532              }),
5533              (s.loadtimeout = function (e, t, r) {
5534                void 0 === r && (r = null), this._handleNetworkError(t, r, !0);
5535              }),
5536              (s._handleMasterPlaylist = function (e, t, r, a) {
5537                var n = this.hls,
5538                  s = e.data,
5539                  o = i.getResponseUrl(e, r),
5540                  l = O.parseMasterPlaylist(s, o);
5541                if (l.length) {
5542                  var c = l.map(function (e) {
5543                      return { id: e.attrs.AUDIO, codec: e.audioCodec };
5544                    }),
5545                    h = O.parseMasterPlaylistMedia(s, o, "AUDIO", c),
5546                    f = O.parseMasterPlaylistMedia(s, o, "SUBTITLES");
5547                  if (h.length) {
5548                    var g = !1;
5549                    h.forEach(function (e) {
5550                      e.url || (g = !0);
5551                    }),
5552                      !1 === g &&
5553                        l[0].audioCodec &&
5554                        !l[0].attrs.AUDIO &&
5555                        (u.b.log(
5556                          "audio codec signaled in quality level, but no embedded audio track signaled, create one"
5557                        ),
5558                        h.unshift({
5559                          type: "main",
5560                          name: "main",
5561                          default: !1,
5562                          autoselect: !1,
5563                          forced: !1,
5564                          id: -1,
5565                        }));
5566                  }
5567                  n.trigger(d.a.MANIFEST_LOADED, {
5568                    levels: l,
5569                    audioTracks: h,
5570                    subtitles: f,
5571                    url: o,
5572                    stats: t,
5573                    networkDetails: a,
5574                  });
5575                } else
5576                  this._handleManifestParsingError(
5577                    e,
5578                    r,
5579                    "no level found in manifest",
5580                    a
5581                  );
5582              }),
5583              (s._handleTrackOrLevelPlaylist = function (e, t, r, n) {
5584                var s = this.hls,
5585                  o = r.id,
5586                  u = r.level,
5587                  c = r.type,
5588                  h = i.getResponseUrl(e, r),
5589                  f = Object(l.a)(o) ? o : 0,
5590                  g = Object(l.a)(u) ? u : f,
5591                  p = i.mapContextToLevelType(r),
5592                  v = O.parseLevelPlaylist(e.data, h, g, p, f);
5593                if (((v.tload = t.tload), c === a.MANIFEST)) {
5594                  var m = { url: h, details: v };
5595                  s.trigger(d.a.MANIFEST_LOADED, {
5596                    levels: [m],
5597                    audioTracks: [],
5598                    url: h,
5599                    stats: t,
5600                    networkDetails: n,
5601                  });
5602                }
5603                if (((t.tparsed = P.now()), v.needSidxRanges)) {
5604                  var y = v.initSegment.url;
5605                  this.load({
5606                    url: y,
5607                    isSidxRequest: !0,
5608                    type: c,
5609                    level: u,
5610                    levelDetails: v,
5611                    id: o,
5612                    rangeStart: 0,
5613                    rangeEnd: 2048,
5614                    responseType: "arraybuffer",
5615                  });
5616                } else
5617                  (r.levelDetails = v), this._handlePlaylistLoaded(e, t, r, n);
5618              }),
5619              (s._handleSidxRequest = function (e, t) {
5620                if ("string" == typeof e.data)
5621                  throw new Error(
5622                    "sidx request must be made with responseType of array buffer"
5623                  );
5624                var r = f.a.parseSegmentIndex(new Uint8Array(e.data));
5625                if (r) {
5626                  var i = r.references,
5627                    a = t.levelDetails;
5628                  i.forEach(function (e, t) {
5629                    var r = e.info;
5630                    if (a) {
5631                      var i = a.fragments[t];
5632                      0 === i.byteRange.length &&
5633                        i.setByteRange(
5634                          String(1 + r.end - r.start) + "@" + String(r.start)
5635                        );
5636                    }
5637                  }),
5638                    a &&
5639                      a.initSegment.setByteRange(
5640                        String(r.moovEndOffset) + "@0"
5641                      );
5642                }
5643              }),
5644              (s._handleManifestParsingError = function (e, t, r, i) {
5645                this.hls.trigger(d.a.ERROR, {
5646                  type: o.b.NETWORK_ERROR,
5647                  details: o.a.MANIFEST_PARSING_ERROR,
5648                  fatal: !0,
5649                  url: e.url,
5650                  reason: r,
5651                  networkDetails: i,
5652                });
5653              }),
5654              (s._handleNetworkError = function (e, t, r, i) {
5655                var n, s;
5656                void 0 === r && (r = !1),
5657                  void 0 === i && (i = null),
5658                  u.b.info(
5659                    "A network error occured while loading a " +
5660                      e.type +
5661                      "-type playlist"
5662                  );
5663                var l = this.getInternalLoader(e);
5664                switch (e.type) {
5665                  case a.MANIFEST:
5666                    (n = r
5667                      ? o.a.MANIFEST_LOAD_TIMEOUT
5668                      : o.a.MANIFEST_LOAD_ERROR),
5669                      (s = !0);
5670                    break;
5671                  case a.LEVEL:
5672                    (n = r ? o.a.LEVEL_LOAD_TIMEOUT : o.a.LEVEL_LOAD_ERROR),
5673                      (s = !1);
5674                    break;
5675                  case a.AUDIO_TRACK:
5676                    (n = r
5677                      ? o.a.AUDIO_TRACK_LOAD_TIMEOUT
5678                      : o.a.AUDIO_TRACK_LOAD_ERROR),
5679                      (s = !1);
5680                    break;
5681                  default:
5682                    s = !1;
5683                }
5684                l && (l.abort(), this.resetInternalLoader(e.type));
5685                var c = {
5686                  type: o.b.NETWORK_ERROR,
5687                  details: n,
5688                  fatal: s,
5689                  url: e.url,
5690                  loader: l,
5691                  context: e,
5692                  networkDetails: t,
5693                };
5694                i && (c.response = i), this.hls.trigger(d.a.ERROR, c);
5695              }),
5696              (s._handlePlaylistLoaded = function (e, t, r, n) {
5697                var s = r.type,
5698                  o = r.level,
5699                  l = r.id,
5700                  u = r.levelDetails;
5701                if (u && u.targetduration)
5702                  if (i.canHaveQualityLevels(r.type))
5703                    this.hls.trigger(d.a.LEVEL_LOADED, {
5704                      details: u,
5705                      level: o || 0,
5706                      id: l || 0,
5707                      stats: t,
5708                      networkDetails: n,
5709                    });
5710                  else
5711                    switch (s) {
5712                      case a.AUDIO_TRACK:
5713                        this.hls.trigger(d.a.AUDIO_TRACK_LOADED, {
5714                          details: u,
5715                          id: l,
5716                          stats: t,
5717                          networkDetails: n,
5718                        });
5719                        break;
5720                      case a.SUBTITLE_TRACK:
5721                        this.hls.trigger(d.a.SUBTITLE_TRACK_LOADED, {
5722                          details: u,
5723                          id: l,
5724                          stats: t,
5725                          networkDetails: n,
5726                        });
5727                    }
5728                else
5729                  this._handleManifestParsingError(
5730                    e,
5731                    r,
5732                    "invalid target duration",
5733                    n
5734                  );
5735              }),
5736              i
5737            );
5738          })(h);
5739        var M = (function (e) {
5740          var t, r;
5741          function i(t) {
5742            var r;
5743            return (
5744              ((r = e.call(this, t, d.a.FRAG_LOADING) || this).loaders = {}), r
5745            );
5746          }
5747          (r = e),
5748            ((t = i).prototype = Object.create(r.prototype)),
5749            (t.prototype.constructor = t),
5750            (t.__proto__ = r);
5751          var a = i.prototype;
5752          return (
5753            (a.destroy = function () {
5754              var t = this.loaders;
5755              for (var r in t) {
5756                var i = t[r];
5757                i && i.destroy();
5758              }
5759              (this.loaders = {}), e.prototype.destroy.call(this);
5760            }),
5761            (a.onFragLoading = function (e) {
5762              var t = e.frag,
5763                r = t.type,
5764                i = this.loaders,
5765                a = this.hls.config,
5766                n = a.fLoader,
5767                s = a.loader;
5768              t.loaded = 0;
5769              var o,
5770                d,
5771                c,
5772                h = i[r];
5773              h &&
5774                (u.b.warn("abort previous fragment loader for type: " + r),
5775                h.abort()),
5776                (h = i[r] = t.loader = a.fLoader ? new n(a) : new s(a)),
5777                (o = {
5778                  url: t.url,
5779                  frag: t,
5780                  responseType: "arraybuffer",
5781                  progressData: !1,
5782                });
5783              var f = t.byteRangeStartOffset,
5784                g = t.byteRangeEndOffset;
5785              Object(l.a)(f) &&
5786                Object(l.a)(g) &&
5787                ((o.rangeStart = f), (o.rangeEnd = g)),
5788                (d = {
5789                  timeout: a.fragLoadingTimeOut,
5790                  maxRetry: 0,
5791                  retryDelay: 0,
5792                  maxRetryDelay: a.fragLoadingMaxRetryTimeout,
5793                }),
5794                (c = {
5795                  onSuccess: this.loadsuccess.bind(this),
5796                  onError: this.loaderror.bind(this),
5797                  onTimeout: this.loadtimeout.bind(this),
5798                  onProgress: this.loadprogress.bind(this),
5799                }),
5800                h.load(o, d, c);
5801            }),
5802            (a.loadsuccess = function (e, t, r, i) {
5803              void 0 === i && (i = null);
5804              var a = e.data,
5805                n = r.frag;
5806              (n.loader = void 0),
5807                (this.loaders[n.type] = void 0),
5808                this.hls.trigger(d.a.FRAG_LOADED, {
5809                  payload: a,
5810                  frag: n,
5811                  stats: t,
5812                  networkDetails: i,
5813                });
5814            }),
5815            (a.loaderror = function (e, t, r) {
5816              void 0 === r && (r = null);
5817              var i = t.frag,
5818                a = i.loader;
5819              a && a.abort(),
5820                (this.loaders[i.type] = void 0),
5821                this.hls.trigger(d.a.ERROR, {
5822                  type: o.b.NETWORK_ERROR,
5823                  details: o.a.FRAG_LOAD_ERROR,
5824                  fatal: !1,
5825                  frag: t.frag,
5826                  response: e,
5827                  networkDetails: r,
5828                });
5829            }),
5830            (a.loadtimeout = function (e, t, r) {
5831              void 0 === r && (r = null);
5832              var i = t.frag,
5833                a = i.loader;
5834              a && a.abort(),
5835                (this.loaders[i.type] = void 0),
5836                this.hls.trigger(d.a.ERROR, {
5837                  type: o.b.NETWORK_ERROR,
5838                  details: o.a.FRAG_LOAD_TIMEOUT,
5839                  fatal: !1,
5840                  frag: t.frag,
5841                  networkDetails: r,
5842                });
5843            }),
5844            (a.loadprogress = function (e, t, r, i) {
5845              void 0 === i && (i = null);
5846              var a = t.frag;
5847              (a.loaded = e.loaded),
5848                this.hls.trigger(d.a.FRAG_LOAD_PROGRESS, {
5849                  frag: a,
5850                  stats: e,
5851                  networkDetails: i,
5852                });
5853            }),
5854            i
5855          );
5856        })(h);
5857        var F = (function (e) {
5858          var t, r;
5859          function i(t) {
5860            var r;
5861            return (
5862              ((r = e.call(this, t, d.a.KEY_LOADING) || this).loaders = {}),
5863              (r.decryptkey = null),
5864              (r.decrypturl = null),
5865              r
5866            );
5867          }
5868          (r = e),
5869            ((t = i).prototype = Object.create(r.prototype)),
5870            (t.prototype.constructor = t),
5871            (t.__proto__ = r);
5872          var a = i.prototype;
5873          return (
5874            (a.destroy = function () {
5875              for (var t in this.loaders) {
5876                var r = this.loaders[t];
5877                r && r.destroy();
5878              }
5879              (this.loaders = {}), e.prototype.destroy.call(this);
5880            }),
5881            (a.onKeyLoading = function (e) {
5882              var t = e.frag,
5883                r = t.type,
5884                i = this.loaders[r];
5885              if (t.decryptdata) {
5886                var a = t.decryptdata.uri;
5887                if (a !== this.decrypturl || null === this.decryptkey) {
5888                  var n = this.hls.config;
5889                  if (
5890                    (i &&
5891                      (u.b.warn("abort previous key loader for type:" + r),
5892                      i.abort()),
5893                    !a)
5894                  )
5895                    return void u.b.warn("key uri is falsy");
5896                  (t.loader = this.loaders[r] = new n.loader(n)),
5897                    (this.decrypturl = a),
5898                    (this.decryptkey = null);
5899                  var s = { url: a, frag: t, responseType: "arraybuffer" },
5900                    o = {
5901                      timeout: n.fragLoadingTimeOut,
5902                      maxRetry: 0,
5903                      retryDelay: n.fragLoadingRetryDelay,
5904                      maxRetryDelay: n.fragLoadingMaxRetryTimeout,
5905                    },
5906                    l = {
5907                      onSuccess: this.loadsuccess.bind(this),
5908                      onError: this.loaderror.bind(this),
5909                      onTimeout: this.loadtimeout.bind(this),
5910                    };
5911                  t.loader.load(s, o, l);
5912                } else
5913                  this.decryptkey &&
5914                    ((t.decryptdata.key = this.decryptkey),
5915                    this.hls.trigger(d.a.KEY_LOADED, { frag: t }));
5916              } else
5917                u.b.warn("Missing decryption data on fragment in onKeyLoading");
5918            }),
5919            (a.loadsuccess = function (e, t, r) {
5920              var i = r.frag;
5921              i.decryptdata
5922                ? ((this.decryptkey = i.decryptdata.key =
5923                    new Uint8Array(e.data)),
5924                  (i.loader = void 0),
5925                  delete this.loaders[i.type],
5926                  this.hls.trigger(d.a.KEY_LOADED, { frag: i }))
5927                : u.b.error("after key load, decryptdata unset");
5928            }),
5929            (a.loaderror = function (e, t) {
5930              var r = t.frag,
5931                i = r.loader;
5932              i && i.abort(),
5933                delete this.loaders[r.type],
5934                this.hls.trigger(d.a.ERROR, {
5935                  type: o.b.NETWORK_ERROR,
5936                  details: o.a.KEY_LOAD_ERROR,
5937                  fatal: !1,
5938                  frag: r,
5939                  response: e,
5940                });
5941            }),
5942            (a.loadtimeout = function (e, t) {
5943              var r = t.frag,
5944                i = r.loader;
5945              i && i.abort(),
5946                delete this.loaders[r.type],
5947                this.hls.trigger(d.a.ERROR, {
5948                  type: o.b.NETWORK_ERROR,
5949                  details: o.a.KEY_LOAD_TIMEOUT,
5950                  fatal: !1,
5951                  frag: r,
5952                });
5953            }),
5954            i
5955          );
5956        })(h);
5957        var U = "NOT_LOADED",
5958          N = "APPENDING",
5959          B = "PARTIAL",
5960          G = "OK",
5961          K = (function (e) {
5962            var t, r;
5963            function i(t) {
5964              var r;
5965              return (
5966                ((r =
5967                  e.call(
5968                    this,
5969                    t,
5970                    d.a.BUFFER_APPENDED,
5971                    d.a.FRAG_BUFFERED,
5972                    d.a.FRAG_LOADED
5973                  ) || this).bufferPadding = 0.2),
5974                (r.fragments = Object.create(null)),
5975                (r.timeRanges = Object.create(null)),
5976                (r.config = t.config),
5977                r
5978              );
5979            }
5980            (r = e),
5981              ((t = i).prototype = Object.create(r.prototype)),
5982              (t.prototype.constructor = t),
5983              (t.__proto__ = r);
5984            var a = i.prototype;
5985            return (
5986              (a.destroy = function () {
5987                (this.fragments = Object.create(null)),
5988                  (this.timeRanges = Object.create(null)),
5989                  (this.config = null),
5990                  h.prototype.destroy.call(this),
5991                  e.prototype.destroy.call(this);
5992              }),
5993              (a.getBufferedFrag = function (e, t) {
5994                var r = this.fragments,
5995                  i = Object.keys(r).filter(function (i) {
5996                    var a = r[i];
5997                    if (a.body.type !== t) return !1;
5998                    if (!a.buffered) return !1;
5999                    var n = a.body;
6000                    return n.startPTS <= e && e <= n.endPTS;
6001                  });
6002                if (0 === i.length) return null;
6003                var a = i.pop();
6004                return r[a].body;
6005              }),
6006              (a.detectEvictedFragments = function (e, t) {
6007                var r,
6008                  i,
6009                  a = this;
6010                Object.keys(this.fragments).forEach(function (n) {
6011                  var s = a.fragments[n];
6012                  if (!0 === s.buffered) {
6013                    var o = s.range[e];
6014                    if (o) {
6015                      r = o.time;
6016                      for (var l = 0; l < r.length; l++)
6017                        if (
6018                          ((i = r[l]),
6019                          !1 === a.isTimeBuffered(i.startPTS, i.endPTS, t))
6020                        ) {
6021                          a.removeFragment(s.body);
6022                          break;
6023                        }
6024                    }
6025                  }
6026                });
6027              }),
6028              (a.detectPartialFragments = function (e) {
6029                var t = this,
6030                  r = this.getFragmentKey(e),
6031                  i = this.fragments[r];
6032                i &&
6033                  ((i.buffered = !0),
6034                  Object.keys(this.timeRanges).forEach(function (r) {
6035                    if (e.hasElementaryStream(r)) {
6036                      var a = t.timeRanges[r];
6037                      i.range[r] = t.getBufferedTimes(e.startPTS, e.endPTS, a);
6038                    }
6039                  }));
6040              }),
6041              (a.getBufferedTimes = function (e, t, r) {
6042                for (var i, a, n = [], s = !1, o = 0; o < r.length; o++) {
6043                  if (
6044                    ((i = r.start(o) - this.bufferPadding),
6045                    (a = r.end(o) + this.bufferPadding),
6046                    e >= i && t <= a)
6047                  ) {
6048                    n.push({
6049                      startPTS: Math.max(e, r.start(o)),
6050                      endPTS: Math.min(t, r.end(o)),
6051                    });
6052                    break;
6053                  }
6054                  if (e < a && t > i)
6055                    n.push({
6056                      startPTS: Math.max(e, r.start(o)),
6057                      endPTS: Math.min(t, r.end(o)),
6058                    }),
6059                      (s = !0);
6060                  else if (t <= i) break;
6061                }
6062                return { time: n, partial: s };
6063              }),
6064              (a.getFragmentKey = function (e) {
6065                return e.type + "_" + e.level + "_" + e.urlId + "_" + e.sn;
6066              }),
6067              (a.getPartialFragment = function (e) {
6068                var t,
6069                  r,
6070                  i,
6071                  a = this,
6072                  n = null,
6073                  s = 0;
6074                return (
6075                  Object.keys(this.fragments).forEach(function (o) {
6076                    var l = a.fragments[o];
6077                    a.isPartial(l) &&
6078                      ((r = l.body.startPTS - a.bufferPadding),
6079                      (i = l.body.endPTS + a.bufferPadding),
6080                      e >= r &&
6081                        e <= i &&
6082                        ((t = Math.min(e - r, i - e)),
6083                        s <= t && ((n = l.body), (s = t))));
6084                  }),
6085                  n
6086                );
6087              }),
6088              (a.getState = function (e) {
6089                var t = this.getFragmentKey(e),
6090                  r = this.fragments[t],
6091                  i = U;
6092                return (
6093                  void 0 !== r &&
6094                    (i = r.buffered ? (!0 === this.isPartial(r) ? B : G) : N),
6095                  i
6096                );
6097              }),
6098              (a.isPartial = function (e) {
6099                return (
6100                  !0 === e.buffered &&
6101                  ((void 0 !== e.range.video && !0 === e.range.video.partial) ||
6102                    (void 0 !== e.range.audio && !0 === e.range.audio.partial))
6103                );
6104              }),
6105              (a.isTimeBuffered = function (e, t, r) {
6106                for (var i, a, n = 0; n < r.length; n++) {
6107                  if (
6108                    ((i = r.start(n) - this.bufferPadding),
6109                    (a = r.end(n) + this.bufferPadding),
6110                    e >= i && t <= a)
6111                  )
6112                    return !0;
6113                  if (t <= i) return !1;
6114                }
6115                return !1;
6116              }),
6117              (a.onFragLoaded = function (e) {
6118                var t = e.frag;
6119                Object(l.a)(t.sn) &&
6120                  !t.bitrateTest &&
6121                  (this.fragments[this.getFragmentKey(t)] = {
6122                    body: t,
6123                    range: Object.create(null),
6124                    buffered: !1,
6125                  });
6126              }),
6127              (a.onBufferAppended = function (e) {
6128                var t = this;
6129                (this.timeRanges = e.timeRanges),
6130                  Object.keys(this.timeRanges).forEach(function (e) {
6131                    var r = t.timeRanges[e];
6132                    t.detectEvictedFragments(e, r);
6133                  });
6134              }),
6135              (a.onFragBuffered = function (e) {
6136                this.detectPartialFragments(e.frag);
6137              }),
6138              (a.hasFragment = function (e) {
6139                var t = this.getFragmentKey(e);
6140                return void 0 !== this.fragments[t];
6141              }),
6142              (a.removeFragment = function (e) {
6143                var t = this.getFragmentKey(e);
6144                delete this.fragments[t];
6145              }),
6146              (a.removeAllFragments = function () {
6147                this.fragments = Object.create(null);
6148              }),
6149              i
6150            );
6151          })(h),
6152          j = {
6153            search: function (e, t) {
6154              for (var r = 0, i = e.length - 1, a = null, n = null; r <= i; ) {
6155                var s = t((n = e[(a = ((r + i) / 2) | 0)]));
6156                if (s > 0) r = a + 1;
6157                else {
6158                  if (!(s < 0)) return n;
6159                  i = a - 1;
6160                }
6161              }
6162              return null;
6163            },
6164          },
6165          H = (function () {
6166            function e() {}
6167            return (
6168              (e.isBuffered = function (e, t) {
6169                try {
6170                  if (e)
6171                    for (var r = e.buffered, i = 0; i < r.length; i++)
6172                      if (t >= r.start(i) && t <= r.end(i)) return !0;
6173                } catch (e) {}
6174                return !1;
6175              }),
6176              (e.bufferInfo = function (e, t, r) {
6177                try {
6178                  if (e) {
6179                    var i,
6180                      a = e.buffered,
6181                      n = [];
6182                    for (i = 0; i < a.length; i++)
6183                      n.push({ start: a.start(i), end: a.end(i) });
6184                    return this.bufferedInfo(n, t, r);
6185                  }
6186                } catch (e) {}
6187                return { len: 0, start: t, end: t, nextStart: void 0 };
6188              }),
6189              (e.bufferedInfo = function (e, t, r) {
6190                e.sort(function (e, t) {
6191                  var r = e.start - t.start;
6192                  return r || t.end - e.end;
6193                });
6194                var i = [];
6195                if (r)
6196                  for (var a = 0; a < e.length; a++) {
6197                    var n = i.length;
6198                    if (n) {
6199                      var s = i[n - 1].end;
6200                      e[a].start - s < r
6201                        ? e[a].end > s && (i[n - 1].end = e[a].end)
6202                        : i.push(e[a]);
6203                    } else i.push(e[a]);
6204                  }
6205                else i = e;
6206                for (var o, l = 0, d = t, u = t, c = 0; c < i.length; c++) {
6207                  var h = i[c].start,
6208                    f = i[c].end;
6209                  if (t + r >= h && t < f) (d = h), (l = (u = f) - t);
6210                  else if (t + r < h) {
6211                    o = h;
6212                    break;
6213                  }
6214                }
6215                return { len: l, start: d, end: u, nextStart: o };
6216              }),
6217              e
6218            );
6219          })(),
6220          V = r(8),
6221          Y = r(11),
6222          W = r(9);
6223        function q() {
6224          return window.MediaSource || window.WebKitMediaSource;
6225        }
6226        var z = r(5);
6227        var X = (function (e) {
6228            var t, r;
6229            function i() {
6230              return e.apply(this, arguments) || this;
6231            }
6232            return (
6233              (r = e),
6234              ((t = i).prototype = Object.create(r.prototype)),
6235              (t.prototype.constructor = t),
6236              (t.__proto__ = r),
6237              (i.prototype.trigger = function (e) {
6238                for (
6239                  var t = arguments.length,
6240                    r = new Array(t > 1 ? t - 1 : 0),
6241                    i = 1;
6242                  i < t;
6243                  i++
6244                )
6245                  r[i - 1] = arguments[i];
6246                this.emit.apply(this, [e, e].concat(r));
6247              }),
6248              i
6249            );
6250          })(V.EventEmitter),
6251          Q = Object(z.a)(),
6252          $ = q() || {
6253            isTypeSupported: function () {
6254              return !1;
6255            },
6256          },
6257          J = (function () {
6258            function e(e, t) {
6259              var r = this;
6260              (this.hls = e), (this.id = t);
6261              var i = (this.observer = new X()),
6262                a = e.config,
6263                n = function (t, i) {
6264                  ((i = i || {}).frag = r.frag), (i.id = r.id), e.trigger(t, i);
6265                };
6266              i.on(d.a.FRAG_DECRYPTED, n),
6267                i.on(d.a.FRAG_PARSING_INIT_SEGMENT, n),
6268                i.on(d.a.FRAG_PARSING_DATA, n),
6269                i.on(d.a.FRAG_PARSED, n),
6270                i.on(d.a.ERROR, n),
6271                i.on(d.a.FRAG_PARSING_METADATA, n),
6272                i.on(d.a.FRAG_PARSING_USERDATA, n),
6273                i.on(d.a.INIT_PTS_FOUND, n);
6274              var s = {
6275                  mp4: $.isTypeSupported("video/mp4"),
6276                  mpeg: $.isTypeSupported("audio/mpeg"),
6277                  mp3: $.isTypeSupported('audio/mp4; codecs="mp3"'),
6278                },
6279                l = navigator.vendor;
6280              if (a.enableWorker && "undefined" != typeof Worker) {
6281                var c;
6282                u.b.log("demuxing in webworker");
6283                try {
6284                  (c = this.w = Y(12)),
6285                    (this.onwmsg = this.onWorkerMessage.bind(this)),
6286                    c.addEventListener("message", this.onwmsg),
6287                    (c.onerror = function (t) {
6288                      e.trigger(d.a.ERROR, {
6289                        type: o.b.OTHER_ERROR,
6290                        details: o.a.INTERNAL_EXCEPTION,
6291                        fatal: !0,
6292                        event: "demuxerWorker",
6293                        err: {
6294                          message:
6295                            t.message +
6296                            " (" +
6297                            t.filename +
6298                            ":" +
6299                            t.lineno +
6300                            ")",
6301                        },
6302                      });
6303                    }),
6304                    c.postMessage({
6305                      cmd: "init",
6306                      typeSupported: s,
6307                      vendor: l,
6308                      id: t,
6309                      config: JSON.stringify(a),
6310                    });
6311                } catch (e) {
6312                  u.b.warn("Error in worker:", e),
6313                    u.b.error(
6314                      "Error while initializing DemuxerWorker, fallback on DemuxerInline"
6315                    ),
6316                    c && Q.URL.revokeObjectURL(c.objectURL),
6317                    (this.demuxer = new W.a(i, s, a, l)),
6318                    (this.w = void 0);
6319                }
6320              } else this.demuxer = new W.a(i, s, a, l);
6321            }
6322            var t = e.prototype;
6323            return (
6324              (t.destroy = function () {
6325                var e = this.w;
6326                if (e)
6327                  e.removeEventListener("message", this.onwmsg),
6328                    e.terminate(),
6329                    (this.w = null);
6330                else {
6331                  var t = this.demuxer;
6332                  t && (t.destroy(), (this.demuxer = null));
6333                }
6334                var r = this.observer;
6335                r && (r.removeAllListeners(), (this.observer = null));
6336              }),
6337              (t.push = function (e, t, r, i, a, n, s, o) {
6338                var d = this.w,
6339                  c = Object(l.a)(a.startPTS) ? a.startPTS : a.start,
6340                  h = a.decryptdata,
6341                  f = this.frag,
6342                  g = !(f && a.cc === f.cc),
6343                  p = !(f && a.level === f.level),
6344                  v = f && a.sn === f.sn + 1,
6345                  m = !p && v;
6346                if (
6347                  (g && u.b.log(this.id + ":discontinuity detected"),
6348                  p && u.b.log(this.id + ":switch detected"),
6349                  (this.frag = a),
6350                  d)
6351                )
6352                  d.postMessage(
6353                    {
6354                      cmd: "demux",
6355                      data: e,
6356                      decryptdata: h,
6357                      initSegment: t,
6358                      audioCodec: r,
6359                      videoCodec: i,
6360                      timeOffset: c,
6361                      discontinuity: g,
6362                      trackSwitch: p,
6363                      contiguous: m,
6364                      duration: n,
6365                      accurateTimeOffset: s,
6366                      defaultInitPTS: o,
6367                    },
6368                    e instanceof ArrayBuffer ? [e] : []
6369                  );
6370                else {
6371                  var y = this.demuxer;
6372                  y && y.push(e, h, t, r, i, c, g, p, m, n, s, o);
6373                }
6374              }),
6375              (t.onWorkerMessage = function (e) {
6376                var t = e.data,
6377                  r = this.hls;
6378                switch (t.event) {
6379                  case "init":
6380                    Q.URL.revokeObjectURL(this.w.objectURL);
6381                    break;
6382                  case d.a.FRAG_PARSING_DATA:
6383                    (t.data.data1 = new Uint8Array(t.data1)),
6384                      t.data2 && (t.data.data2 = new Uint8Array(t.data2));
6385                  default:
6386                    (t.data = t.data || {}),
6387                      (t.data.frag = this.frag),
6388                      (t.data.id = this.id),
6389                      r.trigger(t.event, t.data);
6390                }
6391              }),
6392              e
6393            );
6394          })();
6395        function Z(e, t, r) {
6396          switch (t) {
6397            case "audio":
6398              e.audioGroupIds || (e.audioGroupIds = []),
6399                e.audioGroupIds.push(r);
6400              break;
6401            case "text":
6402              e.textGroupIds || (e.textGroupIds = []), e.textGroupIds.push(r);
6403          }
6404        }
6405        function ee(e, t, r) {
6406          var i = e[t],
6407            a = e[r],
6408            n = a.startPTS;
6409          Object(l.a)(n)
6410            ? r > t
6411              ? ((i.duration = n - i.start),
6412                i.duration < 0 &&
6413                  u.b.warn(
6414                    "negative duration computed for frag " +
6415                      i.sn +
6416                      ",level " +
6417                      i.level +
6418                      ", there should be some duration drift between playlist and fragment!"
6419                  ))
6420              : ((a.duration = i.start - n),
6421                a.duration < 0 &&
6422                  u.b.warn(
6423                    "negative duration computed for frag " +
6424                      a.sn +
6425                      ",level " +
6426                      a.level +
6427                      ", there should be some duration drift between playlist and fragment!"
6428                  ))
6429            : (a.start =
6430                r > t
6431                  ? i.start + i.duration
6432                  : Math.max(i.start - a.duration, 0));
6433        }
6434        function te(e, t, r, i, a, n) {
6435          var s = r;
6436          if (Object(l.a)(t.startPTS)) {
6437            var o = Math.abs(t.startPTS - r);
6438            Object(l.a)(t.deltaPTS)
6439              ? (t.deltaPTS = Math.max(o, t.deltaPTS))
6440              : (t.deltaPTS = o),
6441              (s = Math.max(r, t.startPTS)),
6442              (r = Math.min(r, t.startPTS)),
6443              (i = Math.max(i, t.endPTS)),
6444              (a = Math.min(a, t.startDTS)),
6445              (n = Math.max(n, t.endDTS));
6446          }
6447          var d = r - t.start;
6448          (t.start = t.startPTS = r),
6449            (t.maxStartPTS = s),
6450            (t.endPTS = i),
6451            (t.startDTS = a),
6452            (t.endDTS = n),
6453            (t.duration = i - r);
6454          var u,
6455            c,
6456            h,
6457            f = t.sn;
6458          if (!e || f < e.startSN || f > e.endSN) return 0;
6459          for (u = f - e.startSN, (c = e.fragments)[u] = t, h = u; h > 0; h--)
6460            ee(c, h, h - 1);
6461          for (h = u; h < c.length - 1; h++) ee(c, h, h + 1);
6462          return (e.PTSKnown = !0), d;
6463        }
6464        function re(e, t) {
6465          t.initSegment && e.initSegment && (t.initSegment = e.initSegment);
6466          var r,
6467            i = 0;
6468          if (
6469            (ie(e, t, function (e, a) {
6470              (i = e.cc - a.cc),
6471                Object(l.a)(e.startPTS) &&
6472                  ((a.start = a.startPTS = e.startPTS),
6473                  (a.endPTS = e.endPTS),
6474                  (a.duration = e.duration),
6475                  (a.backtracked = e.backtracked),
6476                  (a.dropped = e.dropped),
6477                  (r = a)),
6478                (t.PTSKnown = !0);
6479            }),
6480            t.PTSKnown)
6481          ) {
6482            if (i) {
6483              u.b.log(
6484                "discontinuity sliding from playlist, take drift into account"
6485              );
6486              for (var a = t.fragments, n = 0; n < a.length; n++) a[n].cc += i;
6487            }
6488            r
6489              ? te(t, r, r.startPTS, r.endPTS, r.startDTS, r.endDTS)
6490              : (function (e, t) {
6491                  var r = t.startSN - e.startSN,
6492                    i = e.fragments,
6493                    a = t.fragments;
6494                  if (r < 0 || r > i.length) return;
6495                  for (var n = 0; n < a.length; n++) a[n].start += i[r].start;
6496                })(e, t),
6497              (t.PTSKnown = e.PTSKnown);
6498          }
6499        }
6500        function ie(e, t, r) {
6501          if (e && t)
6502            for (
6503              var i = Math.max(e.startSN, t.startSN) - t.startSN,
6504                a = Math.min(e.endSN, t.endSN) - t.startSN,
6505                n = t.startSN - e.startSN,
6506                s = i;
6507              s <= a;
6508              s++
6509            ) {
6510              var o = e.fragments[n + s],
6511                l = t.fragments[s];
6512              if (!o || !l) break;
6513              r(o, l, s);
6514            }
6515        }
6516        function ae(e, t, r) {
6517          var i =
6518              1e3 *
6519              (t.averagetargetduration
6520                ? t.averagetargetduration
6521                : t.targetduration),
6522            a = i / 2;
6523          return (
6524            e && t.endSN === e.endSN && (i = a),
6525            r && (i = Math.max(a, i - (window.performance.now() - r))),
6526            Math.round(i)
6527          );
6528        }
6529        var ne = {
6530          toString: function (e) {
6531            for (var t = "", r = e.length, i = 0; i < r; i++)
6532              t +=
6533                "[" + e.start(i).toFixed(3) + "," + e.end(i).toFixed(3) + "]";
6534            return t;
6535          },
6536        };
6537        function se(e, t) {
6538          t.fragments.forEach(function (t) {
6539            if (t) {
6540              var r = t.start + e;
6541              (t.start = t.startPTS = r), (t.endPTS = r + t.duration);
6542            }
6543          }),
6544            (t.PTSKnown = !0);
6545        }
6546        function oe(e, t, r) {
6547          !(function (e, t, r) {
6548            if (
6549              (function (e, t, r) {
6550                var i = !1;
6551                return (
6552                  t &&
6553                    t.details &&
6554                    r &&
6555                    (r.endCC > r.startCC || (e && e.cc < r.startCC)) &&
6556                    (i = !0),
6557                  i
6558                );
6559              })(e, r, t)
6560            ) {
6561              var i = (function (e, t) {
6562                var r = e.fragments,
6563                  i = t.fragments;
6564                if (i.length && r.length) {
6565                  var a = (function (e, t) {
6566                    for (var r = null, i = 0; i < e.length; i += 1) {
6567                      var a = e[i];
6568                      if (a && a.cc === t) {
6569                        r = a;
6570                        break;
6571                      }
6572                    }
6573                    return r;
6574                  })(r, i[0].cc);
6575                  if (a && (!a || a.startPTS)) return a;
6576                  u.b.log("No frag in previous level to align on");
6577                } else u.b.log("No fragments to align");
6578              })(r.details, t);
6579              i &&
6580                (u.b.log(
6581                  "Adjusting PTS using last level due to CC increase within current level"
6582                ),
6583                se(i.start, t));
6584            }
6585          })(e, r, t),
6586            !r.PTSKnown &&
6587              t &&
6588              (function (e, t) {
6589                if (t && t.fragments.length) {
6590                  if (!e.hasProgramDateTime || !t.hasProgramDateTime) return;
6591                  var r = t.fragments[0].programDateTime,
6592                    i =
6593                      (e.fragments[0].programDateTime - r) / 1e3 +
6594                      t.fragments[0].start;
6595                  Object(l.a)(i) &&
6596                    (u.b.log(
6597                      "adjusting PTS using programDateTime delta, sliding:" +
6598                        i.toFixed(3)
6599                    ),
6600                    se(i, e));
6601                }
6602              })(r, t.details);
6603        }
6604        function le(e, t, r) {
6605          if (null === t || !Array.isArray(e) || !e.length || !Object(l.a)(t))
6606            return null;
6607          if (t < (e[0].programDateTime || 0)) return null;
6608          if (t >= (e[e.length - 1].endProgramDateTime || 0)) return null;
6609          r = r || 0;
6610          for (var i = 0; i < e.length; ++i) {
6611            var a = e[i];
6612            if (ce(t, r, a)) return a;
6613          }
6614          return null;
6615        }
6616        function de(e, t, r, i) {
6617          void 0 === r && (r = 0), void 0 === i && (i = 0);
6618          var a = e ? t[e.sn - t[0].sn + 1] : null;
6619          return a && !ue(r, i, a) ? a : j.search(t, ue.bind(null, r, i));
6620        }
6621        function ue(e, t, r) {
6622          void 0 === e && (e = 0), void 0 === t && (t = 0);
6623          var i = Math.min(t, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
6624          return r.start + r.duration - i <= e
6625            ? 1
6626            : r.start - i > e && r.start
6627            ? -1
6628            : 0;
6629        }
6630        function ce(e, t, r) {
6631          var i = 1e3 * Math.min(t, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
6632          return (r.endProgramDateTime || 0) - i > e;
6633        }
6634        var he = (function () {
6635          function e(e, t, r, i) {
6636            (this.config = e),
6637              (this.media = t),
6638              (this.fragmentTracker = r),
6639              (this.hls = i),
6640              (this.nudgeRetry = 0),
6641              (this.stallReported = !1),
6642              (this.stalled = null),
6643              (this.moved = !1),
6644              (this.seeking = !1);
6645          }
6646          var t = e.prototype;
6647          return (
6648            (t.poll = function (e) {
6649              var t = this.config,
6650                r = this.media,
6651                i = this.stalled,
6652                a = r.currentTime,
6653                n = r.seeking,
6654                s = this.seeking && !n,
6655                o = !this.seeking && n;
6656              if (((this.seeking = n), a === e)) {
6657                if (
6658                  ((o || s) && (this.stalled = null),
6659                  !r.paused &&
6660                    !r.ended &&
6661                    0 !== r.playbackRate &&
6662                    r.buffered.length)
6663                ) {
6664                  var l = H.bufferInfo(r, a, 0),
6665                    d = l.len > 0,
6666                    c = l.nextStart || 0;
6667                  if (d || c) {
6668                    if (n) {
6669                      if (l.len > 2 || !c || c - a > 2) return;
6670                      this.moved = !1;
6671                    }
6672                    if (!this.moved && this.stalled) {
6673                      var h = Math.max(c, l.start || 0) - a;
6674                      if (h > 0 && h <= 2)
6675                        return void this._trySkipBufferHole(null);
6676                    }
6677                    var f = self.performance.now();
6678                    if (null !== i) {
6679                      var g = f - i;
6680                      !n && g >= 250 && this._reportStall(l.len);
6681                      var p = H.bufferInfo(r, a, t.maxBufferHole);
6682                      this._tryFixBufferStall(p, g);
6683                    } else this.stalled = f;
6684                  }
6685                }
6686              } else if (((this.moved = !0), null !== i)) {
6687                if (this.stallReported) {
6688                  var v = self.performance.now() - i;
6689                  u.b.warn(
6690                    "playback not stuck anymore @" +
6691                      a +
6692                      ", after " +
6693                      Math.round(v) +
6694                      "ms"
6695                  ),
6696                    (this.stallReported = !1);
6697                }
6698                (this.stalled = null), (this.nudgeRetry = 0);
6699              }
6700            }),
6701            (t._tryFixBufferStall = function (e, t) {
6702              var r = this.config,
6703                i = this.fragmentTracker,
6704                a = this.media.currentTime,
6705                n = i.getPartialFragment(a);
6706              if (n && this._trySkipBufferHole(n)) return;
6707              e.len > r.maxBufferHole &&
6708                t > 1e3 * r.highBufferWatchdogPeriod &&
6709                (u.b.warn("Trying to nudge playhead over buffer-hole"),
6710                (this.stalled = null),
6711                this._tryNudgeBuffer());
6712            }),
6713            (t._reportStall = function (e) {
6714              var t = this.hls,
6715                r = this.media;
6716              this.stallReported ||
6717                ((this.stallReported = !0),
6718                u.b.warn(
6719                  "Playback stalling at @" +
6720                    r.currentTime +
6721                    " due to low buffer"
6722                ),
6723                t.trigger(d.a.ERROR, {
6724                  type: o.b.MEDIA_ERROR,
6725                  details: o.a.BUFFER_STALLED_ERROR,
6726                  fatal: !1,
6727                  buffer: e,
6728                }));
6729            }),
6730            (t._trySkipBufferHole = function (e) {
6731              for (
6732                var t = this.config,
6733                  r = this.hls,
6734                  i = this.media,
6735                  a = i.currentTime,
6736                  n = 0,
6737                  s = 0;
6738                s < i.buffered.length;
6739                s++
6740              ) {
6741                var l = i.buffered.start(s);
6742                if (a + t.maxBufferHole >= n && a < l) {
6743                  var c = Math.max(l + 0.05, i.currentTime + 0.1);
6744                  return (
6745                    u.b.warn(
6746                      "skipping hole, adjusting currentTime from " +
6747                        a +
6748                        " to " +
6749                        c
6750                    ),
6751                    (this.moved = !0),
6752                    (this.stalled = null),
6753                    (i.currentTime = c),
6754                    e &&
6755                      r.trigger(d.a.ERROR, {
6756                        type: o.b.MEDIA_ERROR,
6757                        details: o.a.BUFFER_SEEK_OVER_HOLE,
6758                        fatal: !1,
6759                        reason:
6760                          "fragment loaded with buffer holes, seeking from " +
6761                          a +
6762                          " to " +
6763                          c,
6764                        frag: e,
6765                      }),
6766                    c
6767                  );
6768                }
6769                n = i.buffered.end(s);
6770              }
6771              return 0;
6772            }),
6773            (t._tryNudgeBuffer = function () {
6774              var e = this.config,
6775                t = this.hls,
6776                r = this.media,
6777                i = r.currentTime,
6778                a = (this.nudgeRetry || 0) + 1;
6779              if (((this.nudgeRetry = a), a < e.nudgeMaxRetry)) {
6780                var n = i + a * e.nudgeOffset;
6781                u.b.warn("Nudging 'currentTime' from " + i + " to " + n),
6782                  (r.currentTime = n),
6783                  t.trigger(d.a.ERROR, {
6784                    type: o.b.MEDIA_ERROR,
6785                    details: o.a.BUFFER_NUDGE_ON_STALL,
6786                    fatal: !1,
6787                  });
6788              } else
6789                u.b.error(
6790                  "Playhead still not moving while enough data buffered @" +
6791                    i +
6792                    " after " +
6793                    e.nudgeMaxRetry +
6794                    " nudges"
6795                ),
6796                  t.trigger(d.a.ERROR, {
6797                    type: o.b.MEDIA_ERROR,
6798                    details: o.a.BUFFER_STALLED_ERROR,
6799                    fatal: !0,
6800                  });
6801            }),
6802            e
6803          );
6804        })();
6805        function fe(e) {
6806          if (void 0 === e)
6807            throw new ReferenceError(
6808              "this hasn't been initialised - super() hasn't been called"
6809            );
6810          return e;
6811        }
6812        var ge = (function (e) {
6813          var t, r;
6814          function i(t) {
6815            for (
6816              var r,
6817                i = arguments.length,
6818                a = new Array(i > 1 ? i - 1 : 0),
6819                n = 1;
6820              n < i;
6821              n++
6822            )
6823              a[n - 1] = arguments[n];
6824            return (
6825              ((r = e.call.apply(e, [this, t].concat(a)) || this)._boundTick =
6826                void 0),
6827              (r._tickTimer = null),
6828              (r._tickInterval = null),
6829              (r._tickCallCount = 0),
6830              (r._boundTick = r.tick.bind(fe(r))),
6831              r
6832            );
6833          }
6834          (r = e),
6835            ((t = i).prototype = Object.create(r.prototype)),
6836            (t.prototype.constructor = t),
6837            (t.__proto__ = r);
6838          var a = i.prototype;
6839          return (
6840            (a.onHandlerDestroying = function () {
6841              this.clearNextTick(), this.clearInterval();
6842            }),
6843            (a.hasInterval = function () {
6844              return !!this._tickInterval;
6845            }),
6846            (a.hasNextTick = function () {
6847              return !!this._tickTimer;
6848            }),
6849            (a.setInterval = function (e) {
6850              return (
6851                !this._tickInterval &&
6852                ((this._tickInterval = self.setInterval(this._boundTick, e)),
6853                !0)
6854              );
6855            }),
6856            (a.clearInterval = function () {
6857              return (
6858                !!this._tickInterval &&
6859                (self.clearInterval(this._tickInterval),
6860                (this._tickInterval = null),
6861                !0)
6862              );
6863            }),
6864            (a.clearNextTick = function () {
6865              return (
6866                !!this._tickTimer &&
6867                (self.clearTimeout(this._tickTimer),
6868                (this._tickTimer = null),
6869                !0)
6870              );
6871            }),
6872            (a.tick = function () {
6873              this._tickCallCount++,
6874                1 === this._tickCallCount &&
6875                  (this.doTick(),
6876                  this._tickCallCount > 1 &&
6877                    (this.clearNextTick(),
6878                    (this._tickTimer = self.setTimeout(this._boundTick, 0))),
6879                  (this._tickCallCount = 0));
6880            }),
6881            (a.doTick = function () {}),
6882            i
6883          );
6884        })(h);
6885        var pe = "STOPPED",
6886          ve = "STARTING",
6887          me = "IDLE",
6888          ye = "PAUSED",
6889          be = "KEY_LOADING",
6890          Te = "FRAG_LOADING",
6891          Ee = "FRAG_LOADING_WAITING_RETRY",
6892          Se = "WAITING_TRACK",
6893          _e = "PARSING",
6894          Ae = "PARSED",
6895          Re = "BUFFER_FLUSHING",
6896          we = "ENDED",
6897          Le = "ERROR",
6898          ke = "WAITING_INIT_PTS",
6899          De = "WAITING_LEVEL",
6900          Ce = (function (e) {
6901            var t, r;
6902            function i() {
6903              return e.apply(this, arguments) || this;
6904            }
6905            (r = e),
6906              ((t = i).prototype = Object.create(r.prototype)),
6907              (t.prototype.constructor = t),
6908              (t.__proto__ = r);
6909            var a = i.prototype;
6910            return (
6911              (a.doTick = function () {}),
6912              (a.startLoad = function () {}),
6913              (a.stopLoad = function () {
6914                var e = this.fragCurrent;
6915                e &&
6916                  (e.loader && e.loader.abort(),
6917                  this.fragmentTracker.removeFragment(e)),
6918                  this.demuxer &&
6919                    (this.demuxer.destroy(), (this.demuxer = null)),
6920                  (this.fragCurrent = null),
6921                  (this.fragPrevious = null),
6922                  this.clearInterval(),
6923                  this.clearNextTick(),
6924                  (this.state = pe);
6925              }),
6926              (a._streamEnded = function (e, t) {
6927                var r = this.fragCurrent,
6928                  i = this.fragmentTracker;
6929                if (
6930                  !t.live &&
6931                  r &&
6932                  !r.backtracked &&
6933                  r.sn === t.endSN &&
6934                  !e.nextStart
6935                ) {
6936                  var a = i.getState(r);
6937                  return a === B || a === G;
6938                }
6939                return !1;
6940              }),
6941              (a.onMediaSeeking = function () {
6942                var e = this.config,
6943                  t = this.media,
6944                  r = this.mediaBuffer,
6945                  i = this.state,
6946                  a = t ? t.currentTime : null,
6947                  n = H.bufferInfo(r || t, a, this.config.maxBufferHole);
6948                if (
6949                  (Object(l.a)(a) &&
6950                    u.b.log("media seeking to " + a.toFixed(3)),
6951                  i === Te)
6952                ) {
6953                  var s = this.fragCurrent;
6954                  if (0 === n.len && s) {
6955                    var o = e.maxFragLookUpTolerance,
6956                      d = s.start - o,
6957                      c = s.start + s.duration + o;
6958                    a < d || a > c
6959                      ? (s.loader &&
6960                          (u.b.log(
6961                            "seeking outside of buffer while fragment load in progress, cancel fragment load"
6962                          ),
6963                          s.loader.abort()),
6964                        (this.fragCurrent = null),
6965                        (this.fragPrevious = null),
6966                        (this.state = me))
6967                      : u.b.log(
6968                          "seeking outside of buffer but within currently loaded fragment range"
6969                        );
6970                  }
6971                } else
6972                  i === we &&
6973                    (0 === n.len &&
6974                      ((this.fragPrevious = null), (this.fragCurrent = null)),
6975                    (this.state = me));
6976                t && (this.lastCurrentTime = a),
6977                  this.loadedmetadata ||
6978                    (this.nextLoadPosition = this.startPosition = a),
6979                  this.tick();
6980              }),
6981              (a.onMediaEnded = function () {
6982                this.startPosition = this.lastCurrentTime = 0;
6983              }),
6984              (a.onHandlerDestroying = function () {
6985                this.stopLoad(), e.prototype.onHandlerDestroying.call(this);
6986              }),
6987              (a.onHandlerDestroyed = function () {
6988                (this.state = pe), (this.fragmentTracker = null);
6989              }),
6990              (a.computeLivePosition = function (e, t) {
6991                var r =
6992                  void 0 !== this.config.liveSyncDuration
6993                    ? this.config.liveSyncDuration
6994                    : this.config.liveSyncDurationCount * t.targetduration;
6995                return e + Math.max(0, t.totalduration - r);
6996              }),
6997              i
6998            );
6999          })(ge);
7000        function Oe(e, t) {
7001          for (var r = 0; r < t.length; r++) {
7002            var i = t[r];
7003            (i.enumerable = i.enumerable || !1),
7004              (i.configurable = !0),
7005              "value" in i && (i.writable = !0),
7006              Object.defineProperty(e, i.key, i);
7007          }
7008        }
7009        var Ie = (function (e) {
7010          var t, r;
7011          function i(t, r) {
7012            var i;
7013            return (
7014              ((i =
7015                e.call(
7016                  this,
7017                  t,
7018                  d.a.MEDIA_ATTACHED,
7019                  d.a.MEDIA_DETACHING,
7020                  d.a.MANIFEST_LOADING,
7021                  d.a.MANIFEST_PARSED,
7022                  d.a.LEVEL_LOADED,
7023                  d.a.KEY_LOADED,
7024                  d.a.FRAG_LOADED,
7025                  d.a.FRAG_LOAD_EMERGENCY_ABORTED,
7026                  d.a.FRAG_PARSING_INIT_SEGMENT,
7027                  d.a.FRAG_PARSING_DATA,
7028                  d.a.FRAG_PARSED,
7029                  d.a.ERROR,
7030                  d.a.AUDIO_TRACK_SWITCHING,
7031                  d.a.AUDIO_TRACK_SWITCHED,
7032                  d.a.BUFFER_CREATED,
7033                  d.a.BUFFER_APPENDED,
7034                  d.a.BUFFER_FLUSHED
7035                ) || this).fragmentTracker = r),
7036              (i.config = t.config),
7037              (i.audioCodecSwap = !1),
7038              (i._state = pe),
7039              (i.stallReported = !1),
7040              (i.gapController = null),
7041              (i.altAudio = !1),
7042              i
7043            );
7044          }
7045          (r = e),
7046            ((t = i).prototype = Object.create(r.prototype)),
7047            (t.prototype.constructor = t),
7048            (t.__proto__ = r);
7049          var a,
7050            s,
7051            c,
7052            h = i.prototype;
7053          return (
7054            (h.startLoad = function (e) {
7055              if (this.levels) {
7056                var t = this.lastCurrentTime,
7057                  r = this.hls;
7058                if (
7059                  (this.stopLoad(),
7060                  this.setInterval(100),
7061                  (this.level = -1),
7062                  (this.fragLoadError = 0),
7063                  !this.startFragRequested)
7064                ) {
7065                  var i = r.startLevel;
7066                  -1 === i && ((i = 0), (this.bitrateTest = !0)),
7067                    (this.level = r.nextLoadLevel = i),
7068                    (this.loadedmetadata = !1);
7069                }
7070                t > 0 &&
7071                  -1 === e &&
7072                  (u.b.log(
7073                    "override startPosition with lastCurrentTime @" +
7074                      t.toFixed(3)
7075                  ),
7076                  (e = t)),
7077                  (this.state = me),
7078                  (this.nextLoadPosition =
7079                    this.startPosition =
7080                    this.lastCurrentTime =
7081                      e),
7082                  this.tick();
7083              } else (this.forceStartLoad = !0), (this.state = pe);
7084            }),
7085            (h.stopLoad = function () {
7086              (this.forceStartLoad = !1), e.prototype.stopLoad.call(this);
7087            }),
7088            (h.doTick = function () {
7089              switch (this.state) {
7090                case Re:
7091                  this.fragLoadError = 0;
7092                  break;
7093                case me:
7094                  this._doTickIdle();
7095                  break;
7096                case De:
7097                  var e = this.levels[this.level];
7098                  e && e.details && (this.state = me);
7099                  break;
7100                case Ee:
7101                  var t = window.performance.now(),
7102                    r = this.retryDate;
7103                  (!r || t >= r || (this.media && this.media.seeking)) &&
7104                    (u.b.log(
7105                      "mediaController: retryDate reached, switch back to IDLE state"
7106                    ),
7107                    (this.state = me));
7108              }
7109              this._checkBuffer(), this._checkFragmentChanged();
7110            }),
7111            (h._doTickIdle = function () {
7112              var e = this.hls,
7113                t = e.config,
7114                r = this.media;
7115              if (
7116                void 0 !== this.levelLastLoaded &&
7117                (r || (!this.startFragRequested && t.startFragPrefetch))
7118              ) {
7119                var i;
7120                i = this.loadedmetadata ? r.currentTime : this.nextLoadPosition;
7121                var a = e.nextLoadLevel,
7122                  n = this.levels[a];
7123                if (n) {
7124                  var s,
7125                    o = n.bitrate;
7126                  (s = o
7127                    ? Math.max((8 * t.maxBufferSize) / o, t.maxBufferLength)
7128                    : t.maxBufferLength),
7129                    (s = Math.min(s, t.maxMaxBufferLength));
7130                  var l = H.bufferInfo(
7131                      this.mediaBuffer ? this.mediaBuffer : r,
7132                      i,
7133                      t.maxBufferHole
7134                    ),
7135                    c = l.len;
7136                  if (!(c >= s)) {
7137                    u.b.trace(
7138                      "buffer length of " +
7139                        c.toFixed(3) +
7140                        " is below max of " +
7141                        s.toFixed(3) +
7142                        ". checking for more payload ..."
7143                    ),
7144                      (this.level = e.nextLoadLevel = a);
7145                    var h = n.details;
7146                    if (!h || (h.live && this.levelLastLoaded !== a))
7147                      this.state = De;
7148                    else {
7149                      if (this._streamEnded(l, h)) {
7150                        var f = {};
7151                        return (
7152                          this.altAudio && (f.type = "video"),
7153                          this.hls.trigger(d.a.BUFFER_EOS, f),
7154                          void (this.state = we)
7155                        );
7156                      }
7157                      this._fetchPayloadOrEos(i, l, h);
7158                    }
7159                  }
7160                }
7161              }
7162            }),
7163            (h._fetchPayloadOrEos = function (e, t, r) {
7164              var i = this.fragPrevious,
7165                a = this.level,
7166                n = r.fragments,
7167                s = n.length;
7168              if (0 !== s) {
7169                var o,
7170                  l = n[0].start,
7171                  d = n[s - 1].start + n[s - 1].duration,
7172                  c = t.end;
7173                if (r.initSegment && !r.initSegment.data) o = r.initSegment;
7174                else if (r.live) {
7175                  var h = this.config.initialLiveManifestSize;
7176                  if (s < h)
7177                    return void u.b.warn(
7178                      "Can not start playback of a level, reason: not enough fragments " +
7179                        s +
7180                        " < " +
7181                        h
7182                    );
7183                  if (
7184                    null ===
7185                    (o = this._ensureFragmentAtLivePoint(r, c, l, d, i, n, s))
7186                  )
7187                    return;
7188                } else c < l && (o = n[0]);
7189                o || (o = this._findFragment(l, i, s, n, c, d, r)),
7190                  o &&
7191                    (o.encrypted
7192                      ? (u.b.log(
7193                          "Loading key for " +
7194                            o.sn +
7195                            " of [" +
7196                            r.startSN +
7197                            " ," +
7198                            r.endSN +
7199                            "],level " +
7200                            a
7201                        ),
7202                        this._loadKey(o))
7203                      : (u.b.log(
7204                          "Loading " +
7205                            o.sn +
7206                            " of [" +
7207                            r.startSN +
7208                            " ," +
7209                            r.endSN +
7210                            "],level " +
7211                            a +
7212                            ", currentTime:" +
7213                            e.toFixed(3) +
7214                            ",bufferEnd:" +
7215                            c.toFixed(3)
7216                        ),
7217                        this._loadFragment(o)));
7218              }
7219            }),
7220            (h._ensureFragmentAtLivePoint = function (e, t, r, i, a, n, s) {
7221              var o,
7222                l = this.hls.config,
7223                d = this.media,
7224                c =
7225                  void 0 !== l.liveMaxLatencyDuration
7226                    ? l.liveMaxLatencyDuration
7227                    : l.liveMaxLatencyDurationCount * e.targetduration;
7228              if (t < Math.max(r - l.maxFragLookUpTolerance, i - c)) {
7229                var h = (this.liveSyncPosition = this.computeLivePosition(
7230                  r,
7231                  e
7232                ));
7233                (t = h),
7234                  d &&
7235                    !d.paused &&
7236                    d.readyState &&
7237                    d.duration > h &&
7238                    h > d.currentTime &&
7239                    (u.b.log(
7240                      "buffer end: " +
7241                        t.toFixed(3) +
7242                        " is located too far from the end of live sliding playlist, reset currentTime to : " +
7243                        h.toFixed(3)
7244                    ),
7245                    (d.currentTime = h)),
7246                  (this.nextLoadPosition = h);
7247              }
7248              if (e.PTSKnown && t > i && d && d.readyState) return null;
7249              if (this.startFragRequested && !e.PTSKnown) {
7250                if (a)
7251                  if (e.hasProgramDateTime)
7252                    u.b.log(
7253                      "live playlist, switching playlist, load frag with same PDT: " +
7254                        a.programDateTime
7255                    ),
7256                      (o = le(
7257                        n,
7258                        a.endProgramDateTime,
7259                        l.maxFragLookUpTolerance
7260                      ));
7261                  else {
7262                    var f = a.sn + 1;
7263                    if (f >= e.startSN && f <= e.endSN) {
7264                      var g = n[f - e.startSN];
7265                      a.cc === g.cc &&
7266                        ((o = g),
7267                        u.b.log(
7268                          "live playlist, switching playlist, load frag with next SN: " +
7269                            o.sn
7270                        ));
7271                    }
7272                    o ||
7273                      ((o = j.search(n, function (e) {
7274                        return a.cc - e.cc;
7275                      })) &&
7276                        u.b.log(
7277                          "live playlist, switching playlist, load frag with same CC: " +
7278                            o.sn
7279                        ));
7280                  }
7281                o ||
7282                  ((o = n[Math.min(s - 1, Math.round(s / 2))]),
7283                  u.b.log(
7284                    "live playlist, switching playlist, unknown, load middle frag : " +
7285                      o.sn
7286                  ));
7287              }
7288              return o;
7289            }),
7290            (h._findFragment = function (e, t, r, i, a, n, s) {
7291              var o,
7292                l = this.hls.config;
7293              a < n
7294                ? (o = de(
7295                    t,
7296                    i,
7297                    a,
7298                    a > n - l.maxFragLookUpTolerance
7299                      ? 0
7300                      : l.maxFragLookUpTolerance
7301                  ))
7302                : (o = i[r - 1]);
7303              if (o) {
7304                var d = o.sn - s.startSN,
7305                  c = t && o.level === t.level,
7306                  h = i[d - 1],
7307                  f = i[d + 1];
7308                if (t && o.sn === t.sn)
7309                  if (c && !o.backtracked)
7310                    if (o.sn < s.endSN) {
7311                      var g = t.deltaPTS;
7312                      g && g > l.maxBufferHole && t.dropped && d
7313                        ? ((o = h),
7314                          u.b.warn(
7315                            "Previous fragment was dropped with large PTS gap between audio and video. Maybe fragment is not starting with a keyframe? Loading previous one to try to overcome this"
7316                          ))
7317                        : ((o = f),
7318                          u.b.log("Re-loading fragment with SN: " + o.sn));
7319                    } else o = null;
7320                  else
7321                    o.backtracked &&
7322                      (f && f.backtracked
7323                        ? (u.b.warn(
7324                            "Already backtracked from fragment " +
7325                              f.sn +
7326                              ", will not backtrack to fragment " +
7327                              o.sn +
7328                              ". Loading fragment " +
7329                              f.sn
7330                          ),
7331                          (o = f))
7332                        : (u.b.warn(
7333                            "Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe"
7334                          ),
7335                          (o.dropped = 0),
7336                          h ? ((o = h).backtracked = !0) : d && (o = null)));
7337              }
7338              return o;
7339            }),
7340            (h._loadKey = function (e) {
7341              (this.state = be), this.hls.trigger(d.a.KEY_LOADING, { frag: e });
7342            }),
7343            (h._loadFragment = function (e) {
7344              var t = this.fragmentTracker.getState(e);
7345              (this.fragCurrent = e),
7346                "initSegment" !== e.sn && (this.startFragRequested = !0),
7347                Object(l.a)(e.sn) &&
7348                  !e.bitrateTest &&
7349                  (this.nextLoadPosition = e.start + e.duration),
7350                e.backtracked || t === U || t === B
7351                  ? ((e.autoLevel = this.hls.autoLevelEnabled),
7352                    (e.bitrateTest = this.bitrateTest),
7353                    this.hls.trigger(d.a.FRAG_LOADING, { frag: e }),
7354                    this.demuxer || (this.demuxer = new J(this.hls, "main")),
7355                    (this.state = Te))
7356                  : t === N &&
7357                    this._reduceMaxBufferLength(e.duration) &&
7358                    this.fragmentTracker.removeFragment(e);
7359            }),
7360            (h.getBufferedFrag = function (e) {
7361              return this.fragmentTracker.getBufferedFrag(e, n.MAIN);
7362            }),
7363            (h.followingBufferedFrag = function (e) {
7364              return e ? this.getBufferedFrag(e.endPTS + 0.5) : null;
7365            }),
7366            (h._checkFragmentChanged = function () {
7367              var e,
7368                t,
7369                r = this.media;
7370              if (
7371                r &&
7372                r.readyState &&
7373                !1 === r.seeking &&
7374                ((t = r.currentTime) > this.lastCurrentTime &&
7375                  (this.lastCurrentTime = t),
7376                H.isBuffered(r, t)
7377                  ? (e = this.getBufferedFrag(t))
7378                  : H.isBuffered(r, t + 0.1) &&
7379                    (e = this.getBufferedFrag(t + 0.1)),
7380                e)
7381              ) {
7382                var i = e;
7383                if (i !== this.fragPlaying) {
7384                  this.hls.trigger(d.a.FRAG_CHANGED, { frag: i });
7385                  var a = i.level;
7386                  (this.fragPlaying && this.fragPlaying.level === a) ||
7387                    this.hls.trigger(d.a.LEVEL_SWITCHED, { level: a }),
7388                    (this.fragPlaying = i);
7389                }
7390              }
7391            }),
7392            (h.immediateLevelSwitch = function () {
7393              if ((u.b.log("immediateLevelSwitch"), !this.immediateSwitch)) {
7394                this.immediateSwitch = !0;
7395                var e,
7396                  t = this.media;
7397                t ? ((e = t.paused), t.pause()) : (e = !0),
7398                  (this.previouslyPaused = e);
7399              }
7400              var r = this.fragCurrent;
7401              r && r.loader && r.loader.abort(),
7402                (this.fragCurrent = null),
7403                this.flushMainBuffer(0, Number.POSITIVE_INFINITY);
7404            }),
7405            (h.immediateLevelSwitchEnd = function () {
7406              var e = this.media;
7407              e &&
7408                e.buffered.length &&
7409                ((this.immediateSwitch = !1),
7410                H.isBuffered(e, e.currentTime) && (e.currentTime -= 1e-4),
7411                this.previouslyPaused || e.play());
7412            }),
7413            (h.nextLevelSwitch = function () {
7414              var e = this.media;
7415              if (e && e.readyState) {
7416                var t, r, i;
7417                if (
7418                  ((r = this.getBufferedFrag(e.currentTime)) &&
7419                    r.startPTS > 1 &&
7420                    this.flushMainBuffer(0, r.startPTS - 1),
7421                  e.paused)
7422                )
7423                  t = 0;
7424                else {
7425                  var a = this.hls.nextLoadLevel,
7426                    n = this.levels[a],
7427                    s = this.fragLastKbps;
7428                  t =
7429                    s && this.fragCurrent
7430                      ? (this.fragCurrent.duration * n.bitrate) / (1e3 * s) + 1
7431                      : 0;
7432                }
7433                if (
7434                  (i = this.getBufferedFrag(e.currentTime + t)) &&
7435                  (i = this.followingBufferedFrag(i))
7436                ) {
7437                  var o = this.fragCurrent;
7438                  o && o.loader && o.loader.abort(),
7439                    (this.fragCurrent = null),
7440                    this.flushMainBuffer(
7441                      i.maxStartPTS,
7442                      Number.POSITIVE_INFINITY
7443                    );
7444                }
7445              }
7446            }),
7447            (h.flushMainBuffer = function (e, t) {
7448              this.state = Re;
7449              var r = { startOffset: e, endOffset: t };
7450              this.altAudio && (r.type = "video"),
7451                this.hls.trigger(d.a.BUFFER_FLUSHING, r);
7452            }),
7453            (h.onMediaAttached = function (e) {
7454              var t = (this.media = this.mediaBuffer = e.media);
7455              (this.onvseeking = this.onMediaSeeking.bind(this)),
7456                (this.onvseeked = this.onMediaSeeked.bind(this)),
7457                (this.onvended = this.onMediaEnded.bind(this)),
7458                t.addEventListener("seeking", this.onvseeking),
7459                t.addEventListener("seeked", this.onvseeked),
7460                t.addEventListener("ended", this.onvended);
7461              var r = this.config;
7462              this.levels &&
7463                r.autoStartLoad &&
7464                this.hls.startLoad(r.startPosition),
7465                (this.gapController = new he(
7466                  r,
7467                  t,
7468                  this.fragmentTracker,
7469                  this.hls
7470                ));
7471            }),
7472            (h.onMediaDetaching = function () {
7473              var e = this.media;
7474              e &&
7475                e.ended &&
7476                (u.b.log("MSE detaching and video ended, reset startPosition"),
7477                (this.startPosition = this.lastCurrentTime = 0));
7478              var t = this.levels;
7479              t &&
7480                t.forEach(function (e) {
7481                  e.details &&
7482                    e.details.fragments.forEach(function (e) {
7483                      e.backtracked = void 0;
7484                    });
7485                }),
7486                e &&
7487                  (e.removeEventListener("seeking", this.onvseeking),
7488                  e.removeEventListener("seeked", this.onvseeked),
7489                  e.removeEventListener("ended", this.onvended),
7490                  (this.onvseeking = this.onvseeked = this.onvended = null)),
7491                this.fragmentTracker.removeAllFragments(),
7492                (this.media = this.mediaBuffer = null),
7493                (this.loadedmetadata = !1),
7494                this.stopLoad();
7495            }),
7496            (h.onMediaSeeked = function () {
7497              var e = this.media,
7498                t = e ? e.currentTime : void 0;
7499              Object(l.a)(t) && u.b.log("media seeked to " + t.toFixed(3)),
7500                this.tick();
7501            }),
7502            (h.onManifestLoading = function () {
7503              u.b.log("trigger BUFFER_RESET"),
7504                this.hls.trigger(d.a.BUFFER_RESET),
7505                this.fragmentTracker.removeAllFragments(),
7506                (this.stalled = !1),
7507                (this.startPosition = this.lastCurrentTime = 0);
7508            }),
7509            (h.onManifestParsed = function (e) {
7510              var t,
7511                r = !1,
7512                i = !1;
7513              e.levels.forEach(function (e) {
7514                (t = e.audioCodec) &&
7515                  (-1 !== t.indexOf("mp4a.40.2") && (r = !0),
7516                  -1 !== t.indexOf("mp4a.40.5") && (i = !0));
7517              }),
7518                (this.audioCodecSwitch = r && i),
7519                this.audioCodecSwitch &&
7520                  u.b.log(
7521                    "both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"
7522                  ),
7523                (this.altAudio = e.altAudio),
7524                (this.levels = e.levels),
7525                (this.startFragRequested = !1);
7526              var a = this.config;
7527              (a.autoStartLoad || this.forceStartLoad) &&
7528                this.hls.startLoad(a.startPosition);
7529            }),
7530            (h.onLevelLoaded = function (e) {
7531              var t = e.details,
7532                r = e.level,
7533                i = this.levels[this.levelLastLoaded],
7534                a = this.levels[r],
7535                n = t.totalduration,
7536                s = 0;
7537              if (
7538                (u.b.log(
7539                  "level " +
7540                    r +
7541                    " loaded [" +
7542                    t.startSN +
7543                    "," +
7544                    t.endSN +
7545                    "],duration:" +
7546                    n
7547                ),
7548                t.live)
7549              ) {
7550                var o = a.details;
7551                o && t.fragments.length > 0
7552                  ? (re(o, t),
7553                    (s = t.fragments[0].start),
7554                    (this.liveSyncPosition = this.computeLivePosition(s, o)),
7555                    t.PTSKnown && Object(l.a)(s)
7556                      ? u.b.log("live playlist sliding:" + s.toFixed(3))
7557                      : (u.b.log(
7558                          "live playlist - outdated PTS, unknown sliding"
7559                        ),
7560                        oe(this.fragPrevious, i, t)))
7561                  : (u.b.log("live playlist - first load, unknown sliding"),
7562                    (t.PTSKnown = !1),
7563                    oe(this.fragPrevious, i, t));
7564              } else t.PTSKnown = !1;
7565              if (
7566                ((a.details = t),
7567                (this.levelLastLoaded = r),
7568                this.hls.trigger(d.a.LEVEL_UPDATED, { details: t, level: r }),
7569                !1 === this.startFragRequested)
7570              ) {
7571                if (-1 === this.startPosition || -1 === this.lastCurrentTime) {
7572                  var c = t.startTimeOffset;
7573                  Object(l.a)(c)
7574                    ? (c < 0 &&
7575                        (u.b.log(
7576                          "negative start time offset " +
7577                            c +
7578                            ", count from end of last fragment"
7579                        ),
7580                        (c = s + n + c)),
7581                      u.b.log(
7582                        "start time offset found in playlist, adjust startPosition to " +
7583                          c
7584                      ),
7585                      (this.startPosition = c))
7586                    : t.live
7587                    ? ((this.startPosition = this.computeLivePosition(s, t)),
7588                      u.b.log(
7589                        "configure startPosition to " + this.startPosition
7590                      ))
7591                    : (this.startPosition = 0),
7592                    (this.lastCurrentTime = this.startPosition);
7593                }
7594                this.nextLoadPosition = this.startPosition;
7595              }
7596              this.state === De && (this.state = me), this.tick();
7597            }),
7598            (h.onKeyLoaded = function () {
7599              this.state === be && ((this.state = me), this.tick());
7600            }),
7601            (h.onFragLoaded = function (e) {
7602              var t = this.fragCurrent,
7603                r = this.hls,
7604                i = this.levels,
7605                a = this.media,
7606                n = e.frag;
7607              if (
7608                this.state === Te &&
7609                t &&
7610                "main" === n.type &&
7611                n.level === t.level &&
7612                n.sn === t.sn
7613              ) {
7614                var s = e.stats,
7615                  o = i[t.level],
7616                  l = o.details;
7617                if (
7618                  ((this.bitrateTest = !1),
7619                  (this.stats = s),
7620                  u.b.log(
7621                    "Loaded " +
7622                      t.sn +
7623                      " of [" +
7624                      l.startSN +
7625                      " ," +
7626                      l.endSN +
7627                      "],level " +
7628                      t.level
7629                  ),
7630                  n.bitrateTest && r.nextLoadLevel)
7631                )
7632                  (this.state = me),
7633                    (this.startFragRequested = !1),
7634                    (s.tparsed = s.tbuffered = window.performance.now()),
7635                    r.trigger(d.a.FRAG_BUFFERED, {
7636                      stats: s,
7637                      frag: t,
7638                      id: "main",
7639                    }),
7640                    this.tick();
7641                else if ("initSegment" === n.sn)
7642                  (this.state = me),
7643                    (s.tparsed = s.tbuffered = window.performance.now()),
7644                    (l.initSegment.data = e.payload),
7645                    r.trigger(d.a.FRAG_BUFFERED, {
7646                      stats: s,
7647                      frag: t,
7648                      id: "main",
7649                    }),
7650                    this.tick();
7651                else {
7652                  u.b.log(
7653                    "Parsing " +
7654                      t.sn +
7655                      " of [" +
7656                      l.startSN +
7657                      " ," +
7658                      l.endSN +
7659                      "],level " +
7660                      t.level +
7661                      ", cc " +
7662                      t.cc
7663                  ),
7664                    (this.state = _e),
7665                    (this.pendingBuffering = !0),
7666                    (this.appended = !1),
7667                    n.bitrateTest &&
7668                      ((n.bitrateTest = !1),
7669                      this.fragmentTracker.onFragLoaded({ frag: n }));
7670                  var c = !(a && a.seeking) && (l.PTSKnown || !l.live),
7671                    h = l.initSegment ? l.initSegment.data : [],
7672                    f = this._getAudioCodec(o);
7673                  (this.demuxer = this.demuxer || new J(this.hls, "main")).push(
7674                    e.payload,
7675                    h,
7676                    f,
7677                    o.videoCodec,
7678                    t,
7679                    l.totalduration,
7680                    c
7681                  );
7682                }
7683              }
7684              this.fragLoadError = 0;
7685            }),
7686            (h.onFragParsingInitSegment = function (e) {
7687              var t = this.fragCurrent,
7688                r = e.frag;
7689              if (
7690                t &&
7691                "main" === e.id &&
7692                r.sn === t.sn &&
7693                r.level === t.level &&
7694                this.state === _e
7695              ) {
7696                var i,
7697                  a,
7698                  n = e.tracks;
7699                if (
7700                  (n.audio && this.altAudio && delete n.audio, (a = n.audio))
7701                ) {
7702                  var s = this.levels[this.level].audioCodec,
7703                    o = navigator.userAgent.toLowerCase();
7704                  s &&
7705                    this.audioCodecSwap &&
7706                    (u.b.log("swapping playlist audio codec"),
7707                    (s =
7708                      -1 !== s.indexOf("mp4a.40.5")
7709                        ? "mp4a.40.2"
7710                        : "mp4a.40.5")),
7711                    this.audioCodecSwitch &&
7712                      1 !== a.metadata.channelCount &&
7713                      -1 === o.indexOf("firefox") &&
7714                      (s = "mp4a.40.5"),
7715                    -1 !== o.indexOf("android") &&
7716                      "audio/mpeg" !== a.container &&
7717                      ((s = "mp4a.40.2"),
7718                      u.b.log("Android: force audio codec to " + s)),
7719                    (a.levelCodec = s),
7720                    (a.id = e.id);
7721                }
7722                for (i in ((a = n.video) &&
7723                  ((a.levelCodec = this.levels[this.level].videoCodec),
7724                  (a.id = e.id)),
7725                this.hls.trigger(d.a.BUFFER_CODECS, n),
7726                n)) {
7727                  (a = n[i]),
7728                    u.b.log(
7729                      "main track:" +
7730                        i +
7731                        ",container:" +
7732                        a.container +
7733                        ",codecs[level/parsed]=[" +
7734                        a.levelCodec +
7735                        "/" +
7736                        a.codec +
7737                        "]"
7738                    );
7739                  var l = a.initSegment;
7740                  l &&
7741                    ((this.appended = !0),
7742                    (this.pendingBuffering = !0),
7743                    this.hls.trigger(d.a.BUFFER_APPENDING, {
7744                      type: i,
7745                      data: l,
7746                      parent: "main",
7747                      content: "initSegment",
7748                    }));
7749                }
7750                this.tick();
7751              }
7752            }),
7753            (h.onFragParsingData = function (e) {
7754              var t = this,
7755                r = this.fragCurrent,
7756                i = e.frag;
7757              if (
7758                r &&
7759                "main" === e.id &&
7760                i.sn === r.sn &&
7761                i.level === r.level &&
7762                ("audio" !== e.type || !this.altAudio) &&
7763                this.state === _e
7764              ) {
7765                var a = this.levels[this.level],
7766                  n = r;
7767                if (
7768                  (Object(l.a)(e.endPTS) ||
7769                    ((e.endPTS = e.startPTS + r.duration),
7770                    (e.endDTS = e.startDTS + r.duration)),
7771                  !0 === e.hasAudio && n.addElementaryStream(p.AUDIO),
7772                  !0 === e.hasVideo && n.addElementaryStream(p.VIDEO),
7773                  u.b.log(
7774                    "Parsed " +
7775                      e.type +
7776                      ",PTS:[" +
7777                      e.startPTS.toFixed(3) +
7778                      "," +
7779                      e.endPTS.toFixed(3) +
7780                      "],DTS:[" +
7781                      e.startDTS.toFixed(3) +
7782                      "/" +
7783                      e.endDTS.toFixed(3) +
7784                      "],nb:" +
7785                      e.nb +
7786                      ",dropped:" +
7787                      (e.dropped || 0)
7788                  ),
7789                  "video" === e.type)
7790                )
7791                  if (((n.dropped = e.dropped), n.dropped))
7792                    if (n.backtracked)
7793                      u.b.warn(
7794                        "Already backtracked on this fragment, appending with the gap",
7795                        n.sn
7796                      );
7797                    else {
7798                      var s = a.details;
7799                      if (!s || n.sn !== s.startSN)
7800                        return (
7801                          u.b.warn(
7802                            "missing video frame(s), backtracking fragment",
7803                            n.sn
7804                          ),
7805                          this.fragmentTracker.removeFragment(n),
7806                          (n.backtracked = !0),
7807                          (this.nextLoadPosition = e.startPTS),
7808                          (this.state = me),
7809                          (this.fragPrevious = n),
7810                          void this.tick()
7811                        );
7812                      u.b.warn(
7813                        "missing video frame(s) on first frag, appending with gap",
7814                        n.sn
7815                      );
7816                    }
7817                  else n.backtracked = !1;
7818                var o = te(
7819                    a.details,
7820                    n,
7821                    e.startPTS,
7822                    e.endPTS,
7823                    e.startDTS,
7824                    e.endDTS
7825                  ),
7826                  c = this.hls;
7827                c.trigger(d.a.LEVEL_PTS_UPDATED, {
7828                  details: a.details,
7829                  level: this.level,
7830                  drift: o,
7831                  type: e.type,
7832                  start: e.startPTS,
7833                  end: e.endPTS,
7834                }),
7835                  [e.data1, e.data2].forEach(function (r) {
7836                    r &&
7837                      r.length &&
7838                      t.state === _e &&
7839                      ((t.appended = !0),
7840                      (t.pendingBuffering = !0),
7841                      c.trigger(d.a.BUFFER_APPENDING, {
7842                        type: e.type,
7843                        data: r,
7844                        parent: "main",
7845                        content: "data",
7846                      }));
7847                  }),
7848                  this.tick();
7849              }
7850            }),
7851            (h.onFragParsed = function (e) {
7852              var t = this.fragCurrent,
7853                r = e.frag;
7854              t &&
7855                "main" === e.id &&
7856                r.sn === t.sn &&
7857                r.level === t.level &&
7858                this.state === _e &&
7859                ((this.stats.tparsed = window.performance.now()),
7860                (this.state = Ae),
7861                this._checkAppendedParsed());
7862            }),
7863            (h.onAudioTrackSwitching = function (e) {
7864              var t = !!e.url,
7865                r = e.id;
7866              if (!t) {
7867                if (this.mediaBuffer !== this.media) {
7868                  u.b.log(
7869                    "switching on main audio, use media.buffered to schedule main fragment loading"
7870                  ),
7871                    (this.mediaBuffer = this.media);
7872                  var i = this.fragCurrent;
7873                  i.loader &&
7874                    (u.b.log(
7875                      "switching to main audio track, cancel main fragment load"
7876                    ),
7877                    i.loader.abort()),
7878                    (this.fragCurrent = null),
7879                    (this.fragPrevious = null),
7880                    this.demuxer &&
7881                      (this.demuxer.destroy(), (this.demuxer = null)),
7882                    (this.state = me);
7883                }
7884                var a = this.hls;
7885                a.trigger(d.a.BUFFER_FLUSHING, {
7886                  startOffset: 0,
7887                  endOffset: Number.POSITIVE_INFINITY,
7888                  type: "audio",
7889                }),
7890                  a.trigger(d.a.AUDIO_TRACK_SWITCHED, { id: r }),
7891                  (this.altAudio = !1);
7892              }
7893            }),
7894            (h.onAudioTrackSwitched = function (e) {
7895              var t = e.id,
7896                r = !!this.hls.audioTracks[t].url;
7897              if (r) {
7898                var i = this.videoBuffer;
7899                i &&
7900                  this.mediaBuffer !== i &&
7901                  (u.b.log(
7902                    "switching on alternate audio, use video.buffered to schedule main fragment loading"
7903                  ),
7904                  (this.mediaBuffer = i));
7905              }
7906              (this.altAudio = r), this.tick();
7907            }),
7908            (h.onBufferCreated = function (e) {
7909              var t,
7910                r,
7911                i = e.tracks,
7912                a = !1;
7913              for (var n in i) {
7914                var s = i[n];
7915                "main" === s.id
7916                  ? ((r = n),
7917                    (t = s),
7918                    "video" === n && (this.videoBuffer = i[n].buffer))
7919                  : (a = !0);
7920              }
7921              a && t
7922                ? (u.b.log(
7923                    "alternate track found, use " +
7924                      r +
7925                      ".buffered to schedule main fragment loading"
7926                  ),
7927                  (this.mediaBuffer = t.buffer))
7928                : (this.mediaBuffer = this.media);
7929            }),
7930            (h.onBufferAppended = function (e) {
7931              if ("main" === e.parent) {
7932                var t = this.state;
7933                (t !== _e && t !== Ae) ||
7934                  ((this.pendingBuffering = e.pending > 0),
7935                  this._checkAppendedParsed());
7936              }
7937            }),
7938            (h._checkAppendedParsed = function () {
7939              if (
7940                !(this.state !== Ae || (this.appended && this.pendingBuffering))
7941              ) {
7942                var e = this.fragCurrent;
7943                if (e) {
7944                  var t = this.mediaBuffer ? this.mediaBuffer : this.media;
7945                  u.b.log("main buffered : " + ne.toString(t.buffered)),
7946                    (this.fragPrevious = e);
7947                  var r = this.stats;
7948                  (r.tbuffered = window.performance.now()),
7949                    (this.fragLastKbps = Math.round(
7950                      (8 * r.total) / (r.tbuffered - r.tfirst)
7951                    )),
7952                    this.hls.trigger(d.a.FRAG_BUFFERED, {
7953                      stats: r,
7954                      frag: e,
7955                      id: "main",
7956                    }),
7957                    (this.state = me);
7958                }
7959                this.tick();
7960              }
7961            }),
7962            (h.onError = function (e) {
7963              var t = e.frag || this.fragCurrent;
7964              if (!t || "main" === t.type) {
7965                var r =
7966                  !!this.media &&
7967                  H.isBuffered(this.media, this.media.currentTime) &&
7968                  H.isBuffered(this.media, this.media.currentTime + 0.5);
7969                switch (e.details) {
7970                  case o.a.FRAG_LOAD_ERROR:
7971                  case o.a.FRAG_LOAD_TIMEOUT:
7972                  case o.a.KEY_LOAD_ERROR:
7973                  case o.a.KEY_LOAD_TIMEOUT:
7974                    if (!e.fatal)
7975                      if (
7976                        this.fragLoadError + 1 <=
7977                        this.config.fragLoadingMaxRetry
7978                      ) {
7979                        var i = Math.min(
7980                          Math.pow(2, this.fragLoadError) *
7981                            this.config.fragLoadingRetryDelay,
7982                          this.config.fragLoadingMaxRetryTimeout
7983                        );
7984                        u.b.warn(
7985                          "mediaController: frag loading failed, retry in " +
7986                            i +
7987                            " ms"
7988                        ),
7989                          (this.retryDate = window.performance.now() + i),
7990                          this.loadedmetadata ||
7991                            ((this.startFragRequested = !1),
7992                            (this.nextLoadPosition = this.startPosition)),
7993                          this.fragLoadError++,
7994                          (this.state = Ee);
7995                      } else
7996                        u.b.error(
7997                          "mediaController: " +
7998                            e.details +
7999                            " reaches max retry, redispatch as fatal ..."
8000                        ),
8001                          (e.fatal = !0),
8002                          (this.state = Le);
8003                    break;
8004                  case o.a.LEVEL_LOAD_ERROR:
8005                  case o.a.LEVEL_LOAD_TIMEOUT:
8006                    this.state !== Le &&
8007                      (e.fatal
8008                        ? ((this.state = Le),
8009                          u.b.warn(
8010                            "streamController: " +
8011                              e.details +
8012                              ",switch to " +
8013                              this.state +
8014                              " state ..."
8015                          ))
8016                        : e.levelRetry ||
8017                          this.state !== De ||
8018                          (this.state = me));
8019                    break;
8020                  case o.a.BUFFER_FULL_ERROR:
8021                    "main" !== e.parent ||
8022                      (this.state !== _e && this.state !== Ae) ||
8023                      (r
8024                        ? (this._reduceMaxBufferLength(
8025                            this.config.maxBufferLength
8026                          ),
8027                          (this.state = me))
8028                        : (u.b.warn(
8029                            "buffer full error also media.currentTime is not buffered, flush everything"
8030                          ),
8031                          (this.fragCurrent = null),
8032                          this.flushMainBuffer(0, Number.POSITIVE_INFINITY)));
8033                }
8034              }
8035            }),
8036            (h._reduceMaxBufferLength = function (e) {
8037              var t = this.config;
8038              return (
8039                t.maxMaxBufferLength >= e &&
8040                ((t.maxMaxBufferLength /= 2),
8041                u.b.warn(
8042                  "main:reduce max buffer length to " +
8043                    t.maxMaxBufferLength +
8044                    "s"
8045                ),
8046                !0)
8047              );
8048            }),
8049            (h._checkBuffer = function () {
8050              var e = this.media;
8051              if (e && 0 !== e.readyState) {
8052                var t = (this.mediaBuffer ? this.mediaBuffer : e).buffered;
8053                !this.loadedmetadata && t.length
8054                  ? ((this.loadedmetadata = !0), this._seekToStartPos())
8055                  : this.immediateSwitch
8056                  ? this.immediateLevelSwitchEnd()
8057                  : this.gapController.poll(this.lastCurrentTime, t);
8058              }
8059            }),
8060            (h.onFragLoadEmergencyAborted = function () {
8061              (this.state = me),
8062                this.loadedmetadata ||
8063                  ((this.startFragRequested = !1),
8064                  (this.nextLoadPosition = this.startPosition)),
8065                this.tick();
8066            }),
8067            (h.onBufferFlushed = function () {
8068              var e = this.mediaBuffer ? this.mediaBuffer : this.media;
8069              e &&
8070                this.fragmentTracker.detectEvictedFragments(
8071                  p.VIDEO,
8072                  e.buffered
8073                ),
8074                (this.state = me),
8075                (this.fragPrevious = null);
8076            }),
8077            (h.swapAudioCodec = function () {
8078              this.audioCodecSwap = !this.audioCodecSwap;
8079            }),
8080            (h._seekToStartPos = function () {
8081              var e = this.media,
8082                t = e.currentTime,
8083                r = e.seeking ? t : this.startPosition;
8084              t !== r &&
8085                r >= 0 &&
8086                (u.b.log(
8087                  "target start position not buffered, seek to buffered.start(0) " +
8088                    r +
8089                    " from current time " +
8090                    t +
8091                    " "
8092                ),
8093                (e.currentTime = r));
8094            }),
8095            (h._getAudioCodec = function (e) {
8096              var t = this.config.defaultAudioCodec || e.audioCodec;
8097              return (
8098                this.audioCodecSwap &&
8099                  (u.b.log("swapping playlist audio codec"),
8100                  t &&
8101                    (t =
8102                      -1 !== t.indexOf("mp4a.40.5")
8103                        ? "mp4a.40.2"
8104                        : "mp4a.40.5")),
8105                t
8106              );
8107            }),
8108            (a = i),
8109            (s = [
8110              {
8111                key: "state",
8112                set: function (e) {
8113                  if (this.state !== e) {
8114                    var t = this.state;
8115                    (this._state = e),
8116                      u.b.log("main stream-controller: " + t + "->" + e),
8117                      this.hls.trigger(d.a.STREAM_STATE_TRANSITION, {
8118                        previousState: t,
8119                        nextState: e,
8120                      });
8121                  }
8122                },
8123                get: function () {
8124                  return this._state;
8125                },
8126              },
8127              {
8128                key: "currentLevel",
8129                get: function () {
8130                  var e = this.media;
8131                  if (e) {
8132                    var t = this.getBufferedFrag(e.currentTime);
8133                    if (t) return t.level;
8134                  }
8135                  return -1;
8136                },
8137              },
8138              {
8139                key: "nextBufferedFrag",
8140                get: function () {
8141                  var e = this.media;
8142                  return e
8143                    ? this.followingBufferedFrag(
8144                        this.getBufferedFrag(e.currentTime)
8145                      )
8146                    : null;
8147                },
8148              },
8149              {
8150                key: "nextLevel",
8151                get: function () {
8152                  var e = this.nextBufferedFrag;
8153                  return e ? e.level : -1;
8154                },
8155              },
8156              {
8157                key: "liveSyncPosition",
8158                get: function () {
8159                  return this._liveSyncPosition;
8160                },
8161                set: function (e) {
8162                  this._liveSyncPosition = e;
8163                },
8164              },
8165            ]) && Oe(a.prototype, s),
8166            c && Oe(a, c),
8167            i
8168          );
8169        })(Ce);
8170        function Pe(e, t) {
8171          for (var r = 0; r < t.length; r++) {
8172            var i = t[r];
8173            (i.enumerable = i.enumerable || !1),
8174              (i.configurable = !0),
8175              "value" in i && (i.writable = !0),
8176              Object.defineProperty(e, i.key, i);
8177          }
8178        }
8179        window.performance;
8180        var xe,
8181          Me = (function (e) {
8182            var t, r;
8183            function i(t) {
8184              var r;
8185              return (
8186                ((r =
8187                  e.call(
8188                    this,
8189                    t,
8190                    d.a.MANIFEST_LOADED,
8191                    d.a.LEVEL_LOADED,
8192                    d.a.AUDIO_TRACK_SWITCHED,
8193                    d.a.FRAG_LOADED,
8194                    d.a.ERROR
8195                  ) || this).canload = !1),
8196                (r.currentLevelIndex = null),
8197                (r.manualLevelIndex = -1),
8198                (r.timer = null),
8199                (xe = /chrome|firefox/.test(navigator.userAgent.toLowerCase())),
8200                r
8201              );
8202            }
8203            (r = e),
8204              ((t = i).prototype = Object.create(r.prototype)),
8205              (t.prototype.constructor = t),
8206              (t.__proto__ = r);
8207            var a,
8208              n,
8209              s,
8210              l = i.prototype;
8211            return (
8212              (l.onHandlerDestroying = function () {
8213                this.clearTimer(), (this.manualLevelIndex = -1);
8214              }),
8215              (l.clearTimer = function () {
8216                null !== this.timer &&
8217                  (clearTimeout(this.timer), (this.timer = null));
8218              }),
8219              (l.startLoad = function () {
8220                var e = this._levels;
8221                (this.canload = !0),
8222                  (this.levelRetryCount = 0),
8223                  e &&
8224                    e.forEach(function (e) {
8225                      e.loadError = 0;
8226                      var t = e.details;
8227                      t && t.live && (e.details = void 0);
8228                    }),
8229                  null !== this.timer && this.loadLevel();
8230              }),
8231              (l.stopLoad = function () {
8232                this.canload = !1;
8233              }),
8234              (l.onManifestLoaded = function (e) {
8235                var t,
8236                  r = [],
8237                  i = [],
8238                  a = {},
8239                  n = null,
8240                  s = !1,
8241                  l = !1;
8242                if (
8243                  (e.levels.forEach(function (e) {
8244                    var t = e.attrs;
8245                    (e.loadError = 0),
8246                      (e.fragmentError = !1),
8247                      (s = s || !!e.videoCodec),
8248                      (l = l || !!e.audioCodec),
8249                      xe &&
8250                        e.audioCodec &&
8251                        -1 !== e.audioCodec.indexOf("mp4a.40.34") &&
8252                        (e.audioCodec = void 0),
8253                      (n = a[e.bitrate])
8254                        ? n.url.push(e.url)
8255                        : ((e.url = [e.url]),
8256                          (e.urlId = 0),
8257                          (a[e.bitrate] = e),
8258                          r.push(e)),
8259                      t &&
8260                        (t.AUDIO && ((l = !0), Z(n || e, "audio", t.AUDIO)),
8261                        t.SUBTITLES && Z(n || e, "text", t.SUBTITLES));
8262                  }),
8263                  s &&
8264                    l &&
8265                    (r = r.filter(function (e) {
8266                      return !!e.videoCodec;
8267                    })),
8268                  (r = r.filter(function (e) {
8269                    var t = e.audioCodec,
8270                      r = e.videoCodec;
8271                    return (!t || R(t, "audio")) && (!r || R(r, "video"));
8272                  })),
8273                  e.audioTracks &&
8274                    (i = e.audioTracks.filter(function (e) {
8275                      return !e.audioCodec || R(e.audioCodec, "audio");
8276                    })).forEach(function (e, t) {
8277                      e.id = t;
8278                    }),
8279                  r.length > 0)
8280                ) {
8281                  (t = r[0].bitrate),
8282                    r.sort(function (e, t) {
8283                      return e.bitrate - t.bitrate;
8284                    }),
8285                    (this._levels = r);
8286                  for (var c = 0; c < r.length; c++)
8287                    if (r[c].bitrate === t) {
8288                      (this._firstLevel = c),
8289                        u.b.log(
8290                          "manifest loaded," +
8291                            r.length +
8292                            " level(s) found, first bitrate:" +
8293                            t
8294                        );
8295                      break;
8296                    }
8297                  this.hls.trigger(d.a.MANIFEST_PARSED, {
8298                    levels: r,
8299                    audioTracks: i,
8300                    firstLevel: this._firstLevel,
8301                    stats: e.stats,
8302                    audio: l,
8303                    video: s,
8304                    altAudio: i.some(function (e) {
8305                      return !!e.url;
8306                    }),
8307                  });
8308                } else
8309                  this.hls.trigger(d.a.ERROR, {
8310                    type: o.b.MEDIA_ERROR,
8311                    details: o.a.MANIFEST_INCOMPATIBLE_CODECS_ERROR,
8312                    fatal: !0,
8313                    url: this.hls.url,
8314                    reason: "no level with compatible codecs found in manifest",
8315                  });
8316              }),
8317              (l.setLevelInternal = function (e) {
8318                var t = this._levels,
8319                  r = this.hls;
8320                if (e >= 0 && e < t.length) {
8321                  if ((this.clearTimer(), this.currentLevelIndex !== e)) {
8322                    u.b.log("switching to level " + e),
8323                      (this.currentLevelIndex = e);
8324                    var i = t[e];
8325                    (i.level = e), r.trigger(d.a.LEVEL_SWITCHING, i);
8326                  }
8327                  var a = t[e],
8328                    n = a.details;
8329                  if (!n || n.live) {
8330                    var s = a.urlId;
8331                    r.trigger(d.a.LEVEL_LOADING, {
8332                      url: a.url[s],
8333                      level: e,
8334                      id: s,
8335                    });
8336                  }
8337                } else
8338                  r.trigger(d.a.ERROR, {
8339                    type: o.b.OTHER_ERROR,
8340                    details: o.a.LEVEL_SWITCH_ERROR,
8341                    level: e,
8342                    fatal: !1,
8343                    reason: "invalid level idx",
8344                  });
8345              }),
8346              (l.onError = function (e) {
8347                if (e.fatal) e.type === o.b.NETWORK_ERROR && this.clearTimer();
8348                else {
8349                  var t,
8350                    r = !1,
8351                    i = !1;
8352                  switch (e.details) {
8353                    case o.a.FRAG_LOAD_ERROR:
8354                    case o.a.FRAG_LOAD_TIMEOUT:
8355                    case o.a.KEY_LOAD_ERROR:
8356                    case o.a.KEY_LOAD_TIMEOUT:
8357                      (t = e.frag.level), (i = !0);
8358                      break;
8359                    case o.a.LEVEL_LOAD_ERROR:
8360                    case o.a.LEVEL_LOAD_TIMEOUT:
8361                      (t = e.context.level), (r = !0);
8362                      break;
8363                    case o.a.REMUX_ALLOC_ERROR:
8364                      (t = e.level), (r = !0);
8365                  }
8366                  void 0 !== t && this.recoverLevel(e, t, r, i);
8367                }
8368              }),
8369              (l.recoverLevel = function (e, t, r, i) {
8370                var a,
8371                  n,
8372                  s,
8373                  o = this,
8374                  l = this.hls.config,
8375                  d = e.details,
8376                  c = this._levels[t];
8377                if ((c.loadError++, (c.fragmentError = i), r)) {
8378                  if (!(this.levelRetryCount + 1 <= l.levelLoadingMaxRetry))
8379                    return (
8380                      u.b.error(
8381                        "level controller, cannot recover from " + d + " error"
8382                      ),
8383                      (this.currentLevelIndex = null),
8384                      this.clearTimer(),
8385                      void (e.fatal = !0)
8386                    );
8387                  (n = Math.min(
8388                    Math.pow(2, this.levelRetryCount) *
8389                      l.levelLoadingRetryDelay,
8390                    l.levelLoadingMaxRetryTimeout
8391                  )),
8392                    (this.timer = setTimeout(function () {
8393                      return o.loadLevel();
8394                    }, n)),
8395                    (e.levelRetry = !0),
8396                    this.levelRetryCount++,
8397                    u.b.warn(
8398                      "level controller, " +
8399                        d +
8400                        ", retry in " +
8401                        n +
8402                        " ms, current retry count is " +
8403                        this.levelRetryCount
8404                    );
8405                }
8406                (r || i) &&
8407                  ((a = c.url.length) > 1 && c.loadError < a
8408                    ? ((c.urlId = (c.urlId + 1) % a),
8409                      (c.details = void 0),
8410                      u.b.warn(
8411                        "level controller, " +
8412                          d +
8413                          " for level " +
8414                          t +
8415                          ": switching to redundant URL-id " +
8416                          c.urlId
8417                      ))
8418                    : -1 === this.manualLevelIndex
8419                    ? ((s = 0 === t ? this._levels.length - 1 : t - 1),
8420                      u.b.warn("level controller, " + d + ": switch to " + s),
8421                      (this.hls.nextAutoLevel = this.currentLevelIndex = s))
8422                    : i &&
8423                      (u.b.warn(
8424                        "level controller, " + d + ": reload a fragment"
8425                      ),
8426                      (this.currentLevelIndex = null)));
8427              }),
8428              (l.onFragLoaded = function (e) {
8429                var t = e.frag;
8430                if (void 0 !== t && "main" === t.type) {
8431                  var r = this._levels[t.level];
8432                  void 0 !== r &&
8433                    ((r.fragmentError = !1),
8434                    (r.loadError = 0),
8435                    (this.levelRetryCount = 0));
8436                }
8437              }),
8438              (l.onLevelLoaded = function (e) {
8439                var t = this,
8440                  r = e.level,
8441                  i = e.details;
8442                if (r === this.currentLevelIndex) {
8443                  var a = this._levels[r];
8444                  if (
8445                    (a.fragmentError ||
8446                      ((a.loadError = 0), (this.levelRetryCount = 0)),
8447                    i.live)
8448                  ) {
8449                    var n = ae(a.details, i, e.stats.trequest);
8450                    u.b.log(
8451                      "live playlist, reload in " + Math.round(n) + " ms"
8452                    ),
8453                      (this.timer = setTimeout(function () {
8454                        return t.loadLevel();
8455                      }, n));
8456                  } else this.clearTimer();
8457                }
8458              }),
8459              (l.onAudioTrackSwitched = function (e) {
8460                var t = this.hls.audioTracks[e.id].groupId,
8461                  r = this.hls.levels[this.currentLevelIndex];
8462                if (r && r.audioGroupIds) {
8463                  for (var i = -1, a = 0; a < r.audioGroupIds.length; a++)
8464                    if (r.audioGroupIds[a] === t) {
8465                      i = a;
8466                      break;
8467                    }
8468                  i !== r.urlId && ((r.urlId = i), this.startLoad());
8469                }
8470              }),
8471              (l.loadLevel = function () {
8472                if (
8473                  (u.b.debug("call to loadLevel"),
8474                  null !== this.currentLevelIndex && this.canload)
8475                ) {
8476                  var e = this._levels[this.currentLevelIndex];
8477                  if ("object" == typeof e && e.url.length > 0) {
8478                    var t = this.currentLevelIndex,
8479                      r = e.urlId,
8480                      i = e.url[r];
8481                    u.b.log(
8482                      "Attempt loading level index " + t + " with URL-id " + r
8483                    ),
8484                      this.hls.trigger(d.a.LEVEL_LOADING, {
8485                        url: i,
8486                        level: t,
8487                        id: r,
8488                      });
8489                  }
8490                }
8491              }),
8492              (a = i),
8493              (n = [
8494                {
8495                  key: "levels",
8496                  get: function () {
8497                    return this._levels;
8498                  },
8499                },
8500                {
8501                  key: "level",
8502                  get: function () {
8503                    return this.currentLevelIndex;
8504                  },
8505                  set: function (e) {
8506                    var t = this._levels;
8507                    t &&
8508                      ((e = Math.min(e, t.length - 1)),
8509                      (this.currentLevelIndex === e && t[e].details) ||
8510                        this.setLevelInternal(e));
8511                  },
8512                },
8513                {
8514                  key: "manualLevel",
8515                  get: function () {
8516                    return this.manualLevelIndex;
8517                  },
8518                  set: function (e) {
8519                    (this.manualLevelIndex = e),
8520                      void 0 === this._startLevel && (this._startLevel = e),
8521                      -1 !== e && (this.level = e);
8522                  },
8523                },
8524                {
8525                  key: "firstLevel",
8526                  get: function () {
8527                    return this._firstLevel;
8528                  },
8529                  set: function (e) {
8530                    this._firstLevel = e;
8531                  },
8532                },
8533                {
8534                  key: "startLevel",
8535                  get: function () {
8536                    if (void 0 === this._startLevel) {
8537                      var e = this.hls.config.startLevel;
8538                      return void 0 !== e ? e : this._firstLevel;
8539                    }
8540                    return this._startLevel;
8541                  },
8542                  set: function (e) {
8543                    this._startLevel = e;
8544                  },
8545                },
8546                {
8547                  key: "nextLoadLevel",
8548                  get: function () {
8549                    return -1 !== this.manualLevelIndex
8550                      ? this.manualLevelIndex
8551                      : this.hls.nextAutoLevel;
8552                  },
8553                  set: function (e) {
8554                    (this.level = e),
8555                      -1 === this.manualLevelIndex &&
8556                        (this.hls.nextAutoLevel = e);
8557                  },
8558                },
8559              ]) && Pe(a.prototype, n),
8560              s && Pe(a, s),
8561              i
8562            );
8563          })(h),
8564          Fe = r(4);
8565        function Ue(e, t) {
8566          var r;
8567          try {
8568            r = new Event("addtrack");
8569          } catch (e) {
8570            (r = document.createEvent("Event")).initEvent("addtrack", !1, !1);
8571          }
8572          (r.track = e), t.dispatchEvent(r);
8573        }
8574        function Ne(e) {
8575          if (e && e.cues) for (; e.cues.length > 0; ) e.removeCue(e.cues[0]);
8576        }
8577        var Be = (function (e) {
8578          var t, r;
8579          function i(t) {
8580            var r;
8581            return (
8582              ((r =
8583                e.call(
8584                  this,
8585                  t,
8586                  d.a.MEDIA_ATTACHED,
8587                  d.a.MEDIA_DETACHING,
8588                  d.a.FRAG_PARSING_METADATA,
8589                  d.a.LIVE_BACK_BUFFER_REACHED
8590                ) || this).id3Track = void 0),
8591              (r.media = void 0),
8592              r
8593            );
8594          }
8595          (r = e),
8596            ((t = i).prototype = Object.create(r.prototype)),
8597            (t.prototype.constructor = t),
8598            (t.__proto__ = r);
8599          var a = i.prototype;
8600          return (
8601            (a.destroy = function () {
8602              h.prototype.destroy.call(this);
8603            }),
8604            (a.onMediaAttached = function (e) {
8605              (this.media = e.media), this.media;
8606            }),
8607            (a.onMediaDetaching = function () {
8608              Ne(this.id3Track),
8609                (this.id3Track = void 0),
8610                (this.media = void 0);
8611            }),
8612            (a.getID3Track = function (e) {
8613              for (var t = 0; t < e.length; t++) {
8614                var r = e[t];
8615                if ("metadata" === r.kind && "id3" === r.label)
8616                  return Ue(r, this.media), r;
8617              }
8618              return this.media.addTextTrack("metadata", "id3");
8619            }),
8620            (a.onFragParsingMetadata = function (e) {
8621              var t = e.frag,
8622                r = e.samples;
8623              this.id3Track ||
8624                ((this.id3Track = this.getID3Track(this.media.textTracks)),
8625                (this.id3Track.mode = "hidden"));
8626              for (
8627                var i =
8628                    window.WebKitDataCue ||
8629                    window.VTTCue ||
8630                    window.TextTrackCue,
8631                  a = 0;
8632                a < r.length;
8633                a++
8634              ) {
8635                var n = Fe.a.getID3Frames(r[a].data);
8636                if (n) {
8637                  var s = r[a].pts,
8638                    o = a < r.length - 1 ? r[a + 1].pts : t.endPTS;
8639                  s === o
8640                    ? (o += 1e-4)
8641                    : s > o &&
8642                      (u.b.warn(
8643                        "detected an id3 sample with endTime < startTime, adjusting endTime to (startTime + 0.25)"
8644                      ),
8645                      (o = s + 0.25));
8646                  for (var l = 0; l < n.length; l++) {
8647                    var d = n[l];
8648                    if (!Fe.a.isTimeStampFrame(d)) {
8649                      var c = new i(s, o, "");
8650                      (c.value = d), this.id3Track.addCue(c);
8651                    }
8652                  }
8653                }
8654              }
8655            }),
8656            (a.onLiveBackBufferReached = function (e) {
8657              var t = e.bufferEnd,
8658                r = this.id3Track;
8659              if (r && r.cues && r.cues.length) {
8660                var i = (function (e, t) {
8661                  if (t < e[0].endTime) return e[0];
8662                  if (t > e[e.length - 1].endTime) return e[e.length - 1];
8663                  for (var r = 0, i = e.length - 1; r <= i; ) {
8664                    var a = Math.floor((i + r) / 2);
8665                    if (t < e[a].endTime) i = a - 1;
8666                    else {
8667                      if (!(t > e[a].endTime)) return e[a];
8668                      r = a + 1;
8669                    }
8670                  }
8671                  return e[r].endTime - t < t - e[i].endTime ? e[r] : e[i];
8672                })(r.cues, t);
8673                if (i) for (; r.cues[0] !== i; ) r.removeCue(r.cues[0]);
8674              }
8675            }),
8676            i
8677          );
8678        })(h);
8679        var Ge = (function () {
8680            function e(e) {
8681              (this.alpha_ = void 0),
8682                (this.estimate_ = void 0),
8683                (this.totalWeight_ = void 0),
8684                (this.alpha_ = e ? Math.exp(Math.log(0.5) / e) : 0),
8685                (this.estimate_ = 0),
8686                (this.totalWeight_ = 0);
8687            }
8688            var t = e.prototype;
8689            return (
8690              (t.sample = function (e, t) {
8691                var r = Math.pow(this.alpha_, e);
8692                (this.estimate_ = t * (1 - r) + r * this.estimate_),
8693                  (this.totalWeight_ += e);
8694              }),
8695              (t.getTotalWeight = function () {
8696                return this.totalWeight_;
8697              }),
8698              (t.getEstimate = function () {
8699                if (this.alpha_) {
8700                  var e = 1 - Math.pow(this.alpha_, this.totalWeight_);
8701                  return this.estimate_ / e;
8702                }
8703                return this.estimate_;
8704              }),
8705              e
8706            );
8707          })(),
8708          Ke = (function () {
8709            function e(e, t, r, i) {
8710              (this.hls = void 0),
8711                (this.defaultEstimate_ = void 0),
8712                (this.minWeight_ = void 0),
8713                (this.minDelayMs_ = void 0),
8714                (this.slow_ = void 0),
8715                (this.fast_ = void 0),
8716                (this.hls = e),
8717                (this.defaultEstimate_ = i),
8718                (this.minWeight_ = 0.001),
8719                (this.minDelayMs_ = 50),
8720                (this.slow_ = new Ge(t)),
8721                (this.fast_ = new Ge(r));
8722            }
8723            var t = e.prototype;
8724            return (
8725              (t.sample = function (e, t) {
8726                var r = (e = Math.max(e, this.minDelayMs_)) / 1e3,
8727                  i = (8 * t) / r;
8728                this.fast_.sample(r, i), this.slow_.sample(r, i);
8729              }),
8730              (t.canEstimate = function () {
8731                var e = this.fast_;
8732                return e && e.getTotalWeight() >= this.minWeight_;
8733              }),
8734              (t.getEstimate = function () {
8735                return this.canEstimate()
8736                  ? Math.min(this.fast_.getEstimate(), this.slow_.getEstimate())
8737                  : this.defaultEstimate_;
8738              }),
8739              (t.destroy = function () {}),
8740              e
8741            );
8742          })();
8743        function je(e, t) {
8744          for (var r = 0; r < t.length; r++) {
8745            var i = t[r];
8746            (i.enumerable = i.enumerable || !1),
8747              (i.configurable = !0),
8748              "value" in i && (i.writable = !0),
8749              Object.defineProperty(e, i.key, i);
8750          }
8751        }
8752        var He = window.performance,
8753          Ve = (function (e) {
8754            var t, r;
8755            function i(t) {
8756              var r;
8757              return (
8758                ((r =
8759                  e.call(
8760                    this,
8761                    t,
8762                    d.a.FRAG_LOADING,
8763                    d.a.FRAG_LOADED,
8764                    d.a.FRAG_BUFFERED,
8765                    d.a.ERROR
8766                  ) || this).lastLoadedFragLevel = 0),
8767                (r._nextAutoLevel = -1),
8768                (r.hls = t),
8769                (r.timer = null),
8770                (r._bwEstimator = null),
8771                (r.onCheck = r._abandonRulesCheck.bind(
8772                  (function (e) {
8773                    if (void 0 === e)
8774                      throw new ReferenceError(
8775                        "this hasn't been initialised - super() hasn't been called"
8776                      );
8777                    return e;
8778                  })(r)
8779                )),
8780                r
8781              );
8782            }
8783            (r = e),
8784              ((t = i).prototype = Object.create(r.prototype)),
8785              (t.prototype.constructor = t),
8786              (t.__proto__ = r);
8787            var a,
8788              n,
8789              s,
8790              c = i.prototype;
8791            return (
8792              (c.destroy = function () {
8793                this.clearTimer(), h.prototype.destroy.call(this);
8794              }),
8795              (c.onFragLoading = function (e) {
8796                var t = e.frag;
8797                if (
8798                  "main" === t.type &&
8799                  (this.timer ||
8800                    ((this.fragCurrent = t),
8801                    (this.timer = setInterval(this.onCheck, 100))),
8802                  !this._bwEstimator)
8803                ) {
8804                  var r,
8805                    i,
8806                    a = this.hls,
8807                    n = a.config,
8808                    s = t.level;
8809                  a.levels[s].details.live
8810                    ? ((r = n.abrEwmaFastLive), (i = n.abrEwmaSlowLive))
8811                    : ((r = n.abrEwmaFastVoD), (i = n.abrEwmaSlowVoD)),
8812                    (this._bwEstimator = new Ke(
8813                      a,
8814                      i,
8815                      r,
8816                      n.abrEwmaDefaultEstimate
8817                    ));
8818                }
8819              }),
8820              (c._abandonRulesCheck = function () {
8821                var e = this.hls,
8822                  t = e.media,
8823                  r = this.fragCurrent;
8824                if (r) {
8825                  var i = r.loader,
8826                    a = e.minAutoLevel;
8827                  if (!i || (i.stats && i.stats.aborted))
8828                    return (
8829                      u.b.warn(
8830                        "frag loader destroy or aborted, disarm abandonRules"
8831                      ),
8832                      this.clearTimer(),
8833                      void (this._nextAutoLevel = -1)
8834                    );
8835                  var n = i.stats;
8836                  if (
8837                    t &&
8838                    n &&
8839                    ((!t.paused && 0 !== t.playbackRate) || !t.readyState) &&
8840                    r.autoLevel &&
8841                    r.level
8842                  ) {
8843                    var s = He.now() - n.trequest,
8844                      o = Math.abs(t.playbackRate);
8845                    if (s > (500 * r.duration) / o) {
8846                      var l = e.levels,
8847                        c = Math.max(1, n.bw ? n.bw / 8 : (1e3 * n.loaded) / s),
8848                        h = l[r.level],
8849                        f = h.realBitrate
8850                          ? Math.max(h.realBitrate, h.bitrate)
8851                          : h.bitrate,
8852                        g = n.total
8853                          ? n.total
8854                          : Math.max(
8855                              n.loaded,
8856                              Math.round((r.duration * f) / 8)
8857                            ),
8858                        p = t.currentTime,
8859                        v = (g - n.loaded) / c,
8860                        m =
8861                          (H.bufferInfo(t, p, e.config.maxBufferHole).end - p) /
8862                          o;
8863                      if (m < (2 * r.duration) / o && v > m) {
8864                        var y;
8865                        for (y = r.level - 1; y > a; y--) {
8866                          var b = l[y].realBitrate
8867                            ? Math.max(l[y].realBitrate, l[y].bitrate)
8868                            : l[y].bitrate;
8869                          if ((r.duration * b) / (6.4 * c) < m) break;
8870                        }
8871                        void 0 < v &&
8872                          (u.b.warn(
8873                            "loading too slow, abort fragment loading and switch to level " +
8874                              y +
8875                              ":fragLoadedDelay[" +
8876                              y +
8877                              "]<fragLoadedDelay[" +
8878                              (r.level - 1) +
8879                              "];bufferStarvationDelay:" +
8880                              (void 0).toFixed(1) +
8881                              "<" +
8882                              v.toFixed(1) +
8883                              ":" +
8884                              m.toFixed(1)
8885                          ),
8886                          (e.nextLoadLevel = y),
8887                          this._bwEstimator.sample(s, n.loaded),
8888                          i.abort(),
8889                          this.clearTimer(),
8890                          e.trigger(d.a.FRAG_LOAD_EMERGENCY_ABORTED, {
8891                            frag: r,
8892                            stats: n,
8893                          }));
8894                      }
8895                    }
8896                  }
8897                }
8898              }),
8899              (c.onFragLoaded = function (e) {
8900                var t = e.frag;
8901                if ("main" === t.type && Object(l.a)(t.sn)) {
8902                  if (
8903                    (this.clearTimer(),
8904                    (this.lastLoadedFragLevel = t.level),
8905                    (this._nextAutoLevel = -1),
8906                    this.hls.config.abrMaxWithRealBitrate)
8907                  ) {
8908                    var r = this.hls.levels[t.level],
8909                      i = (r.loaded ? r.loaded.bytes : 0) + e.stats.loaded,
8910                      a = (r.loaded ? r.loaded.duration : 0) + e.frag.duration;
8911                    (r.loaded = { bytes: i, duration: a }),
8912                      (r.realBitrate = Math.round((8 * i) / a));
8913                  }
8914                  if (e.frag.bitrateTest) {
8915                    var n = e.stats;
8916                    (n.tparsed = n.tbuffered = n.tload), this.onFragBuffered(e);
8917                  }
8918                }
8919              }),
8920              (c.onFragBuffered = function (e) {
8921                var t = e.stats,
8922                  r = e.frag;
8923                if (
8924                  !0 !== t.aborted &&
8925                  "main" === r.type &&
8926                  Object(l.a)(r.sn) &&
8927                  (!r.bitrateTest || t.tload === t.tbuffered)
8928                ) {
8929                  var i = t.tparsed - t.trequest;
8930                  u.b.log(
8931                    "latency/loading/parsing/append/kbps:" +
8932                      Math.round(t.tfirst - t.trequest) +
8933                      "/" +
8934                      Math.round(t.tload - t.tfirst) +
8935                      "/" +
8936                      Math.round(t.tparsed - t.tload) +
8937                      "/" +
8938                      Math.round(t.tbuffered - t.tparsed) +
8939                      "/" +
8940                      Math.round((8 * t.loaded) / (t.tbuffered - t.trequest))
8941                  ),
8942                    this._bwEstimator.sample(i, t.loaded),
8943                    (t.bwEstimate = this._bwEstimator.getEstimate()),
8944                    r.bitrateTest
8945                      ? (this.bitrateTestDelay = i / 1e3)
8946                      : (this.bitrateTestDelay = 0);
8947                }
8948              }),
8949              (c.onError = function (e) {
8950                switch (e.details) {
8951                  case o.a.FRAG_LOAD_ERROR:
8952                  case o.a.FRAG_LOAD_TIMEOUT:
8953                    this.clearTimer();
8954                }
8955              }),
8956              (c.clearTimer = function () {
8957                clearInterval(this.timer), (this.timer = null);
8958              }),
8959              (c._findBestLevel = function (e, t, r, i, a, n, s, o, l) {
8960                for (var d = a; d >= i; d--) {
8961                  var c = l[d];
8962                  if (c) {
8963                    var h = c.details,
8964                      f = h ? h.totalduration / h.fragments.length : t,
8965                      g = !!h && h.live,
8966                      p = void 0;
8967                    p = d <= e ? s * r : o * r;
8968                    var v = l[d].realBitrate
8969                        ? Math.max(l[d].realBitrate, l[d].bitrate)
8970                        : l[d].bitrate,
8971                      m = (v * f) / p;
8972                    if (
8973                      (u.b.trace(
8974                        "level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: " +
8975                          d +
8976                          "/" +
8977                          Math.round(p) +
8978                          "/" +
8979                          v +
8980                          "/" +
8981                          f +
8982                          "/" +
8983                          n +
8984                          "/" +
8985                          m
8986                      ),
8987                      p > v && (!m || (g && !this.bitrateTestDelay) || m < n))
8988                    )
8989                      return d;
8990                  }
8991                }
8992                return -1;
8993              }),
8994              (a = i),
8995              (n = [
8996                {
8997                  key: "nextAutoLevel",
8998                  get: function () {
8999                    var e = this._nextAutoLevel,
9000                      t = this._bwEstimator;
9001                    if (!(-1 === e || (t && t.canEstimate()))) return e;
9002                    var r = this._nextABRAutoLevel;
9003                    return -1 !== e && (r = Math.min(e, r)), r;
9004                  },
9005                  set: function (e) {
9006                    this._nextAutoLevel = e;
9007                  },
9008                },
9009                {
9010                  key: "_nextABRAutoLevel",
9011                  get: function () {
9012                    var e = this.hls,
9013                      t = e.maxAutoLevel,
9014                      r = e.levels,
9015                      i = e.config,
9016                      a = e.minAutoLevel,
9017                      n = e.media,
9018                      s = this.lastLoadedFragLevel,
9019                      o = this.fragCurrent ? this.fragCurrent.duration : 0,
9020                      l = n ? n.currentTime : 0,
9021                      d =
9022                        n && 0 !== n.playbackRate
9023                          ? Math.abs(n.playbackRate)
9024                          : 1,
9025                      c = this._bwEstimator
9026                        ? this._bwEstimator.getEstimate()
9027                        : i.abrEwmaDefaultEstimate,
9028                      h = (H.bufferInfo(n, l, i.maxBufferHole).end - l) / d,
9029                      f = this._findBestLevel(
9030                        s,
9031                        o,
9032                        c,
9033                        a,
9034                        t,
9035                        h,
9036                        i.abrBandWidthFactor,
9037                        i.abrBandWidthUpFactor,
9038                        r
9039                      );
9040                    if (f >= 0) return f;
9041                    u.b.trace(
9042                      "rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering"
9043                    );
9044                    var g = o
9045                        ? Math.min(o, i.maxStarvationDelay)
9046                        : i.maxStarvationDelay,
9047                      p = i.abrBandWidthFactor,
9048                      v = i.abrBandWidthUpFactor;
9049                    if (0 === h) {
9050                      var m = this.bitrateTestDelay;
9051                      m &&
9052                        ((g =
9053                          (o
9054                            ? Math.min(o, i.maxLoadingDelay)
9055                            : i.maxLoadingDelay) - m),
9056                        u.b.trace(
9057                          "bitrate test took " +
9058                            Math.round(1e3 * m) +
9059                            "ms, set first fragment max fetchDuration to " +
9060                            Math.round(1e3 * g) +
9061                            " ms"
9062                        ),
9063                        (p = v = 1));
9064                    }
9065                    return (
9066                      (f = this._findBestLevel(s, o, c, a, t, h + g, p, v, r)),
9067                      Math.max(f, 0)
9068                    );
9069                  },
9070                },
9071              ]) && je(a.prototype, n),
9072              s && je(a, s),
9073              i
9074            );
9075          })(h);
9076        var Ye = q(),
9077          We = (function (e) {
9078            var t, r;
9079            function i(t) {
9080              var r;
9081              return (
9082                ((r =
9083                  e.call(
9084                    this,
9085                    t,
9086                    d.a.MEDIA_ATTACHING,
9087                    d.a.MEDIA_DETACHING,
9088                    d.a.MANIFEST_PARSED,
9089                    d.a.BUFFER_RESET,
9090                    d.a.BUFFER_APPENDING,
9091                    d.a.BUFFER_CODECS,
9092                    d.a.BUFFER_EOS,
9093                    d.a.BUFFER_FLUSHING,
9094                    d.a.LEVEL_PTS_UPDATED,
9095                    d.a.LEVEL_UPDATED
9096                  ) || this)._msDuration = null),
9097                (r._levelDuration = null),
9098                (r._levelTargetDuration = 10),
9099                (r._live = null),
9100                (r._objectUrl = null),
9101                (r._needsFlush = !1),
9102                (r._needsEos = !1),
9103                (r.config = void 0),
9104                (r.audioTimestampOffset = void 0),
9105                (r.bufferCodecEventsExpected = 0),
9106                (r._bufferCodecEventsTotal = 0),
9107                (r.media = null),
9108                (r.mediaSource = null),
9109                (r.segments = []),
9110                (r.parent = void 0),
9111                (r.appending = !1),
9112                (r.appended = 0),
9113                (r.appendError = 0),
9114                (r.flushBufferCounter = 0),
9115                (r.tracks = {}),
9116                (r.pendingTracks = {}),
9117                (r.sourceBuffer = {}),
9118                (r.flushRange = []),
9119                (r._onMediaSourceOpen = function () {
9120                  u.b.log("media source opened"),
9121                    r.hls.trigger(d.a.MEDIA_ATTACHED, { media: r.media });
9122                  var e = r.mediaSource;
9123                  e &&
9124                    e.removeEventListener("sourceopen", r._onMediaSourceOpen),
9125                    r.checkPendingTracks();
9126                }),
9127                (r._onMediaSourceClose = function () {
9128                  u.b.log("media source closed");
9129                }),
9130                (r._onMediaSourceEnded = function () {
9131                  u.b.log("media source ended");
9132                }),
9133                (r._onSBUpdateEnd = function () {
9134                  if (r.audioTimestampOffset && r.sourceBuffer.audio) {
9135                    var e = r.sourceBuffer.audio;
9136                    u.b.warn(
9137                      "change mpeg audio timestamp offset from " +
9138                        e.timestampOffset +
9139                        " to " +
9140                        r.audioTimestampOffset
9141                    ),
9142                      (e.timestampOffset = r.audioTimestampOffset),
9143                      delete r.audioTimestampOffset;
9144                  }
9145                  r._needsFlush && r.doFlush(),
9146                    r._needsEos && r.checkEos(),
9147                    (r.appending = !1);
9148                  var t = r.parent,
9149                    i = r.segments.reduce(function (e, r) {
9150                      return r.parent === t ? e + 1 : e;
9151                    }, 0),
9152                    a = {},
9153                    n = r.sourceBuffer;
9154                  for (var s in n) {
9155                    var o = n[s];
9156                    if (!o)
9157                      throw Error(
9158                        "handling source buffer update end error: source buffer for " +
9159                          s +
9160                          " uninitilized and unable to update buffered TimeRanges."
9161                      );
9162                    a[s] = o.buffered;
9163                  }
9164                  r.hls.trigger(d.a.BUFFER_APPENDED, {
9165                    parent: t,
9166                    pending: i,
9167                    timeRanges: a,
9168                  }),
9169                    r._needsFlush || r.doAppending(),
9170                    r.updateMediaElementDuration(),
9171                    0 === i && r.flushLiveBackBuffer();
9172                }),
9173                (r._onSBUpdateError = function (e) {
9174                  u.b.error("sourceBuffer error:", e),
9175                    r.hls.trigger(d.a.ERROR, {
9176                      type: o.b.MEDIA_ERROR,
9177                      details: o.a.BUFFER_APPENDING_ERROR,
9178                      fatal: !1,
9179                    });
9180                }),
9181                (r.config = t.config),
9182                r
9183              );
9184            }
9185            (r = e),
9186              ((t = i).prototype = Object.create(r.prototype)),
9187              (t.prototype.constructor = t),
9188              (t.__proto__ = r);
9189            var a = i.prototype;
9190            return (
9191              (a.destroy = function () {
9192                h.prototype.destroy.call(this);
9193              }),
9194              (a.onLevelPtsUpdated = function (e) {
9195                var t = e.type,
9196                  r = this.tracks.audio;
9197                if ("audio" === t && r && "audio/mpeg" === r.container) {
9198                  var i = this.sourceBuffer.audio;
9199                  if (!i)
9200                    throw Error(
9201                      "Level PTS Updated and source buffer for audio uninitalized"
9202                    );
9203                  if (Math.abs(i.timestampOffset - e.start) > 0.1) {
9204                    var a = i.updating;
9205                    try {
9206                      i.abort();
9207                    } catch (e) {
9208                      u.b.warn("can not abort audio buffer: " + e);
9209                    }
9210                    a
9211                      ? (this.audioTimestampOffset = e.start)
9212                      : (u.b.warn(
9213                          "change mpeg audio timestamp offset from " +
9214                            i.timestampOffset +
9215                            " to " +
9216                            e.start
9217                        ),
9218                        (i.timestampOffset = e.start));
9219                  }
9220                }
9221              }),
9222              (a.onManifestParsed = function (e) {
9223                (this.bufferCodecEventsExpected = this._bufferCodecEventsTotal =
9224                  e.altAudio ? 2 : 1),
9225                  u.b.log(
9226                    this.bufferCodecEventsExpected +
9227                      " bufferCodec event(s) expected"
9228                  );
9229              }),
9230              (a.onMediaAttaching = function (e) {
9231                var t = (this.media = e.media);
9232                if (t && Ye) {
9233                  var r = (this.mediaSource = new Ye());
9234                  r.addEventListener("sourceopen", this._onMediaSourceOpen),
9235                    r.addEventListener("sourceended", this._onMediaSourceEnded),
9236                    r.addEventListener("sourceclose", this._onMediaSourceClose),
9237                    (t.src = window.URL.createObjectURL(r)),
9238                    (this._objectUrl = t.src);
9239                }
9240              }),
9241              (a.onMediaDetaching = function () {
9242                u.b.log("media source detaching");
9243                var e = this.mediaSource;
9244                if (e) {
9245                  if ("open" === e.readyState)
9246                    try {
9247                      e.endOfStream();
9248                    } catch (e) {
9249                      u.b.warn(
9250                        "onMediaDetaching:" +
9251                          e.message +
9252                          " while calling endOfStream"
9253                      );
9254                    }
9255                  e.removeEventListener("sourceopen", this._onMediaSourceOpen),
9256                    e.removeEventListener(
9257                      "sourceended",
9258                      this._onMediaSourceEnded
9259                    ),
9260                    e.removeEventListener(
9261                      "sourceclose",
9262                      this._onMediaSourceClose
9263                    ),
9264                    this.media &&
9265                      (this._objectUrl &&
9266                        window.URL.revokeObjectURL(this._objectUrl),
9267                      this.media.src === this._objectUrl
9268                        ? (this.media.removeAttribute("src"), this.media.load())
9269                        : u.b.warn(
9270                            "media.src was changed by a third party - skip cleanup"
9271                          )),
9272                    (this.mediaSource = null),
9273                    (this.media = null),
9274                    (this._objectUrl = null),
9275                    (this.bufferCodecEventsExpected =
9276                      this._bufferCodecEventsTotal),
9277                    (this.pendingTracks = {}),
9278                    (this.tracks = {}),
9279                    (this.sourceBuffer = {}),
9280                    (this.flushRange = []),
9281                    (this.segments = []),
9282                    (this.appended = 0);
9283                }
9284                this.hls.trigger(d.a.MEDIA_DETACHED);
9285              }),
9286              (a.checkPendingTracks = function () {
9287                var e = this.bufferCodecEventsExpected,
9288                  t = this.pendingTracks,
9289                  r = Object.keys(t).length;
9290                ((r && !e) || 2 === r) &&
9291                  (this.createSourceBuffers(t),
9292                  (this.pendingTracks = {}),
9293                  this.doAppending());
9294              }),
9295              (a.onBufferReset = function () {
9296                var e = this.sourceBuffer;
9297                for (var t in e) {
9298                  var r = e[t];
9299                  try {
9300                    r &&
9301                      (this.mediaSource &&
9302                        this.mediaSource.removeSourceBuffer(r),
9303                      r.removeEventListener("updateend", this._onSBUpdateEnd),
9304                      r.removeEventListener("error", this._onSBUpdateError));
9305                  } catch (e) {}
9306                }
9307                (this.sourceBuffer = {}),
9308                  (this.flushRange = []),
9309                  (this.segments = []),
9310                  (this.appended = 0);
9311              }),
9312              (a.onBufferCodecs = function (e) {
9313                var t = this;
9314                Object.keys(this.sourceBuffer).length ||
9315                  (Object.keys(e).forEach(function (r) {
9316                    t.pendingTracks[r] = e[r];
9317                  }),
9318                  (this.bufferCodecEventsExpected = Math.max(
9319                    this.bufferCodecEventsExpected - 1,
9320                    0
9321                  )),
9322                  this.mediaSource &&
9323                    "open" === this.mediaSource.readyState &&
9324                    this.checkPendingTracks());
9325              }),
9326              (a.createSourceBuffers = function (e) {
9327                var t = this.sourceBuffer,
9328                  r = this.mediaSource;
9329                if (!r)
9330                  throw Error(
9331                    "createSourceBuffers called when mediaSource was null"
9332                  );
9333                for (var i in e)
9334                  if (!t[i]) {
9335                    var a = e[i];
9336                    if (!a)
9337                      throw Error(
9338                        "source buffer exists for track " +
9339                          i +
9340                          ", however track does not"
9341                      );
9342                    var n = a.levelCodec || a.codec,
9343                      s = a.container + ";codecs=" + n;
9344                    u.b.log("creating sourceBuffer(" + s + ")");
9345                    try {
9346                      var l = (t[i] = r.addSourceBuffer(s));
9347                      l.addEventListener("updateend", this._onSBUpdateEnd),
9348                        l.addEventListener("error", this._onSBUpdateError),
9349                        (this.tracks[i] = {
9350                          buffer: l,
9351                          codec: n,
9352                          id: a.id,
9353                          container: a.container,
9354                          levelCodec: a.levelCodec,
9355                        });
9356                    } catch (e) {
9357                      u.b.error(
9358                        "error while trying to add sourceBuffer:" + e.message
9359                      ),
9360                        this.hls.trigger(d.a.ERROR, {
9361                          type: o.b.MEDIA_ERROR,
9362                          details: o.a.BUFFER_ADD_CODEC_ERROR,
9363                          fatal: !1,
9364                          err: e,
9365                          mimeType: s,
9366                        });
9367                    }
9368                  }
9369                this.hls.trigger(d.a.BUFFER_CREATED, { tracks: this.tracks });
9370              }),
9371              (a.onBufferAppending = function (e) {
9372                this._needsFlush ||
9373                  (this.segments
9374                    ? this.segments.push(e)
9375                    : (this.segments = [e]),
9376                  this.doAppending());
9377              }),
9378              (a.onBufferEos = function (e) {
9379                for (var t in this.sourceBuffer)
9380                  if (!e.type || e.type === t) {
9381                    var r = this.sourceBuffer[t];
9382                    r &&
9383                      !r.ended &&
9384                      ((r.ended = !0), u.b.log(t + " sourceBuffer now EOS"));
9385                  }
9386                this.checkEos();
9387              }),
9388              (a.checkEos = function () {
9389                var e = this.sourceBuffer,
9390                  t = this.mediaSource;
9391                if (t && "open" === t.readyState) {
9392                  for (var r in e) {
9393                    var i = e[r];
9394                    if (i) {
9395                      if (!i.ended) return;
9396                      if (i.updating) return void (this._needsEos = !0);
9397                    }
9398                  }
9399                  u.b.log(
9400                    "all media data are available, signal endOfStream() to MediaSource and stop loading fragment"
9401                  );
9402                  try {
9403                    t.endOfStream();
9404                  } catch (e) {
9405                    u.b.warn(
9406                      "exception while calling mediaSource.endOfStream()"
9407                    );
9408                  }
9409                  this._needsEos = !1;
9410                } else this._needsEos = !1;
9411              }),
9412              (a.onBufferFlushing = function (e) {
9413                e.type
9414                  ? this.flushRange.push({
9415                      start: e.startOffset,
9416                      end: e.endOffset,
9417                      type: e.type,
9418                    })
9419                  : (this.flushRange.push({
9420                      start: e.startOffset,
9421                      end: e.endOffset,
9422                      type: "video",
9423                    }),
9424                    this.flushRange.push({
9425                      start: e.startOffset,
9426                      end: e.endOffset,
9427                      type: "audio",
9428                    })),
9429                  (this.flushBufferCounter = 0),
9430                  this.doFlush();
9431              }),
9432              (a.flushLiveBackBuffer = function () {
9433                if (this._live) {
9434                  var e = this.config.liveBackBufferLength;
9435                  if (isFinite(e) && !(e < 0))
9436                    if (this.media)
9437                      for (
9438                        var t = this.media.currentTime,
9439                          r = this.sourceBuffer,
9440                          i = Object.keys(r),
9441                          a = t - Math.max(e, this._levelTargetDuration),
9442                          n = i.length - 1;
9443                        n >= 0;
9444                        n--
9445                      ) {
9446                        var s = i[n],
9447                          o = r[s];
9448                        if (o) {
9449                          var l = o.buffered;
9450                          l.length > 0 &&
9451                            a > l.start(0) &&
9452                            this.removeBufferRange(s, o, 0, a) &&
9453                            this.hls.trigger(d.a.LIVE_BACK_BUFFER_REACHED, {
9454                              bufferEnd: a,
9455                            });
9456                        }
9457                      }
9458                    else
9459                      u.b.error(
9460                        "flushLiveBackBuffer called without attaching media"
9461                      );
9462                }
9463              }),
9464              (a.onLevelUpdated = function (e) {
9465                var t = e.details;
9466                t.fragments.length > 0 &&
9467                  ((this._levelDuration =
9468                    t.totalduration + t.fragments[0].start),
9469                  (this._levelTargetDuration =
9470                    t.averagetargetduration || t.targetduration || 10),
9471                  (this._live = t.live),
9472                  this.updateMediaElementDuration());
9473              }),
9474              (a.updateMediaElementDuration = function () {
9475                var e,
9476                  t = this.config;
9477                if (
9478                  null !== this._levelDuration &&
9479                  this.media &&
9480                  this.mediaSource &&
9481                  this.sourceBuffer &&
9482                  0 !== this.media.readyState &&
9483                  "open" === this.mediaSource.readyState
9484                ) {
9485                  for (var r in this.sourceBuffer) {
9486                    var i = this.sourceBuffer[r];
9487                    if (i && !0 === i.updating) return;
9488                  }
9489                  (e = this.media.duration),
9490                    null === this._msDuration &&
9491                      (this._msDuration = this.mediaSource.duration),
9492                    !0 === this._live && !0 === t.liveDurationInfinity
9493                      ? (u.b.log("Media Source duration is set to Infinity"),
9494                        (this._msDuration = this.mediaSource.duration = 1 / 0))
9495                      : ((this._levelDuration > this._msDuration &&
9496                          this._levelDuration > e) ||
9497                          !Object(l.a)(e)) &&
9498                        (u.b.log(
9499                          "Updating Media Source duration to " +
9500                            this._levelDuration.toFixed(3)
9501                        ),
9502                        (this._msDuration = this.mediaSource.duration =
9503                          this._levelDuration));
9504                }
9505              }),
9506              (a.doFlush = function () {
9507                for (; this.flushRange.length; ) {
9508                  var e = this.flushRange[0];
9509                  if (!this.flushBuffer(e.start, e.end, e.type))
9510                    return void (this._needsFlush = !0);
9511                  this.flushRange.shift(), (this.flushBufferCounter = 0);
9512                }
9513                if (0 === this.flushRange.length) {
9514                  this._needsFlush = !1;
9515                  var t = 0,
9516                    r = this.sourceBuffer;
9517                  try {
9518                    for (var i in r) {
9519                      var a = r[i];
9520                      a && (t += a.buffered.length);
9521                    }
9522                  } catch (e) {
9523                    u.b.error("error while accessing sourceBuffer.buffered");
9524                  }
9525                  (this.appended = t), this.hls.trigger(d.a.BUFFER_FLUSHED);
9526                }
9527              }),
9528              (a.doAppending = function () {
9529                var e = this.config,
9530                  t = this.hls,
9531                  r = this.segments,
9532                  i = this.sourceBuffer;
9533                if (Object.keys(i).length) {
9534                  if (!this.media || this.media.error)
9535                    return (
9536                      (this.segments = []),
9537                      void u.b.error(
9538                        "trying to append although a media error occured, flush segment and abort"
9539                      )
9540                    );
9541                  if (!this.appending) {
9542                    var a = r.shift();
9543                    if (a)
9544                      try {
9545                        var n = i[a.type];
9546                        if (!n) return void this._onSBUpdateEnd();
9547                        if (n.updating) return void r.unshift(a);
9548                        (n.ended = !1),
9549                          (this.parent = a.parent),
9550                          n.appendBuffer(a.data),
9551                          (this.appendError = 0),
9552                          this.appended++,
9553                          (this.appending = !0);
9554                      } catch (i) {
9555                        u.b.error(
9556                          "error while trying to append buffer:" + i.message
9557                        ),
9558                          r.unshift(a);
9559                        var s = {
9560                          type: o.b.MEDIA_ERROR,
9561                          parent: a.parent,
9562                          details: "",
9563                          fatal: !1,
9564                        };
9565                        22 === i.code
9566                          ? ((this.segments = []),
9567                            (s.details = o.a.BUFFER_FULL_ERROR))
9568                          : (this.appendError++,
9569                            (s.details = o.a.BUFFER_APPEND_ERROR),
9570                            this.appendError > e.appendErrorMaxRetry &&
9571                              (u.b.log(
9572                                "fail " +
9573                                  e.appendErrorMaxRetry +
9574                                  " times to append segment in sourceBuffer"
9575                              ),
9576                              (this.segments = []),
9577                              (s.fatal = !0))),
9578                          t.trigger(d.a.ERROR, s);
9579                      }
9580                  }
9581                }
9582              }),
9583              (a.flushBuffer = function (e, t, r) {
9584                var i = this.sourceBuffer;
9585                if (!Object.keys(i).length) return !0;
9586                var a = "null";
9587                if (
9588                  (this.media && (a = this.media.currentTime.toFixed(3)),
9589                  u.b.log(
9590                    "flushBuffer,pos/start/end: " + a + "/" + e + "/" + t
9591                  ),
9592                  this.flushBufferCounter >= this.appended)
9593                )
9594                  return u.b.warn("abort flushing too many retries"), !0;
9595                var n = i[r];
9596                if (n) {
9597                  if (((n.ended = !1), n.updating))
9598                    return (
9599                      u.b.warn("cannot flush, sb updating in progress"), !1
9600                    );
9601                  if (this.removeBufferRange(r, n, e, t))
9602                    return this.flushBufferCounter++, !1;
9603                }
9604                return u.b.log("buffer flushed"), !0;
9605              }),
9606              (a.removeBufferRange = function (e, t, r, i) {
9607                try {
9608                  for (var a = 0; a < t.buffered.length; a++) {
9609                    var n = t.buffered.start(a),
9610                      s = t.buffered.end(a),
9611                      o = Math.max(n, r),
9612                      l = Math.min(s, i);
9613                    if (Math.min(l, s) - o > 0.5) {
9614                      var d = "null";
9615                      return (
9616                        this.media && (d = this.media.currentTime.toString()),
9617                        u.b.log(
9618                          "sb remove " +
9619                            e +
9620                            " [" +
9621                            o +
9622                            "," +
9623                            l +
9624                            "], of [" +
9625                            n +
9626                            "," +
9627                            s +
9628                            "], pos:" +
9629                            d
9630                        ),
9631                        t.remove(o, l),
9632                        !0
9633                      );
9634                    }
9635                  }
9636                } catch (e) {
9637                  u.b.warn("removeBufferRange failed", e);
9638                }
9639                return !1;
9640              }),
9641              i
9642            );
9643          })(h);
9644        function qe(e, t) {
9645          for (var r = 0; r < t.length; r++) {
9646            var i = t[r];
9647            (i.enumerable = i.enumerable || !1),
9648              (i.configurable = !0),
9649              "value" in i && (i.writable = !0),
9650              Object.defineProperty(e, i.key, i);
9651          }
9652        }
9653        var ze = (function (e) {
9654          var t, r;
9655          function i(t) {
9656            var r;
9657            return (
9658              ((r =
9659                e.call(
9660                  this,
9661                  t,
9662                  d.a.FPS_DROP_LEVEL_CAPPING,
9663                  d.a.MEDIA_ATTACHING,
9664                  d.a.MANIFEST_PARSED,
9665                  d.a.BUFFER_CODECS,
9666                  d.a.MEDIA_DETACHING
9667                ) || this).autoLevelCapping = Number.POSITIVE_INFINITY),
9668              (r.firstLevel = null),
9669              (r.levels = []),
9670              (r.media = null),
9671              (r.restrictedLevels = []),
9672              (r.timer = null),
9673              r
9674            );
9675          }
9676          (r = e),
9677            ((t = i).prototype = Object.create(r.prototype)),
9678            (t.prototype.constructor = t),
9679            (t.__proto__ = r);
9680          var a,
9681            n,
9682            s,
9683            o = i.prototype;
9684          return (
9685            (o.destroy = function () {
9686              this.hls.config.capLevelToPlayerSize &&
9687                ((this.media = null), this.stopCapping());
9688            }),
9689            (o.onFpsDropLevelCapping = function (e) {
9690              i.isLevelAllowed(e.droppedLevel, this.restrictedLevels) &&
9691                this.restrictedLevels.push(e.droppedLevel);
9692            }),
9693            (o.onMediaAttaching = function (e) {
9694              this.media =
9695                e.media instanceof window.HTMLVideoElement ? e.media : null;
9696            }),
9697            (o.onManifestParsed = function (e) {
9698              var t = this.hls;
9699              (this.restrictedLevels = []),
9700                (this.levels = e.levels),
9701                (this.firstLevel = e.firstLevel),
9702                t.config.capLevelToPlayerSize && e.video && this.startCapping();
9703            }),
9704            (o.onBufferCodecs = function (e) {
9705              this.hls.config.capLevelToPlayerSize &&
9706                e.video &&
9707                this.startCapping();
9708            }),
9709            (o.onLevelsUpdated = function (e) {
9710              this.levels = e.levels;
9711            }),
9712            (o.onMediaDetaching = function () {
9713              this.stopCapping();
9714            }),
9715            (o.detectPlayerSize = function () {
9716              if (this.media) {
9717                var e = this.levels ? this.levels.length : 0;
9718                if (e) {
9719                  var t = this.hls;
9720                  (t.autoLevelCapping = this.getMaxLevel(e - 1)),
9721                    t.autoLevelCapping > this.autoLevelCapping &&
9722                      t.streamController.nextLevelSwitch(),
9723                    (this.autoLevelCapping = t.autoLevelCapping);
9724                }
9725              }
9726            }),
9727            (o.getMaxLevel = function (e) {
9728              var t = this;
9729              if (!this.levels) return -1;
9730              var r = this.levels.filter(function (r, a) {
9731                return i.isLevelAllowed(a, t.restrictedLevels) && a <= e;
9732              });
9733              return i.getMaxLevelByMediaSize(
9734                r,
9735                this.mediaWidth,
9736                this.mediaHeight
9737              );
9738            }),
9739            (o.startCapping = function () {
9740              this.timer ||
9741                ((this.autoLevelCapping = Number.POSITIVE_INFINITY),
9742                (this.hls.firstLevel = this.getMaxLevel(this.firstLevel)),
9743                clearInterval(this.timer),
9744                (this.timer = setInterval(
9745                  this.detectPlayerSize.bind(this),
9746                  1e3
9747                )),
9748                this.detectPlayerSize());
9749            }),
9750            (o.stopCapping = function () {
9751              (this.restrictedLevels = []),
9752                (this.firstLevel = null),
9753                (this.autoLevelCapping = Number.POSITIVE_INFINITY),
9754                this.timer &&
9755                  ((this.timer = clearInterval(this.timer)),
9756                  (this.timer = null));
9757            }),
9758            (i.isLevelAllowed = function (e, t) {
9759              return void 0 === t && (t = []), -1 === t.indexOf(e);
9760            }),
9761            (i.getMaxLevelByMediaSize = function (e, t, r) {
9762              if (!e || (e && !e.length)) return -1;
9763              for (var i, a, n = e.length - 1, s = 0; s < e.length; s += 1) {
9764                var o = e[s];
9765                if (
9766                  (o.width >= t || o.height >= r) &&
9767                  ((i = o),
9768                  !(a = e[s + 1]) ||
9769                    i.width !== a.width ||
9770                    i.height !== a.height)
9771                ) {
9772                  n = s;
9773                  break;
9774                }
9775              }
9776              return n;
9777            }),
9778            (a = i),
9779            (s = [
9780              {
9781                key: "contentScaleFactor",
9782                get: function () {
9783                  var e = 1;
9784                  try {
9785                    e = window.devicePixelRatio;
9786                  } catch (e) {}
9787                  return e;
9788                },
9789              },
9790            ]),
9791            (n = [
9792              {
9793                key: "mediaWidth",
9794                get: function () {
9795                  var e,
9796                    t = this.media;
9797                  return (
9798                    t &&
9799                      ((e = t.width || t.clientWidth || t.offsetWidth),
9800                      (e *= i.contentScaleFactor)),
9801                    e
9802                  );
9803                },
9804              },
9805              {
9806                key: "mediaHeight",
9807                get: function () {
9808                  var e,
9809                    t = this.media;
9810                  return (
9811                    t &&
9812                      ((e = t.height || t.clientHeight || t.offsetHeight),
9813                      (e *= i.contentScaleFactor)),
9814                    e
9815                  );
9816                },
9817              },
9818            ]) && qe(a.prototype, n),
9819            s && qe(a, s),
9820            i
9821          );
9822        })(h);
9823        var Xe = window.performance,
9824          Qe = (function (e) {
9825            var t, r;
9826            function i(t) {
9827              return e.call(this, t, d.a.MEDIA_ATTACHING) || this;
9828            }
9829            (r = e),
9830              ((t = i).prototype = Object.create(r.prototype)),
9831              (t.prototype.constructor = t),
9832              (t.__proto__ = r);
9833            var a = i.prototype;
9834            return (
9835              (a.destroy = function () {
9836                this.timer && clearInterval(this.timer),
9837                  (this.isVideoPlaybackQualityAvailable = !1);
9838              }),
9839              (a.onMediaAttaching = function (e) {
9840                var t = this.hls.config;
9841                t.capLevelOnFPSDrop &&
9842                  ("function" ==
9843                    typeof (this.video =
9844                      e.media instanceof window.HTMLVideoElement
9845                        ? e.media
9846                        : null).getVideoPlaybackQuality &&
9847                    (this.isVideoPlaybackQualityAvailable = !0),
9848                  clearInterval(this.timer),
9849                  (this.timer = setInterval(
9850                    this.checkFPSInterval.bind(this),
9851                    t.fpsDroppedMonitoringPeriod
9852                  )));
9853              }),
9854              (a.checkFPS = function (e, t, r) {
9855                var i = Xe.now();
9856                if (t) {
9857                  if (this.lastTime) {
9858                    var a = i - this.lastTime,
9859                      n = r - this.lastDroppedFrames,
9860                      s = t - this.lastDecodedFrames,
9861                      o = (1e3 * n) / a,
9862                      l = this.hls;
9863                    if (
9864                      (l.trigger(d.a.FPS_DROP, {
9865                        currentDropped: n,
9866                        currentDecoded: s,
9867                        totalDroppedFrames: r,
9868                      }),
9869                      o > 0 && n > l.config.fpsDroppedMonitoringThreshold * s)
9870                    ) {
9871                      var c = l.currentLevel;
9872                      u.b.warn(
9873                        "drop FPS ratio greater than max allowed value for currentLevel: " +
9874                          c
9875                      ),
9876                        c > 0 &&
9877                          (-1 === l.autoLevelCapping ||
9878                            l.autoLevelCapping >= c) &&
9879                          ((c -= 1),
9880                          l.trigger(d.a.FPS_DROP_LEVEL_CAPPING, {
9881                            level: c,
9882                            droppedLevel: l.currentLevel,
9883                          }),
9884                          (l.autoLevelCapping = c),
9885                          l.streamController.nextLevelSwitch());
9886                    }
9887                  }
9888                  (this.lastTime = i),
9889                    (this.lastDroppedFrames = r),
9890                    (this.lastDecodedFrames = t);
9891                }
9892              }),
9893              (a.checkFPSInterval = function () {
9894                var e = this.video;
9895                if (e)
9896                  if (this.isVideoPlaybackQualityAvailable) {
9897                    var t = e.getVideoPlaybackQuality();
9898                    this.checkFPS(e, t.totalVideoFrames, t.droppedVideoFrames);
9899                  } else
9900                    this.checkFPS(
9901                      e,
9902                      e.webkitDecodedFrameCount,
9903                      e.webkitDroppedFrameCount
9904                    );
9905              }),
9906              i
9907            );
9908          })(h),
9909          $e = window,
9910          Je = $e.performance,
9911          Ze = $e.XMLHttpRequest,
9912          et = (function () {
9913            function e(e) {
9914              e && e.xhrSetup && (this.xhrSetup = e.xhrSetup);
9915            }
9916            var t = e.prototype;
9917            return (
9918              (t.destroy = function () {
9919                this.abort(), (this.loader = null);
9920              }),
9921              (t.abort = function () {
9922                var e = this.loader;
9923                e &&
9924                  4 !== e.readyState &&
9925                  ((this.stats.aborted = !0), e.abort()),
9926                  window.clearTimeout(this.requestTimeout),
9927                  (this.requestTimeout = null),
9928                  window.clearTimeout(this.retryTimeout),
9929                  (this.retryTimeout = null);
9930              }),
9931              (t.load = function (e, t, r) {
9932                (this.context = e),
9933                  (this.config = t),
9934                  (this.callbacks = r),
9935                  (this.stats = { trequest: Je.now(), retry: 0 }),
9936                  (this.retryDelay = t.retryDelay),
9937                  this.loadInternal();
9938              }),
9939              (t.loadInternal = function () {
9940                var e,
9941                  t = this.context;
9942                e = this.loader = new Ze();
9943                var r = this.stats;
9944                (r.tfirst = 0), (r.loaded = 0);
9945                var i = this.xhrSetup;
9946                try {
9947                  if (i)
9948                    try {
9949                      i(e, t.url);
9950                    } catch (r) {
9951                      e.open("GET", t.url, !0), i(e, t.url);
9952                    }
9953                  e.readyState || e.open("GET", t.url, !0);
9954                } catch (r) {
9955                  return void this.callbacks.onError(
9956                    { code: e.status, text: r.message },
9957                    t,
9958                    e
9959                  );
9960                }
9961                t.rangeEnd &&
9962                  e.setRequestHeader(
9963                    "Range",
9964                    "bytes=" + t.rangeStart + "-" + (t.rangeEnd - 1)
9965                  ),
9966                  (e.onreadystatechange = this.readystatechange.bind(this)),
9967                  (e.onprogress = this.loadprogress.bind(this)),
9968                  (e.responseType = t.responseType),
9969                  (this.requestTimeout = window.setTimeout(
9970                    this.loadtimeout.bind(this),
9971                    this.config.timeout
9972                  )),
9973                  e.send();
9974              }),
9975              (t.readystatechange = function (e) {
9976                var t = e.currentTarget,
9977                  r = t.readyState,
9978                  i = this.stats,
9979                  a = this.context,
9980                  n = this.config;
9981                if (!i.aborted && r >= 2)
9982                  if (
9983                    (window.clearTimeout(this.requestTimeout),
9984                    0 === i.tfirst &&
9985                      (i.tfirst = Math.max(Je.now(), i.trequest)),
9986                    4 === r)
9987                  ) {
9988                    var s = t.status;
9989                    if (s >= 200 && s < 300) {
9990                      var o, l;
9991                      (i.tload = Math.max(i.tfirst, Je.now())),
9992                        (l =
9993                          "arraybuffer" === a.responseType
9994                            ? (o = t.response).byteLength
9995                            : (o = t.responseText).length),
9996                        (i.loaded = i.total = l);
9997                      var d = { url: t.responseURL, data: o };
9998                      this.callbacks.onSuccess(d, i, a, t);
9999                    } else
10000                      i.retry >= n.maxRetry || (s >= 400 && s < 499)
10001                        ? (u.b.error(s + " while loading " + a.url),
10002                          this.callbacks.onError(
10003                            { code: s, text: t.statusText },
10004                            a,
10005                            t
10006                          ))
10007                        : (u.b.warn(
10008                            s +
10009                              " while loading " +
10010                              a.url +
10011                              ", retrying in " +
10012                              this.retryDelay +
10013                              "..."
10014                          ),
10015                          this.destroy(),
10016                          (this.retryTimeout = window.setTimeout(
10017                            this.loadInternal.bind(this),
10018                            this.retryDelay
10019                          )),
10020                          (this.retryDelay = Math.min(
10021                            2 * this.retryDelay,
10022                            n.maxRetryDelay
10023                          )),
10024                          i.retry++);
10025                  } else
10026                    this.requestTimeout = window.setTimeout(
10027                      this.loadtimeout.bind(this),
10028                      n.timeout
10029                    );
10030              }),
10031              (t.loadtimeout = function () {
10032                u.b.warn("timeout while loading " + this.context.url),
10033                  this.callbacks.onTimeout(this.stats, this.context, null);
10034              }),
10035              (t.loadprogress = function (e) {
10036                var t = e.currentTarget,
10037                  r = this.stats;
10038                (r.loaded = e.loaded),
10039                  e.lengthComputable && (r.total = e.total);
10040                var i = this.callbacks.onProgress;
10041                i && i(r, this.context, null, t);
10042              }),
10043              e
10044            );
10045          })();
10046        function tt(e, t) {
10047          for (var r = 0; r < t.length; r++) {
10048            var i = t[r];
10049            (i.enumerable = i.enumerable || !1),
10050              (i.configurable = !0),
10051              "value" in i && (i.writable = !0),
10052              Object.defineProperty(e, i.key, i);
10053          }
10054        }
10055        var rt = (function (e) {
10056          var t, r;
10057          function i(t) {
10058            var r;
10059            return (
10060              ((r =
10061                e.call(
10062                  this,
10063                  t,
10064                  d.a.MANIFEST_LOADING,
10065                  d.a.MANIFEST_PARSED,
10066                  d.a.AUDIO_TRACK_LOADED,
10067                  d.a.AUDIO_TRACK_SWITCHED,
10068                  d.a.LEVEL_LOADED,
10069                  d.a.ERROR
10070                ) || this)._trackId = -1),
10071              (r._selectDefaultTrack = !0),
10072              (r.tracks = []),
10073              (r.trackIdBlacklist = Object.create(null)),
10074              (r.audioGroupId = null),
10075              r
10076            );
10077          }
10078          (r = e),
10079            ((t = i).prototype = Object.create(r.prototype)),
10080            (t.prototype.constructor = t),
10081            (t.__proto__ = r);
10082          var a,
10083            n,
10084            s,
10085            l = i.prototype;
10086          return (
10087            (l.onManifestLoading = function () {
10088              (this.tracks = []),
10089                (this._trackId = -1),
10090                (this._selectDefaultTrack = !0);
10091            }),
10092            (l.onManifestParsed = function (e) {
10093              var t = (this.tracks = e.audioTracks || []);
10094              this.hls.trigger(d.a.AUDIO_TRACKS_UPDATED, { audioTracks: t }),
10095                this._selectAudioGroup(this.hls.nextLoadLevel);
10096            }),
10097            (l.onAudioTrackLoaded = function (e) {
10098              if (e.id >= this.tracks.length)
10099                u.b.warn("Invalid audio track id:", e.id);
10100              else {
10101                if (
10102                  (u.b.log("audioTrack " + e.id + " loaded"),
10103                  (this.tracks[e.id].details = e.details),
10104                  e.details.live && !this.hasInterval())
10105                ) {
10106                  var t = 1e3 * e.details.targetduration;
10107                  this.setInterval(t);
10108                }
10109                !e.details.live && this.hasInterval() && this.clearInterval();
10110              }
10111            }),
10112            (l.onAudioTrackSwitched = function (e) {
10113              var t = this.tracks[e.id].groupId;
10114              t && this.audioGroupId !== t && (this.audioGroupId = t);
10115            }),
10116            (l.onLevelLoaded = function (e) {
10117              this._selectAudioGroup(e.level);
10118            }),
10119            (l.onError = function (e) {
10120              e.type === o.b.NETWORK_ERROR &&
10121                (e.fatal && this.clearInterval(),
10122                e.details === o.a.AUDIO_TRACK_LOAD_ERROR &&
10123                  (u.b.warn("Network failure on audio-track id:", e.context.id),
10124                  this._handleLoadError()));
10125            }),
10126            (l._setAudioTrack = function (e) {
10127              if (this._trackId === e && this.tracks[this._trackId].details)
10128                u.b.debug(
10129                  "Same id as current audio-track passed, and track details available -> no-op"
10130                );
10131              else if (e < 0 || e >= this.tracks.length)
10132                u.b.warn("Invalid id passed to audio-track controller");
10133              else {
10134                var t = this.tracks[e];
10135                u.b.log("Now switching to audio-track index " + e),
10136                  this.clearInterval(),
10137                  (this._trackId = e);
10138                var r = t.url,
10139                  i = t.type,
10140                  a = t.id;
10141                this.hls.trigger(d.a.AUDIO_TRACK_SWITCHING, {
10142                  id: a,
10143                  type: i,
10144                  url: r,
10145                }),
10146                  this._loadTrackDetailsIfNeeded(t);
10147              }
10148            }),
10149            (l.doTick = function () {
10150              this._updateTrack(this._trackId);
10151            }),
10152            (l._selectAudioGroup = function (e) {
10153              var t = this.hls.levels[e];
10154              if (t && t.audioGroupIds) {
10155                var r = t.audioGroupIds[t.urlId];
10156                this.audioGroupId !== r &&
10157                  ((this.audioGroupId = r), this._selectInitialAudioTrack());
10158              }
10159            }),
10160            (l._selectInitialAudioTrack = function () {
10161              var e = this,
10162                t = this.tracks;
10163              if (t.length) {
10164                var r = this.tracks[this._trackId],
10165                  i = null;
10166                if ((r && (i = r.name), this._selectDefaultTrack)) {
10167                  var a = t.filter(function (e) {
10168                    return e.default;
10169                  });
10170                  a.length
10171                    ? (t = a)
10172                    : u.b.warn("No default audio tracks defined");
10173                }
10174                var n = !1,
10175                  s = function () {
10176                    t.forEach(function (t) {
10177                      n ||
10178                        (e.audioGroupId && t.groupId !== e.audioGroupId) ||
10179                        (i && i !== t.name) ||
10180                        (e._setAudioTrack(t.id), (n = !0));
10181                    });
10182                  };
10183                s(),
10184                  n || ((i = null), s()),
10185                  n ||
10186                    (u.b.error(
10187                      "No track found for running audio group-ID: " +
10188                        this.audioGroupId
10189                    ),
10190                    this.hls.trigger(d.a.ERROR, {
10191                      type: o.b.MEDIA_ERROR,
10192                      details: o.a.AUDIO_TRACK_LOAD_ERROR,
10193                      fatal: !0,
10194                    }));
10195              }
10196            }),
10197            (l._needsTrackLoading = function (e) {
10198              var t = e.details,
10199                r = e.url;
10200              return !(t && !t.live) && !!r;
10201            }),
10202            (l._loadTrackDetailsIfNeeded = function (e) {
10203              if (this._needsTrackLoading(e)) {
10204                var t = e.url,
10205                  r = e.id;
10206                u.b.log("loading audio-track playlist for id: " + r),
10207                  this.hls.trigger(d.a.AUDIO_TRACK_LOADING, { url: t, id: r });
10208              }
10209            }),
10210            (l._updateTrack = function (e) {
10211              if (!(e < 0 || e >= this.tracks.length)) {
10212                this.clearInterval(),
10213                  (this._trackId = e),
10214                  u.b.log("trying to update audio-track " + e);
10215                var t = this.tracks[e];
10216                this._loadTrackDetailsIfNeeded(t);
10217              }
10218            }),
10219            (l._handleLoadError = function () {
10220              this.trackIdBlacklist[this._trackId] = !0;
10221              var e = this._trackId,
10222                t = this.tracks[e],
10223                r = t.name,
10224                i = t.language,
10225                a = t.groupId;
10226              u.b.warn(
10227                "Loading failed on audio track id: " +
10228                  e +
10229                  ", group-id: " +
10230                  a +
10231                  ', name/language: "' +
10232                  r +
10233                  '" / "' +
10234                  i +
10235                  '"'
10236              );
10237              for (var n = e, s = 0; s < this.tracks.length; s++) {
10238                if (!this.trackIdBlacklist[s])
10239                  if (this.tracks[s].name === r) {
10240                    n = s;
10241                    break;
10242                  }
10243              }
10244              n !== e
10245                ? (u.b.log(
10246                    "Attempting audio-track fallback id:",
10247                    n,
10248                    "group-id:",
10249                    this.tracks[n].groupId
10250                  ),
10251                  this._setAudioTrack(n))
10252                : u.b.warn(
10253                    'No fallback audio-track found for name/language: "' +
10254                      r +
10255                      '" / "' +
10256                      i +
10257                      '"'
10258                  );
10259            }),
10260            (a = i),
10261            (n = [
10262              {
10263                key: "audioTracks",
10264                get: function () {
10265                  return this.tracks;
10266                },
10267              },
10268              {
10269                key: "audioTrack",
10270                get: function () {
10271                  return this._trackId;
10272                },
10273                set: function (e) {
10274                  this._setAudioTrack(e), (this._selectDefaultTrack = !1);
10275                },
10276              },
10277            ]) && tt(a.prototype, n),
10278            s && tt(a, s),
10279            i
10280          );
10281        })(ge);
10282        function it(e, t) {
10283          for (var r = 0; r < t.length; r++) {
10284            var i = t[r];
10285            (i.enumerable = i.enumerable || !1),
10286              (i.configurable = !0),
10287              "value" in i && (i.writable = !0),
10288              Object.defineProperty(e, i.key, i);
10289          }
10290        }
10291        var at = window.performance,
10292          nt = (function (e) {
10293            var t, r;
10294            function i(t, r) {
10295              var i;
10296              return (
10297                ((i =
10298                  e.call(
10299                    this,
10300                    t,
10301                    d.a.MEDIA_ATTACHED,
10302                    d.a.MEDIA_DETACHING,
10303                    d.a.AUDIO_TRACKS_UPDATED,
10304                    d.a.AUDIO_TRACK_SWITCHING,
10305                    d.a.AUDIO_TRACK_LOADED,
10306                    d.a.KEY_LOADED,
10307                    d.a.FRAG_LOADED,
10308                    d.a.FRAG_PARSING_INIT_SEGMENT,
10309                    d.a.FRAG_PARSING_DATA,
10310                    d.a.FRAG_PARSED,
10311                    d.a.ERROR,
10312                    d.a.BUFFER_RESET,
10313                    d.a.BUFFER_CREATED,
10314                    d.a.BUFFER_APPENDED,
10315                    d.a.BUFFER_FLUSHED,
10316                    d.a.INIT_PTS_FOUND
10317                  ) || this).fragmentTracker = r),
10318                (i.config = t.config),
10319                (i.audioCodecSwap = !1),
10320                (i._state = pe),
10321                (i.initPTS = []),
10322                (i.waitingFragment = null),
10323                (i.videoTrackCC = null),
10324                i
10325              );
10326            }
10327            (r = e),
10328              ((t = i).prototype = Object.create(r.prototype)),
10329              (t.prototype.constructor = t),
10330              (t.__proto__ = r);
10331            var a,
10332              n,
10333              s,
10334              c = i.prototype;
10335            return (
10336              (c.onInitPtsFound = function (e) {
10337                var t = e.id,
10338                  r = e.frag.cc,
10339                  i = e.initPTS;
10340                "main" === t &&
10341                  ((this.initPTS[r] = i),
10342                  (this.videoTrackCC = r),
10343                  u.b.log(
10344                    "InitPTS for cc: " + r + " found from video track: " + i
10345                  ),
10346                  this.state === ke && this.tick());
10347              }),
10348              (c.startLoad = function (e) {
10349                if (this.tracks) {
10350                  var t = this.lastCurrentTime;
10351                  this.stopLoad(),
10352                    this.setInterval(100),
10353                    (this.fragLoadError = 0),
10354                    t > 0 && -1 === e
10355                      ? (u.b.log(
10356                          "audio:override startPosition with lastCurrentTime @" +
10357                            t.toFixed(3)
10358                        ),
10359                        (this.state = me))
10360                      : ((this.lastCurrentTime = this.startPosition
10361                          ? this.startPosition
10362                          : e),
10363                        (this.state = ve)),
10364                    (this.nextLoadPosition = this.startPosition =
10365                      this.lastCurrentTime),
10366                    this.tick();
10367                } else (this.startPosition = e), (this.state = pe);
10368              }),
10369              (c.doTick = function () {
10370                var e,
10371                  t,
10372                  r,
10373                  i = this.hls,
10374                  a = i.config;
10375                switch (this.state) {
10376                  case Le:
10377                  case ye:
10378                  case Re:
10379                    break;
10380                  case ve:
10381                    (this.state = Se), (this.loadedmetadata = !1);
10382                    break;
10383                  case me:
10384                    var n = this.tracks;
10385                    if (!n) break;
10386                    if (
10387                      !this.media &&
10388                      (this.startFragRequested || !a.startFragPrefetch)
10389                    )
10390                      break;
10391                    if (this.loadedmetadata) e = this.media.currentTime;
10392                    else if (void 0 === (e = this.nextLoadPosition)) break;
10393                    var s = this.mediaBuffer ? this.mediaBuffer : this.media,
10394                      o = this.videoBuffer ? this.videoBuffer : this.media,
10395                      c = H.bufferInfo(s, e, a.maxBufferHole),
10396                      h = H.bufferInfo(o, e, a.maxBufferHole),
10397                      f = c.len,
10398                      g = c.end,
10399                      p = this.fragPrevious,
10400                      v = Math.min(a.maxBufferLength, a.maxMaxBufferLength),
10401                      m = Math.max(v, h.len),
10402                      y = this.audioSwitch,
10403                      b = this.trackId;
10404                    if ((f < m || y) && b < n.length) {
10405                      if (void 0 === (r = n[b].details)) {
10406                        this.state = Se;
10407                        break;
10408                      }
10409                      if (!y && this._streamEnded(c, r))
10410                        return (
10411                          this.hls.trigger(d.a.BUFFER_EOS, { type: "audio" }),
10412                          void (this.state = we)
10413                        );
10414                      var T,
10415                        E = r.fragments,
10416                        S = E.length,
10417                        _ = E[0].start,
10418                        A = E[S - 1].start + E[S - 1].duration;
10419                      if (y)
10420                        if (r.live && !r.PTSKnown)
10421                          u.b.log(
10422                            "switching audiotrack, live stream, unknown PTS,load first fragment"
10423                          ),
10424                            (g = 0);
10425                        else if (((g = e), r.PTSKnown && e < _)) {
10426                          if (!(c.end > _ || c.nextStart)) return;
10427                          u.b.log(
10428                            "alt audio track ahead of main track, seek to start of alt audio track"
10429                          ),
10430                            (this.media.currentTime = _ + 0.05);
10431                        }
10432                      if (r.initSegment && !r.initSegment.data)
10433                        T = r.initSegment;
10434                      else if (g <= _) {
10435                        if (
10436                          ((T = E[0]),
10437                          null !== this.videoTrackCC &&
10438                            T.cc !== this.videoTrackCC &&
10439                            (T = (function (e, t) {
10440                              return j.search(e, function (e) {
10441                                return e.cc < t ? 1 : e.cc > t ? -1 : 0;
10442                              });
10443                            })(E, this.videoTrackCC)),
10444                          r.live && T.loadIdx && T.loadIdx === this.fragLoadIdx)
10445                        ) {
10446                          var R = c.nextStart ? c.nextStart : _;
10447                          return (
10448                            u.b.log(
10449                              "no alt audio available @currentTime:" +
10450                                this.media.currentTime +
10451                                ", seeking @" +
10452                                (R + 0.05)
10453                            ),
10454                            void (this.media.currentTime = R + 0.05)
10455                          );
10456                        }
10457                      } else {
10458                        var w,
10459                          L = a.maxFragLookUpTolerance,
10460                          k = p ? E[p.sn - E[0].sn + 1] : void 0,
10461                          D = function (e) {
10462                            var t = Math.min(L, e.duration);
10463                            return e.start + e.duration - t <= g
10464                              ? 1
10465                              : e.start - t > g && e.start
10466                              ? -1
10467                              : 0;
10468                          };
10469                        g < A
10470                          ? (g > A - L && (L = 0),
10471                            (w = k && !D(k) ? k : j.search(E, D)))
10472                          : (w = E[S - 1]),
10473                          w &&
10474                            ((T = w),
10475                            (_ = w.start),
10476                            p &&
10477                              T.level === p.level &&
10478                              T.sn === p.sn &&
10479                              (T.sn < r.endSN
10480                                ? ((T = E[T.sn + 1 - r.startSN]),
10481                                  u.b.log(
10482                                    "SN just loaded, load next one: " + T.sn
10483                                  ))
10484                                : (T = null)));
10485                      }
10486                      T &&
10487                        (T.encrypted
10488                          ? (u.b.log(
10489                              "Loading key for " +
10490                                T.sn +
10491                                " of [" +
10492                                r.startSN +
10493                                " ," +
10494                                r.endSN +
10495                                "],track " +
10496                                b
10497                            ),
10498                            (this.state = be),
10499                            i.trigger(d.a.KEY_LOADING, { frag: T }))
10500                          : (u.b.log(
10501                              "Loading " +
10502                                T.sn +
10503                                ", cc: " +
10504                                T.cc +
10505                                " of [" +
10506                                r.startSN +
10507                                " ," +
10508                                r.endSN +
10509                                "],track " +
10510                                b +
10511                                ", currentTime:" +
10512                                e +
10513                                ",bufferEnd:" +
10514                                g.toFixed(3)
10515                            ),
10516                            (this.fragCurrent = T),
10517                            (y || this.fragmentTracker.getState(T) === U) &&
10518                              ("initSegment" !== T.sn &&
10519                                (this.startFragRequested = !0),
10520                              Object(l.a)(T.sn) &&
10521                                (this.nextLoadPosition = T.start + T.duration),
10522                              i.trigger(d.a.FRAG_LOADING, { frag: T }),
10523                              (this.state = Te))));
10524                    }
10525                    break;
10526                  case Se:
10527                    (t = this.tracks[this.trackId]) &&
10528                      t.details &&
10529                      (this.state = me);
10530                    break;
10531                  case Ee:
10532                    var C = at.now(),
10533                      O = this.retryDate,
10534                      I = (s = this.media) && s.seeking;
10535                    (!O || C >= O || I) &&
10536                      (u.b.log(
10537                        "audioStreamController: retryDate reached, switch back to IDLE state"
10538                      ),
10539                      (this.state = me));
10540                    break;
10541                  case ke:
10542                    var P = this.videoTrackCC;
10543                    if (void 0 === this.initPTS[P]) break;
10544                    var x = this.waitingFragment;
10545                    if (x) {
10546                      var M = x.frag.cc;
10547                      P !== M
10548                        ? (t = this.tracks[this.trackId]).details &&
10549                          t.details.live &&
10550                          (u.b.warn(
10551                            "Waiting fragment CC (" +
10552                              M +
10553                              ") does not match video track CC (" +
10554                              P +
10555                              ")"
10556                          ),
10557                          (this.waitingFragment = null),
10558                          (this.state = me))
10559                        : ((this.state = Te),
10560                          this.onFragLoaded(this.waitingFragment),
10561                          (this.waitingFragment = null));
10562                    } else this.state = me;
10563                }
10564              }),
10565              (c.onMediaAttached = function (e) {
10566                var t = (this.media = this.mediaBuffer = e.media);
10567                (this.onvseeking = this.onMediaSeeking.bind(this)),
10568                  (this.onvended = this.onMediaEnded.bind(this)),
10569                  t.addEventListener("seeking", this.onvseeking),
10570                  t.addEventListener("ended", this.onvended);
10571                var r = this.config;
10572                this.tracks &&
10573                  r.autoStartLoad &&
10574                  this.startLoad(r.startPosition);
10575              }),
10576              (c.onMediaDetaching = function () {
10577                var e = this.media;
10578                e &&
10579                  e.ended &&
10580                  (u.b.log(
10581                    "MSE detaching and video ended, reset startPosition"
10582                  ),
10583                  (this.startPosition = this.lastCurrentTime = 0)),
10584                  e &&
10585                    (e.removeEventListener("seeking", this.onvseeking),
10586                    e.removeEventListener("ended", this.onvended),
10587                    (this.onvseeking = this.onvseeked = this.onvended = null)),
10588                  (this.media = this.mediaBuffer = this.videoBuffer = null),
10589                  (this.loadedmetadata = !1),
10590                  this.fragmentTracker.removeAllFragments(),
10591                  this.stopLoad();
10592              }),
10593              (c.onAudioTracksUpdated = function (e) {
10594                u.b.log("audio tracks updated"), (this.tracks = e.audioTracks);
10595              }),
10596              (c.onAudioTrackSwitching = function (e) {
10597                var t = !!e.url;
10598                (this.trackId = e.id),
10599                  (this.fragCurrent = null),
10600                  (this.state = ye),
10601                  (this.waitingFragment = null),
10602                  t
10603                    ? this.setInterval(100)
10604                    : this.demuxer &&
10605                      (this.demuxer.destroy(), (this.demuxer = null)),
10606                  t && ((this.audioSwitch = !0), (this.state = me)),
10607                  this.tick();
10608              }),
10609              (c.onAudioTrackLoaded = function (e) {
10610                var t = e.details,
10611                  r = e.id,
10612                  i = this.tracks[r],
10613                  a = t.totalduration,
10614                  n = 0;
10615                if (
10616                  (u.b.log(
10617                    "track " +
10618                      r +
10619                      " loaded [" +
10620                      t.startSN +
10621                      "," +
10622                      t.endSN +
10623                      "],duration:" +
10624                      a
10625                  ),
10626                  t.live)
10627                ) {
10628                  var s = i.details;
10629                  s && t.fragments.length > 0
10630                    ? (re(s, t),
10631                      (n = t.fragments[0].start),
10632                      t.PTSKnown
10633                        ? u.b.log("live audio playlist sliding:" + n.toFixed(3))
10634                        : u.b.log(
10635                            "live audio playlist - outdated PTS, unknown sliding"
10636                          ))
10637                    : ((t.PTSKnown = !1),
10638                      u.b.log(
10639                        "live audio playlist - first load, unknown sliding"
10640                      ));
10641                } else t.PTSKnown = !1;
10642                if (((i.details = t), !this.startFragRequested)) {
10643                  if (-1 === this.startPosition) {
10644                    var o = t.startTimeOffset;
10645                    Object(l.a)(o)
10646                      ? (u.b.log(
10647                          "start time offset found in playlist, adjust startPosition to " +
10648                            o
10649                        ),
10650                        (this.startPosition = o))
10651                      : t.live
10652                      ? ((this.startPosition = this.computeLivePosition(n, t)),
10653                        u.b.log(
10654                          "compute startPosition for audio-track to " +
10655                            this.startPosition
10656                        ))
10657                      : (this.startPosition = 0);
10658                  }
10659                  this.nextLoadPosition = this.startPosition;
10660                }
10661                this.state === Se && (this.state = me), this.tick();
10662              }),
10663              (c.onKeyLoaded = function () {
10664                this.state === be && ((this.state = me), this.tick());
10665              }),
10666              (c.onFragLoaded = function (e) {
10667                var t = this.fragCurrent,
10668                  r = e.frag;
10669                if (
10670                  this.state === Te &&
10671                  t &&
10672                  "audio" === r.type &&
10673                  r.level === t.level &&
10674                  r.sn === t.sn
10675                ) {
10676                  var i = this.tracks[this.trackId],
10677                    a = i.details,
10678                    n = a.totalduration,
10679                    s = t.level,
10680                    o = t.sn,
10681                    l = t.cc,
10682                    c =
10683                      this.config.defaultAudioCodec ||
10684                      i.audioCodec ||
10685                      "mp4a.40.2",
10686                    h = (this.stats = e.stats);
10687                  if ("initSegment" === o)
10688                    (this.state = me),
10689                      (h.tparsed = h.tbuffered = at.now()),
10690                      (a.initSegment.data = e.payload),
10691                      this.hls.trigger(d.a.FRAG_BUFFERED, {
10692                        stats: h,
10693                        frag: t,
10694                        id: "audio",
10695                      }),
10696                      this.tick();
10697                  else {
10698                    (this.state = _e),
10699                      (this.appended = !1),
10700                      this.demuxer || (this.demuxer = new J(this.hls, "audio"));
10701                    var f = this.initPTS[l],
10702                      g = a.initSegment ? a.initSegment.data : [];
10703                    if (a.initSegment || void 0 !== f) {
10704                      (this.pendingBuffering = !0),
10705                        u.b.log(
10706                          "Demuxing " +
10707                            o +
10708                            " of [" +
10709                            a.startSN +
10710                            " ," +
10711                            a.endSN +
10712                            "],track " +
10713                            s
10714                        );
10715                      this.demuxer.push(e.payload, g, c, null, t, n, !1, f);
10716                    } else
10717                      u.b.log(
10718                        "unknown video PTS for continuity counter " +
10719                          l +
10720                          ", waiting for video PTS before demuxing audio frag " +
10721                          o +
10722                          " of [" +
10723                          a.startSN +
10724                          " ," +
10725                          a.endSN +
10726                          "],track " +
10727                          s
10728                      ),
10729                        (this.waitingFragment = e),
10730                        (this.state = ke);
10731                  }
10732                }
10733                this.fragLoadError = 0;
10734              }),
10735              (c.onFragParsingInitSegment = function (e) {
10736                var t = this.fragCurrent,
10737                  r = e.frag;
10738                if (
10739                  t &&
10740                  "audio" === e.id &&
10741                  r.sn === t.sn &&
10742                  r.level === t.level &&
10743                  this.state === _e
10744                ) {
10745                  var i,
10746                    a = e.tracks;
10747                  if ((a.video && delete a.video, (i = a.audio))) {
10748                    (i.levelCodec = i.codec),
10749                      (i.id = e.id),
10750                      this.hls.trigger(d.a.BUFFER_CODECS, a),
10751                      u.b.log(
10752                        "audio track:audio,container:" +
10753                          i.container +
10754                          ",codecs[level/parsed]=[" +
10755                          i.levelCodec +
10756                          "/" +
10757                          i.codec +
10758                          "]"
10759                      );
10760                    var n = i.initSegment;
10761                    if (n) {
10762                      var s = {
10763                        type: "audio",
10764                        data: n,
10765                        parent: "audio",
10766                        content: "initSegment",
10767                      };
10768                      this.audioSwitch
10769                        ? (this.pendingData = [s])
10770                        : ((this.appended = !0),
10771                          (this.pendingBuffering = !0),
10772                          this.hls.trigger(d.a.BUFFER_APPENDING, s));
10773                    }
10774                    this.tick();
10775                  }
10776                }
10777              }),
10778              (c.onFragParsingData = function (e) {
10779                var t = this,
10780                  r = this.fragCurrent,
10781                  i = e.frag;
10782                if (
10783                  r &&
10784                  "audio" === e.id &&
10785                  "audio" === e.type &&
10786                  i.sn === r.sn &&
10787                  i.level === r.level &&
10788                  this.state === _e
10789                ) {
10790                  var a = this.trackId,
10791                    n = this.tracks[a],
10792                    s = this.hls;
10793                  Object(l.a)(e.endPTS) ||
10794                    ((e.endPTS = e.startPTS + r.duration),
10795                    (e.endDTS = e.startDTS + r.duration)),
10796                    r.addElementaryStream(p.AUDIO),
10797                    u.b.log(
10798                      "parsed " +
10799                        e.type +
10800                        ",PTS:[" +
10801                        e.startPTS.toFixed(3) +
10802                        "," +
10803                        e.endPTS.toFixed(3) +
10804                        "],DTS:[" +
10805                        e.startDTS.toFixed(3) +
10806                        "/" +
10807                        e.endDTS.toFixed(3) +
10808                        "],nb:" +
10809                        e.nb
10810                    ),
10811                    te(n.details, r, e.startPTS, e.endPTS);
10812                  var c = this.audioSwitch,
10813                    h = this.media,
10814                    f = !1;
10815                  if (c)
10816                    if (h && h.readyState) {
10817                      var g = h.currentTime;
10818                      u.b.log("switching audio track : currentTime:" + g),
10819                        g >= e.startPTS &&
10820                          (u.b.log(
10821                            "switching audio track : flushing all audio"
10822                          ),
10823                          (this.state = Re),
10824                          s.trigger(d.a.BUFFER_FLUSHING, {
10825                            startOffset: 0,
10826                            endOffset: Number.POSITIVE_INFINITY,
10827                            type: "audio",
10828                          }),
10829                          (f = !0),
10830                          (this.audioSwitch = !1),
10831                          s.trigger(d.a.AUDIO_TRACK_SWITCHED, { id: a }));
10832                    } else
10833                      (this.audioSwitch = !1),
10834                        s.trigger(d.a.AUDIO_TRACK_SWITCHED, { id: a });
10835                  var v = this.pendingData;
10836                  if (!v)
10837                    return (
10838                      u.b.warn(
10839                        "Apparently attempt to enqueue media payload without codec initialization data upfront"
10840                      ),
10841                      void s.trigger(d.a.ERROR, {
10842                        type: o.b.MEDIA_ERROR,
10843                        details: null,
10844                        fatal: !0,
10845                      })
10846                    );
10847                  this.audioSwitch ||
10848                    ([e.data1, e.data2].forEach(function (t) {
10849                      t &&
10850                        t.length &&
10851                        v.push({
10852                          type: e.type,
10853                          data: t,
10854                          parent: "audio",
10855                          content: "data",
10856                        });
10857                    }),
10858                    !f &&
10859                      v.length &&
10860                      (v.forEach(function (e) {
10861                        t.state === _e &&
10862                          ((t.pendingBuffering = !0),
10863                          t.hls.trigger(d.a.BUFFER_APPENDING, e));
10864                      }),
10865                      (this.pendingData = []),
10866                      (this.appended = !0))),
10867                    this.tick();
10868                }
10869              }),
10870              (c.onFragParsed = function (e) {
10871                var t = this.fragCurrent,
10872                  r = e.frag;
10873                t &&
10874                  "audio" === e.id &&
10875                  r.sn === t.sn &&
10876                  r.level === t.level &&
10877                  this.state === _e &&
10878                  ((this.stats.tparsed = at.now()),
10879                  (this.state = Ae),
10880                  this._checkAppendedParsed());
10881              }),
10882              (c.onBufferReset = function () {
10883                (this.mediaBuffer = this.videoBuffer = null),
10884                  (this.loadedmetadata = !1);
10885              }),
10886              (c.onBufferCreated = function (e) {
10887                var t = e.tracks.audio;
10888                t &&
10889                  ((this.mediaBuffer = t.buffer), (this.loadedmetadata = !0)),
10890                  e.tracks.video && (this.videoBuffer = e.tracks.video.buffer);
10891              }),
10892              (c.onBufferAppended = function (e) {
10893                if ("audio" === e.parent) {
10894                  var t = this.state;
10895                  (t !== _e && t !== Ae) ||
10896                    ((this.pendingBuffering = e.pending > 0),
10897                    this._checkAppendedParsed());
10898                }
10899              }),
10900              (c._checkAppendedParsed = function () {
10901                if (
10902                  !(
10903                    this.state !== Ae ||
10904                    (this.appended && this.pendingBuffering)
10905                  )
10906                ) {
10907                  var e = this.fragCurrent,
10908                    t = this.stats,
10909                    r = this.hls;
10910                  if (e) {
10911                    (this.fragPrevious = e),
10912                      (t.tbuffered = at.now()),
10913                      r.trigger(d.a.FRAG_BUFFERED, {
10914                        stats: t,
10915                        frag: e,
10916                        id: "audio",
10917                      });
10918                    var i = this.mediaBuffer ? this.mediaBuffer : this.media;
10919                    i && u.b.log("audio buffered : " + ne.toString(i.buffered)),
10920                      this.audioSwitch &&
10921                        this.appended &&
10922                        ((this.audioSwitch = !1),
10923                        r.trigger(d.a.AUDIO_TRACK_SWITCHED, {
10924                          id: this.trackId,
10925                        })),
10926                      (this.state = me);
10927                  }
10928                  this.tick();
10929                }
10930              }),
10931              (c.onError = function (e) {
10932                var t = e.frag;
10933                if (!t || "audio" === t.type)
10934                  switch (e.details) {
10935                    case o.a.FRAG_LOAD_ERROR:
10936                    case o.a.FRAG_LOAD_TIMEOUT:
10937                      var r = e.frag;
10938                      if (r && "audio" !== r.type) break;
10939                      if (!e.fatal) {
10940                        var i = this.fragLoadError;
10941                        i ? i++ : (i = 1);
10942                        var a = this.config;
10943                        if (i <= a.fragLoadingMaxRetry) {
10944                          this.fragLoadError = i;
10945                          var n = Math.min(
10946                            Math.pow(2, i - 1) * a.fragLoadingRetryDelay,
10947                            a.fragLoadingMaxRetryTimeout
10948                          );
10949                          u.b.warn(
10950                            "AudioStreamController: frag loading failed, retry in " +
10951                              n +
10952                              " ms"
10953                          ),
10954                            (this.retryDate = at.now() + n),
10955                            (this.state = Ee);
10956                        } else
10957                          u.b.error(
10958                            "AudioStreamController: " +
10959                              e.details +
10960                              " reaches max retry, redispatch as fatal ..."
10961                          ),
10962                            (e.fatal = !0),
10963                            (this.state = Le);
10964                      }
10965                      break;
10966                    case o.a.AUDIO_TRACK_LOAD_ERROR:
10967                    case o.a.AUDIO_TRACK_LOAD_TIMEOUT:
10968                    case o.a.KEY_LOAD_ERROR:
10969                    case o.a.KEY_LOAD_TIMEOUT:
10970                      this.state !== Le &&
10971                        ((this.state = e.fatal ? Le : me),
10972                        u.b.warn(
10973                          "AudioStreamController: " +
10974                            e.details +
10975                            " while loading frag, now switching to " +
10976                            this.state +
10977                            " state ..."
10978                        ));
10979                      break;
10980                    case o.a.BUFFER_FULL_ERROR:
10981                      if (
10982                        "audio" === e.parent &&
10983                        (this.state === _e || this.state === Ae)
10984                      ) {
10985                        var s = this.mediaBuffer,
10986                          l = this.media.currentTime;
10987                        if (
10988                          s &&
10989                          H.isBuffered(s, l) &&
10990                          H.isBuffered(s, l + 0.5)
10991                        ) {
10992                          var c = this.config;
10993                          c.maxMaxBufferLength >= c.maxBufferLength &&
10994                            ((c.maxMaxBufferLength /= 2),
10995                            u.b.warn(
10996                              "AudioStreamController: reduce max buffer length to " +
10997                                c.maxMaxBufferLength +
10998                                "s"
10999                            )),
11000                            (this.state = me);
11001                        } else
11002                          u.b.warn(
11003                            "AudioStreamController: buffer full error also media.currentTime is not buffered, flush audio buffer"
11004                          ),
11005                            (this.fragCurrent = null),
11006                            (this.state = Re),
11007                            this.hls.trigger(d.a.BUFFER_FLUSHING, {
11008                              startOffset: 0,
11009                              endOffset: Number.POSITIVE_INFINITY,
11010                              type: "audio",
11011                            });
11012                      }
11013                  }
11014              }),
11015              (c.onBufferFlushed = function () {
11016                var e = this,
11017                  t = this.pendingData;
11018                t && t.length
11019                  ? (u.b.log(
11020                      "AudioStreamController: appending pending audio data after buffer flushed"
11021                    ),
11022                    t.forEach(function (t) {
11023                      e.hls.trigger(d.a.BUFFER_APPENDING, t);
11024                    }),
11025                    (this.appended = !0),
11026                    (this.pendingData = []),
11027                    (this.state = Ae))
11028                  : ((this.state = me),
11029                    (this.fragPrevious = null),
11030                    this.tick());
11031              }),
11032              (a = i),
11033              (n = [
11034                {
11035                  key: "state",
11036                  set: function (e) {
11037                    if (this.state !== e) {
11038                      var t = this.state;
11039                      (this._state = e),
11040                        u.b.log("audio stream:" + t + "->" + e);
11041                    }
11042                  },
11043                  get: function () {
11044                    return this._state;
11045                  },
11046                },
11047              ]) && it(a.prototype, n),
11048              s && it(a, s),
11049              i
11050            );
11051          })(Ce),
11052          st = (function () {
11053            if ("undefined" != typeof window && window.VTTCue)
11054              return window.VTTCue;
11055            var e = { "": !0, lr: !0, rl: !0 },
11056              t = { start: !0, middle: !0, end: !0, left: !0, right: !0 };
11057            function r(e) {
11058              return (
11059                "string" == typeof e && !!t[e.toLowerCase()] && e.toLowerCase()
11060              );
11061            }
11062            function i(e) {
11063              for (var t = 1; t < arguments.length; t++) {
11064                var r = arguments[t];
11065                for (var i in r) e[i] = r[i];
11066              }
11067              return e;
11068            }
11069            function a(t, a, n) {
11070              var s = this,
11071                o = { enumerable: !0 };
11072              s.hasBeenReset = !1;
11073              var l = "",
11074                d = !1,
11075                u = t,
11076                c = a,
11077                h = n,
11078                f = null,
11079                g = "",
11080                p = !0,
11081                v = "auto",
11082                m = "start",
11083                y = 50,
11084                b = "middle",
11085                T = 50,
11086                E = "middle";
11087              Object.defineProperty(
11088                s,
11089                "id",
11090                i({}, o, {
11091                  get: function () {
11092                    return l;
11093                  },
11094                  set: function (e) {
11095                    l = "" + e;
11096                  },
11097                })
11098              ),
11099                Object.defineProperty(
11100                  s,
11101                  "pauseOnExit",
11102                  i({}, o, {
11103                    get: function () {
11104                      return d;
11105                    },
11106                    set: function (e) {
11107                      d = !!e;
11108                    },
11109                  })
11110                ),
11111                Object.defineProperty(
11112                  s,
11113                  "startTime",
11114                  i({}, o, {
11115                    get: function () {
11116                      return u;
11117                    },
11118                    set: function (e) {
11119                      if ("number" != typeof e)
11120                        throw new TypeError(
11121                          "Start time must be set to a number."
11122                        );
11123                      (u = e), (this.hasBeenReset = !0);
11124                    },
11125                  })
11126                ),
11127                Object.defineProperty(
11128                  s,
11129                  "endTime",
11130                  i({}, o, {
11131                    get: function () {
11132                      return c;
11133                    },
11134                    set: function (e) {
11135                      if ("number" != typeof e)
11136                        throw new TypeError(
11137                          "End time must be set to a number."
11138                        );
11139                      (c = e), (this.hasBeenReset = !0);
11140                    },
11141                  })
11142                ),
11143                Object.defineProperty(
11144                  s,
11145                  "text",
11146                  i({}, o, {
11147                    get: function () {
11148                      return h;
11149                    },
11150                    set: function (e) {
11151                      (h = "" + e), (this.hasBeenReset = !0);
11152                    },
11153                  })
11154                ),
11155                Object.defineProperty(
11156                  s,
11157                  "region",
11158                  i({}, o, {
11159                    get: function () {
11160                      return f;
11161                    },
11162                    set: function (e) {
11163                      (f = e), (this.hasBeenReset = !0);
11164                    },
11165                  })
11166                ),
11167                Object.defineProperty(
11168                  s,
11169                  "vertical",
11170                  i({}, o, {
11171                    get: function () {
11172                      return g;
11173                    },
11174                    set: function (t) {
11175                      var r = (function (t) {
11176                        return (
11177                          "string" == typeof t &&
11178                          !!e[t.toLowerCase()] &&
11179                          t.toLowerCase()
11180                        );
11181                      })(t);
11182                      if (!1 === r)
11183                        throw new SyntaxError(
11184                          "An invalid or illegal string was specified."
11185                        );
11186                      (g = r), (this.hasBeenReset = !0);
11187                    },
11188                  })
11189                ),
11190                Object.defineProperty(
11191                  s,
11192                  "snapToLines",
11193                  i({}, o, {
11194                    get: function () {
11195                      return p;
11196                    },
11197                    set: function (e) {
11198                      (p = !!e), (this.hasBeenReset = !0);
11199                    },
11200                  })
11201                ),
11202                Object.defineProperty(
11203                  s,
11204                  "line",
11205                  i({}, o, {
11206                    get: function () {
11207                      return v;
11208                    },
11209                    set: function (e) {
11210                      if ("number" != typeof e && "auto" !== e)
11211                        throw new SyntaxError(
11212                          "An invalid number or illegal string was specified."
11213                        );
11214                      (v = e), (this.hasBeenReset = !0);
11215                    },
11216                  })
11217                ),
11218                Object.defineProperty(
11219                  s,
11220                  "lineAlign",
11221                  i({}, o, {
11222                    get: function () {
11223                      return m;
11224                    },
11225                    set: function (e) {
11226                      var t = r(e);
11227                      if (!t)
11228                        throw new SyntaxError(
11229                          "An invalid or illegal string was specified."
11230                        );
11231                      (m = t), (this.hasBeenReset = !0);
11232                    },
11233                  })
11234                ),
11235                Object.defineProperty(
11236                  s,
11237                  "position",
11238                  i({}, o, {
11239                    get: function () {
11240                      return y;
11241                    },
11242                    set: function (e) {
11243                      if (e < 0 || e > 100)
11244                        throw new Error("Position must be between 0 and 100.");
11245                      (y = e), (this.hasBeenReset = !0);
11246                    },
11247                  })
11248                ),
11249                Object.defineProperty(
11250                  s,
11251                  "positionAlign",
11252                  i({}, o, {
11253                    get: function () {
11254                      return b;
11255                    },
11256                    set: function (e) {
11257                      var t = r(e);
11258                      if (!t)
11259                        throw new SyntaxError(
11260                          "An invalid or illegal string was specified."
11261                        );
11262                      (b = t), (this.hasBeenReset = !0);
11263                    },
11264                  })
11265                ),
11266                Object.defineProperty(
11267                  s,
11268                  "size",
11269                  i({}, o, {
11270                    get: function () {
11271                      return T;
11272                    },
11273                    set: function (e) {
11274                      if (e < 0 || e > 100)
11275                        throw new Error("Size must be between 0 and 100.");
11276                      (T = e), (this.hasBeenReset = !0);
11277                    },
11278                  })
11279                ),
11280                Object.defineProperty(
11281                  s,
11282                  "align",
11283                  i({}, o, {
11284                    get: function () {
11285                      return E;
11286                    },
11287                    set: function (e) {
11288                      var t = r(e);
11289                      if (!t)
11290                        throw new SyntaxError(
11291                          "An invalid or illegal string was specified."
11292                        );
11293                      (E = t), (this.hasBeenReset = !0);
11294                    },
11295                  })
11296                ),
11297                (s.displayState = void 0);
11298            }
11299            return (
11300              (a.prototype.getCueAsHTML = function () {
11301                return window.WebVTT.convertCueToDOMTree(window, this.text);
11302              }),
11303              a
11304            );
11305          })(),
11306          ot = function () {
11307            return {
11308              decode: function (e) {
11309                if (!e) return "";
11310                if ("string" != typeof e)
11311                  throw new Error("Error - expected string data.");
11312                return decodeURIComponent(encodeURIComponent(e));
11313              },
11314            };
11315          };
11316        function lt() {
11317          (this.window = window),
11318            (this.state = "INITIAL"),
11319            (this.buffer = ""),
11320            (this.decoder = new ot()),
11321            (this.regionList = []);
11322        }
11323        function dt() {
11324          this.values = Object.create(null);
11325        }
11326        function ut(e, t, r, i) {
11327          var a = i ? e.split(i) : [e];
11328          for (var n in a)
11329            if ("string" == typeof a[n]) {
11330              var s = a[n].split(r);
11331              if (2 === s.length) t(s[0], s[1]);
11332            }
11333        }
11334        dt.prototype = {
11335          set: function (e, t) {
11336            this.get(e) || "" === t || (this.values[e] = t);
11337          },
11338          get: function (e, t, r) {
11339            return r
11340              ? this.has(e)
11341                ? this.values[e]
11342                : t[r]
11343              : this.has(e)
11344              ? this.values[e]
11345              : t;
11346          },
11347          has: function (e) {
11348            return e in this.values;
11349          },
11350          alt: function (e, t, r) {
11351            for (var i = 0; i < r.length; ++i)
11352              if (t === r[i]) {
11353                this.set(e, t);
11354                break;
11355              }
11356          },
11357          integer: function (e, t) {
11358            /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10));
11359          },
11360          percent: function (e, t) {
11361            return (
11362              !!(
11363                t.match(/^([\d]{1,3})(\.[\d]*)?%$/) &&
11364                (t = parseFloat(t)) >= 0 &&
11365                t <= 100
11366              ) && (this.set(e, t), !0)
11367            );
11368          },
11369        };
11370        var ct = new st(0, 0, 0),
11371          ht = "middle" === ct.align ? "middle" : "center";
11372        function ft(e, t, r) {
11373          var i = e;
11374          function a() {
11375            var t = (function (e) {
11376              function t(e, t, r, i) {
11377                return 3600 * (0 | e) + 60 * (0 | t) + (0 | r) + (0 | i) / 1e3;
11378              }
11379              var r = e.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);
11380              return r
11381                ? r[3]
11382                  ? t(r[1], r[2], r[3].replace(":", ""), r[4])
11383                  : r[1] > 59
11384                  ? t(r[1], r[2], 0, r[4])
11385                  : t(0, r[1], r[2], r[4])
11386                : null;
11387            })(e);
11388            if (null === t) throw new Error("Malformed timestamp: " + i);
11389            return (e = e.replace(/^[^\sa-zA-Z-]+/, "")), t;
11390          }
11391          function n() {
11392            e = e.replace(/^\s+/, "");
11393          }
11394          if ((n(), (t.startTime = a()), n(), "--\x3e" !== e.substr(0, 3)))
11395            throw new Error(
11396              "Malformed time stamp (time stamps must be separated by '--\x3e'): " +
11397                i
11398            );
11399          (e = e.substr(3)),
11400            n(),
11401            (t.endTime = a()),
11402            n(),
11403            (function (e, t) {
11404              var i = new dt();
11405              ut(
11406                e,
11407                function (e, t) {
11408                  switch (e) {
11409                    case "region":
11410                      for (var a = r.length - 1; a >= 0; a--)
11411                        if (r[a].id === t) {
11412                          i.set(e, r[a].region);
11413                          break;
11414                        }
11415                      break;
11416                    case "vertical":
11417                      i.alt(e, t, ["rl", "lr"]);
11418                      break;
11419                    case "line":
11420                      var n = t.split(","),
11421                        s = n[0];
11422                      i.integer(e, s),
11423                        i.percent(e, s) && i.set("snapToLines", !1),
11424                        i.alt(e, s, ["auto"]),
11425                        2 === n.length &&
11426                          i.alt("lineAlign", n[1], ["start", ht, "end"]);
11427                      break;
11428                    case "position":
11429                      (n = t.split(",")),
11430                        i.percent(e, n[0]),
11431                        2 === n.length &&
11432                          i.alt("positionAlign", n[1], [
11433                            "start",
11434                            ht,
11435                            "end",
11436                            "line-left",
11437                            "line-right",
11438                            "auto",
11439                          ]);
11440                      break;
11441                    case "size":
11442                      i.percent(e, t);
11443                      break;
11444                    case "align":
11445                      i.alt(e, t, ["start", ht, "end", "left", "right"]);
11446                  }
11447                },
11448                /:/,
11449                /\s/
11450              ),
11451                (t.region = i.get("region", null)),
11452                (t.vertical = i.get("vertical", ""));
11453              var a = i.get("line", "auto");
11454              "auto" === a && -1 === ct.line && (a = -1),
11455                (t.line = a),
11456                (t.lineAlign = i.get("lineAlign", "start")),
11457                (t.snapToLines = i.get("snapToLines", !0)),
11458                (t.size = i.get("size", 100)),
11459                (t.align = i.get("align", ht));
11460              var n = i.get("position", "auto");
11461              "auto" === n &&
11462                50 === ct.position &&
11463                (n =
11464                  "start" === t.align || "left" === t.align
11465                    ? 0
11466                    : "end" === t.align || "right" === t.align
11467                    ? 100
11468                    : 50),
11469                (t.position = n);
11470            })(e, t);
11471        }
11472        function gt(e) {
11473          return e.replace(/<br(?: \/)?>/gi, "\n");
11474        }
11475        lt.prototype = {
11476          parse: function (e) {
11477            var t = this;
11478            function r() {
11479              var e = t.buffer,
11480                r = 0;
11481              for (e = gt(e); r < e.length && "\r" !== e[r] && "\n" !== e[r]; )
11482                ++r;
11483              var i = e.substr(0, r);
11484              return (
11485                "\r" === e[r] && ++r,
11486                "\n" === e[r] && ++r,
11487                (t.buffer = e.substr(r)),
11488                i
11489              );
11490            }
11491            e && (t.buffer += t.decoder.decode(e, { stream: !0 }));
11492            try {
11493              var i;
11494              if ("INITIAL" === t.state) {
11495                if (!/\r\n|\n/.test(t.buffer)) return this;
11496                var a = (i = r()).match(/^()?WEBVTT([ \t].*)?$/);
11497                if (!a || !a[0]) throw new Error("Malformed WebVTT signature.");
11498                t.state = "HEADER";
11499              }
11500              for (var n = !1; t.buffer; ) {
11501                if (!/\r\n|\n/.test(t.buffer)) return this;
11502                switch ((n ? (n = !1) : (i = r()), t.state)) {
11503                  case "HEADER":
11504                    /:/.test(i)
11505                      ? ut(i, function (e, t) {}, /:/)
11506                      : i || (t.state = "ID");
11507                    continue;
11508                  case "NOTE":
11509                    i || (t.state = "ID");
11510                    continue;
11511                  case "ID":
11512                    if (/^NOTE($|[ \t])/.test(i)) {
11513                      t.state = "NOTE";
11514                      break;
11515                    }
11516                    if (!i) continue;
11517                    if (
11518                      ((t.cue = new st(0, 0, "")),
11519                      (t.state = "CUE"),
11520                      -1 === i.indexOf("--\x3e"))
11521                    ) {
11522                      t.cue.id = i;
11523                      continue;
11524                    }
11525                  case "CUE":
11526                    try {
11527                      ft(i, t.cue, t.regionList);
11528                    } catch (e) {
11529                      (t.cue = null), (t.state = "BADCUE");
11530                      continue;
11531                    }
11532                    t.state = "CUETEXT";
11533                    continue;
11534                  case "CUETEXT":
11535                    var s = -1 !== i.indexOf("--\x3e");
11536                    if (!i || (s && (n = !0))) {
11537                      t.oncue && t.oncue(t.cue),
11538                        (t.cue = null),
11539                        (t.state = "ID");
11540                      continue;
11541                    }
11542                    t.cue.text && (t.cue.text += "\n"), (t.cue.text += i);
11543                    continue;
11544                  case "BADCUE":
11545                    i || (t.state = "ID");
11546                    continue;
11547                }
11548              }
11549            } catch (e) {
11550              "CUETEXT" === t.state && t.cue && t.oncue && t.oncue(t.cue),
11551                (t.cue = null),
11552                (t.state = "INITIAL" === t.state ? "BADWEBVTT" : "BADCUE");
11553            }
11554            return this;
11555          },
11556          flush: function () {
11557            try {
11558              if (
11559                ((this.buffer += this.decoder.decode()),
11560                (this.cue || "HEADER" === this.state) &&
11561                  ((this.buffer += "\n\n"), this.parse()),
11562                "INITIAL" === this.state)
11563              )
11564                throw new Error("Malformed WebVTT signature.");
11565            } catch (e) {
11566              throw e;
11567            }
11568            return this.onflush && this.onflush(), this;
11569          },
11570        };
11571        var pt = lt;
11572        function vt(e, t, r, i) {
11573          for (
11574            var a, n, s, o, l, d = window.VTTCue || TextTrackCue, u = 0;
11575            u < i.rows.length;
11576            u++
11577          )
11578            if (((s = !0), (o = 0), (l = ""), !(a = i.rows[u]).isEmpty())) {
11579              for (var c = 0; c < a.chars.length; c++)
11580                a.chars[c].uchar.match(/\s/) && s
11581                  ? o++
11582                  : ((l += a.chars[c].uchar), (s = !1));
11583              (a.cueStartTime = t),
11584                t === r && (r += 1e-4),
11585                (n = new d(t, r, gt(l.trim()))),
11586                o >= 16 ? o-- : o++,
11587                navigator.userAgent.match(/Firefox\//)
11588                  ? (n.line = u + 1)
11589                  : (n.line = u > 7 ? u - 2 : u + 1),
11590                (n.align = "left"),
11591                (n.position = Math.max(0, Math.min(100, (o / 32) * 100))),
11592                e.addCue(n);
11593            }
11594        }
11595        var mt,
11596          yt = {
11597            42: 225,
11598            92: 233,
11599            94: 237,
11600            95: 243,
11601            96: 250,
11602            123: 231,
11603            124: 247,
11604            125: 209,
11605            126: 241,
11606            127: 9608,
11607            128: 174,
11608            129: 176,
11609            130: 189,
11610            131: 191,
11611            132: 8482,
11612            133: 162,
11613            134: 163,
11614            135: 9834,
11615            136: 224,
11616            137: 32,
11617            138: 232,
11618            139: 226,
11619            140: 234,
11620            141: 238,
11621            142: 244,
11622            143: 251,
11623            144: 193,
11624            145: 201,
11625            146: 211,
11626            147: 218,
11627            148: 220,
11628            149: 252,
11629            150: 8216,
11630            151: 161,
11631            152: 42,
11632            153: 8217,
11633            154: 9473,
11634            155: 169,
11635            156: 8480,
11636            157: 8226,
11637            158: 8220,
11638            159: 8221,
11639            160: 192,
11640            161: 194,
11641            162: 199,
11642            163: 200,
11643            164: 202,
11644            165: 203,
11645            166: 235,
11646            167: 206,
11647            168: 207,
11648            169: 239,
11649            170: 212,
11650            171: 217,
11651            172: 249,
11652            173: 219,
11653            174: 171,
11654            175: 187,
11655            176: 195,
11656            177: 227,
11657            178: 205,
11658            179: 204,
11659            180: 236,
11660            181: 210,
11661            182: 242,
11662            183: 213,
11663            184: 245,
11664            185: 123,
11665            186: 125,
11666            187: 92,
11667            188: 94,
11668            189: 95,
11669            190: 124,
11670            191: 8764,
11671            192: 196,
11672            193: 228,
11673            194: 214,
11674            195: 246,
11675            196: 223,
11676            197: 165,
11677            198: 164,
11678            199: 9475,
11679            200: 197,
11680            201: 229,
11681            202: 216,
11682            203: 248,
11683            204: 9487,
11684            205: 9491,
11685            206: 9495,
11686            207: 9499,
11687          },
11688          bt = function (e) {
11689            var t = e;
11690            return yt.hasOwnProperty(e) && (t = yt[e]), String.fromCharCode(t);
11691          },
11692          Tt = { 17: 1, 18: 3, 21: 5, 22: 7, 23: 9, 16: 11, 19: 12, 20: 14 },
11693          Et = { 17: 2, 18: 4, 21: 6, 22: 8, 23: 10, 19: 13, 20: 15 },
11694          St = { 25: 1, 26: 3, 29: 5, 30: 7, 31: 9, 24: 11, 27: 12, 28: 14 },
11695          _t = { 25: 2, 26: 4, 29: 6, 30: 8, 31: 10, 27: 13, 28: 15 },
11696          At = [
11697            "white",
11698            "green",
11699            "blue",
11700            "cyan",
11701            "red",
11702            "yellow",
11703            "magenta",
11704            "black",
11705            "transparent",
11706          ];
11707        !(function (e) {
11708          (e[(e.ERROR = 0)] = "ERROR"),
11709            (e[(e.TEXT = 1)] = "TEXT"),
11710            (e[(e.WARNING = 2)] = "WARNING"),
11711            (e[(e.INFO = 2)] = "INFO"),
11712            (e[(e.DEBUG = 3)] = "DEBUG"),
11713            (e[(e.DATA = 3)] = "DATA");
11714        })(mt || (mt = {}));
11715        var Rt = {
11716            verboseFilter: {
11717              DATA: 3,
11718              DEBUG: 3,
11719              INFO: 2,
11720              WARNING: 2,
11721              TEXT: 1,
11722              ERROR: 0,
11723            },
11724            time: null,
11725            verboseLevel: 0,
11726            setTime: function (e) {
11727              this.time = e;
11728            },
11729            log: function (e, t) {
11730              this.verboseFilter[e];
11731              this.verboseLevel;
11732            },
11733          },
11734          wt = function (e) {
11735            for (var t = [], r = 0; r < e.length; r++)
11736              t.push(e[r].toString(16));
11737            return t;
11738          },
11739          Lt = (function () {
11740            function e(e, t, r, i, a) {
11741              (this.foreground = void 0),
11742                (this.underline = void 0),
11743                (this.italics = void 0),
11744                (this.background = void 0),
11745                (this.flash = void 0),
11746                (this.foreground = e || "white"),
11747                (this.underline = t || !1),
11748                (this.italics = r || !1),
11749                (this.background = i || "black"),
11750                (this.flash = a || !1);
11751            }
11752            var t = e.prototype;
11753            return (
11754              (t.reset = function () {
11755                (this.foreground = "white"),
11756                  (this.underline = !1),
11757                  (this.italics = !1),
11758                  (this.background = "black"),
11759                  (this.flash = !1);
11760              }),
11761              (t.setStyles = function (e) {
11762                for (
11763                  var t = [
11764                      "foreground",
11765                      "underline",
11766                      "italics",
11767                      "background",
11768                      "flash",
11769                    ],
11770                    r = 0;
11771                  r < t.length;
11772                  r++
11773                ) {
11774                  var i = t[r];
11775                  e.hasOwnProperty(i) && (this[i] = e[i]);
11776                }
11777              }),
11778              (t.isDefault = function () {
11779                return (
11780                  "white" === this.foreground &&
11781                  !this.underline &&
11782                  !this.italics &&
11783                  "black" === this.background &&
11784                  !this.flash
11785                );
11786              }),
11787              (t.equals = function (e) {
11788                return (
11789                  this.foreground === e.foreground &&
11790                  this.underline === e.underline &&
11791                  this.italics === e.italics &&
11792                  this.background === e.background &&
11793                  this.flash === e.flash
11794                );
11795              }),
11796              (t.copy = function (e) {
11797                (this.foreground = e.foreground),
11798                  (this.underline = e.underline),
11799                  (this.italics = e.italics),
11800                  (this.background = e.background),
11801                  (this.flash = e.flash);
11802              }),
11803              (t.toString = function () {
11804                return (
11805                  "color=" +
11806                  this.foreground +
11807                  ", underline=" +
11808                  this.underline +
11809                  ", italics=" +
11810                  this.italics +
11811                  ", background=" +
11812                  this.background +
11813                  ", flash=" +
11814                  this.flash
11815                );
11816              }),
11817              e
11818            );
11819          })(),
11820          kt = (function () {
11821            function e(e, t, r, i, a, n) {
11822              (this.uchar = void 0),
11823                (this.penState = void 0),
11824                (this.uchar = e || " "),
11825                (this.penState = new Lt(t, r, i, a, n));
11826            }
11827            var t = e.prototype;
11828            return (
11829              (t.reset = function () {
11830                (this.uchar = " "), this.penState.reset();
11831              }),
11832              (t.setChar = function (e, t) {
11833                (this.uchar = e), this.penState.copy(t);
11834              }),
11835              (t.setPenState = function (e) {
11836                this.penState.copy(e);
11837              }),
11838              (t.equals = function (e) {
11839                return (
11840                  this.uchar === e.uchar && this.penState.equals(e.penState)
11841                );
11842              }),
11843              (t.copy = function (e) {
11844                (this.uchar = e.uchar), this.penState.copy(e.penState);
11845              }),
11846              (t.isEmpty = function () {
11847                return " " === this.uchar && this.penState.isDefault();
11848              }),
11849              e
11850            );
11851          })(),
11852          Dt = (function () {
11853            function e() {
11854              (this.chars = void 0),
11855                (this.pos = void 0),
11856                (this.currPenState = void 0),
11857                (this.cueStartTime = void 0),
11858                (this.chars = []);
11859              for (var e = 0; e < 100; e++) this.chars.push(new kt());
11860              (this.pos = 0), (this.currPenState = new Lt());
11861            }
11862            var t = e.prototype;
11863            return (
11864              (t.equals = function (e) {
11865                for (var t = !0, r = 0; r < 100; r++)
11866                  if (!this.chars[r].equals(e.chars[r])) {
11867                    t = !1;
11868                    break;
11869                  }
11870                return t;
11871              }),
11872              (t.copy = function (e) {
11873                for (var t = 0; t < 100; t++) this.chars[t].copy(e.chars[t]);
11874              }),
11875              (t.isEmpty = function () {
11876                for (var e = !0, t = 0; t < 100; t++)
11877                  if (!this.chars[t].isEmpty()) {
11878                    e = !1;
11879                    break;
11880                  }
11881                return e;
11882              }),
11883              (t.setCursor = function (e) {
11884                this.pos !== e && (this.pos = e),
11885                  this.pos < 0
11886                    ? (Rt.log("ERROR", "Negative cursor position " + this.pos),
11887                      (this.pos = 0))
11888                    : this.pos > 100 &&
11889                      (Rt.log("ERROR", "Too large cursor position " + this.pos),
11890                      (this.pos = 100));
11891              }),
11892              (t.moveCursor = function (e) {
11893                var t = this.pos + e;
11894                if (e > 1)
11895                  for (var r = this.pos + 1; r < t + 1; r++)
11896                    this.chars[r].setPenState(this.currPenState);
11897                this.setCursor(t);
11898              }),
11899              (t.backSpace = function () {
11900                this.moveCursor(-1),
11901                  this.chars[this.pos].setChar(" ", this.currPenState);
11902              }),
11903              (t.insertChar = function (e) {
11904                e >= 144 && this.backSpace();
11905                var t = bt(e);
11906                this.pos >= 100
11907                  ? Rt.log(
11908                      "ERROR",
11909                      "Cannot insert " +
11910                        e.toString(16) +
11911                        " (" +
11912                        t +
11913                        ") at position " +
11914                        this.pos +
11915                        ". Skipping it!"
11916                    )
11917                  : (this.chars[this.pos].setChar(t, this.currPenState),
11918                    this.moveCursor(1));
11919              }),
11920              (t.clearFromPos = function (e) {
11921                var t;
11922                for (t = e; t < 100; t++) this.chars[t].reset();
11923              }),
11924              (t.clear = function () {
11925                this.clearFromPos(0), (this.pos = 0), this.currPenState.reset();
11926              }),
11927              (t.clearToEndOfRow = function () {
11928                this.clearFromPos(this.pos);
11929              }),
11930              (t.getTextString = function () {
11931                for (var e = [], t = !0, r = 0; r < 100; r++) {
11932                  var i = this.chars[r].uchar;
11933                  " " !== i && (t = !1), e.push(i);
11934                }
11935                return t ? "" : e.join("");
11936              }),
11937              (t.setPenStyles = function (e) {
11938                this.currPenState.setStyles(e),
11939                  this.chars[this.pos].setPenState(this.currPenState);
11940              }),
11941              e
11942            );
11943          })(),
11944          Ct = (function () {
11945            function e() {
11946              (this.rows = void 0),
11947                (this.currRow = void 0),
11948                (this.nrRollUpRows = void 0),
11949                (this.lastOutputScreen = void 0),
11950                (this.rows = []);
11951              for (var e = 0; e < 15; e++) this.rows.push(new Dt());
11952              (this.currRow = 14), (this.nrRollUpRows = null), this.reset();
11953            }
11954            var t = e.prototype;
11955            return (
11956              (t.reset = function () {
11957                for (var e = 0; e < 15; e++) this.rows[e].clear();
11958                this.currRow = 14;
11959              }),
11960              (t.equals = function (e) {
11961                for (var t = !0, r = 0; r < 15; r++)
11962                  if (!this.rows[r].equals(e.rows[r])) {
11963                    t = !1;
11964                    break;
11965                  }
11966                return t;
11967              }),
11968              (t.copy = function (e) {
11969                for (var t = 0; t < 15; t++) this.rows[t].copy(e.rows[t]);
11970              }),
11971              (t.isEmpty = function () {
11972                for (var e = !0, t = 0; t < 15; t++)
11973                  if (!this.rows[t].isEmpty()) {
11974                    e = !1;
11975                    break;
11976                  }
11977                return e;
11978              }),
11979              (t.backSpace = function () {
11980                this.rows[this.currRow].backSpace();
11981              }),
11982              (t.clearToEndOfRow = function () {
11983                this.rows[this.currRow].clearToEndOfRow();
11984              }),
11985              (t.insertChar = function (e) {
11986                this.rows[this.currRow].insertChar(e);
11987              }),
11988              (t.setPen = function (e) {
11989                this.rows[this.currRow].setPenStyles(e);
11990              }),
11991              (t.moveCursor = function (e) {
11992                this.rows[this.currRow].moveCursor(e);
11993              }),
11994              (t.setCursor = function (e) {
11995                Rt.log("INFO", "setCursor: " + e),
11996                  this.rows[this.currRow].setCursor(e);
11997              }),
11998              (t.setPAC = function (e) {
11999                Rt.log("INFO", "pacData = " + JSON.stringify(e));
12000                var t = e.row - 1;
12001                if (
12002                  (this.nrRollUpRows &&
12003                    t < this.nrRollUpRows - 1 &&
12004                    (t = this.nrRollUpRows - 1),
12005                  this.nrRollUpRows && this.currRow !== t)
12006                ) {
12007                  for (var r = 0; r < 15; r++) this.rows[r].clear();
12008                  var i = this.currRow + 1 - this.nrRollUpRows,
12009                    a = this.lastOutputScreen;
12010                  if (a) {
12011                    var n = a.rows[i].cueStartTime;
12012                    if (n && Rt.time && n < Rt.time)
12013                      for (var s = 0; s < this.nrRollUpRows; s++)
12014                        this.rows[t - this.nrRollUpRows + s + 1].copy(
12015                          a.rows[i + s]
12016                        );
12017                  }
12018                }
12019                this.currRow = t;
12020                var o = this.rows[this.currRow];
12021                if (null !== e.indent) {
12022                  var l = e.indent,
12023                    d = Math.max(l - 1, 0);
12024                  o.setCursor(e.indent),
12025                    (e.color = o.chars[d].penState.foreground);
12026                }
12027                var u = {
12028                  foreground: e.color,
12029                  underline: e.underline,
12030                  italics: e.italics,
12031                  background: "black",
12032                  flash: !1,
12033                };
12034                this.setPen(u);
12035              }),
12036              (t.setBkgData = function (e) {
12037                Rt.log("INFO", "bkgData = " + JSON.stringify(e)),
12038                  this.backSpace(),
12039                  this.setPen(e),
12040                  this.insertChar(32);
12041              }),
12042              (t.setRollUpRows = function (e) {
12043                this.nrRollUpRows = e;
12044              }),
12045              (t.rollUp = function () {
12046                if (null !== this.nrRollUpRows) {
12047                  Rt.log("TEXT", this.getDisplayText());
12048                  var e = this.currRow + 1 - this.nrRollUpRows,
12049                    t = this.rows.splice(e, 1)[0];
12050                  t.clear(),
12051                    this.rows.splice(this.currRow, 0, t),
12052                    Rt.log("INFO", "Rolling up");
12053                } else Rt.log("DEBUG", "roll_up but nrRollUpRows not set yet");
12054              }),
12055              (t.getDisplayText = function (e) {
12056                e = e || !1;
12057                for (var t = [], r = "", i = -1, a = 0; a < 15; a++) {
12058                  var n = this.rows[a].getTextString();
12059                  n &&
12060                    ((i = a + 1),
12061                    e
12062                      ? t.push("Row " + i + ": '" + n + "'")
12063                      : t.push(n.trim()));
12064                }
12065                return (
12066                  t.length > 0 &&
12067                    (r = e ? "[" + t.join(" | ") + "]" : t.join("\n")),
12068                  r
12069                );
12070              }),
12071              (t.getTextAndFormat = function () {
12072                return this.rows;
12073              }),
12074              e
12075            );
12076          })(),
12077          Ot = (function () {
12078            function e(e, t) {
12079              (this.chNr = void 0),
12080                (this.outputFilter = void 0),
12081                (this.mode = void 0),
12082                (this.verbose = void 0),
12083                (this.displayedMemory = void 0),
12084                (this.nonDisplayedMemory = void 0),
12085                (this.lastOutputScreen = void 0),
12086                (this.currRollUpRow = void 0),
12087                (this.writeScreen = void 0),
12088                (this.cueStartTime = void 0),
12089                (this.lastCueEndTime = void 0),
12090                (this.chNr = e),
12091                (this.outputFilter = t),
12092                (this.mode = null),
12093                (this.verbose = 0),
12094                (this.displayedMemory = new Ct()),
12095                (this.nonDisplayedMemory = new Ct()),
12096                (this.lastOutputScreen = new Ct()),
12097                (this.currRollUpRow = this.displayedMemory.rows[14]),
12098                (this.writeScreen = this.displayedMemory),
12099                (this.mode = null),
12100                (this.cueStartTime = null);
12101            }
12102            var t = e.prototype;
12103            return (
12104              (t.reset = function () {
12105                (this.mode = null),
12106                  this.displayedMemory.reset(),
12107                  this.nonDisplayedMemory.reset(),
12108                  this.lastOutputScreen.reset(),
12109                  (this.currRollUpRow = this.displayedMemory.rows[14]),
12110                  (this.writeScreen = this.displayedMemory),
12111                  (this.mode = null),
12112                  (this.cueStartTime = null);
12113              }),
12114              (t.getHandler = function () {
12115                return this.outputFilter;
12116              }),
12117              (t.setHandler = function (e) {
12118                this.outputFilter = e;
12119              }),
12120              (t.setPAC = function (e) {
12121                this.writeScreen.setPAC(e);
12122              }),
12123              (t.setBkgData = function (e) {
12124                this.writeScreen.setBkgData(e);
12125              }),
12126              (t.setMode = function (e) {
12127                e !== this.mode &&
12128                  ((this.mode = e),
12129                  Rt.log("INFO", "MODE=" + e),
12130                  "MODE_POP-ON" === this.mode
12131                    ? (this.writeScreen = this.nonDisplayedMemory)
12132                    : ((this.writeScreen = this.displayedMemory),
12133                      this.writeScreen.reset()),
12134                  "MODE_ROLL-UP" !== this.mode &&
12135                    ((this.displayedMemory.nrRollUpRows = null),
12136                    (this.nonDisplayedMemory.nrRollUpRows = null)),
12137                  (this.mode = e));
12138              }),
12139              (t.insertChars = function (e) {
12140                for (var t = 0; t < e.length; t++)
12141                  this.writeScreen.insertChar(e[t]);
12142                var r =
12143                  this.writeScreen === this.displayedMemory
12144                    ? "DISP"
12145                    : "NON_DISP";
12146                Rt.log("INFO", r + ": " + this.writeScreen.getDisplayText(!0)),
12147                  ("MODE_PAINT-ON" !== this.mode &&
12148                    "MODE_ROLL-UP" !== this.mode) ||
12149                    (Rt.log(
12150                      "TEXT",
12151                      "DISPLAYED: " + this.displayedMemory.getDisplayText(!0)
12152                    ),
12153                    this.outputDataUpdate());
12154              }),
12155              (t.ccRCL = function () {
12156                Rt.log("INFO", "RCL - Resume Caption Loading"),
12157                  this.setMode("MODE_POP-ON");
12158              }),
12159              (t.ccBS = function () {
12160                Rt.log("INFO", "BS - BackSpace"),
12161                  "MODE_TEXT" !== this.mode &&
12162                    (this.writeScreen.backSpace(),
12163                    this.writeScreen === this.displayedMemory &&
12164                      this.outputDataUpdate());
12165              }),
12166              (t.ccAOF = function () {}),
12167              (t.ccAON = function () {}),
12168              (t.ccDER = function () {
12169                Rt.log("INFO", "DER- Delete to End of Row"),
12170                  this.writeScreen.clearToEndOfRow(),
12171                  this.outputDataUpdate();
12172              }),
12173              (t.ccRU = function (e) {
12174                Rt.log("INFO", "RU(" + e + ") - Roll Up"),
12175                  (this.writeScreen = this.displayedMemory),
12176                  this.setMode("MODE_ROLL-UP"),
12177                  this.writeScreen.setRollUpRows(e);
12178              }),
12179              (t.ccFON = function () {
12180                Rt.log("INFO", "FON - Flash On"),
12181                  this.writeScreen.setPen({ flash: !0 });
12182              }),
12183              (t.ccRDC = function () {
12184                Rt.log("INFO", "RDC - Resume Direct Captioning"),
12185                  this.setMode("MODE_PAINT-ON");
12186              }),
12187              (t.ccTR = function () {
12188                Rt.log("INFO", "TR"), this.setMode("MODE_TEXT");
12189              }),
12190              (t.ccRTD = function () {
12191                Rt.log("INFO", "RTD"), this.setMode("MODE_TEXT");
12192              }),
12193              (t.ccEDM = function () {
12194                Rt.log("INFO", "EDM - Erase Displayed Memory"),
12195                  this.displayedMemory.reset(),
12196                  this.outputDataUpdate(!0);
12197              }),
12198              (t.ccCR = function () {
12199                Rt.log("INFO", "CR - Carriage Return"),
12200                  this.writeScreen.rollUp(),
12201                  this.outputDataUpdate(!0);
12202              }),
12203              (t.ccENM = function () {
12204                Rt.log("INFO", "ENM - Erase Non-displayed Memory"),
12205                  this.nonDisplayedMemory.reset();
12206              }),
12207              (t.ccEOC = function () {
12208                if (
12209                  (Rt.log("INFO", "EOC - End Of Caption"),
12210                  "MODE_POP-ON" === this.mode)
12211                ) {
12212                  var e = this.displayedMemory;
12213                  (this.displayedMemory = this.nonDisplayedMemory),
12214                    (this.nonDisplayedMemory = e),
12215                    (this.writeScreen = this.nonDisplayedMemory),
12216                    Rt.log(
12217                      "TEXT",
12218                      "DISP: " + this.displayedMemory.getDisplayText()
12219                    );
12220                }
12221                this.outputDataUpdate(!0);
12222              }),
12223              (t.ccTO = function (e) {
12224                Rt.log("INFO", "TO(" + e + ") - Tab Offset"),
12225                  this.writeScreen.moveCursor(e);
12226              }),
12227              (t.ccMIDROW = function (e) {
12228                var t = { flash: !1 };
12229                if (
12230                  ((t.underline = e % 2 == 1), (t.italics = e >= 46), t.italics)
12231                )
12232                  t.foreground = "white";
12233                else {
12234                  var r = Math.floor(e / 2) - 16;
12235                  t.foreground = [
12236                    "white",
12237                    "green",
12238                    "blue",
12239                    "cyan",
12240                    "red",
12241                    "yellow",
12242                    "magenta",
12243                  ][r];
12244                }
12245                Rt.log("INFO", "MIDROW: " + JSON.stringify(t)),
12246                  this.writeScreen.setPen(t);
12247              }),
12248              (t.outputDataUpdate = function (e) {
12249                void 0 === e && (e = !1);
12250                var t = Rt.time;
12251                null !== t &&
12252                  this.outputFilter &&
12253                  (null !== this.cueStartTime || this.displayedMemory.isEmpty()
12254                    ? this.displayedMemory.equals(this.lastOutputScreen) ||
12255                      (this.outputFilter.newCue(
12256                        this.cueStartTime,
12257                        t,
12258                        this.lastOutputScreen
12259                      ),
12260                      e &&
12261                        this.outputFilter.dispatchCue &&
12262                        this.outputFilter.dispatchCue(),
12263                      (this.cueStartTime = this.displayedMemory.isEmpty()
12264                        ? null
12265                        : t))
12266                    : (this.cueStartTime = t),
12267                  this.lastOutputScreen.copy(this.displayedMemory));
12268              }),
12269              (t.cueSplitAtTime = function (e) {
12270                this.outputFilter &&
12271                  (this.displayedMemory.isEmpty() ||
12272                    (this.outputFilter.newCue &&
12273                      this.outputFilter.newCue(
12274                        this.cueStartTime,
12275                        e,
12276                        this.displayedMemory
12277                      ),
12278                    (this.cueStartTime = e)));
12279              }),
12280              e
12281            );
12282          })(),
12283          It = (function () {
12284            function e(e, t, r) {
12285              (this.field = void 0),
12286                (this.outputs = void 0),
12287                (this.channels = void 0),
12288                (this.currChNr = void 0),
12289                (this.lastCmdA = void 0),
12290                (this.lastCmdB = void 0),
12291                (this.lastTime = void 0),
12292                (this.dataCounters = void 0),
12293                (this.field = e || 1),
12294                (this.outputs = [t, r]),
12295                (this.channels = [new Ot(1, t), new Ot(2, r)]),
12296                (this.currChNr = -1),
12297                (this.lastCmdA = null),
12298                (this.lastCmdB = null),
12299                (this.lastTime = null),
12300                (this.dataCounters = { padding: 0, char: 0, cmd: 0, other: 0 });
12301            }
12302            var t = e.prototype;
12303            return (
12304              (t.getHandler = function (e) {
12305                return this.channels[e].getHandler();
12306              }),
12307              (t.setHandler = function (e, t) {
12308                this.channels[e].setHandler(t);
12309              }),
12310              (t.addData = function (e, t) {
12311                var r,
12312                  i,
12313                  a,
12314                  n = !1;
12315                (this.lastTime = e), Rt.setTime(e);
12316                for (var s = 0; s < t.length; s += 2)
12317                  if (
12318                    ((i = 127 & t[s]), (a = 127 & t[s + 1]), 0 !== i || 0 !== a)
12319                  ) {
12320                    if (
12321                      (Rt.log(
12322                        "DATA",
12323                        "[" + wt([t[s], t[s + 1]]) + "] -> (" + wt([i, a]) + ")"
12324                      ),
12325                      (r = this.parseCmd(i, a)) || (r = this.parseMidrow(i, a)),
12326                      r || (r = this.parsePAC(i, a)),
12327                      r || (r = this.parseBackgroundAttributes(i, a)),
12328                      !r)
12329                    )
12330                      if ((n = this.parseChars(i, a)))
12331                        if (this.currChNr && this.currChNr >= 0)
12332                          this.channels[this.currChNr - 1].insertChars(n);
12333                        else
12334                          Rt.log("WARNING", "No channel found yet. TEXT-MODE?");
12335                    r
12336                      ? (this.dataCounters.cmd += 2)
12337                      : n
12338                      ? (this.dataCounters.char += 2)
12339                      : ((this.dataCounters.other += 2),
12340                        Rt.log(
12341                          "WARNING",
12342                          "Couldn't parse cleaned data " +
12343                            wt([i, a]) +
12344                            " orig: " +
12345                            wt([t[s], t[s + 1]])
12346                        ));
12347                  } else this.dataCounters.padding += 2;
12348              }),
12349              (t.parseCmd = function (e, t) {
12350                var r = null;
12351                if (
12352                  !((20 === e || 28 === e) && t >= 32 && t <= 47) &&
12353                  !((23 === e || 31 === e) && t >= 33 && t <= 35)
12354                )
12355                  return !1;
12356                if (e === this.lastCmdA && t === this.lastCmdB)
12357                  return (
12358                    (this.lastCmdA = null),
12359                    (this.lastCmdB = null),
12360                    Rt.log(
12361                      "DEBUG",
12362                      "Repeated command (" + wt([e, t]) + ") is dropped"
12363                    ),
12364                    !0
12365                  );
12366                r = 20 === e || 23 === e ? 1 : 2;
12367                var i = this.channels[r - 1];
12368                return (
12369                  20 === e || 28 === e
12370                    ? 32 === t
12371                      ? i.ccRCL()
12372                      : 33 === t
12373                      ? i.ccBS()
12374                      : 34 === t
12375                      ? i.ccAOF()
12376                      : 35 === t
12377                      ? i.ccAON()
12378                      : 36 === t
12379                      ? i.ccDER()
12380                      : 37 === t
12381                      ? i.ccRU(2)
12382                      : 38 === t
12383                      ? i.ccRU(3)
12384                      : 39 === t
12385                      ? i.ccRU(4)
12386                      : 40 === t
12387                      ? i.ccFON()
12388                      : 41 === t
12389                      ? i.ccRDC()
12390                      : 42 === t
12391                      ? i.ccTR()
12392                      : 43 === t
12393                      ? i.ccRTD()
12394                      : 44 === t
12395                      ? i.ccEDM()
12396                      : 45 === t
12397                      ? i.ccCR()
12398                      : 46 === t
12399                      ? i.ccENM()
12400                      : 47 === t && i.ccEOC()
12401                    : i.ccTO(t - 32),
12402                  (this.lastCmdA = e),
12403                  (this.lastCmdB = t),
12404                  (this.currChNr = r),
12405                  !0
12406                );
12407              }),
12408              (t.parseMidrow = function (e, t) {
12409                var r = null;
12410                return (
12411                  (17 === e || 25 === e) &&
12412                  t >= 32 &&
12413                  t <= 47 &&
12414                  ((r = 17 === e ? 1 : 2) !== this.currChNr
12415                    ? (Rt.log("ERROR", "Mismatch channel in midrow parsing"),
12416                      !1)
12417                    : (this.channels[r - 1].ccMIDROW(t),
12418                      Rt.log("DEBUG", "MIDROW (" + wt([e, t]) + ")"),
12419                      !0))
12420                );
12421              }),
12422              (t.parsePAC = function (e, t) {
12423                var r,
12424                  i = null;
12425                if (
12426                  !(
12427                    ((e >= 17 && e <= 23) || (e >= 25 && e <= 31)) &&
12428                    t >= 64 &&
12429                    t <= 127
12430                  ) &&
12431                  !((16 === e || 24 === e) && t >= 64 && t <= 95)
12432                )
12433                  return !1;
12434                if (e === this.lastCmdA && t === this.lastCmdB)
12435                  return (this.lastCmdA = null), (this.lastCmdB = null), !0;
12436                (r = e <= 23 ? 1 : 2),
12437                  (i =
12438                    t >= 64 && t <= 95
12439                      ? 1 === r
12440                        ? Tt[e]
12441                        : St[e]
12442                      : 1 === r
12443                      ? Et[e]
12444                      : _t[e]);
12445                var a = this.interpretPAC(i, t);
12446                return (
12447                  this.channels[r - 1].setPAC(a),
12448                  (this.lastCmdA = e),
12449                  (this.lastCmdB = t),
12450                  (this.currChNr = r),
12451                  !0
12452                );
12453              }),
12454              (t.interpretPAC = function (e, t) {
12455                var r = t,
12456                  i = {
12457                    color: null,
12458                    italics: !1,
12459                    indent: null,
12460                    underline: !1,
12461                    row: e,
12462                  };
12463                return (
12464                  (r = t > 95 ? t - 96 : t - 64),
12465                  (i.underline = 1 == (1 & r)),
12466                  r <= 13
12467                    ? (i.color = [
12468                        "white",
12469                        "green",
12470                        "blue",
12471                        "cyan",
12472                        "red",
12473                        "yellow",
12474                        "magenta",
12475                        "white",
12476                      ][Math.floor(r / 2)])
12477                    : r <= 15
12478                    ? ((i.italics = !0), (i.color = "white"))
12479                    : (i.indent = 4 * Math.floor((r - 16) / 2)),
12480                  i
12481                );
12482              }),
12483              (t.parseChars = function (e, t) {
12484                var r = null,
12485                  i = null,
12486                  a = null;
12487                if (
12488                  (e >= 25 ? ((r = 2), (a = e - 8)) : ((r = 1), (a = e)),
12489                  a >= 17 && a <= 19)
12490                ) {
12491                  var n = t;
12492                  (n = 17 === a ? t + 80 : 18 === a ? t + 112 : t + 144),
12493                    Rt.log(
12494                      "INFO",
12495                      "Special char '" + bt(n) + "' in channel " + r
12496                    ),
12497                    (i = [n]);
12498                } else e >= 32 && e <= 127 && (i = 0 === t ? [e] : [e, t]);
12499                if (i) {
12500                  var s = wt(i);
12501                  Rt.log("DEBUG", "Char codes =  " + s.join(",")),
12502                    (this.lastCmdA = null),
12503                    (this.lastCmdB = null);
12504                }
12505                return i;
12506              }),
12507              (t.parseBackgroundAttributes = function (e, t) {
12508                var r, i, a;
12509                return (
12510                  (((16 === e || 24 === e) && t >= 32 && t <= 47) ||
12511                    ((23 === e || 31 === e) && t >= 45 && t <= 47)) &&
12512                  ((r = {}),
12513                  16 === e || 24 === e
12514                    ? ((i = Math.floor((t - 32) / 2)),
12515                      (r.background = At[i]),
12516                      t % 2 == 1 && (r.background = r.background + "_semi"))
12517                    : 45 === t
12518                    ? (r.background = "transparent")
12519                    : ((r.foreground = "black"),
12520                      47 === t && (r.underline = !0)),
12521                  (a = e < 24 ? 1 : 2),
12522                  this.channels[a - 1].setBkgData(r),
12523                  (this.lastCmdA = null),
12524                  (this.lastCmdB = null),
12525                  !0)
12526                );
12527              }),
12528              (t.reset = function () {
12529                for (var e = 0; e < this.channels.length; e++)
12530                  this.channels[e] && this.channels[e].reset();
12531                (this.lastCmdA = null), (this.lastCmdB = null);
12532              }),
12533              (t.cueSplitAtTime = function (e) {
12534                for (var t = 0; t < this.channels.length; t++)
12535                  this.channels[t] && this.channels[t].cueSplitAtTime(e);
12536              }),
12537              e
12538            );
12539          })(),
12540          Pt = (function () {
12541            function e(e, t) {
12542              (this.timelineController = void 0),
12543                (this.trackName = void 0),
12544                (this.startTime = void 0),
12545                (this.endTime = void 0),
12546                (this.screen = void 0),
12547                (this.timelineController = e),
12548                (this.trackName = t),
12549                (this.startTime = null),
12550                (this.endTime = null),
12551                (this.screen = null);
12552            }
12553            var t = e.prototype;
12554            return (
12555              (t.dispatchCue = function () {
12556                null !== this.startTime &&
12557                  (this.timelineController.addCues(
12558                    this.trackName,
12559                    this.startTime,
12560                    this.endTime,
12561                    this.screen
12562                  ),
12563                  (this.startTime = null));
12564              }),
12565              (t.newCue = function (e, t, r) {
12566                (null === this.startTime || this.startTime > e) &&
12567                  (this.startTime = e),
12568                  (this.endTime = t),
12569                  (this.screen = r),
12570                  this.timelineController.createCaptionsTrack(this.trackName);
12571              }),
12572              e
12573            );
12574          })(),
12575          xt = function (e, t, r) {
12576            return e.substr(r || 0, t.length) === t;
12577          },
12578          Mt = function (e) {
12579            for (var t = 5381, r = e.length; r; )
12580              t = (33 * t) ^ e.charCodeAt(--r);
12581            return (t >>> 0).toString();
12582          },
12583          Ft = {
12584            parse: function (e, t, r, i, a, n) {
12585              var s,
12586                o = Object(Fe.b)(new Uint8Array(e))
12587                  .trim()
12588                  .replace(/\r\n|\n\r|\n|\r/g, "\n")
12589                  .split("\n"),
12590                d = "00:00.000",
12591                u = 0,
12592                c = 0,
12593                h = 0,
12594                f = [],
12595                g = !0,
12596                p = !1,
12597                v = new pt();
12598              (v.oncue = function (e) {
12599                var t = r[i],
12600                  a = r.ccOffset;
12601                t &&
12602                  t.new &&
12603                  (void 0 !== c
12604                    ? (a = r.ccOffset = t.start)
12605                    : (function (e, t, r) {
12606                        var i = e[t],
12607                          a = e[i.prevCC];
12608                        if (!a || (!a.new && i.new))
12609                          return (
12610                            (e.ccOffset = e.presentationOffset = i.start),
12611                            void (i.new = !1)
12612                          );
12613                        for (; a && a.new; )
12614                          (e.ccOffset += i.start - a.start),
12615                            (i.new = !1),
12616                            (a = e[(i = a).prevCC]);
12617                        e.presentationOffset = r;
12618                      })(r, i, h)),
12619                  h && (a = h - r.presentationOffset),
12620                  p && ((e.startTime += a - c), (e.endTime += a - c)),
12621                  (e.id =
12622                    Mt(e.startTime.toString()) +
12623                    Mt(e.endTime.toString()) +
12624                    Mt(e.text)),
12625                  (e.text = decodeURIComponent(encodeURIComponent(e.text))),
12626                  e.endTime > 0 && f.push(e);
12627              }),
12628                (v.onparsingerror = function (e) {
12629                  s = e;
12630                }),
12631                (v.onflush = function () {
12632                  s && n ? n(s) : a(f);
12633                }),
12634                o.forEach(function (e) {
12635                  if (g) {
12636                    if (xt(e, "X-TIMESTAMP-MAP=")) {
12637                      (g = !1),
12638                        (p = !0),
12639                        e
12640                          .substr(16)
12641                          .split(",")
12642                          .forEach(function (e) {
12643                            xt(e, "LOCAL:")
12644                              ? (d = e.substr(6))
12645                              : xt(e, "MPEGTS:") && (u = parseInt(e.substr(7)));
12646                          });
12647                      try {
12648                        t + (9e4 * r[i].start || 0) < 0 && (t += 8589934592),
12649                          (u -= t),
12650                          (c =
12651                            (function (e) {
12652                              var t = parseInt(e.substr(-3)),
12653                                r = parseInt(e.substr(-6, 2)),
12654                                i = parseInt(e.substr(-9, 2)),
12655                                a =
12656                                  e.length > 9
12657                                    ? parseInt(e.substr(0, e.indexOf(":")))
12658                                    : 0;
12659                              if (
12660                                !(
12661                                  Object(l.a)(t) &&
12662                                  Object(l.a)(r) &&
12663                                  Object(l.a)(i) &&
12664                                  Object(l.a)(a)
12665                                )
12666                              )
12667                                throw Error(
12668                                  "Malformed X-TIMESTAMP-MAP: Local:" + e
12669                                );
12670                              return (
12671                                (t += 1e3 * r), (t += 6e4 * i), (t += 36e5 * a)
12672                              );
12673                            })(d) / 1e3),
12674                          (h = u / 9e4);
12675                      } catch (e) {
12676                        (p = !1), (s = e);
12677                      }
12678                      return;
12679                    }
12680                    "" === e && (g = !1);
12681                  }
12682                  v.parse(e + "\n");
12683                }),
12684                v.flush();
12685            },
12686          };
12687        function Ut(e) {
12688          if (void 0 === e)
12689            throw new ReferenceError(
12690              "this hasn't been initialised - super() hasn't been called"
12691            );
12692          return e;
12693        }
12694        function Nt(e, t) {
12695          return e && e.label === t.name && !(e.textTrack1 || e.textTrack2);
12696        }
12697        var Bt = (function (e) {
12698          var t, r;
12699          function i(t) {
12700            var r;
12701            if (
12702              (((r =
12703                e.call(
12704                  this,
12705                  t,
12706                  d.a.MEDIA_ATTACHING,
12707                  d.a.MEDIA_DETACHING,
12708                  d.a.FRAG_PARSING_USERDATA,
12709                  d.a.FRAG_DECRYPTED,
12710                  d.a.MANIFEST_LOADING,
12711                  d.a.MANIFEST_LOADED,
12712                  d.a.FRAG_LOADED,
12713                  d.a.INIT_PTS_FOUND
12714                ) || this).media = null),
12715              (r.config = void 0),
12716              (r.enabled = !0),
12717              (r.Cues = void 0),
12718              (r.textTracks = []),
12719              (r.tracks = []),
12720              (r.initPTS = []),
12721              (r.unparsedVttFrags = []),
12722              (r.cueRanges = []),
12723              (r.captionsTracks = {}),
12724              (r.captionsProperties = void 0),
12725              (r.cea608Parser = void 0),
12726              (r.lastSn = -1),
12727              (r.prevCC = -1),
12728              (r.vttCCs = null),
12729              (r.hls = t),
12730              (r.config = t.config),
12731              (r.Cues = t.config.cueHandler),
12732              (r.captionsProperties = {
12733                textTrack1: {
12734                  label: r.config.captionsTextTrack1Label,
12735                  languageCode: r.config.captionsTextTrack1LanguageCode,
12736                },
12737                textTrack2: {
12738                  label: r.config.captionsTextTrack2Label,
12739                  languageCode: r.config.captionsTextTrack2LanguageCode,
12740                },
12741              }),
12742              r.config.enableCEA708Captions)
12743            ) {
12744              var i = new Pt(Ut(r), "textTrack1"),
12745                a = new Pt(Ut(r), "textTrack2");
12746              r.cea608Parser = new It(0, i, a);
12747            }
12748            return r;
12749          }
12750          (r = e),
12751            ((t = i).prototype = Object.create(r.prototype)),
12752            (t.prototype.constructor = t),
12753            (t.__proto__ = r);
12754          var a = i.prototype;
12755          return (
12756            (a.addCues = function (e, t, r, i) {
12757              for (
12758                var a, n, s, o, l = this.cueRanges, d = !1, u = l.length;
12759                u--;
12760
12761              ) {
12762                var c = l[u],
12763                  h =
12764                    ((a = c[0]),
12765                    (n = c[1]),
12766                    (s = t),
12767                    (o = r),
12768                    Math.min(n, o) - Math.max(a, s));
12769                if (
12770                  h >= 0 &&
12771                  ((c[0] = Math.min(c[0], t)),
12772                  (c[1] = Math.max(c[1], r)),
12773                  (d = !0),
12774                  h / (r - t) > 0.5)
12775                )
12776                  return;
12777              }
12778              d || l.push([t, r]),
12779                this.Cues.newCue(this.captionsTracks[e], t, r, i);
12780            }),
12781            (a.onInitPtsFound = function (e) {
12782              var t = this,
12783                r = e.frag,
12784                i = e.id,
12785                a = e.initPTS,
12786                n = this.unparsedVttFrags;
12787              "main" === i && (this.initPTS[r.cc] = a),
12788                n.length &&
12789                  ((this.unparsedVttFrags = []),
12790                  n.forEach(function (e) {
12791                    t.onFragLoaded(e);
12792                  }));
12793            }),
12794            (a.getExistingTrack = function (e) {
12795              var t = this.media;
12796              if (t)
12797                for (var r = 0; r < t.textTracks.length; r++) {
12798                  var i = t.textTracks[r];
12799                  if (i[e]) return i;
12800                }
12801              return null;
12802            }),
12803            (a.createCaptionsTrack = function (e) {
12804              var t = this.captionsProperties,
12805                r = this.captionsTracks,
12806                i = this.media,
12807                a = t[e],
12808                n = a.label,
12809                s = a.languageCode;
12810              if (!r[e]) {
12811                var o = this.getExistingTrack(e);
12812                if (o) (r[e] = o), Ne(r[e]), Ue(r[e], i);
12813                else {
12814                  var l = this.createTextTrack("captions", n, s);
12815                  l && ((l[e] = !0), (r[e] = l));
12816                }
12817              }
12818            }),
12819            (a.createTextTrack = function (e, t, r) {
12820              var i = this.media;
12821              if (i) return i.addTextTrack(e, t, r);
12822            }),
12823            (a.destroy = function () {
12824              e.prototype.destroy.call(this);
12825            }),
12826            (a.onMediaAttaching = function (e) {
12827              (this.media = e.media), this._cleanTracks();
12828            }),
12829            (a.onMediaDetaching = function () {
12830              var e = this.captionsTracks;
12831              Object.keys(e).forEach(function (t) {
12832                Ne(e[t]), delete e[t];
12833              });
12834            }),
12835            (a.onManifestLoading = function () {
12836              (this.lastSn = -1),
12837                (this.prevCC = -1),
12838                (this.vttCCs = {
12839                  ccOffset: 0,
12840                  presentationOffset: 0,
12841                  0: { start: 0, prevCC: -1, new: !1 },
12842                }),
12843                this._cleanTracks();
12844            }),
12845            (a._cleanTracks = function () {
12846              var e = this.media;
12847              if (e) {
12848                var t = e.textTracks;
12849                if (t) for (var r = 0; r < t.length; r++) Ne(t[r]);
12850              }
12851            }),
12852            (a.onManifestLoaded = function (e) {
12853              var t = this;
12854              if (
12855                ((this.textTracks = []),
12856                (this.unparsedVttFrags = this.unparsedVttFrags || []),
12857                (this.initPTS = []),
12858                (this.cueRanges = []),
12859                this.config.enableWebVTT)
12860              ) {
12861                this.tracks = e.subtitles || [];
12862                var r = this.media ? this.media.textTracks : [];
12863                this.tracks.forEach(function (e, i) {
12864                  var a;
12865                  if (i < r.length) {
12866                    for (var n = null, s = 0; s < r.length; s++)
12867                      if (Nt(r[s], e)) {
12868                        n = r[s];
12869                        break;
12870                      }
12871                    n && (a = n);
12872                  }
12873                  a || (a = t.createTextTrack("subtitles", e.name, e.lang)),
12874                    e.default
12875                      ? (a.mode = t.hls.subtitleDisplay ? "showing" : "hidden")
12876                      : (a.mode = "disabled"),
12877                    t.textTracks.push(a);
12878                });
12879              }
12880            }),
12881            (a.onFragLoaded = function (e) {
12882              var t = e.frag,
12883                r = e.payload,
12884                i = this.cea608Parser,
12885                a = this.initPTS,
12886                n = this.lastSn,
12887                s = this.unparsedVttFrags;
12888              if ("main" === t.type) {
12889                var o = t.sn;
12890                t.sn !== n + 1 && i && i.reset(), (this.lastSn = o);
12891              } else if ("subtitle" === t.type)
12892                if (r.byteLength) {
12893                  if (!Object(l.a)(a[t.cc]))
12894                    return (
12895                      s.push(e),
12896                      void (
12897                        a.length &&
12898                        this.hls.trigger(d.a.SUBTITLE_FRAG_PROCESSED, {
12899                          success: !1,
12900                          frag: t,
12901                        })
12902                      )
12903                    );
12904                  var u = t.decryptdata;
12905                  (null != u && null != u.key && "AES-128" === u.method) ||
12906                    this._parseVTTs(t, r);
12907                } else
12908                  this.hls.trigger(d.a.SUBTITLE_FRAG_PROCESSED, {
12909                    success: !1,
12910                    frag: t,
12911                  });
12912            }),
12913            (a._parseVTTs = function (e, t) {
12914              var r = this.hls,
12915                i = this.prevCC,
12916                a = this.textTracks,
12917                n = this.vttCCs;
12918              n[e.cc] ||
12919                ((n[e.cc] = { start: e.start, prevCC: i, new: !0 }),
12920                (this.prevCC = e.cc)),
12921                Ft.parse(
12922                  t,
12923                  this.initPTS[e.cc],
12924                  n,
12925                  e.cc,
12926                  function (t) {
12927                    var i = a[e.level];
12928                    "disabled" !== i.mode
12929                      ? (t.forEach(function (e) {
12930                          if (!i.cues.getCueById(e.id))
12931                            try {
12932                              if ((i.addCue(e), !i.cues.getCueById(e.id)))
12933                                throw new Error("addCue is failed for: " + e);
12934                            } catch (r) {
12935                              u.b.debug("Failed occurred on adding cues: " + r);
12936                              var t = new window.TextTrackCue(
12937                                e.startTime,
12938                                e.endTime,
12939                                e.text
12940                              );
12941                              (t.id = e.id), i.addCue(t);
12942                            }
12943                        }),
12944                        r.trigger(d.a.SUBTITLE_FRAG_PROCESSED, {
12945                          success: !0,
12946                          frag: e,
12947                        }))
12948                      : r.trigger(d.a.SUBTITLE_FRAG_PROCESSED, {
12949                          success: !1,
12950                          frag: e,
12951                        });
12952                  },
12953                  function (t) {
12954                    u.b.log("Failed to parse VTT cue: " + t),
12955                      r.trigger(d.a.SUBTITLE_FRAG_PROCESSED, {
12956                        success: !1,
12957                        frag: e,
12958                      });
12959                  }
12960                );
12961            }),
12962            (a.onFragDecrypted = function (e) {
12963              var t = e.frag,
12964                r = e.payload;
12965              if ("subtitle" === t.type) {
12966                if (!Object(l.a)(this.initPTS[t.cc]))
12967                  return void this.unparsedVttFrags.push(e);
12968                this._parseVTTs(t, r);
12969              }
12970            }),
12971            (a.onFragParsingUserdata = function (e) {
12972              if (this.enabled && this.cea608Parser)
12973                for (var t = 0; t < e.samples.length; t++) {
12974                  var r = e.samples[t].bytes;
12975                  if (r) {
12976                    var i = this.extractCea608Data(r);
12977                    this.cea608Parser.addData(e.samples[t].pts, i);
12978                  }
12979                }
12980            }),
12981            (a.extractCea608Data = function (e) {
12982              for (var t, r, i, a = 31 & e[0], n = 2, s = [], o = 0; o < a; o++)
12983                (t = e[n++]),
12984                  (r = 127 & e[n++]),
12985                  (i = 127 & e[n++]),
12986                  (0 === r && 0 === i) ||
12987                    (0 != (4 & t) && 0 === (3 & t) && (s.push(r), s.push(i)));
12988              return s;
12989            }),
12990            i
12991          );
12992        })(h);
12993        function Gt(e, t) {
12994          for (var r = 0; r < t.length; r++) {
12995            var i = t[r];
12996            (i.enumerable = i.enumerable || !1),
12997              (i.configurable = !0),
12998              "value" in i && (i.writable = !0),
12999              Object.defineProperty(e, i.key, i);
13000          }
13001        }
13002        function Kt(e) {
13003          for (var t = [], r = 0; r < e.length; r++) {
13004            var i = e[r];
13005            "subtitles" === i.kind && i.label && t.push(e[r]);
13006          }
13007          return t;
13008        }
13009        var jt = (function (e) {
13010            var t, r;
13011            function i(t) {
13012              var r;
13013              return (
13014                ((r =
13015                  e.call(
13016                    this,
13017                    t,
13018                    d.a.MEDIA_ATTACHED,
13019                    d.a.MEDIA_DETACHING,
13020                    d.a.MANIFEST_LOADED,
13021                    d.a.SUBTITLE_TRACK_LOADED
13022                  ) || this).tracks = []),
13023                (r.trackId = -1),
13024                (r.media = null),
13025                (r.stopped = !0),
13026                (r.subtitleDisplay = !0),
13027                (r.queuedDefaultTrack = null),
13028                r
13029              );
13030            }
13031            (r = e),
13032              ((t = i).prototype = Object.create(r.prototype)),
13033              (t.prototype.constructor = t),
13034              (t.__proto__ = r);
13035            var a,
13036              n,
13037              s,
13038              o = i.prototype;
13039            return (
13040              (o.destroy = function () {
13041                h.prototype.destroy.call(this);
13042              }),
13043              (o.onMediaAttached = function (e) {
13044                var t = this;
13045                (this.media = e.media),
13046                  this.media &&
13047                    (Object(l.a)(this.queuedDefaultTrack) &&
13048                      ((this.subtitleTrack = this.queuedDefaultTrack),
13049                      (this.queuedDefaultTrack = null)),
13050                    (this.trackChangeListener =
13051                      this._onTextTracksChanged.bind(this)),
13052                    (this.useTextTrackPolling = !(
13053                      this.media.textTracks &&
13054                      "onchange" in this.media.textTracks
13055                    )),
13056                    this.useTextTrackPolling
13057                      ? (this.subtitlePollingInterval = setInterval(
13058                          function () {
13059                            t.trackChangeListener();
13060                          },
13061                          500
13062                        ))
13063                      : this.media.textTracks.addEventListener(
13064                          "change",
13065                          this.trackChangeListener
13066                        ));
13067              }),
13068              (o.onMediaDetaching = function () {
13069                this.media &&
13070                  (this.useTextTrackPolling
13071                    ? clearInterval(this.subtitlePollingInterval)
13072                    : this.media.textTracks.removeEventListener(
13073                        "change",
13074                        this.trackChangeListener
13075                      ),
13076                  Object(l.a)(this.subtitleTrack) &&
13077                    (this.queuedDefaultTrack = this.subtitleTrack),
13078                  Kt(this.media.textTracks).forEach(function (e) {
13079                    Ne(e);
13080                  }),
13081                  (this.subtitleTrack = -1),
13082                  (this.media = null));
13083              }),
13084              (o.onManifestLoaded = function (e) {
13085                var t = this,
13086                  r = e.subtitles || [];
13087                (this.tracks = r),
13088                  this.hls.trigger(d.a.SUBTITLE_TRACKS_UPDATED, {
13089                    subtitleTracks: r,
13090                  }),
13091                  r.forEach(function (e) {
13092                    e.default &&
13093                      (t.media
13094                        ? (t.subtitleTrack = e.id)
13095                        : (t.queuedDefaultTrack = e.id));
13096                  });
13097              }),
13098              (o.onSubtitleTrackLoaded = function (e) {
13099                var t = this,
13100                  r = e.id,
13101                  i = e.details,
13102                  a = this.trackId,
13103                  n = this.tracks,
13104                  s = n[a];
13105                if (r >= n.length || r !== a || !s || this.stopped)
13106                  this._clearReloadTimer();
13107                else if ((u.b.log("subtitle track " + r + " loaded"), i.live)) {
13108                  var o = ae(s.details, i, e.stats.trequest);
13109                  u.b.log("Reloading live subtitle playlist in " + o + "ms"),
13110                    (this.timer = setTimeout(function () {
13111                      t._loadCurrentTrack();
13112                    }, o));
13113                } else this._clearReloadTimer();
13114              }),
13115              (o.startLoad = function () {
13116                (this.stopped = !1), this._loadCurrentTrack();
13117              }),
13118              (o.stopLoad = function () {
13119                (this.stopped = !0), this._clearReloadTimer();
13120              }),
13121              (o._clearReloadTimer = function () {
13122                this.timer && (clearTimeout(this.timer), (this.timer = null));
13123              }),
13124              (o._loadCurrentTrack = function () {
13125                var e = this.trackId,
13126                  t = this.tracks,
13127                  r = this.hls,
13128                  i = t[e];
13129                e < 0 ||
13130                  !i ||
13131                  (i.details && !i.details.live) ||
13132                  (u.b.log("Loading subtitle track " + e),
13133                  r.trigger(d.a.SUBTITLE_TRACK_LOADING, { url: i.url, id: e }));
13134              }),
13135              (o._toggleTrackModes = function (e) {
13136                var t = this.media,
13137                  r = this.subtitleDisplay,
13138                  i = this.trackId;
13139                if (t) {
13140                  var a = Kt(t.textTracks);
13141                  if (-1 === e)
13142                    [].slice.call(a).forEach(function (e) {
13143                      e.mode = "disabled";
13144                    });
13145                  else {
13146                    var n = a[i];
13147                    n && (n.mode = "disabled");
13148                  }
13149                  var s = a[e];
13150                  s && (s.mode = r ? "showing" : "hidden");
13151                }
13152              }),
13153              (o._setSubtitleTrackInternal = function (e) {
13154                var t = this.hls,
13155                  r = this.tracks;
13156                !Object(l.a)(e) ||
13157                  e < -1 ||
13158                  e >= r.length ||
13159                  ((this.trackId = e),
13160                  u.b.log("Switching to subtitle track " + e),
13161                  t.trigger(d.a.SUBTITLE_TRACK_SWITCH, { id: e }),
13162                  this._loadCurrentTrack());
13163              }),
13164              (o._onTextTracksChanged = function () {
13165                if (this.media) {
13166                  for (
13167                    var e = -1, t = Kt(this.media.textTracks), r = 0;
13168                    r < t.length;
13169                    r++
13170                  )
13171                    if ("hidden" === t[r].mode) e = r;
13172                    else if ("showing" === t[r].mode) {
13173                      e = r;
13174                      break;
13175                    }
13176                  this.subtitleTrack = e;
13177                }
13178              }),
13179              (a = i),
13180              (n = [
13181                {
13182                  key: "subtitleTracks",
13183                  get: function () {
13184                    return this.tracks;
13185                  },
13186                },
13187                {
13188                  key: "subtitleTrack",
13189                  get: function () {
13190                    return this.trackId;
13191                  },
13192                  set: function (e) {
13193                    this.trackId !== e &&
13194                      (this._toggleTrackModes(e),
13195                      this._setSubtitleTrackInternal(e));
13196                  },
13197                },
13198              ]) && Gt(a.prototype, n),
13199              s && Gt(a, s),
13200              i
13201            );
13202          })(h),
13203          Ht = r(7);
13204        var Vt,
13205          Yt = window.performance,
13206          Wt = (function (e) {
13207            var t, r;
13208            function i(t, r) {
13209              var i;
13210              return (
13211                ((i =
13212                  e.call(
13213                    this,
13214                    t,
13215                    d.a.MEDIA_ATTACHED,
13216                    d.a.MEDIA_DETACHING,
13217                    d.a.ERROR,
13218                    d.a.KEY_LOADED,
13219                    d.a.FRAG_LOADED,
13220                    d.a.SUBTITLE_TRACKS_UPDATED,
13221                    d.a.SUBTITLE_TRACK_SWITCH,
13222                    d.a.SUBTITLE_TRACK_LOADED,
13223                    d.a.SUBTITLE_FRAG_PROCESSED,
13224                    d.a.LEVEL_UPDATED
13225                  ) || this).fragmentTracker = r),
13226                (i.config = t.config),
13227                (i.state = pe),
13228                (i.tracks = []),
13229                (i.tracksBuffered = []),
13230                (i.currentTrackId = -1),
13231                (i.decrypter = new Ht.a(t, t.config)),
13232                (i.lastAVStart = 0),
13233                (i._onMediaSeeking = i.onMediaSeeking.bind(
13234                  (function (e) {
13235                    if (void 0 === e)
13236                      throw new ReferenceError(
13237                        "this hasn't been initialised - super() hasn't been called"
13238                      );
13239                    return e;
13240                  })(i)
13241                )),
13242                i
13243              );
13244            }
13245            (r = e),
13246              ((t = i).prototype = Object.create(r.prototype)),
13247              (t.prototype.constructor = t),
13248              (t.__proto__ = r);
13249            var a = i.prototype;
13250            return (
13251              (a.onSubtitleFragProcessed = function (e) {
13252                var t = e.frag,
13253                  r = e.success;
13254                if (((this.fragPrevious = t), (this.state = me), r)) {
13255                  var i = this.tracksBuffered[this.currentTrackId];
13256                  if (i) {
13257                    for (var a, n = t.start, s = 0; s < i.length; s++)
13258                      if (n >= i[s].start && n <= i[s].end) {
13259                        a = i[s];
13260                        break;
13261                      }
13262                    var o = t.start + t.duration;
13263                    a ? (a.end = o) : ((a = { start: n, end: o }), i.push(a));
13264                  }
13265                }
13266              }),
13267              (a.onMediaAttached = function (e) {
13268                var t = e.media;
13269                (this.media = t),
13270                  t.addEventListener("seeking", this._onMediaSeeking),
13271                  (this.state = me);
13272              }),
13273              (a.onMediaDetaching = function () {
13274                var e = this;
13275                this.media &&
13276                  (this.media.removeEventListener(
13277                    "seeking",
13278                    this._onMediaSeeking
13279                  ),
13280                  this.fragmentTracker.removeAllFragments(),
13281                  (this.currentTrackId = -1),
13282                  this.tracks.forEach(function (t) {
13283                    e.tracksBuffered[t.id] = [];
13284                  }),
13285                  (this.media = null),
13286                  (this.state = pe));
13287              }),
13288              (a.onError = function (e) {
13289                var t = e.frag;
13290                t && "subtitle" === t.type && (this.state = me);
13291              }),
13292              (a.onSubtitleTracksUpdated = function (e) {
13293                var t = this;
13294                u.b.log("subtitle tracks updated"),
13295                  (this.tracksBuffered = []),
13296                  (this.tracks = e.subtitleTracks),
13297                  this.tracks.forEach(function (e) {
13298                    t.tracksBuffered[e.id] = [];
13299                  });
13300              }),
13301              (a.onSubtitleTrackSwitch = function (e) {
13302                if (
13303                  ((this.currentTrackId = e.id),
13304                  this.tracks &&
13305                    this.tracks.length &&
13306                    -1 !== this.currentTrackId)
13307                ) {
13308                  var t = this.tracks[this.currentTrackId];
13309                  t && t.details && this.setInterval(500);
13310                } else this.clearInterval();
13311              }),
13312              (a.onSubtitleTrackLoaded = function (e) {
13313                var t = e.id,
13314                  r = e.details,
13315                  i = this.currentTrackId,
13316                  a = this.tracks,
13317                  n = a[i];
13318                t >= a.length ||
13319                  t !== i ||
13320                  !n ||
13321                  (r.live &&
13322                    (function (e, t, r) {
13323                      void 0 === r && (r = 0);
13324                      var i = -1;
13325                      ie(e, t, function (e, t, r) {
13326                        (t.start = e.start), (i = r);
13327                      });
13328                      var a = t.fragments;
13329                      if (i < 0)
13330                        a.forEach(function (e) {
13331                          e.start += r;
13332                        });
13333                      else
13334                        for (var n = i + 1; n < a.length; n++)
13335                          a[n].start = a[n - 1].start + a[n - 1].duration;
13336                    })(n.details, r, this.lastAVStart),
13337                  (n.details = r),
13338                  this.setInterval(500));
13339              }),
13340              (a.onKeyLoaded = function () {
13341                this.state === be && (this.state = me);
13342              }),
13343              (a.onFragLoaded = function (e) {
13344                var t = this.fragCurrent,
13345                  r = e.frag.decryptdata,
13346                  i = e.frag,
13347                  a = this.hls;
13348                if (
13349                  this.state === Te &&
13350                  t &&
13351                  "subtitle" === e.frag.type &&
13352                  t.sn === e.frag.sn &&
13353                  e.payload.byteLength > 0 &&
13354                  r &&
13355                  r.key &&
13356                  "AES-128" === r.method
13357                ) {
13358                  var n = Yt.now();
13359                  this.decrypter.decrypt(
13360                    e.payload,
13361                    r.key.buffer,
13362                    r.iv.buffer,
13363                    function (e) {
13364                      var t = Yt.now();
13365                      a.trigger(d.a.FRAG_DECRYPTED, {
13366                        frag: i,
13367                        payload: e,
13368                        stats: { tstart: n, tdecrypt: t },
13369                      });
13370                    }
13371                  );
13372                }
13373              }),
13374              (a.onLevelUpdated = function (e) {
13375                var t = e.details.fragments;
13376                this.lastAVStart = t.length ? t[0].start : 0;
13377              }),
13378              (a.doTick = function () {
13379                if (this.media)
13380                  switch (this.state) {
13381                    case me:
13382                      var e = this.config,
13383                        t = this.currentTrackId,
13384                        r = this.fragmentTracker,
13385                        i = this.media,
13386                        a = this.tracks;
13387                      if (!a || !a[t] || !a[t].details) break;
13388                      var n,
13389                        s = e.maxBufferHole,
13390                        o = e.maxFragLookUpTolerance,
13391                        l = Math.min(e.maxBufferLength, e.maxMaxBufferLength),
13392                        c = H.bufferedInfo(
13393                          this._getBuffered(),
13394                          i.currentTime,
13395                          s
13396                        ),
13397                        h = c.end,
13398                        f = c.len,
13399                        g = a[t].details,
13400                        p = g.fragments,
13401                        v = p.length,
13402                        m = p[v - 1].start + p[v - 1].duration;
13403                      if (f > l) return;
13404                      var y = this.fragPrevious;
13405                      h < m
13406                        ? (y &&
13407                            g.hasProgramDateTime &&
13408                            (n = le(p, y.endProgramDateTime, o)),
13409                          n || (n = de(y, p, h, o)))
13410                        : (n = p[v - 1]),
13411                        n && n.encrypted
13412                          ? (u.b.log("Loading key for " + n.sn),
13413                            (this.state = be),
13414                            this.hls.trigger(d.a.KEY_LOADING, { frag: n }))
13415                          : n &&
13416                            r.getState(n) === U &&
13417                            ((this.fragCurrent = n),
13418                            (this.state = Te),
13419                            this.hls.trigger(d.a.FRAG_LOADING, { frag: n }));
13420                  }
13421                else this.state = me;
13422              }),
13423              (a.stopLoad = function () {
13424                (this.lastAVStart = 0), e.prototype.stopLoad.call(this);
13425              }),
13426              (a._getBuffered = function () {
13427                return this.tracksBuffered[this.currentTrackId] || [];
13428              }),
13429              (a.onMediaSeeking = function () {
13430                this.fragPrevious = null;
13431              }),
13432              i
13433            );
13434          })(Ce);
13435        !(function (e) {
13436          (e.WIDEVINE = "com.widevine.alpha"),
13437            (e.PLAYREADY = "com.microsoft.playready");
13438        })(Vt || (Vt = {}));
13439        var qt =
13440          "undefined" != typeof window &&
13441          window.navigator &&
13442          window.navigator.requestMediaKeySystemAccess
13443            ? window.navigator.requestMediaKeySystemAccess.bind(
13444                window.navigator
13445              )
13446            : null;
13447        function zt(e, t) {
13448          for (var r = 0; r < t.length; r++) {
13449            var i = t[r];
13450            (i.enumerable = i.enumerable || !1),
13451              (i.configurable = !0),
13452              "value" in i && (i.writable = !0),
13453              Object.defineProperty(e, i.key, i);
13454          }
13455        }
13456        var Xt = (function (e) {
13457          var t, r;
13458          function i(t) {
13459            var r;
13460            return (
13461              ((r =
13462                e.call(
13463                  this,
13464                  t,
13465                  d.a.MEDIA_ATTACHED,
13466                  d.a.MEDIA_DETACHED,
13467                  d.a.MANIFEST_PARSED
13468                ) || this)._widevineLicenseUrl = void 0),
13469              (r._licenseXhrSetup = void 0),
13470              (r._emeEnabled = void 0),
13471              (r._requestMediaKeySystemAccess = void 0),
13472              (r._config = void 0),
13473              (r._mediaKeysList = []),
13474              (r._media = null),
13475              (r._hasSetMediaKeys = !1),
13476              (r._requestLicenseFailureCount = 0),
13477              (r._onMediaEncrypted = function (e) {
13478                u.b.log(
13479                  'Media is encrypted using "' +
13480                    e.initDataType +
13481                    '" init data type'
13482                ),
13483                  r._attemptSetMediaKeys(),
13484                  r._generateRequestWithPreferredKeySession(
13485                    e.initDataType,
13486                    e.initData
13487                  );
13488              }),
13489              (r._config = t.config),
13490              (r._widevineLicenseUrl = r._config.widevineLicenseUrl),
13491              (r._licenseXhrSetup = r._config.licenseXhrSetup),
13492              (r._emeEnabled = r._config.emeEnabled),
13493              (r._requestMediaKeySystemAccess =
13494                r._config.requestMediaKeySystemAccessFunc),
13495              r
13496            );
13497          }
13498          (r = e),
13499            ((t = i).prototype = Object.create(r.prototype)),
13500            (t.prototype.constructor = t),
13501            (t.__proto__ = r);
13502          var a,
13503            n,
13504            s,
13505            l = i.prototype;
13506          return (
13507            (l.getLicenseServerUrl = function (e) {
13508              switch (e) {
13509                case Vt.WIDEVINE:
13510                  if (!this._widevineLicenseUrl) break;
13511                  return this._widevineLicenseUrl;
13512              }
13513              throw new Error(
13514                'no license server URL configured for key-system "' + e + '"'
13515              );
13516            }),
13517            (l._attemptKeySystemAccess = function (e, t, r) {
13518              var i = this,
13519                a = (function (e, t, r) {
13520                  switch (e) {
13521                    case Vt.WIDEVINE:
13522                      return (function (e, t) {
13523                        var r = { videoCapabilities: [] };
13524                        return (
13525                          t.forEach(function (e) {
13526                            r.videoCapabilities.push({
13527                              contentType: 'video/mp4; codecs="' + e + '"',
13528                            });
13529                          }),
13530                          [r]
13531                        );
13532                      })(0, r);
13533                    default:
13534                      throw new Error("Unknown key-system: " + e);
13535                  }
13536                })(e, 0, r);
13537              u.b.log("Requesting encrypted media key-system access"),
13538                this.requestMediaKeySystemAccess(e, a)
13539                  .then(function (t) {
13540                    i._onMediaKeySystemAccessObtained(e, t);
13541                  })
13542                  .catch(function (t) {
13543                    u.b.error(
13544                      'Failed to obtain key-system "' + e + '" access:',
13545                      t
13546                    );
13547                  });
13548            }),
13549            (l._onMediaKeySystemAccessObtained = function (e, t) {
13550              var r = this;
13551              u.b.log('Access for key-system "' + e + '" obtained');
13552              var i = {
13553                mediaKeysSessionInitialized: !1,
13554                mediaKeySystemAccess: t,
13555                mediaKeySystemDomain: e,
13556              };
13557              this._mediaKeysList.push(i),
13558                t
13559                  .createMediaKeys()
13560                  .then(function (t) {
13561                    (i.mediaKeys = t),
13562                      u.b.log('Media-keys created for key-system "' + e + '"'),
13563                      r._onMediaKeysCreated();
13564                  })
13565                  .catch(function (e) {
13566                    u.b.error("Failed to create media-keys:", e);
13567                  });
13568            }),
13569            (l._onMediaKeysCreated = function () {
13570              var e = this;
13571              this._mediaKeysList.forEach(function (t) {
13572                t.mediaKeysSession ||
13573                  ((t.mediaKeysSession = t.mediaKeys.createSession()),
13574                  e._onNewMediaKeySession(t.mediaKeysSession));
13575              });
13576            }),
13577            (l._onNewMediaKeySession = function (e) {
13578              var t = this;
13579              u.b.log("New key-system session " + e.sessionId),
13580                e.addEventListener(
13581                  "message",
13582                  function (r) {
13583                    t._onKeySessionMessage(e, r.message);
13584                  },
13585                  !1
13586                );
13587            }),
13588            (l._onKeySessionMessage = function (e, t) {
13589              u.b.log("Got EME message event, creating license request"),
13590                this._requestLicense(t, function (t) {
13591                  u.b.log(
13592                    "Received license data (length: " +
13593                      (t ? t.byteLength : t) +
13594                      "), updating key-session"
13595                  ),
13596                    e.update(t);
13597                });
13598            }),
13599            (l._attemptSetMediaKeys = function () {
13600              if (!this._media)
13601                throw new Error(
13602                  "Attempted to set mediaKeys without first attaching a media element"
13603                );
13604              if (!this._hasSetMediaKeys) {
13605                var e = this._mediaKeysList[0];
13606                if (!e || !e.mediaKeys)
13607                  return (
13608                    u.b.error(
13609                      "Fatal: Media is encrypted but no CDM access or no keys have been obtained yet"
13610                    ),
13611                    void this.hls.trigger(d.a.ERROR, {
13612                      type: o.b.KEY_SYSTEM_ERROR,
13613                      details: o.a.KEY_SYSTEM_NO_KEYS,
13614                      fatal: !0,
13615                    })
13616                  );
13617                u.b.log("Setting keys for encrypted media"),
13618                  this._media.setMediaKeys(e.mediaKeys),
13619                  (this._hasSetMediaKeys = !0);
13620              }
13621            }),
13622            (l._generateRequestWithPreferredKeySession = function (e, t) {
13623              var r = this,
13624                i = this._mediaKeysList[0];
13625              if (!i)
13626                return (
13627                  u.b.error(
13628                    "Fatal: Media is encrypted but not any key-system access has been obtained yet"
13629                  ),
13630                  void this.hls.trigger(d.a.ERROR, {
13631                    type: o.b.KEY_SYSTEM_ERROR,
13632                    details: o.a.KEY_SYSTEM_NO_ACCESS,
13633                    fatal: !0,
13634                  })
13635                );
13636              if (i.mediaKeysSessionInitialized)
13637                u.b.warn("Key-Session already initialized but requested again");
13638              else {
13639                var a = i.mediaKeysSession;
13640                if (!a)
13641                  return (
13642                    u.b.error(
13643                      "Fatal: Media is encrypted but no key-session existing"
13644                    ),
13645                    void this.hls.trigger(d.a.ERROR, {
13646                      type: o.b.KEY_SYSTEM_ERROR,
13647                      details: o.a.KEY_SYSTEM_NO_SESSION,
13648                      fatal: !0,
13649                    })
13650                  );
13651                if (!t)
13652                  return (
13653                    u.b.warn(
13654                      "Fatal: initData required for generating a key session is null"
13655                    ),
13656                    void this.hls.trigger(d.a.ERROR, {
13657                      type: o.b.KEY_SYSTEM_ERROR,
13658                      details: o.a.KEY_SYSTEM_NO_INIT_DATA,
13659                      fatal: !0,
13660                    })
13661                  );
13662                u.b.log(
13663                  'Generating key-session request for "' +
13664                    e +
13665                    '" init data type'
13666                ),
13667                  (i.mediaKeysSessionInitialized = !0),
13668                  a
13669                    .generateRequest(e, t)
13670                    .then(function () {
13671                      u.b.debug("Key-session generation succeeded");
13672                    })
13673                    .catch(function (e) {
13674                      u.b.error("Error generating key-session request:", e),
13675                        r.hls.trigger(d.a.ERROR, {
13676                          type: o.b.KEY_SYSTEM_ERROR,
13677                          details: o.a.KEY_SYSTEM_NO_SESSION,
13678                          fatal: !1,
13679                        });
13680                    });
13681              }
13682            }),
13683            (l._createLicenseXhr = function (e, t, r) {
13684              var i = new XMLHttpRequest(),
13685                a = this._licenseXhrSetup;
13686              try {
13687                if (a)
13688                  try {
13689                    a(i, e);
13690                  } catch (t) {
13691                    i.open("POST", e, !0), a(i, e);
13692                  }
13693                i.readyState || i.open("POST", e, !0);
13694              } catch (e) {
13695                throw new Error("issue setting up KeySystem license XHR " + e);
13696              }
13697              return (
13698                (i.responseType = "arraybuffer"),
13699                (i.onreadystatechange =
13700                  this._onLicenseRequestReadyStageChange.bind(
13701                    this,
13702                    i,
13703                    e,
13704                    t,
13705                    r
13706                  )),
13707                i
13708              );
13709            }),
13710            (l._onLicenseRequestReadyStageChange = function (e, t, r, i) {
13711              switch (e.readyState) {
13712                case 4:
13713                  if (200 === e.status)
13714                    (this._requestLicenseFailureCount = 0),
13715                      u.b.log("License request succeeded"),
13716                      "arraybuffer" !== e.responseType &&
13717                        u.b.warn(
13718                          "xhr response type was not set to the expected arraybuffer for license request"
13719                        ),
13720                      i(e.response);
13721                  else {
13722                    if (
13723                      (u.b.error(
13724                        "License Request XHR failed (" +
13725                          t +
13726                          "). Status: " +
13727                          e.status +
13728                          " (" +
13729                          e.statusText +
13730                          ")"
13731                      ),
13732                      this._requestLicenseFailureCount++,
13733                      this._requestLicenseFailureCount > 3)
13734                    )
13735                      return void this.hls.trigger(d.a.ERROR, {
13736                        type: o.b.KEY_SYSTEM_ERROR,
13737                        details: o.a.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
13738                        fatal: !0,
13739                      });
13740                    var a = 3 - this._requestLicenseFailureCount + 1;
13741                    u.b.warn(
13742                      "Retrying license request, " + a + " attempts left"
13743                    ),
13744                      this._requestLicense(r, i);
13745                  }
13746              }
13747            }),
13748            (l._generateLicenseRequestChallenge = function (e, t) {
13749              switch (e.mediaKeySystemDomain) {
13750                case Vt.WIDEVINE:
13751                  return t;
13752              }
13753              throw new Error(
13754                "unsupported key-system: " + e.mediaKeySystemDomain
13755              );
13756            }),
13757            (l._requestLicense = function (e, t) {
13758              u.b.log("Requesting content license for key-system");
13759              var r = this._mediaKeysList[0];
13760              if (!r)
13761                return (
13762                  u.b.error(
13763                    "Fatal error: Media is encrypted but no key-system access has been obtained yet"
13764                  ),
13765                  void this.hls.trigger(d.a.ERROR, {
13766                    type: o.b.KEY_SYSTEM_ERROR,
13767                    details: o.a.KEY_SYSTEM_NO_ACCESS,
13768                    fatal: !0,
13769                  })
13770                );
13771              try {
13772                var i = this.getLicenseServerUrl(r.mediaKeySystemDomain),
13773                  a = this._createLicenseXhr(i, e, t);
13774                u.b.log("Sending license request to URL: " + i);
13775                var n = this._generateLicenseRequestChallenge(r, e);
13776                a.send(n);
13777              } catch (e) {
13778                u.b.error("Failure requesting DRM license: " + e),
13779                  this.hls.trigger(d.a.ERROR, {
13780                    type: o.b.KEY_SYSTEM_ERROR,
13781                    details: o.a.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
13782                    fatal: !0,
13783                  });
13784              }
13785            }),
13786            (l.onMediaAttached = function (e) {
13787              if (this._emeEnabled) {
13788                var t = e.media;
13789                (this._media = t),
13790                  t.addEventListener("encrypted", this._onMediaEncrypted);
13791              }
13792            }),
13793            (l.onMediaDetached = function () {
13794              this._media &&
13795                (this._media.removeEventListener(
13796                  "encrypted",
13797                  this._onMediaEncrypted
13798                ),
13799                (this._media = null));
13800            }),
13801            (l.onManifestParsed = function (e) {
13802              if (this._emeEnabled) {
13803                var t = e.levels.map(function (e) {
13804                    return e.audioCodec;
13805                  }),
13806                  r = e.levels.map(function (e) {
13807                    return e.videoCodec;
13808                  });
13809                this._attemptKeySystemAccess(Vt.WIDEVINE, t, r);
13810              }
13811            }),
13812            (a = i),
13813            (n = [
13814              {
13815                key: "requestMediaKeySystemAccess",
13816                get: function () {
13817                  if (!this._requestMediaKeySystemAccess)
13818                    throw new Error(
13819                      "No requestMediaKeySystemAccess function configured"
13820                    );
13821                  return this._requestMediaKeySystemAccess;
13822                },
13823              },
13824            ]) && zt(a.prototype, n),
13825            s && zt(a, s),
13826            i
13827          );
13828        })(h);
13829        function Qt(e, t, r) {
13830          return (
13831            t in e
13832              ? Object.defineProperty(e, t, {
13833                  value: r,
13834                  enumerable: !0,
13835                  configurable: !0,
13836                  writable: !0,
13837                })
13838              : (e[t] = r),
13839            e
13840          );
13841        }
13842        var $t = (function (e) {
13843          for (var t = 1; t < arguments.length; t++) {
13844            var r = null != arguments[t] ? arguments[t] : {},
13845              i = Object.keys(r);
13846            "function" == typeof Object.getOwnPropertySymbols &&
13847              (i = i.concat(
13848                Object.getOwnPropertySymbols(r).filter(function (e) {
13849                  return Object.getOwnPropertyDescriptor(r, e).enumerable;
13850                })
13851              )),
13852              i.forEach(function (t) {
13853                Qt(e, t, r[t]);
13854              });
13855          }
13856          return e;
13857        })(
13858          {
13859            autoStartLoad: !0,
13860            startPosition: -1,
13861            defaultAudioCodec: void 0,
13862            debug: !1,
13863            capLevelOnFPSDrop: !1,
13864            capLevelToPlayerSize: !1,
13865            initialLiveManifestSize: 1,
13866            maxBufferLength: 30,
13867            maxBufferSize: 6e7,
13868            maxBufferHole: 0.5,
13869            lowBufferWatchdogPeriod: 0.5,
13870            highBufferWatchdogPeriod: 3,
13871            nudgeOffset: 0.1,
13872            nudgeMaxRetry: 3,
13873            maxFragLookUpTolerance: 0.25,
13874            liveSyncDurationCount: 3,
13875            liveMaxLatencyDurationCount: 1 / 0,
13876            liveSyncDuration: void 0,
13877            liveMaxLatencyDuration: void 0,
13878            liveDurationInfinity: !1,
13879            liveBackBufferLength: 1 / 0,
13880            maxMaxBufferLength: 600,
13881            enableWorker: !0,
13882            enableSoftwareAES: !0,
13883            manifestLoadingTimeOut: 1e4,
13884            manifestLoadingMaxRetry: 1,
13885            manifestLoadingRetryDelay: 1e3,
13886            manifestLoadingMaxRetryTimeout: 64e3,
13887            startLevel: void 0,
13888            levelLoadingTimeOut: 1e4,
13889            levelLoadingMaxRetry: 4,
13890            levelLoadingRetryDelay: 1e3,
13891            levelLoadingMaxRetryTimeout: 64e3,
13892            fragLoadingTimeOut: 2e4,
13893            fragLoadingMaxRetry: 6,
13894            fragLoadingRetryDelay: 1e3,
13895            fragLoadingMaxRetryTimeout: 64e3,
13896            startFragPrefetch: !1,
13897            fpsDroppedMonitoringPeriod: 5e3,
13898            fpsDroppedMonitoringThreshold: 0.2,
13899            appendErrorMaxRetry: 3,
13900            loader: et,
13901            fLoader: void 0,
13902            pLoader: void 0,
13903            xhrSetup: void 0,
13904            licenseXhrSetup: void 0,
13905            abrController: Ve,
13906            bufferController: We,
13907            capLevelController: ze,
13908            fpsController: Qe,
13909            stretchShortVideoTrack: !1,
13910            maxAudioFramesDrift: 1,
13911            forceKeyFrameOnDiscontinuity: !0,
13912            abrEwmaFastLive: 3,
13913            abrEwmaSlowLive: 9,
13914            abrEwmaFastVoD: 3,
13915            abrEwmaSlowVoD: 9,
13916            abrEwmaDefaultEstimate: 5e5,
13917            abrBandWidthFactor: 0.95,
13918            abrBandWidthUpFactor: 0.7,
13919            abrMaxWithRealBitrate: !1,
13920            maxStarvationDelay: 4,
13921            maxLoadingDelay: 4,
13922            minAutoBitrate: 0,
13923            emeEnabled: !1,
13924            widevineLicenseUrl: void 0,
13925            requestMediaKeySystemAccessFunc: qt,
13926          },
13927          (function () {
13928            0;
13929            return {
13930              cueHandler: i,
13931              enableCEA708Captions: !0,
13932              enableWebVTT: !0,
13933              captionsTextTrack1Label: "English",
13934              captionsTextTrack1LanguageCode: "en",
13935              captionsTextTrack2Label: "Spanish",
13936              captionsTextTrack2LanguageCode: "es",
13937            };
13938          })(),
13939          {
13940            subtitleStreamController: Wt,
13941            subtitleTrackController: jt,
13942            timelineController: Bt,
13943            audioStreamController: nt,
13944            audioTrackController: rt,
13945            emeController: Xt,
13946          }
13947        );
13948        function Jt(e, t, r) {
13949          return (
13950            t in e
13951              ? Object.defineProperty(e, t, {
13952                  value: r,
13953                  enumerable: !0,
13954                  configurable: !0,
13955                  writable: !0,
13956                })
13957              : (e[t] = r),
13958            e
13959          );
13960        }
13961        function Zt(e) {
13962          if (void 0 === e)
13963            throw new ReferenceError(
13964              "this hasn't been initialised - super() hasn't been called"
13965            );
13966          return e;
13967        }
13968        function er(e, t) {
13969          for (var r = 0; r < t.length; r++) {
13970            var i = t[r];
13971            (i.enumerable = i.enumerable || !1),
13972              (i.configurable = !0),
13973              "value" in i && (i.writable = !0),
13974              Object.defineProperty(e, i.key, i);
13975          }
13976        }
13977        function tr(e, t, r) {
13978          return t && er(e.prototype, t), r && er(e, r), e;
13979        }
13980        r.d(t, "default", function () {
13981          return rr;
13982        });
13983        var rr = (function (e) {
13984          var t, r;
13985          function i(t) {
13986            var r;
13987            void 0 === t && (t = {}),
13988              ((r = e.call(this) || this).config = void 0),
13989              (r._autoLevelCapping = void 0),
13990              (r.abrController = void 0),
13991              (r.capLevelController = void 0),
13992              (r.levelController = void 0),
13993              (r.streamController = void 0),
13994              (r.networkControllers = void 0),
13995              (r.audioTrackController = void 0),
13996              (r.subtitleTrackController = void 0),
13997              (r.emeController = void 0),
13998              (r.coreComponents = void 0),
13999              (r.media = null),
14000              (r.url = null);
14001            var a = i.DefaultConfig;
14002            if (
14003              (t.liveSyncDurationCount || t.liveMaxLatencyDurationCount) &&
14004              (t.liveSyncDuration || t.liveMaxLatencyDuration)
14005            )
14006              throw new Error(
14007                "Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration"
14008              );
14009            r.config = (function (e) {
14010              for (var t = 1; t < arguments.length; t++) {
14011                var r = null != arguments[t] ? arguments[t] : {},
14012                  i = Object.keys(r);
14013                "function" == typeof Object.getOwnPropertySymbols &&
14014                  (i = i.concat(
14015                    Object.getOwnPropertySymbols(r).filter(function (e) {
14016                      return Object.getOwnPropertyDescriptor(r, e).enumerable;
14017                    })
14018                  )),
14019                  i.forEach(function (t) {
14020                    Jt(e, t, r[t]);
14021                  });
14022              }
14023              return e;
14024            })({}, a, t);
14025            var n = Zt(r).config;
14026            if (
14027              void 0 !== n.liveMaxLatencyDurationCount &&
14028              n.liveMaxLatencyDurationCount <= n.liveSyncDurationCount
14029            )
14030              throw new Error(
14031                'Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"'
14032              );
14033            if (
14034              void 0 !== n.liveMaxLatencyDuration &&
14035              (void 0 === n.liveSyncDuration ||
14036                n.liveMaxLatencyDuration <= n.liveSyncDuration)
14037            )
14038              throw new Error(
14039                'Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"'
14040              );
14041            Object(u.a)(n.debug), (r._autoLevelCapping = -1);
14042            var s = (r.abrController = new n.abrController(Zt(r))),
14043              o = new n.bufferController(Zt(r)),
14044              l = (r.capLevelController = new n.capLevelController(Zt(r))),
14045              d = new n.fpsController(Zt(r)),
14046              c = new x(Zt(r)),
14047              h = new M(Zt(r)),
14048              f = new F(Zt(r)),
14049              g = new Be(Zt(r)),
14050              p = (r.levelController = new Me(Zt(r))),
14051              v = new K(Zt(r)),
14052              m = [p, (r.streamController = new Ie(Zt(r), v))],
14053              y = n.audioStreamController;
14054            y && m.push(new y(Zt(r), v)), (r.networkControllers = m);
14055            var b = [c, h, f, s, o, l, d, g, v];
14056            if ((y = n.audioTrackController)) {
14057              var T = new y(Zt(r));
14058              (r.audioTrackController = T), b.push(T);
14059            }
14060            if ((y = n.subtitleTrackController)) {
14061              var E = new y(Zt(r));
14062              (r.subtitleTrackController = E), m.push(E);
14063            }
14064            if ((y = n.emeController)) {
14065              var S = new y(Zt(r));
14066              (r.emeController = S), b.push(S);
14067            }
14068            return (
14069              (y = n.subtitleStreamController) && m.push(new y(Zt(r), v)),
14070              (y = n.timelineController) && b.push(new y(Zt(r))),
14071              (r.coreComponents = b),
14072              r
14073            );
14074          }
14075          (r = e),
14076            ((t = i).prototype = Object.create(r.prototype)),
14077            (t.prototype.constructor = t),
14078            (t.__proto__ = r),
14079            (i.isSupported = function () {
14080              return (function () {
14081                var e = q();
14082                if (!e) return !1;
14083                var t = self.SourceBuffer || self.WebKitSourceBuffer,
14084                  r =
14085                    e &&
14086                    "function" == typeof e.isTypeSupported &&
14087                    e.isTypeSupported(
14088                      'video/mp4; codecs="avc1.42E01E,mp4a.40.2"'
14089                    ),
14090                  i =
14091                    !t ||
14092                    (t.prototype &&
14093                      "function" == typeof t.prototype.appendBuffer &&
14094                      "function" == typeof t.prototype.remove);
14095                return !!r && !!i;
14096              })();
14097            }),
14098            tr(i, null, [
14099              {
14100                key: "version",
14101                get: function () {
14102                  return "0.13.2";
14103                },
14104              },
14105              {
14106                key: "Events",
14107                get: function () {
14108                  return d.a;
14109                },
14110              },
14111              {
14112                key: "ErrorTypes",
14113                get: function () {
14114                  return o.b;
14115                },
14116              },
14117              {
14118                key: "ErrorDetails",
14119                get: function () {
14120                  return o.a;
14121                },
14122              },
14123              {
14124                key: "DefaultConfig",
14125                get: function () {
14126                  return i.defaultConfig ? i.defaultConfig : $t;
14127                },
14128                set: function (e) {
14129                  i.defaultConfig = e;
14130                },
14131              },
14132            ]);
14133          var a = i.prototype;
14134          return (
14135            (a.destroy = function () {
14136              u.b.log("destroy"),
14137                this.trigger(d.a.DESTROYING),
14138                this.detachMedia(),
14139                this.coreComponents
14140                  .concat(this.networkControllers)
14141                  .forEach(function (e) {
14142                    e.destroy();
14143                  }),
14144                (this.url = null),
14145                this.removeAllListeners(),
14146                (this._autoLevelCapping = -1);
14147            }),
14148            (a.attachMedia = function (e) {
14149              u.b.log("attachMedia"),
14150                (this.media = e),
14151                this.trigger(d.a.MEDIA_ATTACHING, { media: e });
14152            }),
14153            (a.detachMedia = function () {
14154              u.b.log("detachMedia"),
14155                this.trigger(d.a.MEDIA_DETACHING),
14156                (this.media = null);
14157            }),
14158            (a.loadSource = function (e) {
14159              (e = s.buildAbsoluteURL(window.location.href, e, {
14160                alwaysNormalize: !0,
14161              })),
14162                u.b.log("loadSource:" + e),
14163                (this.url = e),
14164                this.trigger(d.a.MANIFEST_LOADING, { url: e });
14165            }),
14166            (a.startLoad = function (e) {
14167              void 0 === e && (e = -1),
14168                u.b.log("startLoad(" + e + ")"),
14169                this.networkControllers.forEach(function (t) {
14170                  t.startLoad(e);
14171                });
14172            }),
14173            (a.stopLoad = function () {
14174              u.b.log("stopLoad"),
14175                this.networkControllers.forEach(function (e) {
14176                  e.stopLoad();
14177                });
14178            }),
14179            (a.swapAudioCodec = function () {
14180              u.b.log("swapAudioCodec"), this.streamController.swapAudioCodec();
14181            }),
14182            (a.recoverMediaError = function () {
14183              u.b.log("recoverMediaError");
14184              var e = this.media;
14185              this.detachMedia(), e && this.attachMedia(e);
14186            }),
14187            tr(i, [
14188              {
14189                key: "levels",
14190                get: function () {
14191                  return this.levelController.levels;
14192                },
14193              },
14194              {
14195                key: "currentLevel",
14196                get: function () {
14197                  return this.streamController.currentLevel;
14198                },
14199                set: function (e) {
14200                  u.b.log("set currentLevel:" + e),
14201                    (this.loadLevel = e),
14202                    this.streamController.immediateLevelSwitch();
14203                },
14204              },
14205              {
14206                key: "nextLevel",
14207                get: function () {
14208                  return this.streamController.nextLevel;
14209                },
14210                set: function (e) {
14211                  u.b.log("set nextLevel:" + e),
14212                    (this.levelController.manualLevel = e),
14213                    this.streamController.nextLevelSwitch();
14214                },
14215              },
14216              {
14217                key: "loadLevel",
14218                get: function () {
14219                  return this.levelController.level;
14220                },
14221                set: function (e) {
14222                  u.b.log("set loadLevel:" + e),
14223                    (this.levelController.manualLevel = e);
14224                },
14225              },
14226              {
14227                key: "nextLoadLevel",
14228                get: function () {
14229                  return this.levelController.nextLoadLevel;
14230                },
14231                set: function (e) {
14232                  this.levelController.nextLoadLevel = e;
14233                },
14234              },
14235              {
14236                key: "firstLevel",
14237                get: function () {
14238                  return Math.max(
14239                    this.levelController.firstLevel,
14240                    this.minAutoLevel
14241                  );
14242                },
14243                set: function (e) {
14244                  u.b.log("set firstLevel:" + e),
14245                    (this.levelController.firstLevel = e);
14246                },
14247              },
14248              {
14249                key: "startLevel",
14250                get: function () {
14251                  return this.levelController.startLevel;
14252                },
14253                set: function (e) {
14254                  u.b.log("set startLevel:" + e),
14255                    -1 !== e && (e = Math.max(e, this.minAutoLevel)),
14256                    (this.levelController.startLevel = e);
14257                },
14258              },
14259              {
14260                key: "capLevelToPlayerSize",
14261                set: function (e) {
14262                  var t = !!e;
14263                  t !== this.config.capLevelToPlayerSize &&
14264                    (t
14265                      ? this.capLevelController.startCapping()
14266                      : (this.capLevelController.stopCapping(),
14267                        (this.autoLevelCapping = -1),
14268                        this.streamController.nextLevelSwitch()),
14269                    (this.config.capLevelToPlayerSize = t));
14270                },
14271              },
14272              {
14273                key: "autoLevelCapping",
14274                get: function () {
14275                  return this._autoLevelCapping;
14276                },
14277                set: function (e) {
14278                  u.b.log("set autoLevelCapping:" + e),
14279                    (this._autoLevelCapping = e);
14280                },
14281              },
14282              {
14283                key: "bandwidthEstimate",
14284                get: function () {
14285                  var e = this.abrController._bwEstimator;
14286                  return e ? e.getEstimate() : NaN;
14287                },
14288              },
14289              {
14290                key: "autoLevelEnabled",
14291                get: function () {
14292                  return -1 === this.levelController.manualLevel;
14293                },
14294              },
14295              {
14296                key: "manualLevel",
14297                get: function () {
14298                  return this.levelController.manualLevel;
14299                },
14300              },
14301              {
14302                key: "minAutoLevel",
14303                get: function () {
14304                  for (
14305                    var e = this.levels,
14306                      t = this.config.minAutoBitrate,
14307                      r = e ? e.length : 0,
14308                      i = 0;
14309                    i < r;
14310                    i++
14311                  ) {
14312                    if (
14313                      (e[i].realBitrate
14314                        ? Math.max(e[i].realBitrate, e[i].bitrate)
14315                        : e[i].bitrate) > t
14316                    )
14317                      return i;
14318                  }
14319                  return 0;
14320                },
14321              },
14322              {
14323                key: "maxAutoLevel",
14324                get: function () {
14325                  var e = this.levels,
14326                    t = this.autoLevelCapping;
14327                  return -1 === t && e && e.length ? e.length - 1 : t;
14328                },
14329              },
14330              {
14331                key: "nextAutoLevel",
14332                get: function () {
14333                  return Math.min(
14334                    Math.max(
14335                      this.abrController.nextAutoLevel,
14336                      this.minAutoLevel
14337                    ),
14338                    this.maxAutoLevel
14339                  );
14340                },
14341                set: function (e) {
14342                  this.abrController.nextAutoLevel = Math.max(
14343                    this.minAutoLevel,
14344                    e
14345                  );
14346                },
14347              },
14348              {
14349                key: "audioTracks",
14350                get: function () {
14351                  var e = this.audioTrackController;
14352                  return e ? e.audioTracks : [];
14353                },
14354              },
14355              {
14356                key: "audioTrack",
14357                get: function () {
14358                  var e = this.audioTrackController;
14359                  return e ? e.audioTrack : -1;
14360                },
14361                set: function (e) {
14362                  var t = this.audioTrackController;
14363                  t && (t.audioTrack = e);
14364                },
14365              },
14366              {
14367                key: "liveSyncPosition",
14368                get: function () {
14369                  return this.streamController.liveSyncPosition;
14370                },
14371              },
14372              {
14373                key: "subtitleTracks",
14374                get: function () {
14375                  var e = this.subtitleTrackController;
14376                  return e ? e.subtitleTracks : [];
14377                },
14378              },
14379              {
14380                key: "subtitleTrack",
14381                get: function () {
14382                  var e = this.subtitleTrackController;
14383                  return e ? e.subtitleTrack : -1;
14384                },
14385                set: function (e) {
14386                  var t = this.subtitleTrackController;
14387                  t && (t.subtitleTrack = e);
14388                },
14389              },
14390              {
14391                key: "subtitleDisplay",
14392                get: function () {
14393                  var e = this.subtitleTrackController;
14394                  return !!e && e.subtitleDisplay;
14395                },
14396                set: function (e) {
14397                  var t = this.subtitleTrackController;
14398                  t && (t.subtitleDisplay = e);
14399                },
14400              },
14401            ]),
14402            i
14403          );
14404        })(X);
14405        rr.defaultConfig = void 0;
14406      },
14407    ]).default;
14408  });

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.