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.