diff --git a/.svelte-kit/generated/server/internal.js b/.svelte-kit/generated/server/internal.js index 75cf2c1..fe43dd2 100644 --- a/.svelte-kit/generated/server/internal.js +++ b/.svelte-kit/generated/server/internal.js @@ -25,7 +25,7 @@ export const options = { app: ({ head, body, assets, nonce, env }) => "\n\n \n \n \n \n vod frog\n " + head + "\n \n \n
" + body + "
\n \n\n", error: ({ status, message }) => "\n\n\t\n\t\t\n\t\t" + message + "\n\n\t\t\n\t\n\t\n\t\t
\n\t\t\t" + status + "\n\t\t\t
\n\t\t\t\t

" + message + "

\n\t\t\t
\n\t\t
\n\t\n\n" }, - version_hash: "1iybqeu" + version_hash: "47n7bs" }; export async function get_hooks() { diff --git a/.svelte-kit/non-ambient.d.ts b/.svelte-kit/non-ambient.d.ts index 4e56ed0..cb73f35 100644 --- a/.svelte-kit/non-ambient.d.ts +++ b/.svelte-kit/non-ambient.d.ts @@ -40,6 +40,6 @@ declare module "$app/types" { }; Pathname(): "/" | `/profile/${string}` & {}; ResolvedPathname(): `${"" | `/${string}`}${ReturnType}`; - Asset(): "/favicon.png" | "/favicon.svg" | "/frogcursor-small.png" | "/frogcursor.png" | "/frogeye.png" | "/froggie.png" | "/froggiejump.png" | "/froggiestand.png" | "/frogicon.png" | "/leaves.png" | "/robots.txt" | string & {}; + Asset(): "/favicon.png" | "/favicon.svg" | "/fonts/Fang-Italic.otf" | "/fonts/Fang-Roman.otf" | "/fonts/PicNic-Regular.otf" | "/frogcursor-small.png" | "/frogcursor.png" | "/frogeye.png" | "/froggie.png" | "/froggiejump.png" | "/froggiestand.png" | "/frogicon.png" | "/leaves.png" | "/robots.txt" | string & {}; } } \ No newline at end of file diff --git a/.svelte-kit/output/client/.vite/manifest.json b/.svelte-kit/output/client/.vite/manifest.json index 3ae2c20..ce21335 100644 --- a/.svelte-kit/output/client/.vite/manifest.json +++ b/.svelte-kit/output/client/.vite/manifest.json @@ -1,6 +1,6 @@ { ".svelte-kit/generated/client-optimized/app.js": { - "file": "_app/immutable/entry/app.DEN-rOoD.js", + "file": "_app/immutable/entry/app.cP24vFe-.js", "name": "entry/app", "src": ".svelte-kit/generated/client-optimized/app.js", "isEntry": true, @@ -21,7 +21,7 @@ ] }, ".svelte-kit/generated/client-optimized/nodes/0.js": { - "file": "_app/immutable/nodes/0.Cq8Xsn4J.js", + "file": "_app/immutable/nodes/0.DC-lVOJg.js", "name": "nodes/0", "src": ".svelte-kit/generated/client-optimized/nodes/0.js", "isEntry": true, @@ -33,11 +33,11 @@ "_B46dcLgj.js" ], "css": [ - "_app/immutable/assets/0.DIlgUleF.css" + "_app/immutable/assets/0.DKk5J4IK.css" ] }, ".svelte-kit/generated/client-optimized/nodes/1.js": { - "file": "_app/immutable/nodes/1.BWlKxnfY.js", + "file": "_app/immutable/nodes/1.EHJvAiHu.js", "name": "nodes/1", "src": ".svelte-kit/generated/client-optimized/nodes/1.js", "isEntry": true, @@ -47,11 +47,11 @@ "_B46dcLgj.js", "_CkzjbUDB.js", "_BsDbD4Ku.js", - "_hJNu5X86.js" + "_p8sLpASk.js" ] }, ".svelte-kit/generated/client-optimized/nodes/2.js": { - "file": "_app/immutable/nodes/2.WwcVxUyo.js", + "file": "_app/immutable/nodes/2.BDBqQDgu.js", "name": "nodes/2", "src": ".svelte-kit/generated/client-optimized/nodes/2.js", "isEntry": true, @@ -63,15 +63,15 @@ "_BsDbD4Ku.js", "_XE2G8ySY.js", "_DmyE0d-6.js", - "_D_t83wNY.js", + "_wDE00Dcu.js", "_Dr80VTgO.js" ], "css": [ - "_app/immutable/assets/2.CHt1yucP.css" + "_app/immutable/assets/2.B1K8QaGJ.css" ] }, ".svelte-kit/generated/client-optimized/nodes/3.js": { - "file": "_app/immutable/nodes/3.BJIJ5Us_.js", + "file": "_app/immutable/nodes/3.Ck5bt7k8.js", "name": "nodes/3", "src": ".svelte-kit/generated/client-optimized/nodes/3.js", "isEntry": true, @@ -83,11 +83,11 @@ "_BsDbD4Ku.js", "_XE2G8ySY.js", "_DmyE0d-6.js", - "_D_t83wNY.js", - "_hJNu5X86.js" + "_wDE00Dcu.js", + "_p8sLpASk.js" ], "css": [ - "_app/immutable/assets/3.CjGf6tQE.css" + "_app/immutable/assets/3.JMkiik8G.css" ] }, "_B46dcLgj.js": { @@ -123,20 +123,6 @@ "_CkzjbUDB.js" ] }, - "_D_t83wNY.js": { - "file": "_app/immutable/chunks/D_t83wNY.js", - "name": "FrogHeader", - "imports": [ - "_DGbOEUpF.js", - "_CkzjbUDB.js", - "_DmyE0d-6.js", - "_XE2G8ySY.js", - "_BsDbD4Ku.js" - ], - "css": [ - "_app/immutable/assets/FrogHeader.8kzFzgPu.css" - ] - }, "_DmyE0d-6.js": { "file": "_app/immutable/chunks/DmyE0d-6.js", "name": "svelte-head", @@ -159,9 +145,9 @@ "_CkzjbUDB.js" ] }, - "_FrogHeader.8kzFzgPu.css": { - "file": "_app/immutable/assets/FrogHeader.8kzFzgPu.css", - "src": "_FrogHeader.8kzFzgPu.css" + "_FrogHeader.nOQL7IYP.css": { + "file": "_app/immutable/assets/FrogHeader.nOQL7IYP.css", + "src": "_FrogHeader.nOQL7IYP.css" }, "_XE2G8ySY.js": { "file": "_app/immutable/chunks/XE2G8ySY.js", @@ -172,21 +158,35 @@ "_DxGD2b0U.js" ] }, - "_hJNu5X86.js": { - "file": "_app/immutable/chunks/hJNu5X86.js", + "_p8sLpASk.js": { + "file": "_app/immutable/chunks/p8sLpASk.js", "name": "entry", "imports": [ "_CkzjbUDB.js", "_DxGD2b0U.js" ] }, + "_wDE00Dcu.js": { + "file": "_app/immutable/chunks/wDE00Dcu.js", + "name": "FrogHeader", + "imports": [ + "_DGbOEUpF.js", + "_CkzjbUDB.js", + "_DmyE0d-6.js", + "_XE2G8ySY.js", + "_BsDbD4Ku.js" + ], + "css": [ + "_app/immutable/assets/FrogHeader.nOQL7IYP.css" + ] + }, "node_modules/@sveltejs/kit/src/runtime/client/entry.js": { - "file": "_app/immutable/entry/start.DMfPKBk7.js", + "file": "_app/immutable/entry/start.BCJ632dx.js", "name": "entry/start", "src": "node_modules/@sveltejs/kit/src/runtime/client/entry.js", "isEntry": true, "imports": [ - "_hJNu5X86.js" + "_p8sLpASk.js" ] } } \ No newline at end of file diff --git a/.svelte-kit/output/client/_app/immutable/assets/0.DIlgUleF.css b/.svelte-kit/output/client/_app/immutable/assets/0.DKk5J4IK.css similarity index 55% rename from .svelte-kit/output/client/_app/immutable/assets/0.DIlgUleF.css rename to .svelte-kit/output/client/_app/immutable/assets/0.DKk5J4IK.css index 4f66171..a6be1ff 100644 --- a/.svelte-kit/output/client/_app/immutable/assets/0.DIlgUleF.css +++ b/.svelte-kit/output/client/_app/immutable/assets/0.DKk5J4IK.css @@ -1 +1 @@ -.mesh-bg.svelte-17k46oa{position:fixed;inset:0;z-index:-2;overflow:hidden}.mesh-svg.svelte-17k46oa{width:100%;height:100%}.plant-overlay.svelte-11afcec{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;mix-blend-mode:multiply}.leaves.svelte-11afcec{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}@media(max-width:768px){.plant-overlay.svelte-11afcec{display:none}}html,body{margin:0;padding:0;min-height:100vh;overflow-x:hidden}body{font-family:Nunito,Fang,system-ui,-apple-system,BlinkMacSystemFont,sans-serif}*{box-sizing:border-box}::selection{background:#ff399280;color:#ffdeed}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:#1a8c22}::-webkit-scrollbar-thumb{background:#0a182b;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#ff3992} +.mesh-bg.svelte-17k46oa{position:fixed;inset:0;z-index:-2;overflow:hidden}.mesh-svg.svelte-17k46oa{width:100%;height:100%}.plant-overlay.svelte-11afcec{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;mix-blend-mode:multiply}.leaves.svelte-11afcec{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}@media(max-width:768px){.plant-overlay.svelte-11afcec{display:none}}html,body{margin:0;padding:0;min-height:100vh;overflow-x:hidden}body{font-family:Fang,system-ui,-apple-system,BlinkMacSystemFont,sans-serif}*{box-sizing:border-box}::selection{background:#ff399280;color:#ffdeed}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:#1a8c22}::-webkit-scrollbar-thumb{background:#0a182b;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#ff3992} diff --git a/.svelte-kit/output/client/_app/immutable/assets/2.B1K8QaGJ.css b/.svelte-kit/output/client/_app/immutable/assets/2.B1K8QaGJ.css new file mode 100644 index 0000000..ecd10fa --- /dev/null +++ b/.svelte-kit/output/client/_app/immutable/assets/2.B1K8QaGJ.css @@ -0,0 +1 @@ +.player-wrapper.svelte-zbxgh1{position:relative;width:100%;background:#0a182b;overflow:hidden}.player-wrapper.svelte-zbxgh1:fullscreen{display:flex;align-items:center;justify-content:center}.player-wrapper.svelte-zbxgh1:fullscreen video:where(.svelte-zbxgh1){max-height:100vh;max-width:100vw;object-fit:contain}video.svelte-zbxgh1{width:100%;display:block;max-height:70vh;cursor:pointer}.controls.svelte-zbxgh1{position:absolute;bottom:5%;left:10%;right:15%;opacity:0;transition:opacity .25s ease;pointer-events:none}.controls.visible.svelte-zbxgh1{opacity:1;pointer-events:auto}.scrub-bar.svelte-zbxgh1{position:relative;height:48px;cursor:pointer}.scrub-frog.svelte-zbxgh1{position:absolute;bottom:0;transform:translate(-50%);cursor:grab;transition:left .05s linear;z-index:2;padding:6px}.scrub-frog.svelte-zbxgh1:active{cursor:grabbing}.scrub-frog.flipped.svelte-zbxgh1{transform:translate(-50%) scaleX(-1)}.frog-sprite.svelte-zbxgh1{width:48px;height:auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));pointer-events:none}.fullscreen-btn.svelte-zbxgh1{all:unset;position:absolute;bottom:5%;right:8%;cursor:pointer;opacity:0;transition:opacity .25s ease,transform .2s ease;z-index:5}.fullscreen-btn.visible.svelte-zbxgh1{opacity:1}.fullscreen-btn.svelte-zbxgh1:hover{transform:scale(1.15)}.frogeye.svelte-zbxgh1{width:44px;height:44px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}.error-overlay.svelte-zbxgh1{position:absolute;bottom:15%;left:10%;right:10%;background:#ff3992d9;color:#ffdeed;padding:8px 12px;border-radius:6px;font-family:Fang,system-ui,sans-serif;font-size:.8rem}.card.svelte-1nxalmg{all:unset;cursor:url(../../../frogcursor-small.png) 12 12,pointer;display:flex;flex-direction:column;transition:transform .2s ease;position:relative}.card.svelte-1nxalmg:hover{transform:scale(1.03)!important}.duration-badge.svelte-1nxalmg{display:block;font-family:PicNic,cursive,system-ui;font-size:1.4rem;color:#ff3992;font-weight:700;letter-spacing:.5px;margin-bottom:8px;text-align:right}.thumb-wrapper.svelte-1nxalmg{margin:0}.thumbnail.svelte-1nxalmg{position:relative;width:100%;aspect-ratio:16 / 9;background:linear-gradient(135deg,#3992ff,#1e4e8c);display:flex;align-items:center;justify-content:center;overflow:hidden}.thumb-img.svelte-1nxalmg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .15s}.scrub-canvas.svelte-1nxalmg{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}.scrub-canvas.visible.svelte-1nxalmg{opacity:1}.scrub-frog.svelte-1nxalmg{position:absolute;bottom:0%;z-index:4;pointer-events:none;transform:translate(-50%);transition:left .05s linear}.scrub-frog.flipped.svelte-1nxalmg{transform:translate(-50%) scaleX(-1)}.frog-sprite.svelte-1nxalmg{width:48px;height:auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4));image-rendering:auto}.thumb-shadow.svelte-1nxalmg{position:absolute;inset:0;box-shadow:inset 0 3px 16px #0a182b80;pointer-events:none}.loading-spinner.svelte-1nxalmg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:3}.spinner.svelte-1nxalmg{width:28px;height:28px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:svelte-1nxalmg-spin .8s linear infinite}@keyframes svelte-1nxalmg-spin{to{transform:rotate(360deg)}}.scrub-bar.svelte-1nxalmg{position:absolute;bottom:0;left:0;right:0;height:3px;background:#fff3;z-index:2}.scrub-bar-fill.svelte-1nxalmg{height:100%;background:#ff3992;transition:width .05s linear}.info.svelte-1nxalmg{padding:14px 10px 8px}.title.svelte-1nxalmg{margin:0;font-family:Fang,system-ui,sans-serif;font-size:.9rem;font-weight:700;color:#0a182b;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.creator.svelte-1nxalmg{margin:4px 0 0;font-family:Fang,system-ui,sans-serif;font-size:.8rem;color:#0a182b;opacity:.8;text-decoration:underline;text-decoration-color:#ff3992}.date.svelte-1nxalmg{margin:2px 0 0;font-family:Fang,system-ui,sans-serif;font-size:.75rem;color:#ff3992;font-style:italic}.app.svelte-1uha8ag{max-width:1300px;margin:0 auto;padding:0 clamp(24px,7vw,120px) 60px}.player-section.svelte-1uha8ag{margin-bottom:40px;margin-top:20px;padding:0 10px}.player-info.svelte-1uha8ag{padding:20px 4px}.player-title.svelte-1uha8ag{margin:0;font-family:PicNic,cursive,system-ui;font-size:clamp(1.4rem,3vw,2rem);color:#0a182b}.player-meta.svelte-1uha8ag{margin:6px 0 0;font-family:Fang,system-ui,sans-serif;color:#0a182b;opacity:.7;font-size:.85rem}.creator-tag.svelte-1uha8ag{color:#3992ff;text-decoration:underline}.dot.svelte-1uha8ag{margin:0 4px;color:#0a182b;opacity:.4}.grid.svelte-1uha8ag{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:clamp(32px,5vw,50px);padding:20px clamp(16px,3vw,24px)}.pagination.svelte-1uha8ag{display:flex;justify-content:center;align-items:center;gap:20px;padding:30px}.page-btn.svelte-1uha8ag{background:#0a182b;color:#39ff44;border:3px solid #0a182b;padding:12px 32px;border-radius:40px;font-family:PicNic,cursive,system-ui;font-size:1.1rem;cursor:pointer;transition:all .2s ease;letter-spacing:.5px}.page-btn.svelte-1uha8ag:hover{background:#39ff44;color:#0a182b;border-color:#0a182b}.page-btn.svelte-1uha8ag:disabled{background:#1a8c22;color:#0a182b;border-color:#1a8c22;cursor:wait;opacity:.6}.page-num.svelte-1uha8ag{font-family:PicNic,cursive,system-ui;font-size:1.1rem;color:#0a182b}.error.svelte-1uha8ag{background:#ff399226;color:#ff3992;padding:12px 16px;border-radius:8px;margin:0 10px 20px;font-family:Fang,system-ui,sans-serif;border:2px solid #ff3992} diff --git a/.svelte-kit/output/client/_app/immutable/assets/2.CHt1yucP.css b/.svelte-kit/output/client/_app/immutable/assets/2.CHt1yucP.css deleted file mode 100644 index 3c136c9..0000000 --- a/.svelte-kit/output/client/_app/immutable/assets/2.CHt1yucP.css +++ /dev/null @@ -1 +0,0 @@ -.player-wrapper.svelte-zbxgh1{position:relative;width:100%;background:#0a182b;overflow:hidden}.player-wrapper.svelte-zbxgh1:fullscreen{display:flex;align-items:center;justify-content:center}.player-wrapper.svelte-zbxgh1:fullscreen video:where(.svelte-zbxgh1){max-height:100vh;max-width:100vw;object-fit:contain}video.svelte-zbxgh1{width:100%;display:block;max-height:70vh;cursor:pointer}.controls.svelte-zbxgh1{position:absolute;bottom:5%;left:10%;right:15%;opacity:0;transition:opacity .25s ease;pointer-events:none}.controls.visible.svelte-zbxgh1{opacity:1;pointer-events:auto}.scrub-bar.svelte-zbxgh1{position:relative;height:48px;cursor:pointer}.scrub-frog.svelte-zbxgh1{position:absolute;bottom:0;transform:translate(-50%);cursor:grab;transition:left .05s linear;z-index:2;padding:6px}.scrub-frog.svelte-zbxgh1:active{cursor:grabbing}.scrub-frog.flipped.svelte-zbxgh1{transform:translate(-50%) scaleX(-1)}.frog-sprite.svelte-zbxgh1{width:48px;height:auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));pointer-events:none}.fullscreen-btn.svelte-zbxgh1{all:unset;position:absolute;bottom:5%;right:8%;cursor:pointer;opacity:0;transition:opacity .25s ease,transform .2s ease;z-index:5}.fullscreen-btn.visible.svelte-zbxgh1{opacity:1}.fullscreen-btn.svelte-zbxgh1:hover{transform:scale(1.15)}.frogeye.svelte-zbxgh1{width:44px;height:44px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}.error-overlay.svelte-zbxgh1{position:absolute;bottom:15%;left:10%;right:10%;background:#ff3992d9;color:#ffdeed;padding:8px 12px;border-radius:6px;font-family:Nunito,Fang,system-ui,sans-serif;font-size:.8rem}.card.svelte-1nxalmg{all:unset;cursor:url(../../../frogcursor-small.png) 12 12,pointer;display:flex;flex-direction:column;transition:transform .2s ease;position:relative}.card.svelte-1nxalmg:hover{transform:scale(1.03)!important}.duration-badge.svelte-1nxalmg{display:block;font-family:Shrikhand,PicNic,cursive,system-ui;font-size:1.4rem;color:#ff3992;font-weight:700;letter-spacing:.5px;margin-bottom:8px;text-align:right}.thumb-wrapper.svelte-1nxalmg{margin:0}.thumbnail.svelte-1nxalmg{position:relative;width:100%;aspect-ratio:16 / 9;background:linear-gradient(135deg,#3992ff,#1e4e8c);display:flex;align-items:center;justify-content:center;overflow:hidden}.thumb-img.svelte-1nxalmg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .15s}.scrub-canvas.svelte-1nxalmg{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}.scrub-canvas.visible.svelte-1nxalmg{opacity:1}.scrub-frog.svelte-1nxalmg{position:absolute;bottom:0%;z-index:4;pointer-events:none;transform:translate(-50%);transition:left .05s linear}.scrub-frog.flipped.svelte-1nxalmg{transform:translate(-50%) scaleX(-1)}.frog-sprite.svelte-1nxalmg{width:48px;height:auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4));image-rendering:auto}.thumb-shadow.svelte-1nxalmg{position:absolute;inset:0;box-shadow:inset 0 3px 16px #0a182b80;pointer-events:none}.loading-spinner.svelte-1nxalmg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:3}.spinner.svelte-1nxalmg{width:28px;height:28px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:svelte-1nxalmg-spin .8s linear infinite}@keyframes svelte-1nxalmg-spin{to{transform:rotate(360deg)}}.scrub-bar.svelte-1nxalmg{position:absolute;bottom:0;left:0;right:0;height:3px;background:#fff3;z-index:2}.scrub-bar-fill.svelte-1nxalmg{height:100%;background:#ff3992;transition:width .05s linear}.info.svelte-1nxalmg{padding:14px 10px 8px}.title.svelte-1nxalmg{margin:0;font-family:Nunito,Fang,system-ui,sans-serif;font-size:.9rem;font-weight:700;color:#0a182b;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.creator.svelte-1nxalmg{margin:4px 0 0;font-family:Nunito,Fang,system-ui,sans-serif;font-size:.8rem;color:#0a182b;opacity:.8;text-decoration:underline;text-decoration-color:#ff3992}.date.svelte-1nxalmg{margin:2px 0 0;font-family:Nunito,Fang,system-ui,sans-serif;font-size:.75rem;color:#ff3992;font-style:italic}.app.svelte-1uha8ag{max-width:1300px;margin:0 auto;padding:0 clamp(24px,7vw,120px) 60px}.player-section.svelte-1uha8ag{margin-bottom:40px;margin-top:20px;padding:0 10px}.player-info.svelte-1uha8ag{padding:20px 4px}.player-title.svelte-1uha8ag{margin:0;font-family:Shrikhand,PicNic,cursive,system-ui;font-size:clamp(1.4rem,3vw,2rem);color:#0a182b}.player-meta.svelte-1uha8ag{margin:6px 0 0;font-family:Nunito,Fang,system-ui,sans-serif;color:#0a182b;opacity:.7;font-size:.85rem}.creator-tag.svelte-1uha8ag{color:#3992ff;text-decoration:underline}.dot.svelte-1uha8ag{margin:0 4px;color:#0a182b;opacity:.4}.grid.svelte-1uha8ag{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:clamp(32px,5vw,50px);padding:20px clamp(16px,3vw,24px)}.pagination.svelte-1uha8ag{display:flex;justify-content:center;align-items:center;gap:20px;padding:30px}.page-btn.svelte-1uha8ag{background:#0a182b;color:#39ff44;border:3px solid #0a182b;padding:12px 32px;border-radius:40px;font-family:Shrikhand,PicNic,cursive,system-ui;font-size:1.1rem;cursor:pointer;transition:all .2s ease;letter-spacing:.5px}.page-btn.svelte-1uha8ag:hover{background:#39ff44;color:#0a182b;border-color:#0a182b}.page-btn.svelte-1uha8ag:disabled{background:#1a8c22;color:#0a182b;border-color:#1a8c22;cursor:wait;opacity:.6}.page-num.svelte-1uha8ag{font-family:Shrikhand,PicNic,cursive,system-ui;font-size:1.1rem;color:#0a182b}.error.svelte-1uha8ag{background:#ff399226;color:#ff3992;padding:12px 16px;border-radius:8px;margin:0 10px 20px;font-family:Nunito,Fang,system-ui,sans-serif;border:2px solid #ff3992} diff --git a/.svelte-kit/output/client/_app/immutable/assets/3.CjGf6tQE.css b/.svelte-kit/output/client/_app/immutable/assets/3.CjGf6tQE.css deleted file mode 100644 index d599bab..0000000 --- a/.svelte-kit/output/client/_app/immutable/assets/3.CjGf6tQE.css +++ /dev/null @@ -1 +0,0 @@ -.profile-page.svelte-oxml5t{max-width:800px;margin:0 auto;padding:0 clamp(24px,7vw,80px) 60px}.loading.svelte-oxml5t{text-align:center;padding:60px 20px}.loading-frog.svelte-oxml5t{width:64px;height:auto;animation:svelte-oxml5t-hop .6s ease-in-out infinite alternate}@keyframes svelte-oxml5t-hop{0%{transform:translateY(0)}to{transform:translateY(-12px)}}.loading-text.svelte-oxml5t{font-family:Shrikhand,PicNic,cursive,system-ui;font-size:1.2rem;color:#0a182b;margin-top:12px}.error.svelte-oxml5t{background:#ff399226;color:#ff3992;padding:12px 16px;border-radius:8px;margin:20px 0;font-family:Nunito,Fang,system-ui,sans-serif;border:2px solid #FF3992}.profile-layout.svelte-oxml5t{display:flex;flex-direction:column;gap:24px}.banner-img.svelte-oxml5t{width:100%;display:block;aspect-ratio:3 / 1;object-fit:cover}.profile-card-area.svelte-oxml5t{margin-top:-20px}.profile-card.svelte-oxml5t{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.avatar-wrapper.svelte-oxml5t{width:clamp(80px,15vw,120px);margin-bottom:8px}.avatar.svelte-oxml5t{width:100%;display:block;aspect-ratio:1;object-fit:cover;border-radius:0}.display-name.svelte-oxml5t{font-family:Shrikhand,PicNic,cursive,system-ui;font-size:clamp(1.8rem,4vw,2.8rem);color:#0a182b;margin:0;line-height:1.1}.handle.svelte-oxml5t{font-family:Nunito,Fang,system-ui,sans-serif;font-size:1rem;color:#0a182b;opacity:.7;margin:0}.description.svelte-oxml5t{font-family:Nunito,Fang,system-ui,sans-serif;font-size:.95rem;color:#0a182b;margin:8px 0;max-width:500px;line-height:1.5}.stats.svelte-oxml5t{display:flex;gap:clamp(16px,4vw,32px);margin:12px 0}.stat.svelte-oxml5t{display:flex;flex-direction:column;align-items:center}.stat-num.svelte-oxml5t{font-family:Shrikhand,PicNic,cursive,system-ui;font-size:1.4rem;color:#0a182b;font-weight:700}.stat-label.svelte-oxml5t{font-family:Nunito,Fang,system-ui,sans-serif;font-size:.75rem;color:#0a182b;opacity:.6}.profile-link.svelte-oxml5t{font-family:Shrikhand,PicNic,cursive,system-ui;font-size:1rem;color:#0a182b;text-decoration:underline;text-decoration-color:#ff3992;margin-top:8px;transition:color .15s}.profile-link.svelte-oxml5t:hover{color:#ff3992}.back-link.svelte-oxml5t{text-align:center;padding:30px}.back-link.svelte-oxml5t a:where(.svelte-oxml5t){font-family:Shrikhand,PicNic,cursive,system-ui;font-size:1.1rem;color:#0a182b;text-decoration:underline;text-decoration-color:#ff3992;transition:color .15s}.back-link.svelte-oxml5t a:where(.svelte-oxml5t):hover{color:#ff3992} diff --git a/.svelte-kit/output/client/_app/immutable/assets/3.JMkiik8G.css b/.svelte-kit/output/client/_app/immutable/assets/3.JMkiik8G.css new file mode 100644 index 0000000..9b193b3 --- /dev/null +++ b/.svelte-kit/output/client/_app/immutable/assets/3.JMkiik8G.css @@ -0,0 +1 @@ +.profile-page.svelte-oxml5t{max-width:800px;margin:0 auto;padding:0 clamp(24px,7vw,80px) 60px}.loading.svelte-oxml5t{text-align:center;padding:60px 20px}.loading-frog.svelte-oxml5t{width:64px;height:auto;animation:svelte-oxml5t-hop .6s ease-in-out infinite alternate}@keyframes svelte-oxml5t-hop{0%{transform:translateY(0)}to{transform:translateY(-12px)}}.loading-text.svelte-oxml5t{font-family:PicNic,cursive,system-ui;font-size:1.2rem;color:#0a182b;margin-top:12px}.error.svelte-oxml5t{background:#ff399226;color:#ff3992;padding:12px 16px;border-radius:8px;margin:20px 0;font-family:Fang,system-ui,sans-serif;border:2px solid #FF3992}.profile-layout.svelte-oxml5t{display:flex;flex-direction:column;gap:24px}.banner-img.svelte-oxml5t{width:100%;display:block;aspect-ratio:3 / 1;object-fit:cover}.profile-card-area.svelte-oxml5t{margin-top:-20px}.profile-card.svelte-oxml5t{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.avatar-wrapper.svelte-oxml5t{width:clamp(80px,15vw,120px);margin-bottom:8px}.avatar.svelte-oxml5t{width:100%;display:block;aspect-ratio:1;object-fit:cover;border-radius:0}.display-name.svelte-oxml5t{font-family:PicNic,cursive,system-ui;font-size:clamp(1.8rem,4vw,2.8rem);color:#0a182b;margin:0;line-height:1.1}.handle.svelte-oxml5t{font-family:Fang,system-ui,sans-serif;font-size:1rem;color:#0a182b;opacity:.7;margin:0}.description.svelte-oxml5t{font-family:Fang,system-ui,sans-serif;font-size:.95rem;color:#0a182b;margin:8px 0;max-width:500px;line-height:1.5}.stats.svelte-oxml5t{display:flex;gap:clamp(16px,4vw,32px);margin:12px 0}.stat.svelte-oxml5t{display:flex;flex-direction:column;align-items:center}.stat-num.svelte-oxml5t{font-family:PicNic,cursive,system-ui;font-size:1.4rem;color:#0a182b;font-weight:700}.stat-label.svelte-oxml5t{font-family:Fang,system-ui,sans-serif;font-size:.75rem;color:#0a182b;opacity:.6}.profile-link.svelte-oxml5t{font-family:PicNic,cursive,system-ui;font-size:1rem;color:#0a182b;text-decoration:underline;text-decoration-color:#ff3992;margin-top:8px;transition:color .15s}.profile-link.svelte-oxml5t:hover{color:#ff3992}.back-link.svelte-oxml5t{text-align:center;padding:30px}.back-link.svelte-oxml5t a:where(.svelte-oxml5t){font-family:PicNic,cursive,system-ui;font-size:1.1rem;color:#0a182b;text-decoration:underline;text-decoration-color:#ff3992;transition:color .15s}.back-link.svelte-oxml5t a:where(.svelte-oxml5t):hover{color:#ff3992} diff --git a/.svelte-kit/output/client/_app/immutable/assets/FrogHeader.8kzFzgPu.css b/.svelte-kit/output/client/_app/immutable/assets/FrogHeader.8kzFzgPu.css deleted file mode 100644 index 49bdc4d..0000000 --- a/.svelte-kit/output/client/_app/immutable/assets/FrogHeader.8kzFzgPu.css +++ /dev/null @@ -1 +0,0 @@ -.wavy-container.svelte-7frlgw{position:relative;isolation:isolate}.wavy-clipped.svelte-7frlgw{position:relative}.wavy-fill.svelte-7frlgw{position:absolute;inset:0;z-index:0}.wavy-content.svelte-7frlgw{position:relative;z-index:1;padding:var(--padding)}.wavy-stroke.svelte-7frlgw{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;overflow:visible}.frog-header.svelte-1kxia9k{padding:30px 20px;position:relative}.title-area.svelte-1kxia9k{position:relative;display:inline-block}.logo-link.svelte-1kxia9k{text-decoration:none;color:inherit}.logo-text.svelte-1kxia9k{font-family:Shrikhand,PicNic,cursive,system-ui;font-size:clamp(3rem,8vw,5.5rem);color:#0a182b;margin:0;line-height:.9;font-weight:400;letter-spacing:-1px;position:relative;z-index:1}.header-frog.svelte-1kxia9k{position:absolute;right:-80px;top:-60px;width:clamp(120px,18vw,220px);height:auto;z-index:2;transform:rotate(-10deg);filter:drop-shadow(2px 4px 6px rgba(10,24,43,.3));transition:transform .3s ease}.header-frog.svelte-1kxia9k:hover{transform:rotate(5deg) scale(1.1)}.subtitle-lines.svelte-1kxia9k{margin-top:6px;position:relative;z-index:0}.subtitle-link.svelte-1kxia9k{color:#0a182b;text-decoration:underline;text-decoration-color:#ff3992;transition:color .15s}.subtitle-link.svelte-1kxia9k:hover{color:#ff3992}.subtitle.svelte-1kxia9k{font-family:Shrikhand,PicNic,cursive,system-ui;font-size:clamp(.85rem,2vw,1.15rem);color:#0a182b;margin:0;line-height:1.4;opacity:.85}@media(max-width:600px){.frog-header.svelte-1kxia9k{padding:20px 16px 8px}.header-frog.svelte-1kxia9k{right:-100px;top:-20px}} diff --git a/.svelte-kit/output/client/_app/immutable/assets/FrogHeader.nOQL7IYP.css b/.svelte-kit/output/client/_app/immutable/assets/FrogHeader.nOQL7IYP.css new file mode 100644 index 0000000..bd13c13 --- /dev/null +++ b/.svelte-kit/output/client/_app/immutable/assets/FrogHeader.nOQL7IYP.css @@ -0,0 +1 @@ +.wavy-container.svelte-7frlgw{position:relative;isolation:isolate}.wavy-clipped.svelte-7frlgw{position:relative}.wavy-fill.svelte-7frlgw{position:absolute;inset:0;z-index:0}.wavy-content.svelte-7frlgw{position:relative;z-index:1;padding:var(--padding)}.wavy-stroke.svelte-7frlgw{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;overflow:visible}.frog-header.svelte-1kxia9k{padding:30px 20px;position:relative}.title-area.svelte-1kxia9k{position:relative;display:inline-block}.logo-link.svelte-1kxia9k{text-decoration:none;color:inherit}.logo-text.svelte-1kxia9k{font-family:PicNic,cursive,system-ui;font-size:clamp(3rem,8vw,5.5rem);color:#0a182b;margin:0;line-height:.9;font-weight:400;letter-spacing:-1px;position:relative;z-index:1}.header-frog.svelte-1kxia9k{position:absolute;right:-80px;top:-60px;width:clamp(120px,18vw,220px);height:auto;z-index:2;transform:rotate(-10deg);filter:drop-shadow(2px 4px 6px rgba(10,24,43,.3));transition:transform .3s ease}.header-frog.svelte-1kxia9k:hover{transform:rotate(5deg) scale(1.1)}.subtitle-lines.svelte-1kxia9k{margin-top:6px;position:relative;z-index:0}.subtitle-link.svelte-1kxia9k{color:#0a182b;text-decoration:underline;text-decoration-color:#ff3992;transition:color .15s}.subtitle-link.svelte-1kxia9k:hover{color:#ff3992}.subtitle.svelte-1kxia9k{font-family:PicNic,cursive,system-ui;font-size:clamp(.85rem,2vw,1.15rem);color:#0a182b;margin:0;line-height:1.4;opacity:.85}@media(max-width:600px){.frog-header.svelte-1kxia9k{padding:20px 16px 8px}.header-frog.svelte-1kxia9k{right:-100px;top:-20px}} diff --git a/.svelte-kit/output/client/_app/immutable/chunks/hJNu5X86.js b/.svelte-kit/output/client/_app/immutable/chunks/hJNu5X86.js deleted file mode 100644 index d44e032..0000000 --- a/.svelte-kit/output/client/_app/immutable/chunks/hJNu5X86.js +++ /dev/null @@ -1 +0,0 @@ -import{ab as L,A as U,B as T,aO as te,b2 as gt}from"./CkzjbUDB.js";import{w as Ee,o as qe}from"./DxGD2b0U.js";class Se{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Re{constructor(t,n){this.status=t,this.location=n}}class xe extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function _t(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function mt(e){return e.split("%25").map(decodeURI).join("%25")}function vt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function pe({href:e}){return e.split("#")[0]}function wt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function yt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&W.delete(Ae(e)),bt(e,t));const W=new Map;function kt(e,t){const n=Ae(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...i}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&W.set(n,{body:a,init:i,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=yt(a)),Promise.resolve(new Response(a,i))}return window.fetch(e,t)}function Et(e,t,n){if(W.size>0){const r=Ae(e,n),a=W.get(r);if(a){if(performance.now(){const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return ge(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return ge(String.fromCharCode(...l.slice(2).split("-").map(_=>parseInt(_,16))));const f=St.exec(l),[,p,v,h,u]=f;return t.push({name:h,matcher:u,optional:!!p,rest:!!v,chained:v?c===1&&o[0]==="":!1}),v?"([^]*?)":p?"([^/]*)?":"([^/]+?)"}return ge(l)}).join("")}).join("")}/?$`),params:t}}function xt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function At(e){return e.slice(1).split("/").filter(xt)}function Lt(e,t,n){const r={},a=e.slice(1),i=a.filter(s=>s!==void 0);let o=0;for(let s=0;sf).join("/"),o=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){r[l.name]=c;const f=t[s+1],p=a[s+1];f&&!f.rest&&f.optional&&p&&l.chained&&(o=0),!f&&!p&&Object.keys(r).length===i.length&&(o=0);continue}if(l.optional&&l.chained){o++;continue}return}if(!o)return r}function ge(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ut({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([s,[l,c,f]])=>{const{pattern:p,params:v}=Rt(s),h={id:s,exec:u=>{const _=p.exec(u);if(_)return Lt(_,v,r)},errors:[1,...f||[]].map(u=>e[u]),layouts:[0,...c||[]].map(o),leaf:i(l)};return h.errors.length=h.layouts.length=Math.max(h.errors.length,h.layouts.length),h});function i(s){const l=s<0;return l&&(s=~s),[l,e[s]]}function o(s){return s===void 0?s:[a.has(s),e[s]]}}function Ye(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function De(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const x=globalThis.__sveltekit_1iybqeu?.base??"",Tt=globalThis.__sveltekit_1iybqeu?.assets??x??"",It="1774912668657",ze="sveltekit:snapshot",He="sveltekit:scroll",Je="sveltekit:states",Ot="sveltekit:pageurl",V="sveltekit:history",z="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Le=location.origin;function Xe(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function q(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ve={...j,"":j.hover};function Qe(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ze(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Qe(e)}}function ve(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";r.hash=`#${s}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,i=!r||!!a||ue(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=r?.origin===Le&&e.hasAttribute("download");return{url:r,external:i,target:a,download:o}}function ne(e){let t=null,n=null,r=null,a=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,"preload-code")),a===null&&(a=D(s,"preload-data")),t===null&&(t=D(s,"keepfocus")),n===null&&(n=D(s,"noscroll")),i===null&&(i=D(s,"reload")),o===null&&(o=D(s,"replacestate")),s=Qe(s);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ve[r??"off"],preload_data:Ve[a??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(o)}}function Be(e){const t=Ee(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(l=>{(s===void 0||n&&l!==s)&&o(s=l)})}return{notify:r,set:a,subscribe:i}}const et={v:()=>{}};function Pt(){const{set:e,subscribe:t}=Ee(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Tt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==It;return o&&(e(!0),et.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function ue(e,t,n){return e.origin!==Le||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function ln(e){}const tt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...tt];const $t=new Set([...tt]);[...$t];function Ct(e){return e.filter(t=>t!=null)}function Ue(e){return e instanceof Se||e instanceof xe?e.status:500}function jt(e){return e instanceof xe?e.text:"Internal Error"}let k,H,_e;const Nt=qe.toString().includes("$$")||/function \w+\(\) \{\}/.test(qe.toString()),Ke="a:";Nt?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ke)},H={current:null},_e={current:!1}):(k=new class{#e=L({});get data(){return U(this.#e)}set data(t){T(this.#e,t)}#t=L(null);get form(){return U(this.#t)}set form(t){T(this.#t,t)}#n=L(null);get error(){return U(this.#n)}set error(t){T(this.#n,t)}#r=L({});get params(){return U(this.#r)}set params(t){T(this.#r,t)}#a=L({id:null});get route(){return U(this.#a)}set route(t){T(this.#a,t)}#o=L({});get state(){return U(this.#o)}set state(t){T(this.#o,t)}#s=L(-1);get status(){return U(this.#s)}set status(t){T(this.#s,t)}#i=L(new URL(Ke));get url(){return U(this.#i)}set url(t){T(this.#i,t)}},H=new class{#e=L(null);get current(){return U(this.#e)}set current(t){T(this.#e,t)}},_e=new class{#e=L(!1);get current(){return U(this.#e)}set current(t){T(this.#e,t)}},et.v=()=>_e.current=!0);function qt(e){Object.assign(k,e)}const Dt=new Set(["icon","shortcut icon","apple-touch-icon"]);let F=null;const C=Ye(He)??{},J=Ye(ze)??{},$={url:Be({}),page:Be({}),navigating:Ee(null),updated:Pt()};function Te(e){C[e]=q()}function Vt(e,t){let n=e+1;for(;C[n];)delete C[n],n+=1;for(n=t+1;J[n];)delete J[n],n+=1}function X(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function nt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(x||"/");e&&await e.update()}}function Me(){}let Ie,we,re,I,ye,y;const ae=[],oe=[];let A=null;function be(){A?.fork?.then(e=>e?.discard()),A=null}const ee=new Map,rt=new Set,Bt=new Set,Y=new Set;let m={branch:[],error:null,url:null},at=!1,se=!1,Fe=!0,Q=!1,G=!1,ot=!1,Oe=!1,st,w,R,N;const ie=new Set,Ge=new Map;async function dn(e,t,n){globalThis.__sveltekit_1iybqeu?.data&&globalThis.__sveltekit_1iybqeu.data,document.URL!==location.href&&(location.href=location.href),y=e,await e.hooks.init?.(),Ie=Ut(e),I=document.documentElement,ye=t,we=e.nodes[0],re=e.nodes[1],we(),re(),w=history.state?.[V],R=history.state?.[z],w||(w=R=Date.now(),history.replaceState({...history.state,[V]:w,[z]:R},""));const r=C[w];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await tn(ye,n)):(await B({type:"enter",url:Xe(y.hash?an(new URL(location.href)):location.href),replace_state:!0}),a()),en()}function Kt(){ae.length=0,Oe=!1}function it(e){oe.some(t=>t?.snapshot)&&(J[e]=oe.map(t=>t?.snapshot?.capture()))}function lt(e){J[e]?.forEach((t,n)=>{oe[n]?.snapshot?.restore(t)})}function We(){Te(w),De(He,C),it(R),De(ze,J)}async function Mt(e,t,n,r){let a;t.invalidateAll&&be(),await B({type:"goto",url:Xe(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Oe=!0,a=[...Ge.keys()]),t.invalidate&&t.invalidate.forEach(Zt)}}),t.invalidateAll&&te().then(te).then(()=>{Ge.forEach(({resource:i},o)=>{a?.includes(o)&&i.refresh?.()})})}async function Ft(e){if(e.id!==A?.id){be();const t={};ie.add(t),A={id:e.id,token:t,promise:ut({...e,preload:t}).then(n=>(ie.delete(t),n.type==="loaded"&&n.state.error&&be(),n)),fork:null}}return A.promise}async function me(e){const t=(await fe(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function ct(e,t,n){const r={params:m.params,route:{id:m.route?.id??null},url:new URL(location.href)};m={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(k,e.props.page),st=new y.root({target:t,props:{...e.props,stores:$,components:oe},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),lt(R),n){const i={from:null,to:{...r,scroll:C[w]??q()},willUnload:!1,type:"enter",complete:Promise.resolve()};Y.forEach(o=>o(i))}se=!0}async function le({url:e,params:t,branch:n,errors:r,status:a,error:i,route:o,form:s}){let l="never";if(x&&(e.pathname===x||e.pathname===x+"/"))l="always";else for(const u of n)u?.slash!==void 0&&(l=u.slash);e.pathname=_t(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:o},props:{constructors:Ct(n).map(u=>u.node.component),page:Ne(k)}};s!==void 0&&(c.props.form=s);let f={},p=!k,v=0;for(let u=0;us(new URL(o))))return!0;return!1}function $e(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function Yt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),i=t.searchParams.getAll(r);a.every(o=>i.includes(o))&&i.every(o=>a.includes(o))&&n.delete(r)}return n}function zt({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ne(k),constructors:[]}}}async function ut({id:e,invalidating:t,url:n,params:r,route:a,preload:i}){if(A?.id===e)return ie.delete(A.token),A.promise;const{errors:o,layouts:s,leaf:l}=a,c=[...s,l];o.forEach(g=>g?.().catch(()=>{})),c.forEach(g=>g?.[1]().catch(()=>{}));const f=m.url?e!==ce(m.url):!1,p=m.route?a.id!==m.route.id:!1,v=Yt(m.url,n);let h=!1;const u=c.map(async(g,d)=>{if(!g)return;const E=m.branch[d];return g[1]===E?.loader&&!Wt(h,p,f,v,E.universal?.uses,r)?E:(h=!0,Pe({loader:g[1],url:n,params:r,route:a,parent:async()=>{const O={};for(let P=0;P{});const _=[];for(let g=0;gPromise.resolve({}),server_data_node:$e(i)}),s={node:await re(),loader:re,universal:null,server:null,data:null};return le({url:n,params:a,branch:[o,s],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Re)return Mt(new URL(o.location,location.href),{},0);throw o}}async function Jt(e){const t=e.href;if(ee.has(t))return ee.get(t);let n;try{const r=(async()=>{let a=await y.hooks.reroute({url:new URL(e),fetch:async(i,o)=>Gt(i,o,e).promise})??e;if(typeof a=="string"){const i=new URL(e);y.hash?i.hash=a:i.pathname=a,a=i}return a})();ee.set(t,r),n=await r}catch{ee.delete(t);return}return n}async function fe(e,t){if(e&&!ue(e,x,y.hash)){const n=await Jt(e);if(!n)return;const r=Xt(n);for(const a of Ie){const i=a.exec(r);if(i)return{id:ce(e),invalidating:t,route:a,params:vt(i),url:e}}}}function Xt(e){return mt(y.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(x.length))||"/"}function ce(e){return(y.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function ft({url:e,type:t,intent:n,delta:r,event:a,scroll:i}){let o=!1;const s=je(m,n,e,t,i??null);r!==void 0&&(s.navigation.delta=r),a!==void 0&&(s.navigation.event=a);const l={...s.navigation,cancel:()=>{o=!0,s.reject(new Error("navigation cancelled"))}};return Q||rt.forEach(c=>c(l)),o?null:s}async function B({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:i,state:o={},redirect_count:s=0,nav_token:l={},accept:c=Me,block:f=Me,event:p}){const v=N;N=l;const h=await fe(t,!1),u=e==="enter"?je(m,h,t,e):ft({url:t,type:e,delta:n?.delta,intent:h,scroll:n?.scroll,event:p});if(!u){f(),N===l&&(N=v);return}const _=w,g=R;c(),Q=!0,se&&u.navigation.type!=="enter"&&$.navigating.set(H.current=u.navigation);let d=h&&await ut(h);if(!d){if(ue(t,x,y.hash))return await X(t,i);d=await dt(t,{id:null},await Z(new xe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=h?.url||t,N!==l)return u.reject(new Error("navigation aborted")),!1;if(d.type==="redirect"){if(s<20){await B({type:e,url:new URL(d.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:i,state:o,redirect_count:s+1,nav_token:l}),u.fulfil(void 0);return}d=await Ce({status:500,error:await Z(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else d.props.page.status>=400&&await $.updated.check()&&(await nt(),await X(t,i));if(Kt(),Te(_),it(g),d.props.page.url.pathname!==t.pathname&&(t.pathname=d.props.page.url.pathname),o=n?n.state:o,!n){const b=i?0:1,K={[V]:w+=b,[z]:R+=b,[Je]:o};(i?history.replaceState:history.pushState).call(history,K,"",t),i||Vt(w,R)}const E=h&&A?.id===h.id?A.fork:null;A=null,d.props.page.state=o;let S;if(se){const b=(await Promise.all(Array.from(Bt,M=>M(u.navigation)))).filter(M=>typeof M=="function");if(b.length>0){let M=function(){b.forEach(he=>{Y.delete(he)})};b.push(M),b.forEach(he=>{Y.add(he)})}const K=u.navigation.to;m={...d.state,nav:{params:K.params,route:K.route,url:K.url}},d.props.page&&(d.props.page.url=t);const de=E&&await E;de?S=de.commit():(F=null,st.$set(d.props),F&&Object.assign(d.props.page,F),qt(d.props.page),S=gt?.()),ot=!0}else await ct(d,ye,!1);const{activeElement:O}=document;await S,await te(),await te();let P=null;if(Fe){const b=n?n.scroll:a?q():null;b?scrollTo(b.x,b.y):(P=t.hash&&document.getElementById(ht(t)))?P.scrollIntoView():scrollTo(0,0)}const pt=document.activeElement!==O&&document.activeElement!==document.body;!r&&!pt&&rn(t,!P),Fe=!0,d.props.page&&(F&&Object.assign(d.props.page,F),Object.assign(k,d.props.page)),Q=!1,e==="popstate"&<(R),u.fulfil(void 0),u.navigation.to&&(u.navigation.to.scroll=q()),Y.forEach(b=>b(u.navigation)),$.navigating.set(H.current=null)}async function dt(e,t,n,r,a){return e.origin===Le&&e.pathname===location.pathname&&!at?await Ce({status:r,error:n,url:e,route:t}):await X(e,a)}function Qt(){let e,t={element:void 0,href:void 0},n;I.addEventListener("mousemove",s=>{const l=s.target;clearTimeout(e),e=setTimeout(()=>{i(l,j.hover)},20)});function r(s){s.defaultPrevented||i(s.composedPath()[0],j.tap)}I.addEventListener("mousedown",r),I.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(s=>{for(const l of s)l.isIntersecting&&(me(new URL(l.target.href)),a.unobserve(l.target))},{threshold:0});async function i(s,l){const c=Ze(s,I),f=c===t.element&&c?.href===t.href&&l>=n;if(!c||f)return;const{url:p,external:v,download:h}=ve(c,x,y.hash);if(v||h)return;const u=ne(c),_=p&&ce(m.url)===ce(p);if(!(u.reload||_))if(l<=u.preload_data){t={element:c,href:c.href},n=j.tap;const g=await fe(p,!1);if(!g)return;Ft(g)}else l<=u.preload_code&&(t={element:c,href:c.href},n=l,me(p))}function o(){a.disconnect();for(const s of I.querySelectorAll("a")){const{url:l,external:c,download:f}=ve(s,x,y.hash);if(c||f)continue;const p=ne(s);p.reload||(p.preload_code===j.viewport&&a.observe(s),p.preload_code===j.eager&&me(l))}}Y.add(o),o()}function Z(e,t){if(e instanceof Se)return e.body;const n=Ue(e),r=jt(e);return y.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Zt(e){if(typeof e=="function")ae.push(e);else{const{href:t}=new URL(e,location.href);ae.push(n=>n.href===t)}}function en(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(We(),!Q){const r=je(m,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};rt.forEach(i=>i(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&We()}),navigator.connection?.saveData||Qt(),I.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=Ze(t.composedPath()[0],I);if(!n)return;const{url:r,external:a,target:i,download:o}=ve(n,x,y.hash);if(!r)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const s=ne(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[c,f]=(y.hash?r.hash.replace(/^#/,""):r.href).split("#"),p=c===pe(location);if(a||s.reload&&(!p||!f)){ft({url:r,type:"link",event:t})?Q=!0:t.preventDefault();return}if(f!==void 0&&p){const[,v]=m.url.href.split("#");if(v===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const h=n.ownerDocument.getElementById(decodeURIComponent(f));h&&(h.scrollIntoView(),h.focus())}return}if(G=!0,Te(w),e(r),!s.replace_state)return;G=!1}t.preventDefault(),await new Promise(v=>{requestAnimationFrame(()=>{setTimeout(v,0)}),setTimeout(v,100)}),await B({type:"link",url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),I.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const o=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(ue(o,x,!1))return;const s=t.target,l=ne(s);if(l.reload)return;t.preventDefault(),t.stopPropagation();const c=new FormData(s,r);o.search=new URLSearchParams(c).toString(),B({type:"form",url:o,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!ke){if(t.state?.[V]){const n=t.state[V];if(N={},n===w)return;const r=C[n],a=t.state[Je]??{},i=new URL(t.state[Ot]??location.href),o=t.state[z],s=m.url?pe(location)===pe(m.url):!1;if(o===R&&(ot||s)){a!==k.state&&(k.state=a),e(i),C[w]=q(),r&&scrollTo(r.x,r.y),w=n;return}const c=n-w;await B({type:"popstate",url:i,popped:{state:a,scroll:r,delta:c},accept:()=>{w=n,R=o},block:()=>{history.go(-c)},nav_token:N,event:t})}else if(!G){const n=new URL(location.href);e(n),y.hash&&location.reload()}}}),addEventListener("hashchange",()=>{G&&(G=!1,history.replaceState({...history.state,[V]:++w,[z]:R},"",location.href))});for(const t of document.querySelectorAll("link"))Dt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&$.navigating.set(H.current=null)});function e(t){m.url=k.url=t,$.page.set(Ne(k)),$.page.notify()}}async function tn(e,{status:t=200,error:n,node_ids:r,params:a,route:i,server_route:o,data:s,form:l}){at=!0;const c=new URL(location.href);let f;({params:a={},route:i={id:null}}=await fe(c,!1)||{}),f=Ie.find(({id:h})=>h===i.id);let p,v=!0;try{const h=r.map(async(_,g)=>{const d=s[g];return d?.uses&&(d.uses=nn(d.uses)),Pe({loader:y.nodes[_],url:c,params:a,route:i,parent:async()=>{const E={};for(let S=0;S{const s=history.state;ke=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(s,"",e),t&&scrollTo(i,o),ke=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const i=[];for(let o=0;o{if(a.rangeCount===i.length){for(let o=0;o{i=c,o=f});return s.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:q()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:s},fulfil:i,reject:o}}function Ne(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function an(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function ht(e){let t;if(y.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{dn as a,ln as l,k as p,$ as s}; diff --git a/.svelte-kit/output/client/_app/immutable/chunks/p8sLpASk.js b/.svelte-kit/output/client/_app/immutable/chunks/p8sLpASk.js new file mode 100644 index 0000000..4313b03 --- /dev/null +++ b/.svelte-kit/output/client/_app/immutable/chunks/p8sLpASk.js @@ -0,0 +1 @@ +import{ab as L,A as U,B as T,aO as te,b2 as gt}from"./CkzjbUDB.js";import{w as Ee,o as De}from"./DxGD2b0U.js";class Se{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Re{constructor(t,n){this.status=t,this.location=n}}class xe extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function _t(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function mt(e){return e.split("%25").map(decodeURI).join("%25")}function vt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function pe({href:e}){return e.split("#")[0]}function wt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function yt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&W.delete(Ae(e)),bt(e,t));const W=new Map;function kt(e,t){const n=Ae(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...i}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&W.set(n,{body:a,init:i,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=yt(a)),Promise.resolve(new Response(a,i))}return window.fetch(e,t)}function Et(e,t,n){if(W.size>0){const r=Ae(e,n),a=W.get(r);if(a){if(performance.now(){const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return ge(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return ge(String.fromCharCode(...l.slice(2).split("-").map(_=>parseInt(_,16))));const f=St.exec(l),[,p,v,h,u]=f;return t.push({name:h,matcher:u,optional:!!p,rest:!!v,chained:v?c===1&&o[0]==="":!1}),v?"([^]*?)":p?"([^/]*)?":"([^/]+?)"}return ge(l)}).join("")}).join("")}/?$`),params:t}}function xt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function At(e){return e.slice(1).split("/").filter(xt)}function Lt(e,t,n){const r={},a=e.slice(1),i=a.filter(s=>s!==void 0);let o=0;for(let s=0;sf).join("/"),o=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){r[l.name]=c;const f=t[s+1],p=a[s+1];f&&!f.rest&&f.optional&&p&&l.chained&&(o=0),!f&&!p&&Object.keys(r).length===i.length&&(o=0);continue}if(l.optional&&l.chained){o++;continue}return}if(!o)return r}function ge(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ut({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([s,[l,c,f]])=>{const{pattern:p,params:v}=Rt(s),h={id:s,exec:u=>{const _=p.exec(u);if(_)return Lt(_,v,r)},errors:[1,...f||[]].map(u=>e[u]),layouts:[0,...c||[]].map(o),leaf:i(l)};return h.errors.length=h.layouts.length=Math.max(h.errors.length,h.layouts.length),h});function i(s){const l=s<0;return l&&(s=~s),[l,e[s]]}function o(s){return s===void 0?s:[a.has(s),e[s]]}}function Ye(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function qe(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const x=globalThis.__sveltekit_47n7bs?.base??"",Tt=globalThis.__sveltekit_47n7bs?.assets??x??"",It="1774912885214",ze="sveltekit:snapshot",He="sveltekit:scroll",Je="sveltekit:states",Ot="sveltekit:pageurl",V="sveltekit:history",z="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Le=location.origin;function Xe(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function D(){return{x:pageXOffset,y:pageYOffset}}function q(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ve={...j,"":j.hover};function Qe(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ze(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Qe(e)}}function ve(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";r.hash=`#${s}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,i=!r||!!a||ue(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=r?.origin===Le&&e.hasAttribute("download");return{url:r,external:i,target:a,download:o}}function ne(e){let t=null,n=null,r=null,a=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=q(s,"preload-code")),a===null&&(a=q(s,"preload-data")),t===null&&(t=q(s,"keepfocus")),n===null&&(n=q(s,"noscroll")),i===null&&(i=q(s,"reload")),o===null&&(o=q(s,"replacestate")),s=Qe(s);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ve[r??"off"],preload_data:Ve[a??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(o)}}function Be(e){const t=Ee(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(l=>{(s===void 0||n&&l!==s)&&o(s=l)})}return{notify:r,set:a,subscribe:i}}const et={v:()=>{}};function Pt(){const{set:e,subscribe:t}=Ee(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Tt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==It;return o&&(e(!0),et.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function ue(e,t,n){return e.origin!==Le||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function ln(e){}const tt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...tt];const $t=new Set([...tt]);[...$t];function Ct(e){return e.filter(t=>t!=null)}function Ue(e){return e instanceof Se||e instanceof xe?e.status:500}function jt(e){return e instanceof xe?e.text:"Internal Error"}let k,H,_e;const Nt=De.toString().includes("$$")||/function \w+\(\) \{\}/.test(De.toString()),Ke="a:";Nt?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ke)},H={current:null},_e={current:!1}):(k=new class{#e=L({});get data(){return U(this.#e)}set data(t){T(this.#e,t)}#t=L(null);get form(){return U(this.#t)}set form(t){T(this.#t,t)}#n=L(null);get error(){return U(this.#n)}set error(t){T(this.#n,t)}#r=L({});get params(){return U(this.#r)}set params(t){T(this.#r,t)}#a=L({id:null});get route(){return U(this.#a)}set route(t){T(this.#a,t)}#o=L({});get state(){return U(this.#o)}set state(t){T(this.#o,t)}#s=L(-1);get status(){return U(this.#s)}set status(t){T(this.#s,t)}#i=L(new URL(Ke));get url(){return U(this.#i)}set url(t){T(this.#i,t)}},H=new class{#e=L(null);get current(){return U(this.#e)}set current(t){T(this.#e,t)}},_e=new class{#e=L(!1);get current(){return U(this.#e)}set current(t){T(this.#e,t)}},et.v=()=>_e.current=!0);function Dt(e){Object.assign(k,e)}const qt=new Set(["icon","shortcut icon","apple-touch-icon"]);let F=null;const C=Ye(He)??{},J=Ye(ze)??{},$={url:Be({}),page:Be({}),navigating:Ee(null),updated:Pt()};function Te(e){C[e]=D()}function Vt(e,t){let n=e+1;for(;C[n];)delete C[n],n+=1;for(n=t+1;J[n];)delete J[n],n+=1}function X(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function nt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(x||"/");e&&await e.update()}}function Me(){}let Ie,we,re,I,ye,y;const ae=[],oe=[];let A=null;function be(){A?.fork?.then(e=>e?.discard()),A=null}const ee=new Map,rt=new Set,Bt=new Set,Y=new Set;let m={branch:[],error:null,url:null},at=!1,se=!1,Fe=!0,Q=!1,G=!1,ot=!1,Oe=!1,st,w,R,N;const ie=new Set,Ge=new Map;async function dn(e,t,n){globalThis.__sveltekit_47n7bs?.data&&globalThis.__sveltekit_47n7bs.data,document.URL!==location.href&&(location.href=location.href),y=e,await e.hooks.init?.(),Ie=Ut(e),I=document.documentElement,ye=t,we=e.nodes[0],re=e.nodes[1],we(),re(),w=history.state?.[V],R=history.state?.[z],w||(w=R=Date.now(),history.replaceState({...history.state,[V]:w,[z]:R},""));const r=C[w];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await tn(ye,n)):(await B({type:"enter",url:Xe(y.hash?an(new URL(location.href)):location.href),replace_state:!0}),a()),en()}function Kt(){ae.length=0,Oe=!1}function it(e){oe.some(t=>t?.snapshot)&&(J[e]=oe.map(t=>t?.snapshot?.capture()))}function lt(e){J[e]?.forEach((t,n)=>{oe[n]?.snapshot?.restore(t)})}function We(){Te(w),qe(He,C),it(R),qe(ze,J)}async function Mt(e,t,n,r){let a;t.invalidateAll&&be(),await B({type:"goto",url:Xe(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Oe=!0,a=[...Ge.keys()]),t.invalidate&&t.invalidate.forEach(Zt)}}),t.invalidateAll&&te().then(te).then(()=>{Ge.forEach(({resource:i},o)=>{a?.includes(o)&&i.refresh?.()})})}async function Ft(e){if(e.id!==A?.id){be();const t={};ie.add(t),A={id:e.id,token:t,promise:ut({...e,preload:t}).then(n=>(ie.delete(t),n.type==="loaded"&&n.state.error&&be(),n)),fork:null}}return A.promise}async function me(e){const t=(await fe(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function ct(e,t,n){const r={params:m.params,route:{id:m.route?.id??null},url:new URL(location.href)};m={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(k,e.props.page),st=new y.root({target:t,props:{...e.props,stores:$,components:oe},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),lt(R),n){const i={from:null,to:{...r,scroll:C[w]??D()},willUnload:!1,type:"enter",complete:Promise.resolve()};Y.forEach(o=>o(i))}se=!0}async function le({url:e,params:t,branch:n,errors:r,status:a,error:i,route:o,form:s}){let l="never";if(x&&(e.pathname===x||e.pathname===x+"/"))l="always";else for(const u of n)u?.slash!==void 0&&(l=u.slash);e.pathname=_t(e.pathname,l),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:i,route:o},props:{constructors:Ct(n).map(u=>u.node.component),page:Ne(k)}};s!==void 0&&(c.props.form=s);let f={},p=!k,v=0;for(let u=0;us(new URL(o))))return!0;return!1}function $e(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function Yt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),i=t.searchParams.getAll(r);a.every(o=>i.includes(o))&&i.every(o=>a.includes(o))&&n.delete(r)}return n}function zt({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ne(k),constructors:[]}}}async function ut({id:e,invalidating:t,url:n,params:r,route:a,preload:i}){if(A?.id===e)return ie.delete(A.token),A.promise;const{errors:o,layouts:s,leaf:l}=a,c=[...s,l];o.forEach(g=>g?.().catch(()=>{})),c.forEach(g=>g?.[1]().catch(()=>{}));const f=m.url?e!==ce(m.url):!1,p=m.route?a.id!==m.route.id:!1,v=Yt(m.url,n);let h=!1;const u=c.map(async(g,d)=>{if(!g)return;const E=m.branch[d];return g[1]===E?.loader&&!Wt(h,p,f,v,E.universal?.uses,r)?E:(h=!0,Pe({loader:g[1],url:n,params:r,route:a,parent:async()=>{const O={};for(let P=0;P{});const _=[];for(let g=0;gPromise.resolve({}),server_data_node:$e(i)}),s={node:await re(),loader:re,universal:null,server:null,data:null};return le({url:n,params:a,branch:[o,s],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Re)return Mt(new URL(o.location,location.href),{},0);throw o}}async function Jt(e){const t=e.href;if(ee.has(t))return ee.get(t);let n;try{const r=(async()=>{let a=await y.hooks.reroute({url:new URL(e),fetch:async(i,o)=>Gt(i,o,e).promise})??e;if(typeof a=="string"){const i=new URL(e);y.hash?i.hash=a:i.pathname=a,a=i}return a})();ee.set(t,r),n=await r}catch{ee.delete(t);return}return n}async function fe(e,t){if(e&&!ue(e,x,y.hash)){const n=await Jt(e);if(!n)return;const r=Xt(n);for(const a of Ie){const i=a.exec(r);if(i)return{id:ce(e),invalidating:t,route:a,params:vt(i),url:e}}}}function Xt(e){return mt(y.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(x.length))||"/"}function ce(e){return(y.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function ft({url:e,type:t,intent:n,delta:r,event:a,scroll:i}){let o=!1;const s=je(m,n,e,t,i??null);r!==void 0&&(s.navigation.delta=r),a!==void 0&&(s.navigation.event=a);const l={...s.navigation,cancel:()=>{o=!0,s.reject(new Error("navigation cancelled"))}};return Q||rt.forEach(c=>c(l)),o?null:s}async function B({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:i,state:o={},redirect_count:s=0,nav_token:l={},accept:c=Me,block:f=Me,event:p}){const v=N;N=l;const h=await fe(t,!1),u=e==="enter"?je(m,h,t,e):ft({url:t,type:e,delta:n?.delta,intent:h,scroll:n?.scroll,event:p});if(!u){f(),N===l&&(N=v);return}const _=w,g=R;c(),Q=!0,se&&u.navigation.type!=="enter"&&$.navigating.set(H.current=u.navigation);let d=h&&await ut(h);if(!d){if(ue(t,x,y.hash))return await X(t,i);d=await dt(t,{id:null},await Z(new xe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=h?.url||t,N!==l)return u.reject(new Error("navigation aborted")),!1;if(d.type==="redirect"){if(s<20){await B({type:e,url:new URL(d.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:i,state:o,redirect_count:s+1,nav_token:l}),u.fulfil(void 0);return}d=await Ce({status:500,error:await Z(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else d.props.page.status>=400&&await $.updated.check()&&(await nt(),await X(t,i));if(Kt(),Te(_),it(g),d.props.page.url.pathname!==t.pathname&&(t.pathname=d.props.page.url.pathname),o=n?n.state:o,!n){const b=i?0:1,K={[V]:w+=b,[z]:R+=b,[Je]:o};(i?history.replaceState:history.pushState).call(history,K,"",t),i||Vt(w,R)}const E=h&&A?.id===h.id?A.fork:null;A=null,d.props.page.state=o;let S;if(se){const b=(await Promise.all(Array.from(Bt,M=>M(u.navigation)))).filter(M=>typeof M=="function");if(b.length>0){let M=function(){b.forEach(he=>{Y.delete(he)})};b.push(M),b.forEach(he=>{Y.add(he)})}const K=u.navigation.to;m={...d.state,nav:{params:K.params,route:K.route,url:K.url}},d.props.page&&(d.props.page.url=t);const de=E&&await E;de?S=de.commit():(F=null,st.$set(d.props),F&&Object.assign(d.props.page,F),Dt(d.props.page),S=gt?.()),ot=!0}else await ct(d,ye,!1);const{activeElement:O}=document;await S,await te(),await te();let P=null;if(Fe){const b=n?n.scroll:a?D():null;b?scrollTo(b.x,b.y):(P=t.hash&&document.getElementById(ht(t)))?P.scrollIntoView():scrollTo(0,0)}const pt=document.activeElement!==O&&document.activeElement!==document.body;!r&&!pt&&rn(t,!P),Fe=!0,d.props.page&&(F&&Object.assign(d.props.page,F),Object.assign(k,d.props.page)),Q=!1,e==="popstate"&<(R),u.fulfil(void 0),u.navigation.to&&(u.navigation.to.scroll=D()),Y.forEach(b=>b(u.navigation)),$.navigating.set(H.current=null)}async function dt(e,t,n,r,a){return e.origin===Le&&e.pathname===location.pathname&&!at?await Ce({status:r,error:n,url:e,route:t}):await X(e,a)}function Qt(){let e,t={element:void 0,href:void 0},n;I.addEventListener("mousemove",s=>{const l=s.target;clearTimeout(e),e=setTimeout(()=>{i(l,j.hover)},20)});function r(s){s.defaultPrevented||i(s.composedPath()[0],j.tap)}I.addEventListener("mousedown",r),I.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(s=>{for(const l of s)l.isIntersecting&&(me(new URL(l.target.href)),a.unobserve(l.target))},{threshold:0});async function i(s,l){const c=Ze(s,I),f=c===t.element&&c?.href===t.href&&l>=n;if(!c||f)return;const{url:p,external:v,download:h}=ve(c,x,y.hash);if(v||h)return;const u=ne(c),_=p&&ce(m.url)===ce(p);if(!(u.reload||_))if(l<=u.preload_data){t={element:c,href:c.href},n=j.tap;const g=await fe(p,!1);if(!g)return;Ft(g)}else l<=u.preload_code&&(t={element:c,href:c.href},n=l,me(p))}function o(){a.disconnect();for(const s of I.querySelectorAll("a")){const{url:l,external:c,download:f}=ve(s,x,y.hash);if(c||f)continue;const p=ne(s);p.reload||(p.preload_code===j.viewport&&a.observe(s),p.preload_code===j.eager&&me(l))}}Y.add(o),o()}function Z(e,t){if(e instanceof Se)return e.body;const n=Ue(e),r=jt(e);return y.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Zt(e){if(typeof e=="function")ae.push(e);else{const{href:t}=new URL(e,location.href);ae.push(n=>n.href===t)}}function en(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(We(),!Q){const r=je(m,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};rt.forEach(i=>i(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&We()}),navigator.connection?.saveData||Qt(),I.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=Ze(t.composedPath()[0],I);if(!n)return;const{url:r,external:a,target:i,download:o}=ve(n,x,y.hash);if(!r)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const s=ne(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[c,f]=(y.hash?r.hash.replace(/^#/,""):r.href).split("#"),p=c===pe(location);if(a||s.reload&&(!p||!f)){ft({url:r,type:"link",event:t})?Q=!0:t.preventDefault();return}if(f!==void 0&&p){const[,v]=m.url.href.split("#");if(v===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const h=n.ownerDocument.getElementById(decodeURIComponent(f));h&&(h.scrollIntoView(),h.focus())}return}if(G=!0,Te(w),e(r),!s.replace_state)return;G=!1}t.preventDefault(),await new Promise(v=>{requestAnimationFrame(()=>{setTimeout(v,0)}),setTimeout(v,100)}),await B({type:"link",url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),I.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const o=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(ue(o,x,!1))return;const s=t.target,l=ne(s);if(l.reload)return;t.preventDefault(),t.stopPropagation();const c=new FormData(s,r);o.search=new URLSearchParams(c).toString(),B({type:"form",url:o,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!ke){if(t.state?.[V]){const n=t.state[V];if(N={},n===w)return;const r=C[n],a=t.state[Je]??{},i=new URL(t.state[Ot]??location.href),o=t.state[z],s=m.url?pe(location)===pe(m.url):!1;if(o===R&&(ot||s)){a!==k.state&&(k.state=a),e(i),C[w]=D(),r&&scrollTo(r.x,r.y),w=n;return}const c=n-w;await B({type:"popstate",url:i,popped:{state:a,scroll:r,delta:c},accept:()=>{w=n,R=o},block:()=>{history.go(-c)},nav_token:N,event:t})}else if(!G){const n=new URL(location.href);e(n),y.hash&&location.reload()}}}),addEventListener("hashchange",()=>{G&&(G=!1,history.replaceState({...history.state,[V]:++w,[z]:R},"",location.href))});for(const t of document.querySelectorAll("link"))qt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&$.navigating.set(H.current=null)});function e(t){m.url=k.url=t,$.page.set(Ne(k)),$.page.notify()}}async function tn(e,{status:t=200,error:n,node_ids:r,params:a,route:i,server_route:o,data:s,form:l}){at=!0;const c=new URL(location.href);let f;({params:a={},route:i={id:null}}=await fe(c,!1)||{}),f=Ie.find(({id:h})=>h===i.id);let p,v=!0;try{const h=r.map(async(_,g)=>{const d=s[g];return d?.uses&&(d.uses=nn(d.uses)),Pe({loader:y.nodes[_],url:c,params:a,route:i,parent:async()=>{const E={};for(let S=0;S{const s=history.state;ke=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(s,"",e),t&&scrollTo(i,o),ke=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const i=[];for(let o=0;o{if(a.rangeCount===i.length){for(let o=0;o{i=c,o=f});return s.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:D()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:s},fulfil:i,reject:o}}function Ne(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function an(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function ht(e){let t;if(y.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{dn as a,ln as l,k as p,$ as s}; diff --git a/.svelte-kit/output/client/_app/immutable/chunks/D_t83wNY.js b/.svelte-kit/output/client/_app/immutable/chunks/wDE00Dcu.js similarity index 100% rename from .svelte-kit/output/client/_app/immutable/chunks/D_t83wNY.js rename to .svelte-kit/output/client/_app/immutable/chunks/wDE00Dcu.js diff --git a/.svelte-kit/output/client/_app/immutable/entry/app.DEN-rOoD.js b/.svelte-kit/output/client/_app/immutable/entry/app.cP24vFe-.js similarity index 88% rename from .svelte-kit/output/client/_app/immutable/entry/app.DEN-rOoD.js rename to .svelte-kit/output/client/_app/immutable/entry/app.cP24vFe-.js index d611f96..abbb74b 100644 --- a/.svelte-kit/output/client/_app/immutable/entry/app.DEN-rOoD.js +++ b/.svelte-kit/output/client/_app/immutable/entry/app.cP24vFe-.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.Cq8Xsn4J.js","../chunks/DGbOEUpF.js","../chunks/CkzjbUDB.js","../chunks/DmyE0d-6.js","../chunks/CFYBLbZM.js","../chunks/B46dcLgj.js","../assets/0.DIlgUleF.css","../nodes/1.BWlKxnfY.js","../chunks/BsDbD4Ku.js","../chunks/hJNu5X86.js","../chunks/DxGD2b0U.js","../nodes/2.WwcVxUyo.js","../chunks/XE2G8ySY.js","../chunks/D_t83wNY.js","../assets/FrogHeader.8kzFzgPu.css","../chunks/Dr80VTgO.js","../assets/2.CHt1yucP.css","../nodes/3.BJIJ5Us_.js","../assets/3.CjGf6tQE.css"])))=>i.map(i=>d[i]); -import{j as I,F as U,l as z,E as H,G as W,I as X,t as Z,q as D,aF as J,k as K,B as O,X as Q,A as f,aN as $,x as ee,z as te,a1 as re,Y as se,Z as ae,aO as ne,a2 as k,a7 as oe,a4 as ce,ab as x,a5 as ie,a6 as le,a3 as ue,ac as A}from"../chunks/CkzjbUDB.js";import{h as de,m as fe,u as me,s as he}from"../chunks/BsDbD4Ku.js";import{a as P,c as S,f as F,t as _e}from"../chunks/DGbOEUpF.js";import{o as ve}from"../chunks/DxGD2b0U.js";import{p as T,i as j}from"../chunks/XE2G8ySY.js";import{B as ge}from"../chunks/CFYBLbZM.js";import{b as L}from"../chunks/Dr80VTgO.js";function C(o,e,s){var l;I&&(l=K,U());var c=new ge(o);z(()=>{var t=e()??null;if(I){var r=W(l),a=r===J,E=t!==null;if(a!==E){var m=X();Z(m),c.anchor=m,D(!1),c.ensure(t,t&&(n=>s(n,t))),D(!0);return}}c.ensure(t,t&&(n=>s(n,t)))},H)}function ye(o){return class extends Ee{constructor(e){super({component:o,...e})}}}class Ee{#t;#e;constructor(e){var s=new Map,l=(t,r)=>{var a=te(r,!1,!1);return s.set(t,a),a};const c=new Proxy({...e.props||{},$$events:{}},{get(t,r){return f(s.get(r)??l(r,Reflect.get(t,r)))},has(t,r){return r===Q?!0:(f(s.get(r)??l(r,Reflect.get(t,r))),Reflect.has(t,r))},set(t,r,a){return O(s.get(r)??l(r,a),a),Reflect.set(t,r,a)}});this.#e=(e.hydrate?de:fe)(e.component,{target:e.target,anchor:e.anchor,props:c,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),(!e?.props?.$$host||e.sync===!1)&&$(),this.#t=c.$$events;for(const t of Object.keys(this.#e))t==="$set"||t==="$destroy"||t==="$on"||ee(this,t,{get(){return this.#e[t]},set(r){this.#e[t]=r},enumerable:!0});this.#e.$set=t=>{Object.assign(c,t)},this.#e.$destroy=()=>{me(this.#e)}}$set(e){this.#e.$set(e)}$on(e,s){this.#t[e]=this.#t[e]||[];const l=(...c)=>s.call(this,...c);return this.#t[e].push(l),()=>{this.#t[e]=this.#t[e].filter(c=>c!==l)}}$destroy(){this.#e.$destroy()}}const be="modulepreload",Pe=function(o,e){return new URL(o,e).href},B={},w=function(e,s,l){let c=Promise.resolve();if(s&&s.length>0){let m=function(n){return Promise.all(n.map(d=>Promise.resolve(d).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const r=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),E=a?.nonce||a?.getAttribute("nonce");c=m(s.map(n=>{if(n=Pe(n,l),n in B)return;B[n]=!0;const d=n.endsWith(".css"),h=d?'[rel="stylesheet"]':"";if(l)for(let _=r.length-1;_>=0;_--){const i=r[_];if(i.href===n&&(!d||i.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${n}"]${h}`))return;const u=document.createElement("link");if(u.rel=d?"stylesheet":be,d||(u.as="script"),u.crossOrigin="",u.href=n,E&&u.setAttribute("nonce",E),document.head.appendChild(u),d)return new Promise((_,i)=>{u.addEventListener("load",_),u.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${n}`)))})}))}function t(r){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=r,window.dispatchEvent(a),!a.defaultPrevented)throw r}return c.then(r=>{for(const a of r||[])a.status==="rejected"&&t(a.reason);return e().catch(t)})},Ne={};var Re=F('
'),pe=F(" ",1);function ke(o,e){re(e,!0);let s=T(e,"components",23,()=>[]),l=T(e,"data_0",3,null),c=T(e,"data_1",3,null);se(()=>e.stores.page.set(e.page)),ae(()=>{e.stores,e.page,e.constructors,s(),e.form,l(),c(),e.stores.page.notify()});let t=x(!1),r=x(!1),a=x(null);ve(()=>{const i=e.stores.page.subscribe(()=>{f(t)&&(O(r,!0),ne().then(()=>{O(a,document.title||"untitled page",!0)}))});return O(t,!0),i});const E=A(()=>e.constructors[1]);var m=pe(),n=k(m);{var d=i=>{const v=A(()=>e.constructors[0]);var g=S(),R=k(g);C(R,()=>f(v),(y,b)=>{L(b(y,{get data(){return l()},get form(){return e.form},get params(){return e.page.params},children:(p,Oe)=>{var N=S(),V=k(N);C(V,()=>f(E),(q,Y)=>{L(Y(q,{get data(){return c()},get form(){return e.form},get params(){return e.page.params}}),G=>s()[1]=G,()=>s()?.[1])}),P(p,N)},$$slots:{default:!0}}),p=>s()[0]=p,()=>s()?.[0])}),P(i,g)},h=i=>{const v=A(()=>e.constructors[0]);var g=S(),R=k(g);C(R,()=>f(v),(y,b)=>{L(b(y,{get data(){return l()},get form(){return e.form},get params(){return e.page.params}}),p=>s()[0]=p,()=>s()?.[0])}),P(i,g)};j(n,i=>{e.constructors[1]?i(d):i(h,-1)})}var u=oe(n,2);{var _=i=>{var v=Re(),g=ie(v);{var R=y=>{var b=_e();ue(()=>he(b,f(a))),P(y,b)};j(g,y=>{f(r)&&y(R)})}le(v),P(i,v)};j(u,i=>{f(t)&&i(_)})}P(o,m),ce()}const Ie=ye(ke),De=[()=>w(()=>import("../nodes/0.Cq8Xsn4J.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url),()=>w(()=>import("../nodes/1.BWlKxnfY.js"),__vite__mapDeps([7,1,2,5,8,9,10]),import.meta.url),()=>w(()=>import("../nodes/2.WwcVxUyo.js"),__vite__mapDeps([11,1,2,10,8,12,4,3,13,14,15,16]),import.meta.url),()=>w(()=>import("../nodes/3.BJIJ5Us_.js"),__vite__mapDeps([17,1,2,10,8,12,4,3,13,14,9,18]),import.meta.url)],Be=[],Fe={"/":[2],"/profile/[handle]":[3]},M={handleError:(({error:o})=>{console.error(o)}),reroute:(()=>{}),transport:{}},we=Object.fromEntries(Object.entries(M.transport).map(([o,e])=>[o,e.decode])),Me=Object.fromEntries(Object.entries(M.transport).map(([o,e])=>[o,e.encode])),Ve=!1,qe=(o,e)=>we[o](e);export{qe as decode,we as decoders,Fe as dictionary,Me as encoders,Ve as hash,M as hooks,Ne as matchers,De as nodes,Ie as root,Be as server_loads}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DC-lVOJg.js","../chunks/DGbOEUpF.js","../chunks/CkzjbUDB.js","../chunks/DmyE0d-6.js","../chunks/CFYBLbZM.js","../chunks/B46dcLgj.js","../assets/0.DKk5J4IK.css","../nodes/1.EHJvAiHu.js","../chunks/BsDbD4Ku.js","../chunks/p8sLpASk.js","../chunks/DxGD2b0U.js","../nodes/2.BDBqQDgu.js","../chunks/XE2G8ySY.js","../chunks/wDE00Dcu.js","../assets/FrogHeader.nOQL7IYP.css","../chunks/Dr80VTgO.js","../assets/2.B1K8QaGJ.css","../nodes/3.Ck5bt7k8.js","../assets/3.JMkiik8G.css"])))=>i.map(i=>d[i]); +import{j as I,F as U,l as z,E as H,G as W,I as X,t as Z,q as D,aF as J,k as K,B as O,X as Q,A as f,aN as $,x as ee,z as te,a1 as re,Y as se,Z as ae,aO as ne,a2 as k,a7 as oe,a4 as ce,ab as x,a5 as ie,a6 as le,a3 as ue,ac as A}from"../chunks/CkzjbUDB.js";import{h as de,m as fe,u as me,s as he}from"../chunks/BsDbD4Ku.js";import{a as P,c as S,f as F,t as _e}from"../chunks/DGbOEUpF.js";import{o as ve}from"../chunks/DxGD2b0U.js";import{p as T,i as j}from"../chunks/XE2G8ySY.js";import{B as ge}from"../chunks/CFYBLbZM.js";import{b as L}from"../chunks/Dr80VTgO.js";function C(o,e,s){var l;I&&(l=K,U());var c=new ge(o);z(()=>{var t=e()??null;if(I){var r=W(l),a=r===J,E=t!==null;if(a!==E){var m=X();Z(m),c.anchor=m,D(!1),c.ensure(t,t&&(n=>s(n,t))),D(!0);return}}c.ensure(t,t&&(n=>s(n,t)))},H)}function ye(o){return class extends Ee{constructor(e){super({component:o,...e})}}}class Ee{#t;#e;constructor(e){var s=new Map,l=(t,r)=>{var a=te(r,!1,!1);return s.set(t,a),a};const c=new Proxy({...e.props||{},$$events:{}},{get(t,r){return f(s.get(r)??l(r,Reflect.get(t,r)))},has(t,r){return r===Q?!0:(f(s.get(r)??l(r,Reflect.get(t,r))),Reflect.has(t,r))},set(t,r,a){return O(s.get(r)??l(r,a),a),Reflect.set(t,r,a)}});this.#e=(e.hydrate?de:fe)(e.component,{target:e.target,anchor:e.anchor,props:c,context:e.context,intro:e.intro??!1,recover:e.recover,transformError:e.transformError}),(!e?.props?.$$host||e.sync===!1)&&$(),this.#t=c.$$events;for(const t of Object.keys(this.#e))t==="$set"||t==="$destroy"||t==="$on"||ee(this,t,{get(){return this.#e[t]},set(r){this.#e[t]=r},enumerable:!0});this.#e.$set=t=>{Object.assign(c,t)},this.#e.$destroy=()=>{me(this.#e)}}$set(e){this.#e.$set(e)}$on(e,s){this.#t[e]=this.#t[e]||[];const l=(...c)=>s.call(this,...c);return this.#t[e].push(l),()=>{this.#t[e]=this.#t[e].filter(c=>c!==l)}}$destroy(){this.#e.$destroy()}}const be="modulepreload",Pe=function(o,e){return new URL(o,e).href},B={},w=function(e,s,l){let c=Promise.resolve();if(s&&s.length>0){let m=function(n){return Promise.all(n.map(d=>Promise.resolve(d).then(h=>({status:"fulfilled",value:h}),h=>({status:"rejected",reason:h}))))};const r=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),E=a?.nonce||a?.getAttribute("nonce");c=m(s.map(n=>{if(n=Pe(n,l),n in B)return;B[n]=!0;const d=n.endsWith(".css"),h=d?'[rel="stylesheet"]':"";if(l)for(let _=r.length-1;_>=0;_--){const i=r[_];if(i.href===n&&(!d||i.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${n}"]${h}`))return;const u=document.createElement("link");if(u.rel=d?"stylesheet":be,d||(u.as="script"),u.crossOrigin="",u.href=n,E&&u.setAttribute("nonce",E),document.head.appendChild(u),d)return new Promise((_,i)=>{u.addEventListener("load",_),u.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${n}`)))})}))}function t(r){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=r,window.dispatchEvent(a),!a.defaultPrevented)throw r}return c.then(r=>{for(const a of r||[])a.status==="rejected"&&t(a.reason);return e().catch(t)})},Ne={};var Re=F('
'),pe=F(" ",1);function ke(o,e){re(e,!0);let s=T(e,"components",23,()=>[]),l=T(e,"data_0",3,null),c=T(e,"data_1",3,null);se(()=>e.stores.page.set(e.page)),ae(()=>{e.stores,e.page,e.constructors,s(),e.form,l(),c(),e.stores.page.notify()});let t=x(!1),r=x(!1),a=x(null);ve(()=>{const i=e.stores.page.subscribe(()=>{f(t)&&(O(r,!0),ne().then(()=>{O(a,document.title||"untitled page",!0)}))});return O(t,!0),i});const E=A(()=>e.constructors[1]);var m=pe(),n=k(m);{var d=i=>{const v=A(()=>e.constructors[0]);var g=S(),R=k(g);C(R,()=>f(v),(y,b)=>{L(b(y,{get data(){return l()},get form(){return e.form},get params(){return e.page.params},children:(p,Oe)=>{var N=S(),V=k(N);C(V,()=>f(E),(q,Y)=>{L(Y(q,{get data(){return c()},get form(){return e.form},get params(){return e.page.params}}),G=>s()[1]=G,()=>s()?.[1])}),P(p,N)},$$slots:{default:!0}}),p=>s()[0]=p,()=>s()?.[0])}),P(i,g)},h=i=>{const v=A(()=>e.constructors[0]);var g=S(),R=k(g);C(R,()=>f(v),(y,b)=>{L(b(y,{get data(){return l()},get form(){return e.form},get params(){return e.page.params}}),p=>s()[0]=p,()=>s()?.[0])}),P(i,g)};j(n,i=>{e.constructors[1]?i(d):i(h,-1)})}var u=oe(n,2);{var _=i=>{var v=Re(),g=ie(v);{var R=y=>{var b=_e();ue(()=>he(b,f(a))),P(y,b)};j(g,y=>{f(r)&&y(R)})}le(v),P(i,v)};j(u,i=>{f(t)&&i(_)})}P(o,m),ce()}const Ie=ye(ke),De=[()=>w(()=>import("../nodes/0.DC-lVOJg.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url),()=>w(()=>import("../nodes/1.EHJvAiHu.js"),__vite__mapDeps([7,1,2,5,8,9,10]),import.meta.url),()=>w(()=>import("../nodes/2.BDBqQDgu.js"),__vite__mapDeps([11,1,2,10,8,12,4,3,13,14,15,16]),import.meta.url),()=>w(()=>import("../nodes/3.Ck5bt7k8.js"),__vite__mapDeps([17,1,2,10,8,12,4,3,13,14,9,18]),import.meta.url)],Be=[],Fe={"/":[2],"/profile/[handle]":[3]},M={handleError:(({error:o})=>{console.error(o)}),reroute:(()=>{}),transport:{}},we=Object.fromEntries(Object.entries(M.transport).map(([o,e])=>[o,e.decode])),Me=Object.fromEntries(Object.entries(M.transport).map(([o,e])=>[o,e.encode])),Ve=!1,qe=(o,e)=>we[o](e);export{qe as decode,we as decoders,Fe as dictionary,Me as encoders,Ve as hash,M as hooks,Ne as matchers,De as nodes,Ie as root,Be as server_loads}; diff --git a/.svelte-kit/output/client/_app/immutable/entry/start.BCJ632dx.js b/.svelte-kit/output/client/_app/immutable/entry/start.BCJ632dx.js new file mode 100644 index 0000000..1cae2c9 --- /dev/null +++ b/.svelte-kit/output/client/_app/immutable/entry/start.BCJ632dx.js @@ -0,0 +1 @@ +import{l as o,a as r}from"../chunks/p8sLpASk.js";export{o as load_css,r as start}; diff --git a/.svelte-kit/output/client/_app/immutable/entry/start.DMfPKBk7.js b/.svelte-kit/output/client/_app/immutable/entry/start.DMfPKBk7.js deleted file mode 100644 index 03c23b5..0000000 --- a/.svelte-kit/output/client/_app/immutable/entry/start.DMfPKBk7.js +++ /dev/null @@ -1 +0,0 @@ -import{l as o,a as r}from"../chunks/hJNu5X86.js";export{o as load_css,r as start}; diff --git a/.svelte-kit/output/client/_app/immutable/nodes/0.Cq8Xsn4J.js b/.svelte-kit/output/client/_app/immutable/nodes/0.DC-lVOJg.js similarity index 59% rename from .svelte-kit/output/client/_app/immutable/nodes/0.Cq8Xsn4J.js rename to .svelte-kit/output/client/_app/immutable/nodes/0.DC-lVOJg.js index 0dde594..ad005f5 100644 --- a/.svelte-kit/output/client/_app/immutable/nodes/0.Cq8Xsn4J.js +++ b/.svelte-kit/output/client/_app/immutable/nodes/0.DC-lVOJg.js @@ -1,7 +1,28 @@ -import{a as s,f as r}from"../chunks/DGbOEUpF.js";import{a2 as f,aa as d,a7 as p}from"../chunks/CkzjbUDB.js";import{h as g,s as h}from"../chunks/DmyE0d-6.js";import"../chunks/B46dcLgj.js";const v=!0,m=!1,A=Object.freeze(Object.defineProperty({__proto__:null,prerender:v,ssr:m},Symbol.toStringTag,{value:"Module"}));var y=r('
');function u(t){var o=y();s(t,o)}var F=r('
');function w(t){var o=F();s(t,o)}var _=r(` `,1),b=r(" ",1);function O(t,o){var e=b();g("12qhfyh",c=>{var n=_();d(8),s(c,n)});var a=f(e);u(a);var i=p(a,2);w(i);var l=p(i,2);h(l,()=>o.children),s(t,e)}export{O as component,A as universal}; + }`,1),b=s(" ",1);function A(t,o){var a=b();g("12qhfyh",n=>{var f=_();d(2),r(n,f)});var e=c(a);h(e);var i=l(e,2);w(i);var p=l(i,2);y(p,()=>o.children),r(t,a)}export{A as component,P as universal}; diff --git a/.svelte-kit/output/client/_app/immutable/nodes/1.BWlKxnfY.js b/.svelte-kit/output/client/_app/immutable/nodes/1.EHJvAiHu.js similarity index 93% rename from .svelte-kit/output/client/_app/immutable/nodes/1.BWlKxnfY.js rename to .svelte-kit/output/client/_app/immutable/nodes/1.EHJvAiHu.js index 566712a..1a37eb6 100644 --- a/.svelte-kit/output/client/_app/immutable/nodes/1.BWlKxnfY.js +++ b/.svelte-kit/output/client/_app/immutable/nodes/1.EHJvAiHu.js @@ -1 +1 @@ -import{a as b,f as k}from"../chunks/DGbOEUpF.js";import"../chunks/B46dcLgj.js";import{c as x,Y as $,Z as i,u as y,_ as l,$ as A,A as v,a0 as E,U,a1 as Y,a2 as Z,a3 as j,a4 as q,a5 as u,a6 as m,a7 as w}from"../chunks/CkzjbUDB.js";import{s as _}from"../chunks/BsDbD4Ku.js";import{s as z,p as g}from"../chunks/hJNu5X86.js";function B(r=!1){const e=x,t=e.l.u;if(!t)return;let a=()=>E(e.s);if(r){let o=0,s={};const f=U(()=>{let p=!1;const c=e.s;for(const n in c)c[n]!==s[n]&&(s[n]=c[n],p=!0);return p&&o++,o});a=()=>v(f)}t.b.length&&$(()=>{h(e,a),l(t.b)}),i(()=>{const o=y(()=>t.m.map(A));return()=>{for(const s of o)typeof s=="function"&&s()}}),t.a.length&&i(()=>{h(e,a),l(t.a)})}function h(r,e){if(r.l.s)for(const t of r.l.s)v(t);e()}const C={get error(){return g.error},get status(){return g.status}};z.updated.check;const d=C;var D=k("

",1);function K(r,e){Y(e,!1),B();var t=D(),a=Z(t),o=u(a,!0);m(a);var s=w(a,2),f=u(s,!0);m(s),j(()=>{_(o,d.status),_(f,d.error?.message)}),b(r,t),q()}export{K as component}; +import{a as b,f as k}from"../chunks/DGbOEUpF.js";import"../chunks/B46dcLgj.js";import{c as x,Y as $,Z as i,u as y,_ as l,$ as A,A as v,a0 as E,U,a1 as Y,a2 as Z,a3 as j,a4 as q,a5 as u,a6 as m,a7 as w}from"../chunks/CkzjbUDB.js";import{s as _}from"../chunks/BsDbD4Ku.js";import{s as z,p as g}from"../chunks/p8sLpASk.js";function B(r=!1){const e=x,t=e.l.u;if(!t)return;let a=()=>E(e.s);if(r){let o=0,s={};const f=U(()=>{let p=!1;const c=e.s;for(const n in c)c[n]!==s[n]&&(s[n]=c[n],p=!0);return p&&o++,o});a=()=>v(f)}t.b.length&&$(()=>{h(e,a),l(t.b)}),i(()=>{const o=y(()=>t.m.map(A));return()=>{for(const s of o)typeof s=="function"&&s()}}),t.a.length&&i(()=>{h(e,a),l(t.a)})}function h(r,e){if(r.l.s)for(const t of r.l.s)v(t);e()}const C={get error(){return g.error},get status(){return g.status}};z.updated.check;const d=C;var D=k("

",1);function K(r,e){Y(e,!1),B();var t=D(),a=Z(t),o=u(a,!0);m(a);var s=w(a,2),f=u(s,!0);m(s),j(()=>{_(o,d.status),_(f,d.error?.message)}),b(r,t),q()}export{K as component}; diff --git a/.svelte-kit/output/client/_app/immutable/nodes/2.WwcVxUyo.js b/.svelte-kit/output/client/_app/immutable/nodes/2.BDBqQDgu.js similarity index 90% rename from .svelte-kit/output/client/_app/immutable/nodes/2.WwcVxUyo.js rename to .svelte-kit/output/client/_app/immutable/nodes/2.BDBqQDgu.js index 9a54ade..1fa0a32 100644 --- a/.svelte-kit/output/client/_app/immutable/nodes/2.WwcVxUyo.js +++ b/.svelte-kit/output/client/_app/immutable/nodes/2.BDBqQDgu.js @@ -1,40 +1,40 @@ -import{a as ke,f as Oe}from"../chunks/DGbOEUpF.js";import{o as zn,a as Mo}from"../chunks/DxGD2b0U.js";import{g as Js,l as No,j as vt,t as ei,v as Bo,F as Uo,A as M,G as $o,aq as Go,I as br,q as ti,k as hs,C as Ko,aL as Vo,az as _r,i as Ho,aP as gt,h as _i,aQ as Yo,s as Wo,V as qo,aR as jo,aK as Qi,aS as Xo,aT as zo,z as Qo,am as Dr,aU as Zo,N as Jo,d as Qn,p as Zn,aV as si,aW as el,aI as tl,m as sl,f as il,o as rl,a1 as Zi,Z as ii,B as q,a5 as de,a7 as ve,a6 as ue,a3 as Ge,a4 as Ji,ab as ie,L as Di,a2 as Jn,aa as nl,ac as ea,a as al,aX as ol,a9 as ll,aY as Cr}from"../chunks/CkzjbUDB.js";import{d as er,a as ft,e as xt,s as Xe}from"../chunks/BsDbD4Ku.js";import{i as mt}from"../chunks/XE2G8ySY.js";import{h as cl}from"../chunks/DmyE0d-6.js";import{t as hl,W as Fs,s as dt,a as Rs,b as ul,r as Ci,c as dl,f as ta,d as sa,e as ia,F as fl,l as gl}from"../chunks/D_t83wNY.js";import{b as Ms}from"../chunks/Dr80VTgO.js";function ml(a,e,t){for(var s=[],i=e.length,r,n=e.length,o=0;o{if(r){if(r.pending.delete(u),r.done.add(u),r.pending.size===0){var d=a.outrogroups;Pi(a,Qi(r.done)),d.delete(r),d.size===0&&(a.outrogroups=null)}}else n-=1},!1)}if(n===0){var c=s.length===0&&t!==null;if(c){var l=t,h=l.parentNode;tl(h),h.append(l),a.items.clear()}Pi(a,e,!c)}else r={pending:new Set(e),done:new Set},(a.outrogroups??=new Set).add(r)}function Pi(a,e,t=!0){var s;if(a.pending.size>0){s=new Set;for(const n of a.pending.values())for(const o of n)s.add(a.items.get(o).e)}for(var i=0;i{var v=t();return jo(v)?v:v==null?[]:Qi(v)}),u,d=new Map,g=!0;function f(v){(E.effect.f&Jo)===0&&(E.pending.delete(v),E.fallback=l,yl(E,u,n,e,s),l!==null&&(u.length===0?(l.f>)===0?Qn(l):(l.f^=gt,zt(l,null,n)):Zn(l,()=>{l=null})))}function p(v){E.pending.delete(v)}var y=No(()=>{u=M(h);var v=u.length;let T=!1;if(vt){var S=$o(n)===Go;S!==(v===0)&&(n=br(),ei(n),ti(!1),T=!0)}for(var x=new Set,D=Ho,A=Wo(),L=0;Lr(n)):(l=_i(()=>r(Pr??=Js())),l.f|=gt)),v>x.size&&Yo(),vt&&v>0&&ei(br()),!g)if(d.set(D,x),A){for(const[$,G]of o)x.has($)||D.skip_effect(G.e);D.oncommit(f),D.ondiscard(p)}else f(D);T&&ti(!0),M(h)}),E={effect:y,items:o,pending:d,outrogroups:null,fallback:l};g=!1,vt&&(n=hs)}function jt(a){for(;a!==null&&(a.f&el)===0;)a=a.next;return a}function yl(a,e,t,s,i){var r=e.length,n=a.items,o=jt(a.effect.first),c,l=null,h=[],u=[],d,g,f,p;for(p=0;p0){var A=r===0?t:null;ml(a,x,A)}}}function El(a,e,t,s,i,r,n,o){var c=(n&Xo)!==0?(n&zo)===0?Qo(t,!1,!1):Dr(t):null,l=(n&Zo)!==0?Dr(i):null;return{v:c,i:l,e:_i(()=>(r(e,c??t,l??i,o),()=>{a.delete(s)}))}}function zt(a,e,t){if(a.nodes)for(var s=a.nodes.start,i=a.nodes.end,r=e&&(e.f>)===0?e.nodes.start:t;s!==null;){var n=rl(s);if(r.before(s),s===i)return;s=n}}function pt(a,e,t){e===null?a.effect.first=t:e.next=t,t===null?a.effect.last=e:t.prev=e}function Zt(a,e,t,s,i,r){var n=a.__className;if(vt||n!==t||n===void 0){var o=hl(t,s,r);(!vt||o!==a.getAttribute("class"))&&(o==null?a.removeAttribute("class"):a.className=o),a.__className=t}else if(r&&i!==r)for(var c in r){var l=!!r[c];(i==null||l!==!!i[c])&&a.classList.toggle(c,l)}return r}const K=Number.isFinite||function(a){return typeof a=="number"&&isFinite(a)},vl=Number.isSafeInteger||function(a){return typeof a=="number"&&Math.abs(a)<=Tl},Tl=Number.MAX_SAFE_INTEGER||9007199254740991;let W=(function(a){return a.NETWORK_ERROR="networkError",a.MEDIA_ERROR="mediaError",a.KEY_SYSTEM_ERROR="keySystemError",a.MUX_ERROR="muxError",a.OTHER_ERROR="otherError",a})({}),_=(function(a){return a.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",a.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",a.KEY_SYSTEM_NO_SESSION="keySystemNoSession",a.KEY_SYSTEM_NO_CONFIGURED_LICENSE="keySystemNoConfiguredLicense",a.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",a.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED="keySystemServerCertificateRequestFailed",a.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED="keySystemServerCertificateUpdateFailed",a.KEY_SYSTEM_SESSION_UPDATE_FAILED="keySystemSessionUpdateFailed",a.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED="keySystemStatusOutputRestricted",a.KEY_SYSTEM_STATUS_INTERNAL_ERROR="keySystemStatusInternalError",a.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR="keySystemDestroyMediaKeysError",a.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR="keySystemDestroyCloseSessionError",a.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR="keySystemDestroyRemoveSessionError",a.MANIFEST_LOAD_ERROR="manifestLoadError",a.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",a.MANIFEST_PARSING_ERROR="manifestParsingError",a.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",a.LEVEL_EMPTY_ERROR="levelEmptyError",a.LEVEL_LOAD_ERROR="levelLoadError",a.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",a.LEVEL_PARSING_ERROR="levelParsingError",a.LEVEL_SWITCH_ERROR="levelSwitchError",a.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",a.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",a.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",a.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",a.FRAG_LOAD_ERROR="fragLoadError",a.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",a.FRAG_DECRYPT_ERROR="fragDecryptError",a.FRAG_PARSING_ERROR="fragParsingError",a.FRAG_GAP="fragGap",a.REMUX_ALLOC_ERROR="remuxAllocError",a.KEY_LOAD_ERROR="keyLoadError",a.KEY_LOAD_TIMEOUT="keyLoadTimeOut",a.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",a.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",a.BUFFER_APPEND_ERROR="bufferAppendError",a.BUFFER_APPENDING_ERROR="bufferAppendingError",a.BUFFER_STALLED_ERROR="bufferStalledError",a.BUFFER_FULL_ERROR="bufferFullError",a.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",a.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",a.ASSET_LIST_LOAD_ERROR="assetListLoadError",a.ASSET_LIST_LOAD_TIMEOUT="assetListLoadTimeout",a.ASSET_LIST_PARSING_ERROR="assetListParsingError",a.INTERSTITIAL_ASSET_ITEM_ERROR="interstitialAssetItemError",a.INTERNAL_EXCEPTION="internalException",a.INTERNAL_ABORTED="aborted",a.ATTACH_MEDIA_ERROR="attachMediaError",a.UNKNOWN="unknown",a})({}),m=(function(a){return a.MEDIA_ATTACHING="hlsMediaAttaching",a.MEDIA_ATTACHED="hlsMediaAttached",a.MEDIA_DETACHING="hlsMediaDetaching",a.MEDIA_DETACHED="hlsMediaDetached",a.MEDIA_ENDED="hlsMediaEnded",a.STALL_RESOLVED="hlsStallResolved",a.BUFFER_RESET="hlsBufferReset",a.BUFFER_CODECS="hlsBufferCodecs",a.BUFFER_CREATED="hlsBufferCreated",a.BUFFER_APPENDING="hlsBufferAppending",a.BUFFER_APPENDED="hlsBufferAppended",a.BUFFER_EOS="hlsBufferEos",a.BUFFERED_TO_END="hlsBufferedToEnd",a.BUFFER_FLUSHING="hlsBufferFlushing",a.BUFFER_FLUSHED="hlsBufferFlushed",a.MANIFEST_LOADING="hlsManifestLoading",a.MANIFEST_LOADED="hlsManifestLoaded",a.MANIFEST_PARSED="hlsManifestParsed",a.LEVEL_SWITCHING="hlsLevelSwitching",a.LEVEL_SWITCHED="hlsLevelSwitched",a.LEVEL_LOADING="hlsLevelLoading",a.LEVEL_LOADED="hlsLevelLoaded",a.LEVEL_UPDATED="hlsLevelUpdated",a.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",a.LEVELS_UPDATED="hlsLevelsUpdated",a.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",a.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",a.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",a.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",a.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",a.AUDIO_TRACK_UPDATED="hlsAudioTrackUpdated",a.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",a.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",a.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",a.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",a.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",a.SUBTITLE_TRACK_UPDATED="hlsSubtitleTrackUpdated",a.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",a.CUES_PARSED="hlsCuesParsed",a.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",a.INIT_PTS_FOUND="hlsInitPtsFound",a.FRAG_LOADING="hlsFragLoading",a.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",a.FRAG_LOADED="hlsFragLoaded",a.FRAG_DECRYPTED="hlsFragDecrypted",a.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",a.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",a.FRAG_PARSING_METADATA="hlsFragParsingMetadata",a.FRAG_PARSED="hlsFragParsed",a.FRAG_BUFFERED="hlsFragBuffered",a.FRAG_CHANGED="hlsFragChanged",a.FPS_DROP="hlsFpsDrop",a.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",a.MAX_AUTO_LEVEL_UPDATED="hlsMaxAutoLevelUpdated",a.ERROR="hlsError",a.DESTROYING="hlsDestroying",a.KEY_LOADING="hlsKeyLoading",a.KEY_LOADED="hlsKeyLoaded",a.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",a.BACK_BUFFER_REACHED="hlsBackBufferReached",a.STEERING_MANIFEST_LOADED="hlsSteeringManifestLoaded",a.ASSET_LIST_LOADING="hlsAssetListLoading",a.ASSET_LIST_LOADED="hlsAssetListLoaded",a.INTERSTITIALS_UPDATED="hlsInterstitialsUpdated",a.INTERSTITIALS_BUFFERED_TO_BOUNDARY="hlsInterstitialsBufferedToBoundary",a.INTERSTITIAL_ASSET_PLAYER_CREATED="hlsInterstitialAssetPlayerCreated",a.INTERSTITIAL_STARTED="hlsInterstitialStarted",a.INTERSTITIAL_ASSET_STARTED="hlsInterstitialAssetStarted",a.INTERSTITIAL_ASSET_ENDED="hlsInterstitialAssetEnded",a.INTERSTITIAL_ASSET_ERROR="hlsInterstitialAssetError",a.INTERSTITIAL_ENDED="hlsInterstitialEnded",a.INTERSTITIALS_PRIMARY_RESUMED="hlsInterstitialsPrimaryResumed",a.PLAYOUT_LIMIT_REACHED="hlsPlayoutLimitReached",a.EVENT_CUE_ENTER="hlsEventCueEnter",a})({});var te={MANIFEST:"manifest",LEVEL:"level",AUDIO_TRACK:"audioTrack",SUBTITLE_TRACK:"subtitleTrack"},Y={MAIN:"main",AUDIO:"audio",SUBTITLE:"subtitle"};class Ot{constructor(e,t=0,s=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=s}sample(e,t){const s=Math.pow(this.alpha_,e);this.estimate_=t*(1-s)+s*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class Sl{constructor(e,t,s,i=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=s,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new Ot(e),this.fast_=new Ot(t),this.defaultTTFB_=i,this.ttfb_=new Ot(e)}update(e,t){const{slow_:s,fast_:i,ttfb_:r}=this;s.halfLife!==e&&(this.slow_=new Ot(e,s.getEstimate(),s.getTotalWeight())),i.halfLife!==t&&(this.fast_=new Ot(t,i.getEstimate(),i.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new Ot(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){e=Math.max(e,this.minDelayMs_);const s=8*t,i=e/1e3,r=s/i;this.fast_.sample(i,r),this.slow_.sample(i,r)}sampleTTFB(e){const t=e/1e3,s=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(s,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}get defaultEstimate(){return this.defaultEstimate_}destroy(){}}function xl(a,e,t){return(e=Il(e))in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function ae(){return ae=Object.assign?Object.assign.bind():function(a){for(var e=1;e`):Tt}function wr(a,e,t){return e[a]?e[a].bind(e):Rl(a,t)}const wi=ki();function bl(a,e,t){const s=ki();if(typeof console=="object"&&a===!0||typeof a=="object"){const i=["debug","log","info","warn","error"];i.forEach(r=>{s[r]=wr(r,a,t)});try{s.log(`Debug logs enabled for "${e}" in hls.js version 1.6.15`)}catch{return ki()}i.forEach(r=>{wi[r]=wr(r,a)})}else ae(wi,s);return s}const ne=wi;function It(a=!0){return typeof self>"u"?void 0:(a||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}function _l(a){return typeof self<"u"&&a===self.ManagedMediaSource}function ra(a,e){const t=Object.keys(a),s=Object.keys(e),i=t.length,r=s.length;return!i||!r||i===r&&!t.some(n=>s.indexOf(n)===-1)}function Ve(a,e=!1){if(typeof TextDecoder<"u"){const l=new TextDecoder("utf-8").decode(a);if(e){const h=l.indexOf("\0");return h!==-1?l.substring(0,h):l}return l.replace(/\0/g,"")}const t=a.length;let s,i,r,n="",o=0;for(;o>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(s);break;case 12:case 13:i=a[o++],n+=String.fromCharCode((s&31)<<6|i&63);break;case 14:i=a[o++],r=a[o++],n+=String.fromCharCode((s&15)<<12|(i&63)<<6|(r&63)<<0);break}}return n}function be(a){let e="";for(let t=0;t1||i===1&&(t=this.levelkeys[s[0]])!=null&&t.encrypted)return!0}return!1}get programDateTime(){return this._programDateTime===null&&this.rawProgramDateTime&&(this.programDateTime=Date.parse(this.rawProgramDateTime)),this._programDateTime}set programDateTime(e){if(!K(e)){this._programDateTime=this.rawProgramDateTime=null;return}this._programDateTime=e}get ref(){return Te(this)?(this._ref||(this._ref={base:this.base,start:this.start,duration:this.duration,sn:this.sn,programDateTime:this.programDateTime}),this._ref):null}addStart(e){this.setStart(this.start+e)}setStart(e){this.start=e,this._ref&&(this._ref.start=e)}setDuration(e){this.duration=e,this._ref&&(this._ref.duration=e)}setKeyFormat(e){const t=this.levelkeys;if(t){var s;const i=t[e];i&&!((s=this._decryptdata)!=null&&s.keyId)&&(this._decryptdata=i.getDecryptData(this.sn,t))}}abortRequests(){var e,t;(e=this.loader)==null||e.abort(),(t=this.keyLoader)==null||t.abort()}setElementaryStreamInfo(e,t,s,i,r,n=!1){const{elementaryStreams:o}=this,c=o[e];if(!c){o[e]={startPTS:t,endPTS:s,startDTS:i,endDTS:r,partial:n};return}c.startPTS=Math.min(c.startPTS,t),c.endPTS=Math.max(c.endPTS,s),c.startDTS=Math.min(c.startDTS,i),c.endDTS=Math.max(c.endDTS,r)}}class Pl extends aa{constructor(e,t,s,i,r){super(s),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=i;const n=e.enumeratedString("BYTERANGE");n&&this.setByteRange(n,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}function oa(a,e){const t=Object.getPrototypeOf(a);if(t){const s=Object.getOwnPropertyDescriptor(t,e);return s||oa(t,e)}}function kl(a,e){const t=oa(a,e);t&&(t.enumerable=!0,Object.defineProperty(a,e,t))}const Fr=Math.pow(2,32)-1,wl=[].push,la={video:1,audio:2,id3:3,text:4};function Ae(a){return String.fromCharCode.apply(null,a)}function ca(a,e){const t=a[e]<<8|a[e+1];return t<0?65536+t:t}function z(a,e){const t=ha(a,e);return t<0?4294967296+t:t}function Mr(a,e){let t=z(a,e);return t*=Math.pow(2,32),t+=z(a,e+4),t}function ha(a,e){return a[e]<<24|a[e+1]<<16|a[e+2]<<8|a[e+3]}function Ol(a){const e=a.byteLength;for(let t=0;t8&&a[t+4]===109&&a[t+5]===111&&a[t+6]===111&&a[t+7]===102)return!0;t=s>1?t+s:e}return!1}function ee(a,e){const t=[];if(!e.length)return t;const s=a.byteLength;for(let i=0;i1?i+r:s;if(n===e[0])if(e.length===1)t.push(a.subarray(i+8,o));else{const c=ee(a.subarray(i+8,o),e.slice(1));c.length&&wl.apply(t,c)}i=o}return t}function Fl(a){const e=[],t=a[0];let s=8;const i=z(a,s);s+=4;let r=0,n=0;t===0?(r=z(a,s),n=z(a,s+4),s+=8):(r=Mr(a,s),n=Mr(a,s+8),s+=16),s+=2;let o=a.length+n;const c=ca(a,s);s+=2;for(let l=0;l>>31===1)return ne.warn("SIDX has hierarchical references (not supported)"),null;const f=z(a,h);h+=4,e.push({referenceSize:d,subsegmentDuration:f,info:{duration:f/i,start:o,end:o+d-1}}),o+=d,h+=4,s=h}return{earliestPresentationTime:r,timescale:i,version:t,referencesCount:c,references:e}}function ua(a){const e=[],t=ee(a,["moov","trak"]);for(let i=0;i{const r=z(i,4),n=e[r];n&&(n.default={duration:z(i,12),flags:z(i,20)})}),e}function Ml(a){const e=a.subarray(8),t=e.subarray(86),s=Ae(e.subarray(4,8));let i=s,r;const n=s==="enca"||s==="encv";if(n){const l=ee(e,[s])[0].subarray(s==="enca"?28:78);ee(l,["sinf"]).forEach(u=>{const d=ee(u,["schm"])[0];if(d){const g=Ae(d.subarray(4,8));if(g==="cbcs"||g==="cenc"){const f=ee(u,["frma"])[0];f&&(i=Ae(f))}}})}const o=i;switch(i){case"avc1":case"avc2":case"avc3":case"avc4":{const c=ee(t,["avcC"])[0];c&&c.length>3&&(i+="."+ds(c[1])+ds(c[2])+ds(c[3]),r=us(o==="avc1"?"dva1":"dvav",t));break}case"mp4a":{const c=ee(e,[s])[0],l=ee(c.subarray(28),["esds"])[0];if(l&&l.length>7){let h=4;if(l[h++]!==3)break;h=ai(l,h),h+=2;const u=l[h++];if(u&128&&(h+=2),u&64&&(h+=l[h++]),l[h++]!==4)break;h=ai(l,h);const d=l[h++];if(d===64)i+="."+ds(d);else break;if(h+=12,l[h++]!==5)break;h=ai(l,h);const g=l[h++];let f=(g&248)>>3;f===31&&(f+=1+((g&7)<<3)+((l[h]&224)>>5)),i+="."+f}break}case"hvc1":case"hev1":{const c=ee(t,["hvcC"])[0];if(c&&c.length>12){const l=c[1],h=["","A","B","C"][l>>6],u=l&31,d=z(c,2),g=(l&32)>>5?"H":"L",f=c[12],p=c.subarray(6,12);i+="."+h+u,i+="."+Nl(d).toString(16).toUpperCase(),i+="."+g+f;let y="";for(let E=p.length;E--;){const v=p[E];(v||y)&&(y="."+v.toString(16).toUpperCase()+y)}i+=y}r=us(o=="hev1"?"dvhe":"dvh1",t);break}case"dvh1":case"dvhe":case"dvav":case"dva1":case"dav1":{i=us(i,t)||i;break}case"vp09":{const c=ee(t,["vpcC"])[0];if(c&&c.length>6){const l=c[4],h=c[5],u=c[6]>>4&15;i+="."+Je(l)+"."+Je(h)+"."+Je(u)}break}case"av01":{const c=ee(t,["av1C"])[0];if(c&&c.length>2){const l=c[1]>>>5,h=c[1]&31,u=c[2]>>>7?"H":"M",d=(c[2]&64)>>6,g=(c[2]&32)>>5,f=l===2&&d?g?12:10:d?10:8,p=(c[2]&16)>>4,y=(c[2]&8)>>3,E=(c[2]&4)>>2,v=c[2]&3;i+="."+l+"."+Je(h)+u+"."+Je(f)+"."+p+"."+y+E+v+"."+Je(1)+"."+Je(1)+"."+Je(1)+"."+0,r=us("dav1",t)}break}}return{codec:i,encrypted:n,supplemental:r}}function us(a,e){const t=ee(e,["dvvC"]),s=t.length?t[0]:ee(e,["dvcC"])[0];if(s){const i=s[2]>>1&127,r=s[2]<<5&32|s[3]>>3&31;return a+"."+Je(i)+"."+Je(r)}}function Nl(a){let e=0;for(let t=0;t<32;t++)e|=(a>>t&1)<<31-t;return e>>>0}function ai(a,e){const t=e+5;for(;a[e++]&128&&e{const r=s.subarray(8,24);r.some(n=>n!==0)||(ne.log(`[eme] Patching keyId in 'enc${i?"a":"v"}>sinf>>tenc' box: ${be(r)} -> ${be(t)}`),s.set(t,8))})}function Ul(a){const e=[];return da(a,t=>e.push(t.subarray(8,24))),e}function da(a,e){ee(a,["moov","trak"]).forEach(s=>{const i=ee(s,["mdia","minf","stbl","stsd"])[0];if(!i)return;const r=i.subarray(8);let n=ee(r,["enca"]);const o=n.length>0;o||(n=ee(r,["encv"])),n.forEach(c=>{const l=o?c.subarray(28):c.subarray(78);ee(l,["sinf"]).forEach(u=>{const d=fa(u);d&&e(d,o)})})})}function fa(a){const e=ee(a,["schm"])[0];if(e){const t=Ae(e.subarray(4,8));if(t==="cbcs"||t==="cenc"){const s=ee(a,["schi","tenc"])[0];if(s)return s}}}function $l(a,e,t){const s={},i=ee(a,["moof","traf"]);for(let r=0;rs[r].duration)){let r=1/0,n=0;const o=ee(a,["sidx"]);for(let c=0;cu+d.info.duration||0,0);n=Math.max(n,h+l.earliestPresentationTime/l.timescale)}}n&&K(n)&&Object.keys(s).forEach(c=>{s[c].duration||(s[c].duration=n*s[c].timescale-s[c].start)})}return s}function Gl(a){const e={valid:null,remainder:null},t=ee(a,["moof"]);if(t.length<2)return e.remainder=a,e;const s=t[t.length-1];return e.valid=a.slice(0,s.byteOffset-8),e.remainder=a.slice(s.byteOffset-8),e}function He(a,e){const t=new Uint8Array(a.length+e.length);return t.set(a),t.set(e,a.length),t}function Nr(a,e){const t=[],s=e.samples,i=e.timescale,r=e.id;let n=!1;return ee(s,["moof"]).map(c=>{const l=c.byteOffset-8;ee(c,["traf"]).map(u=>{const d=ee(u,["tfdt"]).map(g=>{const f=g[0];let p=z(g,4);return f===1&&(p*=Math.pow(2,32),p+=z(g,8)),p/i})[0];return d!==void 0&&(a=d),ee(u,["tfhd"]).map(g=>{const f=z(g,4),p=z(g,0)&16777215,y=(p&1)!==0,E=(p&2)!==0,v=(p&8)!==0;let T=0;const S=(p&16)!==0;let x=0;const D=(p&32)!==0;let A=8;f===r&&(y&&(A+=8),E&&(A+=4),v&&(T=z(g,A),A+=4),S&&(x=z(g,A),A+=4),D&&(A+=4),e.type==="video"&&(n=js(e.codec)),ee(u,["trun"]).map(L=>{const R=L[0],I=z(L,0)&16777215,C=(I&1)!==0;let $=0;const G=(I&4)!==0,H=(I&256)!==0;let O=0;const w=(I&512)!==0;let k=0;const F=(I&1024)!==0,N=(I&2048)!==0;let V=0;const B=z(L,4);let U=8;C&&($=z(L,U),U+=4),G&&(U+=4);let j=$+l;for(let J=0;J>1&63;return t===39||t===40}else return(e&31)===6}function ir(a,e,t,s){const i=ga(a);let r=0;r+=e;let n=0,o=0,c=0;for(;r=i.length)break;c=i[r++],n+=c}while(c===255);o=0;do{if(r>=i.length)break;c=i[r++],o+=c}while(c===255);const l=i.length-r;let h=r;if(ol){ne.error(`Malformed SEI payload. ${o} is too small, only ${l} bytes left to parse.`);break}if(n===4){if(i[h++]===181){const d=ca(i,h);if(h+=2,d===49){const g=z(i,h);if(h+=4,g===1195456820){const f=i[h++];if(f===3){const p=i[h++],y=31&p,E=64&p,v=E?2+y*3:0,T=new Uint8Array(v);if(E){T[0]=p;for(let S=1;S16){const u=[];for(let f=0;f<16;f++){const p=i[h++].toString(16);u.push(p.length==1?"0"+p:p),(f===3||f===5||f===7||f===9)&&u.push("-")}const d=o-16,g=new Uint8Array(d);for(let f=0;f>24&255,r[1]=s>>16&255,r[2]=s>>8&255,r[3]=s&255,r.set(a,4),i=0,s=8;i0?(r=new Uint8Array(4),e.length>0&&new DataView(r.buffer).setUint32(0,e.length,!1)):r=new Uint8Array;const n=new Uint8Array(4);return t.byteLength>0&&new DataView(n.buffer).setUint32(0,t.byteLength,!1),Hl([112,115,115,104],new Uint8Array([s,0,0,0]),a,r,i,n,t)}function Wl(a){const e=[];if(a instanceof ArrayBuffer){const t=a.byteLength;let s=0;for(;s+32>>24;if(r!==0&&r!==1)return{offset:t,size:e};const n=a.buffer,o=be(new Uint8Array(n,t+12,16));let c=null,l=null,h=0;if(r===0)h=28;else{const d=a.getUint32(28);if(!d||s<32+d*16)return{offset:t,size:e};c=[];for(let g=0;g/\(Windows.+Firefox\//i.test(navigator.userAgent),Yt={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,dav1:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function rr(a,e){const t=Yt[e];return!!t&&!!t[a.slice(0,4)]}function ss(a,e,t=!0){return!a.split(",").some(s=>!nr(s,e,t))}function nr(a,e,t=!0){var s;const i=It(t);return(s=i?.isTypeSupported(is(a,e)))!=null?s:!1}function is(a,e){return`${e}/mp4;codecs=${a}`}function Br(a){if(a){const e=a.substring(0,4);return Yt.video[e]}return 2}function Ns(a){const e=ma();return a.split(",").reduce((t,s)=>{const r=e&&js(s)?9:Yt.video[s];return r?(r*2+t)/(t?3:2):(Yt.audio[s]+t)/(t?2:1)},0)}const oi={};function jl(a,e=!0){if(oi[a])return oi[a];const t={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"],"mp4a.40.34":["mp3"]}[a];for(let i=0;ijl(t.toLowerCase(),e))}function zl(a,e){const t=[];if(a){const s=a.split(",");for(let i=0;i4||["ac-3","ec-3","alac","fLaC","Opus"].indexOf(a)!==-1)&&(Ur(a,"audio")||Ur(a,"video")))return a;if(e){const t=e.split(",");if(t.length>1){if(a){for(let s=t.length;s--;)if(t[s].substring(0,4)===a.substring(0,4))return t[s]}return t[0]}}return e||a}function Ur(a,e){return rr(a,e)&&nr(a,e)}function Ql(a){const e=a.split(",");for(let t=0;t2&&s[0]==="avc1"&&(e[t]=`avc1.${parseInt(s[1]).toString(16)}${("000"+parseInt(s[2]).toString(16)).slice(-4)}`)}return e.join(",")}function Zl(a){if(a.startsWith("av01.")){const e=a.split("."),t=["0","111","01","01","01","0"];for(let s=e.length;s>4&&s<10;s++)e[s]=t[s-4];return e.join(".")}return a}function $r(a){const e=It(a)||{isTypeSupported:()=>!1};return{mpeg:e.isTypeSupported("audio/mpeg"),mp3:e.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:e.isTypeSupported('audio/mp4; codecs="ac-3"')}}function Oi(a){return a.replace(/^.+codecs=["']?([^"']+).*$/,"$1")}const Jl={supported:!0,powerEfficient:!0,smooth:!0},ec={supported:!1,smooth:!1,powerEfficient:!1},pa={supported:!0,configurations:[],decodingInfoResults:[Jl]};function ya(a,e){return{supported:!1,configurations:e,decodingInfoResults:[ec],error:a}}function tc(a,e,t,s,i,r){const n=a.videoCodec,o=a.audioCodec?a.audioGroups:null,c=r?.audioCodec,l=r?.channels,h=l?parseInt(l):c?1/0:2;let u=null;if(o!=null&&o.length)try{o.length===1&&o[0]?u=e.groups[o[0]].channels:u=o.reduce((d,g)=>{if(g){const f=e.groups[g];if(!f)throw new Error(`Audio track group ${g} not found`);Object.keys(f.channels).forEach(p=>{d[p]=(d[p]||0)+f.channels[p]})}return d},{2:0})}catch{return!0}return n!==void 0&&(n.split(",").some(d=>js(d))||a.width>1920&&a.height>1088||a.height>1920&&a.width>1088||a.frameRate>Math.max(s,30)||a.videoRange!=="SDR"&&a.videoRange!==t||a.bitrate>Math.max(i,8e6))||!!u&&K(h)&&Object.keys(u).some(d=>parseInt(d)>h)}function Ea(a,e,t,s={}){const i=a.videoCodec;if(!i&&!a.audioCodec||!t)return Promise.resolve(pa);const r=[],n=sc(a),o=n.length,c=ic(a,e,o>0),l=c.length;for(let h=o||1*l||1;h--;){const u={type:"media-source"};if(o&&(u.video=n[h%o]),l){u.audio=c[h%l];const d=u.audio.bitrate;u.video&&d&&(u.video.bitrate-=d)}r.push(u)}if(i){const h=navigator.userAgent;if(i.split(",").some(u=>js(u))&&ma())return Promise.resolve(ya(new Error(`Overriding Windows Firefox HEVC MediaCapabilities result based on user-agent string: (${h})`),r))}return Promise.all(r.map(h=>{const u=nc(h);return s[u]||(s[u]=t.decodingInfo(h))})).then(h=>({supported:!h.some(u=>!u.supported),configurations:r,decodingInfoResults:h})).catch(h=>({supported:!1,configurations:r,decodingInfoResults:[],error:h}))}function sc(a){var e;const t=(e=a.videoCodec)==null?void 0:e.split(","),s=va(a),i=a.width||640,r=a.height||480,n=a.frameRate||30,o=a.videoRange.toLowerCase();return t?t.map(c=>{const l={contentType:is(Zl(c),"video"),width:i,height:r,bitrate:s,framerate:n};return o!=="sdr"&&(l.transferFunction=o),l}):[]}function ic(a,e,t){var s;const i=(s=a.audioCodec)==null?void 0:s.split(","),r=va(a);return i&&a.audioGroups?a.audioGroups.reduce((n,o)=>{var c;const l=o?(c=e.groups[o])==null?void 0:c.tracks:null;return l?l.reduce((h,u)=>{if(u.groupId===o){const d=parseFloat(u.channels||"");i.forEach(g=>{const f={contentType:is(g,"audio"),bitrate:t?rc(g,r):r};d&&(f.channels=""+d),h.push(f)})}return h},n):n},[]):[]}function rc(a,e){if(e<=1)return 1;let t=128e3;return a==="ec-3"?t=768e3:a==="ac-3"&&(t=64e4),Math.min(e/2,t)}function va(a){return Math.ceil(Math.max(a.bitrate*.9,a.averageBitrate)/1e3)*1e3||1}function nc(a){let e="";const{audio:t,video:s}=a;if(s){const i=Oi(s.contentType);e+=`${i}_r${s.height}x${s.width}f${Math.ceil(s.framerate)}${s.transferFunction||"sd"}_${Math.ceil(s.bitrate/1e5)}`}if(t){const i=Oi(t.contentType);e+=`${s?"_":""}${i}_c${t.channels}`}return e}const Fi=["NONE","TYPE-0","TYPE-1",null];function ac(a){return Fi.indexOf(a)>-1}const Us=["SDR","PQ","HLG"];function oc(a){return!!a&&Us.indexOf(a)>-1}var _s={No:"",Yes:"YES",v2:"v2"};function Gr(a){const{canSkipUntil:e,canSkipDateRanges:t,age:s}=a,i=s!!s).map(s=>s.substring(0,4)).join(","),"supplemental"in e){var t;this.supplemental=e.supplemental;const s=(t=e.supplemental)==null?void 0:t.videoCodec;s&&s!==e.videoCodec&&(this.codecSet+=`,${s.substring(0,4)}`)}this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return Vr(this._audioGroups,e)}hasSubtitleGroup(e){return Vr(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t){if(e==="audio"){let s=this._audioGroups;s||(s=this._audioGroups=[]),s.indexOf(t)===-1&&s.push(t)}else if(e==="text"){let s=this._subtitleGroups;s||(s=this._subtitleGroups=[]),s.indexOf(t)===-1&&s.push(t)}}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return(e=this.audioGroups)==null?void 0:e[0]}get textGroupId(){var e;return(e=this.subtitleGroups)==null?void 0:e[0]}addFallback(){}}function Vr(a,e){return!e||!a?!1:a.indexOf(e)!==-1}function lc(){if(typeof matchMedia=="function"){const a=matchMedia("(dynamic-range: high)"),e=matchMedia("bad query");if(a.media!==e.media)return a.matches===!0}return!1}function cc(a,e){let t=!1,s=[];if(a&&(t=a!=="SDR",s=[a]),e){s=e.allowedVideoRanges||Us.slice(0);const i=s.join("")!=="SDR"&&!e.videoCodec;t=e.preferHDR!==void 0?e.preferHDR:i&&lc(),t||(s=["SDR"])}return{preferHDR:t,allowedVideoRanges:s}}const hc=a=>{const e=new WeakSet;return(t,s)=>{if(a&&(s=a(t,s)),typeof s=="object"&&s!==null){if(e.has(s))return;e.add(s)}return s}},ce=(a,e)=>JSON.stringify(a,hc(e));function uc(a,e,t,s,i){const r=Object.keys(a),n=s?.channels,o=s?.audioCodec,c=i?.videoCodec,l=n&&parseInt(n)===2;let h=!1,u=!1,d=1/0,g=1/0,f=1/0,p=1/0,y=0,E=[];const{preferHDR:v,allowedVideoRanges:T}=cc(e,i);for(let L=r.length;L--;){const R=a[r[L]];h||(h=R.channels[2]>0),d=Math.min(d,R.minHeight),g=Math.min(g,R.minFramerate),f=Math.min(f,R.minBitrate),T.filter(C=>R.videoRanges[C]>0).length>0&&(u=!0)}d=K(d)?d:0,g=K(g)?g:0;const S=Math.max(1080,d),x=Math.max(30,g);f=K(f)?f:t,t=Math.max(f,t),u||(e=void 0);const D=r.length>1;return{codecSet:r.reduce((L,R)=>{const I=a[R];if(R===L)return L;if(E=u?T.filter(C=>I.videoRanges[C]>0):[],D){if(I.minBitrate>t)return Qe(R,`min bitrate of ${I.minBitrate} > current estimate of ${t}`),L;if(!I.hasDefaultAudio)return Qe(R,"no renditions with default or auto-select sound found"),L;if(o&&R.indexOf(o.substring(0,4))%5!==0)return Qe(R,`audio codec preference "${o}" not found`),L;if(n&&!l){if(!I.channels[n])return Qe(R,`no renditions with ${n} channel sound found (channels options: ${Object.keys(I.channels)})`),L}else if((!o||l)&&h&&I.channels[2]===0)return Qe(R,"no renditions with stereo sound found"),L;if(I.minHeight>S)return Qe(R,`min resolution of ${I.minHeight} > maximum of ${S}`),L;if(I.minFramerate>x)return Qe(R,`min framerate of ${I.minFramerate} > maximum of ${x}`),L;if(!E.some(C=>I.videoRanges[C]>0))return Qe(R,`no variants with VIDEO-RANGE of ${ce(E)} found`),L;if(c&&R.indexOf(c.substring(0,4))%5!==0)return Qe(R,`video codec preference "${c}" not found`),L;if(I.maxScore=Ns(L)||I.fragmentError>a[L].fragmentError)?L:(p=I.minIndex,y=I.maxScore,R)},void 0),videoRanges:E,preferHDR:v,minFramerate:g,minBitrate:f,minIndex:p}}function Qe(a,e){ne.log(`[abr] start candidates with "${a}" ignored because ${e}`)}function Ta(a){return a.reduce((e,t)=>{let s=e.groups[t.groupId];s||(s=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),s.tracks.push(t);const i=t.channels||"2";return s.channels[i]=(s.channels[i]||0)+1,s.hasDefault=s.hasDefault||t.default,s.hasAutoSelect=s.hasAutoSelect||t.autoselect,s.hasDefault&&(e.hasDefaultAudio=!0),s.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e},{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}function dc(a,e,t,s){return a.slice(t,s+1).reduce((i,r,n)=>{if(!r.codecSet)return i;const o=r.audioGroups;let c=i[r.codecSet];c||(i[r.codecSet]=c={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,minIndex:n,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!o,fragmentError:0}),c.minBitrate=Math.min(c.minBitrate,r.bitrate);const l=Math.min(r.height,r.width);return c.minHeight=Math.min(c.minHeight,l),c.minFramerate=Math.min(c.minFramerate,r.frameRate),c.minIndex=Math.min(c.minIndex,n),c.maxScore=Math.max(c.maxScore,r.score),c.fragmentError+=r.fragmentError,c.videoRanges[r.videoRange]=(c.videoRanges[r.videoRange]||0)+1,o&&o.forEach(h=>{if(!h)return;const u=e.groups[h];u&&(c.hasDefaultAudio=c.hasDefaultAudio||e.hasDefaultAudio?u.hasDefault:u.hasAutoSelect||!e.hasDefaultAudio&&!e.hasAutoSelectAudio,Object.keys(u.channels).forEach(d=>{c.channels[d]=(c.channels[d]||0)+u.channels[d]}))}),i},{})}function Hr(a){if(!a)return a;const{lang:e,assocLang:t,characteristics:s,channels:i,audioCodec:r}=a;return{lang:e,assocLang:t,characteristics:s,channels:i,audioCodec:r}}function tt(a,e,t){if("attrs"in a){const s=e.indexOf(a);if(s!==-1)return s}for(let s=0;ss.indexOf(i)===-1)}function Dt(a,e){const{audioCodec:t,channels:s}=a;return(t===void 0||(e.audioCodec||"").substring(0,4)===t.substring(0,4))&&(s===void 0||s===(e.channels||"2"))}function mc(a,e,t,s,i){const r=e[s],o=e.reduce((d,g,f)=>{const p=g.uri;return(d[p]||(d[p]=[])).push(f),d},{})[r.uri];o.length>1&&(s=Math.max.apply(Math,o));const c=r.videoRange,l=r.frameRate,h=r.codecSet.substring(0,4),u=Yr(e,s,d=>{if(d.videoRange!==c||d.frameRate!==l||d.codecSet.substring(0,4)!==h)return!1;const g=d.audioGroups,f=t.filter(p=>!g||g.indexOf(p.groupId)!==-1);return tt(a,f,i)>-1});return u>-1?u:Yr(e,s,d=>{const g=d.audioGroups,f=t.filter(p=>!g||g.indexOf(p.groupId)!==-1);return tt(a,f,i)>-1})}function Yr(a,e,t){for(let s=e;s>-1;s--)if(t(a[s]))return s;for(let s=e+1;s{var s;const{fragCurrent:i,partCurrent:r,hls:n}=this,{autoLevelEnabled:o,media:c}=n;if(!i||!c)return;const l=performance.now(),h=r?r.stats:i.stats,u=r?r.duration:i.duration,d=l-h.loading.start,g=n.minAutoLevel,f=i.level,p=this._nextAutoLevel;if(h.aborted||h.loaded&&h.loaded===h.total||f<=g){this.clearTimer(),this._nextAutoLevel=-1;return}if(!o)return;const y=p>-1&&p!==f,E=!!t||y;if(!E&&(c.paused||!c.playbackRate||!c.readyState))return;const v=n.mainForwardBufferInfo;if(!E&&v===null)return;const T=this.bwEstimator.getEstimateTTFB(),S=Math.abs(c.playbackRate);if(d<=Math.max(T,1e3*(u/(S*2))))return;const x=v?v.len/S:0,D=h.loading.first?h.loading.first-h.loading.start:-1,A=h.loaded&&D>-1,L=this.getBwEstimate(),R=n.levels,I=R[f],C=Math.max(h.loaded,Math.round(u*(i.bitrate||I.averageBitrate)/8));let $=A?d-D:d;$<1&&A&&($=Math.min(d,h.loaded*8/L));const G=A?h.loaded*1e3/$:0,H=T/1e3,O=G?(C-h.loaded)/G:C*8/L+H;if(O<=x)return;const w=G?G*8:L,k=((s=t?.details||this.hls.latestLevelDetails)==null?void 0:s.live)===!0,F=this.hls.config.abrBandWidthUpFactor;let N=Number.POSITIVE_INFINITY,V;for(V=f-1;V>g;V--){const J=R[V].maxBitrate,X=!R[V].details||k;if(N=this.getTimeToLoadFrag(H,w,u*J,X),N=O||N>u*10)return;A?this.bwEstimator.sample(d-Math.min(T,D),h.loaded):this.bwEstimator.sampleTTFB(d);const B=R[V].maxBitrate;this.getBwEstimate()*F>B&&this.resetEstimator(B);const U=this.findBestLevel(B,g,V,0,x,1,1);U>-1&&(V=U),this.warn(`Fragment ${i.sn}${r?" part "+r.index:""} of level ${f} is loading too slowly; +import{a as ke,f as Oe}from"../chunks/DGbOEUpF.js";import{o as zn,a as Mo}from"../chunks/DxGD2b0U.js";import{g as Js,l as No,j as Tt,t as ei,v as Bo,F as Uo,A as O,G as $o,aq as Go,I as br,q as ti,k as hs,C as Ko,aL as Vo,az as _r,i as Ho,aP as gt,h as _i,aQ as Yo,s as Wo,V as qo,aR as jo,aK as Qi,aS as Xo,aT as zo,z as Qo,am as Dr,aU as Zo,N as Jo,d as Qn,p as Zn,aV as si,aW as el,aI as tl,m as sl,f as il,o as rl,a1 as Zi,Z as ii,B as q,a5 as de,a7 as Ee,a6 as he,a3 as Ve,a4 as Ji,ab as ie,L as Di,a2 as Jn,aa as nl,ac as ea,a as al,aX as ol,a9 as ll,aY as Cr}from"../chunks/CkzjbUDB.js";import{d as er,a as ft,e as At,s as ze}from"../chunks/BsDbD4Ku.js";import{i as mt}from"../chunks/XE2G8ySY.js";import{h as cl}from"../chunks/DmyE0d-6.js";import{t as hl,W as Fs,s as dt,a as Rs,b as ul,r as Ci,c as dl,f as ta,d as sa,e as ia,F as fl,l as gl}from"../chunks/wDE00Dcu.js";import{b as Ms}from"../chunks/Dr80VTgO.js";function ml(a,e,t){for(var s=[],i=e.length,r,n=e.length,o=0;o{if(r){if(r.pending.delete(u),r.done.add(u),r.pending.size===0){var d=a.outrogroups;Pi(a,Qi(r.done)),d.delete(r),d.size===0&&(a.outrogroups=null)}}else n-=1},!1)}if(n===0){var c=s.length===0&&t!==null;if(c){var l=t,h=l.parentNode;tl(h),h.append(l),a.items.clear()}Pi(a,e,!c)}else r={pending:new Set(e),done:new Set},(a.outrogroups??=new Set).add(r)}function Pi(a,e,t=!0){var s;if(a.pending.size>0){s=new Set;for(const n of a.pending.values())for(const o of n)s.add(a.items.get(o).e)}for(var i=0;i{var v=t();return jo(v)?v:v==null?[]:Qi(v)}),u,d=new Map,g=!0;function f(v){(E.effect.f&Jo)===0&&(E.pending.delete(v),E.fallback=l,yl(E,u,n,e,s),l!==null&&(u.length===0?(l.f>)===0?Qn(l):(l.f^=gt,zt(l,null,n)):Zn(l,()=>{l=null})))}function p(v){E.pending.delete(v)}var y=No(()=>{u=O(h);var v=u.length;let T=!1;if(Tt){var S=$o(n)===Go;S!==(v===0)&&(n=br(),ei(n),ti(!1),T=!0)}for(var x=new Set,D=Ho,A=Wo(),L=0;Lr(n)):(l=_i(()=>r(Pr??=Js())),l.f|=gt)),v>x.size&&Yo(),Tt&&v>0&&ei(br()),!g)if(d.set(D,x),A){for(const[$,K]of o)x.has($)||D.skip_effect(K.e);D.oncommit(f),D.ondiscard(p)}else f(D);T&&ti(!0),O(h)}),E={effect:y,items:o,pending:d,outrogroups:null,fallback:l};g=!1,Tt&&(n=hs)}function jt(a){for(;a!==null&&(a.f&el)===0;)a=a.next;return a}function yl(a,e,t,s,i){var r=e.length,n=a.items,o=jt(a.effect.first),c,l=null,h=[],u=[],d,g,f,p;for(p=0;p0){var A=r===0?t:null;ml(a,x,A)}}}function El(a,e,t,s,i,r,n,o){var c=(n&Xo)!==0?(n&zo)===0?Qo(t,!1,!1):Dr(t):null,l=(n&Zo)!==0?Dr(i):null;return{v:c,i:l,e:_i(()=>(r(e,c??t,l??i,o),()=>{a.delete(s)}))}}function zt(a,e,t){if(a.nodes)for(var s=a.nodes.start,i=a.nodes.end,r=e&&(e.f>)===0?e.nodes.start:t;s!==null;){var n=rl(s);if(r.before(s),s===i)return;s=n}}function yt(a,e,t){e===null?a.effect.first=t:e.next=t,t===null?a.effect.last=e:t.prev=e}function Zt(a,e,t,s,i,r){var n=a.__className;if(Tt||n!==t||n===void 0){var o=hl(t,s,r);(!Tt||o!==a.getAttribute("class"))&&(o==null?a.removeAttribute("class"):a.className=o),a.__className=t}else if(r&&i!==r)for(var c in r){var l=!!r[c];(i==null||l!==!!i[c])&&a.classList.toggle(c,l)}return r}const V=Number.isFinite||function(a){return typeof a=="number"&&isFinite(a)},vl=Number.isSafeInteger||function(a){return typeof a=="number"&&Math.abs(a)<=Tl},Tl=Number.MAX_SAFE_INTEGER||9007199254740991;let W=(function(a){return a.NETWORK_ERROR="networkError",a.MEDIA_ERROR="mediaError",a.KEY_SYSTEM_ERROR="keySystemError",a.MUX_ERROR="muxError",a.OTHER_ERROR="otherError",a})({}),_=(function(a){return a.KEY_SYSTEM_NO_KEYS="keySystemNoKeys",a.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",a.KEY_SYSTEM_NO_SESSION="keySystemNoSession",a.KEY_SYSTEM_NO_CONFIGURED_LICENSE="keySystemNoConfiguredLicense",a.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",a.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED="keySystemServerCertificateRequestFailed",a.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED="keySystemServerCertificateUpdateFailed",a.KEY_SYSTEM_SESSION_UPDATE_FAILED="keySystemSessionUpdateFailed",a.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED="keySystemStatusOutputRestricted",a.KEY_SYSTEM_STATUS_INTERNAL_ERROR="keySystemStatusInternalError",a.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR="keySystemDestroyMediaKeysError",a.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR="keySystemDestroyCloseSessionError",a.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR="keySystemDestroyRemoveSessionError",a.MANIFEST_LOAD_ERROR="manifestLoadError",a.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",a.MANIFEST_PARSING_ERROR="manifestParsingError",a.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",a.LEVEL_EMPTY_ERROR="levelEmptyError",a.LEVEL_LOAD_ERROR="levelLoadError",a.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",a.LEVEL_PARSING_ERROR="levelParsingError",a.LEVEL_SWITCH_ERROR="levelSwitchError",a.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",a.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",a.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",a.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",a.FRAG_LOAD_ERROR="fragLoadError",a.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",a.FRAG_DECRYPT_ERROR="fragDecryptError",a.FRAG_PARSING_ERROR="fragParsingError",a.FRAG_GAP="fragGap",a.REMUX_ALLOC_ERROR="remuxAllocError",a.KEY_LOAD_ERROR="keyLoadError",a.KEY_LOAD_TIMEOUT="keyLoadTimeOut",a.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",a.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",a.BUFFER_APPEND_ERROR="bufferAppendError",a.BUFFER_APPENDING_ERROR="bufferAppendingError",a.BUFFER_STALLED_ERROR="bufferStalledError",a.BUFFER_FULL_ERROR="bufferFullError",a.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",a.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",a.ASSET_LIST_LOAD_ERROR="assetListLoadError",a.ASSET_LIST_LOAD_TIMEOUT="assetListLoadTimeout",a.ASSET_LIST_PARSING_ERROR="assetListParsingError",a.INTERSTITIAL_ASSET_ITEM_ERROR="interstitialAssetItemError",a.INTERNAL_EXCEPTION="internalException",a.INTERNAL_ABORTED="aborted",a.ATTACH_MEDIA_ERROR="attachMediaError",a.UNKNOWN="unknown",a})({}),m=(function(a){return a.MEDIA_ATTACHING="hlsMediaAttaching",a.MEDIA_ATTACHED="hlsMediaAttached",a.MEDIA_DETACHING="hlsMediaDetaching",a.MEDIA_DETACHED="hlsMediaDetached",a.MEDIA_ENDED="hlsMediaEnded",a.STALL_RESOLVED="hlsStallResolved",a.BUFFER_RESET="hlsBufferReset",a.BUFFER_CODECS="hlsBufferCodecs",a.BUFFER_CREATED="hlsBufferCreated",a.BUFFER_APPENDING="hlsBufferAppending",a.BUFFER_APPENDED="hlsBufferAppended",a.BUFFER_EOS="hlsBufferEos",a.BUFFERED_TO_END="hlsBufferedToEnd",a.BUFFER_FLUSHING="hlsBufferFlushing",a.BUFFER_FLUSHED="hlsBufferFlushed",a.MANIFEST_LOADING="hlsManifestLoading",a.MANIFEST_LOADED="hlsManifestLoaded",a.MANIFEST_PARSED="hlsManifestParsed",a.LEVEL_SWITCHING="hlsLevelSwitching",a.LEVEL_SWITCHED="hlsLevelSwitched",a.LEVEL_LOADING="hlsLevelLoading",a.LEVEL_LOADED="hlsLevelLoaded",a.LEVEL_UPDATED="hlsLevelUpdated",a.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",a.LEVELS_UPDATED="hlsLevelsUpdated",a.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",a.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",a.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",a.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",a.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",a.AUDIO_TRACK_UPDATED="hlsAudioTrackUpdated",a.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUpdated",a.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",a.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",a.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",a.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",a.SUBTITLE_TRACK_UPDATED="hlsSubtitleTrackUpdated",a.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",a.CUES_PARSED="hlsCuesParsed",a.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",a.INIT_PTS_FOUND="hlsInitPtsFound",a.FRAG_LOADING="hlsFragLoading",a.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",a.FRAG_LOADED="hlsFragLoaded",a.FRAG_DECRYPTED="hlsFragDecrypted",a.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",a.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",a.FRAG_PARSING_METADATA="hlsFragParsingMetadata",a.FRAG_PARSED="hlsFragParsed",a.FRAG_BUFFERED="hlsFragBuffered",a.FRAG_CHANGED="hlsFragChanged",a.FPS_DROP="hlsFpsDrop",a.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",a.MAX_AUTO_LEVEL_UPDATED="hlsMaxAutoLevelUpdated",a.ERROR="hlsError",a.DESTROYING="hlsDestroying",a.KEY_LOADING="hlsKeyLoading",a.KEY_LOADED="hlsKeyLoaded",a.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",a.BACK_BUFFER_REACHED="hlsBackBufferReached",a.STEERING_MANIFEST_LOADED="hlsSteeringManifestLoaded",a.ASSET_LIST_LOADING="hlsAssetListLoading",a.ASSET_LIST_LOADED="hlsAssetListLoaded",a.INTERSTITIALS_UPDATED="hlsInterstitialsUpdated",a.INTERSTITIALS_BUFFERED_TO_BOUNDARY="hlsInterstitialsBufferedToBoundary",a.INTERSTITIAL_ASSET_PLAYER_CREATED="hlsInterstitialAssetPlayerCreated",a.INTERSTITIAL_STARTED="hlsInterstitialStarted",a.INTERSTITIAL_ASSET_STARTED="hlsInterstitialAssetStarted",a.INTERSTITIAL_ASSET_ENDED="hlsInterstitialAssetEnded",a.INTERSTITIAL_ASSET_ERROR="hlsInterstitialAssetError",a.INTERSTITIAL_ENDED="hlsInterstitialEnded",a.INTERSTITIALS_PRIMARY_RESUMED="hlsInterstitialsPrimaryResumed",a.PLAYOUT_LIMIT_REACHED="hlsPlayoutLimitReached",a.EVENT_CUE_ENTER="hlsEventCueEnter",a})({});var te={MANIFEST:"manifest",LEVEL:"level",AUDIO_TRACK:"audioTrack",SUBTITLE_TRACK:"subtitleTrack"},Y={MAIN:"main",AUDIO:"audio",SUBTITLE:"subtitle"};class Ot{constructor(e,t=0,s=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=s}sample(e,t){const s=Math.pow(this.alpha_,e);this.estimate_=t*(1-s)+s*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class Sl{constructor(e,t,s,i=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=s,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new Ot(e),this.fast_=new Ot(t),this.defaultTTFB_=i,this.ttfb_=new Ot(e)}update(e,t){const{slow_:s,fast_:i,ttfb_:r}=this;s.halfLife!==e&&(this.slow_=new Ot(e,s.getEstimate(),s.getTotalWeight())),i.halfLife!==t&&(this.fast_=new Ot(t,i.getEstimate(),i.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new Ot(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){e=Math.max(e,this.minDelayMs_);const s=8*t,i=e/1e3,r=s/i;this.fast_.sample(i,r),this.slow_.sample(i,r)}sampleTTFB(e){const t=e/1e3,s=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(s,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}get defaultEstimate(){return this.defaultEstimate_}destroy(){}}function xl(a,e,t){return(e=Il(e))in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function ae(){return ae=Object.assign?Object.assign.bind():function(a){for(var e=1;e`):St}function wr(a,e,t){return e[a]?e[a].bind(e):Rl(a,t)}const wi=ki();function bl(a,e,t){const s=ki();if(typeof console=="object"&&a===!0||typeof a=="object"){const i=["debug","log","info","warn","error"];i.forEach(r=>{s[r]=wr(r,a,t)});try{s.log(`Debug logs enabled for "${e}" in hls.js version 1.6.15`)}catch{return ki()}i.forEach(r=>{wi[r]=wr(r,a)})}else ae(wi,s);return s}const ne=wi;function Lt(a=!0){return typeof self>"u"?void 0:(a||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}function _l(a){return typeof self<"u"&&a===self.ManagedMediaSource}function ra(a,e){const t=Object.keys(a),s=Object.keys(e),i=t.length,r=s.length;return!i||!r||i===r&&!t.some(n=>s.indexOf(n)===-1)}function Ye(a,e=!1){if(typeof TextDecoder<"u"){const l=new TextDecoder("utf-8").decode(a);if(e){const h=l.indexOf("\0");return h!==-1?l.substring(0,h):l}return l.replace(/\0/g,"")}const t=a.length;let s,i,r,n="",o=0;for(;o>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(s);break;case 12:case 13:i=a[o++],n+=String.fromCharCode((s&31)<<6|i&63);break;case 14:i=a[o++],r=a[o++],n+=String.fromCharCode((s&15)<<12|(i&63)<<6|(r&63)<<0);break}}return n}function Re(a){let e="";for(let t=0;t1||i===1&&(t=this.levelkeys[s[0]])!=null&&t.encrypted)return!0}return!1}get programDateTime(){return this._programDateTime===null&&this.rawProgramDateTime&&(this.programDateTime=Date.parse(this.rawProgramDateTime)),this._programDateTime}set programDateTime(e){if(!V(e)){this._programDateTime=this.rawProgramDateTime=null;return}this._programDateTime=e}get ref(){return ve(this)?(this._ref||(this._ref={base:this.base,start:this.start,duration:this.duration,sn:this.sn,programDateTime:this.programDateTime}),this._ref):null}addStart(e){this.setStart(this.start+e)}setStart(e){this.start=e,this._ref&&(this._ref.start=e)}setDuration(e){this.duration=e,this._ref&&(this._ref.duration=e)}setKeyFormat(e){const t=this.levelkeys;if(t){var s;const i=t[e];i&&!((s=this._decryptdata)!=null&&s.keyId)&&(this._decryptdata=i.getDecryptData(this.sn,t))}}abortRequests(){var e,t;(e=this.loader)==null||e.abort(),(t=this.keyLoader)==null||t.abort()}setElementaryStreamInfo(e,t,s,i,r,n=!1){const{elementaryStreams:o}=this,c=o[e];if(!c){o[e]={startPTS:t,endPTS:s,startDTS:i,endDTS:r,partial:n};return}c.startPTS=Math.min(c.startPTS,t),c.endPTS=Math.max(c.endPTS,s),c.startDTS=Math.min(c.startDTS,i),c.endDTS=Math.max(c.endDTS,r)}}class Pl extends aa{constructor(e,t,s,i,r){super(s),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=i;const n=e.enumeratedString("BYTERANGE");n&&this.setByteRange(n,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}function oa(a,e){const t=Object.getPrototypeOf(a);if(t){const s=Object.getOwnPropertyDescriptor(t,e);return s||oa(t,e)}}function kl(a,e){const t=oa(a,e);t&&(t.enumerable=!0,Object.defineProperty(a,e,t))}const Fr=Math.pow(2,32)-1,wl=[].push,la={video:1,audio:2,id3:3,text:4};function xe(a){return String.fromCharCode.apply(null,a)}function ca(a,e){const t=a[e]<<8|a[e+1];return t<0?65536+t:t}function z(a,e){const t=ha(a,e);return t<0?4294967296+t:t}function Mr(a,e){let t=z(a,e);return t*=Math.pow(2,32),t+=z(a,e+4),t}function ha(a,e){return a[e]<<24|a[e+1]<<16|a[e+2]<<8|a[e+3]}function Ol(a){const e=a.byteLength;for(let t=0;t8&&a[t+4]===109&&a[t+5]===111&&a[t+6]===111&&a[t+7]===102)return!0;t=s>1?t+s:e}return!1}function ee(a,e){const t=[];if(!e.length)return t;const s=a.byteLength;for(let i=0;i1?i+r:s;if(n===e[0])if(e.length===1)t.push(a.subarray(i+8,o));else{const c=ee(a.subarray(i+8,o),e.slice(1));c.length&&wl.apply(t,c)}i=o}return t}function Fl(a){const e=[],t=a[0];let s=8;const i=z(a,s);s+=4;let r=0,n=0;t===0?(r=z(a,s),n=z(a,s+4),s+=8):(r=Mr(a,s),n=Mr(a,s+8),s+=16),s+=2;let o=a.length+n;const c=ca(a,s);s+=2;for(let l=0;l>>31===1)return ne.warn("SIDX has hierarchical references (not supported)"),null;const f=z(a,h);h+=4,e.push({referenceSize:d,subsegmentDuration:f,info:{duration:f/i,start:o,end:o+d-1}}),o+=d,h+=4,s=h}return{earliestPresentationTime:r,timescale:i,version:t,referencesCount:c,references:e}}function ua(a){const e=[],t=ee(a,["moov","trak"]);for(let i=0;i{const r=z(i,4),n=e[r];n&&(n.default={duration:z(i,12),flags:z(i,20)})}),e}function Ml(a){const e=a.subarray(8),t=e.subarray(86),s=xe(e.subarray(4,8));let i=s,r;const n=s==="enca"||s==="encv";if(n){const l=ee(e,[s])[0].subarray(s==="enca"?28:78);ee(l,["sinf"]).forEach(u=>{const d=ee(u,["schm"])[0];if(d){const g=xe(d.subarray(4,8));if(g==="cbcs"||g==="cenc"){const f=ee(u,["frma"])[0];f&&(i=xe(f))}}})}const o=i;switch(i){case"avc1":case"avc2":case"avc3":case"avc4":{const c=ee(t,["avcC"])[0];c&&c.length>3&&(i+="."+ds(c[1])+ds(c[2])+ds(c[3]),r=us(o==="avc1"?"dva1":"dvav",t));break}case"mp4a":{const c=ee(e,[s])[0],l=ee(c.subarray(28),["esds"])[0];if(l&&l.length>7){let h=4;if(l[h++]!==3)break;h=ai(l,h),h+=2;const u=l[h++];if(u&128&&(h+=2),u&64&&(h+=l[h++]),l[h++]!==4)break;h=ai(l,h);const d=l[h++];if(d===64)i+="."+ds(d);else break;if(h+=12,l[h++]!==5)break;h=ai(l,h);const g=l[h++];let f=(g&248)>>3;f===31&&(f+=1+((g&7)<<3)+((l[h]&224)>>5)),i+="."+f}break}case"hvc1":case"hev1":{const c=ee(t,["hvcC"])[0];if(c&&c.length>12){const l=c[1],h=["","A","B","C"][l>>6],u=l&31,d=z(c,2),g=(l&32)>>5?"H":"L",f=c[12],p=c.subarray(6,12);i+="."+h+u,i+="."+Nl(d).toString(16).toUpperCase(),i+="."+g+f;let y="";for(let E=p.length;E--;){const v=p[E];(v||y)&&(y="."+v.toString(16).toUpperCase()+y)}i+=y}r=us(o=="hev1"?"dvhe":"dvh1",t);break}case"dvh1":case"dvhe":case"dvav":case"dva1":case"dav1":{i=us(i,t)||i;break}case"vp09":{const c=ee(t,["vpcC"])[0];if(c&&c.length>6){const l=c[4],h=c[5],u=c[6]>>4&15;i+="."+et(l)+"."+et(h)+"."+et(u)}break}case"av01":{const c=ee(t,["av1C"])[0];if(c&&c.length>2){const l=c[1]>>>5,h=c[1]&31,u=c[2]>>>7?"H":"M",d=(c[2]&64)>>6,g=(c[2]&32)>>5,f=l===2&&d?g?12:10:d?10:8,p=(c[2]&16)>>4,y=(c[2]&8)>>3,E=(c[2]&4)>>2,v=c[2]&3;i+="."+l+"."+et(h)+u+"."+et(f)+"."+p+"."+y+E+v+"."+et(1)+"."+et(1)+"."+et(1)+"."+0,r=us("dav1",t)}break}}return{codec:i,encrypted:n,supplemental:r}}function us(a,e){const t=ee(e,["dvvC"]),s=t.length?t[0]:ee(e,["dvcC"])[0];if(s){const i=s[2]>>1&127,r=s[2]<<5&32|s[3]>>3&31;return a+"."+et(i)+"."+et(r)}}function Nl(a){let e=0;for(let t=0;t<32;t++)e|=(a>>t&1)<<31-t;return e>>>0}function ai(a,e){const t=e+5;for(;a[e++]&128&&e{const r=s.subarray(8,24);r.some(n=>n!==0)||(ne.log(`[eme] Patching keyId in 'enc${i?"a":"v"}>sinf>>tenc' box: ${Re(r)} -> ${Re(t)}`),s.set(t,8))})}function Ul(a){const e=[];return da(a,t=>e.push(t.subarray(8,24))),e}function da(a,e){ee(a,["moov","trak"]).forEach(s=>{const i=ee(s,["mdia","minf","stbl","stsd"])[0];if(!i)return;const r=i.subarray(8);let n=ee(r,["enca"]);const o=n.length>0;o||(n=ee(r,["encv"])),n.forEach(c=>{const l=o?c.subarray(28):c.subarray(78);ee(l,["sinf"]).forEach(u=>{const d=fa(u);d&&e(d,o)})})})}function fa(a){const e=ee(a,["schm"])[0];if(e){const t=xe(e.subarray(4,8));if(t==="cbcs"||t==="cenc"){const s=ee(a,["schi","tenc"])[0];if(s)return s}}}function $l(a,e,t){const s={},i=ee(a,["moof","traf"]);for(let r=0;rs[r].duration)){let r=1/0,n=0;const o=ee(a,["sidx"]);for(let c=0;cu+d.info.duration||0,0);n=Math.max(n,h+l.earliestPresentationTime/l.timescale)}}n&&V(n)&&Object.keys(s).forEach(c=>{s[c].duration||(s[c].duration=n*s[c].timescale-s[c].start)})}return s}function Gl(a){const e={valid:null,remainder:null},t=ee(a,["moof"]);if(t.length<2)return e.remainder=a,e;const s=t[t.length-1];return e.valid=a.slice(0,s.byteOffset-8),e.remainder=a.slice(s.byteOffset-8),e}function We(a,e){const t=new Uint8Array(a.length+e.length);return t.set(a),t.set(e,a.length),t}function Nr(a,e){const t=[],s=e.samples,i=e.timescale,r=e.id;let n=!1;return ee(s,["moof"]).map(c=>{const l=c.byteOffset-8;ee(c,["traf"]).map(u=>{const d=ee(u,["tfdt"]).map(g=>{const f=g[0];let p=z(g,4);return f===1&&(p*=Math.pow(2,32),p+=z(g,8)),p/i})[0];return d!==void 0&&(a=d),ee(u,["tfhd"]).map(g=>{const f=z(g,4),p=z(g,0)&16777215,y=(p&1)!==0,E=(p&2)!==0,v=(p&8)!==0;let T=0;const S=(p&16)!==0;let x=0;const D=(p&32)!==0;let A=8;f===r&&(y&&(A+=8),E&&(A+=4),v&&(T=z(g,A),A+=4),S&&(x=z(g,A),A+=4),D&&(A+=4),e.type==="video"&&(n=js(e.codec)),ee(u,["trun"]).map(L=>{const R=L[0],I=z(L,0)&16777215,C=(I&1)!==0;let $=0;const K=(I&4)!==0,H=(I&256)!==0;let F=0;const w=(I&512)!==0;let M=0;const k=(I&1024)!==0,B=(I&2048)!==0;let G=0;const N=z(L,4);let U=8;C&&($=z(L,U),U+=4),K&&(U+=4);let X=$+l;for(let Z=0;Z>1&63;return t===39||t===40}else return(e&31)===6}function ir(a,e,t,s){const i=ga(a);let r=0;r+=e;let n=0,o=0,c=0;for(;r=i.length)break;c=i[r++],n+=c}while(c===255);o=0;do{if(r>=i.length)break;c=i[r++],o+=c}while(c===255);const l=i.length-r;let h=r;if(ol){ne.error(`Malformed SEI payload. ${o} is too small, only ${l} bytes left to parse.`);break}if(n===4){if(i[h++]===181){const d=ca(i,h);if(h+=2,d===49){const g=z(i,h);if(h+=4,g===1195456820){const f=i[h++];if(f===3){const p=i[h++],y=31&p,E=64&p,v=E?2+y*3:0,T=new Uint8Array(v);if(E){T[0]=p;for(let S=1;S16){const u=[];for(let f=0;f<16;f++){const p=i[h++].toString(16);u.push(p.length==1?"0"+p:p),(f===3||f===5||f===7||f===9)&&u.push("-")}const d=o-16,g=new Uint8Array(d);for(let f=0;f>24&255,r[1]=s>>16&255,r[2]=s>>8&255,r[3]=s&255,r.set(a,4),i=0,s=8;i0?(r=new Uint8Array(4),e.length>0&&new DataView(r.buffer).setUint32(0,e.length,!1)):r=new Uint8Array;const n=new Uint8Array(4);return t.byteLength>0&&new DataView(n.buffer).setUint32(0,t.byteLength,!1),Hl([112,115,115,104],new Uint8Array([s,0,0,0]),a,r,i,n,t)}function Wl(a){const e=[];if(a instanceof ArrayBuffer){const t=a.byteLength;let s=0;for(;s+32>>24;if(r!==0&&r!==1)return{offset:t,size:e};const n=a.buffer,o=Re(new Uint8Array(n,t+12,16));let c=null,l=null,h=0;if(r===0)h=28;else{const d=a.getUint32(28);if(!d||s<32+d*16)return{offset:t,size:e};c=[];for(let g=0;g/\(Windows.+Firefox\//i.test(navigator.userAgent),Yt={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,dav1:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function rr(a,e){const t=Yt[e];return!!t&&!!t[a.slice(0,4)]}function ss(a,e,t=!0){return!a.split(",").some(s=>!nr(s,e,t))}function nr(a,e,t=!0){var s;const i=Lt(t);return(s=i?.isTypeSupported(is(a,e)))!=null?s:!1}function is(a,e){return`${e}/mp4;codecs=${a}`}function Br(a){if(a){const e=a.substring(0,4);return Yt.video[e]}return 2}function Ns(a){const e=ma();return a.split(",").reduce((t,s)=>{const r=e&&js(s)?9:Yt.video[s];return r?(r*2+t)/(t?3:2):(Yt.audio[s]+t)/(t?2:1)},0)}const oi={};function jl(a,e=!0){if(oi[a])return oi[a];const t={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"],"mp4a.40.34":["mp3"]}[a];for(let i=0;ijl(t.toLowerCase(),e))}function zl(a,e){const t=[];if(a){const s=a.split(",");for(let i=0;i4||["ac-3","ec-3","alac","fLaC","Opus"].indexOf(a)!==-1)&&(Ur(a,"audio")||Ur(a,"video")))return a;if(e){const t=e.split(",");if(t.length>1){if(a){for(let s=t.length;s--;)if(t[s].substring(0,4)===a.substring(0,4))return t[s]}return t[0]}}return e||a}function Ur(a,e){return rr(a,e)&&nr(a,e)}function Ql(a){const e=a.split(",");for(let t=0;t2&&s[0]==="avc1"&&(e[t]=`avc1.${parseInt(s[1]).toString(16)}${("000"+parseInt(s[2]).toString(16)).slice(-4)}`)}return e.join(",")}function Zl(a){if(a.startsWith("av01.")){const e=a.split("."),t=["0","111","01","01","01","0"];for(let s=e.length;s>4&&s<10;s++)e[s]=t[s-4];return e.join(".")}return a}function $r(a){const e=Lt(a)||{isTypeSupported:()=>!1};return{mpeg:e.isTypeSupported("audio/mpeg"),mp3:e.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:e.isTypeSupported('audio/mp4; codecs="ac-3"')}}function Oi(a){return a.replace(/^.+codecs=["']?([^"']+).*$/,"$1")}const Jl={supported:!0,powerEfficient:!0,smooth:!0},ec={supported:!1,smooth:!1,powerEfficient:!1},pa={supported:!0,configurations:[],decodingInfoResults:[Jl]};function ya(a,e){return{supported:!1,configurations:e,decodingInfoResults:[ec],error:a}}function tc(a,e,t,s,i,r){const n=a.videoCodec,o=a.audioCodec?a.audioGroups:null,c=r?.audioCodec,l=r?.channels,h=l?parseInt(l):c?1/0:2;let u=null;if(o!=null&&o.length)try{o.length===1&&o[0]?u=e.groups[o[0]].channels:u=o.reduce((d,g)=>{if(g){const f=e.groups[g];if(!f)throw new Error(`Audio track group ${g} not found`);Object.keys(f.channels).forEach(p=>{d[p]=(d[p]||0)+f.channels[p]})}return d},{2:0})}catch{return!0}return n!==void 0&&(n.split(",").some(d=>js(d))||a.width>1920&&a.height>1088||a.height>1920&&a.width>1088||a.frameRate>Math.max(s,30)||a.videoRange!=="SDR"&&a.videoRange!==t||a.bitrate>Math.max(i,8e6))||!!u&&V(h)&&Object.keys(u).some(d=>parseInt(d)>h)}function Ea(a,e,t,s={}){const i=a.videoCodec;if(!i&&!a.audioCodec||!t)return Promise.resolve(pa);const r=[],n=sc(a),o=n.length,c=ic(a,e,o>0),l=c.length;for(let h=o||1*l||1;h--;){const u={type:"media-source"};if(o&&(u.video=n[h%o]),l){u.audio=c[h%l];const d=u.audio.bitrate;u.video&&d&&(u.video.bitrate-=d)}r.push(u)}if(i){const h=navigator.userAgent;if(i.split(",").some(u=>js(u))&&ma())return Promise.resolve(ya(new Error(`Overriding Windows Firefox HEVC MediaCapabilities result based on user-agent string: (${h})`),r))}return Promise.all(r.map(h=>{const u=nc(h);return s[u]||(s[u]=t.decodingInfo(h))})).then(h=>({supported:!h.some(u=>!u.supported),configurations:r,decodingInfoResults:h})).catch(h=>({supported:!1,configurations:r,decodingInfoResults:[],error:h}))}function sc(a){var e;const t=(e=a.videoCodec)==null?void 0:e.split(","),s=va(a),i=a.width||640,r=a.height||480,n=a.frameRate||30,o=a.videoRange.toLowerCase();return t?t.map(c=>{const l={contentType:is(Zl(c),"video"),width:i,height:r,bitrate:s,framerate:n};return o!=="sdr"&&(l.transferFunction=o),l}):[]}function ic(a,e,t){var s;const i=(s=a.audioCodec)==null?void 0:s.split(","),r=va(a);return i&&a.audioGroups?a.audioGroups.reduce((n,o)=>{var c;const l=o?(c=e.groups[o])==null?void 0:c.tracks:null;return l?l.reduce((h,u)=>{if(u.groupId===o){const d=parseFloat(u.channels||"");i.forEach(g=>{const f={contentType:is(g,"audio"),bitrate:t?rc(g,r):r};d&&(f.channels=""+d),h.push(f)})}return h},n):n},[]):[]}function rc(a,e){if(e<=1)return 1;let t=128e3;return a==="ec-3"?t=768e3:a==="ac-3"&&(t=64e4),Math.min(e/2,t)}function va(a){return Math.ceil(Math.max(a.bitrate*.9,a.averageBitrate)/1e3)*1e3||1}function nc(a){let e="";const{audio:t,video:s}=a;if(s){const i=Oi(s.contentType);e+=`${i}_r${s.height}x${s.width}f${Math.ceil(s.framerate)}${s.transferFunction||"sd"}_${Math.ceil(s.bitrate/1e5)}`}if(t){const i=Oi(t.contentType);e+=`${s?"_":""}${i}_c${t.channels}`}return e}const Fi=["NONE","TYPE-0","TYPE-1",null];function ac(a){return Fi.indexOf(a)>-1}const Us=["SDR","PQ","HLG"];function oc(a){return!!a&&Us.indexOf(a)>-1}var _s={No:"",Yes:"YES",v2:"v2"};function Gr(a){const{canSkipUntil:e,canSkipDateRanges:t,age:s}=a,i=s!!s).map(s=>s.substring(0,4)).join(","),"supplemental"in e){var t;this.supplemental=e.supplemental;const s=(t=e.supplemental)==null?void 0:t.videoCodec;s&&s!==e.videoCodec&&(this.codecSet+=`,${s.substring(0,4)}`)}this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return Vr(this._audioGroups,e)}hasSubtitleGroup(e){return Vr(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t){if(e==="audio"){let s=this._audioGroups;s||(s=this._audioGroups=[]),s.indexOf(t)===-1&&s.push(t)}else if(e==="text"){let s=this._subtitleGroups;s||(s=this._subtitleGroups=[]),s.indexOf(t)===-1&&s.push(t)}}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return(e=this.audioGroups)==null?void 0:e[0]}get textGroupId(){var e;return(e=this.subtitleGroups)==null?void 0:e[0]}addFallback(){}}function Vr(a,e){return!e||!a?!1:a.indexOf(e)!==-1}function lc(){if(typeof matchMedia=="function"){const a=matchMedia("(dynamic-range: high)"),e=matchMedia("bad query");if(a.media!==e.media)return a.matches===!0}return!1}function cc(a,e){let t=!1,s=[];if(a&&(t=a!=="SDR",s=[a]),e){s=e.allowedVideoRanges||Us.slice(0);const i=s.join("")!=="SDR"&&!e.videoCodec;t=e.preferHDR!==void 0?e.preferHDR:i&&lc(),t||(s=["SDR"])}return{preferHDR:t,allowedVideoRanges:s}}const hc=a=>{const e=new WeakSet;return(t,s)=>{if(a&&(s=a(t,s)),typeof s=="object"&&s!==null){if(e.has(s))return;e.add(s)}return s}},ce=(a,e)=>JSON.stringify(a,hc(e));function uc(a,e,t,s,i){const r=Object.keys(a),n=s?.channels,o=s?.audioCodec,c=i?.videoCodec,l=n&&parseInt(n)===2;let h=!1,u=!1,d=1/0,g=1/0,f=1/0,p=1/0,y=0,E=[];const{preferHDR:v,allowedVideoRanges:T}=cc(e,i);for(let L=r.length;L--;){const R=a[r[L]];h||(h=R.channels[2]>0),d=Math.min(d,R.minHeight),g=Math.min(g,R.minFramerate),f=Math.min(f,R.minBitrate),T.filter(C=>R.videoRanges[C]>0).length>0&&(u=!0)}d=V(d)?d:0,g=V(g)?g:0;const S=Math.max(1080,d),x=Math.max(30,g);f=V(f)?f:t,t=Math.max(f,t),u||(e=void 0);const D=r.length>1;return{codecSet:r.reduce((L,R)=>{const I=a[R];if(R===L)return L;if(E=u?T.filter(C=>I.videoRanges[C]>0):[],D){if(I.minBitrate>t)return Ze(R,`min bitrate of ${I.minBitrate} > current estimate of ${t}`),L;if(!I.hasDefaultAudio)return Ze(R,"no renditions with default or auto-select sound found"),L;if(o&&R.indexOf(o.substring(0,4))%5!==0)return Ze(R,`audio codec preference "${o}" not found`),L;if(n&&!l){if(!I.channels[n])return Ze(R,`no renditions with ${n} channel sound found (channels options: ${Object.keys(I.channels)})`),L}else if((!o||l)&&h&&I.channels[2]===0)return Ze(R,"no renditions with stereo sound found"),L;if(I.minHeight>S)return Ze(R,`min resolution of ${I.minHeight} > maximum of ${S}`),L;if(I.minFramerate>x)return Ze(R,`min framerate of ${I.minFramerate} > maximum of ${x}`),L;if(!E.some(C=>I.videoRanges[C]>0))return Ze(R,`no variants with VIDEO-RANGE of ${ce(E)} found`),L;if(c&&R.indexOf(c.substring(0,4))%5!==0)return Ze(R,`video codec preference "${c}" not found`),L;if(I.maxScore=Ns(L)||I.fragmentError>a[L].fragmentError)?L:(p=I.minIndex,y=I.maxScore,R)},void 0),videoRanges:E,preferHDR:v,minFramerate:g,minBitrate:f,minIndex:p}}function Ze(a,e){ne.log(`[abr] start candidates with "${a}" ignored because ${e}`)}function Ta(a){return a.reduce((e,t)=>{let s=e.groups[t.groupId];s||(s=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),s.tracks.push(t);const i=t.channels||"2";return s.channels[i]=(s.channels[i]||0)+1,s.hasDefault=s.hasDefault||t.default,s.hasAutoSelect=s.hasAutoSelect||t.autoselect,s.hasDefault&&(e.hasDefaultAudio=!0),s.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e},{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}function dc(a,e,t,s){return a.slice(t,s+1).reduce((i,r,n)=>{if(!r.codecSet)return i;const o=r.audioGroups;let c=i[r.codecSet];c||(i[r.codecSet]=c={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,minIndex:n,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!o,fragmentError:0}),c.minBitrate=Math.min(c.minBitrate,r.bitrate);const l=Math.min(r.height,r.width);return c.minHeight=Math.min(c.minHeight,l),c.minFramerate=Math.min(c.minFramerate,r.frameRate),c.minIndex=Math.min(c.minIndex,n),c.maxScore=Math.max(c.maxScore,r.score),c.fragmentError+=r.fragmentError,c.videoRanges[r.videoRange]=(c.videoRanges[r.videoRange]||0)+1,o&&o.forEach(h=>{if(!h)return;const u=e.groups[h];u&&(c.hasDefaultAudio=c.hasDefaultAudio||e.hasDefaultAudio?u.hasDefault:u.hasAutoSelect||!e.hasDefaultAudio&&!e.hasAutoSelectAudio,Object.keys(u.channels).forEach(d=>{c.channels[d]=(c.channels[d]||0)+u.channels[d]}))}),i},{})}function Hr(a){if(!a)return a;const{lang:e,assocLang:t,characteristics:s,channels:i,audioCodec:r}=a;return{lang:e,assocLang:t,characteristics:s,channels:i,audioCodec:r}}function st(a,e,t){if("attrs"in a){const s=e.indexOf(a);if(s!==-1)return s}for(let s=0;ss.indexOf(i)===-1)}function Ct(a,e){const{audioCodec:t,channels:s}=a;return(t===void 0||(e.audioCodec||"").substring(0,4)===t.substring(0,4))&&(s===void 0||s===(e.channels||"2"))}function mc(a,e,t,s,i){const r=e[s],o=e.reduce((d,g,f)=>{const p=g.uri;return(d[p]||(d[p]=[])).push(f),d},{})[r.uri];o.length>1&&(s=Math.max.apply(Math,o));const c=r.videoRange,l=r.frameRate,h=r.codecSet.substring(0,4),u=Yr(e,s,d=>{if(d.videoRange!==c||d.frameRate!==l||d.codecSet.substring(0,4)!==h)return!1;const g=d.audioGroups,f=t.filter(p=>!g||g.indexOf(p.groupId)!==-1);return st(a,f,i)>-1});return u>-1?u:Yr(e,s,d=>{const g=d.audioGroups,f=t.filter(p=>!g||g.indexOf(p.groupId)!==-1);return st(a,f,i)>-1})}function Yr(a,e,t){for(let s=e;s>-1;s--)if(t(a[s]))return s;for(let s=e+1;s{var s;const{fragCurrent:i,partCurrent:r,hls:n}=this,{autoLevelEnabled:o,media:c}=n;if(!i||!c)return;const l=performance.now(),h=r?r.stats:i.stats,u=r?r.duration:i.duration,d=l-h.loading.start,g=n.minAutoLevel,f=i.level,p=this._nextAutoLevel;if(h.aborted||h.loaded&&h.loaded===h.total||f<=g){this.clearTimer(),this._nextAutoLevel=-1;return}if(!o)return;const y=p>-1&&p!==f,E=!!t||y;if(!E&&(c.paused||!c.playbackRate||!c.readyState))return;const v=n.mainForwardBufferInfo;if(!E&&v===null)return;const T=this.bwEstimator.getEstimateTTFB(),S=Math.abs(c.playbackRate);if(d<=Math.max(T,1e3*(u/(S*2))))return;const x=v?v.len/S:0,D=h.loading.first?h.loading.first-h.loading.start:-1,A=h.loaded&&D>-1,L=this.getBwEstimate(),R=n.levels,I=R[f],C=Math.max(h.loaded,Math.round(u*(i.bitrate||I.averageBitrate)/8));let $=A?d-D:d;$<1&&A&&($=Math.min(d,h.loaded*8/L));const K=A?h.loaded*1e3/$:0,H=T/1e3,F=K?(C-h.loaded)/K:C*8/L+H;if(F<=x)return;const w=K?K*8:L,M=((s=t?.details||this.hls.latestLevelDetails)==null?void 0:s.live)===!0,k=this.hls.config.abrBandWidthUpFactor;let B=Number.POSITIVE_INFINITY,G;for(G=f-1;G>g;G--){const Z=R[G].maxBitrate,j=!R[G].details||M;if(B=this.getTimeToLoadFrag(H,w,u*Z,j),B=F||B>u*10)return;A?this.bwEstimator.sample(d-Math.min(T,D),h.loaded):this.bwEstimator.sampleTTFB(d);const N=R[G].maxBitrate;this.getBwEstimate()*k>N&&this.resetEstimator(N);const U=this.findBestLevel(N,g,G,0,x,1,1);U>-1&&(G=U),this.warn(`Fragment ${i.sn}${r?" part "+r.index:""} of level ${f} is loading too slowly; Fragment duration: ${i.duration.toFixed(3)} Time to underbuffer: ${x.toFixed(3)} s - Estimated load time for current fragment: ${O.toFixed(3)} s - Estimated load time for down switch fragment: ${N.toFixed(3)} s + Estimated load time for current fragment: ${F.toFixed(3)} s + Estimated load time for down switch fragment: ${B.toFixed(3)} s TTFB estimate: ${D|0} ms - Current BW estimate: ${K(L)?L|0:"Unknown"} bps + Current BW estimate: ${V(L)?L|0:"Unknown"} bps New BW estimate: ${this.getBwEstimate()|0} bps - Switching to level ${V} @ ${B|0} bps`),n.nextLoadLevel=n.nextAutoLevel=V,this.clearTimer();const j=()=>{if(this.clearTimer(),this.fragCurrent===i&&this.hls.loadLevel===V&&V>0){const J=this.getStarvationDelay();if(this.warn(`Aborting inflight request ${V>0?"and switching down":""} + Switching to level ${G} @ ${N|0} bps`),n.nextLoadLevel=n.nextAutoLevel=G,this.clearTimer();const X=()=>{if(this.clearTimer(),this.fragCurrent===i&&this.hls.loadLevel===G&&G>0){const Z=this.getStarvationDelay();if(this.warn(`Aborting inflight request ${G>0?"and switching down":""} Fragment duration: ${i.duration.toFixed(3)} s - Time to underbuffer: ${J.toFixed(3)} s`),i.abortRequests(),this.fragCurrent=this.partCurrent=null,V>g){let X=this.findBestLevel(this.hls.levels[g].bitrate,g,V,0,J,1,1);X===-1&&(X=g),this.hls.nextLoadLevel=this.hls.nextAutoLevel=X,this.resetEstimator(this.hls.levels[X].bitrate)}}};y||O>N*2?j():this.timer=self.setInterval(j,N*1e3),n.trigger(m.FRAG_LOAD_EMERGENCY_ABORTED,{frag:i,part:r,stats:h})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(this.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new Sl(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.FRAG_LOADING,this.onFragLoading,this),e.on(m.FRAG_LOADED,this.onFragLoaded,this),e.on(m.FRAG_BUFFERED,this.onFragBuffered,this),e.on(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(m.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.FRAG_LOADING,this.onFragLoading,this),e.off(m.FRAG_LOADED,this.onFragLoaded,this),e.off(m.FRAG_BUFFERED,this.onFragBuffered,this),e.off(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(m.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(m.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=this.supportedCache=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.supportedCache={},this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const s=t.frag;if(!this.ignoreFragment(s)){if(!s.bitrateTest){var i;this.fragCurrent=s,this.partCurrent=(i=t.part)!=null?i:null}this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case _.BUFFER_ADD_CODEC_ERROR:case _.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case _.FRAG_LOAD_TIMEOUT:{const s=t.frag,{fragCurrent:i,partCurrent:r}=this;if(s&&i&&s.sn===i.sn&&s.level===i.level){const n=performance.now(),o=r?r.stats:s.stats,c=n-o.loading.start,l=o.loading.first?o.loading.first-o.loading.start:-1;if(o.loaded&&l>-1){const u=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(c-Math.min(u,l),o.loaded)}else this.bwEstimator.sampleTTFB(c)}break}}}getTimeToLoadFrag(e,t,s,i){const r=e+s/t,n=i?e+this.lastLevelLoadSec:0;return r+n}onLevelLoaded(e,t){const s=this.hls.config,{loading:i}=t.stats,r=i.end-i.first;K(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(s.abrEwmaSlowLive,s.abrEwmaFastLive):this.bwEstimator.update(s.abrEwmaSlowVoD,s.abrEwmaFastVoD),this.timer>-1&&this._abandonRulesCheck(t.levelInfo)}onFragLoaded(e,{frag:t,part:s}){const i=s?s.stats:t.stats;if(t.type===Y.MAIN&&this.bwEstimator.sampleTTFB(i.loading.first-i.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const r=s?s.duration:t.duration,n=this.hls.levels[t.level],o=(n.loaded?n.loaded.bytes:0)+i.loaded,c=(n.loaded?n.loaded.duration:0)+r;n.loaded={bytes:o,duration:c},n.realBitrate=Math.round(8*o/c)}if(t.bitrateTest){const r={stats:i,frag:t,part:s,id:t.type};this.onFragBuffered(m.FRAG_BUFFERED,r),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:s,part:i}=t,r=i!=null&&i.stats.loaded?i.stats:s.stats;if(r.aborted||this.ignoreFragment(s))return;const n=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,r.loaded),r.bwEstimate=this.getBwEstimate(),s.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==Y.MAIN||e.sn==="initSegment"}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,s=this.getBwEstimate(),i=this.hls.config.maxStarvationDelay,r=this.findBestLevel(s,t,e,0,i,1,1);if(r>-1)return r;const n=this.hls.firstLevel,o=Math.min(Math.max(n,t),e);return this.warn(`Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${o}`),o}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,s=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(e!==-1&&(!s||!i||this.nextAutoLevelKey===this.getAutoLevelKey()))return e;const r=s&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(e!==-1){const n=this.hls.levels;if(n.length>Math.max(e,r)&&n[e].loadError<=n[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:s}=this;if(s.levels.length<=1)return s.loadLevel;const{maxAutoLevel:i,config:r,minAutoLevel:n}=s,o=t?t.duration:e?e.duration:0,c=this.getBwEstimate(),l=this.getStarvationDelay();let h=r.abrBandWidthFactor,u=r.abrBandWidthUpFactor;if(l){const y=this.findBestLevel(c,n,i,l,0,h,u);if(y>=0)return this.rebufferNotice=-1,y}let d=o?Math.min(o,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const y=this.bitrateTestDelay;y&&(d=(o?Math.min(o,r.maxLoadingDelay):r.maxLoadingDelay)-y,this.info(`bitrate test took ${Math.round(1e3*y)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=u=1)}const g=this.findBestLevel(c,n,i,l,d,h,u);if(this.rebufferNotice!==g&&(this.rebufferNotice=g,this.info(`${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${g}`)),g>-1)return g;const f=s.levels[n],p=s.loadLevelObj;return p&&f?.bitrate=t;w--){var O;const k=f[w],F=w>u;if(!k)continue;if(E.useMediaCapabilities&&!k.supportedResult&&!k.supportedPromise){const X=navigator.mediaCapabilities;typeof X?.decodingInfo=="function"&&tc(k,I,D,A,e,L)?(k.supportedPromise=Ea(k,I,X,this.supportedCache),k.supportedPromise.then(Z=>{if(!this.hls)return;k.supportedResult=Z;const oe=this.hls.levels,he=oe.indexOf(k);Z.error?this.warn(`MediaCapabilities decodingInfo error: "${Z.error}" for level ${he} ${ce(Z)}`):Z.supported?Z.decodingInfoResults.some(xe=>xe.smooth===!1||xe.powerEfficient===!1)&&this.log(`MediaCapabilities decodingInfo for level ${he} not smooth or powerEfficient: ${ce(Z)}`):(this.warn(`Unsupported MediaCapabilities decodingInfo result for level ${he} ${ce(Z)}`),he>-1&&oe.length>1&&(this.log(`Removing unsupported level ${he}`),this.hls.removeLevel(he),this.hls.loadLevel===-1&&(this.hls.nextLoadLevel=0)))}).catch(Z=>{this.warn(`Error handling MediaCapabilities decodingInfo: ${Z}`)})):k.supportedResult=pa}if((x&&k.codecSet!==x||D&&k.videoRange!==D||F&&A>k.frameRate||!F&&A>0&&AX.smooth===!1))&&(!S||w!==C)){H.push(w);continue}const N=k.details,V=(g?N?.partTarget:N?.averagetargetduration)||$;let B;F?B=o*e:B=n*e;const U=$&&i>=$*2&&r===0?k.averageBitrate:k.maxBitrate,j=this.getTimeToLoadFrag(G,B,U*V,N===void 0);if(B>=U&&(w===h||k.loadError===0&&k.fragmentError===0)&&(j<=G||!K(j)||T&&!this.bitrateTestDelay||j${w} adjustedbw(${Math.round(B)})-bitrate=${Math.round(B-U)} ttfb:${G.toFixed(1)} avgDuration:${V.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${j.toFixed(1)} firstSelection:${S} codecSet:${k.codecSet} videoRange:${k.videoRange} hls.loadLevel:${y}`)),S&&(this.firstSelection=w),w}}return-1}set nextAutoLevel(e){const t=this.deriveNextAutoLevel(e);this._nextAutoLevel!==t&&(this.nextAutoLevelKey="",this._nextAutoLevel=t)}deriveNextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:s}=this.hls;return Math.min(Math.max(e,s),t)}}const Sa={search:function(a,e){let t=0,s=a.length-1,i=null,r=null;for(;t<=s;){i=(t+s)/2|0,r=a[i];const n=e(r);if(n>0)t=i+1;else if(n<0)s=i-1;else return r}return null}};function yc(a,e,t){if(e===null||!Array.isArray(a)||!a.length||!K(e))return null;const s=a[0].programDateTime;if(e<(s||0))return null;const i=a[a.length-1].endProgramDateTime;if(e>=(i||0))return null;for(let r=0;r0&&o<15e-7&&(t+=15e-7),r&&a.level!==r.level&&r.end<=a.end&&(r=e[2+a.sn-e[0].sn]||null)}else t===0&&e[0].start===0&&(r=e[0]);if(r&&((!a||a.level===r.level)&&Wr(t,s,r)===0||Ec(r,a,Math.min(i,s))))return r;const n=Sa.search(e,Wr.bind(null,t,s));return n&&(n!==a||!r)?n:r}function Ec(a,e,t){if(e&&e.start===0&&e.level0){const s=e.tagList.reduce((i,r)=>(r[0]==="INF"&&(i+=parseFloat(r[1])),i),t);return a.start<=s}return!1}function Wr(a=0,e=0,t){if(t.start<=a&&t.start+t.duration>a)return 0;const s=Math.min(e,t.duration+(t.deltaPTS?t.deltaPTS:0));return t.start+t.duration-s<=a?1:t.start-s>a&&t.start?-1:0}function vc(a,e,t){const s=Math.min(e,t.duration+(t.deltaPTS?t.deltaPTS:0))*1e3;return(t.endProgramDateTime||0)-s>a}function xa(a,e,t){if(a&&a.startCC<=e&&a.endCC>=e){let s=a.fragments;const{fragmentHint:i}=a;i&&(s=s.concat(i));let r;return Sa.search(s,n=>n.cce?-1:(r=n,n.end<=t?1:n.start>t?-1:0)),r||null}return null}function Gs(a){switch(a.details){case _.FRAG_LOAD_TIMEOUT:case _.KEY_LOAD_TIMEOUT:case _.LEVEL_LOAD_TIMEOUT:case _.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function Aa(a){return a.details.startsWith("key")}function Ia(a){return Aa(a)&&!!a.frag&&!a.frag.decryptdata}function qr(a,e){const t=Gs(e);return a.default[`${t?"timeout":"error"}Retry`]}function ar(a,e){const t=a.backoff==="linear"?1:Math.pow(2,e);return Math.min(t*a.retryDelayMs,a.maxRetryDelayMs)}function jr(a){return re(re({},a),{errorRetry:null,timeoutRetry:null})}function Ks(a,e,t,s){if(!a)return!1;const i=s?.code,r=e499)}function Mi(a){return a===0&&navigator.onLine===!1}var Re={DoNothing:0,SendAlternateToPenaltyBox:2,RemoveAlternatePermanently:3,RetryRequest:5},Ue={None:0,MoveAllAlternatesMatchingHost:1,MoveAllAlternatesMatchingHDCP:2,MoveAllAlternatesMatchingKey:4};class Sc extends Ye{constructor(e){super("error-controller",e.logger),this.hls=void 0,this.playlistError=0,this.hls=e,this.registerListeners()}registerListeners(){const e=this.hls;e.on(m.ERROR,this.onError,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(m.ERROR,this.onError,this),e.off(m.ERROR,this.onErrorOut,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return e?.type===Y.MAIN?e.level:this.getVariantIndex()}getVariantIndex(){var e;const t=this.hls,s=t.currentLevel;return(e=t.loadLevelObj)!=null&&e.details||s===-1?t.loadLevel:s}variantHasKey(e,t){if(e){var s;if((s=e.details)!=null&&s.hasKey(t))return!0;const i=e.audioGroups;if(i)return this.hls.allAudioTracks.filter(n=>i.indexOf(n.groupId)>=0).some(n=>{var o;return(o=n.details)==null?void 0:o.hasKey(t)})}return!1}onManifestLoading(){this.playlistError=0}onLevelUpdated(){this.playlistError=0}onError(e,t){var s;if(t.fatal)return;const i=this.hls,r=t.context;switch(t.details){case _.FRAG_LOAD_ERROR:case _.FRAG_LOAD_TIMEOUT:case _.KEY_LOAD_ERROR:case _.KEY_LOAD_TIMEOUT:t.errorAction=this.getFragRetryOrSwitchAction(t);return;case _.FRAG_PARSING_ERROR:if((s=t.frag)!=null&&s.gap){t.errorAction=Gt();return}case _.FRAG_GAP:case _.FRAG_DECRYPT_ERROR:{t.errorAction=this.getFragRetryOrSwitchAction(t),t.errorAction.action=Re.SendAlternateToPenaltyBox;return}case _.LEVEL_EMPTY_ERROR:case _.LEVEL_PARSING_ERROR:{var n;const c=t.parent===Y.MAIN?t.level:i.loadLevel;t.details===_.LEVEL_EMPTY_ERROR&&((n=t.context)!=null&&(n=n.levelDetails)!=null&&n.live)?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,c):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,c))}return;case _.LEVEL_LOAD_ERROR:case _.LEVEL_LOAD_TIMEOUT:typeof r?.level=="number"&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.level));return;case _.AUDIO_TRACK_LOAD_ERROR:case _.AUDIO_TRACK_LOAD_TIMEOUT:case _.SUBTITLE_LOAD_ERROR:case _.SUBTITLE_TRACK_LOAD_TIMEOUT:if(r){const c=i.loadLevelObj;if(c&&(r.type===te.AUDIO_TRACK&&c.hasAudioGroup(r.groupId)||r.type===te.SUBTITLE_TRACK&&c.hasSubtitleGroup(r.groupId))){t.errorAction=this.getPlaylistRetryOrSwitchAction(t,i.loadLevel),t.errorAction.action=Re.SendAlternateToPenaltyBox,t.errorAction.flags=Ue.MoveAllAlternatesMatchingHost;return}}return;case _.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:t.errorAction={action:Re.SendAlternateToPenaltyBox,flags:Ue.MoveAllAlternatesMatchingHDCP};return;case _.KEY_SYSTEM_SESSION_UPDATE_FAILED:case _.KEY_SYSTEM_STATUS_INTERNAL_ERROR:case _.KEY_SYSTEM_NO_SESSION:t.errorAction={action:Re.SendAlternateToPenaltyBox,flags:Ue.MoveAllAlternatesMatchingKey};return;case _.BUFFER_ADD_CODEC_ERROR:case _.REMUX_ALLOC_ERROR:case _.BUFFER_APPEND_ERROR:if(!t.errorAction){var o;t.errorAction=this.getLevelSwitchAction(t,(o=t.level)!=null?o:i.loadLevel)}return;case _.INTERNAL_EXCEPTION:case _.BUFFER_APPENDING_ERROR:case _.BUFFER_FULL_ERROR:case _.LEVEL_SWITCH_ERROR:case _.BUFFER_STALLED_ERROR:case _.BUFFER_SEEK_OVER_HOLE:case _.BUFFER_NUDGE_ON_STALL:t.errorAction=Gt();return}t.type===W.KEY_SYSTEM_ERROR&&(t.levelRetry=!1,t.errorAction=Gt())}getPlaylistRetryOrSwitchAction(e,t){const s=this.hls,i=qr(s.config.playlistLoadPolicy,e),r=this.playlistError++;if(Ks(i,r,Gs(e),e.response))return{action:Re.RetryRequest,flags:Ue.None,retryConfig:i,retryCount:r};const o=this.getLevelSwitchAction(e,t);return i&&(o.retryConfig=i,o.retryCount=r),o}getFragRetryOrSwitchAction(e){const t=this.hls,s=this.getVariantLevelIndex(e.frag),i=t.levels[s],{fragLoadPolicy:r,keyLoadPolicy:n}=t.config,o=qr(Aa(e)?n:r,e),c=t.levels.reduce((h,u)=>h+u.fragmentError,0);if(i&&(e.details!==_.FRAG_GAP&&i.fragmentError++,!Ia(e)&&Ks(o,c,Gs(e),e.response)))return{action:Re.RetryRequest,flags:Ue.None,retryConfig:o,retryCount:c};const l=this.getLevelSwitchAction(e,s);return o&&(l.retryConfig=o,l.retryCount=c),l}getLevelSwitchAction(e,t){const s=this.hls;t==null&&(t=s.loadLevel);const i=this.hls.levels[t];if(i){var r,n;const l=e.details;i.loadError++,l===_.BUFFER_APPEND_ERROR&&i.fragmentError++;let h=-1;const{levels:u,loadLevel:d,minAutoLevel:g,maxAutoLevel:f}=s;!s.autoLevelEnabled&&!s.config.preserveManualLevelOnError&&(s.loadLevel=-1);const p=(r=e.frag)==null?void 0:r.type,E=(p===Y.AUDIO&&l===_.FRAG_PARSING_ERROR||e.sourceBufferName==="audio"&&(l===_.BUFFER_ADD_CODEC_ERROR||l===_.BUFFER_APPEND_ERROR))&&u.some(({audioCodec:D})=>i.audioCodec!==D),T=e.sourceBufferName==="video"&&(l===_.BUFFER_ADD_CODEC_ERROR||l===_.BUFFER_APPEND_ERROR)&&u.some(({codecSet:D,audioCodec:A})=>i.codecSet!==D&&i.audioCodec===A),{type:S,groupId:x}=(n=e.context)!=null?n:{};for(let D=u.length;D--;){const A=(D+d)%u.length;if(A!==d&&A>=g&&A<=f&&u[A].loadError===0){var o,c;const L=u[A];if(l===_.FRAG_GAP&&p===Y.MAIN&&e.frag){const R=u[A].details;if(R){const I=Pt(e.frag,R.fragments,e.frag.start);if(I!=null&&I.gap)continue}}else{if(S===te.AUDIO_TRACK&&L.hasAudioGroup(x)||S===te.SUBTITLE_TRACK&&L.hasSubtitleGroup(x))continue;if(p===Y.AUDIO&&(o=i.audioGroups)!=null&&o.some(R=>L.hasAudioGroup(R))||p===Y.SUBTITLE&&(c=i.subtitleGroups)!=null&&c.some(R=>L.hasSubtitleGroup(R))||E&&i.audioCodec===L.audioCodec||T&&i.codecSet===L.codecSet||!E&&i.codecSet!==L.codecSet)continue}h=A;break}}if(h>-1&&s.loadLevel!==h)return e.levelRetry=!0,this.playlistError=0,{action:Re.SendAlternateToPenaltyBox,flags:Ue.None,nextAutoLevel:h}}return{action:Re.SendAlternateToPenaltyBox,flags:Ue.MoveAllAlternatesMatchingHost}}onErrorOut(e,t){var s;switch((s=t.errorAction)==null?void 0:s.action){case Re.DoNothing:break;case Re.SendAlternateToPenaltyBox:this.sendAlternateToPenaltyBox(t),!t.errorAction.resolved&&t.details!==_.FRAG_GAP?t.fatal=!0:/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError());break}if(t.fatal){this.hls.stopLoad();return}}sendAlternateToPenaltyBox(e){const t=this.hls,s=e.errorAction;if(!s)return;const{flags:i}=s,r=s.nextAutoLevel;switch(i){case Ue.None:this.switchLevel(e,r);break;case Ue.MoveAllAlternatesMatchingHDCP:{const c=this.getVariantLevelIndex(e.frag),l=t.levels[c],h=l?.attrs["HDCP-LEVEL"];if(s.hdcpLevel=h,h==="NONE")this.warn("HDCP policy resticted output with HDCP-LEVEL=NONE");else if(h){t.maxHdcpLevel=Fi[Fi.indexOf(h)-1],s.resolved=!0,this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`);break}}case Ue.MoveAllAlternatesMatchingKey:{const c=e.decryptdata;if(c){const l=this.hls.levels,h=l.length;for(let d=h;d--;)if(this.variantHasKey(l[d],c)){var n,o;this.log(`Banned key found in level ${d} (${l[d].bitrate}bps) or audio group "${(n=l[d].audioGroups)==null?void 0:n.join(",")}" (${(o=e.frag)==null?void 0:o.type} fragment) ${be(c.keyId||[])}`),l[d].fragmentError++,l[d].loadError++,this.log(`Removing level ${d} with key error (${e.error})`),this.hls.removeLevel(d)}const u=e.frag;if(this.hls.levels.length{const c=this.fragments[o];if(!c||n>=c.body.sn)return;if(!c.buffered&&(!c.loaded||r)){c.body.type===s&&this.removeFragment(c.body);return}const l=c.range[e];if(l){if(l.time.length===0){this.removeFragment(c.body);return}l.time.some(h=>{const u=!this.isTimeBuffered(h.startPTS,h.endPTS,t);return u&&this.removeFragment(c.body),u})}})}detectPartialFragments(e){const t=this.timeRanges;if(!t||e.frag.sn==="initSegment")return;const s=e.frag,i=Ft(s),r=this.fragments[i];if(!r||r.buffered&&s.gap)return;const n=!s.relurl;Object.keys(t).forEach(o=>{const c=s.elementaryStreams[o];if(!c)return;const l=t[o],h=n||c.partial===!0;r.range[o]=this.getBufferedTimes(s,e.part,h,l)}),r.loaded=null,Object.keys(r.range).length?(this.bufferedEnd(r,s),fs(r)||this.removeParts(s.sn-1,s.type)):this.removeFragment(r.body)}bufferedEnd(e,t){e.buffered=!0,(e.body.endList=t.endList||e.body.endList)&&(this.endListFragments[e.body.type]=e)}removeParts(e,t){const s=this.activePartLists[t];s&&(this.activePartLists[t]=Xr(s,i=>i.fragment.sn>=e))}fragBuffered(e,t){const s=Ft(e);let i=this.fragments[s];!i&&t&&(i=this.fragments[s]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),i&&(i.loaded=null,this.bufferedEnd(i,e))}getBufferedTimes(e,t,s,i){const r={time:[],partial:s},n=e.start,o=e.end,c=e.minEndPTS||o,l=e.maxStartPTS||n;for(let h=0;h=u&&c<=d){r.time.push({startPTS:Math.max(n,i.start(h)),endPTS:Math.min(o,i.end(h))});break}else if(nu){const g=Math.max(n,i.start(h)),f=Math.min(o,i.end(h));f>g&&(r.partial=!0,r.time.push({startPTS:g,endPTS:f}))}else if(o<=u)break}return r}getPartialFragment(e){let t=null,s,i,r,n=0;const{bufferPadding:o,fragments:c}=this;return Object.keys(c).forEach(l=>{const h=c[l];h&&fs(h)&&(i=h.body.start-o,r=h.body.end+o,e>=i&&e<=r&&(s=Math.min(e-i,r-e),n<=s&&(t=h.body,n=s)))}),t}isEndListAppended(e){const t=this.endListFragments[e];return t!==void 0&&(t.buffered||fs(t))}getState(e){const t=Ft(e),s=this.fragments[t];return s?s.buffered?fs(s)?Ie.PARTIAL:Ie.OK:Ie.APPENDING:Ie.NOT_LOADED}isTimeBuffered(e,t,s){let i,r;for(let n=0;n=i&&t<=r)return!0;if(t<=i)return!1}return!1}onManifestLoading(){this.removeAllFragments()}onFragLoaded(e,t){if(t.frag.sn==="initSegment"||t.frag.bitrateTest)return;const s=t.frag,i=t.part?null:t,r=Ft(s);this.fragments[r]={body:s,appendedPTS:null,loaded:i,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:s,part:i,timeRanges:r,type:n}=t;if(s.sn==="initSegment")return;const o=s.type;if(i){let l=this.activePartLists[o];l||(this.activePartLists[o]=l=[]),l.push(i)}this.timeRanges=r;const c=r[n];this.detectEvictedFragments(n,c,o,i)}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=Ft(e);return!!this.fragments[t]}hasFragments(e){const{fragments:t}=this,s=Object.keys(t);if(!e)return s.length>0;for(let i=s.length;i--;){const r=t[s[i]];if(r?.body.type===e)return!0}return!1}hasParts(e){var t;return!!((t=this.activePartLists[e])!=null&&t.length)}removeFragmentsInRange(e,t,s,i,r){i&&!this.hasGaps||Object.keys(this.fragments).forEach(n=>{const o=this.fragments[n];if(!o)return;const c=o.body;c.type!==s||i&&!c.gap||c.starte&&(o.buffered||r)&&this.removeFragment(c)})}removeFragment(e){const t=Ft(e);e.clearElementaryStreamInfo();const s=this.activePartLists[e.type];if(s){const i=e.sn;this.activePartLists[e.type]=Xr(s,r=>r.fragment.sn!==i)}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){var e;this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1;const t=(e=this.hls)==null||(e=e.latestLevelDetails)==null?void 0:e.partList;t&&t.forEach(s=>s.clearElementaryStreamInfo())}}function fs(a){var e,t,s;return a.buffered&&!!(a.body.gap||(e=a.range.video)!=null&&e.partial||(t=a.range.audio)!=null&&t.partial||(s=a.range.audiovideo)!=null&&s.partial)}function Ft(a){return`${a.type}_${a.level}_${a.sn}`}function Xr(a,e){return a.filter(t=>{const s=e(t);return s||t.clearElementaryStreamInfo(),s})}var Lt={cbc:0,ctr:1};class Ac{constructor(e,t,s){this.subtle=void 0,this.aesIV=void 0,this.aesMode=void 0,this.subtle=e,this.aesIV=t,this.aesMode=s}decrypt(e,t){switch(this.aesMode){case Lt.cbc:return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e);case Lt.ctr:return this.subtle.decrypt({name:"AES-CTR",counter:this.aesIV,length:64},t,e);default:throw new Error(`[AESCrypto] invalid aes mode ${this.aesMode}`)}}}function Ic(a){const e=a.byteLength,t=e&&new DataView(a.buffer).getUint8(e-1);return t?a.slice(0,e-t):a}class Lc{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),s=new Uint32Array(4);for(let i=0;i<4;i++)s[i]=t.getUint32(i*4);return s}initTable(){const e=this.sBox,t=this.invSBox,s=this.subMix,i=s[0],r=s[1],n=s[2],o=s[3],c=this.invSubMix,l=c[0],h=c[1],u=c[2],d=c[3],g=new Uint32Array(256);let f=0,p=0,y=0;for(y=0;y<256;y++)y<128?g[y]=y<<1:g[y]=y<<1^283;for(y=0;y<256;y++){let E=p^p<<1^p<<2^p<<3^p<<4;E=E>>>8^E&255^99,e[f]=E,t[E]=f;const v=g[f],T=g[v],S=g[T];let x=g[E]*257^E*16843008;i[f]=x<<24|x>>>8,r[f]=x<<16|x>>>16,n[f]=x<<8|x>>>24,o[f]=x,x=S*16843009^T*65537^v*257^f*16843008,l[E]=x<<24|x>>>8,h[E]=x<<16|x>>>16,u[E]=x<<8|x>>>24,d[E]=x,f?(f=v^g[g[g[S^v]]],p^=g[g[p]]):f=p=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let s=!0,i=0;for(;i{const o=ArrayBuffer.isView(e)?e:new Uint8Array(e);this.softwareDecrypt(o,t,s,i);const c=this.flush();c?r(c.buffer):n(new Error("[softwareDecrypt] Failed to decrypt data"))}):this.webCryptoDecrypt(new Uint8Array(e),t,s,i)}softwareDecrypt(e,t,s,i){const{currentIV:r,currentResult:n,remainderData:o}=this;if(i!==Lt.cbc||t.byteLength!==16)return ne.warn("SoftwareDecrypt: can only handle AES-128-CBC"),null;this.logOnce("JS AES decrypt"),o&&(e=He(o,e),this.remainderData=null);const c=this.getValidChunk(e);if(!c.length)return null;r&&(s=r);let l=this.softwareDecrypter;l||(l=this.softwareDecrypter=new Lc),l.expandKey(t);const h=n;return this.currentResult=l.decrypt(c.buffer,0,s),this.currentIV=c.slice(-16).buffer,h||null}webCryptoDecrypt(e,t,s,i){if(this.key!==t||!this.fastAesKey){if(!this.subtle)return Promise.resolve(this.onWebCryptoError(e,t,s,i));this.key=t,this.fastAesKey=new Rc(this.subtle,t,i)}return this.fastAesKey.expandKey().then(r=>this.subtle?(this.logOnce("WebCrypto AES decrypt"),new Ac(this.subtle,new Uint8Array(s),i).decrypt(e.buffer,r)):Promise.reject(new Error("web crypto not initialized"))).catch(r=>(ne.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${r.name}: ${r.message}`),this.onWebCryptoError(e,t,s,i)))}onWebCryptoError(e,t,s,i){const r=this.enableSoftwareAES;if(r){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,s,i);const n=this.flush();if(n)return n.buffer}throw new Error("WebCrypto"+(r?" and softwareDecrypt":"")+": failed to decrypt data")}getValidChunk(e){let t=e;const s=e.length-e.length%_c;return s!==e.length&&(t=e.slice(0,s),this.remainderData=e.slice(s)),t}logOnce(e){this.logEnabled&&(ne.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const zr=Math.pow(2,17);class Dc{constructor(e){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=e}destroy(){this.loader&&(this.loader.destroy(),this.loader=null)}abort(){this.loader&&this.loader.abort()}load(e,t){const s=e.url;if(!s)return Promise.reject(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_ERROR,fatal:!1,frag:e,error:new Error(`Fragment does not have a ${s?"part list":"url"}`),networkDetails:null}));this.abort();const i=this.config,r=i.fLoader,n=i.loader;return new Promise((o,c)=>{if(this.loader&&this.loader.destroy(),e.gap)if(e.tagList.some(f=>f[0]==="GAP")){c(Zr(e));return}else e.gap=!1;const l=this.loader=r?new r(i):new n(i),h=Qr(e);e.loader=l;const u=jr(i.fragLoadPolicy.default),d={loadPolicy:u,timeout:u.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:e.sn==="initSegment"?1/0:zr};e.stats=l.stats;const g={onSuccess:(f,p,y,E)=>{this.resetLoader(e,l);let v=f.data;y.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(v.slice(0,16)),v=v.slice(16)),o({frag:e,part:null,payload:v,networkDetails:E})},onError:(f,p,y,E)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:re({url:s,data:void 0},f),error:new Error(`HTTP Error ${f.code} ${f.text}`),networkDetails:y,stats:E}))},onAbort:(f,p,y)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:y,stats:f}))},onTimeout:(f,p,y)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${d.timeout}ms`),networkDetails:y,stats:f}))}};t&&(g.onProgress=(f,p,y,E)=>t({frag:e,part:null,payload:y,networkDetails:E})),l.load(h,d,g)})}loadPart(e,t,s){this.abort();const i=this.config,r=i.fLoader,n=i.loader;return new Promise((o,c)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap){c(Zr(e,t));return}const l=this.loader=r?new r(i):new n(i),h=Qr(e,t);e.loader=l;const u=jr(i.fragLoadPolicy.default),d={loadPolicy:u,timeout:u.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:zr};t.stats=l.stats,l.load(h,d,{onSuccess:(g,f,p,y)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const E={frag:e,part:t,payload:g.data,networkDetails:y};s(E),o(E)},onError:(g,f,p,y)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:re({url:h.url,data:void 0},g),error:new Error(`HTTP Error ${g.code} ${g.text}`),networkDetails:p,stats:y}))},onAbort:(g,f,p)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:p,stats:g}))},onTimeout:(g,f,p)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${d.timeout}ms`),networkDetails:p,stats:g}))}})})}updateStatsFromPart(e,t){const s=e.stats,i=t.stats,r=i.total;if(s.loaded+=i.loaded,r){const c=Math.round(e.duration/t.duration),l=Math.min(Math.round(s.loaded/r),c),u=(c-l)*Math.round(s.loaded/l);s.total=s.loaded+u}else s.total=Math.max(s.loaded,s.total);const n=s.loading,o=i.loading;n.start?n.first+=o.first-o.start:(n.start=o.start,n.first=o.first),n.end=o.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function Qr(a,e=null){const t=e||a,s={frag:a,part:e,responseType:"arraybuffer",url:t.url,headers:{},rangeStart:0,rangeEnd:0},i=t.byteRangeStartOffset,r=t.byteRangeEndOffset;if(K(i)&&K(r)){var n;let o=i,c=r;if(a.sn==="initSegment"&&Cc((n=a.decryptdata)==null?void 0:n.method)){const l=r-i;l%16&&(c=r+(16-l%16)),i!==0&&(s.resetIV=!0,o=i-16)}s.rangeStart=o,s.rangeEnd=c}return s}function Zr(a,e){const t=new Error(`GAP ${a.gap?"tag":"attribute"} found`),s={type:W.MEDIA_ERROR,details:_.FRAG_GAP,fatal:!1,frag:a,error:t,networkDetails:null};return e&&(s.part=e),(e||a).stats.aborted=!0,new ht(s)}function Cc(a){return a==="AES-128"||a==="AES-256"}class ht extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class La extends Ye{constructor(e,t){super(e,t),this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}destroy(){this.onHandlerDestroying(),this.onHandlerDestroyed()}onHandlerDestroying(){this.clearNextTick(),this.clearInterval()}onHandlerDestroyed(){}hasInterval(){return!!this._tickInterval}hasNextTick(){return!!this._tickTimer}setInterval(e){return this._tickInterval?!1:(this._tickCallCount=0,this._tickInterval=self.setInterval(this._boundTick,e),!0)}clearInterval(){return this._tickInterval?(self.clearInterval(this._tickInterval),this._tickInterval=null,!0):!1}clearNextTick(){return this._tickTimer?(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0):!1}tick(){this._tickCallCount++,this._tickCallCount===1&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}class lr{constructor(e,t,s,i=0,r=-1,n=!1){this.level=void 0,this.sn=void 0,this.part=void 0,this.id=void 0,this.size=void 0,this.partial=void 0,this.transmuxing=gs(),this.buffering={audio:gs(),video:gs(),audiovideo:gs()},this.level=e,this.sn=t,this.id=s,this.size=i,this.part=r,this.partial=n}}function gs(){return{start:0,executeStart:0,executeEnd:0,end:0}}const Jr={length:0,start:()=>0,end:()=>0};class Q{static isBuffered(e,t){if(e){const s=Q.getBuffered(e);for(let i=s.length;i--;)if(t>=s.start(i)&&t<=s.end(i))return!0}return!1}static bufferedRanges(e){if(e){const t=Q.getBuffered(e);return Q.timeRangesToArray(t)}return[]}static timeRangesToArray(e){const t=[];for(let s=0;s1&&e.sort((h,u)=>h.start-u.start||u.end-h.end);let i=-1,r=[];if(s)for(let h=0;h=e[h].start&&t<=e[h].end&&(i=h);const u=r.length;if(u){const d=r[u-1].end;e[h].start-dd&&(r[u-1].end=e[h].end):r.push(e[h])}else r.push(e[h])}else r=e;let n=0,o,c=t,l=t;for(let h=0;h=u&&t<=d&&(i=h),t+s>=u&&t{const i=s.substring(2,s.length-1),r=t?.[i];return r===void 0?(a.playlistParsingError||(a.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${i}"`)),s):r})}return e}function tn(a,e,t){let s=a.variableList;s||(a.variableList=s={});let i,r;if("QUERYPARAM"in e){i=e.QUERYPARAM;try{const n=new self.URL(t).searchParams;if(n.has(i))r=n.get(i);else throw new Error(`"${i}" does not match any query parameter in URI: "${t}"`)}catch(n){a.playlistParsingError||(a.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${n.message}`))}}else i=e.NAME,r=e.VALUE;i in s?a.playlistParsingError||(a.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${i}"`)):s[i]=r||""}function Pc(a,e,t){const s=e.IMPORT;if(t&&s in t){let i=a.variableList;i||(a.variableList=i={}),i[s]=t[s]}else a.playlistParsingError||(a.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}const kc=/^(\d+)x(\d+)$/,sn=/(.+?)=(".*?"|.*?)(?:,|$)/g;class fe{constructor(e,t){typeof e=="string"&&(e=fe.parseAttrList(e,t)),ae(this,e)}get clientAttrs(){return Object.keys(this).filter(e=>e.substring(0,2)==="X-")}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(t.length&1?"0":"")+t;const s=new Uint8Array(t.length/2);for(let i=0;iNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const s=this[e];return s?parseFloat(s):t}enumeratedString(e){return this[e]}enumeratedStringList(e,t){const s=this[e];return(s?s.split(/[ ,]+/):[]).reduce((i,r)=>(i[r.toLowerCase()]=!0,i),t)}bool(e){return this[e]==="YES"}decimalResolution(e){const t=kc.exec(this[e]);if(t!==null)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e,t){let s;const i={};for(sn.lastIndex=0;(s=sn.exec(e))!==null;){const n=s[1].trim();let o=s[2];const c=o.indexOf('"')===0&&o.lastIndexOf('"')===o.length-1;let l=!1;if(c)o=o.slice(1,-1);else switch(n){case"IV":case"SCTE35-CMD":case"SCTE35-IN":case"SCTE35-OUT":l=!0}if(t&&(c||l))o=Ni(t,o);else if(!l&&!c)switch(n){case"CLOSED-CAPTIONS":if(o==="NONE")break;case"ALLOWED-CPC":case"CLASS":case"ASSOC-LANGUAGE":case"AUDIO":case"BYTERANGE":case"CHANNELS":case"CHARACTERISTICS":case"CODECS":case"DATA-ID":case"END-DATE":case"GROUP-ID":case"ID":case"IMPORT":case"INSTREAM-ID":case"KEYFORMAT":case"KEYFORMATVERSIONS":case"LANGUAGE":case"NAME":case"PATHWAY-ID":case"QUERYPARAM":case"RECENTLY-REMOVED-DATERANGES":case"SERVER-URI":case"STABLE-RENDITION-ID":case"STABLE-VARIANT-ID":case"START-DATE":case"SUBTITLES":case"SUPPLEMENTAL-CODECS":case"URI":case"VALUE":case"VIDEO":case"X-ASSET-LIST":case"X-ASSET-URI":ne.warn(`${e}: attribute ${n} is missing quotes`)}i[n]=o}return i}}const wc="com.apple.hls.interstitial";function Oc(a){return a!=="ID"&&a!=="CLASS"&&a!=="CUE"&&a!=="START-DATE"&&a!=="DURATION"&&a!=="END-DATE"&&a!=="END-ON-NEXT"}function Fc(a){return a==="SCTE35-OUT"||a==="SCTE35-IN"||a==="SCTE35-CMD"}class ba{constructor(e,t,s=0){var i;if(this.attr=void 0,this.tagAnchor=void 0,this.tagOrder=void 0,this._startDate=void 0,this._endDate=void 0,this._dateAtEnd=void 0,this._cue=void 0,this._badValueForSameId=void 0,this.tagAnchor=t?.tagAnchor||null,this.tagOrder=(i=t?.tagOrder)!=null?i:s,t){const r=t.attr;for(const n in r)if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==r[n]){ne.warn(`DATERANGE tag attribute: "${n}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=n;break}e=ae(new fe({}),r,e)}if(this.attr=e,t?(this._startDate=t._startDate,this._cue=t._cue,this._endDate=t._endDate,this._dateAtEnd=t._dateAtEnd):this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const r=t?.endDate||new Date(this.attr["END-DATE"]);K(r.getTime())&&(this._endDate=r)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get cue(){const e=this._cue;return e===void 0?this._cue=this.attr.enumeratedStringList(this.attr.CUE?"CUE":"X-CUE",{pre:!1,post:!1,once:!1}):e}get startTime(){const{tagAnchor:e}=this;return e===null||e.programDateTime===null?(ne.warn(`Expected tagAnchor Fragment with PDT set for DateRange "${this.id}": ${e}`),NaN):e.start+(this.startDate.getTime()-e.programDateTime)/1e3}get startDate(){return this._startDate}get endDate(){const e=this._endDate||this._dateAtEnd;if(e)return e;const t=this.duration;return t!==null?this._dateAtEnd=new Date(this._startDate.getTime()+t*1e3):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(K(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isInterstitial(){return this.class===wc}get isValid(){return!!this.id&&!this._badValueForSameId&&K(this.startDate.getTime())&&(this.duration===null||this.duration>=0)&&(!this.endOnNext||!!this.class)&&(!this.attr.CUE||!this.cue.pre&&!this.cue.post||this.cue.pre!==this.cue.post)&&(!this.isInterstitial||"X-ASSET-URI"in this.attr||"X-ASSET-LIST"in this.attr)}}const Mc=10;class Nc{constructor(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.dateRangeTagCount=0,this.live=!0,this.requestScheduled=-1,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.appliedTimelineOffset=void 0,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}reloaded(e){if(!e){this.advanced=!0,this.updated=!0;return}const t=this.lastPartSn-e.lastPartSn,s=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!s||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||t===0&&s>0,this.updated||this.advanced?this.misses=Math.floor(e.misses*.6):this.misses=e.misses+1}hasKey(e){return this.encryptedFragments.some(t=>{let s=t.decryptdata;return s||(t.setKeyFormat(e.keyFormat),s=t.decryptdata),!!s&&e.matches(s)})}get hasProgramDateTime(){return this.fragments.length?K(this.fragments[this.fragments.length-1].programDateTime):!1}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||Mc}get drift(){const e=this.driftEndTime-this.driftStartTime;return e>0?(this.driftEnd-this.driftStart)*1e3/e:1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return(e=this.partList)!=null&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){return this.fragments.length?this.fragments[this.fragments.length-1].end:0}get fragmentStart(){return this.fragments.length?this.fragments[0].start:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return(e=this.partList)!=null&&e.length?this.partList[this.partList.length-1].index:-1}get maxPartIndex(){const e=this.partList;if(e){const t=this.lastPartIndex;if(t!==-1){for(let s=e.length;s--;)if(e[s].index>t)return e[s].index;return t}}return 0}get lastPartSn(){var e;return(e=this.partList)!=null&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}get expired(){if(this.live&&this.age&&this.misses<3){const e=this.partEnd-this.fragmentStart;return this.age>Math.max(e,this.totalduration)+this.levelTargetDuration}return!1}}function Vs(a,e){return a.length===e.length?!a.some((t,s)=>t!==e[s]):!1}function rn(a,e){return!a&&!e?!0:!a||!e?!1:Vs(a,e)}function Kt(a){return a==="AES-128"||a==="AES-256"||a==="AES-256-CTR"}function cr(a){switch(a){case"AES-128":case"AES-256":return Lt.cbc;case"AES-256-CTR":return Lt.ctr;default:throw new Error(`invalid full segment method ${a}`)}}function hr(a){return Uint8Array.from(atob(a),e=>e.charCodeAt(0))}function Bi(a){return Uint8Array.from(unescape(encodeURIComponent(a)),e=>e.charCodeAt(0))}function Bc(a){const e=Bi(a).subarray(0,16),t=new Uint8Array(16);return t.set(e,16-e.length),t}function _a(a){const e=function(s,i,r){const n=s[i];s[i]=s[r],s[r]=n};e(a,0,3),e(a,1,2),e(a,4,5),e(a,6,7)}function Da(a){const e=a.split(":");let t=null;if(e[0]==="data"&&e.length===2){const s=e[1].split(";"),i=s[s.length-1].split(",");if(i.length===2){const r=i[0]==="base64",n=i[1];r?(s.splice(-1,1),t=hr(n)):t=Bc(n)}}return t}const Hs=typeof self<"u"?self:void 0;var ge={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},_e={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.streamingkeydelivery",PLAYREADY:"com.microsoft.playready",WIDEVINE:"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"};function Ds(a){switch(a){case _e.FAIRPLAY:return ge.FAIRPLAY;case _e.PLAYREADY:return ge.PLAYREADY;case _e.WIDEVINE:return ge.WIDEVINE;case _e.CLEARKEY:return ge.CLEARKEY}}function li(a){switch(a){case ge.FAIRPLAY:return _e.FAIRPLAY;case ge.PLAYREADY:return _e.PLAYREADY;case ge.WIDEVINE:return _e.WIDEVINE;case ge.CLEARKEY:return _e.CLEARKEY}}function Qt(a){const{drmSystems:e,widevineLicenseUrl:t}=a,s=e?[ge.FAIRPLAY,ge.WIDEVINE,ge.PLAYREADY,ge.CLEARKEY].filter(i=>!!e[i]):[];return!s[ge.WIDEVINE]&&t&&s.push(ge.WIDEVINE),s}const Ca=(function(a){return Hs!=null&&(a=Hs.navigator)!=null&&a.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null})();function Uc(a,e,t,s){let i;switch(a){case ge.FAIRPLAY:i=["cenc","sinf"];break;case ge.WIDEVINE:case ge.PLAYREADY:i=["cenc"];break;case ge.CLEARKEY:i=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${a}`)}return $c(i,e,t,s)}function $c(a,e,t,s){return[{initDataTypes:a,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:e.map(r=>({contentType:`audio/mp4; codecs=${r}`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null})),videoCapabilities:t.map(r=>({contentType:`video/mp4; codecs=${r}`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null}))}]}function Gc(a){var e;return!!a&&(a.sessionType==="persistent-license"||!!((e=a.sessionTypes)!=null&&e.some(t=>t==="persistent-license")))}function Pa(a){const e=new Uint16Array(a.buffer,a.byteOffset,a.byteLength/2),t=String.fromCharCode.apply(null,Array.from(e)),s=t.substring(t.indexOf("<"),t.length),n=new DOMParser().parseFromString(s,"text/xml").getElementsByTagName("KID")[0];if(n){const o=n.childNodes[0]?n.childNodes[0].nodeValue:n.getAttribute("VALUE");if(o){const c=hr(o).subarray(0,16);return _a(c),c}}return null}let Mt={};class At{static clearKeyUriToKeyIdMap(){Mt={}}static setKeyIdForUri(e,t){Mt[e]=t}static addKeyIdForUri(e){const t=Object.keys(Mt).length%Number.MAX_SAFE_INTEGER,s=new Uint8Array(16);return new DataView(s.buffer,12,4).setUint32(0,t),Mt[e]=s,s}constructor(e,t,s,i=[1],r=null,n){this.uri=void 0,this.method=void 0,this.keyFormat=void 0,this.keyFormatVersions=void 0,this.encrypted=void 0,this.isCommonEncryption=void 0,this.iv=null,this.key=null,this.keyId=null,this.pssh=null,this.method=e,this.uri=t,this.keyFormat=s,this.keyFormatVersions=i,this.iv=r,this.encrypted=e?e!=="NONE":!1,this.isCommonEncryption=this.encrypted&&!Kt(e),n!=null&&n.startsWith("0x")&&(this.keyId=new Uint8Array(na(n)))}matches(e){return e.uri===this.uri&&e.method===this.method&&e.encrypted===this.encrypted&&e.keyFormat===this.keyFormat&&Vs(e.keyFormatVersions,this.keyFormatVersions)&&rn(e.iv,this.iv)&&rn(e.keyId,this.keyId)}isSupported(){if(this.method){if(Kt(this.method)||this.method==="NONE")return!0;if(this.keyFormat==="identity")return this.method==="SAMPLE-AES";switch(this.keyFormat){case _e.FAIRPLAY:case _e.WIDEVINE:case _e.PLAYREADY:case _e.CLEARKEY:return["SAMPLE-AES","SAMPLE-AES-CENC","SAMPLE-AES-CTR"].indexOf(this.method)!==-1}}return!1}getDecryptData(e,t){if(!this.encrypted||!this.uri)return null;if(Kt(this.method)){let r=this.iv;return r||(typeof e!="number"&&(ne.warn(`missing IV for initialization segment with method="${this.method}" - compliance issue`),e=0),r=Vc(e)),new At(this.method,this.uri,"identity",this.keyFormatVersions,r)}if(this.keyId){const r=Mt[this.uri];if(r&&!Vs(this.keyId,r)&&At.setKeyIdForUri(this.uri,this.keyId),this.pssh)return this}const s=Da(this.uri);if(s)switch(this.keyFormat){case _e.WIDEVINE:if(this.pssh=s,!this.keyId){const r=Wl(s.buffer);if(r.length){var i;const n=r[0];this.keyId=(i=n.kids)!=null&&i.length?n.kids[0]:null}}this.keyId||(this.keyId=nn(t));break;case _e.PLAYREADY:{const r=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Yl(r,null,s),this.keyId=Pa(s);break}default:{let r=s.subarray(0,16);if(r.length!==16){const n=new Uint8Array(16);n.set(r,16-r.length),r=n}this.keyId=r;break}}if(!this.keyId||this.keyId.byteLength!==16){let r;r=Kc(t),r||(r=nn(t),r||(r=Mt[this.uri])),r&&(this.keyId=r,At.setKeyIdForUri(this.uri,r))}return this}}function Kc(a){const e=a?.[_e.WIDEVINE];return e?e.keyId:null}function nn(a){const e=a?.[_e.PLAYREADY];if(e){const t=Da(e.uri);if(t)return Pa(t)}return null}function Vc(a){const e=new Uint8Array(16);for(let t=12;t<16;t++)e[t]=a>>8*(15-t)&255;return e}const an=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,on=/#EXT-X-MEDIA:(.*)/g,Hc=/^#EXT(?:INF|-X-TARGETDURATION):/m,ci=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[^\r\n]*)/.source,/#.*/.source].join("|"),"g"),Yc=new RegExp([/#EXT-X-(PROGRAM-DATE-TIME|BYTERANGE|DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|"));class st{static findGroup(e,t){for(let s=0;s0&&r.length({id:l.attrs.AUDIO,audioCodec:l.audioCodec})),SUBTITLES:n.map(l=>({id:l.attrs.SUBTITLES,textCodec:l.textCodec})),"CLOSED-CAPTIONS":[]};let c=0;for(on.lastIndex=0;(i=on.exec(e))!==null;){const l=new fe(i[1],s),h=l.TYPE;if(h){const u=o[h],d=r[h]||[];r[h]=d;const g=l.LANGUAGE,f=l["ASSOC-LANGUAGE"],p=l.CHANNELS,y=l.CHARACTERISTICS,E=l["INSTREAM-ID"],v={attrs:l,bitrate:0,id:c++,groupId:l["GROUP-ID"]||"",name:l.NAME||g||"",type:h,default:l.bool("DEFAULT"),autoselect:l.bool("AUTOSELECT"),forced:l.bool("FORCED"),lang:g,url:l.URI?st.resolve(l.URI,t):""};if(f&&(v.assocLang=f),p&&(v.channels=p),y&&(v.characteristics=y),E&&(v.instreamId=E),u!=null&&u.length){const T=st.findGroup(u,v.groupId)||u[0];un(v,T,"audioCodec"),un(v,T,"textCodec")}d.push(v)}}return r}static parseLevelPlaylist(e,t,s,i,r,n){var o;const c={url:t},l=new Nc(t),h=l.fragments,u=[];let d=null,g=0,f=0,p=0,y=0,E=0,v=null,T=new ni(i,c),S,x,D,A=-1,L=!1,R=null,I;if(ci.lastIndex=0,l.m3u8=e,l.hasVariableRefs=en(e),((o=ci.exec(e))==null?void 0:o[0])!=="#EXTM3U")return l.playlistParsingError=new Error("Missing format identifier #EXTM3U"),l;for(;(S=ci.exec(e))!==null;){L&&(L=!1,T=new ni(i,c),T.playlistOffset=p,T.setStart(p),T.sn=g,T.cc=y,E&&(T.bitrate=E),T.level=s,d&&(T.initSegment=d,d.rawProgramDateTime&&(T.rawProgramDateTime=d.rawProgramDateTime,d.rawProgramDateTime=null),R&&(T.setByteRange(R),R=null)));const H=S[1];if(H){T.duration=parseFloat(H);const O=(" "+S[2]).slice(1);T.title=O||null,T.tagList.push(O?["INF",H,O]:["INF",H])}else if(S[3]){if(K(T.duration)){T.playlistOffset=p,T.setStart(p),D&&fn(T,D,l),T.sn=g,T.level=s,T.cc=y,h.push(T);const O=(" "+S[3]).slice(1);T.relurl=Ni(l,O),Ui(T,v,u),v=T,p+=T.duration,g++,f=0,L=!0}}else{if(S=S[0].match(Yc),!S){ne.warn("No matches on slow regex match for level playlist!");continue}for(x=1;x0&&gn(l,O,S),g=l.startSN=parseInt(w);break;case"SKIP":{l.skippedSegments&<(l,O,S);const F=new fe(w,l),N=F.decimalInteger("SKIPPED-SEGMENTS");if(K(N)){l.skippedSegments+=N;for(let B=N;B--;)h.push(null);g+=N}const V=F.enumeratedString("RECENTLY-REMOVED-DATERANGES");V&&(l.recentlyRemovedDateranges=(l.recentlyRemovedDateranges||[]).concat(V.split(" ")));break}case"TARGETDURATION":l.targetduration!==0&<(l,O,S),l.targetduration=Math.max(parseInt(w),1);break;case"VERSION":l.version!==null&<(l,O,S),l.version=parseInt(w);break;case"INDEPENDENT-SEGMENTS":break;case"ENDLIST":l.live||lt(l,O,S),l.live=!1;break;case"#":(w||k)&&T.tagList.push(k?[w,k]:[w]);break;case"DISCONTINUITY":y++,T.tagList.push(["DIS"]);break;case"GAP":T.gap=!0,T.tagList.push([O]);break;case"BITRATE":T.tagList.push([O,w]),E=parseInt(w)*1e3,K(E)?T.bitrate=E:E=0;break;case"DATERANGE":{const F=new fe(w,l),N=new ba(F,l.dateRanges[F.ID],l.dateRangeTagCount);l.dateRangeTagCount++,N.isValid||l.skippedSegments?l.dateRanges[N.id]=N:ne.warn(`Ignoring invalid DATERANGE tag: "${w}"`),T.tagList.push(["EXT-X-DATERANGE",w]);break}case"DEFINE":{{const F=new fe(w,l);"IMPORT"in F?Pc(l,F,n):tn(l,F,t)}break}case"DISCONTINUITY-SEQUENCE":l.startCC!==0?lt(l,O,S):h.length>0&&gn(l,O,S),l.startCC=y=parseInt(w);break;case"KEY":{const F=ln(w,t,l);if(F.isSupported()){if(F.method==="NONE"){D=void 0;break}D||(D={});const N=D[F.keyFormat];N!=null&&N.matches(F)||(N&&(D=ae({},D)),D[F.keyFormat]=F)}else ne.warn(`[Keys] Ignoring unsupported EXT-X-KEY tag: "${w}"`);break}case"START":l.startTimeOffset=cn(w);break;case"MAP":{const F=new fe(w,l);if(T.duration){const N=new ni(i,c);dn(N,F,s,D),d=N,T.initSegment=d,d.rawProgramDateTime&&!T.rawProgramDateTime&&(T.rawProgramDateTime=d.rawProgramDateTime)}else{const N=T.byteRangeEndOffset;if(N){const V=T.byteRangeStartOffset;R=`${N-V}@${V}`}else R=null;dn(T,F,s,D),d=T,L=!0}d.cc=y;break}case"SERVER-CONTROL":{I&<(l,O,S),I=new fe(w),l.canBlockReload=I.bool("CAN-BLOCK-RELOAD"),l.canSkipUntil=I.optionalFloat("CAN-SKIP-UNTIL",0),l.canSkipDateRanges=l.canSkipUntil>0&&I.bool("CAN-SKIP-DATERANGES"),l.partHoldBack=I.optionalFloat("PART-HOLD-BACK",0),l.holdBack=I.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{l.partTarget&<(l,O,S);const F=new fe(w);l.partTarget=F.decimalFloatingPoint("PART-TARGET");break}case"PART":{let F=l.partList;F||(F=l.partList=[]);const N=f>0?F[F.length-1]:void 0,V=f++,B=new fe(w,l),U=new Pl(B,T,c,V,N);F.push(U),T.duration+=U.duration;break}case"PRELOAD-HINT":{const F=new fe(w,l);l.preloadHint=F;break}case"RENDITION-REPORT":{const F=new fe(w,l);l.renditionReports=l.renditionReports||[],l.renditionReports.push(F);break}default:ne.warn(`line parsed but not handled: ${S}`);break}}}v&&!v.relurl?(h.pop(),p-=v.duration,l.partList&&(l.fragmentHint=v)):l.partList&&(Ui(T,v,u),T.cc=y,l.fragmentHint=T,D&&fn(T,D,l)),l.targetduration||(l.playlistParsingError=new Error("Missing Target Duration"));const C=h.length,$=h[0],G=h[C-1];if(p+=l.skippedSegments*l.targetduration,p>0&&C&&G){l.averagetargetduration=p/C;const H=G.sn;l.endSN=H!=="initSegment"?H:0,l.live||(G.endList=!0),A>0&&(qc(h,A),$&&u.unshift($))}return l.fragmentHint&&(p+=l.fragmentHint.duration),l.totalduration=p,u.length&&l.dateRangeTagCount&&$&&ka(u,l),l.endCC=y,l}}function ka(a,e){let t=a.length;if(!t)if(e.hasProgramDateTime){const o=e.fragments[e.fragments.length-1];a.push(o),t++}else return;const s=a[t-1],i=e.live?1/0:e.totalduration,r=Object.keys(e.dateRanges);for(let o=r.length;o--;){const c=e.dateRanges[r[o]],l=c.startDate.getTime();c.tagAnchor=s.ref;for(let h=t;h--;){var n;if(((n=a[h])==null?void 0:n.sn)=o||s===0){var n;const c=(((n=t[s+1])==null?void 0:n.start)||i)-r.start;if(e<=o+c*1e3){const l=t[s].sn-a.startSN;if(l<0)return-1;const h=a.fragments;if(h.length>t.length){const d=(t[s+1]||h[h.length-1]).sn-a.startSN;for(let g=d;g>l;g--){const f=h[g].programDateTime;if(e>=f&&es);["video","audio","text"].forEach(s=>{const i=t.filter(r=>rr(r,s));i.length&&(e[`${s}Codec`]=i.map(r=>r.split("/")[0]).join(","),t=t.filter(r=>i.indexOf(r)===-1))}),e.unknownCodecs=t}function un(a,e,t){const s=e[t];s&&(a[t]=s)}function qc(a,e){let t=a[e];for(let s=e;s--;){const i=a[s];if(!i)return;i.programDateTime=t.programDateTime-i.duration*1e3,t=i}}function Ui(a,e,t){a.rawProgramDateTime?t.push(a):e!=null&&e.programDateTime&&(a.programDateTime=e.endProgramDateTime)}function dn(a,e,t,s){a.relurl=e.URI,e.BYTERANGE&&a.setByteRange(e.BYTERANGE),a.level=t,a.sn="initSegment",s&&(a.levelkeys=s),a.initSegment=null}function fn(a,e,t){a.levelkeys=e;const{encryptedFragments:s}=t;(!s.length||s[s.length-1].levelkeys!==e)&&Object.keys(e).some(i=>e[i].isCommonEncryption)&&s.push(a)}function lt(a,e,t){a.playlistParsingError=new Error(`#EXT-X-${e} must not appear more than once (${t[0]})`)}function gn(a,e,t){a.playlistParsingError=new Error(`#EXT-X-${e} must appear before the first Media Segment (${t[0]})`)}function hi(a,e){const t=e.startPTS;if(K(t)){let s=0,i;e.sn>a.sn?(s=t-a.start,i=a):(s=a.start-t,i=e),i.duration!==s&&i.setDuration(s)}else e.sn>a.sn?a.cc===e.cc&&a.minEndPTS?e.setStart(a.start+(a.minEndPTS-a.start)):e.setStart(a.start+a.duration):e.setStart(Math.max(a.start-e.duration,0))}function wa(a,e,t,s,i,r,n){s-t<=0&&(n.warn("Fragment should have a positive duration",e),s=t+e.duration,r=i+e.duration);let c=t,l=s;const h=e.startPTS,u=e.endPTS;if(K(h)){const E=Math.abs(h-t);a&&E>a.totalduration?n.warn(`media timestamps and playlist times differ by ${E}s for level ${e.level} ${a.url}`):K(e.deltaPTS)?e.deltaPTS=Math.max(E,e.deltaPTS):e.deltaPTS=E,c=Math.max(t,h),t=Math.min(t,h),i=e.startDTS!==void 0?Math.min(i,e.startDTS):i,l=Math.min(s,u),s=Math.max(s,u),r=e.endDTS!==void 0?Math.max(r,e.endDTS):r}const d=t-e.start;e.start!==0&&e.setStart(t),e.setDuration(s-e.start),e.startPTS=t,e.maxStartPTS=c,e.startDTS=i,e.endPTS=s,e.minEndPTS=l,e.endDTS=r;const g=e.sn;if(!a||ga.endSN)return 0;let f;const p=g-a.startSN,y=a.fragments;for(y[p]=e,f=p;f>0;f--)hi(y[f],y[f-1]);for(f=p;f=0;h--){const u=i[h].initSegment;if(u){s=u;break}}a.fragmentHint&&delete a.fragmentHint.endPTS;let r;Qc(a,e,(h,u,d,g)=>{if((!e.startCC||e.skippedSegments)&&u.cc!==h.cc){const f=h.cc-u.cc;for(let p=d;p{var u;h&&(!h.initSegment||h.initSegment.relurl===((u=s)==null?void 0:u.relurl))&&(h.initSegment=s)}),e.skippedSegments){if(e.deltaUpdateFailed=n.some(h=>!h),e.deltaUpdateFailed){t.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let h=e.skippedSegments;h--;)n.shift();e.startSN=n[0].sn}else{e.canSkipDateRanges&&(e.dateRanges=Xc(a.dateRanges,e,t));const h=a.fragments.filter(u=>u.rawProgramDateTime);if(a.hasProgramDateTime&&!e.hasProgramDateTime)for(let u=1;u{u.elementaryStreams=h.elementaryStreams,u.stats=h.stats}),r?wa(e,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS,t):Oa(a,e),n.length&&(e.totalduration=e.edge-n[0].start),e.driftStartTime=a.driftStartTime,e.driftStart=a.driftStart;const l=e.advancedDateTime;if(e.advanced&&l){const h=e.edge;e.driftStart||(e.driftStartTime=l,e.driftStart=h),e.driftEndTime=l,e.driftEnd=h}else e.driftEndTime=a.driftEndTime,e.driftEnd=a.driftEnd,e.advancedDateTime=a.advancedDateTime;e.requestScheduled===-1&&(e.requestScheduled=a.requestScheduled)}function Xc(a,e,t){const{dateRanges:s,recentlyRemovedDateranges:i}=e,r=ae({},a);i&&i.forEach(c=>{delete r[c]});const o=Object.keys(r).length;return o?(Object.keys(s).forEach(c=>{const l=r[c],h=new ba(s[c].attr,l);h.isValid?(r[c]=h,l||(h.tagOrder+=o)):t.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${ce(s[c].attr)}"`)}),r):s}function zc(a,e,t){if(a&&e){let s=0;for(let i=0,r=a.length;i<=r;i++){const n=a[i],o=e[i+s];n&&o&&n.index===o.index&&n.fragment.sn===o.fragment.sn?t(n,o):s--}}}function Qc(a,e,t){const s=e.skippedSegments,i=Math.max(a.startSN,e.startSN)-e.startSN,r=(a.fragmentHint?1:0)+(s?e.endSN:Math.min(a.endSN,e.endSN))-e.startSN,n=e.startSN-a.startSN,o=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,c=a.fragmentHint?a.fragments.concat(a.fragmentHint):a.fragments;for(let l=i;l<=r;l++){const h=c[n+l];let u=o[l];if(s&&!u&&h&&(u=e.fragments[l]=h),h&&u){t(h,u,l,o);const d=h.relurl,g=u.relurl;if(d&&Zc(d,g)){e.playlistParsingError=mn(`media sequence mismatch ${u.sn}:`,a,e,h,u);return}else if(h.cc!==u.cc){e.playlistParsingError=mn(`discontinuity sequence mismatch (${h.cc}!=${u.cc})`,a,e,h,u);return}}}}function mn(a,e,t,s,i){return new Error(`${a} ${i.url} + Time to underbuffer: ${Z.toFixed(3)} s`),i.abortRequests(),this.fragCurrent=this.partCurrent=null,G>g){let j=this.findBestLevel(this.hls.levels[g].bitrate,g,G,0,Z,1,1);j===-1&&(j=g),this.hls.nextLoadLevel=this.hls.nextAutoLevel=j,this.resetEstimator(this.hls.levels[j].bitrate)}}};y||F>B*2?X():this.timer=self.setInterval(X,B*1e3),n.trigger(m.FRAG_LOAD_EMERGENCY_ABORTED,{frag:i,part:r,stats:h})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(this.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new Sl(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.FRAG_LOADING,this.onFragLoading,this),e.on(m.FRAG_LOADED,this.onFragLoaded,this),e.on(m.FRAG_BUFFERED,this.onFragBuffered,this),e.on(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(m.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.FRAG_LOADING,this.onFragLoading,this),e.off(m.FRAG_LOADED,this.onFragLoaded,this),e.off(m.FRAG_BUFFERED,this.onFragBuffered,this),e.off(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(m.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(m.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=this.supportedCache=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.supportedCache={},this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const s=t.frag;if(!this.ignoreFragment(s)){if(!s.bitrateTest){var i;this.fragCurrent=s,this.partCurrent=(i=t.part)!=null?i:null}this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case _.BUFFER_ADD_CODEC_ERROR:case _.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case _.FRAG_LOAD_TIMEOUT:{const s=t.frag,{fragCurrent:i,partCurrent:r}=this;if(s&&i&&s.sn===i.sn&&s.level===i.level){const n=performance.now(),o=r?r.stats:s.stats,c=n-o.loading.start,l=o.loading.first?o.loading.first-o.loading.start:-1;if(o.loaded&&l>-1){const u=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(c-Math.min(u,l),o.loaded)}else this.bwEstimator.sampleTTFB(c)}break}}}getTimeToLoadFrag(e,t,s,i){const r=e+s/t,n=i?e+this.lastLevelLoadSec:0;return r+n}onLevelLoaded(e,t){const s=this.hls.config,{loading:i}=t.stats,r=i.end-i.first;V(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(s.abrEwmaSlowLive,s.abrEwmaFastLive):this.bwEstimator.update(s.abrEwmaSlowVoD,s.abrEwmaFastVoD),this.timer>-1&&this._abandonRulesCheck(t.levelInfo)}onFragLoaded(e,{frag:t,part:s}){const i=s?s.stats:t.stats;if(t.type===Y.MAIN&&this.bwEstimator.sampleTTFB(i.loading.first-i.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const r=s?s.duration:t.duration,n=this.hls.levels[t.level],o=(n.loaded?n.loaded.bytes:0)+i.loaded,c=(n.loaded?n.loaded.duration:0)+r;n.loaded={bytes:o,duration:c},n.realBitrate=Math.round(8*o/c)}if(t.bitrateTest){const r={stats:i,frag:t,part:s,id:t.type};this.onFragBuffered(m.FRAG_BUFFERED,r),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:s,part:i}=t,r=i!=null&&i.stats.loaded?i.stats:s.stats;if(r.aborted||this.ignoreFragment(s))return;const n=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,r.loaded),r.bwEstimate=this.getBwEstimate(),s.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==Y.MAIN||e.sn==="initSegment"}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,s=this.getBwEstimate(),i=this.hls.config.maxStarvationDelay,r=this.findBestLevel(s,t,e,0,i,1,1);if(r>-1)return r;const n=this.hls.firstLevel,o=Math.min(Math.max(n,t),e);return this.warn(`Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${o}`),o}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,s=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(e!==-1&&(!s||!i||this.nextAutoLevelKey===this.getAutoLevelKey()))return e;const r=s&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(e!==-1){const n=this.hls.levels;if(n.length>Math.max(e,r)&&n[e].loadError<=n[r].loadError)return e}return this._nextAutoLevel=r,this.nextAutoLevelKey=this.getAutoLevelKey(),r}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:s}=this;if(s.levels.length<=1)return s.loadLevel;const{maxAutoLevel:i,config:r,minAutoLevel:n}=s,o=t?t.duration:e?e.duration:0,c=this.getBwEstimate(),l=this.getStarvationDelay();let h=r.abrBandWidthFactor,u=r.abrBandWidthUpFactor;if(l){const y=this.findBestLevel(c,n,i,l,0,h,u);if(y>=0)return this.rebufferNotice=-1,y}let d=o?Math.min(o,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const y=this.bitrateTestDelay;y&&(d=(o?Math.min(o,r.maxLoadingDelay):r.maxLoadingDelay)-y,this.info(`bitrate test took ${Math.round(1e3*y)}ms, set first fragment max fetchDuration to ${Math.round(1e3*d)} ms`),h=u=1)}const g=this.findBestLevel(c,n,i,l,d,h,u);if(this.rebufferNotice!==g&&(this.rebufferNotice=g,this.info(`${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${g}`)),g>-1)return g;const f=s.levels[n],p=s.loadLevelObj;return p&&f?.bitrate=t;w--){var F;const M=f[w],k=w>u;if(!M)continue;if(E.useMediaCapabilities&&!M.supportedResult&&!M.supportedPromise){const j=navigator.mediaCapabilities;typeof j?.decodingInfo=="function"&&tc(M,I,D,A,e,L)?(M.supportedPromise=Ea(M,I,j,this.supportedCache),M.supportedPromise.then(J=>{if(!this.hls)return;M.supportedResult=J;const ue=this.hls.levels,oe=ue.indexOf(M);J.error?this.warn(`MediaCapabilities decodingInfo error: "${J.error}" for level ${oe} ${ce(J)}`):J.supported?J.decodingInfoResults.some(Te=>Te.smooth===!1||Te.powerEfficient===!1)&&this.log(`MediaCapabilities decodingInfo for level ${oe} not smooth or powerEfficient: ${ce(J)}`):(this.warn(`Unsupported MediaCapabilities decodingInfo result for level ${oe} ${ce(J)}`),oe>-1&&ue.length>1&&(this.log(`Removing unsupported level ${oe}`),this.hls.removeLevel(oe),this.hls.loadLevel===-1&&(this.hls.nextLoadLevel=0)))}).catch(J=>{this.warn(`Error handling MediaCapabilities decodingInfo: ${J}`)})):M.supportedResult=pa}if((x&&M.codecSet!==x||D&&M.videoRange!==D||k&&A>M.frameRate||!k&&A>0&&Aj.smooth===!1))&&(!S||w!==C)){H.push(w);continue}const B=M.details,G=(g?B?.partTarget:B?.averagetargetduration)||$;let N;k?N=o*e:N=n*e;const U=$&&i>=$*2&&r===0?M.averageBitrate:M.maxBitrate,X=this.getTimeToLoadFrag(K,N,U*G,B===void 0);if(N>=U&&(w===h||M.loadError===0&&M.fragmentError===0)&&(X<=K||!V(X)||T&&!this.bitrateTestDelay||X${w} adjustedbw(${Math.round(N)})-bitrate=${Math.round(N-U)} ttfb:${K.toFixed(1)} avgDuration:${G.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${X.toFixed(1)} firstSelection:${S} codecSet:${M.codecSet} videoRange:${M.videoRange} hls.loadLevel:${y}`)),S&&(this.firstSelection=w),w}}return-1}set nextAutoLevel(e){const t=this.deriveNextAutoLevel(e);this._nextAutoLevel!==t&&(this.nextAutoLevelKey="",this._nextAutoLevel=t)}deriveNextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:s}=this.hls;return Math.min(Math.max(e,s),t)}}const Sa={search:function(a,e){let t=0,s=a.length-1,i=null,r=null;for(;t<=s;){i=(t+s)/2|0,r=a[i];const n=e(r);if(n>0)t=i+1;else if(n<0)s=i-1;else return r}return null}};function yc(a,e,t){if(e===null||!Array.isArray(a)||!a.length||!V(e))return null;const s=a[0].programDateTime;if(e<(s||0))return null;const i=a[a.length-1].endProgramDateTime;if(e>=(i||0))return null;for(let r=0;r0&&o<15e-7&&(t+=15e-7),r&&a.level!==r.level&&r.end<=a.end&&(r=e[2+a.sn-e[0].sn]||null)}else t===0&&e[0].start===0&&(r=e[0]);if(r&&((!a||a.level===r.level)&&Wr(t,s,r)===0||Ec(r,a,Math.min(i,s))))return r;const n=Sa.search(e,Wr.bind(null,t,s));return n&&(n!==a||!r)?n:r}function Ec(a,e,t){if(e&&e.start===0&&e.level0){const s=e.tagList.reduce((i,r)=>(r[0]==="INF"&&(i+=parseFloat(r[1])),i),t);return a.start<=s}return!1}function Wr(a=0,e=0,t){if(t.start<=a&&t.start+t.duration>a)return 0;const s=Math.min(e,t.duration+(t.deltaPTS?t.deltaPTS:0));return t.start+t.duration-s<=a?1:t.start-s>a&&t.start?-1:0}function vc(a,e,t){const s=Math.min(e,t.duration+(t.deltaPTS?t.deltaPTS:0))*1e3;return(t.endProgramDateTime||0)-s>a}function xa(a,e,t){if(a&&a.startCC<=e&&a.endCC>=e){let s=a.fragments;const{fragmentHint:i}=a;i&&(s=s.concat(i));let r;return Sa.search(s,n=>n.cce?-1:(r=n,n.end<=t?1:n.start>t?-1:0)),r||null}return null}function Gs(a){switch(a.details){case _.FRAG_LOAD_TIMEOUT:case _.KEY_LOAD_TIMEOUT:case _.LEVEL_LOAD_TIMEOUT:case _.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function Aa(a){return a.details.startsWith("key")}function Ia(a){return Aa(a)&&!!a.frag&&!a.frag.decryptdata}function qr(a,e){const t=Gs(e);return a.default[`${t?"timeout":"error"}Retry`]}function ar(a,e){const t=a.backoff==="linear"?1:Math.pow(2,e);return Math.min(t*a.retryDelayMs,a.maxRetryDelayMs)}function jr(a){return re(re({},a),{errorRetry:null,timeoutRetry:null})}function Ks(a,e,t,s){if(!a)return!1;const i=s?.code,r=e499)}function Mi(a){return a===0&&navigator.onLine===!1}var Le={DoNothing:0,SendAlternateToPenaltyBox:2,RemoveAlternatePermanently:3,RetryRequest:5},Ge={None:0,MoveAllAlternatesMatchingHost:1,MoveAllAlternatesMatchingHDCP:2,MoveAllAlternatesMatchingKey:4};class Sc extends qe{constructor(e){super("error-controller",e.logger),this.hls=void 0,this.playlistError=0,this.hls=e,this.registerListeners()}registerListeners(){const e=this.hls;e.on(m.ERROR,this.onError,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(m.ERROR,this.onError,this),e.off(m.ERROR,this.onErrorOut,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return e?.type===Y.MAIN?e.level:this.getVariantIndex()}getVariantIndex(){var e;const t=this.hls,s=t.currentLevel;return(e=t.loadLevelObj)!=null&&e.details||s===-1?t.loadLevel:s}variantHasKey(e,t){if(e){var s;if((s=e.details)!=null&&s.hasKey(t))return!0;const i=e.audioGroups;if(i)return this.hls.allAudioTracks.filter(n=>i.indexOf(n.groupId)>=0).some(n=>{var o;return(o=n.details)==null?void 0:o.hasKey(t)})}return!1}onManifestLoading(){this.playlistError=0}onLevelUpdated(){this.playlistError=0}onError(e,t){var s;if(t.fatal)return;const i=this.hls,r=t.context;switch(t.details){case _.FRAG_LOAD_ERROR:case _.FRAG_LOAD_TIMEOUT:case _.KEY_LOAD_ERROR:case _.KEY_LOAD_TIMEOUT:t.errorAction=this.getFragRetryOrSwitchAction(t);return;case _.FRAG_PARSING_ERROR:if((s=t.frag)!=null&&s.gap){t.errorAction=Gt();return}case _.FRAG_GAP:case _.FRAG_DECRYPT_ERROR:{t.errorAction=this.getFragRetryOrSwitchAction(t),t.errorAction.action=Le.SendAlternateToPenaltyBox;return}case _.LEVEL_EMPTY_ERROR:case _.LEVEL_PARSING_ERROR:{var n;const c=t.parent===Y.MAIN?t.level:i.loadLevel;t.details===_.LEVEL_EMPTY_ERROR&&((n=t.context)!=null&&(n=n.levelDetails)!=null&&n.live)?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,c):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,c))}return;case _.LEVEL_LOAD_ERROR:case _.LEVEL_LOAD_TIMEOUT:typeof r?.level=="number"&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.level));return;case _.AUDIO_TRACK_LOAD_ERROR:case _.AUDIO_TRACK_LOAD_TIMEOUT:case _.SUBTITLE_LOAD_ERROR:case _.SUBTITLE_TRACK_LOAD_TIMEOUT:if(r){const c=i.loadLevelObj;if(c&&(r.type===te.AUDIO_TRACK&&c.hasAudioGroup(r.groupId)||r.type===te.SUBTITLE_TRACK&&c.hasSubtitleGroup(r.groupId))){t.errorAction=this.getPlaylistRetryOrSwitchAction(t,i.loadLevel),t.errorAction.action=Le.SendAlternateToPenaltyBox,t.errorAction.flags=Ge.MoveAllAlternatesMatchingHost;return}}return;case _.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:t.errorAction={action:Le.SendAlternateToPenaltyBox,flags:Ge.MoveAllAlternatesMatchingHDCP};return;case _.KEY_SYSTEM_SESSION_UPDATE_FAILED:case _.KEY_SYSTEM_STATUS_INTERNAL_ERROR:case _.KEY_SYSTEM_NO_SESSION:t.errorAction={action:Le.SendAlternateToPenaltyBox,flags:Ge.MoveAllAlternatesMatchingKey};return;case _.BUFFER_ADD_CODEC_ERROR:case _.REMUX_ALLOC_ERROR:case _.BUFFER_APPEND_ERROR:if(!t.errorAction){var o;t.errorAction=this.getLevelSwitchAction(t,(o=t.level)!=null?o:i.loadLevel)}return;case _.INTERNAL_EXCEPTION:case _.BUFFER_APPENDING_ERROR:case _.BUFFER_FULL_ERROR:case _.LEVEL_SWITCH_ERROR:case _.BUFFER_STALLED_ERROR:case _.BUFFER_SEEK_OVER_HOLE:case _.BUFFER_NUDGE_ON_STALL:t.errorAction=Gt();return}t.type===W.KEY_SYSTEM_ERROR&&(t.levelRetry=!1,t.errorAction=Gt())}getPlaylistRetryOrSwitchAction(e,t){const s=this.hls,i=qr(s.config.playlistLoadPolicy,e),r=this.playlistError++;if(Ks(i,r,Gs(e),e.response))return{action:Le.RetryRequest,flags:Ge.None,retryConfig:i,retryCount:r};const o=this.getLevelSwitchAction(e,t);return i&&(o.retryConfig=i,o.retryCount=r),o}getFragRetryOrSwitchAction(e){const t=this.hls,s=this.getVariantLevelIndex(e.frag),i=t.levels[s],{fragLoadPolicy:r,keyLoadPolicy:n}=t.config,o=qr(Aa(e)?n:r,e),c=t.levels.reduce((h,u)=>h+u.fragmentError,0);if(i&&(e.details!==_.FRAG_GAP&&i.fragmentError++,!Ia(e)&&Ks(o,c,Gs(e),e.response)))return{action:Le.RetryRequest,flags:Ge.None,retryConfig:o,retryCount:c};const l=this.getLevelSwitchAction(e,s);return o&&(l.retryConfig=o,l.retryCount=c),l}getLevelSwitchAction(e,t){const s=this.hls;t==null&&(t=s.loadLevel);const i=this.hls.levels[t];if(i){var r,n;const l=e.details;i.loadError++,l===_.BUFFER_APPEND_ERROR&&i.fragmentError++;let h=-1;const{levels:u,loadLevel:d,minAutoLevel:g,maxAutoLevel:f}=s;!s.autoLevelEnabled&&!s.config.preserveManualLevelOnError&&(s.loadLevel=-1);const p=(r=e.frag)==null?void 0:r.type,E=(p===Y.AUDIO&&l===_.FRAG_PARSING_ERROR||e.sourceBufferName==="audio"&&(l===_.BUFFER_ADD_CODEC_ERROR||l===_.BUFFER_APPEND_ERROR))&&u.some(({audioCodec:D})=>i.audioCodec!==D),T=e.sourceBufferName==="video"&&(l===_.BUFFER_ADD_CODEC_ERROR||l===_.BUFFER_APPEND_ERROR)&&u.some(({codecSet:D,audioCodec:A})=>i.codecSet!==D&&i.audioCodec===A),{type:S,groupId:x}=(n=e.context)!=null?n:{};for(let D=u.length;D--;){const A=(D+d)%u.length;if(A!==d&&A>=g&&A<=f&&u[A].loadError===0){var o,c;const L=u[A];if(l===_.FRAG_GAP&&p===Y.MAIN&&e.frag){const R=u[A].details;if(R){const I=kt(e.frag,R.fragments,e.frag.start);if(I!=null&&I.gap)continue}}else{if(S===te.AUDIO_TRACK&&L.hasAudioGroup(x)||S===te.SUBTITLE_TRACK&&L.hasSubtitleGroup(x))continue;if(p===Y.AUDIO&&(o=i.audioGroups)!=null&&o.some(R=>L.hasAudioGroup(R))||p===Y.SUBTITLE&&(c=i.subtitleGroups)!=null&&c.some(R=>L.hasSubtitleGroup(R))||E&&i.audioCodec===L.audioCodec||T&&i.codecSet===L.codecSet||!E&&i.codecSet!==L.codecSet)continue}h=A;break}}if(h>-1&&s.loadLevel!==h)return e.levelRetry=!0,this.playlistError=0,{action:Le.SendAlternateToPenaltyBox,flags:Ge.None,nextAutoLevel:h}}return{action:Le.SendAlternateToPenaltyBox,flags:Ge.MoveAllAlternatesMatchingHost}}onErrorOut(e,t){var s;switch((s=t.errorAction)==null?void 0:s.action){case Le.DoNothing:break;case Le.SendAlternateToPenaltyBox:this.sendAlternateToPenaltyBox(t),!t.errorAction.resolved&&t.details!==_.FRAG_GAP?t.fatal=!0:/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError());break}if(t.fatal){this.hls.stopLoad();return}}sendAlternateToPenaltyBox(e){const t=this.hls,s=e.errorAction;if(!s)return;const{flags:i}=s,r=s.nextAutoLevel;switch(i){case Ge.None:this.switchLevel(e,r);break;case Ge.MoveAllAlternatesMatchingHDCP:{const c=this.getVariantLevelIndex(e.frag),l=t.levels[c],h=l?.attrs["HDCP-LEVEL"];if(s.hdcpLevel=h,h==="NONE")this.warn("HDCP policy resticted output with HDCP-LEVEL=NONE");else if(h){t.maxHdcpLevel=Fi[Fi.indexOf(h)-1],s.resolved=!0,this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`);break}}case Ge.MoveAllAlternatesMatchingKey:{const c=e.decryptdata;if(c){const l=this.hls.levels,h=l.length;for(let d=h;d--;)if(this.variantHasKey(l[d],c)){var n,o;this.log(`Banned key found in level ${d} (${l[d].bitrate}bps) or audio group "${(n=l[d].audioGroups)==null?void 0:n.join(",")}" (${(o=e.frag)==null?void 0:o.type} fragment) ${Re(c.keyId||[])}`),l[d].fragmentError++,l[d].loadError++,this.log(`Removing level ${d} with key error (${e.error})`),this.hls.removeLevel(d)}const u=e.frag;if(this.hls.levels.length{const c=this.fragments[o];if(!c||n>=c.body.sn)return;if(!c.buffered&&(!c.loaded||r)){c.body.type===s&&this.removeFragment(c.body);return}const l=c.range[e];if(l){if(l.time.length===0){this.removeFragment(c.body);return}l.time.some(h=>{const u=!this.isTimeBuffered(h.startPTS,h.endPTS,t);return u&&this.removeFragment(c.body),u})}})}detectPartialFragments(e){const t=this.timeRanges;if(!t||e.frag.sn==="initSegment")return;const s=e.frag,i=Ft(s),r=this.fragments[i];if(!r||r.buffered&&s.gap)return;const n=!s.relurl;Object.keys(t).forEach(o=>{const c=s.elementaryStreams[o];if(!c)return;const l=t[o],h=n||c.partial===!0;r.range[o]=this.getBufferedTimes(s,e.part,h,l)}),r.loaded=null,Object.keys(r.range).length?(this.bufferedEnd(r,s),fs(r)||this.removeParts(s.sn-1,s.type)):this.removeFragment(r.body)}bufferedEnd(e,t){e.buffered=!0,(e.body.endList=t.endList||e.body.endList)&&(this.endListFragments[e.body.type]=e)}removeParts(e,t){const s=this.activePartLists[t];s&&(this.activePartLists[t]=Xr(s,i=>i.fragment.sn>=e))}fragBuffered(e,t){const s=Ft(e);let i=this.fragments[s];!i&&t&&(i=this.fragments[s]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),i&&(i.loaded=null,this.bufferedEnd(i,e))}getBufferedTimes(e,t,s,i){const r={time:[],partial:s},n=e.start,o=e.end,c=e.minEndPTS||o,l=e.maxStartPTS||n;for(let h=0;h=u&&c<=d){r.time.push({startPTS:Math.max(n,i.start(h)),endPTS:Math.min(o,i.end(h))});break}else if(nu){const g=Math.max(n,i.start(h)),f=Math.min(o,i.end(h));f>g&&(r.partial=!0,r.time.push({startPTS:g,endPTS:f}))}else if(o<=u)break}return r}getPartialFragment(e){let t=null,s,i,r,n=0;const{bufferPadding:o,fragments:c}=this;return Object.keys(c).forEach(l=>{const h=c[l];h&&fs(h)&&(i=h.body.start-o,r=h.body.end+o,e>=i&&e<=r&&(s=Math.min(e-i,r-e),n<=s&&(t=h.body,n=s)))}),t}isEndListAppended(e){const t=this.endListFragments[e];return t!==void 0&&(t.buffered||fs(t))}getState(e){const t=Ft(e),s=this.fragments[t];return s?s.buffered?fs(s)?Ae.PARTIAL:Ae.OK:Ae.APPENDING:Ae.NOT_LOADED}isTimeBuffered(e,t,s){let i,r;for(let n=0;n=i&&t<=r)return!0;if(t<=i)return!1}return!1}onManifestLoading(){this.removeAllFragments()}onFragLoaded(e,t){if(t.frag.sn==="initSegment"||t.frag.bitrateTest)return;const s=t.frag,i=t.part?null:t,r=Ft(s);this.fragments[r]={body:s,appendedPTS:null,loaded:i,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:s,part:i,timeRanges:r,type:n}=t;if(s.sn==="initSegment")return;const o=s.type;if(i){let l=this.activePartLists[o];l||(this.activePartLists[o]=l=[]),l.push(i)}this.timeRanges=r;const c=r[n];this.detectEvictedFragments(n,c,o,i)}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=Ft(e);return!!this.fragments[t]}hasFragments(e){const{fragments:t}=this,s=Object.keys(t);if(!e)return s.length>0;for(let i=s.length;i--;){const r=t[s[i]];if(r?.body.type===e)return!0}return!1}hasParts(e){var t;return!!((t=this.activePartLists[e])!=null&&t.length)}removeFragmentsInRange(e,t,s,i,r){i&&!this.hasGaps||Object.keys(this.fragments).forEach(n=>{const o=this.fragments[n];if(!o)return;const c=o.body;c.type!==s||i&&!c.gap||c.starte&&(o.buffered||r)&&this.removeFragment(c)})}removeFragment(e){const t=Ft(e);e.clearElementaryStreamInfo();const s=this.activePartLists[e.type];if(s){const i=e.sn;this.activePartLists[e.type]=Xr(s,r=>r.fragment.sn!==i)}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){var e;this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1;const t=(e=this.hls)==null||(e=e.latestLevelDetails)==null?void 0:e.partList;t&&t.forEach(s=>s.clearElementaryStreamInfo())}}function fs(a){var e,t,s;return a.buffered&&!!(a.body.gap||(e=a.range.video)!=null&&e.partial||(t=a.range.audio)!=null&&t.partial||(s=a.range.audiovideo)!=null&&s.partial)}function Ft(a){return`${a.type}_${a.level}_${a.sn}`}function Xr(a,e){return a.filter(t=>{const s=e(t);return s||t.clearElementaryStreamInfo(),s})}var Rt={cbc:0,ctr:1};class Ac{constructor(e,t,s){this.subtle=void 0,this.aesIV=void 0,this.aesMode=void 0,this.subtle=e,this.aesIV=t,this.aesMode=s}decrypt(e,t){switch(this.aesMode){case Rt.cbc:return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e);case Rt.ctr:return this.subtle.decrypt({name:"AES-CTR",counter:this.aesIV,length:64},t,e);default:throw new Error(`[AESCrypto] invalid aes mode ${this.aesMode}`)}}}function Ic(a){const e=a.byteLength,t=e&&new DataView(a.buffer).getUint8(e-1);return t?a.slice(0,e-t):a}class Lc{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),s=new Uint32Array(4);for(let i=0;i<4;i++)s[i]=t.getUint32(i*4);return s}initTable(){const e=this.sBox,t=this.invSBox,s=this.subMix,i=s[0],r=s[1],n=s[2],o=s[3],c=this.invSubMix,l=c[0],h=c[1],u=c[2],d=c[3],g=new Uint32Array(256);let f=0,p=0,y=0;for(y=0;y<256;y++)y<128?g[y]=y<<1:g[y]=y<<1^283;for(y=0;y<256;y++){let E=p^p<<1^p<<2^p<<3^p<<4;E=E>>>8^E&255^99,e[f]=E,t[E]=f;const v=g[f],T=g[v],S=g[T];let x=g[E]*257^E*16843008;i[f]=x<<24|x>>>8,r[f]=x<<16|x>>>16,n[f]=x<<8|x>>>24,o[f]=x,x=S*16843009^T*65537^v*257^f*16843008,l[E]=x<<24|x>>>8,h[E]=x<<16|x>>>16,u[E]=x<<8|x>>>24,d[E]=x,f?(f=v^g[g[g[S^v]]],p^=g[g[p]]):f=p=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let s=!0,i=0;for(;i{const o=ArrayBuffer.isView(e)?e:new Uint8Array(e);this.softwareDecrypt(o,t,s,i);const c=this.flush();c?r(c.buffer):n(new Error("[softwareDecrypt] Failed to decrypt data"))}):this.webCryptoDecrypt(new Uint8Array(e),t,s,i)}softwareDecrypt(e,t,s,i){const{currentIV:r,currentResult:n,remainderData:o}=this;if(i!==Rt.cbc||t.byteLength!==16)return ne.warn("SoftwareDecrypt: can only handle AES-128-CBC"),null;this.logOnce("JS AES decrypt"),o&&(e=We(o,e),this.remainderData=null);const c=this.getValidChunk(e);if(!c.length)return null;r&&(s=r);let l=this.softwareDecrypter;l||(l=this.softwareDecrypter=new Lc),l.expandKey(t);const h=n;return this.currentResult=l.decrypt(c.buffer,0,s),this.currentIV=c.slice(-16).buffer,h||null}webCryptoDecrypt(e,t,s,i){if(this.key!==t||!this.fastAesKey){if(!this.subtle)return Promise.resolve(this.onWebCryptoError(e,t,s,i));this.key=t,this.fastAesKey=new Rc(this.subtle,t,i)}return this.fastAesKey.expandKey().then(r=>this.subtle?(this.logOnce("WebCrypto AES decrypt"),new Ac(this.subtle,new Uint8Array(s),i).decrypt(e.buffer,r)):Promise.reject(new Error("web crypto not initialized"))).catch(r=>(ne.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${r.name}: ${r.message}`),this.onWebCryptoError(e,t,s,i)))}onWebCryptoError(e,t,s,i){const r=this.enableSoftwareAES;if(r){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,s,i);const n=this.flush();if(n)return n.buffer}throw new Error("WebCrypto"+(r?" and softwareDecrypt":"")+": failed to decrypt data")}getValidChunk(e){let t=e;const s=e.length-e.length%_c;return s!==e.length&&(t=e.slice(0,s),this.remainderData=e.slice(s)),t}logOnce(e){this.logEnabled&&(ne.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const zr=Math.pow(2,17);class Dc{constructor(e){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=e}destroy(){this.loader&&(this.loader.destroy(),this.loader=null)}abort(){this.loader&&this.loader.abort()}load(e,t){const s=e.url;if(!s)return Promise.reject(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_ERROR,fatal:!1,frag:e,error:new Error(`Fragment does not have a ${s?"part list":"url"}`),networkDetails:null}));this.abort();const i=this.config,r=i.fLoader,n=i.loader;return new Promise((o,c)=>{if(this.loader&&this.loader.destroy(),e.gap)if(e.tagList.some(f=>f[0]==="GAP")){c(Zr(e));return}else e.gap=!1;const l=this.loader=r?new r(i):new n(i),h=Qr(e);e.loader=l;const u=jr(i.fragLoadPolicy.default),d={loadPolicy:u,timeout:u.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:e.sn==="initSegment"?1/0:zr};e.stats=l.stats;const g={onSuccess:(f,p,y,E)=>{this.resetLoader(e,l);let v=f.data;y.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(v.slice(0,16)),v=v.slice(16)),o({frag:e,part:null,payload:v,networkDetails:E})},onError:(f,p,y,E)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:re({url:s,data:void 0},f),error:new Error(`HTTP Error ${f.code} ${f.text}`),networkDetails:y,stats:E}))},onAbort:(f,p,y)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:y,stats:f}))},onTimeout:(f,p,y)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${d.timeout}ms`),networkDetails:y,stats:f}))}};t&&(g.onProgress=(f,p,y,E)=>t({frag:e,part:null,payload:y,networkDetails:E})),l.load(h,d,g)})}loadPart(e,t,s){this.abort();const i=this.config,r=i.fLoader,n=i.loader;return new Promise((o,c)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap){c(Zr(e,t));return}const l=this.loader=r?new r(i):new n(i),h=Qr(e,t);e.loader=l;const u=jr(i.fragLoadPolicy.default),d={loadPolicy:u,timeout:u.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:zr};t.stats=l.stats,l.load(h,d,{onSuccess:(g,f,p,y)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const E={frag:e,part:t,payload:g.data,networkDetails:y};s(E),o(E)},onError:(g,f,p,y)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:re({url:h.url,data:void 0},g),error:new Error(`HTTP Error ${g.code} ${g.text}`),networkDetails:p,stats:y}))},onAbort:(g,f,p)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:p,stats:g}))},onTimeout:(g,f,p)=>{this.resetLoader(e,l),c(new ht({type:W.NETWORK_ERROR,details:_.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${d.timeout}ms`),networkDetails:p,stats:g}))}})})}updateStatsFromPart(e,t){const s=e.stats,i=t.stats,r=i.total;if(s.loaded+=i.loaded,r){const c=Math.round(e.duration/t.duration),l=Math.min(Math.round(s.loaded/r),c),u=(c-l)*Math.round(s.loaded/l);s.total=s.loaded+u}else s.total=Math.max(s.loaded,s.total);const n=s.loading,o=i.loading;n.start?n.first+=o.first-o.start:(n.start=o.start,n.first=o.first),n.end=o.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function Qr(a,e=null){const t=e||a,s={frag:a,part:e,responseType:"arraybuffer",url:t.url,headers:{},rangeStart:0,rangeEnd:0},i=t.byteRangeStartOffset,r=t.byteRangeEndOffset;if(V(i)&&V(r)){var n;let o=i,c=r;if(a.sn==="initSegment"&&Cc((n=a.decryptdata)==null?void 0:n.method)){const l=r-i;l%16&&(c=r+(16-l%16)),i!==0&&(s.resetIV=!0,o=i-16)}s.rangeStart=o,s.rangeEnd=c}return s}function Zr(a,e){const t=new Error(`GAP ${a.gap?"tag":"attribute"} found`),s={type:W.MEDIA_ERROR,details:_.FRAG_GAP,fatal:!1,frag:a,error:t,networkDetails:null};return e&&(s.part=e),(e||a).stats.aborted=!0,new ht(s)}function Cc(a){return a==="AES-128"||a==="AES-256"}class ht extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class La extends qe{constructor(e,t){super(e,t),this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}destroy(){this.onHandlerDestroying(),this.onHandlerDestroyed()}onHandlerDestroying(){this.clearNextTick(),this.clearInterval()}onHandlerDestroyed(){}hasInterval(){return!!this._tickInterval}hasNextTick(){return!!this._tickTimer}setInterval(e){return this._tickInterval?!1:(this._tickCallCount=0,this._tickInterval=self.setInterval(this._boundTick,e),!0)}clearInterval(){return this._tickInterval?(self.clearInterval(this._tickInterval),this._tickInterval=null,!0):!1}clearNextTick(){return this._tickTimer?(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0):!1}tick(){this._tickCallCount++,this._tickCallCount===1&&(this.doTick(),this._tickCallCount>1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}class lr{constructor(e,t,s,i=0,r=-1,n=!1){this.level=void 0,this.sn=void 0,this.part=void 0,this.id=void 0,this.size=void 0,this.partial=void 0,this.transmuxing=gs(),this.buffering={audio:gs(),video:gs(),audiovideo:gs()},this.level=e,this.sn=t,this.id=s,this.size=i,this.part=r,this.partial=n}}function gs(){return{start:0,executeStart:0,executeEnd:0,end:0}}const Jr={length:0,start:()=>0,end:()=>0};class Q{static isBuffered(e,t){if(e){const s=Q.getBuffered(e);for(let i=s.length;i--;)if(t>=s.start(i)&&t<=s.end(i))return!0}return!1}static bufferedRanges(e){if(e){const t=Q.getBuffered(e);return Q.timeRangesToArray(t)}return[]}static timeRangesToArray(e){const t=[];for(let s=0;s1&&e.sort((h,u)=>h.start-u.start||u.end-h.end);let i=-1,r=[];if(s)for(let h=0;h=e[h].start&&t<=e[h].end&&(i=h);const u=r.length;if(u){const d=r[u-1].end;e[h].start-dd&&(r[u-1].end=e[h].end):r.push(e[h])}else r.push(e[h])}else r=e;let n=0,o,c=t,l=t;for(let h=0;h=u&&t<=d&&(i=h),t+s>=u&&t{const i=s.substring(2,s.length-1),r=t?.[i];return r===void 0?(a.playlistParsingError||(a.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${i}"`)),s):r})}return e}function tn(a,e,t){let s=a.variableList;s||(a.variableList=s={});let i,r;if("QUERYPARAM"in e){i=e.QUERYPARAM;try{const n=new self.URL(t).searchParams;if(n.has(i))r=n.get(i);else throw new Error(`"${i}" does not match any query parameter in URI: "${t}"`)}catch(n){a.playlistParsingError||(a.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${n.message}`))}}else i=e.NAME,r=e.VALUE;i in s?a.playlistParsingError||(a.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${i}"`)):s[i]=r||""}function Pc(a,e,t){const s=e.IMPORT;if(t&&s in t){let i=a.variableList;i||(a.variableList=i={}),i[s]=t[s]}else a.playlistParsingError||(a.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}const kc=/^(\d+)x(\d+)$/,sn=/(.+?)=(".*?"|.*?)(?:,|$)/g;class fe{constructor(e,t){typeof e=="string"&&(e=fe.parseAttrList(e,t)),ae(this,e)}get clientAttrs(){return Object.keys(this).filter(e=>e.substring(0,2)==="X-")}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(t.length&1?"0":"")+t;const s=new Uint8Array(t.length/2);for(let i=0;iNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const s=this[e];return s?parseFloat(s):t}enumeratedString(e){return this[e]}enumeratedStringList(e,t){const s=this[e];return(s?s.split(/[ ,]+/):[]).reduce((i,r)=>(i[r.toLowerCase()]=!0,i),t)}bool(e){return this[e]==="YES"}decimalResolution(e){const t=kc.exec(this[e]);if(t!==null)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e,t){let s;const i={};for(sn.lastIndex=0;(s=sn.exec(e))!==null;){const n=s[1].trim();let o=s[2];const c=o.indexOf('"')===0&&o.lastIndexOf('"')===o.length-1;let l=!1;if(c)o=o.slice(1,-1);else switch(n){case"IV":case"SCTE35-CMD":case"SCTE35-IN":case"SCTE35-OUT":l=!0}if(t&&(c||l))o=Ni(t,o);else if(!l&&!c)switch(n){case"CLOSED-CAPTIONS":if(o==="NONE")break;case"ALLOWED-CPC":case"CLASS":case"ASSOC-LANGUAGE":case"AUDIO":case"BYTERANGE":case"CHANNELS":case"CHARACTERISTICS":case"CODECS":case"DATA-ID":case"END-DATE":case"GROUP-ID":case"ID":case"IMPORT":case"INSTREAM-ID":case"KEYFORMAT":case"KEYFORMATVERSIONS":case"LANGUAGE":case"NAME":case"PATHWAY-ID":case"QUERYPARAM":case"RECENTLY-REMOVED-DATERANGES":case"SERVER-URI":case"STABLE-RENDITION-ID":case"STABLE-VARIANT-ID":case"START-DATE":case"SUBTITLES":case"SUPPLEMENTAL-CODECS":case"URI":case"VALUE":case"VIDEO":case"X-ASSET-LIST":case"X-ASSET-URI":ne.warn(`${e}: attribute ${n} is missing quotes`)}i[n]=o}return i}}const wc="com.apple.hls.interstitial";function Oc(a){return a!=="ID"&&a!=="CLASS"&&a!=="CUE"&&a!=="START-DATE"&&a!=="DURATION"&&a!=="END-DATE"&&a!=="END-ON-NEXT"}function Fc(a){return a==="SCTE35-OUT"||a==="SCTE35-IN"||a==="SCTE35-CMD"}class ba{constructor(e,t,s=0){var i;if(this.attr=void 0,this.tagAnchor=void 0,this.tagOrder=void 0,this._startDate=void 0,this._endDate=void 0,this._dateAtEnd=void 0,this._cue=void 0,this._badValueForSameId=void 0,this.tagAnchor=t?.tagAnchor||null,this.tagOrder=(i=t?.tagOrder)!=null?i:s,t){const r=t.attr;for(const n in r)if(Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==r[n]){ne.warn(`DATERANGE tag attribute: "${n}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=n;break}e=ae(new fe({}),r,e)}if(this.attr=e,t?(this._startDate=t._startDate,this._cue=t._cue,this._endDate=t._endDate,this._dateAtEnd=t._dateAtEnd):this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const r=t?.endDate||new Date(this.attr["END-DATE"]);V(r.getTime())&&(this._endDate=r)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get cue(){const e=this._cue;return e===void 0?this._cue=this.attr.enumeratedStringList(this.attr.CUE?"CUE":"X-CUE",{pre:!1,post:!1,once:!1}):e}get startTime(){const{tagAnchor:e}=this;return e===null||e.programDateTime===null?(ne.warn(`Expected tagAnchor Fragment with PDT set for DateRange "${this.id}": ${e}`),NaN):e.start+(this.startDate.getTime()-e.programDateTime)/1e3}get startDate(){return this._startDate}get endDate(){const e=this._endDate||this._dateAtEnd;if(e)return e;const t=this.duration;return t!==null?this._dateAtEnd=new Date(this._startDate.getTime()+t*1e3):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(V(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isInterstitial(){return this.class===wc}get isValid(){return!!this.id&&!this._badValueForSameId&&V(this.startDate.getTime())&&(this.duration===null||this.duration>=0)&&(!this.endOnNext||!!this.class)&&(!this.attr.CUE||!this.cue.pre&&!this.cue.post||this.cue.pre!==this.cue.post)&&(!this.isInterstitial||"X-ASSET-URI"in this.attr||"X-ASSET-LIST"in this.attr)}}const Mc=10;class Nc{constructor(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.dateRangeTagCount=0,this.live=!0,this.requestScheduled=-1,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.appliedTimelineOffset=void 0,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}reloaded(e){if(!e){this.advanced=!0,this.updated=!0;return}const t=this.lastPartSn-e.lastPartSn,s=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!s||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||t===0&&s>0,this.updated||this.advanced?this.misses=Math.floor(e.misses*.6):this.misses=e.misses+1}hasKey(e){return this.encryptedFragments.some(t=>{let s=t.decryptdata;return s||(t.setKeyFormat(e.keyFormat),s=t.decryptdata),!!s&&e.matches(s)})}get hasProgramDateTime(){return this.fragments.length?V(this.fragments[this.fragments.length-1].programDateTime):!1}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||Mc}get drift(){const e=this.driftEndTime-this.driftStartTime;return e>0?(this.driftEnd-this.driftStart)*1e3/e:1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return(e=this.partList)!=null&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){return this.fragments.length?this.fragments[this.fragments.length-1].end:0}get fragmentStart(){return this.fragments.length?this.fragments[0].start:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return(e=this.partList)!=null&&e.length?this.partList[this.partList.length-1].index:-1}get maxPartIndex(){const e=this.partList;if(e){const t=this.lastPartIndex;if(t!==-1){for(let s=e.length;s--;)if(e[s].index>t)return e[s].index;return t}}return 0}get lastPartSn(){var e;return(e=this.partList)!=null&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}get expired(){if(this.live&&this.age&&this.misses<3){const e=this.partEnd-this.fragmentStart;return this.age>Math.max(e,this.totalduration)+this.levelTargetDuration}return!1}}function Vs(a,e){return a.length===e.length?!a.some((t,s)=>t!==e[s]):!1}function rn(a,e){return!a&&!e?!0:!a||!e?!1:Vs(a,e)}function Kt(a){return a==="AES-128"||a==="AES-256"||a==="AES-256-CTR"}function cr(a){switch(a){case"AES-128":case"AES-256":return Rt.cbc;case"AES-256-CTR":return Rt.ctr;default:throw new Error(`invalid full segment method ${a}`)}}function hr(a){return Uint8Array.from(atob(a),e=>e.charCodeAt(0))}function Bi(a){return Uint8Array.from(unescape(encodeURIComponent(a)),e=>e.charCodeAt(0))}function Bc(a){const e=Bi(a).subarray(0,16),t=new Uint8Array(16);return t.set(e,16-e.length),t}function _a(a){const e=function(s,i,r){const n=s[i];s[i]=s[r],s[r]=n};e(a,0,3),e(a,1,2),e(a,4,5),e(a,6,7)}function Da(a){const e=a.split(":");let t=null;if(e[0]==="data"&&e.length===2){const s=e[1].split(";"),i=s[s.length-1].split(",");if(i.length===2){const r=i[0]==="base64",n=i[1];r?(s.splice(-1,1),t=hr(n)):t=Bc(n)}}return t}const Hs=typeof self<"u"?self:void 0;var ge={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},be={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.streamingkeydelivery",PLAYREADY:"com.microsoft.playready",WIDEVINE:"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"};function Ds(a){switch(a){case be.FAIRPLAY:return ge.FAIRPLAY;case be.PLAYREADY:return ge.PLAYREADY;case be.WIDEVINE:return ge.WIDEVINE;case be.CLEARKEY:return ge.CLEARKEY}}function li(a){switch(a){case ge.FAIRPLAY:return be.FAIRPLAY;case ge.PLAYREADY:return be.PLAYREADY;case ge.WIDEVINE:return be.WIDEVINE;case ge.CLEARKEY:return be.CLEARKEY}}function Qt(a){const{drmSystems:e,widevineLicenseUrl:t}=a,s=e?[ge.FAIRPLAY,ge.WIDEVINE,ge.PLAYREADY,ge.CLEARKEY].filter(i=>!!e[i]):[];return!s[ge.WIDEVINE]&&t&&s.push(ge.WIDEVINE),s}const Ca=(function(a){return Hs!=null&&(a=Hs.navigator)!=null&&a.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null})();function Uc(a,e,t,s){let i;switch(a){case ge.FAIRPLAY:i=["cenc","sinf"];break;case ge.WIDEVINE:case ge.PLAYREADY:i=["cenc"];break;case ge.CLEARKEY:i=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${a}`)}return $c(i,e,t,s)}function $c(a,e,t,s){return[{initDataTypes:a,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:e.map(r=>({contentType:`audio/mp4; codecs=${r}`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null})),videoCapabilities:t.map(r=>({contentType:`video/mp4; codecs=${r}`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null}))}]}function Gc(a){var e;return!!a&&(a.sessionType==="persistent-license"||!!((e=a.sessionTypes)!=null&&e.some(t=>t==="persistent-license")))}function Pa(a){const e=new Uint16Array(a.buffer,a.byteOffset,a.byteLength/2),t=String.fromCharCode.apply(null,Array.from(e)),s=t.substring(t.indexOf("<"),t.length),n=new DOMParser().parseFromString(s,"text/xml").getElementsByTagName("KID")[0];if(n){const o=n.childNodes[0]?n.childNodes[0].nodeValue:n.getAttribute("VALUE");if(o){const c=hr(o).subarray(0,16);return _a(c),c}}return null}let Mt={};class It{static clearKeyUriToKeyIdMap(){Mt={}}static setKeyIdForUri(e,t){Mt[e]=t}static addKeyIdForUri(e){const t=Object.keys(Mt).length%Number.MAX_SAFE_INTEGER,s=new Uint8Array(16);return new DataView(s.buffer,12,4).setUint32(0,t),Mt[e]=s,s}constructor(e,t,s,i=[1],r=null,n){this.uri=void 0,this.method=void 0,this.keyFormat=void 0,this.keyFormatVersions=void 0,this.encrypted=void 0,this.isCommonEncryption=void 0,this.iv=null,this.key=null,this.keyId=null,this.pssh=null,this.method=e,this.uri=t,this.keyFormat=s,this.keyFormatVersions=i,this.iv=r,this.encrypted=e?e!=="NONE":!1,this.isCommonEncryption=this.encrypted&&!Kt(e),n!=null&&n.startsWith("0x")&&(this.keyId=new Uint8Array(na(n)))}matches(e){return e.uri===this.uri&&e.method===this.method&&e.encrypted===this.encrypted&&e.keyFormat===this.keyFormat&&Vs(e.keyFormatVersions,this.keyFormatVersions)&&rn(e.iv,this.iv)&&rn(e.keyId,this.keyId)}isSupported(){if(this.method){if(Kt(this.method)||this.method==="NONE")return!0;if(this.keyFormat==="identity")return this.method==="SAMPLE-AES";switch(this.keyFormat){case be.FAIRPLAY:case be.WIDEVINE:case be.PLAYREADY:case be.CLEARKEY:return["SAMPLE-AES","SAMPLE-AES-CENC","SAMPLE-AES-CTR"].indexOf(this.method)!==-1}}return!1}getDecryptData(e,t){if(!this.encrypted||!this.uri)return null;if(Kt(this.method)){let r=this.iv;return r||(typeof e!="number"&&(ne.warn(`missing IV for initialization segment with method="${this.method}" - compliance issue`),e=0),r=Vc(e)),new It(this.method,this.uri,"identity",this.keyFormatVersions,r)}if(this.keyId){const r=Mt[this.uri];if(r&&!Vs(this.keyId,r)&&It.setKeyIdForUri(this.uri,this.keyId),this.pssh)return this}const s=Da(this.uri);if(s)switch(this.keyFormat){case be.WIDEVINE:if(this.pssh=s,!this.keyId){const r=Wl(s.buffer);if(r.length){var i;const n=r[0];this.keyId=(i=n.kids)!=null&&i.length?n.kids[0]:null}}this.keyId||(this.keyId=nn(t));break;case be.PLAYREADY:{const r=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Yl(r,null,s),this.keyId=Pa(s);break}default:{let r=s.subarray(0,16);if(r.length!==16){const n=new Uint8Array(16);n.set(r,16-r.length),r=n}this.keyId=r;break}}if(!this.keyId||this.keyId.byteLength!==16){let r;r=Kc(t),r||(r=nn(t),r||(r=Mt[this.uri])),r&&(this.keyId=r,It.setKeyIdForUri(this.uri,r))}return this}}function Kc(a){const e=a?.[be.WIDEVINE];return e?e.keyId:null}function nn(a){const e=a?.[be.PLAYREADY];if(e){const t=Da(e.uri);if(t)return Pa(t)}return null}function Vc(a){const e=new Uint8Array(16);for(let t=12;t<16;t++)e[t]=a>>8*(15-t)&255;return e}const an=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,on=/#EXT-X-MEDIA:(.*)/g,Hc=/^#EXT(?:INF|-X-TARGETDURATION):/m,ci=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[^\r\n]*)/.source,/#.*/.source].join("|"),"g"),Yc=new RegExp([/#EXT-X-(PROGRAM-DATE-TIME|BYTERANGE|DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|"));class it{static findGroup(e,t){for(let s=0;s0&&r.length({id:l.attrs.AUDIO,audioCodec:l.audioCodec})),SUBTITLES:n.map(l=>({id:l.attrs.SUBTITLES,textCodec:l.textCodec})),"CLOSED-CAPTIONS":[]};let c=0;for(on.lastIndex=0;(i=on.exec(e))!==null;){const l=new fe(i[1],s),h=l.TYPE;if(h){const u=o[h],d=r[h]||[];r[h]=d;const g=l.LANGUAGE,f=l["ASSOC-LANGUAGE"],p=l.CHANNELS,y=l.CHARACTERISTICS,E=l["INSTREAM-ID"],v={attrs:l,bitrate:0,id:c++,groupId:l["GROUP-ID"]||"",name:l.NAME||g||"",type:h,default:l.bool("DEFAULT"),autoselect:l.bool("AUTOSELECT"),forced:l.bool("FORCED"),lang:g,url:l.URI?it.resolve(l.URI,t):""};if(f&&(v.assocLang=f),p&&(v.channels=p),y&&(v.characteristics=y),E&&(v.instreamId=E),u!=null&&u.length){const T=it.findGroup(u,v.groupId)||u[0];un(v,T,"audioCodec"),un(v,T,"textCodec")}d.push(v)}}return r}static parseLevelPlaylist(e,t,s,i,r,n){var o;const c={url:t},l=new Nc(t),h=l.fragments,u=[];let d=null,g=0,f=0,p=0,y=0,E=0,v=null,T=new ni(i,c),S,x,D,A=-1,L=!1,R=null,I;if(ci.lastIndex=0,l.m3u8=e,l.hasVariableRefs=en(e),((o=ci.exec(e))==null?void 0:o[0])!=="#EXTM3U")return l.playlistParsingError=new Error("Missing format identifier #EXTM3U"),l;for(;(S=ci.exec(e))!==null;){L&&(L=!1,T=new ni(i,c),T.playlistOffset=p,T.setStart(p),T.sn=g,T.cc=y,E&&(T.bitrate=E),T.level=s,d&&(T.initSegment=d,d.rawProgramDateTime&&(T.rawProgramDateTime=d.rawProgramDateTime,d.rawProgramDateTime=null),R&&(T.setByteRange(R),R=null)));const H=S[1];if(H){T.duration=parseFloat(H);const F=(" "+S[2]).slice(1);T.title=F||null,T.tagList.push(F?["INF",H,F]:["INF",H])}else if(S[3]){if(V(T.duration)){T.playlistOffset=p,T.setStart(p),D&&fn(T,D,l),T.sn=g,T.level=s,T.cc=y,h.push(T);const F=(" "+S[3]).slice(1);T.relurl=Ni(l,F),Ui(T,v,u),v=T,p+=T.duration,g++,f=0,L=!0}}else{if(S=S[0].match(Yc),!S){ne.warn("No matches on slow regex match for level playlist!");continue}for(x=1;x0&&gn(l,F,S),g=l.startSN=parseInt(w);break;case"SKIP":{l.skippedSegments&<(l,F,S);const k=new fe(w,l),B=k.decimalInteger("SKIPPED-SEGMENTS");if(V(B)){l.skippedSegments+=B;for(let N=B;N--;)h.push(null);g+=B}const G=k.enumeratedString("RECENTLY-REMOVED-DATERANGES");G&&(l.recentlyRemovedDateranges=(l.recentlyRemovedDateranges||[]).concat(G.split(" ")));break}case"TARGETDURATION":l.targetduration!==0&<(l,F,S),l.targetduration=Math.max(parseInt(w),1);break;case"VERSION":l.version!==null&<(l,F,S),l.version=parseInt(w);break;case"INDEPENDENT-SEGMENTS":break;case"ENDLIST":l.live||lt(l,F,S),l.live=!1;break;case"#":(w||M)&&T.tagList.push(M?[w,M]:[w]);break;case"DISCONTINUITY":y++,T.tagList.push(["DIS"]);break;case"GAP":T.gap=!0,T.tagList.push([F]);break;case"BITRATE":T.tagList.push([F,w]),E=parseInt(w)*1e3,V(E)?T.bitrate=E:E=0;break;case"DATERANGE":{const k=new fe(w,l),B=new ba(k,l.dateRanges[k.ID],l.dateRangeTagCount);l.dateRangeTagCount++,B.isValid||l.skippedSegments?l.dateRanges[B.id]=B:ne.warn(`Ignoring invalid DATERANGE tag: "${w}"`),T.tagList.push(["EXT-X-DATERANGE",w]);break}case"DEFINE":{{const k=new fe(w,l);"IMPORT"in k?Pc(l,k,n):tn(l,k,t)}break}case"DISCONTINUITY-SEQUENCE":l.startCC!==0?lt(l,F,S):h.length>0&&gn(l,F,S),l.startCC=y=parseInt(w);break;case"KEY":{const k=ln(w,t,l);if(k.isSupported()){if(k.method==="NONE"){D=void 0;break}D||(D={});const B=D[k.keyFormat];B!=null&&B.matches(k)||(B&&(D=ae({},D)),D[k.keyFormat]=k)}else ne.warn(`[Keys] Ignoring unsupported EXT-X-KEY tag: "${w}"`);break}case"START":l.startTimeOffset=cn(w);break;case"MAP":{const k=new fe(w,l);if(T.duration){const B=new ni(i,c);dn(B,k,s,D),d=B,T.initSegment=d,d.rawProgramDateTime&&!T.rawProgramDateTime&&(T.rawProgramDateTime=d.rawProgramDateTime)}else{const B=T.byteRangeEndOffset;if(B){const G=T.byteRangeStartOffset;R=`${B-G}@${G}`}else R=null;dn(T,k,s,D),d=T,L=!0}d.cc=y;break}case"SERVER-CONTROL":{I&<(l,F,S),I=new fe(w),l.canBlockReload=I.bool("CAN-BLOCK-RELOAD"),l.canSkipUntil=I.optionalFloat("CAN-SKIP-UNTIL",0),l.canSkipDateRanges=l.canSkipUntil>0&&I.bool("CAN-SKIP-DATERANGES"),l.partHoldBack=I.optionalFloat("PART-HOLD-BACK",0),l.holdBack=I.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{l.partTarget&<(l,F,S);const k=new fe(w);l.partTarget=k.decimalFloatingPoint("PART-TARGET");break}case"PART":{let k=l.partList;k||(k=l.partList=[]);const B=f>0?k[k.length-1]:void 0,G=f++,N=new fe(w,l),U=new Pl(N,T,c,G,B);k.push(U),T.duration+=U.duration;break}case"PRELOAD-HINT":{const k=new fe(w,l);l.preloadHint=k;break}case"RENDITION-REPORT":{const k=new fe(w,l);l.renditionReports=l.renditionReports||[],l.renditionReports.push(k);break}default:ne.warn(`line parsed but not handled: ${S}`);break}}}v&&!v.relurl?(h.pop(),p-=v.duration,l.partList&&(l.fragmentHint=v)):l.partList&&(Ui(T,v,u),T.cc=y,l.fragmentHint=T,D&&fn(T,D,l)),l.targetduration||(l.playlistParsingError=new Error("Missing Target Duration"));const C=h.length,$=h[0],K=h[C-1];if(p+=l.skippedSegments*l.targetduration,p>0&&C&&K){l.averagetargetduration=p/C;const H=K.sn;l.endSN=H!=="initSegment"?H:0,l.live||(K.endList=!0),A>0&&(qc(h,A),$&&u.unshift($))}return l.fragmentHint&&(p+=l.fragmentHint.duration),l.totalduration=p,u.length&&l.dateRangeTagCount&&$&&ka(u,l),l.endCC=y,l}}function ka(a,e){let t=a.length;if(!t)if(e.hasProgramDateTime){const o=e.fragments[e.fragments.length-1];a.push(o),t++}else return;const s=a[t-1],i=e.live?1/0:e.totalduration,r=Object.keys(e.dateRanges);for(let o=r.length;o--;){const c=e.dateRanges[r[o]],l=c.startDate.getTime();c.tagAnchor=s.ref;for(let h=t;h--;){var n;if(((n=a[h])==null?void 0:n.sn)=o||s===0){var n;const c=(((n=t[s+1])==null?void 0:n.start)||i)-r.start;if(e<=o+c*1e3){const l=t[s].sn-a.startSN;if(l<0)return-1;const h=a.fragments;if(h.length>t.length){const d=(t[s+1]||h[h.length-1]).sn-a.startSN;for(let g=d;g>l;g--){const f=h[g].programDateTime;if(e>=f&&es);["video","audio","text"].forEach(s=>{const i=t.filter(r=>rr(r,s));i.length&&(e[`${s}Codec`]=i.map(r=>r.split("/")[0]).join(","),t=t.filter(r=>i.indexOf(r)===-1))}),e.unknownCodecs=t}function un(a,e,t){const s=e[t];s&&(a[t]=s)}function qc(a,e){let t=a[e];for(let s=e;s--;){const i=a[s];if(!i)return;i.programDateTime=t.programDateTime-i.duration*1e3,t=i}}function Ui(a,e,t){a.rawProgramDateTime?t.push(a):e!=null&&e.programDateTime&&(a.programDateTime=e.endProgramDateTime)}function dn(a,e,t,s){a.relurl=e.URI,e.BYTERANGE&&a.setByteRange(e.BYTERANGE),a.level=t,a.sn="initSegment",s&&(a.levelkeys=s),a.initSegment=null}function fn(a,e,t){a.levelkeys=e;const{encryptedFragments:s}=t;(!s.length||s[s.length-1].levelkeys!==e)&&Object.keys(e).some(i=>e[i].isCommonEncryption)&&s.push(a)}function lt(a,e,t){a.playlistParsingError=new Error(`#EXT-X-${e} must not appear more than once (${t[0]})`)}function gn(a,e,t){a.playlistParsingError=new Error(`#EXT-X-${e} must appear before the first Media Segment (${t[0]})`)}function hi(a,e){const t=e.startPTS;if(V(t)){let s=0,i;e.sn>a.sn?(s=t-a.start,i=a):(s=a.start-t,i=e),i.duration!==s&&i.setDuration(s)}else e.sn>a.sn?a.cc===e.cc&&a.minEndPTS?e.setStart(a.start+(a.minEndPTS-a.start)):e.setStart(a.start+a.duration):e.setStart(Math.max(a.start-e.duration,0))}function wa(a,e,t,s,i,r,n){s-t<=0&&(n.warn("Fragment should have a positive duration",e),s=t+e.duration,r=i+e.duration);let c=t,l=s;const h=e.startPTS,u=e.endPTS;if(V(h)){const E=Math.abs(h-t);a&&E>a.totalduration?n.warn(`media timestamps and playlist times differ by ${E}s for level ${e.level} ${a.url}`):V(e.deltaPTS)?e.deltaPTS=Math.max(E,e.deltaPTS):e.deltaPTS=E,c=Math.max(t,h),t=Math.min(t,h),i=e.startDTS!==void 0?Math.min(i,e.startDTS):i,l=Math.min(s,u),s=Math.max(s,u),r=e.endDTS!==void 0?Math.max(r,e.endDTS):r}const d=t-e.start;e.start!==0&&e.setStart(t),e.setDuration(s-e.start),e.startPTS=t,e.maxStartPTS=c,e.startDTS=i,e.endPTS=s,e.minEndPTS=l,e.endDTS=r;const g=e.sn;if(!a||ga.endSN)return 0;let f;const p=g-a.startSN,y=a.fragments;for(y[p]=e,f=p;f>0;f--)hi(y[f],y[f-1]);for(f=p;f=0;h--){const u=i[h].initSegment;if(u){s=u;break}}a.fragmentHint&&delete a.fragmentHint.endPTS;let r;Qc(a,e,(h,u,d,g)=>{if((!e.startCC||e.skippedSegments)&&u.cc!==h.cc){const f=h.cc-u.cc;for(let p=d;p{var u;h&&(!h.initSegment||h.initSegment.relurl===((u=s)==null?void 0:u.relurl))&&(h.initSegment=s)}),e.skippedSegments){if(e.deltaUpdateFailed=n.some(h=>!h),e.deltaUpdateFailed){t.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let h=e.skippedSegments;h--;)n.shift();e.startSN=n[0].sn}else{e.canSkipDateRanges&&(e.dateRanges=Xc(a.dateRanges,e,t));const h=a.fragments.filter(u=>u.rawProgramDateTime);if(a.hasProgramDateTime&&!e.hasProgramDateTime)for(let u=1;u{u.elementaryStreams=h.elementaryStreams,u.stats=h.stats}),r?wa(e,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS,t):Oa(a,e),n.length&&(e.totalduration=e.edge-n[0].start),e.driftStartTime=a.driftStartTime,e.driftStart=a.driftStart;const l=e.advancedDateTime;if(e.advanced&&l){const h=e.edge;e.driftStart||(e.driftStartTime=l,e.driftStart=h),e.driftEndTime=l,e.driftEnd=h}else e.driftEndTime=a.driftEndTime,e.driftEnd=a.driftEnd,e.advancedDateTime=a.advancedDateTime;e.requestScheduled===-1&&(e.requestScheduled=a.requestScheduled)}function Xc(a,e,t){const{dateRanges:s,recentlyRemovedDateranges:i}=e,r=ae({},a);i&&i.forEach(c=>{delete r[c]});const o=Object.keys(r).length;return o?(Object.keys(s).forEach(c=>{const l=r[c],h=new ba(s[c].attr,l);h.isValid?(r[c]=h,l||(h.tagOrder+=o)):t.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${ce(s[c].attr)}"`)}),r):s}function zc(a,e,t){if(a&&e){let s=0;for(let i=0,r=a.length;i<=r;i++){const n=a[i],o=e[i+s];n&&o&&n.index===o.index&&n.fragment.sn===o.fragment.sn?t(n,o):s--}}}function Qc(a,e,t){const s=e.skippedSegments,i=Math.max(a.startSN,e.startSN)-e.startSN,r=(a.fragmentHint?1:0)+(s?e.endSN:Math.min(a.endSN,e.endSN))-e.startSN,n=e.startSN-a.startSN,o=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,c=a.fragmentHint?a.fragments.concat(a.fragmentHint):a.fragments;for(let l=i;l<=r;l++){const h=c[n+l];let u=o[l];if(s&&!u&&h&&(u=e.fragments[l]=h),h&&u){t(h,u,l,o);const d=h.relurl,g=u.relurl;if(d&&Zc(d,g)){e.playlistParsingError=mn(`media sequence mismatch ${u.sn}:`,a,e,h,u);return}else if(h.cc!==u.cc){e.playlistParsingError=mn(`discontinuity sequence mismatch (${h.cc}!=${u.cc})`,a,e,h,u);return}}}}function mn(a,e,t,s,i){return new Error(`${a} ${i.url} Playlist starting @${e.startSN} ${e.m3u8} Playlist starting @${t.startSN} -${t.m3u8}`)}function Oa(a,e,t=!0){const s=e.startSN+e.skippedSegments-a.startSN,i=a.fragments,r=s>=0;let n=0;if(r&&se){const r=s[s.length-1].duration*1e3;r{var s;(s=e.details)==null||s.fragments.forEach(i=>{i.level=t,i.initSegment&&(i.initSegment.level=t)})})}function Zc(a,e){return a!==e&&e?yn(a)!==yn(e):!1}function yn(a){return a.replace(/\?[^?]*$/,"")}function Jt(a,e){for(let s=0,i=a.length;sa.startCC)}function En(a,e){const t=a.start+e;a.startPTS=t,a.setStart(t),a.endPTS=t+a.duration}function Ua(a,e){const t=e.fragments;for(let s=0,i=t.length;s{const{config:n,fragCurrent:o,media:c,mediaBuffer:l,state:h}=this,u=c?c.currentTime:0,d=Q.bufferInfo(l||c,u,n.maxBufferHole),g=!d.len;if(this.log(`Media seeking to ${K(u)?u.toFixed(3):u}, state: ${h}, ${g?"out of":"in"} buffer`),this.state===P.ENDED)this.resetLoadingState();else if(o){const f=n.maxFragLookUpTolerance,p=o.start-f,y=o.start+o.duration+f;if(g||yd.end){const E=u>y;(uf&&(this.lastCurrentTime=u),!this.loadingParts){const p=Math.max(d.end,u),y=this.shouldLoadParts(this.getLevelDetails(),p);y&&(this.log(`LL-Part loading ON after seeking to ${u.toFixed(2)} with buffer @${p.toFixed(2)}`),this.loadingParts=y)}}this.hls.hasEnoughToStart||(this.log(`Setting ${g?"startPosition":"nextLoadPosition"} to ${u} for seek without enough to start`),this.nextLoadPosition=u,g&&(this.startPosition=u)),g&&this.state===P.IDLE&&this.tickImmediate()},this.onMediaEnded=()=>{this.log("setting startPosition to 0 because media ended"),this.startPosition=this.lastCurrentTime=0},this.playlistType=r,this.hls=e,this.fragmentLoader=new Dc(e.config),this.keyLoader=s,this.fragmentTracker=t,this.config=e.config,this.decrypter=new or(e.config)}registerListeners(){const{hls:e}=this;e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(m.ERROR,this.onError,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){if(this.state===P.STOPPED)return;this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);const e=this.fragCurrent;e!=null&&e.loader&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=P.STOPPED}get startPositionValue(){const{nextLoadPosition:e,startPosition:t}=this;return t===-1&&e?e:t}get bufferingEnabled(){return this.buffering}pauseBuffering(){this.buffering=!1}resumeBuffering(){this.buffering=!0}get inFlightFrag(){return{frag:this.fragCurrent,state:this.state}}_streamEnded(e,t){if(t.live||!this.media)return!1;const s=e.end||0,i=this.config.timelineOffset||0;if(s<=i)return!1;const r=e.buffered;this.config.maxBufferHole&&r&&r.length>1&&(e=Q.bufferedInfo(r,e.start,0));const n=e.nextStart;if(n&&n>i&&n{const n=r.frag;if(this.fragContextChanged(n)){this.warn(`${n.type} sn: ${n.sn}${r.part?" part: "+r.part.index:""} of ${this.fragInfo(n,!1,r.part)}) was dropped during download.`),this.fragmentTracker.removeFragment(n);return}n.stats.chunkCount++,this._handleFragmentLoadProgress(r)};this._doFragLoad(e,t,s,i).then(r=>{if(!r)return;const n=this.state,o=r.frag;if(this.fragContextChanged(o)){(n===P.FRAG_LOADING||!this.fragCurrent&&n===P.PARSING)&&(this.fragmentTracker.removeFragment(o),this.state=P.IDLE);return}"payload"in r&&(this.log(`Loaded ${o.type} sn: ${o.sn} of ${this.playlistLabel()} ${o.level}`),this.hls.trigger(m.FRAG_LOADED,r)),this._handleFragmentLoadComplete(r)}).catch(r=>{this.state===P.STOPPED||this.state===P.ERROR||(this.warn(`Frag error: ${r?.message||r}`),this.resetFragmentLoading(e))})}clearTrackerIfNeeded(e){var t;const{fragmentTracker:s}=this;if(s.getState(e)===Ie.APPENDING){const r=e.type,n=this.getFwdBufferInfo(this.mediaBuffer,r),o=Math.max(e.duration,n?n.len:this.config.maxBufferLength),c=this.backtrackFragment;((c?e.sn-c.sn:0)===1||this.reduceMaxBufferLength(o,e.duration))&&s.removeFragment(e)}else((t=this.mediaBuffer)==null?void 0:t.buffered.length)===0?s.removeAllFragments():s.hasParts(e.type)&&(s.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),s.getState(e)===Ie.PARTIAL&&s.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}waitForLive(e){const t=e.details;return t?.live&&t.type!=="EVENT"&&(this.levelLastLoaded!==e||t.expired)}flushMainBuffer(e,t,s=null){if(!(e-t))return;const i={startOffset:e,endOffset:t,type:s};this.hls.trigger(m.BUFFER_FLUSHING,i)}_loadInitSegment(e,t){this._doFragLoad(e,t).then(s=>{const i=s?.frag;if(!i||this.fragContextChanged(i)||!this.levels)throw new Error("init load aborted");return s}).then(s=>{const{hls:i}=this,{frag:r,payload:n}=s,o=r.decryptdata;if(n&&n.byteLength>0&&o!=null&&o.key&&o.iv&&Kt(o.method)){const c=self.performance.now();return this.decrypter.decrypt(new Uint8Array(n),o.key.buffer,o.iv.buffer,cr(o.method)).catch(l=>{throw i.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_DECRYPT_ERROR,fatal:!1,error:l,reason:l.message,frag:r}),l}).then(l=>{const h=self.performance.now();return i.trigger(m.FRAG_DECRYPTED,{frag:r,payload:l,stats:{tstart:c,tdecrypt:h}}),s.payload=l,this.completeInitSegmentLoad(s)})}return this.completeInitSegmentLoad(s)}).catch(s=>{this.state===P.STOPPED||this.state===P.ERROR||(this.warn(s),this.resetFragmentLoading(e))})}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const s=e.frag.stats;this.state!==P.STOPPED&&(this.state=P.IDLE),e.frag.data=new Uint8Array(e.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),this.tick()}unhandledEncryptionError(e,t){var s,i;const r=e.tracks;if(r&&!t.encrypted&&((s=r.audio)!=null&&s.encrypted||(i=r.video)!=null&&i.encrypted)&&(!this.config.emeEnabled||!this.keyLoader.emeController)){const n=this.media,o=new Error(`Encrypted track with no key in ${this.fragInfo(t)} (media ${n?"attached mediaKeys: "+n.mediaKeys:"detached"})`);return this.warn(o.message),!n||n.mediaKeys?!1:(this.hls.trigger(m.ERROR,{type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_KEYS,fatal:!1,error:o,frag:t}),this.resetTransmuxer(),!0)}return!1}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){const s=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.fragInfo(e,!1,t)} > buffer:${s?th.toString(Q.getBuffered(s)):"(detached)"})`),Te(e)){var i;if(e.type!==Y.SUBTITLE){const n=e.elementaryStreams;if(!Object.keys(n).some(o=>!!n[o])){this.state=P.IDLE;return}}const r=(i=this.levels)==null?void 0:i[e.level];r!=null&&r.fragmentError&&(this.log(`Resetting level fragment error count of ${r.fragmentError} on frag buffered`),r.fragmentError=0)}this.state=P.IDLE}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:s,part:i,partsLoaded:r}=e,n=!r||r.length===0||r.some(c=>!c),o=new lr(s.level,s.sn,s.stats.chunkCount+1,0,i?i.index:-1,!n);t.flush(o)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,s=null,i){var r;this.fragCurrent=e;const n=t.details;if(!this.levels||!n)throw new Error(`frag load aborted, missing level${n?"":" detail"}s`);let o=null;if(e.encrypted&&!((r=e.decryptdata)!=null&&r.key)){if(this.log(`Loading key for ${e.sn} of [${n.startSN}-${n.endSN}], ${this.playlistLabel()} ${e.level}`),this.state=P.KEY_LOADING,this.fragCurrent=e,o=this.keyLoader.load(e).then(d=>{if(!this.fragContextChanged(d.frag))return this.hls.trigger(m.KEY_LOADED,d),this.state===P.KEY_LOADING&&(this.state=P.IDLE),d}),this.hls.trigger(m.KEY_LOADING,{frag:e}),this.fragCurrent===null)return this.log("context changed in KEY_LOADING"),Promise.resolve(null)}else e.encrypted||(o=this.keyLoader.loadClear(e,n.encryptedFragments,this.startFragRequested),o&&this.log("[eme] blocking frag load until media-keys acquired"));const c=this.fragPrevious;if(Te(e)&&(!c||e.sn!==c.sn)){const d=this.shouldLoadParts(t.details,e.end);d!==this.loadingParts&&(this.log(`LL-Part loading ${d?"ON":"OFF"} loading sn ${c?.sn}->${e.sn}`),this.loadingParts=d)}if(s=Math.max(e.start,s||0),this.loadingParts&&Te(e)){const d=n.partList;if(d&&i){s>n.fragmentEnd&&n.fragmentHint&&(e=n.fragmentHint);const g=this.getNextPart(d,e,s);if(g>-1){const f=d[g];e=this.fragCurrent=f.fragment,this.log(`Loading ${e.type} sn: ${e.sn} part: ${f.index} (${g}/${d.length-1}) of ${this.fragInfo(e,!1,f)}) cc: ${e.cc} [${n.startSN}-${n.endSN}], target: ${parseFloat(s.toFixed(3))}`),this.nextLoadPosition=f.start+f.duration,this.state=P.FRAG_LOADING;let p;return o?p=o.then(y=>!y||this.fragContextChanged(y.frag)?null:this.doFragPartsLoad(e,f,t,i)).catch(y=>this.handleFragLoadError(y)):p=this.doFragPartsLoad(e,f,t,i).catch(y=>this.handleFragLoadError(y)),this.hls.trigger(m.FRAG_LOADING,{frag:e,part:f,targetBufferTime:s}),this.fragCurrent===null?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):p}else if(!e.url||this.loadedEndOfParts(d,s))return Promise.resolve(null)}}if(Te(e)&&this.loadingParts){var l;this.log(`LL-Part loading OFF after next part miss @${s.toFixed(2)} Check buffer at sn: ${e.sn} loaded parts: ${(l=n.partList)==null?void 0:l.filter(d=>d.loaded).map(d=>`[${d.start}-${d.end}]`)}`),this.loadingParts=!1}else if(!e.url)return Promise.resolve(null);this.log(`Loading ${e.type} sn: ${e.sn} of ${this.fragInfo(e,!1)}) cc: ${e.cc} ${"["+n.startSN+"-"+n.endSN+"]"}, target: ${parseFloat(s.toFixed(3))}`),K(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=P.FRAG_LOADING;const h=this.config.progressive&&e.type!==Y.SUBTITLE;let u;return h&&o?u=o.then(d=>!d||this.fragContextChanged(d.frag)?null:this.fragmentLoader.load(e,i)).catch(d=>this.handleFragLoadError(d)):u=Promise.all([this.fragmentLoader.load(e,h?i:void 0),o]).then(([d])=>(!h&&i&&i(d),d)).catch(d=>this.handleFragLoadError(d)),this.hls.trigger(m.FRAG_LOADING,{frag:e,targetBufferTime:s}),this.fragCurrent===null?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):u}doFragPartsLoad(e,t,s,i){return new Promise((r,n)=>{var o;const c=[],l=(o=s.details)==null?void 0:o.partList,h=u=>{this.fragmentLoader.loadPart(e,u,i).then(d=>{c[u.index]=d;const g=d.part;this.hls.trigger(m.FRAG_LOADED,d);const f=pn(s.details,e.sn,u.index+1)||Na(l,e.sn,u.index+1);if(f)h(f);else return r({frag:e,part:g,partsLoaded:c})}).catch(n)};h(t)})}handleFragLoadError(e){if("data"in e){const t=e.data;t.frag&&t.details===_.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):t.frag&&t.type===W.KEY_SYSTEM_ERROR?(t.frag.abortRequests(),this.resetStartWhenNotLoaded(),this.resetFragmentLoading(t.frag)):this.hls.trigger(m.ERROR,t)}else this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==P.PARSING){!this.fragCurrent&&this.state!==P.STOPPED&&this.state!==P.ERROR&&(this.state=P.IDLE);return}const{frag:s,part:i,level:r}=t,n=self.performance.now();s.stats.parsing.end=n,i&&(i.stats.parsing.end=n);const o=this.getLevelDetails(),l=o&&s.sn>o.endSN||this.shouldLoadParts(o,s.end);l!==this.loadingParts&&(this.log(`LL-Part loading ${l?"ON":"OFF"} after parsing segment ending @${s.end.toFixed(2)}`),this.loadingParts=l),this.updateLevelTiming(s,i,r,e.partial)}shouldLoadParts(e,t){if(this.config.lowLatencyMode){if(!e)return this.loadingParts;if(e.partList){var s;const r=e.partList[0];if(r.fragment.type===Y.SUBTITLE)return!1;const n=r.end+(((s=e.fragmentHint)==null?void 0:s.duration)||0);if(t>=n){var i;if((this.hls.hasEnoughToStart?((i=this.media)==null?void 0:i.currentTime)||this.lastCurrentTime:this.getLoadPosition())>r.start-r.fragment.duration)return!0}}}return!1}getCurrentContext(e){const{levels:t,fragCurrent:s}=this,{level:i,sn:r,part:n}=e;if(!(t!=null&&t[i]))return this.warn(`Levels object was unset while buffering fragment ${r} of ${this.playlistLabel()} ${i}. The current chunk will not be buffered.`),null;const o=t[i],c=o.details,l=n>-1?pn(c,r,n):null,h=l?l.fragment:Ma(c,r,s);return h?(s&&s!==h&&(h.stats=s.stats),{frag:h,part:l,level:o}):null}bufferFragmentData(e,t,s,i,r){if(this.state!==P.PARSING)return;const{data1:n,data2:o}=e;let c=n;if(o&&(c=He(n,o)),!c.length)return;const l=this.initPTS[t.cc],h=l?-l.baseTime/l.timescale:void 0,u={type:e.type,frag:t,part:s,chunkMeta:i,offset:h,parent:t.type,data:c};if(this.hls.trigger(m.BUFFER_APPENDING,u),e.dropped&&e.independent&&!s){if(r)return;this.flushBufferGap(t)}}flushBufferGap(e){const t=this.media;if(!t)return;if(!Q.isBuffered(t,t.currentTime)){this.flushMainBuffer(0,e.start);return}const s=t.currentTime,i=Q.bufferInfo(t,s,0),r=e.duration,n=Math.min(this.config.maxFragLookUpTolerance*2,r*.25),o=Math.max(Math.min(e.start-n,i.end-n),s+n);e.start-o>n&&this.flushMainBuffer(o,e.start)}getFwdBufferInfo(e,t){var s;const i=this.getLoadPosition();if(!K(i))return null;const n=this.lastCurrentTime>i||(s=this.media)!=null&&s.paused?0:this.config.maxBufferHole;return this.getFwdBufferInfoAtPos(e,i,t,n)}getFwdBufferInfoAtPos(e,t,s,i){const r=Q.bufferInfo(e,t,i);if(r.len===0&&r.nextStart!==void 0){const n=this.fragmentTracker.getBufferedFrag(t,s);if(n&&(r.nextStart<=n.end||n.gap)){const o=Math.max(Math.min(r.nextStart,n.end)-t,i);return Q.bufferInfo(e,t,o)}}return r}getMaxBufferLength(e){const{config:t}=this;let s;return e?s=Math.max(8*t.maxBufferSize/e,t.maxBufferLength):s=t.maxBufferLength,Math.min(s,t.maxMaxBufferLength)}reduceMaxBufferLength(e,t){const s=this.config,i=Math.max(Math.min(e-t,s.maxBufferLength),t),r=Math.max(e-t*3,s.maxMaxBufferLength/2,i);return r>=i?(s.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0):!1}getAppendedFrag(e,t=Y.MAIN){const s=this.fragmentTracker?this.fragmentTracker.getAppendedFrag(e,t):null;return s&&"fragment"in s?s.fragment:s}getNextFragment(e,t){const s=t.fragments,i=s.length;if(!i)return null;const{config:r}=this,n=s[0].start,o=r.lowLatencyMode&&!!t.partList;let c=null;if(t.live){const u=r.initialLiveManifestSize;if(i=n?d:g)||c.start:e;this.log(`Setting startPosition to ${f} to match start frag at live edge. mainStart: ${d} liveSyncPosition: ${g} frag.start: ${(l=c)==null?void 0:l.start}`),this.startPosition=this.nextLoadPosition=f}}else e<=n&&(c=s[0]);if(!c){const u=this.loadingParts?t.partEnd:t.fragmentEnd;c=this.getFragmentAtPosition(e,u,t)}let h=this.filterReplacedPrimary(c,t);if(!h&&c){const u=c.sn-t.startSN;h=this.filterReplacedPrimary(s[u+1]||null,t)}return this.mapToInitFragWhenRequired(h)}isLoopLoading(e,t){const s=this.fragmentTracker.getState(e);return(s===Ie.OK||s===Ie.PARTIAL&&!!e.gap)&&this.nextLoadPosition>t}getNextFragmentLoopLoading(e,t,s,i,r){let n=null;if(e.gap&&(n=this.getNextFragment(this.nextLoadPosition,t),n&&!n.gap&&s.nextStart)){const o=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,s.nextStart,i,0);if(o!==null&&s.len+o.len>=r){const c=n.sn;return this.loopSn!==c&&(this.log(`buffer full after gaps in "${i}" playlist starting at sn: ${c}`),this.loopSn=c),null}}return this.loopSn=void 0,n}get primaryPrefetch(){if(vn(this.config)){var e;if((e=this.hls.interstitialsManager)==null||(e=e.playingItem)==null?void 0:e.event)return!0}return!1}filterReplacedPrimary(e,t){if(!e)return e;if(vn(this.config)&&e.type!==Y.SUBTITLE){const s=this.hls.interstitialsManager,i=s?.bufferingItem;if(i){const n=i.event;if(n){if(n.appendInPlace||Math.abs(e.start-i.start)>1||i.start===0)return null}else if(e.end<=i.start&&t?.live===!1||e.start>i.end&&i.nextEvent&&(i.nextEvent.appendInPlace||e.start-i.end>1))return null}const r=s?.playerQueue;if(r)for(let n=r.length;n--;){const o=r[n].interstitial;if(o.appendInPlace&&e.start>=o.startTime&&e.end<=o.resumeTime)return null}}return e}mapToInitFragWhenRequired(e){return e!=null&&e.initSegment&&!e.initSegment.data&&!this.bitrateTest?e.initSegment:e}getNextPart(e,t,s){let i=-1,r=!1,n=!0;for(let o=0,c=e.length;o-1&&ss.start)return!0}return!1}getInitialLiveFragment(e){const t=e.fragments,s=this.fragPrevious;let i=null;if(s){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`),i=yc(t,s.endProgramDateTime,this.config.maxFragLookUpTolerance)),!i){const r=s.sn+1;if(r>=e.startSN&&r<=e.endSN){const n=t[r-e.startSN];s.cc===n.cc&&(i=n,this.log(`Live playlist, switching playlist, load frag with next SN: ${i.sn}`))}i||(i=xa(e,s.cc,s.end),i&&this.log(`Live playlist, switching playlist, load frag with same CC: ${i.sn}`))}}else{const r=this.hls.liveSyncPosition;r!==null&&(i=this.getFragmentAtPosition(r,this.bitrateTest?e.fragmentEnd:e.edge,e))}return i}getFragmentAtPosition(e,t,s){const{config:i}=this;let{fragPrevious:r}=this,{fragments:n,endSN:o}=s;const{fragmentHint:c}=s,{maxFragLookUpTolerance:l}=i,h=s.partList,u=!!(this.loadingParts&&h!=null&&h.length&&c);u&&!this.bitrateTest&&h[h.length-1].fragment.sn===c.sn&&(n=n.concat(c),o=c.sn);let d;if(et-l||(g=this.media)!=null&&g.paused||!this.startFragRequested?0:l;d=Pt(r,n,e,p)}else d=n[n.length-1];if(d){const f=d.sn-s.startSN,p=this.fragmentTracker.getState(d);if((p===Ie.OK||p===Ie.PARTIAL&&d.gap)&&(r=d),r&&d.sn===r.sn&&(!u||h[0].fragment.sn>d.sn||!s.live)&&d.level===r.level){const E=n[f+1];d.sn${e.startSN} fragments: ${i}`),c}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,e.partTarget*3)}setStartPosition(e,t){let s=this.startPosition;s=0&&(s=this.nextLoadPosition),s}handleFragLoadAborted(e,t){this.transmuxer&&e.type===this.playlistType&&Te(e)&&e.stats.aborted&&(this.log(`Fragment ${e.sn}${t?" part "+t.index:""} of ${this.playlistLabel()} ${e.level} was aborted`),this.resetFragmentLoading(e))}resetFragmentLoading(e){(!this.fragCurrent||!this.fragContextChanged(e)&&this.state!==P.FRAG_LOADING_WAITING_RETRY)&&(this.state=P.IDLE)}onFragmentOrKeyLoadError(e,t){var s;if(t.chunkMeta&&!t.frag){const E=this.getCurrentContext(t.chunkMeta);E&&(t.frag=E.frag)}const i=t.frag;if(!i||i.type!==e||!this.levels)return;if(this.fragContextChanged(i)){var r;this.warn(`Frag load error must match current frag to retry ${i.url} > ${(r=this.fragCurrent)==null?void 0:r.url}`);return}const n=t.details===_.FRAG_GAP;n&&this.fragmentTracker.fragBuffered(i,!0);const o=t.errorAction;if(!o){this.state=P.ERROR;return}const{action:c,flags:l,retryCount:h=0,retryConfig:u}=o,d=!!u,g=d&&c===Re.RetryRequest,f=d&&!o.resolved&&l===Ue.MoveAllAlternatesMatchingHost,p=(s=this.hls.latestLevelDetails)==null?void 0:s.live;if(!g&&f&&Te(i)&&!i.endList&&p&&!Ia(t))this.resetFragmentErrors(e),this.treatAsGap(i),o.resolved=!0;else if((g||f)&&h=t||s&&!Mi(0))&&(s&&this.log("Connection restored (online)"),this.resetStartWhenNotLoaded(),this.state=P.IDLE)}reduceLengthAndFlushBuffer(e){if(this.state===P.PARSING||this.state===P.PARSED){const t=e.frag,s=e.parent,i=this.getFwdBufferInfo(this.mediaBuffer,s),r=i&&i.len>.5;r&&this.reduceMaxBufferLength(i.len,t?.duration||10);const n=!r;return n&&this.warn(`Buffer full error while media.currentTime (${this.getLoadPosition()}) is not buffered, flush ${s} buffer`),t&&(this.fragmentTracker.removeFragment(t),this.nextLoadPosition=t.start),this.resetLoadingState(),n}return!1}resetFragmentErrors(e){e===Y.AUDIO&&(this.fragCurrent=null),this.hls.hasEnoughToStart||(this.startFragRequested=!1),this.state!==P.STOPPED&&(this.state=P.IDLE)}afterBufferFlushed(e,t,s){if(!e)return;const i=Q.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,i,s),this.state===P.ENDED&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state!==P.STOPPED&&(this.state=P.IDLE)}resetStartWhenNotLoaded(){if(!this.hls.hasEnoughToStart){this.startFragRequested=!1;const e=this.levelLastLoaded,t=e?e.details:null;t!=null&&t.live?(this.log("resetting startPosition for live start"),this.startPosition=-1,this.setStartPosition(t,t.fragmentStart),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(e){this.log(`Loading context changed while buffering sn ${e.sn} of ${this.playlistLabel()} ${e.level===-1?"":e.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(),this.resetLoadingState()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,s,i){const r=s.details;if(!r){this.warn("level.details undefined");return}if(!Object.keys(e.elementaryStreams).reduce((c,l)=>{const h=e.elementaryStreams[l];if(h){const u=h.endPTS-h.startPTS;if(u<=0)return this.warn(`Could not parse fragment ${e.sn} ${l} duration reliably (${u})`),c||!1;const d=i?0:wa(r,e,h.startPTS,h.endPTS,h.startDTS,h.endDTS,this);return this.hls.trigger(m.LEVEL_PTS_UPDATED,{details:r,level:s,drift:d,type:l,frag:e,start:h.startPTS,end:h.endPTS}),!0}return c},!1)){var o;const c=((o=this.transmuxer)==null?void 0:o.error)===null;if((s.fragmentError===0||c&&(s.fragmentError<2||e.endList))&&this.treatAsGap(e,s),c){const l=new Error(`Found no media in fragment ${e.sn} of ${this.playlistLabel()} ${e.level} resetting transmuxer to fallback to playlist timing`);if(this.warn(l.message),this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,fatal:!1,error:l,frag:e,reason:`Found no media in msn ${e.sn} of ${this.playlistLabel()} "${s.url}"`}),!this.hls)return;this.resetTransmuxer()}}this.state=P.PARSED,this.log(`Parsed ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.fragInfo(e,!1,t)})`),this.hls.trigger(m.FRAG_PARSED,{frag:e,part:t})}playlistLabel(){return this.playlistType===Y.MAIN?"level":"track"}fragInfo(e,t=!0,s){var i,r;return`${this.playlistLabel()} ${e.level} (${s?"part":"frag"}:[${((i=t&&!s?e.startPTS:(s||e).start)!=null?i:NaN).toFixed(3)}-${((r=t&&!s?e.endPTS:(s||e).end)!=null?r:NaN).toFixed(3)}]${s&&e.type==="main"?"INDEPENDENT="+(s.independent?"YES":"NO"):""}`}treatAsGap(e,t){t&&t.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)}resetTransmuxer(){var e;(e=this.transmuxer)==null||e.reset()}recoverWorkerError(e){e.event==="demuxerWorker"&&(this.fragmentTracker.removeAllFragments(),this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null),this.resetStartWhenNotLoaded(),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}function vn(a){return!!a.interstitialsController&&a.enableInterstitialPlayback!==!1}class Ga{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let s;if(e.length)e.length===1?s=e[0]:s=sh(e,t);else return new Uint8Array(0);return this.reset(),s}reset(){this.chunks.length=0,this.dataLength=0}}function sh(a,e){const t=new Uint8Array(e);let s=0;for(let i=0;i0)return a.subarray(t,t+s)}function ch(a,e,t,s){const i=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],r=e[t+2],n=r>>2&15;if(n>12){const g=new Error(`invalid ADTS sampling index:${n}`);a.emit(m.ERROR,m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,fatal:!0,error:g,reason:g.message});return}const o=(r>>6&3)+1,c=e[t+3]>>6&3|(r&1)<<2,l="mp4a.40."+o,h=i[n];let u=n;(o===5||o===29)&&(u-=3);const d=[o<<3|(u&14)>>1,(u&1)<<7|c<<3];return ne.log(`manifest codec:${s}, parsed codec:${l}, channels:${c}, rate:${h} (ADTS object type:${o} sampling index:${n})`),{config:d,samplerate:h,channelCount:c,codec:l,parsedCodec:l,manifestCodec:s}}function Va(a,e){return a[e]===255&&(a[e+1]&246)===240}function Ha(a,e){return a[e+1]&1?7:9}function gr(a,e){return(a[e+3]&3)<<11|a[e+4]<<3|(a[e+5]&224)>>>5}function hh(a,e){return e+5=a.length)return!1;const s=gr(a,e);if(s<=t)return!1;const i=e+s;return i===a.length||Ws(a,i)}return!1}function Ya(a,e,t,s,i){if(!a.samplerate){const r=ch(e,t,s,i);if(!r)return;ae(a,r)}}function Wa(a){return 1024*9e4/a}function fh(a,e){const t=Ha(a,e);if(e+t<=a.length){const s=gr(a,e)-t;if(s>0)return{headerLength:t,frameLength:s}}}function qa(a,e,t,s,i){const r=Wa(a.samplerate),n=s+i*r,o=fh(e,t);let c;if(o){const{frameLength:u,headerLength:d}=o,g=d+u,f=Math.max(0,t+g-e.length);f?(c=new Uint8Array(g-d),c.set(e.subarray(t+d,e.length),0)):c=e.subarray(t+d,t+g);const p={unit:c,pts:n};return f||a.samples.push(p),{sample:p,length:g,missing:f}}const l=e.length-t;return c=new Uint8Array(l),c.set(e.subarray(t,e.length),0),{sample:{unit:c,pts:n},length:l,missing:-1}}function gh(a,e){return fr(a,e)&&Xs(a,e+6)+10<=a.length-e}function mh(a){return a instanceof ArrayBuffer?a:a.byteOffset==0&&a.byteLength==a.buffer.byteLength?a.buffer:new Uint8Array(a).buffer}function di(a,e=0,t=1/0){return ph(a,e,t,Uint8Array)}function ph(a,e,t,s){const i=yh(a);let r=1;"BYTES_PER_ELEMENT"in s&&(r=s.BYTES_PER_ELEMENT);const n=Eh(a)?a.byteOffset:0,o=(n+a.byteLength)/r,c=(n+e)/r,l=Math.floor(Math.max(0,Math.min(c,o))),h=Math.floor(Math.min(l+Math.max(t,0),o));return new s(i,l,h-l)}function yh(a){return a instanceof ArrayBuffer?a:a.buffer}function Eh(a){return a&&a.buffer instanceof ArrayBuffer&&a.byteLength!==void 0&&a.byteOffset!==void 0}function vh(a){const e={key:a.type,description:"",data:"",mimeType:null,pictureType:null},t=3;if(a.size<2)return;if(a.data[0]!==t){console.log("Ignore frame with unrecognized character encoding");return}const s=a.data.subarray(1).indexOf(0);if(s===-1)return;const i=Ve(di(a.data,1,s)),r=a.data[2+s],n=a.data.subarray(3+s).indexOf(0);if(n===-1)return;const o=Ve(di(a.data,3+s,n));let c;return i==="-->"?c=Ve(di(a.data,4+s+n)):c=mh(a.data.subarray(4+s+n)),e.mimeType=i,e.pictureType=r,e.description=o,e.data=c,e}function Th(a){if(a.size<2)return;const e=Ve(a.data,!0),t=new Uint8Array(a.data.subarray(e.length+1));return{key:a.type,info:e,data:t.buffer}}function Sh(a){if(a.size<2)return;if(a.type==="TXXX"){let t=1;const s=Ve(a.data.subarray(t),!0);t+=s.length+1;const i=Ve(a.data.subarray(t));return{key:a.type,info:s,data:i}}const e=Ve(a.data.subarray(1));return{key:a.type,info:"",data:e}}function xh(a){if(a.type==="WXXX"){if(a.size<2)return;let t=1;const s=Ve(a.data.subarray(t),!0);t+=s.length+1;const i=Ve(a.data.subarray(t));return{key:a.type,info:s,data:i}}const e=Ve(a.data);return{key:a.type,info:"",data:e}}function Ah(a){return a.type==="PRIV"?Th(a):a.type[0]==="W"?xh(a):a.type==="APIC"?vh(a):Sh(a)}function Ih(a){const e=String.fromCharCode(a[0],a[1],a[2],a[3]),t=Xs(a,4),s=10;return{type:e,size:t,data:a.subarray(s,s+t)}}const ms=10,Lh=10;function ja(a){let e=0;const t=[];for(;fr(a,e);){const s=Xs(a,e+6);a[e+5]>>6&1&&(e+=ms),e+=ms;const i=e+s;for(;e+Lh0&&o.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:Ke.audioId3,duration:Number.POSITIVE_INFINITY});i{if(K(a))return a*90;const s=t?t.baseTime*9e4/t.timescale:0;return e*9e4+s};let ps=null;const _h=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Dh=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Ch=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Ph=[0,1,1,4];function za(a,e,t,s,i){if(t+24>e.length)return;const r=Qa(e,t);if(r&&t+r.frameLength<=e.length){const n=r.samplesPerFrame*9e4/r.sampleRate,o=s+i*n,c={unit:e.subarray(t,t+r.frameLength),pts:o,dts:o};return a.config=[],a.channelCount=r.channelCount,a.samplerate=r.sampleRate,a.samples.push(c),{sample:c,length:r.frameLength,missing:0}}}function Qa(a,e){const t=a[e+1]>>3&3,s=a[e+1]>>1&3,i=a[e+2]>>4&15,r=a[e+2]>>2&3;if(t!==1&&i!==0&&i!==15&&r!==3){const n=a[e+2]>>1&1,o=a[e+3]>>6,c=t===3?3-s:s===3?3:4,l=_h[c*14+i-1]*1e3,u=Dh[(t===3?0:t===2?1:2)*3+r],d=o===3?1:2,g=Ch[t][s],f=Ph[s],p=g*8*f,y=Math.floor(g*l/u+n)*f;if(ps===null){const T=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);ps=T?parseInt(T[1]):0}return ps&&ps<=87&&s===2&&l>=224e3&&o===0&&(a[e+3]=a[e+3]|128),{sampleRate:u,channelCount:d,frameLength:y,samplesPerFrame:p}}}function yr(a,e){return a[e]===255&&(a[e+1]&224)===224&&(a[e+1]&6)!==0}function Za(a,e){return e+1{let t=0,s=5;e+=s;const i=new Uint32Array(1),r=new Uint32Array(1),n=new Uint8Array(1);for(;s>0;){n[0]=a[e];const o=Math.min(s,8),c=8-o;r[0]=4278190080>>>24+c<>c,t=t?t<e.length||e[t]!==11||e[t+1]!==119)return-1;const r=e[t+4]>>6;if(r>=3)return-1;const o=[48e3,44100,32e3][r],c=e[t+4]&63,h=[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][c*3+r]*2;if(t+h>e.length)return-1;const u=e[t+6]>>5;let d=0;u===2?d+=2:(u&1&&u!==1&&(d+=2),u&4&&(d+=2));const g=(e[t+6]<<8|e[t+7])>>12-d&1,p=[2,1,2,3,3,4,4,5][u]+g,y=e[t+5]>>3,E=e[t+5]&7,v=new Uint8Array([r<<6|y<<1|E>>2,(E&3)<<6|u<<3|g<<2|c>>4,c<<4&224]),T=1536/o*9e4,S=s+i*T,x=e.subarray(t,t+h);return a.config=v,a.channelCount=p,a.samplerate=o,a.samples.push({unit:x,pts:S}),h}class Fh extends pr{resetInitSegment(e,t,s,i){super.resetInitSegment(e,t,s,i),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:t,duration:i,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=as(e,0);let s=t?.length||0;if(t&&e[s]===11&&e[s+1]===119&&mr(t)!==void 0&&eo(e,s)<=16)return!1;for(let i=e.length;s{const n=Vl(r);if(Mh.test(n.schemeIdUri)){const o=Sn(n,t);let c=n.eventDuration===4294967295?Number.POSITIVE_INFINITY:n.eventDuration/n.timeScale;c<=.001&&(c=Number.POSITIVE_INFINITY);const l=n.payload;s.samples.push({data:l,len:l.byteLength,dts:o,pts:o,type:Ke.emsg,duration:c})}else if(this.config.enableEmsgKLVMetadata&&n.schemeIdUri.startsWith("urn:misb:KLV:bin:1910.1")){const o=Sn(n,t);s.samples.push({data:n.payload,len:n.payload.byteLength,dts:o,pts:o,type:Ke.misbklv,duration:Number.POSITIVE_INFINITY})}})}return s}demuxSampleAes(e,t,s){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){this.config=null,this.remainderData=null,this.videoTrack=this.audioTrack=this.id3Track=this.txtTrack=void 0}}function Sn(a,e){return K(a.presentationTime)?a.presentationTime/a.timeScale:e+a.presentationTimeDelta/a.timeScale}class Bh{constructor(e,t,s){this.keyData=void 0,this.decrypter=void 0,this.keyData=s,this.decrypter=new or(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer,Lt.cbc)}decryptAacSample(e,t,s){const i=e[t].unit;if(i.length<=16)return;const r=i.subarray(16,i.length-i.length%16),n=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(n).then(o=>{const c=new Uint8Array(o);i.set(c,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,s)}).catch(s)}decryptAacSamples(e,t,s){for(;;t++){if(t>=e.length){s();return}if(!(e[t].unit.length<32)&&(this.decryptAacSample(e,t,s),!this.decrypter.isSync()))return}}getAvcEncryptedData(e){const t=Math.floor((e.length-48)/160)*16+16,s=new Int8Array(t);let i=0;for(let r=32;r{r.data=this.getAvcDecryptedUnit(n,c),this.decrypter.isSync()||this.decryptAvcSamples(e,t,s+1,i)}).catch(i)}decryptAvcSamples(e,t,s,i){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,s=0){if(t>=e.length){i();return}const r=e[t].units;for(;!(s>=r.length);s++){const n=r[s];if(!(n.data.length<=48||n.type!==1&&n.type!==5)&&(this.decryptAvcSample(e,t,s,i,n),!this.decrypter.isSync()))return}}}}class so{constructor(){this.VideoSample=null}createVideoSample(e,t,s){return{key:e,frame:!1,pts:t,dts:s,units:[],length:0}}getLastNalUnit(e){var t;let s=this.VideoSample,i;if((!s||s.units.length===0)&&(s=e[e.length-1]),(t=s)!=null&&t.units){const r=s.units;i=r[r.length-1]}return i}pushAccessUnit(e,t){if(e.units.length&&e.frame){if(e.pts===void 0){const s=t.samples,i=s.length;if(i){const r=s[i-1];e.pts=r.pts,e.dts=r.dts}else{t.dropped++;return}}t.samples.push(e)}}parseNALu(e,t,s){const i=t.byteLength;let r=e.naluState||0;const n=r,o=[];let c=0,l,h,u,d=-1,g=0;for(r===-1&&(d=0,g=this.getNALuType(t,0),r=0,c=1);c=0){const f={data:t.subarray(d,h),type:g};o.push(f)}else{const f=this.getLastNalUnit(e.samples);f&&(n&&c<=4-n&&f.state&&(f.data=f.data.subarray(0,f.data.byteLength-n)),h>0&&(f.data=He(f.data,t.subarray(0,h)),f.state=0))}c=0&&r>=0){const f={data:t.subarray(d,i),type:g,state:r};o.push(f)}if(o.length===0){const f=this.getLastNalUnit(e.samples);f&&(f.data=He(f.data,t))}return e.naluState=r,o}}class es{constructor(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const e=this.data,t=this.bytesAvailable,s=e.byteLength-t,i=new Uint8Array(4),r=Math.min(4,t);if(r===0)throw new Error("no bytes available");i.set(e.subarray(s,s+r)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=r*8,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,this.bytesAvailable*8+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const s=this.word>>>32-t;if(e>32&&ne.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else if(this.bytesAvailable>0)this.loadWord();else throw new Error("no bits available");return t=e-t,t>0&&this.bitsAvailable?s<>>e)!==0)return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return this.readBits(1)===1}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class Uh extends so{parsePES(e,t,s,i){const r=this.parseNALu(e,s.data,i);let n=this.VideoSample,o,c=!1;s.data=null,n&&r.length&&!e.audFound&&(this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts)),r.forEach(l=>{var h,u;switch(l.type){case 1:{let p=!1;o=!0;const y=l.data;if(c&&y.length>4){const E=this.readSliceType(y);(E===2||E===4||E===7||E===9)&&(p=!0)}if(p){var d;(d=n)!=null&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null)}n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.frame=!0,n.key=p;break}case 5:o=!0,(h=n)!=null&&h.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.key=!0,n.frame=!0;break;case 6:{o=!0,ir(l.data,1,s.pts,t.samples);break}case 7:{var g,f;o=!0,c=!0;const p=l.data,y=this.readSPS(p);if(!e.sps||e.width!==y.width||e.height!==y.height||((g=e.pixelRatio)==null?void 0:g[0])!==y.pixelRatio[0]||((f=e.pixelRatio)==null?void 0:f[1])!==y.pixelRatio[1]){e.width=y.width,e.height=y.height,e.pixelRatio=y.pixelRatio,e.sps=[p];const E=p.subarray(1,4);let v="avc1.";for(let T=0;T<3;T++){let S=E[T].toString(16);S.length<2&&(S="0"+S),v+=S}e.codec=v}break}case 8:o=!0,e.pps=[l.data];break;case 9:o=!0,e.audFound=!0,(u=n)!=null&&u.frame&&(this.pushAccessUnit(n,e),n=null),n||(n=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts));break;case 12:o=!0;break;default:o=!1;break}n&&o&&n.units.push(l)}),i&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}getNALuType(e,t){return e[t]&31}readSliceType(e){const t=new es(e);return t.readUByte(),t.readUEG(),t.readUEG()}skipScalingList(e,t){let s=8,i=8,r;for(let n=0;n{var h,u;switch(l.type){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:n||(n=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts)),n.frame=!0,o=!0;break;case 16:case 17:case 18:case 21:if(o=!0,c){var d;(d=n)!=null&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null)}n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.key=!0,n.frame=!0;break;case 19:case 20:o=!0,(h=n)!=null&&h.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.key=!0,n.frame=!0;break;case 39:o=!0,ir(l.data,2,s.pts,t.samples);break;case 32:o=!0,e.vps||(typeof e.params!="object"&&(e.params={}),e.params=ae(e.params,this.readVPS(l.data)),this.initVPS=l.data),e.vps=[l.data];break;case 33:if(o=!0,c=!0,e.vps!==void 0&&e.vps[0]!==this.initVPS&&e.sps!==void 0&&!this.matchSPS(e.sps[0],l.data)&&(this.initVPS=e.vps[0],e.sps=e.pps=void 0),!e.sps){const g=this.readSPS(l.data);e.width=g.width,e.height=g.height,e.pixelRatio=g.pixelRatio,e.codec=g.codecString,e.sps=[],typeof e.params!="object"&&(e.params={});for(const f in g.params)e.params[f]=g.params[f]}this.pushParameterSet(e.sps,l.data,e.vps),n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.key=!0;break;case 34:if(o=!0,typeof e.params=="object"){if(!e.pps){e.pps=[];const g=this.readPPS(l.data);for(const f in g)e.params[f]=g[f]}this.pushParameterSet(e.pps,l.data,e.vps)}break;case 35:o=!0,e.audFound=!0,(u=n)!=null&&u.frame&&(this.pushAccessUnit(n,e),n=null),n||(n=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts));break;default:o=!1;break}n&&o&&n.units.push(l)}),i&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}pushParameterSet(e,t,s){(s&&s[0]===this.initVPS||!s&&!e.length)&&e.push(t)}getNALuType(e,t){return(e[t]&126)>>>1}ebsp2rbsp(e){const t=new Uint8Array(e.byteLength);let s=0;for(let i=0;i=2&&e[i]===3&&e[i-1]===0&&e[i-2]===0||(t[s]=e[i],s++);return new Uint8Array(t.buffer,0,s)}pushAccessUnit(e,t){super.pushAccessUnit(e,t),this.initVPS&&(this.initVPS=null)}readVPS(e){const t=new es(e);t.readUByte(),t.readUByte(),t.readBits(4),t.skipBits(2),t.readBits(6);const s=t.readBits(3),i=t.readBoolean();return{numTemporalLayers:s+1,temporalIdNested:i}}readSPS(e){const t=new es(this.ebsp2rbsp(e));t.readUByte(),t.readUByte(),t.readBits(4);const s=t.readBits(3);t.readBoolean();const i=t.readBits(2),r=t.readBoolean(),n=t.readBits(5),o=t.readUByte(),c=t.readUByte(),l=t.readUByte(),h=t.readUByte(),u=t.readUByte(),d=t.readUByte(),g=t.readUByte(),f=t.readUByte(),p=t.readUByte(),y=t.readUByte(),E=t.readUByte(),v=[],T=[];for(let se=0;se0)for(let se=s;se<8;se++)t.readBits(2);for(let se=0;se1&&t.readEG();for(let at=0;at0&&ot<16?(U=cs[ot-1],j=wt[ot-1]):ot===255&&(U=t.readBits(16),j=t.readBits(16))}if(t.readBoolean()&&t.readBoolean(),t.readBoolean()&&(t.readBits(3),t.readBoolean(),t.readBoolean()&&(t.readUByte(),t.readUByte(),t.readUByte())),t.readBoolean()&&(t.readUEG(),t.readUEG()),t.readBoolean(),t.readBoolean(),t.readBoolean(),oe=t.readBoolean(),oe&&(t.skipUEG(),t.skipUEG(),t.skipUEG(),t.skipUEG()),t.readBoolean()&&(X=t.readBits(32),Z=t.readBits(32),t.readBoolean()&&t.readUEG(),t.readBoolean())){const wt=t.readBoolean(),me=t.readBoolean();let Ee=!1;(wt||me)&&(Ee=t.readBoolean(),Ee&&(t.readUByte(),t.readBits(5),t.readBoolean(),t.readBits(5)),t.readBits(4),t.readBits(4),Ee&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(let Rt=0;Rt<=s;Rt++){J=t.readBoolean();const Zs=J||t.readBoolean();let Lr=!1;Zs?t.readEG():Lr=t.readBoolean();const Rr=Lr?1:t.readUEG()+1;if(wt)for(let qt=0;qt>se&1)<<31-se)>>>0;let We=kt.toString(16);return n===1&&We==="2"&&(We="6"),{codecString:`hvc1.${ye}${n}.${We}.${r?"H":"L"}${E}.B0`,params:{general_tier_flag:r,general_profile_idc:n,general_profile_space:i,general_profile_compatibility_flags:[o,c,l,h],general_constraint_indicator_flags:[u,d,g,f,p,y],general_level_idc:E,bit_depth:$+8,bit_depth_luma_minus8:$,bit_depth_chroma_minus8:G,min_spatial_segmentation_idc:B,chroma_format_idc:S,frame_rate:{fixed:J,fps:Z/X}},width:xe,height:Ce,pixelRatio:[U,j]}}readPPS(e){const t=new es(this.ebsp2rbsp(e));t.readUByte(),t.readUByte(),t.skipUEG(),t.skipUEG(),t.skipBits(2),t.skipBits(3),t.skipBits(2),t.skipUEG(),t.skipUEG(),t.skipEG(),t.skipBits(2),t.readBoolean()&&t.skipUEG(),t.skipEG(),t.skipEG(),t.skipBits(4);const i=t.readBoolean(),r=t.readBoolean();let n=1;return r&&i?n=0:r?n=3:i&&(n=2),{parallelismType:n}}matchSPS(e,t){return String.fromCharCode.apply(null,e).substr(3)===String.fromCharCode.apply(null,t).substr(3)}}const Le=188;class St{constructor(e,t,s,i){this.logger=void 0,this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=e,this.config=t,this.typeSupported=s,this.logger=i,this.videoParser=null}static probe(e,t){const s=St.syncOffset(e);return s>0&&t.warn(`MPEG2-TS detected but first sync word found @ offset ${s}`),s!==-1}static syncOffset(e){const t=e.length;let s=Math.min(Le*5,t-Le)+1,i=0;for(;i1&&(n===0&&o>2||c+Le>s))return n}else{if(o)return-1;break}i++}return-1}static createTrack(e,t){return{container:e==="video"||e==="audio"?"video/mp2t":void 0,type:e,id:la[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:e==="audio"?t:void 0}}resetInitSegment(e,t,s,i){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=St.createTrack("video"),this._videoTrack.duration=i,this._audioTrack=St.createTrack("audio",i),this._id3Track=St.createTrack("id3"),this._txtTrack=St.createTrack("text"),this._audioTrack.segmentCodec="aac",this.videoParser=null,this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:s}=this;e&&(e.pesData=null),t&&(t.pesData=null),s&&(s.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,s=!1,i=!1){s||(this.sampleAes=null);let r;const n=this._videoTrack,o=this._audioTrack,c=this._id3Track,l=this._txtTrack;let h=n.pid,u=n.pesData,d=o.pid,g=c.pid,f=o.pesData,p=c.pesData,y=null,E=this.pmtParsed,v=this._pmtId,T=e.length;if(this.remainderData&&(e=He(this.remainderData,e),T=e.length,this.remainderData=null),T>4;let C;if(I>1){if(C=A+5+e[A+4],C===A+Le)continue}else C=A+4;switch(R){case h:L&&(u&&(r=Nt(u,this.logger))&&(this.readyVideoParser(n.segmentCodec),this.videoParser!==null&&this.videoParser.parsePES(n,l,r,!1)),u={data:[],size:0}),u&&(u.data.push(e.subarray(C,A+Le)),u.size+=A+Le-C);break;case d:if(L){if(f&&(r=Nt(f,this.logger)))switch(o.segmentCodec){case"aac":this.parseAACPES(o,r);break;case"mp3":this.parseMPEGPES(o,r);break;case"ac3":this.parseAC3PES(o,r);break}f={data:[],size:0}}f&&(f.data.push(e.subarray(C,A+Le)),f.size+=A+Le-C);break;case g:L&&(p&&(r=Nt(p,this.logger))&&this.parseID3PES(c,r),p={data:[],size:0}),p&&(p.data.push(e.subarray(C,A+Le)),p.size+=A+Le-C);break;case 0:L&&(C+=e[C]+1),v=this._pmtId=Gh(e,C);break;case v:{L&&(C+=e[C]+1);const $=Kh(e,C,this.typeSupported,s,this.observer,this.logger);h=$.videoPid,h>0&&(n.pid=h,n.segmentCodec=$.segmentVideoCodec),d=$.audioPid,d>0&&(o.pid=d,o.segmentCodec=$.segmentAudioCodec),g=$.id3Pid,g>0&&(c.pid=g),y!==null&&!E&&(this.logger.warn(`MPEG-TS PMT found at ${A} after unknown PID '${y}'. Backtracking to sync byte @${S} to parse all TS packets.`),y=null,A=S-188),E=this.pmtParsed=!0;break}case 17:case 8191:break;default:y=R;break}}else x++;x>0&&Ki(this.observer,new Error(`Found ${x} TS packet/s that do not start with 0x47`),void 0,this.logger),n.pesData=u,o.pesData=f,c.pesData=p;const D={audioTrack:o,videoTrack:n,id3Track:c,textTrack:l};return i&&this.extractRemainingSamples(D),D}flush(){const{remainderData:e}=this;this.remainderData=null;let t;return e?t=this.demux(e,-1,!1,!0):t={videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:s,id3Track:i,textTrack:r}=e,n=s.pesData,o=t.pesData,c=i.pesData;let l;if(n&&(l=Nt(n,this.logger))?(this.readyVideoParser(s.segmentCodec),this.videoParser!==null&&(this.videoParser.parsePES(s,r,l,!0),s.pesData=null)):s.pesData=n,o&&(l=Nt(o,this.logger))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l);break}t.pesData=null}else o!=null&&o.size&&this.logger.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=o;c&&(l=Nt(c,this.logger))?(this.parseID3PES(i,l),i.pesData=null):i.pesData=c}demuxSampleAes(e,t,s){const i=this.demux(e,s,!0,!this.config.progressive),r=this.sampleAes=new Bh(this.observer,this.config,t);return this.decrypt(i,r)}readyVideoParser(e){this.videoParser===null&&(e==="avc"?this.videoParser=new Uh:e==="hevc"&&(this.videoParser=new $h))}decrypt(e,t){return new Promise(s=>{const{audioTrack:i,videoTrack:r}=e;i.samples&&i.segmentCodec==="aac"?t.decryptAacSamples(i.samples,0,()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,()=>{s(e)}):s(e)}):r.samples&&t.decryptAvcSamples(r.samples,0,0,()=>{s(e)})})}destroy(){this.observer&&this.observer.removeAllListeners(),this.config=this.logger=this.observer=null,this.aacOverFlow=this.videoParser=this.remainderData=this.sampleAes=null,this._videoTrack=this._audioTrack=this._id3Track=this._txtTrack=void 0}parseAACPES(e,t){let s=0;const i=this.aacOverFlow;let r=t.data;if(i){this.aacOverFlow=null;const u=i.missing,d=i.sample.unit.byteLength;if(u===-1)r=He(i.sample.unit,r);else{const g=d-u;i.sample.unit.set(r.subarray(0,u),g),e.samples.push(i.sample),s=i.missing}}let n,o;for(n=s,o=r.length;n0;)o+=c}}parseID3PES(e,t){if(t.pts===void 0){this.logger.warn("[tsdemuxer]: ID3 PES unknown PTS");return}const s=ae({},t,{type:this._videoTrack?Ke.emsg:Ke.audioId3,duration:Number.POSITIVE_INFINITY});e.samples.push(s)}}function Gi(a,e){return((a[e+1]&31)<<8)+a[e+2]}function Gh(a,e){return(a[e+10]&31)<<8|a[e+11]}function Kh(a,e,t,s,i,r){const n={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},o=(a[e+1]&15)<<8|a[e+2],c=e+3+o-4,l=(a[e+10]&15)<<8|a[e+11];for(e+=12+l;e0){let d=e+5,g=u;for(;g>2;){a[d]===106&&(t.ac3!==!0?r.log("AC-3 audio found, not supported in this browser for now"):(n.audioPid=h,n.segmentAudioCodec="ac3"));const p=a[d+1]+2;d+=p,g-=p}}break;case 194:case 135:return Ki(i,new Error("Unsupported EC-3 in M2TS found"),void 0,r),n;case 36:n.videoPid===-1&&(n.videoPid=h,n.segmentVideoCodec="hevc",r.log("HEVC in M2TS found"));break}e+=u+5}return n}function Ki(a,e,t,s){s.warn(`parsing error: ${e.message}`),a.emit(m.ERROR,m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,fatal:!1,levelRetry:t,error:e,reason:e.message})}function fi(a,e){e.log(`${a} with AES-128-CBC encryption found in unencrypted stream`)}function Nt(a,e){let t=0,s,i,r,n,o;const c=a.data;if(!a||a.size===0)return null;for(;c[0].length<19&&c.length>1;)c[0]=He(c[0],c[1]),c.splice(1,1);if(s=c[0],(s[0]<<16)+(s[1]<<8)+s[2]===1){if(i=(s[4]<<8)+s[5],i&&i>a.size-6)return null;const h=s[7];h&192&&(n=(s[9]&14)*536870912+(s[10]&255)*4194304+(s[11]&254)*16384+(s[12]&255)*128+(s[13]&254)/2,h&64?(o=(s[14]&14)*536870912+(s[15]&255)*4194304+(s[16]&254)*16384+(s[17]&255)*128+(s[18]&254)/2,n-o>60*9e4&&(e.warn(`${Math.round((n-o)/9e4)}s delta between PTS and DTS, align them`),n=o)):o=n),r=s[8];let u=r+9;if(a.size<=u)return null;a.size-=u;const d=new Uint8Array(a.size);for(let g=0,f=c.length;gp){u-=p;continue}else s=s.subarray(u),p-=u,u=0;d.set(s,t),t+=p}return i&&(i-=r+3),{data:d,pts:n,dts:o,len:i}}return null}class Vh{static getSilentFrame(e,t){switch(e){case"mp4a.40.2":if(t===1)return new Uint8Array([0,200,0,128,35,128]);if(t===2)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(t===3)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(t===4)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(t===5)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(t===6)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(t===1)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===2)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===3)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);break}}}const yt=Math.pow(2,32)-1;class b{static init(){b.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};let e;for(e in b.types)b.types.hasOwnProperty(e)&&(b.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),s=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);b.HDLR_TYPES={video:t,audio:s};const i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);b.STTS=b.STSC=b.STCO=r,b.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),b.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),b.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),b.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const n=new Uint8Array([105,115,111,109]),o=new Uint8Array([97,118,99,49]),c=new Uint8Array([0,0,0,1]);b.FTYP=b.box(b.types.ftyp,n,c,n,o),b.DINF=b.box(b.types.dinf,b.box(b.types.dref,i))}static box(e,...t){let s=8,i=t.length;const r=i;for(;i--;)s+=t[i].byteLength;const n=new Uint8Array(s);for(n[0]=s>>24&255,n[1]=s>>16&255,n[2]=s>>8&255,n[3]=s&255,n.set(e,4),i=0,s=8;i>24&255,e>>16&255,e>>8&255,e&255,s>>24,s>>16&255,s>>8&255,s&255,i>>24,i>>16&255,i>>8&255,i&255,85,196,0,0]))}static mdia(e){return b.box(b.types.mdia,b.mdhd(e.timescale||0,e.duration||0),b.hdlr(e.type),b.minf(e))}static mfhd(e){return b.box(b.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,e&255]))}static minf(e){return e.type==="audio"?b.box(b.types.minf,b.box(b.types.smhd,b.SMHD),b.DINF,b.stbl(e)):b.box(b.types.minf,b.box(b.types.vmhd,b.VMHD),b.DINF,b.stbl(e))}static moof(e,t,s){return b.box(b.types.moof,b.mfhd(e),b.traf(s,t))}static moov(e){let t=e.length;const s=[];for(;t--;)s[t]=b.trak(e[t]);return b.box.apply(null,[b.types.moov,b.mvhd(e[0].timescale||0,e[0].duration||0)].concat(s).concat(b.mvex(e)))}static mvex(e){let t=e.length;const s=[];for(;t--;)s[t]=b.trex(e[t]);return b.box.apply(null,[b.types.mvex,...s])}static mvhd(e,t){t*=e;const s=Math.floor(t/(yt+1)),i=Math.floor(t%(yt+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,e&255,s>>24,s>>16&255,s>>8&255,s&255,i>>24,i>>16&255,i>>8&255,i&255,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return b.box(b.types.mvhd,r)}static sdtp(e){const t=e.samples||[],s=new Uint8Array(4+t.length);let i,r;for(i=0;i>>8&255),t.push(n&255),t=t.concat(Array.prototype.slice.call(r));for(i=0;i>>8&255),s.push(n&255),s=s.concat(Array.prototype.slice.call(r));const o=b.box(b.types.avcC,new Uint8Array([1,t[3],t[4],t[5],255,224|e.sps.length].concat(t).concat([e.pps.length]).concat(s))),c=e.width,l=e.height,h=e.pixelRatio[0],u=e.pixelRatio[1];return b.box(b.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,c>>8&255,c&255,l>>8&255,l&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,b.box(b.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),b.box(b.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,h&255,u>>24,u>>16&255,u>>8&255,u&255])))}static esds(e){const t=e.config;return new Uint8Array([0,0,0,0,3,25,0,1,0,4,17,64,21,0,0,0,0,0,0,0,0,0,0,0,5,2,...t,6,1,2])}static audioStsd(e){const t=e.samplerate||0;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount||0,0,16,0,0,0,0,t>>8&255,t&255,0,0])}static mp4a(e){return b.box(b.types.mp4a,b.audioStsd(e),b.box(b.types.esds,b.esds(e)))}static mp3(e){return b.box(b.types[".mp3"],b.audioStsd(e))}static ac3(e){return b.box(b.types["ac-3"],b.audioStsd(e),b.box(b.types.dac3,e.config))}static stsd(e){const{segmentCodec:t}=e;if(e.type==="audio"){if(t==="aac")return b.box(b.types.stsd,b.STSD,b.mp4a(e));if(t==="ac3"&&e.config)return b.box(b.types.stsd,b.STSD,b.ac3(e));if(t==="mp3"&&e.codec==="mp3")return b.box(b.types.stsd,b.STSD,b.mp3(e))}else if(e.pps&&e.sps){if(t==="avc")return b.box(b.types.stsd,b.STSD,b.avc1(e));if(t==="hevc"&&e.vps)return b.box(b.types.stsd,b.STSD,b.hvc1(e))}else throw new Error("video track missing pps or sps");throw new Error(`unsupported ${e.type} segment codec (${t}/${e.codec})`)}static tkhd(e){const t=e.id,s=(e.duration||0)*(e.timescale||0),i=e.width||0,r=e.height||0,n=Math.floor(s/(yt+1)),o=Math.floor(s%(yt+1));return b.box(b.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,t&255,0,0,0,0,n>>24,n>>16&255,n>>8&255,n&255,o>>24,o>>16&255,o>>8&255,o&255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,i&255,0,0,r>>8&255,r&255,0,0]))}static traf(e,t){const s=b.sdtp(e),i=e.id,r=Math.floor(t/(yt+1)),n=Math.floor(t%(yt+1));return b.box(b.types.traf,b.box(b.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,i&255])),b.box(b.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,r&255,n>>24,n>>16&255,n>>8&255,n&255])),b.trun(e,s.length+16+20+8+16+8+8),s)}static trak(e){return e.duration=e.duration||4294967295,b.box(b.types.trak,b.tkhd(e),b.mdia(e))}static trex(e){const t=e.id;return b.box(b.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,t&255,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const s=e.samples||[],i=s.length,r=12+16*i,n=new Uint8Array(r);let o,c,l,h,u,d;for(t+=8+r,n.set([e.type==="video"?1:0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,i&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255],0),o=0;o>>24&255,l>>>16&255,l>>>8&255,l&255,h>>>24&255,h>>>16&255,h>>>8&255,h&255,u.isLeading<<2|u.dependsOn,u.isDependedOn<<6|u.hasRedundancy<<4|u.paddingValue<<1|u.isNonSync,u.degradPrio&61440,u.degradPrio&15,d>>>24&255,d>>>16&255,d>>>8&255,d&255],12+16*o);return b.box(b.types.trun,n)}static initSegment(e){b.types||b.init();const t=b.moov(e);return He(b.FTYP,t)}static hvc1(e){const t=e.params,s=[e.vps,e.sps,e.pps],i=4,r=new Uint8Array([1,t.general_profile_space<<6|(t.general_tier_flag?32:0)|t.general_profile_idc,t.general_profile_compatibility_flags[0],t.general_profile_compatibility_flags[1],t.general_profile_compatibility_flags[2],t.general_profile_compatibility_flags[3],t.general_constraint_indicator_flags[0],t.general_constraint_indicator_flags[1],t.general_constraint_indicator_flags[2],t.general_constraint_indicator_flags[3],t.general_constraint_indicator_flags[4],t.general_constraint_indicator_flags[5],t.general_level_idc,240|t.min_spatial_segmentation_idc>>8,255&t.min_spatial_segmentation_idc,252|t.parallelismType,252|t.chroma_format_idc,248|t.bit_depth_luma_minus8,248|t.bit_depth_chroma_minus8,0,parseInt(t.frame_rate.fps),i-1|t.temporal_id_nested<<2|t.num_temporal_layers<<3|(t.frame_rate.fixed?64:0),s.length]);let n=r.length;for(let f=0;f>8,s[f][p].length&255]),n),n+=2,o.set(s[f][p],n),n+=s[f][p].length}const l=b.box(b.types.hvcC,o),h=e.width,u=e.height,d=e.pixelRatio[0],g=e.pixelRatio[1];return b.box(b.types.hvc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,h>>8&255,h&255,u>>8&255,u&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),l,b.box(b.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),b.box(b.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,d&255,g>>24,g>>16&255,g>>8&255,g&255])))}}b.types=void 0;b.HDLR_TYPES=void 0;b.STTS=void 0;b.STSC=void 0;b.STCO=void 0;b.STSZ=void 0;b.VMHD=void 0;b.SMHD=void 0;b.STSD=void 0;b.FTYP=void 0;b.DINF=void 0;const io=9e4;function Er(a,e,t=1,s=!1){const i=a*e*t;return s?Math.round(i):i}function Hh(a,e,t=1,s=!1){return Er(a,e,1/t,s)}function Xt(a,e=!1){return Er(a,1e3,1/io,e)}function Yh(a,e=1){return Er(a,io,1/e)}function xn(a){const{baseTime:e,timescale:t,trackId:s}=a;return`${e/t} (${e}/${t}) trackId: ${s}`}const Wh=10*1e3,qh=1024,jh=1152,Xh=1536;let Bt=null,gi=null;function An(a,e,t,s){return{duration:e,size:t,cts:s,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:a?2:1,isNonSync:a?0:1}}}class Cs extends Ye{constructor(e,t,s,i){if(super("mp4-remuxer",i),this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextVideoTs=null,this.nextAudioTs=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=e,this.config=t,this.typeSupported=s,this.ISGenerated=!1,Bt===null){const n=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Bt=n?parseInt(n[1]):0}if(gi===null){const r=navigator.userAgent.match(/Safari\/(\d+)/i);gi=r?parseInt(r[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){const t=this._initPTS;(!t||!e||e.trackId!==t.trackId||e.baseTime!==t.baseTime||e.timescale!==t.timescale)&&this.log(`Reset initPTS: ${t&&xn(t)} > ${e&&xn(e)}`),this._initPTS=this._initDTS=e}resetNextTimestamp(){this.log("reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){this.log("ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const s=e[0].pts,i=e.reduce((r,n)=>{let o=n.pts,c=o-r;return c<-4294967296&&(t=!0,o=$e(o,s),c=o-r),c>0?r:o},s);return t&&this.debug("PTS rollover detected"),i}remux(e,t,s,i,r,n,o,c){let l,h,u,d,g,f,p=r,y=r;const E=e.pid>-1,v=t.pid>-1,T=t.samples.length,S=e.samples.length>0,x=o&&T>0||T>1;if((!E||S)&&(!v||x)||this.ISGenerated||o){if(this.ISGenerated){var A,L,R,I;const H=this.videoTrackConfig;(H&&(t.width!==H.width||t.height!==H.height||((A=t.pixelRatio)==null?void 0:A[0])!==((L=H.pixelRatio)==null?void 0:L[0])||((R=t.pixelRatio)==null?void 0:R[1])!==((I=H.pixelRatio)==null?void 0:I[1]))||!H&&x||this.nextAudioTs===null&&S)&&this.resetInitSegment()}this.ISGenerated||(u=this.generateIS(e,t,r,n));const C=this.isVideoContiguous;let $=-1,G;if(x&&($=zh(t.samples),!C&&this.config.forceKeyFrameOnDiscontinuity))if(f=!0,$>0){this.warn(`Dropped ${$} out of ${T} video samples due to a missing keyframe`);const H=this.getVideoStartPts(t.samples);t.samples=t.samples.slice($),t.dropped+=$,y+=(t.samples[0].pts-H)/t.inputTimeScale,G=y}else $===-1&&(this.warn(`No keyframe found out of ${T} video samples`),f=!1);if(this.ISGenerated){if(S&&x){const H=this.getVideoStartPts(t.samples),w=($e(e.samples[0].pts,H)-H)/t.inputTimeScale;p+=Math.max(0,w),y+=Math.max(0,-w)}if(S){if(e.samplerate||(this.warn("regenerate InitSegment as audio detected"),u=this.generateIS(e,t,r,n)),h=this.remuxAudio(e,p,this.isAudioContiguous,n,v||x||c===Y.AUDIO?y:void 0),x){const H=h?h.endPTS-h.startPTS:0;t.inputTimeScale||(this.warn("regenerate InitSegment as video detected"),u=this.generateIS(e,t,r,n)),l=this.remuxVideo(t,y,C,H)}}else x&&(l=this.remuxVideo(t,y,C,0));l&&(l.firstKeyFrame=$,l.independent=$!==-1,l.firstKeyFramePTS=G)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(s.samples.length&&(g=ro(s,r,this._initPTS,this._initDTS)),i.samples.length&&(d=no(i,r,this._initPTS))),{audio:h,video:l,initSegment:u,independent:f,text:d,id3:g}}computeInitPts(e,t,s,i){const r=Math.round(s*t);let n=$e(e,r);if(n0?B-1:B].dts&&(v=!0)}v&&n.sort(function(B,U){const j=B.dts-U.dts,J=B.pts-U.pts;return j||J}),f=n[0].dts,p=n[n.length-1].dts;const S=p-f,x=S?Math.round(S/(c-1)):g||e.inputTimeScale/30;if(s){const B=f-T,U=B>x,j=B<-1;if((U||j)&&(U?this.warn(`${(e.segmentCodec||"").toUpperCase()}: ${Xt(B,!0)} ms (${B}dts) hole between fragments detected at ${t.toFixed(3)}`):this.warn(`${(e.segmentCodec||"").toUpperCase()}: ${Xt(-B,!0)} ms (${B}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!j||T>=n[0].pts||Bt)){f=T;const J=n[0].pts-B;if(U)n[0].dts=f,n[0].pts=J;else{let X=!0;for(let Z=0;ZJ&&X);Z++){const oe=n[Z].pts;if(n[Z].dts-=B,n[Z].pts-=B,Z0?U.dts-n[B-1].dts:x;if(X=B>0?U.pts-n[B-1].pts:x,oe.stretchShortVideoTrack&&this.nextAudioTs!==null){const xe=Math.floor(oe.maxBufferHole*r),Ce=(i?y+i*r:this.nextAudioTs+h)-U.pts;Ce>xe?(g=Ce-he,g<0?g=he:$=!0,this.log(`It is approximately ${Ce/90} ms to the next segment; using duration ${g/90} ms for the last video frame.`)):g=he}else g=he}const Z=Math.round(U.pts-U.dts);G=Math.min(G,g),O=Math.max(O,g),H=Math.min(H,X),w=Math.max(w,X),o.push(An(U.key,g,J,Z))}if(o.length){if(Bt){if(Bt<70){const B=o[0].flags;B.dependsOn=2,B.isNonSync=0}}else if(gi&&w-H0&&(i&&Math.abs(T-(E+v))<9e3||Math.abs($e(p[0].pts,T)-(E+v))<20*h),p.forEach(function(w){w.pts=$e(w.pts,T)}),!s||E<0){const w=p.length;if(p=p.filter(k=>k.pts>=0),w!==p.length&&this.warn(`Removed ${p.length-w} of ${w} samples (initPTS ${v} / ${n})`),!p.length)return;r===0?E=0:i&&!f?E=Math.max(0,T-v):E=p[0].pts-v}if(e.segmentCodec==="aac"){const w=this.config.maxAudioFramesDrift;for(let k=0,F=E+v;k=w*h&&U0){A+=y;try{D=new Uint8Array(A)}catch(U){this.observer.emit(m.ERROR,m.ERROR,{type:W.MUX_ERROR,details:_.REMUX_ALLOC_ERROR,fatal:!1,error:U,bytes:A,reason:`fail allocating audio mdat ${A}`});return}d||(new DataView(D.buffer).setUint32(0,A),D.set(b.types.mdat,4))}else return;D.set(N,y);const B=N.byteLength;y+=B,g.push(An(!0,l,B,0)),x=V}const R=g.length;if(!R)return;const I=g[g.length-1];E=x-v,this.nextAudioTs=E+c*I.duration;const C=d?new Uint8Array(0):b.moof(e.sequenceNumber++,S/c,ae({},e,{samples:g}));e.samples=[];const $=(S-v)/n,G=this.nextAudioTs/n,O={data1:C,data2:D,startPTS:$,endPTS:G,startDTS:$,endDTS:G,type:"audio",hasAudio:!0,hasVideo:!1,nb:R};return this.isAudioContiguous=!0,O}}function $e(a,e){let t;if(e===null)return a;for(e4294967296;)a+=t;return a}function zh(a){for(let e=0;en.pts-o.pts);const r=a.samples;return a.samples=[],{samples:r}}class Qh extends Ye{constructor(e,t,s,i){super("passthrough-remuxer",i),this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null,this.isVideoContiguous=!1}destroy(){}resetTimeStamp(e){this.lastEndTime=null;const t=this.initPTS;t&&e&&t.baseTime===e.baseTime&&t.timescale===e.timescale||(this.initPTS=e)}resetNextTimestamp(){this.isVideoContiguous=!1,this.lastEndTime=null}resetInitSegment(e,t,s,i){this.audioCodec=t,this.videoCodec=s,this.generateInitSegment(e,i),this.emitInitSegment=!0}generateInitSegment(e,t){let{audioCodec:s,videoCodec:i}=this;if(!(e!=null&&e.byteLength)){this.initTracks=void 0,this.initData=void 0;return}const{audio:r,video:n}=this.initData=ua(e);if(t)Bl(e,t);else{const c=r||n;c!=null&&c.encrypted&&this.warn(`Init segment with encrypted track with has no key ("${c.codec}")!`)}r&&(s=In(r,le.AUDIO,this)),n&&(i=In(n,le.VIDEO,this));const o={};r&&n?o.audiovideo={container:"video/mp4",codec:s+","+i,supplemental:n.supplemental,encrypted:n.encrypted,initSegment:e,id:"main"}:r?o.audio={container:"audio/mp4",codec:s,encrypted:r.encrypted,initSegment:e,id:"audio"}:n?o.video={container:"video/mp4",codec:i,supplemental:n.supplemental,encrypted:n.encrypted,initSegment:e,id:"main"}:this.warn("initSegment does not contain moov or trak boxes."),this.initTracks=o}remux(e,t,s,i,r,n){var o,c;let{initPTS:l,lastEndTime:h}=this;const u={audio:void 0,video:void 0,text:i,id3:s,initSegment:void 0};K(h)||(h=this.lastEndTime=r||0);const d=t.samples;if(!d.length)return u;const g={initPTS:void 0,timescale:void 0,trackId:void 0};let f=this.initData;if((o=f)!=null&&o.length||(this.generateInitSegment(d),f=this.initData),!((c=f)!=null&&c.length))return this.warn("Failed to generate initSegment."),u;this.emitInitSegment&&(g.tracks=this.initTracks,this.emitInitSegment=!1);const p=$l(d,f,this),y=f.audio?p[f.audio.id]:null,E=f.video?p[f.video.id]:null,v=ys(E,1/0),T=ys(y,1/0),S=ys(E,0,!0),x=ys(y,0,!0);let D=r,A=0;const L=y&&(!E||!l&&T0?this.lastEndTime=C:(this.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const $=!!f.audio,G=!!f.video;let H="";$&&(H+="audio"),G&&(H+="video");const O=(f.audio?f.audio.encrypted:!1)||(f.video?f.video.encrypted:!1),w={data1:d,startPTS:I,startDTS:I,endPTS:C,endDTS:C,type:H,hasAudio:$,hasVideo:G,nb:1,dropped:0,encrypted:O};u.audio=$&&!G?w:void 0,u.video=G?w:void 0;const k=E?.sampleCount;if(k){const F=E.keyFrameIndex,N=F!==-1;w.nb=k,w.dropped=F===0||this.isVideoContiguous?0:N?F:k,w.independent=N,w.firstKeyFrame=F,N&&E.keyFrameStart&&(w.firstKeyFramePTS=(E.keyFrameStart-l.baseTime)/l.timescale),this.isVideoContiguous||(u.independent=N),this.isVideoContiguous||(this.isVideoContiguous=N),w.dropped&&this.warn(`fmp4 does not start with IDR: firstIDR ${F}/${k} dropped: ${w.dropped} start: ${w.firstKeyFramePTS||"NA"}`)}return u.initSegment=g,u.id3=ro(s,r,l,l),i.samples.length&&(u.text=no(i,r,l)),u}}function ys(a,e,t=!1){return a?.start!==void 0?(a.start+(t?a.duration:0))/a.timescale:e}function Zh(a,e,t,s){if(a===null)return!0;const i=Math.max(s,1),r=e-a.baseTime/a.timescale;return Math.abs(r-t)>i}function In(a,e,t){const s=a.codec;return s&&s.length>4?s:e===le.AUDIO?s==="ec-3"||s==="ac-3"||s==="alac"?s:s==="fLaC"||s==="Opus"?Bs(s,!1):(t.warn(`Unhandled audio codec "${s}" in mp4 MAP`),s||"mp4a"):(t.warn(`Unhandled video codec "${s}" in mp4 MAP`),s||"avc1")}let ut;try{ut=self.performance.now.bind(self.performance)}catch{ut=Date.now}const Ps=[{demux:Nh,remux:Qh},{demux:St,remux:Cs},{demux:wh,remux:Cs},{demux:Fh,remux:Cs}];Ps.splice(2,0,{demux:Oh,remux:Cs});class Ln{constructor(e,t,s,i,r,n){this.asyncResult=!1,this.logger=void 0,this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=e,this.typeSupported=t,this.config=s,this.id=r,this.logger=n}configure(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()}push(e,t,s,i){const r=s.transmuxing;r.executeStart=ut();let n=new Uint8Array(e);const{currentTransmuxState:o,transmuxConfig:c}=this;i&&(this.currentTransmuxState=i);const{contiguous:l,discontinuity:h,trackSwitch:u,accurateTimeOffset:d,timeOffset:g,initSegmentChange:f}=i||o,{audioCodec:p,videoCodec:y,defaultInitPts:E,duration:v,initSegmentData:T}=c,S=Jh(n,t);if(S&&Kt(S.method)){const L=this.getDecrypter(),R=cr(S.method);if(L.isSync()){let I=L.softwareDecrypt(n,S.key.buffer,S.iv.buffer,R);if(s.part>-1){const $=L.flush();I=$&&$.buffer}if(!I)return r.executeEnd=ut(),mi(s);n=new Uint8Array(I)}else return this.asyncResult=!0,this.decryptionPromise=L.webCryptoDecrypt(n,S.key.buffer,S.iv.buffer,R).then(I=>{const C=this.push(I,null,s);return this.decryptionPromise=null,C}),this.decryptionPromise}const x=this.needsProbing(h,u);if(x){const L=this.configureTransmuxer(n);if(L)return this.logger.warn(`[transmuxer] ${L.message}`),this.observer.emit(m.ERROR,m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,fatal:!1,error:L,reason:L.message}),r.executeEnd=ut(),mi(s)}(h||u||f||x)&&this.resetInitSegment(T,p,y,v,t),(h||f||x)&&this.resetInitialTimestamp(E),l||this.resetContiguity();const D=this.transmux(n,S,g,d,s);this.asyncResult=os(D);const A=this.currentTransmuxState;return A.contiguous=!0,A.discontinuity=!1,A.trackSwitch=!1,r.executeEnd=ut(),D}flush(e){const t=e.transmuxing;t.executeStart=ut();const{decrypter:s,currentTransmuxState:i,decryptionPromise:r}=this;if(r)return this.asyncResult=!0,r.then(()=>this.flush(e));const n=[],{timeOffset:o}=i;if(s){const u=s.flush();u&&n.push(this.push(u.buffer,null,e))}const{demuxer:c,remuxer:l}=this;if(!c||!l){t.executeEnd=ut();const u=[mi(e)];return this.asyncResult?Promise.resolve(u):u}const h=c.flush(o);return os(h)?(this.asyncResult=!0,h.then(u=>(this.flushRemux(n,u,e),n))):(this.flushRemux(n,h,e),this.asyncResult?Promise.resolve(n):n)}flushRemux(e,t,s){const{audioTrack:i,videoTrack:r,id3Track:n,textTrack:o}=t,{accurateTimeOffset:c,timeOffset:l}=this.currentTransmuxState;this.logger.log(`[transmuxer.ts]: Flushed ${this.id} sn: ${s.sn}${s.part>-1?" part: "+s.part:""} of ${this.id===Y.MAIN?"level":"track"} ${s.level}`);const h=this.remuxer.remux(i,r,n,o,l,c,!0,this.id);e.push({remuxResult:h,chunkMeta:s}),s.transmuxing.executeEnd=ut()}resetInitialTimestamp(e){const{demuxer:t,remuxer:s}=this;!t||!s||(t.resetTimeStamp(e),s.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;!e||!t||(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,s,i,r){const{demuxer:n,remuxer:o}=this;!n||!o||(n.resetInitSegment(e,t,s,i),o.resetInitSegment(e,t,s,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,s,i,r){let n;return t&&t.method==="SAMPLE-AES"?n=this.transmuxSampleAes(e,t,s,i,r):n=this.transmuxUnencrypted(e,s,i,r),n}transmuxUnencrypted(e,t,s,i){const{audioTrack:r,videoTrack:n,id3Track:o,textTrack:c}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,n,o,c,t,s,!1,this.id),chunkMeta:i}}transmuxSampleAes(e,t,s,i,r){return this.demuxer.demuxSampleAes(e,t,s).then(n=>({remuxResult:this.remuxer.remux(n.audioTrack,n.videoTrack,n.id3Track,n.textTrack,s,i,!1,this.id),chunkMeta:r}))}configureTransmuxer(e){const{config:t,observer:s,typeSupported:i}=this;let r;for(let u=0,d=Ps.length;u0&&e?.key!=null&&e.iv!==null&&e.method!=null&&(t=e),t}const mi=a=>({remuxResult:{},chunkMeta:a});function os(a){return"then"in a&&a.then instanceof Function}class eu{constructor(e,t,s,i,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=s,this.duration=i,this.defaultInitPts=r||null}}class tu{constructor(e,t,s,i,r,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=s,this.trackSwitch=i,this.timeOffset=r,this.initSegmentChange=n}}let Rn=0;class ao{constructor(e,t,s,i){this.error=null,this.hls=void 0,this.id=void 0,this.instanceNo=Rn++,this.observer=void 0,this.frag=null,this.part=null,this.useWorker=void 0,this.workerContext=null,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0,this.onWorkerMessage=c=>{const l=c.data,h=this.hls;if(!(!h||!(l!=null&&l.event)||l.instanceNo!==this.instanceNo))switch(l.event){case"init":{var u;const d=(u=this.workerContext)==null?void 0:u.objectURL;d&&self.URL.revokeObjectURL(d);break}case"transmuxComplete":{this.handleTransmuxComplete(l.data);break}case"flush":{this.onFlush(l.data);break}case"workerLog":{h.logger[l.data.logType]&&h.logger[l.data.logType](l.data.message);break}default:{l.data=l.data||{},l.data.frag=this.frag,l.data.part=this.part,l.data.id=this.id,h.trigger(l.event,l.data);break}}},this.onWorkerError=c=>{if(!this.hls)return;const l=new Error(`${c.message} (${c.filename}:${c.lineno})`);this.hls.config.enableWorker=!1,this.hls.logger.warn(`Error in "${this.id}" Web Worker, fallback to inline`),this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:l})};const r=e.config;this.hls=e,this.id=t,this.useWorker=!!r.enableWorker,this.onTransmuxComplete=s,this.onFlush=i;const n=(c,l)=>{l=l||{},l.frag=this.frag||void 0,c===m.ERROR&&(l=l,l.parent=this.id,l.part=this.part,this.error=l.error),this.hls.trigger(c,l)};this.observer=new dr,this.observer.on(m.FRAG_DECRYPTED,n),this.observer.on(m.ERROR,n);const o=$r(r.preferManagedMediaSource);if(this.useWorker&&typeof Worker<"u"){const c=this.hls.logger;if(r.workerPath||nh()){try{r.workerPath?(c.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=oh(r.workerPath)):(c.log(`injecting Web Worker for "${t}"`),this.workerContext=ah());const{worker:h}=this.workerContext;h.addEventListener("message",this.onWorkerMessage),h.addEventListener("error",this.onWorkerError),h.postMessage({instanceNo:this.instanceNo,cmd:"init",typeSupported:o,id:t,config:ce(r)})}catch(h){c.warn(`Error setting up "${t}" Web Worker, fallback to inline`,h),this.terminateWorker(),this.error=null,this.transmuxer=new Ln(this.observer,o,r,"",t,e.logger)}return}}this.transmuxer=new Ln(this.observer,o,r,"",t,e.logger)}reset(){if(this.frag=null,this.part=null,this.workerContext){const e=this.instanceNo;this.instanceNo=Rn++;const t=this.hls.config,s=$r(t.preferManagedMediaSource);this.workerContext.worker.postMessage({instanceNo:this.instanceNo,cmd:"reset",resetNo:e,typeSupported:s,id:this.id,config:ce(t)})}}terminateWorker(){if(this.workerContext){const{worker:e}=this.workerContext;this.workerContext=null,e.removeEventListener("message",this.onWorkerMessage),e.removeEventListener("error",this.onWorkerError),lh(this.hls.config.workerPath)}}destroy(){if(this.workerContext)this.terminateWorker(),this.onWorkerMessage=this.onWorkerError=null;else{const t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.part=null,this.observer=null,this.hls=null}push(e,t,s,i,r,n,o,c,l,h){var u,d;l.transmuxing.start=self.performance.now();const{instanceNo:g,transmuxer:f}=this,p=n?n.start:r.start,y=r.decryptdata,E=this.frag,v=!(E&&r.cc===E.cc),T=!(E&&l.level===E.level),S=E?l.sn-E.sn:-1,x=this.part?l.part-this.part.index:-1,D=S===0&&l.id>1&&l.id===E?.stats.chunkCount,A=!T&&(S===1||S===0&&(x===1||D&&x<=0)),L=self.performance.now();(T||S||r.stats.parsing.start===0)&&(r.stats.parsing.start=L),n&&(x||!A)&&(n.stats.parsing.start=L);const R=!(E&&((u=r.initSegment)==null?void 0:u.url)===((d=E.initSegment)==null?void 0:d.url)),I=new tu(v,A,c,T,p,R);if(!A||v||R){this.hls.logger.log(`[transmuxer-interface]: Starting new transmux session for ${r.type} sn: ${l.sn}${l.part>-1?" part: "+l.part:""} ${this.id===Y.MAIN?"level":"track"}: ${l.level} id: ${l.id} +${t.m3u8}`)}function Oa(a,e,t=!0){const s=e.startSN+e.skippedSegments-a.startSN,i=a.fragments,r=s>=0;let n=0;if(r&&se){const r=s[s.length-1].duration*1e3;r{var s;(s=e.details)==null||s.fragments.forEach(i=>{i.level=t,i.initSegment&&(i.initSegment.level=t)})})}function Zc(a,e){return a!==e&&e?yn(a)!==yn(e):!1}function yn(a){return a.replace(/\?[^?]*$/,"")}function Jt(a,e){for(let s=0,i=a.length;sa.startCC)}function En(a,e){const t=a.start+e;a.startPTS=t,a.setStart(t),a.endPTS=t+a.duration}function Ua(a,e){const t=e.fragments;for(let s=0,i=t.length;s{const{config:n,fragCurrent:o,media:c,mediaBuffer:l,state:h}=this,u=c?c.currentTime:0,d=Q.bufferInfo(l||c,u,n.maxBufferHole),g=!d.len;if(this.log(`Media seeking to ${V(u)?u.toFixed(3):u}, state: ${h}, ${g?"out of":"in"} buffer`),this.state===P.ENDED)this.resetLoadingState();else if(o){const f=n.maxFragLookUpTolerance,p=o.start-f,y=o.start+o.duration+f;if(g||yd.end){const E=u>y;(uf&&(this.lastCurrentTime=u),!this.loadingParts){const p=Math.max(d.end,u),y=this.shouldLoadParts(this.getLevelDetails(),p);y&&(this.log(`LL-Part loading ON after seeking to ${u.toFixed(2)} with buffer @${p.toFixed(2)}`),this.loadingParts=y)}}this.hls.hasEnoughToStart||(this.log(`Setting ${g?"startPosition":"nextLoadPosition"} to ${u} for seek without enough to start`),this.nextLoadPosition=u,g&&(this.startPosition=u)),g&&this.state===P.IDLE&&this.tickImmediate()},this.onMediaEnded=()=>{this.log("setting startPosition to 0 because media ended"),this.startPosition=this.lastCurrentTime=0},this.playlistType=r,this.hls=e,this.fragmentLoader=new Dc(e.config),this.keyLoader=s,this.fragmentTracker=t,this.config=e.config,this.decrypter=new or(e.config)}registerListeners(){const{hls:e}=this;e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(m.ERROR,this.onError,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){if(this.state===P.STOPPED)return;this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);const e=this.fragCurrent;e!=null&&e.loader&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=P.STOPPED}get startPositionValue(){const{nextLoadPosition:e,startPosition:t}=this;return t===-1&&e?e:t}get bufferingEnabled(){return this.buffering}pauseBuffering(){this.buffering=!1}resumeBuffering(){this.buffering=!0}get inFlightFrag(){return{frag:this.fragCurrent,state:this.state}}_streamEnded(e,t){if(t.live||!this.media)return!1;const s=e.end||0,i=this.config.timelineOffset||0;if(s<=i)return!1;const r=e.buffered;this.config.maxBufferHole&&r&&r.length>1&&(e=Q.bufferedInfo(r,e.start,0));const n=e.nextStart;if(n&&n>i&&n{const n=r.frag;if(this.fragContextChanged(n)){this.warn(`${n.type} sn: ${n.sn}${r.part?" part: "+r.part.index:""} of ${this.fragInfo(n,!1,r.part)}) was dropped during download.`),this.fragmentTracker.removeFragment(n);return}n.stats.chunkCount++,this._handleFragmentLoadProgress(r)};this._doFragLoad(e,t,s,i).then(r=>{if(!r)return;const n=this.state,o=r.frag;if(this.fragContextChanged(o)){(n===P.FRAG_LOADING||!this.fragCurrent&&n===P.PARSING)&&(this.fragmentTracker.removeFragment(o),this.state=P.IDLE);return}"payload"in r&&(this.log(`Loaded ${o.type} sn: ${o.sn} of ${this.playlistLabel()} ${o.level}`),this.hls.trigger(m.FRAG_LOADED,r)),this._handleFragmentLoadComplete(r)}).catch(r=>{this.state===P.STOPPED||this.state===P.ERROR||(this.warn(`Frag error: ${r?.message||r}`),this.resetFragmentLoading(e))})}clearTrackerIfNeeded(e){var t;const{fragmentTracker:s}=this;if(s.getState(e)===Ae.APPENDING){const r=e.type,n=this.getFwdBufferInfo(this.mediaBuffer,r),o=Math.max(e.duration,n?n.len:this.config.maxBufferLength),c=this.backtrackFragment;((c?e.sn-c.sn:0)===1||this.reduceMaxBufferLength(o,e.duration))&&s.removeFragment(e)}else((t=this.mediaBuffer)==null?void 0:t.buffered.length)===0?s.removeAllFragments():s.hasParts(e.type)&&(s.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),s.getState(e)===Ae.PARTIAL&&s.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}waitForLive(e){const t=e.details;return t?.live&&t.type!=="EVENT"&&(this.levelLastLoaded!==e||t.expired)}flushMainBuffer(e,t,s=null){if(!(e-t))return;const i={startOffset:e,endOffset:t,type:s};this.hls.trigger(m.BUFFER_FLUSHING,i)}_loadInitSegment(e,t){this._doFragLoad(e,t).then(s=>{const i=s?.frag;if(!i||this.fragContextChanged(i)||!this.levels)throw new Error("init load aborted");return s}).then(s=>{const{hls:i}=this,{frag:r,payload:n}=s,o=r.decryptdata;if(n&&n.byteLength>0&&o!=null&&o.key&&o.iv&&Kt(o.method)){const c=self.performance.now();return this.decrypter.decrypt(new Uint8Array(n),o.key.buffer,o.iv.buffer,cr(o.method)).catch(l=>{throw i.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_DECRYPT_ERROR,fatal:!1,error:l,reason:l.message,frag:r}),l}).then(l=>{const h=self.performance.now();return i.trigger(m.FRAG_DECRYPTED,{frag:r,payload:l,stats:{tstart:c,tdecrypt:h}}),s.payload=l,this.completeInitSegmentLoad(s)})}return this.completeInitSegmentLoad(s)}).catch(s=>{this.state===P.STOPPED||this.state===P.ERROR||(this.warn(s),this.resetFragmentLoading(e))})}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const s=e.frag.stats;this.state!==P.STOPPED&&(this.state=P.IDLE),e.frag.data=new Uint8Array(e.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),this.tick()}unhandledEncryptionError(e,t){var s,i;const r=e.tracks;if(r&&!t.encrypted&&((s=r.audio)!=null&&s.encrypted||(i=r.video)!=null&&i.encrypted)&&(!this.config.emeEnabled||!this.keyLoader.emeController)){const n=this.media,o=new Error(`Encrypted track with no key in ${this.fragInfo(t)} (media ${n?"attached mediaKeys: "+n.mediaKeys:"detached"})`);return this.warn(o.message),!n||n.mediaKeys?!1:(this.hls.trigger(m.ERROR,{type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_KEYS,fatal:!1,error:o,frag:t}),this.resetTransmuxer(),!0)}return!1}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){const s=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.fragInfo(e,!1,t)} > buffer:${s?th.toString(Q.getBuffered(s)):"(detached)"})`),ve(e)){var i;if(e.type!==Y.SUBTITLE){const n=e.elementaryStreams;if(!Object.keys(n).some(o=>!!n[o])){this.state=P.IDLE;return}}const r=(i=this.levels)==null?void 0:i[e.level];r!=null&&r.fragmentError&&(this.log(`Resetting level fragment error count of ${r.fragmentError} on frag buffered`),r.fragmentError=0)}this.state=P.IDLE}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:s,part:i,partsLoaded:r}=e,n=!r||r.length===0||r.some(c=>!c),o=new lr(s.level,s.sn,s.stats.chunkCount+1,0,i?i.index:-1,!n);t.flush(o)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,s=null,i){var r;this.fragCurrent=e;const n=t.details;if(!this.levels||!n)throw new Error(`frag load aborted, missing level${n?"":" detail"}s`);let o=null;if(e.encrypted&&!((r=e.decryptdata)!=null&&r.key)){if(this.log(`Loading key for ${e.sn} of [${n.startSN}-${n.endSN}], ${this.playlistLabel()} ${e.level}`),this.state=P.KEY_LOADING,this.fragCurrent=e,o=this.keyLoader.load(e).then(d=>{if(!this.fragContextChanged(d.frag))return this.hls.trigger(m.KEY_LOADED,d),this.state===P.KEY_LOADING&&(this.state=P.IDLE),d}),this.hls.trigger(m.KEY_LOADING,{frag:e}),this.fragCurrent===null)return this.log("context changed in KEY_LOADING"),Promise.resolve(null)}else e.encrypted||(o=this.keyLoader.loadClear(e,n.encryptedFragments,this.startFragRequested),o&&this.log("[eme] blocking frag load until media-keys acquired"));const c=this.fragPrevious;if(ve(e)&&(!c||e.sn!==c.sn)){const d=this.shouldLoadParts(t.details,e.end);d!==this.loadingParts&&(this.log(`LL-Part loading ${d?"ON":"OFF"} loading sn ${c?.sn}->${e.sn}`),this.loadingParts=d)}if(s=Math.max(e.start,s||0),this.loadingParts&&ve(e)){const d=n.partList;if(d&&i){s>n.fragmentEnd&&n.fragmentHint&&(e=n.fragmentHint);const g=this.getNextPart(d,e,s);if(g>-1){const f=d[g];e=this.fragCurrent=f.fragment,this.log(`Loading ${e.type} sn: ${e.sn} part: ${f.index} (${g}/${d.length-1}) of ${this.fragInfo(e,!1,f)}) cc: ${e.cc} [${n.startSN}-${n.endSN}], target: ${parseFloat(s.toFixed(3))}`),this.nextLoadPosition=f.start+f.duration,this.state=P.FRAG_LOADING;let p;return o?p=o.then(y=>!y||this.fragContextChanged(y.frag)?null:this.doFragPartsLoad(e,f,t,i)).catch(y=>this.handleFragLoadError(y)):p=this.doFragPartsLoad(e,f,t,i).catch(y=>this.handleFragLoadError(y)),this.hls.trigger(m.FRAG_LOADING,{frag:e,part:f,targetBufferTime:s}),this.fragCurrent===null?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):p}else if(!e.url||this.loadedEndOfParts(d,s))return Promise.resolve(null)}}if(ve(e)&&this.loadingParts){var l;this.log(`LL-Part loading OFF after next part miss @${s.toFixed(2)} Check buffer at sn: ${e.sn} loaded parts: ${(l=n.partList)==null?void 0:l.filter(d=>d.loaded).map(d=>`[${d.start}-${d.end}]`)}`),this.loadingParts=!1}else if(!e.url)return Promise.resolve(null);this.log(`Loading ${e.type} sn: ${e.sn} of ${this.fragInfo(e,!1)}) cc: ${e.cc} ${"["+n.startSN+"-"+n.endSN+"]"}, target: ${parseFloat(s.toFixed(3))}`),V(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=P.FRAG_LOADING;const h=this.config.progressive&&e.type!==Y.SUBTITLE;let u;return h&&o?u=o.then(d=>!d||this.fragContextChanged(d.frag)?null:this.fragmentLoader.load(e,i)).catch(d=>this.handleFragLoadError(d)):u=Promise.all([this.fragmentLoader.load(e,h?i:void 0),o]).then(([d])=>(!h&&i&&i(d),d)).catch(d=>this.handleFragLoadError(d)),this.hls.trigger(m.FRAG_LOADING,{frag:e,targetBufferTime:s}),this.fragCurrent===null?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):u}doFragPartsLoad(e,t,s,i){return new Promise((r,n)=>{var o;const c=[],l=(o=s.details)==null?void 0:o.partList,h=u=>{this.fragmentLoader.loadPart(e,u,i).then(d=>{c[u.index]=d;const g=d.part;this.hls.trigger(m.FRAG_LOADED,d);const f=pn(s.details,e.sn,u.index+1)||Na(l,e.sn,u.index+1);if(f)h(f);else return r({frag:e,part:g,partsLoaded:c})}).catch(n)};h(t)})}handleFragLoadError(e){if("data"in e){const t=e.data;t.frag&&t.details===_.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):t.frag&&t.type===W.KEY_SYSTEM_ERROR?(t.frag.abortRequests(),this.resetStartWhenNotLoaded(),this.resetFragmentLoading(t.frag)):this.hls.trigger(m.ERROR,t)}else this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==P.PARSING){!this.fragCurrent&&this.state!==P.STOPPED&&this.state!==P.ERROR&&(this.state=P.IDLE);return}const{frag:s,part:i,level:r}=t,n=self.performance.now();s.stats.parsing.end=n,i&&(i.stats.parsing.end=n);const o=this.getLevelDetails(),l=o&&s.sn>o.endSN||this.shouldLoadParts(o,s.end);l!==this.loadingParts&&(this.log(`LL-Part loading ${l?"ON":"OFF"} after parsing segment ending @${s.end.toFixed(2)}`),this.loadingParts=l),this.updateLevelTiming(s,i,r,e.partial)}shouldLoadParts(e,t){if(this.config.lowLatencyMode){if(!e)return this.loadingParts;if(e.partList){var s;const r=e.partList[0];if(r.fragment.type===Y.SUBTITLE)return!1;const n=r.end+(((s=e.fragmentHint)==null?void 0:s.duration)||0);if(t>=n){var i;if((this.hls.hasEnoughToStart?((i=this.media)==null?void 0:i.currentTime)||this.lastCurrentTime:this.getLoadPosition())>r.start-r.fragment.duration)return!0}}}return!1}getCurrentContext(e){const{levels:t,fragCurrent:s}=this,{level:i,sn:r,part:n}=e;if(!(t!=null&&t[i]))return this.warn(`Levels object was unset while buffering fragment ${r} of ${this.playlistLabel()} ${i}. The current chunk will not be buffered.`),null;const o=t[i],c=o.details,l=n>-1?pn(c,r,n):null,h=l?l.fragment:Ma(c,r,s);return h?(s&&s!==h&&(h.stats=s.stats),{frag:h,part:l,level:o}):null}bufferFragmentData(e,t,s,i,r){if(this.state!==P.PARSING)return;const{data1:n,data2:o}=e;let c=n;if(o&&(c=We(n,o)),!c.length)return;const l=this.initPTS[t.cc],h=l?-l.baseTime/l.timescale:void 0,u={type:e.type,frag:t,part:s,chunkMeta:i,offset:h,parent:t.type,data:c};if(this.hls.trigger(m.BUFFER_APPENDING,u),e.dropped&&e.independent&&!s){if(r)return;this.flushBufferGap(t)}}flushBufferGap(e){const t=this.media;if(!t)return;if(!Q.isBuffered(t,t.currentTime)){this.flushMainBuffer(0,e.start);return}const s=t.currentTime,i=Q.bufferInfo(t,s,0),r=e.duration,n=Math.min(this.config.maxFragLookUpTolerance*2,r*.25),o=Math.max(Math.min(e.start-n,i.end-n),s+n);e.start-o>n&&this.flushMainBuffer(o,e.start)}getFwdBufferInfo(e,t){var s;const i=this.getLoadPosition();if(!V(i))return null;const n=this.lastCurrentTime>i||(s=this.media)!=null&&s.paused?0:this.config.maxBufferHole;return this.getFwdBufferInfoAtPos(e,i,t,n)}getFwdBufferInfoAtPos(e,t,s,i){const r=Q.bufferInfo(e,t,i);if(r.len===0&&r.nextStart!==void 0){const n=this.fragmentTracker.getBufferedFrag(t,s);if(n&&(r.nextStart<=n.end||n.gap)){const o=Math.max(Math.min(r.nextStart,n.end)-t,i);return Q.bufferInfo(e,t,o)}}return r}getMaxBufferLength(e){const{config:t}=this;let s;return e?s=Math.max(8*t.maxBufferSize/e,t.maxBufferLength):s=t.maxBufferLength,Math.min(s,t.maxMaxBufferLength)}reduceMaxBufferLength(e,t){const s=this.config,i=Math.max(Math.min(e-t,s.maxBufferLength),t),r=Math.max(e-t*3,s.maxMaxBufferLength/2,i);return r>=i?(s.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0):!1}getAppendedFrag(e,t=Y.MAIN){const s=this.fragmentTracker?this.fragmentTracker.getAppendedFrag(e,t):null;return s&&"fragment"in s?s.fragment:s}getNextFragment(e,t){const s=t.fragments,i=s.length;if(!i)return null;const{config:r}=this,n=s[0].start,o=r.lowLatencyMode&&!!t.partList;let c=null;if(t.live){const u=r.initialLiveManifestSize;if(i=n?d:g)||c.start:e;this.log(`Setting startPosition to ${f} to match start frag at live edge. mainStart: ${d} liveSyncPosition: ${g} frag.start: ${(l=c)==null?void 0:l.start}`),this.startPosition=this.nextLoadPosition=f}}else e<=n&&(c=s[0]);if(!c){const u=this.loadingParts?t.partEnd:t.fragmentEnd;c=this.getFragmentAtPosition(e,u,t)}let h=this.filterReplacedPrimary(c,t);if(!h&&c){const u=c.sn-t.startSN;h=this.filterReplacedPrimary(s[u+1]||null,t)}return this.mapToInitFragWhenRequired(h)}isLoopLoading(e,t){const s=this.fragmentTracker.getState(e);return(s===Ae.OK||s===Ae.PARTIAL&&!!e.gap)&&this.nextLoadPosition>t}getNextFragmentLoopLoading(e,t,s,i,r){let n=null;if(e.gap&&(n=this.getNextFragment(this.nextLoadPosition,t),n&&!n.gap&&s.nextStart)){const o=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,s.nextStart,i,0);if(o!==null&&s.len+o.len>=r){const c=n.sn;return this.loopSn!==c&&(this.log(`buffer full after gaps in "${i}" playlist starting at sn: ${c}`),this.loopSn=c),null}}return this.loopSn=void 0,n}get primaryPrefetch(){if(vn(this.config)){var e;if((e=this.hls.interstitialsManager)==null||(e=e.playingItem)==null?void 0:e.event)return!0}return!1}filterReplacedPrimary(e,t){if(!e)return e;if(vn(this.config)&&e.type!==Y.SUBTITLE){const s=this.hls.interstitialsManager,i=s?.bufferingItem;if(i){const n=i.event;if(n){if(n.appendInPlace||Math.abs(e.start-i.start)>1||i.start===0)return null}else if(e.end<=i.start&&t?.live===!1||e.start>i.end&&i.nextEvent&&(i.nextEvent.appendInPlace||e.start-i.end>1))return null}const r=s?.playerQueue;if(r)for(let n=r.length;n--;){const o=r[n].interstitial;if(o.appendInPlace&&e.start>=o.startTime&&e.end<=o.resumeTime)return null}}return e}mapToInitFragWhenRequired(e){return e!=null&&e.initSegment&&!e.initSegment.data&&!this.bitrateTest?e.initSegment:e}getNextPart(e,t,s){let i=-1,r=!1,n=!0;for(let o=0,c=e.length;o-1&&ss.start)return!0}return!1}getInitialLiveFragment(e){const t=e.fragments,s=this.fragPrevious;let i=null;if(s){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`),i=yc(t,s.endProgramDateTime,this.config.maxFragLookUpTolerance)),!i){const r=s.sn+1;if(r>=e.startSN&&r<=e.endSN){const n=t[r-e.startSN];s.cc===n.cc&&(i=n,this.log(`Live playlist, switching playlist, load frag with next SN: ${i.sn}`))}i||(i=xa(e,s.cc,s.end),i&&this.log(`Live playlist, switching playlist, load frag with same CC: ${i.sn}`))}}else{const r=this.hls.liveSyncPosition;r!==null&&(i=this.getFragmentAtPosition(r,this.bitrateTest?e.fragmentEnd:e.edge,e))}return i}getFragmentAtPosition(e,t,s){const{config:i}=this;let{fragPrevious:r}=this,{fragments:n,endSN:o}=s;const{fragmentHint:c}=s,{maxFragLookUpTolerance:l}=i,h=s.partList,u=!!(this.loadingParts&&h!=null&&h.length&&c);u&&!this.bitrateTest&&h[h.length-1].fragment.sn===c.sn&&(n=n.concat(c),o=c.sn);let d;if(et-l||(g=this.media)!=null&&g.paused||!this.startFragRequested?0:l;d=kt(r,n,e,p)}else d=n[n.length-1];if(d){const f=d.sn-s.startSN,p=this.fragmentTracker.getState(d);if((p===Ae.OK||p===Ae.PARTIAL&&d.gap)&&(r=d),r&&d.sn===r.sn&&(!u||h[0].fragment.sn>d.sn||!s.live)&&d.level===r.level){const E=n[f+1];d.sn${e.startSN} fragments: ${i}`),c}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,e.partTarget*3)}setStartPosition(e,t){let s=this.startPosition;s=0&&(s=this.nextLoadPosition),s}handleFragLoadAborted(e,t){this.transmuxer&&e.type===this.playlistType&&ve(e)&&e.stats.aborted&&(this.log(`Fragment ${e.sn}${t?" part "+t.index:""} of ${this.playlistLabel()} ${e.level} was aborted`),this.resetFragmentLoading(e))}resetFragmentLoading(e){(!this.fragCurrent||!this.fragContextChanged(e)&&this.state!==P.FRAG_LOADING_WAITING_RETRY)&&(this.state=P.IDLE)}onFragmentOrKeyLoadError(e,t){var s;if(t.chunkMeta&&!t.frag){const E=this.getCurrentContext(t.chunkMeta);E&&(t.frag=E.frag)}const i=t.frag;if(!i||i.type!==e||!this.levels)return;if(this.fragContextChanged(i)){var r;this.warn(`Frag load error must match current frag to retry ${i.url} > ${(r=this.fragCurrent)==null?void 0:r.url}`);return}const n=t.details===_.FRAG_GAP;n&&this.fragmentTracker.fragBuffered(i,!0);const o=t.errorAction;if(!o){this.state=P.ERROR;return}const{action:c,flags:l,retryCount:h=0,retryConfig:u}=o,d=!!u,g=d&&c===Le.RetryRequest,f=d&&!o.resolved&&l===Ge.MoveAllAlternatesMatchingHost,p=(s=this.hls.latestLevelDetails)==null?void 0:s.live;if(!g&&f&&ve(i)&&!i.endList&&p&&!Ia(t))this.resetFragmentErrors(e),this.treatAsGap(i),o.resolved=!0;else if((g||f)&&h=t||s&&!Mi(0))&&(s&&this.log("Connection restored (online)"),this.resetStartWhenNotLoaded(),this.state=P.IDLE)}reduceLengthAndFlushBuffer(e){if(this.state===P.PARSING||this.state===P.PARSED){const t=e.frag,s=e.parent,i=this.getFwdBufferInfo(this.mediaBuffer,s),r=i&&i.len>.5;r&&this.reduceMaxBufferLength(i.len,t?.duration||10);const n=!r;return n&&this.warn(`Buffer full error while media.currentTime (${this.getLoadPosition()}) is not buffered, flush ${s} buffer`),t&&(this.fragmentTracker.removeFragment(t),this.nextLoadPosition=t.start),this.resetLoadingState(),n}return!1}resetFragmentErrors(e){e===Y.AUDIO&&(this.fragCurrent=null),this.hls.hasEnoughToStart||(this.startFragRequested=!1),this.state!==P.STOPPED&&(this.state=P.IDLE)}afterBufferFlushed(e,t,s){if(!e)return;const i=Q.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,i,s),this.state===P.ENDED&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state!==P.STOPPED&&(this.state=P.IDLE)}resetStartWhenNotLoaded(){if(!this.hls.hasEnoughToStart){this.startFragRequested=!1;const e=this.levelLastLoaded,t=e?e.details:null;t!=null&&t.live?(this.log("resetting startPosition for live start"),this.startPosition=-1,this.setStartPosition(t,t.fragmentStart),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(e){this.log(`Loading context changed while buffering sn ${e.sn} of ${this.playlistLabel()} ${e.level===-1?"":e.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(),this.resetLoadingState()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,s,i){const r=s.details;if(!r){this.warn("level.details undefined");return}if(!Object.keys(e.elementaryStreams).reduce((c,l)=>{const h=e.elementaryStreams[l];if(h){const u=h.endPTS-h.startPTS;if(u<=0)return this.warn(`Could not parse fragment ${e.sn} ${l} duration reliably (${u})`),c||!1;const d=i?0:wa(r,e,h.startPTS,h.endPTS,h.startDTS,h.endDTS,this);return this.hls.trigger(m.LEVEL_PTS_UPDATED,{details:r,level:s,drift:d,type:l,frag:e,start:h.startPTS,end:h.endPTS}),!0}return c},!1)){var o;const c=((o=this.transmuxer)==null?void 0:o.error)===null;if((s.fragmentError===0||c&&(s.fragmentError<2||e.endList))&&this.treatAsGap(e,s),c){const l=new Error(`Found no media in fragment ${e.sn} of ${this.playlistLabel()} ${e.level} resetting transmuxer to fallback to playlist timing`);if(this.warn(l.message),this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,fatal:!1,error:l,frag:e,reason:`Found no media in msn ${e.sn} of ${this.playlistLabel()} "${s.url}"`}),!this.hls)return;this.resetTransmuxer()}}this.state=P.PARSED,this.log(`Parsed ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.fragInfo(e,!1,t)})`),this.hls.trigger(m.FRAG_PARSED,{frag:e,part:t})}playlistLabel(){return this.playlistType===Y.MAIN?"level":"track"}fragInfo(e,t=!0,s){var i,r;return`${this.playlistLabel()} ${e.level} (${s?"part":"frag"}:[${((i=t&&!s?e.startPTS:(s||e).start)!=null?i:NaN).toFixed(3)}-${((r=t&&!s?e.endPTS:(s||e).end)!=null?r:NaN).toFixed(3)}]${s&&e.type==="main"?"INDEPENDENT="+(s.independent?"YES":"NO"):""}`}treatAsGap(e,t){t&&t.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)}resetTransmuxer(){var e;(e=this.transmuxer)==null||e.reset()}recoverWorkerError(e){e.event==="demuxerWorker"&&(this.fragmentTracker.removeAllFragments(),this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null),this.resetStartWhenNotLoaded(),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}function vn(a){return!!a.interstitialsController&&a.enableInterstitialPlayback!==!1}class Ga{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let s;if(e.length)e.length===1?s=e[0]:s=sh(e,t);else return new Uint8Array(0);return this.reset(),s}reset(){this.chunks.length=0,this.dataLength=0}}function sh(a,e){const t=new Uint8Array(e);let s=0;for(let i=0;i0)return a.subarray(t,t+s)}function ch(a,e,t,s){const i=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],r=e[t+2],n=r>>2&15;if(n>12){const g=new Error(`invalid ADTS sampling index:${n}`);a.emit(m.ERROR,m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,fatal:!0,error:g,reason:g.message});return}const o=(r>>6&3)+1,c=e[t+3]>>6&3|(r&1)<<2,l="mp4a.40."+o,h=i[n];let u=n;(o===5||o===29)&&(u-=3);const d=[o<<3|(u&14)>>1,(u&1)<<7|c<<3];return ne.log(`manifest codec:${s}, parsed codec:${l}, channels:${c}, rate:${h} (ADTS object type:${o} sampling index:${n})`),{config:d,samplerate:h,channelCount:c,codec:l,parsedCodec:l,manifestCodec:s}}function Va(a,e){return a[e]===255&&(a[e+1]&246)===240}function Ha(a,e){return a[e+1]&1?7:9}function gr(a,e){return(a[e+3]&3)<<11|a[e+4]<<3|(a[e+5]&224)>>>5}function hh(a,e){return e+5=a.length)return!1;const s=gr(a,e);if(s<=t)return!1;const i=e+s;return i===a.length||Ws(a,i)}return!1}function Ya(a,e,t,s,i){if(!a.samplerate){const r=ch(e,t,s,i);if(!r)return;ae(a,r)}}function Wa(a){return 1024*9e4/a}function fh(a,e){const t=Ha(a,e);if(e+t<=a.length){const s=gr(a,e)-t;if(s>0)return{headerLength:t,frameLength:s}}}function qa(a,e,t,s,i){const r=Wa(a.samplerate),n=s+i*r,o=fh(e,t);let c;if(o){const{frameLength:u,headerLength:d}=o,g=d+u,f=Math.max(0,t+g-e.length);f?(c=new Uint8Array(g-d),c.set(e.subarray(t+d,e.length),0)):c=e.subarray(t+d,t+g);const p={unit:c,pts:n};return f||a.samples.push(p),{sample:p,length:g,missing:f}}const l=e.length-t;return c=new Uint8Array(l),c.set(e.subarray(t,e.length),0),{sample:{unit:c,pts:n},length:l,missing:-1}}function gh(a,e){return fr(a,e)&&Xs(a,e+6)+10<=a.length-e}function mh(a){return a instanceof ArrayBuffer?a:a.byteOffset==0&&a.byteLength==a.buffer.byteLength?a.buffer:new Uint8Array(a).buffer}function di(a,e=0,t=1/0){return ph(a,e,t,Uint8Array)}function ph(a,e,t,s){const i=yh(a);let r=1;"BYTES_PER_ELEMENT"in s&&(r=s.BYTES_PER_ELEMENT);const n=Eh(a)?a.byteOffset:0,o=(n+a.byteLength)/r,c=(n+e)/r,l=Math.floor(Math.max(0,Math.min(c,o))),h=Math.floor(Math.min(l+Math.max(t,0),o));return new s(i,l,h-l)}function yh(a){return a instanceof ArrayBuffer?a:a.buffer}function Eh(a){return a&&a.buffer instanceof ArrayBuffer&&a.byteLength!==void 0&&a.byteOffset!==void 0}function vh(a){const e={key:a.type,description:"",data:"",mimeType:null,pictureType:null},t=3;if(a.size<2)return;if(a.data[0]!==t){console.log("Ignore frame with unrecognized character encoding");return}const s=a.data.subarray(1).indexOf(0);if(s===-1)return;const i=Ye(di(a.data,1,s)),r=a.data[2+s],n=a.data.subarray(3+s).indexOf(0);if(n===-1)return;const o=Ye(di(a.data,3+s,n));let c;return i==="-->"?c=Ye(di(a.data,4+s+n)):c=mh(a.data.subarray(4+s+n)),e.mimeType=i,e.pictureType=r,e.description=o,e.data=c,e}function Th(a){if(a.size<2)return;const e=Ye(a.data,!0),t=new Uint8Array(a.data.subarray(e.length+1));return{key:a.type,info:e,data:t.buffer}}function Sh(a){if(a.size<2)return;if(a.type==="TXXX"){let t=1;const s=Ye(a.data.subarray(t),!0);t+=s.length+1;const i=Ye(a.data.subarray(t));return{key:a.type,info:s,data:i}}const e=Ye(a.data.subarray(1));return{key:a.type,info:"",data:e}}function xh(a){if(a.type==="WXXX"){if(a.size<2)return;let t=1;const s=Ye(a.data.subarray(t),!0);t+=s.length+1;const i=Ye(a.data.subarray(t));return{key:a.type,info:s,data:i}}const e=Ye(a.data);return{key:a.type,info:"",data:e}}function Ah(a){return a.type==="PRIV"?Th(a):a.type[0]==="W"?xh(a):a.type==="APIC"?vh(a):Sh(a)}function Ih(a){const e=String.fromCharCode(a[0],a[1],a[2],a[3]),t=Xs(a,4),s=10;return{type:e,size:t,data:a.subarray(s,s+t)}}const ms=10,Lh=10;function ja(a){let e=0;const t=[];for(;fr(a,e);){const s=Xs(a,e+6);a[e+5]>>6&1&&(e+=ms),e+=ms;const i=e+s;for(;e+Lh0&&o.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:He.audioId3,duration:Number.POSITIVE_INFINITY});i{if(V(a))return a*90;const s=t?t.baseTime*9e4/t.timescale:0;return e*9e4+s};let ps=null;const _h=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Dh=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Ch=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Ph=[0,1,1,4];function za(a,e,t,s,i){if(t+24>e.length)return;const r=Qa(e,t);if(r&&t+r.frameLength<=e.length){const n=r.samplesPerFrame*9e4/r.sampleRate,o=s+i*n,c={unit:e.subarray(t,t+r.frameLength),pts:o,dts:o};return a.config=[],a.channelCount=r.channelCount,a.samplerate=r.sampleRate,a.samples.push(c),{sample:c,length:r.frameLength,missing:0}}}function Qa(a,e){const t=a[e+1]>>3&3,s=a[e+1]>>1&3,i=a[e+2]>>4&15,r=a[e+2]>>2&3;if(t!==1&&i!==0&&i!==15&&r!==3){const n=a[e+2]>>1&1,o=a[e+3]>>6,c=t===3?3-s:s===3?3:4,l=_h[c*14+i-1]*1e3,u=Dh[(t===3?0:t===2?1:2)*3+r],d=o===3?1:2,g=Ch[t][s],f=Ph[s],p=g*8*f,y=Math.floor(g*l/u+n)*f;if(ps===null){const T=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);ps=T?parseInt(T[1]):0}return ps&&ps<=87&&s===2&&l>=224e3&&o===0&&(a[e+3]=a[e+3]|128),{sampleRate:u,channelCount:d,frameLength:y,samplesPerFrame:p}}}function yr(a,e){return a[e]===255&&(a[e+1]&224)===224&&(a[e+1]&6)!==0}function Za(a,e){return e+1{let t=0,s=5;e+=s;const i=new Uint32Array(1),r=new Uint32Array(1),n=new Uint8Array(1);for(;s>0;){n[0]=a[e];const o=Math.min(s,8),c=8-o;r[0]=4278190080>>>24+c<>c,t=t?t<e.length||e[t]!==11||e[t+1]!==119)return-1;const r=e[t+4]>>6;if(r>=3)return-1;const o=[48e3,44100,32e3][r],c=e[t+4]&63,h=[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][c*3+r]*2;if(t+h>e.length)return-1;const u=e[t+6]>>5;let d=0;u===2?d+=2:(u&1&&u!==1&&(d+=2),u&4&&(d+=2));const g=(e[t+6]<<8|e[t+7])>>12-d&1,p=[2,1,2,3,3,4,4,5][u]+g,y=e[t+5]>>3,E=e[t+5]&7,v=new Uint8Array([r<<6|y<<1|E>>2,(E&3)<<6|u<<3|g<<2|c>>4,c<<4&224]),T=1536/o*9e4,S=s+i*T,x=e.subarray(t,t+h);return a.config=v,a.channelCount=p,a.samplerate=o,a.samples.push({unit:x,pts:S}),h}class Fh extends pr{resetInitSegment(e,t,s,i){super.resetInitSegment(e,t,s,i),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:t,duration:i,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=as(e,0);let s=t?.length||0;if(t&&e[s]===11&&e[s+1]===119&&mr(t)!==void 0&&eo(e,s)<=16)return!1;for(let i=e.length;s{const n=Vl(r);if(Mh.test(n.schemeIdUri)){const o=Sn(n,t);let c=n.eventDuration===4294967295?Number.POSITIVE_INFINITY:n.eventDuration/n.timeScale;c<=.001&&(c=Number.POSITIVE_INFINITY);const l=n.payload;s.samples.push({data:l,len:l.byteLength,dts:o,pts:o,type:He.emsg,duration:c})}else if(this.config.enableEmsgKLVMetadata&&n.schemeIdUri.startsWith("urn:misb:KLV:bin:1910.1")){const o=Sn(n,t);s.samples.push({data:n.payload,len:n.payload.byteLength,dts:o,pts:o,type:He.misbklv,duration:Number.POSITIVE_INFINITY})}})}return s}demuxSampleAes(e,t,s){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){this.config=null,this.remainderData=null,this.videoTrack=this.audioTrack=this.id3Track=this.txtTrack=void 0}}function Sn(a,e){return V(a.presentationTime)?a.presentationTime/a.timeScale:e+a.presentationTimeDelta/a.timeScale}class Bh{constructor(e,t,s){this.keyData=void 0,this.decrypter=void 0,this.keyData=s,this.decrypter=new or(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer,Rt.cbc)}decryptAacSample(e,t,s){const i=e[t].unit;if(i.length<=16)return;const r=i.subarray(16,i.length-i.length%16),n=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(n).then(o=>{const c=new Uint8Array(o);i.set(c,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,s)}).catch(s)}decryptAacSamples(e,t,s){for(;;t++){if(t>=e.length){s();return}if(!(e[t].unit.length<32)&&(this.decryptAacSample(e,t,s),!this.decrypter.isSync()))return}}getAvcEncryptedData(e){const t=Math.floor((e.length-48)/160)*16+16,s=new Int8Array(t);let i=0;for(let r=32;r{r.data=this.getAvcDecryptedUnit(n,c),this.decrypter.isSync()||this.decryptAvcSamples(e,t,s+1,i)}).catch(i)}decryptAvcSamples(e,t,s,i){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,s=0){if(t>=e.length){i();return}const r=e[t].units;for(;!(s>=r.length);s++){const n=r[s];if(!(n.data.length<=48||n.type!==1&&n.type!==5)&&(this.decryptAvcSample(e,t,s,i,n),!this.decrypter.isSync()))return}}}}class so{constructor(){this.VideoSample=null}createVideoSample(e,t,s){return{key:e,frame:!1,pts:t,dts:s,units:[],length:0}}getLastNalUnit(e){var t;let s=this.VideoSample,i;if((!s||s.units.length===0)&&(s=e[e.length-1]),(t=s)!=null&&t.units){const r=s.units;i=r[r.length-1]}return i}pushAccessUnit(e,t){if(e.units.length&&e.frame){if(e.pts===void 0){const s=t.samples,i=s.length;if(i){const r=s[i-1];e.pts=r.pts,e.dts=r.dts}else{t.dropped++;return}}t.samples.push(e)}}parseNALu(e,t,s){const i=t.byteLength;let r=e.naluState||0;const n=r,o=[];let c=0,l,h,u,d=-1,g=0;for(r===-1&&(d=0,g=this.getNALuType(t,0),r=0,c=1);c=0){const f={data:t.subarray(d,h),type:g};o.push(f)}else{const f=this.getLastNalUnit(e.samples);f&&(n&&c<=4-n&&f.state&&(f.data=f.data.subarray(0,f.data.byteLength-n)),h>0&&(f.data=We(f.data,t.subarray(0,h)),f.state=0))}c=0&&r>=0){const f={data:t.subarray(d,i),type:g,state:r};o.push(f)}if(o.length===0){const f=this.getLastNalUnit(e.samples);f&&(f.data=We(f.data,t))}return e.naluState=r,o}}class es{constructor(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const e=this.data,t=this.bytesAvailable,s=e.byteLength-t,i=new Uint8Array(4),r=Math.min(4,t);if(r===0)throw new Error("no bytes available");i.set(e.subarray(s,s+r)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=r*8,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,this.bytesAvailable*8+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const s=this.word>>>32-t;if(e>32&&ne.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else if(this.bytesAvailable>0)this.loadWord();else throw new Error("no bits available");return t=e-t,t>0&&this.bitsAvailable?s<>>e)!==0)return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return this.readBits(1)===1}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class Uh extends so{parsePES(e,t,s,i){const r=this.parseNALu(e,s.data,i);let n=this.VideoSample,o,c=!1;s.data=null,n&&r.length&&!e.audFound&&(this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts)),r.forEach(l=>{var h,u;switch(l.type){case 1:{let p=!1;o=!0;const y=l.data;if(c&&y.length>4){const E=this.readSliceType(y);(E===2||E===4||E===7||E===9)&&(p=!0)}if(p){var d;(d=n)!=null&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null)}n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.frame=!0,n.key=p;break}case 5:o=!0,(h=n)!=null&&h.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.key=!0,n.frame=!0;break;case 6:{o=!0,ir(l.data,1,s.pts,t.samples);break}case 7:{var g,f;o=!0,c=!0;const p=l.data,y=this.readSPS(p);if(!e.sps||e.width!==y.width||e.height!==y.height||((g=e.pixelRatio)==null?void 0:g[0])!==y.pixelRatio[0]||((f=e.pixelRatio)==null?void 0:f[1])!==y.pixelRatio[1]){e.width=y.width,e.height=y.height,e.pixelRatio=y.pixelRatio,e.sps=[p];const E=p.subarray(1,4);let v="avc1.";for(let T=0;T<3;T++){let S=E[T].toString(16);S.length<2&&(S="0"+S),v+=S}e.codec=v}break}case 8:o=!0,e.pps=[l.data];break;case 9:o=!0,e.audFound=!0,(u=n)!=null&&u.frame&&(this.pushAccessUnit(n,e),n=null),n||(n=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts));break;case 12:o=!0;break;default:o=!1;break}n&&o&&n.units.push(l)}),i&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}getNALuType(e,t){return e[t]&31}readSliceType(e){const t=new es(e);return t.readUByte(),t.readUEG(),t.readUEG()}skipScalingList(e,t){let s=8,i=8,r;for(let n=0;n{var h,u;switch(l.type){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:n||(n=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts)),n.frame=!0,o=!0;break;case 16:case 17:case 18:case 21:if(o=!0,c){var d;(d=n)!=null&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null)}n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.key=!0,n.frame=!0;break;case 19:case 20:o=!0,(h=n)!=null&&h.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.key=!0,n.frame=!0;break;case 39:o=!0,ir(l.data,2,s.pts,t.samples);break;case 32:o=!0,e.vps||(typeof e.params!="object"&&(e.params={}),e.params=ae(e.params,this.readVPS(l.data)),this.initVPS=l.data),e.vps=[l.data];break;case 33:if(o=!0,c=!0,e.vps!==void 0&&e.vps[0]!==this.initVPS&&e.sps!==void 0&&!this.matchSPS(e.sps[0],l.data)&&(this.initVPS=e.vps[0],e.sps=e.pps=void 0),!e.sps){const g=this.readSPS(l.data);e.width=g.width,e.height=g.height,e.pixelRatio=g.pixelRatio,e.codec=g.codecString,e.sps=[],typeof e.params!="object"&&(e.params={});for(const f in g.params)e.params[f]=g.params[f]}this.pushParameterSet(e.sps,l.data,e.vps),n||(n=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),n.key=!0;break;case 34:if(o=!0,typeof e.params=="object"){if(!e.pps){e.pps=[];const g=this.readPPS(l.data);for(const f in g)e.params[f]=g[f]}this.pushParameterSet(e.pps,l.data,e.vps)}break;case 35:o=!0,e.audFound=!0,(u=n)!=null&&u.frame&&(this.pushAccessUnit(n,e),n=null),n||(n=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts));break;default:o=!1;break}n&&o&&n.units.push(l)}),i&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}pushParameterSet(e,t,s){(s&&s[0]===this.initVPS||!s&&!e.length)&&e.push(t)}getNALuType(e,t){return(e[t]&126)>>>1}ebsp2rbsp(e){const t=new Uint8Array(e.byteLength);let s=0;for(let i=0;i=2&&e[i]===3&&e[i-1]===0&&e[i-2]===0||(t[s]=e[i],s++);return new Uint8Array(t.buffer,0,s)}pushAccessUnit(e,t){super.pushAccessUnit(e,t),this.initVPS&&(this.initVPS=null)}readVPS(e){const t=new es(e);t.readUByte(),t.readUByte(),t.readBits(4),t.skipBits(2),t.readBits(6);const s=t.readBits(3),i=t.readBoolean();return{numTemporalLayers:s+1,temporalIdNested:i}}readSPS(e){const t=new es(this.ebsp2rbsp(e));t.readUByte(),t.readUByte(),t.readBits(4);const s=t.readBits(3);t.readBoolean();const i=t.readBits(2),r=t.readBoolean(),n=t.readBits(5),o=t.readUByte(),c=t.readUByte(),l=t.readUByte(),h=t.readUByte(),u=t.readUByte(),d=t.readUByte(),g=t.readUByte(),f=t.readUByte(),p=t.readUByte(),y=t.readUByte(),E=t.readUByte(),v=[],T=[];for(let se=0;se0)for(let se=s;se<8;se++)t.readBits(2);for(let se=0;se1&&t.readEG();for(let at=0;at0&&ot<16?(U=cs[ot-1],X=wt[ot-1]):ot===255&&(U=t.readBits(16),X=t.readBits(16))}if(t.readBoolean()&&t.readBoolean(),t.readBoolean()&&(t.readBits(3),t.readBoolean(),t.readBoolean()&&(t.readUByte(),t.readUByte(),t.readUByte())),t.readBoolean()&&(t.readUEG(),t.readUEG()),t.readBoolean(),t.readBoolean(),t.readBoolean(),ue=t.readBoolean(),ue&&(t.skipUEG(),t.skipUEG(),t.skipUEG(),t.skipUEG()),t.readBoolean()&&(j=t.readBits(32),J=t.readBits(32),t.readBoolean()&&t.readUEG(),t.readBoolean())){const wt=t.readBoolean(),me=t.readBoolean();let ye=!1;(wt||me)&&(ye=t.readBoolean(),ye&&(t.readUByte(),t.readBits(5),t.readBoolean(),t.readBits(5)),t.readBits(4),t.readBits(4),ye&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(let bt=0;bt<=s;bt++){Z=t.readBoolean();const Zs=Z||t.readBoolean();let Lr=!1;Zs?t.readEG():Lr=t.readBoolean();const Rr=Lr?1:t.readUEG()+1;if(wt)for(let qt=0;qt>se&1)<<31-se)>>>0;let Be=pt.toString(16);return n===1&&Be==="2"&&(Be="6"),{codecString:`hvc1.${Ce}${n}.${Be}.${r?"H":"L"}${E}.B0`,params:{general_tier_flag:r,general_profile_idc:n,general_profile_space:i,general_profile_compatibility_flags:[o,c,l,h],general_constraint_indicator_flags:[u,d,g,f,p,y],general_level_idc:E,bit_depth:$+8,bit_depth_luma_minus8:$,bit_depth_chroma_minus8:K,min_spatial_segmentation_idc:N,chroma_format_idc:S,frame_rate:{fixed:Z,fps:J/j}},width:Te,height:De,pixelRatio:[U,X]}}readPPS(e){const t=new es(this.ebsp2rbsp(e));t.readUByte(),t.readUByte(),t.skipUEG(),t.skipUEG(),t.skipBits(2),t.skipBits(3),t.skipBits(2),t.skipUEG(),t.skipUEG(),t.skipEG(),t.skipBits(2),t.readBoolean()&&t.skipUEG(),t.skipEG(),t.skipEG(),t.skipBits(4);const i=t.readBoolean(),r=t.readBoolean();let n=1;return r&&i?n=0:r?n=3:i&&(n=2),{parallelismType:n}}matchSPS(e,t){return String.fromCharCode.apply(null,e).substr(3)===String.fromCharCode.apply(null,t).substr(3)}}const Ie=188;class xt{constructor(e,t,s,i){this.logger=void 0,this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=e,this.config=t,this.typeSupported=s,this.logger=i,this.videoParser=null}static probe(e,t){const s=xt.syncOffset(e);return s>0&&t.warn(`MPEG2-TS detected but first sync word found @ offset ${s}`),s!==-1}static syncOffset(e){const t=e.length;let s=Math.min(Ie*5,t-Ie)+1,i=0;for(;i1&&(n===0&&o>2||c+Ie>s))return n}else{if(o)return-1;break}i++}return-1}static createTrack(e,t){return{container:e==="video"||e==="audio"?"video/mp2t":void 0,type:e,id:la[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:e==="audio"?t:void 0}}resetInitSegment(e,t,s,i){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=xt.createTrack("video"),this._videoTrack.duration=i,this._audioTrack=xt.createTrack("audio",i),this._id3Track=xt.createTrack("id3"),this._txtTrack=xt.createTrack("text"),this._audioTrack.segmentCodec="aac",this.videoParser=null,this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:s}=this;e&&(e.pesData=null),t&&(t.pesData=null),s&&(s.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,s=!1,i=!1){s||(this.sampleAes=null);let r;const n=this._videoTrack,o=this._audioTrack,c=this._id3Track,l=this._txtTrack;let h=n.pid,u=n.pesData,d=o.pid,g=c.pid,f=o.pesData,p=c.pesData,y=null,E=this.pmtParsed,v=this._pmtId,T=e.length;if(this.remainderData&&(e=We(this.remainderData,e),T=e.length,this.remainderData=null),T>4;let C;if(I>1){if(C=A+5+e[A+4],C===A+Ie)continue}else C=A+4;switch(R){case h:L&&(u&&(r=Nt(u,this.logger))&&(this.readyVideoParser(n.segmentCodec),this.videoParser!==null&&this.videoParser.parsePES(n,l,r,!1)),u={data:[],size:0}),u&&(u.data.push(e.subarray(C,A+Ie)),u.size+=A+Ie-C);break;case d:if(L){if(f&&(r=Nt(f,this.logger)))switch(o.segmentCodec){case"aac":this.parseAACPES(o,r);break;case"mp3":this.parseMPEGPES(o,r);break;case"ac3":this.parseAC3PES(o,r);break}f={data:[],size:0}}f&&(f.data.push(e.subarray(C,A+Ie)),f.size+=A+Ie-C);break;case g:L&&(p&&(r=Nt(p,this.logger))&&this.parseID3PES(c,r),p={data:[],size:0}),p&&(p.data.push(e.subarray(C,A+Ie)),p.size+=A+Ie-C);break;case 0:L&&(C+=e[C]+1),v=this._pmtId=Gh(e,C);break;case v:{L&&(C+=e[C]+1);const $=Kh(e,C,this.typeSupported,s,this.observer,this.logger);h=$.videoPid,h>0&&(n.pid=h,n.segmentCodec=$.segmentVideoCodec),d=$.audioPid,d>0&&(o.pid=d,o.segmentCodec=$.segmentAudioCodec),g=$.id3Pid,g>0&&(c.pid=g),y!==null&&!E&&(this.logger.warn(`MPEG-TS PMT found at ${A} after unknown PID '${y}'. Backtracking to sync byte @${S} to parse all TS packets.`),y=null,A=S-188),E=this.pmtParsed=!0;break}case 17:case 8191:break;default:y=R;break}}else x++;x>0&&Ki(this.observer,new Error(`Found ${x} TS packet/s that do not start with 0x47`),void 0,this.logger),n.pesData=u,o.pesData=f,c.pesData=p;const D={audioTrack:o,videoTrack:n,id3Track:c,textTrack:l};return i&&this.extractRemainingSamples(D),D}flush(){const{remainderData:e}=this;this.remainderData=null;let t;return e?t=this.demux(e,-1,!1,!0):t={videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:s,id3Track:i,textTrack:r}=e,n=s.pesData,o=t.pesData,c=i.pesData;let l;if(n&&(l=Nt(n,this.logger))?(this.readyVideoParser(s.segmentCodec),this.videoParser!==null&&(this.videoParser.parsePES(s,r,l,!0),s.pesData=null)):s.pesData=n,o&&(l=Nt(o,this.logger))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l);break}t.pesData=null}else o!=null&&o.size&&this.logger.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=o;c&&(l=Nt(c,this.logger))?(this.parseID3PES(i,l),i.pesData=null):i.pesData=c}demuxSampleAes(e,t,s){const i=this.demux(e,s,!0,!this.config.progressive),r=this.sampleAes=new Bh(this.observer,this.config,t);return this.decrypt(i,r)}readyVideoParser(e){this.videoParser===null&&(e==="avc"?this.videoParser=new Uh:e==="hevc"&&(this.videoParser=new $h))}decrypt(e,t){return new Promise(s=>{const{audioTrack:i,videoTrack:r}=e;i.samples&&i.segmentCodec==="aac"?t.decryptAacSamples(i.samples,0,()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,()=>{s(e)}):s(e)}):r.samples&&t.decryptAvcSamples(r.samples,0,0,()=>{s(e)})})}destroy(){this.observer&&this.observer.removeAllListeners(),this.config=this.logger=this.observer=null,this.aacOverFlow=this.videoParser=this.remainderData=this.sampleAes=null,this._videoTrack=this._audioTrack=this._id3Track=this._txtTrack=void 0}parseAACPES(e,t){let s=0;const i=this.aacOverFlow;let r=t.data;if(i){this.aacOverFlow=null;const u=i.missing,d=i.sample.unit.byteLength;if(u===-1)r=We(i.sample.unit,r);else{const g=d-u;i.sample.unit.set(r.subarray(0,u),g),e.samples.push(i.sample),s=i.missing}}let n,o;for(n=s,o=r.length;n0;)o+=c}}parseID3PES(e,t){if(t.pts===void 0){this.logger.warn("[tsdemuxer]: ID3 PES unknown PTS");return}const s=ae({},t,{type:this._videoTrack?He.emsg:He.audioId3,duration:Number.POSITIVE_INFINITY});e.samples.push(s)}}function Gi(a,e){return((a[e+1]&31)<<8)+a[e+2]}function Gh(a,e){return(a[e+10]&31)<<8|a[e+11]}function Kh(a,e,t,s,i,r){const n={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},o=(a[e+1]&15)<<8|a[e+2],c=e+3+o-4,l=(a[e+10]&15)<<8|a[e+11];for(e+=12+l;e0){let d=e+5,g=u;for(;g>2;){a[d]===106&&(t.ac3!==!0?r.log("AC-3 audio found, not supported in this browser for now"):(n.audioPid=h,n.segmentAudioCodec="ac3"));const p=a[d+1]+2;d+=p,g-=p}}break;case 194:case 135:return Ki(i,new Error("Unsupported EC-3 in M2TS found"),void 0,r),n;case 36:n.videoPid===-1&&(n.videoPid=h,n.segmentVideoCodec="hevc",r.log("HEVC in M2TS found"));break}e+=u+5}return n}function Ki(a,e,t,s){s.warn(`parsing error: ${e.message}`),a.emit(m.ERROR,m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,fatal:!1,levelRetry:t,error:e,reason:e.message})}function fi(a,e){e.log(`${a} with AES-128-CBC encryption found in unencrypted stream`)}function Nt(a,e){let t=0,s,i,r,n,o;const c=a.data;if(!a||a.size===0)return null;for(;c[0].length<19&&c.length>1;)c[0]=We(c[0],c[1]),c.splice(1,1);if(s=c[0],(s[0]<<16)+(s[1]<<8)+s[2]===1){if(i=(s[4]<<8)+s[5],i&&i>a.size-6)return null;const h=s[7];h&192&&(n=(s[9]&14)*536870912+(s[10]&255)*4194304+(s[11]&254)*16384+(s[12]&255)*128+(s[13]&254)/2,h&64?(o=(s[14]&14)*536870912+(s[15]&255)*4194304+(s[16]&254)*16384+(s[17]&255)*128+(s[18]&254)/2,n-o>60*9e4&&(e.warn(`${Math.round((n-o)/9e4)}s delta between PTS and DTS, align them`),n=o)):o=n),r=s[8];let u=r+9;if(a.size<=u)return null;a.size-=u;const d=new Uint8Array(a.size);for(let g=0,f=c.length;gp){u-=p;continue}else s=s.subarray(u),p-=u,u=0;d.set(s,t),t+=p}return i&&(i-=r+3),{data:d,pts:n,dts:o,len:i}}return null}class Vh{static getSilentFrame(e,t){switch(e){case"mp4a.40.2":if(t===1)return new Uint8Array([0,200,0,128,35,128]);if(t===2)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(t===3)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(t===4)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(t===5)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(t===6)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(t===1)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===2)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===3)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);break}}}const Et=Math.pow(2,32)-1;class b{static init(){b.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};let e;for(e in b.types)b.types.hasOwnProperty(e)&&(b.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),s=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);b.HDLR_TYPES={video:t,audio:s};const i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);b.STTS=b.STSC=b.STCO=r,b.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),b.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),b.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),b.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const n=new Uint8Array([105,115,111,109]),o=new Uint8Array([97,118,99,49]),c=new Uint8Array([0,0,0,1]);b.FTYP=b.box(b.types.ftyp,n,c,n,o),b.DINF=b.box(b.types.dinf,b.box(b.types.dref,i))}static box(e,...t){let s=8,i=t.length;const r=i;for(;i--;)s+=t[i].byteLength;const n=new Uint8Array(s);for(n[0]=s>>24&255,n[1]=s>>16&255,n[2]=s>>8&255,n[3]=s&255,n.set(e,4),i=0,s=8;i>24&255,e>>16&255,e>>8&255,e&255,s>>24,s>>16&255,s>>8&255,s&255,i>>24,i>>16&255,i>>8&255,i&255,85,196,0,0]))}static mdia(e){return b.box(b.types.mdia,b.mdhd(e.timescale||0,e.duration||0),b.hdlr(e.type),b.minf(e))}static mfhd(e){return b.box(b.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,e&255]))}static minf(e){return e.type==="audio"?b.box(b.types.minf,b.box(b.types.smhd,b.SMHD),b.DINF,b.stbl(e)):b.box(b.types.minf,b.box(b.types.vmhd,b.VMHD),b.DINF,b.stbl(e))}static moof(e,t,s){return b.box(b.types.moof,b.mfhd(e),b.traf(s,t))}static moov(e){let t=e.length;const s=[];for(;t--;)s[t]=b.trak(e[t]);return b.box.apply(null,[b.types.moov,b.mvhd(e[0].timescale||0,e[0].duration||0)].concat(s).concat(b.mvex(e)))}static mvex(e){let t=e.length;const s=[];for(;t--;)s[t]=b.trex(e[t]);return b.box.apply(null,[b.types.mvex,...s])}static mvhd(e,t){t*=e;const s=Math.floor(t/(Et+1)),i=Math.floor(t%(Et+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,e&255,s>>24,s>>16&255,s>>8&255,s&255,i>>24,i>>16&255,i>>8&255,i&255,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return b.box(b.types.mvhd,r)}static sdtp(e){const t=e.samples||[],s=new Uint8Array(4+t.length);let i,r;for(i=0;i>>8&255),t.push(n&255),t=t.concat(Array.prototype.slice.call(r));for(i=0;i>>8&255),s.push(n&255),s=s.concat(Array.prototype.slice.call(r));const o=b.box(b.types.avcC,new Uint8Array([1,t[3],t[4],t[5],255,224|e.sps.length].concat(t).concat([e.pps.length]).concat(s))),c=e.width,l=e.height,h=e.pixelRatio[0],u=e.pixelRatio[1];return b.box(b.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,c>>8&255,c&255,l>>8&255,l&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,b.box(b.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),b.box(b.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,h&255,u>>24,u>>16&255,u>>8&255,u&255])))}static esds(e){const t=e.config;return new Uint8Array([0,0,0,0,3,25,0,1,0,4,17,64,21,0,0,0,0,0,0,0,0,0,0,0,5,2,...t,6,1,2])}static audioStsd(e){const t=e.samplerate||0;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount||0,0,16,0,0,0,0,t>>8&255,t&255,0,0])}static mp4a(e){return b.box(b.types.mp4a,b.audioStsd(e),b.box(b.types.esds,b.esds(e)))}static mp3(e){return b.box(b.types[".mp3"],b.audioStsd(e))}static ac3(e){return b.box(b.types["ac-3"],b.audioStsd(e),b.box(b.types.dac3,e.config))}static stsd(e){const{segmentCodec:t}=e;if(e.type==="audio"){if(t==="aac")return b.box(b.types.stsd,b.STSD,b.mp4a(e));if(t==="ac3"&&e.config)return b.box(b.types.stsd,b.STSD,b.ac3(e));if(t==="mp3"&&e.codec==="mp3")return b.box(b.types.stsd,b.STSD,b.mp3(e))}else if(e.pps&&e.sps){if(t==="avc")return b.box(b.types.stsd,b.STSD,b.avc1(e));if(t==="hevc"&&e.vps)return b.box(b.types.stsd,b.STSD,b.hvc1(e))}else throw new Error("video track missing pps or sps");throw new Error(`unsupported ${e.type} segment codec (${t}/${e.codec})`)}static tkhd(e){const t=e.id,s=(e.duration||0)*(e.timescale||0),i=e.width||0,r=e.height||0,n=Math.floor(s/(Et+1)),o=Math.floor(s%(Et+1));return b.box(b.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,t&255,0,0,0,0,n>>24,n>>16&255,n>>8&255,n&255,o>>24,o>>16&255,o>>8&255,o&255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,i&255,0,0,r>>8&255,r&255,0,0]))}static traf(e,t){const s=b.sdtp(e),i=e.id,r=Math.floor(t/(Et+1)),n=Math.floor(t%(Et+1));return b.box(b.types.traf,b.box(b.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,i&255])),b.box(b.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,r&255,n>>24,n>>16&255,n>>8&255,n&255])),b.trun(e,s.length+16+20+8+16+8+8),s)}static trak(e){return e.duration=e.duration||4294967295,b.box(b.types.trak,b.tkhd(e),b.mdia(e))}static trex(e){const t=e.id;return b.box(b.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,t&255,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const s=e.samples||[],i=s.length,r=12+16*i,n=new Uint8Array(r);let o,c,l,h,u,d;for(t+=8+r,n.set([e.type==="video"?1:0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,i&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255],0),o=0;o>>24&255,l>>>16&255,l>>>8&255,l&255,h>>>24&255,h>>>16&255,h>>>8&255,h&255,u.isLeading<<2|u.dependsOn,u.isDependedOn<<6|u.hasRedundancy<<4|u.paddingValue<<1|u.isNonSync,u.degradPrio&61440,u.degradPrio&15,d>>>24&255,d>>>16&255,d>>>8&255,d&255],12+16*o);return b.box(b.types.trun,n)}static initSegment(e){b.types||b.init();const t=b.moov(e);return We(b.FTYP,t)}static hvc1(e){const t=e.params,s=[e.vps,e.sps,e.pps],i=4,r=new Uint8Array([1,t.general_profile_space<<6|(t.general_tier_flag?32:0)|t.general_profile_idc,t.general_profile_compatibility_flags[0],t.general_profile_compatibility_flags[1],t.general_profile_compatibility_flags[2],t.general_profile_compatibility_flags[3],t.general_constraint_indicator_flags[0],t.general_constraint_indicator_flags[1],t.general_constraint_indicator_flags[2],t.general_constraint_indicator_flags[3],t.general_constraint_indicator_flags[4],t.general_constraint_indicator_flags[5],t.general_level_idc,240|t.min_spatial_segmentation_idc>>8,255&t.min_spatial_segmentation_idc,252|t.parallelismType,252|t.chroma_format_idc,248|t.bit_depth_luma_minus8,248|t.bit_depth_chroma_minus8,0,parseInt(t.frame_rate.fps),i-1|t.temporal_id_nested<<2|t.num_temporal_layers<<3|(t.frame_rate.fixed?64:0),s.length]);let n=r.length;for(let f=0;f>8,s[f][p].length&255]),n),n+=2,o.set(s[f][p],n),n+=s[f][p].length}const l=b.box(b.types.hvcC,o),h=e.width,u=e.height,d=e.pixelRatio[0],g=e.pixelRatio[1];return b.box(b.types.hvc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,h>>8&255,h&255,u>>8&255,u&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),l,b.box(b.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),b.box(b.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,d&255,g>>24,g>>16&255,g>>8&255,g&255])))}}b.types=void 0;b.HDLR_TYPES=void 0;b.STTS=void 0;b.STSC=void 0;b.STCO=void 0;b.STSZ=void 0;b.VMHD=void 0;b.SMHD=void 0;b.STSD=void 0;b.FTYP=void 0;b.DINF=void 0;const io=9e4;function Er(a,e,t=1,s=!1){const i=a*e*t;return s?Math.round(i):i}function Hh(a,e,t=1,s=!1){return Er(a,e,1/t,s)}function Xt(a,e=!1){return Er(a,1e3,1/io,e)}function Yh(a,e=1){return Er(a,io,1/e)}function xn(a){const{baseTime:e,timescale:t,trackId:s}=a;return`${e/t} (${e}/${t}) trackId: ${s}`}const Wh=10*1e3,qh=1024,jh=1152,Xh=1536;let Bt=null,gi=null;function An(a,e,t,s){return{duration:e,size:t,cts:s,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:a?2:1,isNonSync:a?0:1}}}class Cs extends qe{constructor(e,t,s,i){if(super("mp4-remuxer",i),this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextVideoTs=null,this.nextAudioTs=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=e,this.config=t,this.typeSupported=s,this.ISGenerated=!1,Bt===null){const n=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Bt=n?parseInt(n[1]):0}if(gi===null){const r=navigator.userAgent.match(/Safari\/(\d+)/i);gi=r?parseInt(r[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){const t=this._initPTS;(!t||!e||e.trackId!==t.trackId||e.baseTime!==t.baseTime||e.timescale!==t.timescale)&&this.log(`Reset initPTS: ${t&&xn(t)} > ${e&&xn(e)}`),this._initPTS=this._initDTS=e}resetNextTimestamp(){this.log("reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){this.log("ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const s=e[0].pts,i=e.reduce((r,n)=>{let o=n.pts,c=o-r;return c<-4294967296&&(t=!0,o=Ke(o,s),c=o-r),c>0?r:o},s);return t&&this.debug("PTS rollover detected"),i}remux(e,t,s,i,r,n,o,c){let l,h,u,d,g,f,p=r,y=r;const E=e.pid>-1,v=t.pid>-1,T=t.samples.length,S=e.samples.length>0,x=o&&T>0||T>1;if((!E||S)&&(!v||x)||this.ISGenerated||o){if(this.ISGenerated){var A,L,R,I;const H=this.videoTrackConfig;(H&&(t.width!==H.width||t.height!==H.height||((A=t.pixelRatio)==null?void 0:A[0])!==((L=H.pixelRatio)==null?void 0:L[0])||((R=t.pixelRatio)==null?void 0:R[1])!==((I=H.pixelRatio)==null?void 0:I[1]))||!H&&x||this.nextAudioTs===null&&S)&&this.resetInitSegment()}this.ISGenerated||(u=this.generateIS(e,t,r,n));const C=this.isVideoContiguous;let $=-1,K;if(x&&($=zh(t.samples),!C&&this.config.forceKeyFrameOnDiscontinuity))if(f=!0,$>0){this.warn(`Dropped ${$} out of ${T} video samples due to a missing keyframe`);const H=this.getVideoStartPts(t.samples);t.samples=t.samples.slice($),t.dropped+=$,y+=(t.samples[0].pts-H)/t.inputTimeScale,K=y}else $===-1&&(this.warn(`No keyframe found out of ${T} video samples`),f=!1);if(this.ISGenerated){if(S&&x){const H=this.getVideoStartPts(t.samples),w=(Ke(e.samples[0].pts,H)-H)/t.inputTimeScale;p+=Math.max(0,w),y+=Math.max(0,-w)}if(S){if(e.samplerate||(this.warn("regenerate InitSegment as audio detected"),u=this.generateIS(e,t,r,n)),h=this.remuxAudio(e,p,this.isAudioContiguous,n,v||x||c===Y.AUDIO?y:void 0),x){const H=h?h.endPTS-h.startPTS:0;t.inputTimeScale||(this.warn("regenerate InitSegment as video detected"),u=this.generateIS(e,t,r,n)),l=this.remuxVideo(t,y,C,H)}}else x&&(l=this.remuxVideo(t,y,C,0));l&&(l.firstKeyFrame=$,l.independent=$!==-1,l.firstKeyFramePTS=K)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(s.samples.length&&(g=ro(s,r,this._initPTS,this._initDTS)),i.samples.length&&(d=no(i,r,this._initPTS))),{audio:h,video:l,initSegment:u,independent:f,text:d,id3:g}}computeInitPts(e,t,s,i){const r=Math.round(s*t);let n=Ke(e,r);if(n0?N-1:N].dts&&(v=!0)}v&&n.sort(function(N,U){const X=N.dts-U.dts,Z=N.pts-U.pts;return X||Z}),f=n[0].dts,p=n[n.length-1].dts;const S=p-f,x=S?Math.round(S/(c-1)):g||e.inputTimeScale/30;if(s){const N=f-T,U=N>x,X=N<-1;if((U||X)&&(U?this.warn(`${(e.segmentCodec||"").toUpperCase()}: ${Xt(N,!0)} ms (${N}dts) hole between fragments detected at ${t.toFixed(3)}`):this.warn(`${(e.segmentCodec||"").toUpperCase()}: ${Xt(-N,!0)} ms (${N}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!X||T>=n[0].pts||Bt)){f=T;const Z=n[0].pts-N;if(U)n[0].dts=f,n[0].pts=Z;else{let j=!0;for(let J=0;JZ&&j);J++){const ue=n[J].pts;if(n[J].dts-=N,n[J].pts-=N,J0?U.dts-n[N-1].dts:x;if(j=N>0?U.pts-n[N-1].pts:x,ue.stretchShortVideoTrack&&this.nextAudioTs!==null){const Te=Math.floor(ue.maxBufferHole*r),De=(i?y+i*r:this.nextAudioTs+h)-U.pts;De>Te?(g=De-oe,g<0?g=oe:$=!0,this.log(`It is approximately ${De/90} ms to the next segment; using duration ${g/90} ms for the last video frame.`)):g=oe}else g=oe}const J=Math.round(U.pts-U.dts);K=Math.min(K,g),F=Math.max(F,g),H=Math.min(H,j),w=Math.max(w,j),o.push(An(U.key,g,Z,J))}if(o.length){if(Bt){if(Bt<70){const N=o[0].flags;N.dependsOn=2,N.isNonSync=0}}else if(gi&&w-H0&&(i&&Math.abs(T-(E+v))<9e3||Math.abs(Ke(p[0].pts,T)-(E+v))<20*h),p.forEach(function(w){w.pts=Ke(w.pts,T)}),!s||E<0){const w=p.length;if(p=p.filter(M=>M.pts>=0),w!==p.length&&this.warn(`Removed ${p.length-w} of ${w} samples (initPTS ${v} / ${n})`),!p.length)return;r===0?E=0:i&&!f?E=Math.max(0,T-v):E=p[0].pts-v}if(e.segmentCodec==="aac"){const w=this.config.maxAudioFramesDrift;for(let M=0,k=E+v;M=w*h&&U0){A+=y;try{D=new Uint8Array(A)}catch(U){this.observer.emit(m.ERROR,m.ERROR,{type:W.MUX_ERROR,details:_.REMUX_ALLOC_ERROR,fatal:!1,error:U,bytes:A,reason:`fail allocating audio mdat ${A}`});return}d||(new DataView(D.buffer).setUint32(0,A),D.set(b.types.mdat,4))}else return;D.set(B,y);const N=B.byteLength;y+=N,g.push(An(!0,l,N,0)),x=G}const R=g.length;if(!R)return;const I=g[g.length-1];E=x-v,this.nextAudioTs=E+c*I.duration;const C=d?new Uint8Array(0):b.moof(e.sequenceNumber++,S/c,ae({},e,{samples:g}));e.samples=[];const $=(S-v)/n,K=this.nextAudioTs/n,F={data1:C,data2:D,startPTS:$,endPTS:K,startDTS:$,endDTS:K,type:"audio",hasAudio:!0,hasVideo:!1,nb:R};return this.isAudioContiguous=!0,F}}function Ke(a,e){let t;if(e===null)return a;for(e4294967296;)a+=t;return a}function zh(a){for(let e=0;en.pts-o.pts);const r=a.samples;return a.samples=[],{samples:r}}class Qh extends qe{constructor(e,t,s,i){super("passthrough-remuxer",i),this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null,this.isVideoContiguous=!1}destroy(){}resetTimeStamp(e){this.lastEndTime=null;const t=this.initPTS;t&&e&&t.baseTime===e.baseTime&&t.timescale===e.timescale||(this.initPTS=e)}resetNextTimestamp(){this.isVideoContiguous=!1,this.lastEndTime=null}resetInitSegment(e,t,s,i){this.audioCodec=t,this.videoCodec=s,this.generateInitSegment(e,i),this.emitInitSegment=!0}generateInitSegment(e,t){let{audioCodec:s,videoCodec:i}=this;if(!(e!=null&&e.byteLength)){this.initTracks=void 0,this.initData=void 0;return}const{audio:r,video:n}=this.initData=ua(e);if(t)Bl(e,t);else{const c=r||n;c!=null&&c.encrypted&&this.warn(`Init segment with encrypted track with has no key ("${c.codec}")!`)}r&&(s=In(r,le.AUDIO,this)),n&&(i=In(n,le.VIDEO,this));const o={};r&&n?o.audiovideo={container:"video/mp4",codec:s+","+i,supplemental:n.supplemental,encrypted:n.encrypted,initSegment:e,id:"main"}:r?o.audio={container:"audio/mp4",codec:s,encrypted:r.encrypted,initSegment:e,id:"audio"}:n?o.video={container:"video/mp4",codec:i,supplemental:n.supplemental,encrypted:n.encrypted,initSegment:e,id:"main"}:this.warn("initSegment does not contain moov or trak boxes."),this.initTracks=o}remux(e,t,s,i,r,n){var o,c;let{initPTS:l,lastEndTime:h}=this;const u={audio:void 0,video:void 0,text:i,id3:s,initSegment:void 0};V(h)||(h=this.lastEndTime=r||0);const d=t.samples;if(!d.length)return u;const g={initPTS:void 0,timescale:void 0,trackId:void 0};let f=this.initData;if((o=f)!=null&&o.length||(this.generateInitSegment(d),f=this.initData),!((c=f)!=null&&c.length))return this.warn("Failed to generate initSegment."),u;this.emitInitSegment&&(g.tracks=this.initTracks,this.emitInitSegment=!1);const p=$l(d,f,this),y=f.audio?p[f.audio.id]:null,E=f.video?p[f.video.id]:null,v=ys(E,1/0),T=ys(y,1/0),S=ys(E,0,!0),x=ys(y,0,!0);let D=r,A=0;const L=y&&(!E||!l&&T0?this.lastEndTime=C:(this.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const $=!!f.audio,K=!!f.video;let H="";$&&(H+="audio"),K&&(H+="video");const F=(f.audio?f.audio.encrypted:!1)||(f.video?f.video.encrypted:!1),w={data1:d,startPTS:I,startDTS:I,endPTS:C,endDTS:C,type:H,hasAudio:$,hasVideo:K,nb:1,dropped:0,encrypted:F};u.audio=$&&!K?w:void 0,u.video=K?w:void 0;const M=E?.sampleCount;if(M){const k=E.keyFrameIndex,B=k!==-1;w.nb=M,w.dropped=k===0||this.isVideoContiguous?0:B?k:M,w.independent=B,w.firstKeyFrame=k,B&&E.keyFrameStart&&(w.firstKeyFramePTS=(E.keyFrameStart-l.baseTime)/l.timescale),this.isVideoContiguous||(u.independent=B),this.isVideoContiguous||(this.isVideoContiguous=B),w.dropped&&this.warn(`fmp4 does not start with IDR: firstIDR ${k}/${M} dropped: ${w.dropped} start: ${w.firstKeyFramePTS||"NA"}`)}return u.initSegment=g,u.id3=ro(s,r,l,l),i.samples.length&&(u.text=no(i,r,l)),u}}function ys(a,e,t=!1){return a?.start!==void 0?(a.start+(t?a.duration:0))/a.timescale:e}function Zh(a,e,t,s){if(a===null)return!0;const i=Math.max(s,1),r=e-a.baseTime/a.timescale;return Math.abs(r-t)>i}function In(a,e,t){const s=a.codec;return s&&s.length>4?s:e===le.AUDIO?s==="ec-3"||s==="ac-3"||s==="alac"?s:s==="fLaC"||s==="Opus"?Bs(s,!1):(t.warn(`Unhandled audio codec "${s}" in mp4 MAP`),s||"mp4a"):(t.warn(`Unhandled video codec "${s}" in mp4 MAP`),s||"avc1")}let ut;try{ut=self.performance.now.bind(self.performance)}catch{ut=Date.now}const Ps=[{demux:Nh,remux:Qh},{demux:xt,remux:Cs},{demux:wh,remux:Cs},{demux:Fh,remux:Cs}];Ps.splice(2,0,{demux:Oh,remux:Cs});class Ln{constructor(e,t,s,i,r,n){this.asyncResult=!1,this.logger=void 0,this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=e,this.typeSupported=t,this.config=s,this.id=r,this.logger=n}configure(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()}push(e,t,s,i){const r=s.transmuxing;r.executeStart=ut();let n=new Uint8Array(e);const{currentTransmuxState:o,transmuxConfig:c}=this;i&&(this.currentTransmuxState=i);const{contiguous:l,discontinuity:h,trackSwitch:u,accurateTimeOffset:d,timeOffset:g,initSegmentChange:f}=i||o,{audioCodec:p,videoCodec:y,defaultInitPts:E,duration:v,initSegmentData:T}=c,S=Jh(n,t);if(S&&Kt(S.method)){const L=this.getDecrypter(),R=cr(S.method);if(L.isSync()){let I=L.softwareDecrypt(n,S.key.buffer,S.iv.buffer,R);if(s.part>-1){const $=L.flush();I=$&&$.buffer}if(!I)return r.executeEnd=ut(),mi(s);n=new Uint8Array(I)}else return this.asyncResult=!0,this.decryptionPromise=L.webCryptoDecrypt(n,S.key.buffer,S.iv.buffer,R).then(I=>{const C=this.push(I,null,s);return this.decryptionPromise=null,C}),this.decryptionPromise}const x=this.needsProbing(h,u);if(x){const L=this.configureTransmuxer(n);if(L)return this.logger.warn(`[transmuxer] ${L.message}`),this.observer.emit(m.ERROR,m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,fatal:!1,error:L,reason:L.message}),r.executeEnd=ut(),mi(s)}(h||u||f||x)&&this.resetInitSegment(T,p,y,v,t),(h||f||x)&&this.resetInitialTimestamp(E),l||this.resetContiguity();const D=this.transmux(n,S,g,d,s);this.asyncResult=os(D);const A=this.currentTransmuxState;return A.contiguous=!0,A.discontinuity=!1,A.trackSwitch=!1,r.executeEnd=ut(),D}flush(e){const t=e.transmuxing;t.executeStart=ut();const{decrypter:s,currentTransmuxState:i,decryptionPromise:r}=this;if(r)return this.asyncResult=!0,r.then(()=>this.flush(e));const n=[],{timeOffset:o}=i;if(s){const u=s.flush();u&&n.push(this.push(u.buffer,null,e))}const{demuxer:c,remuxer:l}=this;if(!c||!l){t.executeEnd=ut();const u=[mi(e)];return this.asyncResult?Promise.resolve(u):u}const h=c.flush(o);return os(h)?(this.asyncResult=!0,h.then(u=>(this.flushRemux(n,u,e),n))):(this.flushRemux(n,h,e),this.asyncResult?Promise.resolve(n):n)}flushRemux(e,t,s){const{audioTrack:i,videoTrack:r,id3Track:n,textTrack:o}=t,{accurateTimeOffset:c,timeOffset:l}=this.currentTransmuxState;this.logger.log(`[transmuxer.ts]: Flushed ${this.id} sn: ${s.sn}${s.part>-1?" part: "+s.part:""} of ${this.id===Y.MAIN?"level":"track"} ${s.level}`);const h=this.remuxer.remux(i,r,n,o,l,c,!0,this.id);e.push({remuxResult:h,chunkMeta:s}),s.transmuxing.executeEnd=ut()}resetInitialTimestamp(e){const{demuxer:t,remuxer:s}=this;!t||!s||(t.resetTimeStamp(e),s.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;!e||!t||(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,s,i,r){const{demuxer:n,remuxer:o}=this;!n||!o||(n.resetInitSegment(e,t,s,i),o.resetInitSegment(e,t,s,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,s,i,r){let n;return t&&t.method==="SAMPLE-AES"?n=this.transmuxSampleAes(e,t,s,i,r):n=this.transmuxUnencrypted(e,s,i,r),n}transmuxUnencrypted(e,t,s,i){const{audioTrack:r,videoTrack:n,id3Track:o,textTrack:c}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,n,o,c,t,s,!1,this.id),chunkMeta:i}}transmuxSampleAes(e,t,s,i,r){return this.demuxer.demuxSampleAes(e,t,s).then(n=>({remuxResult:this.remuxer.remux(n.audioTrack,n.videoTrack,n.id3Track,n.textTrack,s,i,!1,this.id),chunkMeta:r}))}configureTransmuxer(e){const{config:t,observer:s,typeSupported:i}=this;let r;for(let u=0,d=Ps.length;u0&&e?.key!=null&&e.iv!==null&&e.method!=null&&(t=e),t}const mi=a=>({remuxResult:{},chunkMeta:a});function os(a){return"then"in a&&a.then instanceof Function}class eu{constructor(e,t,s,i,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=s,this.duration=i,this.defaultInitPts=r||null}}class tu{constructor(e,t,s,i,r,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=s,this.trackSwitch=i,this.timeOffset=r,this.initSegmentChange=n}}let Rn=0;class ao{constructor(e,t,s,i){this.error=null,this.hls=void 0,this.id=void 0,this.instanceNo=Rn++,this.observer=void 0,this.frag=null,this.part=null,this.useWorker=void 0,this.workerContext=null,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0,this.onWorkerMessage=c=>{const l=c.data,h=this.hls;if(!(!h||!(l!=null&&l.event)||l.instanceNo!==this.instanceNo))switch(l.event){case"init":{var u;const d=(u=this.workerContext)==null?void 0:u.objectURL;d&&self.URL.revokeObjectURL(d);break}case"transmuxComplete":{this.handleTransmuxComplete(l.data);break}case"flush":{this.onFlush(l.data);break}case"workerLog":{h.logger[l.data.logType]&&h.logger[l.data.logType](l.data.message);break}default:{l.data=l.data||{},l.data.frag=this.frag,l.data.part=this.part,l.data.id=this.id,h.trigger(l.event,l.data);break}}},this.onWorkerError=c=>{if(!this.hls)return;const l=new Error(`${c.message} (${c.filename}:${c.lineno})`);this.hls.config.enableWorker=!1,this.hls.logger.warn(`Error in "${this.id}" Web Worker, fallback to inline`),this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:l})};const r=e.config;this.hls=e,this.id=t,this.useWorker=!!r.enableWorker,this.onTransmuxComplete=s,this.onFlush=i;const n=(c,l)=>{l=l||{},l.frag=this.frag||void 0,c===m.ERROR&&(l=l,l.parent=this.id,l.part=this.part,this.error=l.error),this.hls.trigger(c,l)};this.observer=new dr,this.observer.on(m.FRAG_DECRYPTED,n),this.observer.on(m.ERROR,n);const o=$r(r.preferManagedMediaSource);if(this.useWorker&&typeof Worker<"u"){const c=this.hls.logger;if(r.workerPath||nh()){try{r.workerPath?(c.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=oh(r.workerPath)):(c.log(`injecting Web Worker for "${t}"`),this.workerContext=ah());const{worker:h}=this.workerContext;h.addEventListener("message",this.onWorkerMessage),h.addEventListener("error",this.onWorkerError),h.postMessage({instanceNo:this.instanceNo,cmd:"init",typeSupported:o,id:t,config:ce(r)})}catch(h){c.warn(`Error setting up "${t}" Web Worker, fallback to inline`,h),this.terminateWorker(),this.error=null,this.transmuxer=new Ln(this.observer,o,r,"",t,e.logger)}return}}this.transmuxer=new Ln(this.observer,o,r,"",t,e.logger)}reset(){if(this.frag=null,this.part=null,this.workerContext){const e=this.instanceNo;this.instanceNo=Rn++;const t=this.hls.config,s=$r(t.preferManagedMediaSource);this.workerContext.worker.postMessage({instanceNo:this.instanceNo,cmd:"reset",resetNo:e,typeSupported:s,id:this.id,config:ce(t)})}}terminateWorker(){if(this.workerContext){const{worker:e}=this.workerContext;this.workerContext=null,e.removeEventListener("message",this.onWorkerMessage),e.removeEventListener("error",this.onWorkerError),lh(this.hls.config.workerPath)}}destroy(){if(this.workerContext)this.terminateWorker(),this.onWorkerMessage=this.onWorkerError=null;else{const t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.part=null,this.observer=null,this.hls=null}push(e,t,s,i,r,n,o,c,l,h){var u,d;l.transmuxing.start=self.performance.now();const{instanceNo:g,transmuxer:f}=this,p=n?n.start:r.start,y=r.decryptdata,E=this.frag,v=!(E&&r.cc===E.cc),T=!(E&&l.level===E.level),S=E?l.sn-E.sn:-1,x=this.part?l.part-this.part.index:-1,D=S===0&&l.id>1&&l.id===E?.stats.chunkCount,A=!T&&(S===1||S===0&&(x===1||D&&x<=0)),L=self.performance.now();(T||S||r.stats.parsing.start===0)&&(r.stats.parsing.start=L),n&&(x||!A)&&(n.stats.parsing.start=L);const R=!(E&&((u=r.initSegment)==null?void 0:u.url)===((d=E.initSegment)==null?void 0:d.url)),I=new tu(v,A,c,T,p,R);if(!A||v||R){this.hls.logger.log(`[transmuxer-interface]: Starting new transmux session for ${r.type} sn: ${l.sn}${l.part>-1?" part: "+l.part:""} ${this.id===Y.MAIN?"level":"track"}: ${l.level} id: ${l.id} discontinuity: ${v} trackSwitch: ${T} contiguous: ${A} accurateTimeOffset: ${c} timeOffset: ${p} - initSegmentChange: ${R}`);const C=new eu(s,i,t,o,h);this.configureTransmuxer(C)}if(this.frag=r,this.part=n,this.workerContext)this.workerContext.worker.postMessage({instanceNo:g,cmd:"demux",data:e,decryptdata:y,chunkMeta:l,state:I},e instanceof ArrayBuffer?[e]:[]);else if(f){const C=f.push(e,y,l,I);os(C)?C.then($=>{this.handleTransmuxComplete($)}).catch($=>{this.transmuxerError($,l,"transmuxer-interface push error")}):this.handleTransmuxComplete(C)}}flush(e){e.transmuxing.start=self.performance.now();const{instanceNo:t,transmuxer:s}=this;if(this.workerContext)this.workerContext.worker.postMessage({instanceNo:t,cmd:"flush",chunkMeta:e});else if(s){const i=s.flush(e);os(i)?i.then(r=>{this.handleFlushResult(r,e)}).catch(r=>{this.transmuxerError(r,e,"transmuxer-interface flush error")}):this.handleFlushResult(i,e)}}transmuxerError(e,t,s){this.hls&&(this.error=e,this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,part:this.part||void 0,fatal:!1,error:e,err:e,reason:s}))}handleFlushResult(e,t){e.forEach(s=>{this.handleTransmuxComplete(s)}),this.onFlush(t)}configureTransmuxer(e){const{instanceNo:t,transmuxer:s}=this;this.workerContext?this.workerContext.worker.postMessage({instanceNo:t,cmd:"configure",config:e}):s&&s.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}const bn=100;class su extends ur{constructor(e,t,s){super(e,t,s,"audio-stream-controller",Y.AUDIO),this.mainAnchor=null,this.mainFragLoading=null,this.audioOnly=!1,this.bufferedTrack=null,this.switchingTrack=null,this.trackId=-1,this.waitingData=null,this.mainDetails=null,this.flushing=!1,this.bufferFlushed=!1,this.cachedTrackLoadedData=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.resetItem()}resetItem(){this.mainDetails=this.mainAnchor=this.mainFragLoading=this.bufferedTrack=this.switchingTrack=this.waitingData=this.cachedTrackLoadedData=null}registerListeners(){super.registerListeners();const{hls:e}=this;e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.on(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(m.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(m.BUFFER_RESET,this.onBufferReset,this),e.on(m.BUFFER_CREATED,this.onBufferCreated,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(m.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(m.FRAG_LOADING,this.onFragLoading,this),e.on(m.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){const{hls:e}=this;e&&(super.unregisterListeners(),e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.off(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(m.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(m.BUFFER_RESET,this.onBufferReset,this),e.off(m.BUFFER_CREATED,this.onBufferCreated,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(m.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(m.FRAG_LOADING,this.onFragLoading,this),e.off(m.FRAG_BUFFERED,this.onFragBuffered,this))}onInitPtsFound(e,{frag:t,id:s,initPTS:i,timescale:r,trackId:n}){if(s===Y.MAIN){const o=t.cc,c=this.fragCurrent;if(this.initPTS[o]={baseTime:i,timescale:r,trackId:n},this.log(`InitPTS for cc: ${o} found from main: ${i/r} (${i}/${r}) trackId: ${n}`),this.mainAnchor=t,this.state===P.WAITING_INIT_PTS){const l=this.waitingData;(!l&&!this.loadingParts||l&&l.frag.cc!==o)&&this.syncWithAnchor(t,l?.frag)}else!this.hls.hasEnoughToStart&&c&&c.cc!==o?(c.abortRequests(),this.syncWithAnchor(t,c)):this.state===P.IDLE&&this.tick()}}getLoadPosition(){return!this.startFragRequested&&this.nextLoadPosition>=0?this.nextLoadPosition:super.getLoadPosition()}syncWithAnchor(e,t){var s;const i=((s=this.mainFragLoading)==null?void 0:s.frag)||null;if(t&&i?.cc===t.cc)return;const r=(i||e).cc,n=this.getLevelDetails(),o=this.getLoadPosition(),c=xa(n,r,o);c&&(this.log(`Syncing with main frag at ${c.start} cc ${c.cc}`),this.startFragRequested=!1,this.nextLoadPosition=c.start,this.resetLoadingState(),this.state===P.IDLE&&this.doTickIdle())}startLoad(e,t){if(!this.levels){this.startPosition=e,this.state=P.STOPPED;return}const s=this.lastCurrentTime;this.stopLoad(),this.setInterval(bn),s>0&&e===-1?(this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`),e=s,this.state=P.IDLE):this.state=P.WAITING_TRACK,this.nextLoadPosition=this.lastCurrentTime=e+this.timelineOffset,this.startPosition=t?-1:e,this.tick()}doTick(){switch(this.state){case P.IDLE:this.doTickIdle();break;case P.WAITING_TRACK:{const{levels:e,trackId:t}=this,s=e?.[t],i=s?.details;if(i&&!this.waitForLive(s)){if(this.waitForCdnTuneIn(i))break;this.state=P.WAITING_INIT_PTS}break}case P.FRAG_LOADING_WAITING_RETRY:{this.checkRetryDate();break}case P.WAITING_INIT_PTS:{const e=this.waitingData;if(e){const{frag:t,part:s,cache:i,complete:r}=e,n=this.mainAnchor;if(this.initPTS[t.cc]!==void 0){this.waitingData=null,this.state=P.FRAG_LOADING;const o=i.flush().buffer,c={frag:t,part:s,payload:o,networkDetails:null};this._handleFragmentLoadProgress(c),r&&super._handleFragmentLoadComplete(c)}else n&&n.cc!==e.frag.cc&&this.syncWithAnchor(n,e.frag)}else this.state=P.IDLE}}this.onTickEnd()}resetLoadingState(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null),super.resetLoadingState()}onTickEnd(){const{media:e}=this;e!=null&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){var e;const{hls:t,levels:s,media:i,trackId:r}=this,n=t.config;if(!this.buffering||!i&&!this.primaryPrefetch&&(this.startFragRequested||!n.startFragPrefetch)||!(s!=null&&s[r]))return;const o=s[r],c=o.details;if(!c||this.waitForLive(o)||this.waitForCdnTuneIn(c)){this.state=P.WAITING_TRACK,this.startFragRequested=!1;return}const l=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&l&&(this.bufferFlushed=!1,this.afterBufferFlushed(l,le.AUDIO,Y.AUDIO));const h=this.getFwdBufferInfo(l,Y.AUDIO);if(h===null)return;if(!this.switchingTrack&&this._streamEnded(h,c)){t.trigger(m.BUFFER_EOS,{type:"audio"}),this.state=P.ENDED;return}const u=h.len,d=t.maxBufferLength,g=c.fragments,f=g[0].start,p=this.getLoadPosition(),y=this.flushing?p:h.end;if(this.switchingTrack&&i){const T=p;c.PTSKnown&&Tf||h.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=f+.05)}if(u>=d&&!this.switchingTrack&&yv.end){const S=this.fragmentTracker.getFragAtPos(y,Y.MAIN);S&&S.end>v.end&&(v=S,this.mainFragLoading={frag:S,targetBufferTime:null})}if(E.start>v.end)return}this.loadFragment(E,o,y)}onMediaDetaching(e,t){this.bufferFlushed=this.flushing=!1,super.onMediaDetaching(e,t)}onAudioTracksUpdated(e,{audioTracks:t}){this.resetTransmuxer(),this.levels=t.map(s=>new rs(s))}onAudioTrackSwitching(e,t){const s=!!t.url;this.trackId=t.id;const{fragCurrent:i}=this;i&&(i.abortRequests(),this.removeUnbufferedFrags(i.start)),this.resetLoadingState(),s?(this.switchingTrack=t,this.flushAudioIfNeeded(t),this.state!==P.STOPPED&&(this.setInterval(bn),this.state=P.IDLE,this.tick())):(this.resetTransmuxer(),this.switchingTrack=null,this.bufferedTrack=t,this.clearInterval())}onManifestLoading(){super.onManifestLoading(),this.bufferFlushed=this.flushing=this.audioOnly=!1,this.resetItem(),this.trackId=-1}onLevelLoaded(e,t){this.mainDetails=t.details;const s=this.cachedTrackLoadedData;s&&(this.cachedTrackLoadedData=null,this.onAudioTrackLoaded(m.AUDIO_TRACK_LOADED,s))}onAudioTrackLoaded(e,t){var s;const{levels:i}=this,{details:r,id:n,groupId:o,track:c}=t;if(!i){this.warn(`Audio tracks reset while loading track ${n} "${c.name}" of "${o}"`);return}const l=this.mainDetails;if(!l||r.endCC>l.endCC||l.expired){this.cachedTrackLoadedData=t,this.state!==P.STOPPED&&(this.state=P.WAITING_TRACK);return}this.cachedTrackLoadedData=null,this.log(`Audio track ${n} "${c.name}" of "${o}" loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const h=i[n];let u=0;if(r.live||(s=h.details)!=null&&s.live){if(this.checkLiveUpdate(r),r.deltaUpdateFailed)return;if(h.details){var d;u=this.alignPlaylists(r,h.details,(d=this.levelLastLoaded)==null?void 0:d.details)}r.alignedSliding||($a(r,l),r.alignedSliding||Ys(r,l),u=r.fragmentStart)}h.details=r,this.levelLastLoaded=h,this.startFragRequested||this.setStartPosition(l,u),this.hls.trigger(m.AUDIO_TRACK_UPDATED,{details:r,id:n,groupId:t.groupId}),this.state===P.WAITING_TRACK&&!this.waitForCdnTuneIn(r)&&(this.state=P.IDLE),this.tick()}_handleFragmentLoadProgress(e){var t;const s=e.frag,{part:i,payload:r}=e,{config:n,trackId:o,levels:c}=this;if(!c){this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);return}const l=c[o];if(!l){this.warn("Audio track is undefined on fragment load progress");return}const h=l.details;if(!h){this.warn("Audio track details undefined on fragment load progress"),this.removeUnbufferedFrags(s.start);return}const u=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new ao(this.hls,Y.AUDIO,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const g=this.initPTS[s.cc],f=(t=s.initSegment)==null?void 0:t.data;if(g!==void 0){const y=i?i.index:-1,E=y!==-1,v=new lr(s.level,s.sn,s.stats.chunkCount,r.byteLength,y,E);d.push(r,f,u,"",s,i,h.totalduration,!1,v,g)}else{this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${h.startSN} ,${h.endSN}],track ${o}`);const{cache:p}=this.waitingData=this.waitingData||{frag:s,part:i,cache:new Ga,complete:!1};p.push(new Uint8Array(r)),this.state!==P.STOPPED&&(this.state=P.WAITING_INIT_PTS)}}_handleFragmentLoadComplete(e){if(this.waitingData){this.waitingData.complete=!0;return}super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=null}onBufferCreated(e,t){this.bufferFlushed=this.flushing=!1;const s=t.tracks.audio;s&&(this.mediaBuffer=s.buffer||null)}onFragLoading(e,t){!this.audioOnly&&t.frag.type===Y.MAIN&&Te(t.frag)&&(this.mainFragLoading=t,this.state===P.IDLE&&this.tick())}onFragBuffered(e,t){const{frag:s,part:i}=t;if(s.type!==Y.AUDIO){!this.audioOnly&&s.type===Y.MAIN&&!s.elementaryStreams.video&&!s.elementaryStreams.audiovideo&&(this.audioOnly=!0,this.mainFragLoading=null);return}if(this.fragContextChanged(s)){this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);return}if(Te(s)){this.fragPrevious=s;const r=this.switchingTrack;r&&(this.bufferedTrack=r,this.switchingTrack=null,this.hls.trigger(m.AUDIO_TRACK_SWITCHED,re({},r)))}this.fragBufferedComplete(s,i),this.media&&this.tick()}onError(e,t){var s;if(t.fatal){this.state=P.ERROR;return}switch(t.details){case _.FRAG_GAP:case _.FRAG_PARSING_ERROR:case _.FRAG_DECRYPT_ERROR:case _.FRAG_LOAD_ERROR:case _.FRAG_LOAD_TIMEOUT:case _.KEY_LOAD_ERROR:case _.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Y.AUDIO,t);break;case _.AUDIO_TRACK_LOAD_ERROR:case _.AUDIO_TRACK_LOAD_TIMEOUT:case _.LEVEL_PARSING_ERROR:!t.levelRetry&&this.state===P.WAITING_TRACK&&((s=t.context)==null?void 0:s.type)===te.AUDIO_TRACK&&(this.state=P.IDLE);break;case _.BUFFER_ADD_CODEC_ERROR:case _.BUFFER_APPEND_ERROR:if(t.parent!=="audio")return;this.reduceLengthAndFlushBuffer(t)||this.resetLoadingState();break;case _.BUFFER_FULL_ERROR:if(t.parent!=="audio")return;this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case _.INTERNAL_EXCEPTION:this.recoverWorkerError(t);break}}onBufferFlushing(e,{type:t}){t!==le.VIDEO&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==le.VIDEO){this.flushing=!1,this.bufferFlushed=!0,this.state===P.ENDED&&(this.state=P.IDLE);const s=this.mediaBuffer||this.media;s&&(this.afterBufferFlushed(s,t,Y.AUDIO),this.tick())}}_handleTransmuxComplete(e){var t;const s="audio",{hls:i}=this,{remuxResult:r,chunkMeta:n}=e,o=this.getCurrentContext(n);if(!o){this.resetWhenMissingContext(n);return}const{frag:c,part:l,level:h}=o,{details:u}=h,{audio:d,text:g,id3:f,initSegment:p}=r;if(this.fragContextChanged(c)||!u){this.fragmentTracker.removeFragment(c);return}if(this.state=P.PARSING,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),p!=null&&p.tracks){const y=c.initSegment||c;if(this.unhandledEncryptionError(p,c))return;this._bufferInitSegment(h,p.tracks,y,n),i.trigger(m.FRAG_PARSING_INIT_SEGMENT,{frag:y,id:s,tracks:p.tracks})}if(d){const{startPTS:y,endPTS:E,startDTS:v,endDTS:T}=d;l&&(l.elementaryStreams[le.AUDIO]={startPTS:y,endPTS:E,startDTS:v,endDTS:T}),c.setElementaryStreamInfo(le.AUDIO,y,E,v,T),this.bufferFragmentData(d,c,l,n)}if(f!=null&&(t=f.samples)!=null&&t.length){const y=ae({id:s,frag:c,details:u},f);i.trigger(m.FRAG_PARSING_METADATA,y)}if(g){const y=ae({id:s,frag:c,details:u},g);i.trigger(m.FRAG_PARSING_USERDATA,y)}}_bufferInitSegment(e,t,s,i){if(this.state!==P.PARSING||(t.video&&delete t.video,t.audiovideo&&delete t.audiovideo,!t.audio))return;const r=t.audio;r.id=Y.AUDIO;const n=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${n}/${r.codec}]`),n&&n.split(",").length===1&&(r.levelCodec=n),this.hls.trigger(m.BUFFER_CODECS,t);const o=r.initSegment;if(o!=null&&o.byteLength){const c={type:"audio",frag:s,part:null,chunkMeta:i,parent:s.type,data:o};this.hls.trigger(m.BUFFER_APPENDING,c)}this.tickImmediate()}loadFragment(e,t,s){const i=this.fragmentTracker.getState(e);if(this.switchingTrack||i===Ie.NOT_LOADED||i===Ie.PARTIAL){var r;if(!Te(e))this._loadInitSegment(e,t);else if((r=t.details)!=null&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=P.WAITING_INIT_PTS;const n=this.mainDetails;n&&n.fragmentStart!==t.details.fragmentStart&&Ys(t.details,n)}else super.loadFragment(e,t,s)}else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){if(this.media&&this.bufferedTrack){const{name:t,lang:s,assocLang:i,characteristics:r,audioCodec:n,channels:o}=this.bufferedTrack;Ct({name:t,lang:s,assocLang:i,characteristics:r,audioCodec:n,channels:o},e,Dt)||($s(e.url,this.hls)?(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null):this.bufferedTrack=e)}}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(m.AUDIO_TRACK_SWITCHED,re({},e))}}class vr extends Ye{constructor(e,t){super(t,e.logger),this.hls=void 0,this.canLoad=!1,this.timer=-1,this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){this.timer!==-1&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t,s){const i=t?.renditionReports;if(i){let r=-1;for(let n=0;n=0&&h>t.partTarget&&(c+=1)}const l=s&&Gr(s);return new Kr(o,c>=0?c:void 0,l)}}}loadPlaylist(e){this.clearTimer()}loadingPlaylist(e,t){this.clearTimer()}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}getUrlWithDirectives(e,t){if(t)try{return t.addDirectives(e)}catch(s){this.warn(`Could not construct new URL with HLS Delivery Directives: ${s}`)}return e}playlistLoaded(e,t,s){const{details:i,stats:r}=t,n=self.performance.now(),o=r.loading.first?Math.max(0,n-r.loading.first):0;i.advancedDateTime=Date.now()-o;const c=this.hls.config.timelineOffset;if(c!==i.appliedTimelineOffset){const h=Math.max(c||0,0);i.appliedTimelineOffset=h,i.fragments.forEach(u=>{u.setStart(u.playlistOffset+h)})}if(i.live||s!=null&&s.live){const h="levelInfo"in t?t.levelInfo:t.track;if(i.reloaded(s),s&&i.fragments.length>0){jc(s,i,this);const v=i.playlistParsingError;if(v){this.warn(v);const T=this.hls;if(!T.config.ignorePlaylistParsingErrors){var l;const{networkDetails:S}=t;T.trigger(m.ERROR,{type:W.NETWORK_ERROR,details:_.LEVEL_PARSING_ERROR,fatal:!1,url:i.url,error:v,reason:v.message,level:t.level||void 0,parent:(l=i.fragments[0])==null?void 0:l.type,networkDetails:S,stats:r});return}i.playlistParsingError=null}}i.requestScheduled===-1&&(i.requestScheduled=r.loading.start);const u=this.hls.mainForwardBufferInfo,d=u?u.end-u.len:0,g=(i.edge-d)*1e3,f=Fa(i,g);if(i.requestScheduled+f0){if(R>i.targetduration*3)this.log(`Playlist last advanced ${L.toFixed(2)}s ago. Omitting segment and part directives.`),y=void 0,E=void 0;else if(s!=null&&s.tuneInGoal&&R-i.partTarget>s.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${I} with playlist age: ${i.age}`),I=0;else{const C=Math.floor(I/i.targetduration);if(y+=C,E!==void 0){const $=Math.round(I%i.targetduration/i.partTarget);E+=$}this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${L.toFixed(2)}s goal: ${I} skip sn ${C} to part ${E}`)}i.tuneInGoal=I}if(p=this.getDeliveryDirectives(i,t.deliveryDirectives,y,E),v||!A){i.requestScheduled=n,this.loadingPlaylist(h,p);return}}else(i.canBlockReload||i.canSkipUntil)&&(p=this.getDeliveryDirectives(i,t.deliveryDirectives,y,E));p&&y!==void 0&&i.canBlockReload&&(i.requestScheduled=r.loading.first+Math.max(f-o*2,f/2)),this.scheduleLoading(h,p,i)}else this.clearTimer()}scheduleLoading(e,t,s){const i=s||e.details;if(!i){this.loadingPlaylist(e,t);return}const r=self.performance.now(),n=i.requestScheduled;if(r>=n){this.loadingPlaylist(e,t);return}const o=n-r;this.log(`reload live playlist ${e.name||e.bitrate+"bps"} in ${Math.round(o)} ms`),this.clearTimer(),this.timer=self.setTimeout(()=>this.loadingPlaylist(e,t),o)}getDeliveryDirectives(e,t,s,i){let r=Gr(e);return t!=null&&t.skip&&e.deltaUpdateFailed&&(s=t.msn,i=t.part,r=_s.No),new Kr(s,i,r)}checkRetry(e){const t=e.details,s=Gs(e),i=e.errorAction,{action:r,retryCount:n=0,retryConfig:o}=i||{},c=!!i&&!!o&&(r===Re.RetryRequest||!i.resolved&&r===Re.SendAlternateToPenaltyBox);if(c){var l;if(n>=o.maxNumRetry)return!1;if(s&&(l=e.context)!=null&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${o.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const h=ar(o,n);this.clearTimer(),this.timer=self.setTimeout(()=>this.loadPlaylist(),h),this.warn(`Retrying playlist loading ${n+1}/${o.maxNumRetry} after "${t}" in ${h}ms`)}e.levelRetry=!0,i.resolved=!0}return c}}function oo(a,e){if(a.length!==e.length)return!1;for(let t=0;ta[i]!==e[i])}function Vi(a,e){return e.label.toLowerCase()===a.name.toLowerCase()&&(!e.language||e.language.toLowerCase()===(a.lang||"").toLowerCase())}class iu extends vr{constructor(e){super(e,"audio-track-controller"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.LEVEL_LOADING,this.onLevelLoading,this),e.on(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(m.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.LEVEL_LOADING,this.onLevelLoading,this),e.off(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(m.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(m.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:s,groupId:i,details:r}=t,n=this.tracksInGroup[s];if(!n||n.groupId!==i){this.warn(`Audio track with id:${s} and group:${i} not found in active group ${n?.groupId}`);return}const o=n.details;n.details=t.details,this.log(`Audio track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,t,o)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const s=t.audioGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||i?.length!==s?.length||s!=null&&s.some(o=>i?.indexOf(o)===-1)){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const o=this.tracks.filter(d=>!s||s.indexOf(d.groupId)!==-1);if(o.length)this.selectDefaultTrack&&!o.some(d=>d.default)&&(this.selectDefaultTrack=!1),o.forEach((d,g)=>{d.id=g});else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=o;const c=this.hls.config.audioPreference;if(!r&&c){const d=tt(c,o,Dt);if(d>-1)r=o[d];else{const g=tt(c,this.tracks);r=this.tracks[g]}}let l=this.findTrackId(r);l===-1&&r&&(l=this.findTrackId(null));const h={audioTracks:o};this.log(`Updating audio tracks, ${o.length} track(s) found in group(s): ${s?.join(",")}`),this.hls.trigger(m.AUDIO_TRACKS_UPDATED,h);const u=this.trackId;if(l!==-1&&u===-1)this.setAudioTrack(l);else if(o.length&&u===-1){var n;const d=new Error(`No audio track selected for current audio group-ID(s): ${(n=this.groupIds)==null?void 0:n.join(",")} track count: ${o.length}`);this.warn(d.message),this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:d})}}}onError(e,t){t.fatal||!t.context||t.context.type===te.AUDIO_TRACK&&t.context.id===this.trackId&&(!this.groupIds||this.groupIds.indexOf(t.context.groupId)!==-1)&&this.checkRetry(t)}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const s=this.allAudioTracks;if(this.selectDefaultTrack=!1,s.length){const i=this.currentTrack;if(i&&Ct(e,i,Dt))return i;const r=tt(e,this.tracksInGroup,Dt);if(r>-1){const n=this.tracksInGroup[r];return this.setAudioTrack(r),n}else if(i){let n=t.loadLevel;n===-1&&(n=t.firstAutoLevel);const o=mc(e,t.levels,s,n,Dt);if(o===-1)return null;t.nextLoadLevel=o}if(e.channels||e.audioCodec){const n=tt(e,s);if(n>-1)return s[n]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length){this.warn(`Invalid audio track id: ${e}`);return}this.selectDefaultTrack=!1;const s=this.currentTrack,i=t[e],r=i.details&&!i.details.live;if(e===this.trackId&&i===s&&r||(this.log(`Switching to audio-track ${e} "${i.name}" lang:${i.lang} group:${i.groupId} channels:${i.channels}`),this.trackId=e,this.currentTrack=i,this.hls.trigger(m.AUDIO_TRACK_SWITCHING,re({},i)),r))return;const n=this.switchParams(i.url,s?.details,i.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let s=0;s{const s={label:"async-blocker",execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};this.append(s,e)})}prependBlocker(e){return new Promise(t=>{if(this.queues){const s={label:"async-blocker-prepend",execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};this.queues[e].unshift(s)}})}removeBlockers(){this.queues!==null&&[this.queues.video,this.queues.audio,this.queues.audiovideo].forEach(e=>{var t;const s=(t=e[0])==null?void 0:t.label;(s==="async-blocker"||s==="async-blocker-prepend")&&(e[0].execute(),e.splice(0,1))})}unblockAudio(e){if(this.queues===null)return;this.queues.audio[0]===e&&this.shiftAndExecuteNext("audio")}executeNext(e){if(this.queues===null||this.tracks===null)return;const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(r){var s;if(i.onError(r),this.queues===null||this.tracks===null)return;const n=(s=this.tracks[e])==null?void 0:s.buffer;n!=null&&n.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues!==null&&(this.queues[e].shift(),this.executeNext(e))}current(e){var t;return((t=this.queues)==null?void 0:t[e][0])||null}toString(){const{queues:e,tracks:t}=this;return e===null||t===null?"":` + initSegmentChange: ${R}`);const C=new eu(s,i,t,o,h);this.configureTransmuxer(C)}if(this.frag=r,this.part=n,this.workerContext)this.workerContext.worker.postMessage({instanceNo:g,cmd:"demux",data:e,decryptdata:y,chunkMeta:l,state:I},e instanceof ArrayBuffer?[e]:[]);else if(f){const C=f.push(e,y,l,I);os(C)?C.then($=>{this.handleTransmuxComplete($)}).catch($=>{this.transmuxerError($,l,"transmuxer-interface push error")}):this.handleTransmuxComplete(C)}}flush(e){e.transmuxing.start=self.performance.now();const{instanceNo:t,transmuxer:s}=this;if(this.workerContext)this.workerContext.worker.postMessage({instanceNo:t,cmd:"flush",chunkMeta:e});else if(s){const i=s.flush(e);os(i)?i.then(r=>{this.handleFlushResult(r,e)}).catch(r=>{this.transmuxerError(r,e,"transmuxer-interface flush error")}):this.handleFlushResult(i,e)}}transmuxerError(e,t,s){this.hls&&(this.error=e,this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,part:this.part||void 0,fatal:!1,error:e,err:e,reason:s}))}handleFlushResult(e,t){e.forEach(s=>{this.handleTransmuxComplete(s)}),this.onFlush(t)}configureTransmuxer(e){const{instanceNo:t,transmuxer:s}=this;this.workerContext?this.workerContext.worker.postMessage({instanceNo:t,cmd:"configure",config:e}):s&&s.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}const bn=100;class su extends ur{constructor(e,t,s){super(e,t,s,"audio-stream-controller",Y.AUDIO),this.mainAnchor=null,this.mainFragLoading=null,this.audioOnly=!1,this.bufferedTrack=null,this.switchingTrack=null,this.trackId=-1,this.waitingData=null,this.mainDetails=null,this.flushing=!1,this.bufferFlushed=!1,this.cachedTrackLoadedData=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.resetItem()}resetItem(){this.mainDetails=this.mainAnchor=this.mainFragLoading=this.bufferedTrack=this.switchingTrack=this.waitingData=this.cachedTrackLoadedData=null}registerListeners(){super.registerListeners();const{hls:e}=this;e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.on(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(m.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(m.BUFFER_RESET,this.onBufferReset,this),e.on(m.BUFFER_CREATED,this.onBufferCreated,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(m.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(m.FRAG_LOADING,this.onFragLoading,this),e.on(m.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){const{hls:e}=this;e&&(super.unregisterListeners(),e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.off(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(m.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(m.BUFFER_RESET,this.onBufferReset,this),e.off(m.BUFFER_CREATED,this.onBufferCreated,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(m.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(m.FRAG_LOADING,this.onFragLoading,this),e.off(m.FRAG_BUFFERED,this.onFragBuffered,this))}onInitPtsFound(e,{frag:t,id:s,initPTS:i,timescale:r,trackId:n}){if(s===Y.MAIN){const o=t.cc,c=this.fragCurrent;if(this.initPTS[o]={baseTime:i,timescale:r,trackId:n},this.log(`InitPTS for cc: ${o} found from main: ${i/r} (${i}/${r}) trackId: ${n}`),this.mainAnchor=t,this.state===P.WAITING_INIT_PTS){const l=this.waitingData;(!l&&!this.loadingParts||l&&l.frag.cc!==o)&&this.syncWithAnchor(t,l?.frag)}else!this.hls.hasEnoughToStart&&c&&c.cc!==o?(c.abortRequests(),this.syncWithAnchor(t,c)):this.state===P.IDLE&&this.tick()}}getLoadPosition(){return!this.startFragRequested&&this.nextLoadPosition>=0?this.nextLoadPosition:super.getLoadPosition()}syncWithAnchor(e,t){var s;const i=((s=this.mainFragLoading)==null?void 0:s.frag)||null;if(t&&i?.cc===t.cc)return;const r=(i||e).cc,n=this.getLevelDetails(),o=this.getLoadPosition(),c=xa(n,r,o);c&&(this.log(`Syncing with main frag at ${c.start} cc ${c.cc}`),this.startFragRequested=!1,this.nextLoadPosition=c.start,this.resetLoadingState(),this.state===P.IDLE&&this.doTickIdle())}startLoad(e,t){if(!this.levels){this.startPosition=e,this.state=P.STOPPED;return}const s=this.lastCurrentTime;this.stopLoad(),this.setInterval(bn),s>0&&e===-1?(this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`),e=s,this.state=P.IDLE):this.state=P.WAITING_TRACK,this.nextLoadPosition=this.lastCurrentTime=e+this.timelineOffset,this.startPosition=t?-1:e,this.tick()}doTick(){switch(this.state){case P.IDLE:this.doTickIdle();break;case P.WAITING_TRACK:{const{levels:e,trackId:t}=this,s=e?.[t],i=s?.details;if(i&&!this.waitForLive(s)){if(this.waitForCdnTuneIn(i))break;this.state=P.WAITING_INIT_PTS}break}case P.FRAG_LOADING_WAITING_RETRY:{this.checkRetryDate();break}case P.WAITING_INIT_PTS:{const e=this.waitingData;if(e){const{frag:t,part:s,cache:i,complete:r}=e,n=this.mainAnchor;if(this.initPTS[t.cc]!==void 0){this.waitingData=null,this.state=P.FRAG_LOADING;const o=i.flush().buffer,c={frag:t,part:s,payload:o,networkDetails:null};this._handleFragmentLoadProgress(c),r&&super._handleFragmentLoadComplete(c)}else n&&n.cc!==e.frag.cc&&this.syncWithAnchor(n,e.frag)}else this.state=P.IDLE}}this.onTickEnd()}resetLoadingState(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null),super.resetLoadingState()}onTickEnd(){const{media:e}=this;e!=null&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){var e;const{hls:t,levels:s,media:i,trackId:r}=this,n=t.config;if(!this.buffering||!i&&!this.primaryPrefetch&&(this.startFragRequested||!n.startFragPrefetch)||!(s!=null&&s[r]))return;const o=s[r],c=o.details;if(!c||this.waitForLive(o)||this.waitForCdnTuneIn(c)){this.state=P.WAITING_TRACK,this.startFragRequested=!1;return}const l=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&l&&(this.bufferFlushed=!1,this.afterBufferFlushed(l,le.AUDIO,Y.AUDIO));const h=this.getFwdBufferInfo(l,Y.AUDIO);if(h===null)return;if(!this.switchingTrack&&this._streamEnded(h,c)){t.trigger(m.BUFFER_EOS,{type:"audio"}),this.state=P.ENDED;return}const u=h.len,d=t.maxBufferLength,g=c.fragments,f=g[0].start,p=this.getLoadPosition(),y=this.flushing?p:h.end;if(this.switchingTrack&&i){const T=p;c.PTSKnown&&Tf||h.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=f+.05)}if(u>=d&&!this.switchingTrack&&yv.end){const S=this.fragmentTracker.getFragAtPos(y,Y.MAIN);S&&S.end>v.end&&(v=S,this.mainFragLoading={frag:S,targetBufferTime:null})}if(E.start>v.end)return}this.loadFragment(E,o,y)}onMediaDetaching(e,t){this.bufferFlushed=this.flushing=!1,super.onMediaDetaching(e,t)}onAudioTracksUpdated(e,{audioTracks:t}){this.resetTransmuxer(),this.levels=t.map(s=>new rs(s))}onAudioTrackSwitching(e,t){const s=!!t.url;this.trackId=t.id;const{fragCurrent:i}=this;i&&(i.abortRequests(),this.removeUnbufferedFrags(i.start)),this.resetLoadingState(),s?(this.switchingTrack=t,this.flushAudioIfNeeded(t),this.state!==P.STOPPED&&(this.setInterval(bn),this.state=P.IDLE,this.tick())):(this.resetTransmuxer(),this.switchingTrack=null,this.bufferedTrack=t,this.clearInterval())}onManifestLoading(){super.onManifestLoading(),this.bufferFlushed=this.flushing=this.audioOnly=!1,this.resetItem(),this.trackId=-1}onLevelLoaded(e,t){this.mainDetails=t.details;const s=this.cachedTrackLoadedData;s&&(this.cachedTrackLoadedData=null,this.onAudioTrackLoaded(m.AUDIO_TRACK_LOADED,s))}onAudioTrackLoaded(e,t){var s;const{levels:i}=this,{details:r,id:n,groupId:o,track:c}=t;if(!i){this.warn(`Audio tracks reset while loading track ${n} "${c.name}" of "${o}"`);return}const l=this.mainDetails;if(!l||r.endCC>l.endCC||l.expired){this.cachedTrackLoadedData=t,this.state!==P.STOPPED&&(this.state=P.WAITING_TRACK);return}this.cachedTrackLoadedData=null,this.log(`Audio track ${n} "${c.name}" of "${o}" loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const h=i[n];let u=0;if(r.live||(s=h.details)!=null&&s.live){if(this.checkLiveUpdate(r),r.deltaUpdateFailed)return;if(h.details){var d;u=this.alignPlaylists(r,h.details,(d=this.levelLastLoaded)==null?void 0:d.details)}r.alignedSliding||($a(r,l),r.alignedSliding||Ys(r,l),u=r.fragmentStart)}h.details=r,this.levelLastLoaded=h,this.startFragRequested||this.setStartPosition(l,u),this.hls.trigger(m.AUDIO_TRACK_UPDATED,{details:r,id:n,groupId:t.groupId}),this.state===P.WAITING_TRACK&&!this.waitForCdnTuneIn(r)&&(this.state=P.IDLE),this.tick()}_handleFragmentLoadProgress(e){var t;const s=e.frag,{part:i,payload:r}=e,{config:n,trackId:o,levels:c}=this;if(!c){this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);return}const l=c[o];if(!l){this.warn("Audio track is undefined on fragment load progress");return}const h=l.details;if(!h){this.warn("Audio track details undefined on fragment load progress"),this.removeUnbufferedFrags(s.start);return}const u=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let d=this.transmuxer;d||(d=this.transmuxer=new ao(this.hls,Y.AUDIO,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const g=this.initPTS[s.cc],f=(t=s.initSegment)==null?void 0:t.data;if(g!==void 0){const y=i?i.index:-1,E=y!==-1,v=new lr(s.level,s.sn,s.stats.chunkCount,r.byteLength,y,E);d.push(r,f,u,"",s,i,h.totalduration,!1,v,g)}else{this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${h.startSN} ,${h.endSN}],track ${o}`);const{cache:p}=this.waitingData=this.waitingData||{frag:s,part:i,cache:new Ga,complete:!1};p.push(new Uint8Array(r)),this.state!==P.STOPPED&&(this.state=P.WAITING_INIT_PTS)}}_handleFragmentLoadComplete(e){if(this.waitingData){this.waitingData.complete=!0;return}super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=null}onBufferCreated(e,t){this.bufferFlushed=this.flushing=!1;const s=t.tracks.audio;s&&(this.mediaBuffer=s.buffer||null)}onFragLoading(e,t){!this.audioOnly&&t.frag.type===Y.MAIN&&ve(t.frag)&&(this.mainFragLoading=t,this.state===P.IDLE&&this.tick())}onFragBuffered(e,t){const{frag:s,part:i}=t;if(s.type!==Y.AUDIO){!this.audioOnly&&s.type===Y.MAIN&&!s.elementaryStreams.video&&!s.elementaryStreams.audiovideo&&(this.audioOnly=!0,this.mainFragLoading=null);return}if(this.fragContextChanged(s)){this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);return}if(ve(s)){this.fragPrevious=s;const r=this.switchingTrack;r&&(this.bufferedTrack=r,this.switchingTrack=null,this.hls.trigger(m.AUDIO_TRACK_SWITCHED,re({},r)))}this.fragBufferedComplete(s,i),this.media&&this.tick()}onError(e,t){var s;if(t.fatal){this.state=P.ERROR;return}switch(t.details){case _.FRAG_GAP:case _.FRAG_PARSING_ERROR:case _.FRAG_DECRYPT_ERROR:case _.FRAG_LOAD_ERROR:case _.FRAG_LOAD_TIMEOUT:case _.KEY_LOAD_ERROR:case _.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Y.AUDIO,t);break;case _.AUDIO_TRACK_LOAD_ERROR:case _.AUDIO_TRACK_LOAD_TIMEOUT:case _.LEVEL_PARSING_ERROR:!t.levelRetry&&this.state===P.WAITING_TRACK&&((s=t.context)==null?void 0:s.type)===te.AUDIO_TRACK&&(this.state=P.IDLE);break;case _.BUFFER_ADD_CODEC_ERROR:case _.BUFFER_APPEND_ERROR:if(t.parent!=="audio")return;this.reduceLengthAndFlushBuffer(t)||this.resetLoadingState();break;case _.BUFFER_FULL_ERROR:if(t.parent!=="audio")return;this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case _.INTERNAL_EXCEPTION:this.recoverWorkerError(t);break}}onBufferFlushing(e,{type:t}){t!==le.VIDEO&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==le.VIDEO){this.flushing=!1,this.bufferFlushed=!0,this.state===P.ENDED&&(this.state=P.IDLE);const s=this.mediaBuffer||this.media;s&&(this.afterBufferFlushed(s,t,Y.AUDIO),this.tick())}}_handleTransmuxComplete(e){var t;const s="audio",{hls:i}=this,{remuxResult:r,chunkMeta:n}=e,o=this.getCurrentContext(n);if(!o){this.resetWhenMissingContext(n);return}const{frag:c,part:l,level:h}=o,{details:u}=h,{audio:d,text:g,id3:f,initSegment:p}=r;if(this.fragContextChanged(c)||!u){this.fragmentTracker.removeFragment(c);return}if(this.state=P.PARSING,this.switchingTrack&&d&&this.completeAudioSwitch(this.switchingTrack),p!=null&&p.tracks){const y=c.initSegment||c;if(this.unhandledEncryptionError(p,c))return;this._bufferInitSegment(h,p.tracks,y,n),i.trigger(m.FRAG_PARSING_INIT_SEGMENT,{frag:y,id:s,tracks:p.tracks})}if(d){const{startPTS:y,endPTS:E,startDTS:v,endDTS:T}=d;l&&(l.elementaryStreams[le.AUDIO]={startPTS:y,endPTS:E,startDTS:v,endDTS:T}),c.setElementaryStreamInfo(le.AUDIO,y,E,v,T),this.bufferFragmentData(d,c,l,n)}if(f!=null&&(t=f.samples)!=null&&t.length){const y=ae({id:s,frag:c,details:u},f);i.trigger(m.FRAG_PARSING_METADATA,y)}if(g){const y=ae({id:s,frag:c,details:u},g);i.trigger(m.FRAG_PARSING_USERDATA,y)}}_bufferInitSegment(e,t,s,i){if(this.state!==P.PARSING||(t.video&&delete t.video,t.audiovideo&&delete t.audiovideo,!t.audio))return;const r=t.audio;r.id=Y.AUDIO;const n=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${n}/${r.codec}]`),n&&n.split(",").length===1&&(r.levelCodec=n),this.hls.trigger(m.BUFFER_CODECS,t);const o=r.initSegment;if(o!=null&&o.byteLength){const c={type:"audio",frag:s,part:null,chunkMeta:i,parent:s.type,data:o};this.hls.trigger(m.BUFFER_APPENDING,c)}this.tickImmediate()}loadFragment(e,t,s){const i=this.fragmentTracker.getState(e);if(this.switchingTrack||i===Ae.NOT_LOADED||i===Ae.PARTIAL){var r;if(!ve(e))this._loadInitSegment(e,t);else if((r=t.details)!=null&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=P.WAITING_INIT_PTS;const n=this.mainDetails;n&&n.fragmentStart!==t.details.fragmentStart&&Ys(t.details,n)}else super.loadFragment(e,t,s)}else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){if(this.media&&this.bufferedTrack){const{name:t,lang:s,assocLang:i,characteristics:r,audioCodec:n,channels:o}=this.bufferedTrack;Pt({name:t,lang:s,assocLang:i,characteristics:r,audioCodec:n,channels:o},e,Ct)||($s(e.url,this.hls)?(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null):this.bufferedTrack=e)}}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(m.AUDIO_TRACK_SWITCHED,re({},e))}}class vr extends qe{constructor(e,t){super(t,e.logger),this.hls=void 0,this.canLoad=!1,this.timer=-1,this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){this.timer!==-1&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t,s){const i=t?.renditionReports;if(i){let r=-1;for(let n=0;n=0&&h>t.partTarget&&(c+=1)}const l=s&&Gr(s);return new Kr(o,c>=0?c:void 0,l)}}}loadPlaylist(e){this.clearTimer()}loadingPlaylist(e,t){this.clearTimer()}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}getUrlWithDirectives(e,t){if(t)try{return t.addDirectives(e)}catch(s){this.warn(`Could not construct new URL with HLS Delivery Directives: ${s}`)}return e}playlistLoaded(e,t,s){const{details:i,stats:r}=t,n=self.performance.now(),o=r.loading.first?Math.max(0,n-r.loading.first):0;i.advancedDateTime=Date.now()-o;const c=this.hls.config.timelineOffset;if(c!==i.appliedTimelineOffset){const h=Math.max(c||0,0);i.appliedTimelineOffset=h,i.fragments.forEach(u=>{u.setStart(u.playlistOffset+h)})}if(i.live||s!=null&&s.live){const h="levelInfo"in t?t.levelInfo:t.track;if(i.reloaded(s),s&&i.fragments.length>0){jc(s,i,this);const v=i.playlistParsingError;if(v){this.warn(v);const T=this.hls;if(!T.config.ignorePlaylistParsingErrors){var l;const{networkDetails:S}=t;T.trigger(m.ERROR,{type:W.NETWORK_ERROR,details:_.LEVEL_PARSING_ERROR,fatal:!1,url:i.url,error:v,reason:v.message,level:t.level||void 0,parent:(l=i.fragments[0])==null?void 0:l.type,networkDetails:S,stats:r});return}i.playlistParsingError=null}}i.requestScheduled===-1&&(i.requestScheduled=r.loading.start);const u=this.hls.mainForwardBufferInfo,d=u?u.end-u.len:0,g=(i.edge-d)*1e3,f=Fa(i,g);if(i.requestScheduled+f0){if(R>i.targetduration*3)this.log(`Playlist last advanced ${L.toFixed(2)}s ago. Omitting segment and part directives.`),y=void 0,E=void 0;else if(s!=null&&s.tuneInGoal&&R-i.partTarget>s.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${I} with playlist age: ${i.age}`),I=0;else{const C=Math.floor(I/i.targetduration);if(y+=C,E!==void 0){const $=Math.round(I%i.targetduration/i.partTarget);E+=$}this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${L.toFixed(2)}s goal: ${I} skip sn ${C} to part ${E}`)}i.tuneInGoal=I}if(p=this.getDeliveryDirectives(i,t.deliveryDirectives,y,E),v||!A){i.requestScheduled=n,this.loadingPlaylist(h,p);return}}else(i.canBlockReload||i.canSkipUntil)&&(p=this.getDeliveryDirectives(i,t.deliveryDirectives,y,E));p&&y!==void 0&&i.canBlockReload&&(i.requestScheduled=r.loading.first+Math.max(f-o*2,f/2)),this.scheduleLoading(h,p,i)}else this.clearTimer()}scheduleLoading(e,t,s){const i=s||e.details;if(!i){this.loadingPlaylist(e,t);return}const r=self.performance.now(),n=i.requestScheduled;if(r>=n){this.loadingPlaylist(e,t);return}const o=n-r;this.log(`reload live playlist ${e.name||e.bitrate+"bps"} in ${Math.round(o)} ms`),this.clearTimer(),this.timer=self.setTimeout(()=>this.loadingPlaylist(e,t),o)}getDeliveryDirectives(e,t,s,i){let r=Gr(e);return t!=null&&t.skip&&e.deltaUpdateFailed&&(s=t.msn,i=t.part,r=_s.No),new Kr(s,i,r)}checkRetry(e){const t=e.details,s=Gs(e),i=e.errorAction,{action:r,retryCount:n=0,retryConfig:o}=i||{},c=!!i&&!!o&&(r===Le.RetryRequest||!i.resolved&&r===Le.SendAlternateToPenaltyBox);if(c){var l;if(n>=o.maxNumRetry)return!1;if(s&&(l=e.context)!=null&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${o.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const h=ar(o,n);this.clearTimer(),this.timer=self.setTimeout(()=>this.loadPlaylist(),h),this.warn(`Retrying playlist loading ${n+1}/${o.maxNumRetry} after "${t}" in ${h}ms`)}e.levelRetry=!0,i.resolved=!0}return c}}function oo(a,e){if(a.length!==e.length)return!1;for(let t=0;ta[i]!==e[i])}function Vi(a,e){return e.label.toLowerCase()===a.name.toLowerCase()&&(!e.language||e.language.toLowerCase()===(a.lang||"").toLowerCase())}class iu extends vr{constructor(e){super(e,"audio-track-controller"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.LEVEL_LOADING,this.onLevelLoading,this),e.on(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(m.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.LEVEL_LOADING,this.onLevelLoading,this),e.off(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(m.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(m.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:s,groupId:i,details:r}=t,n=this.tracksInGroup[s];if(!n||n.groupId!==i){this.warn(`Audio track with id:${s} and group:${i} not found in active group ${n?.groupId}`);return}const o=n.details;n.details=t.details,this.log(`Audio track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,t,o)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const s=t.audioGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||i?.length!==s?.length||s!=null&&s.some(o=>i?.indexOf(o)===-1)){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const o=this.tracks.filter(d=>!s||s.indexOf(d.groupId)!==-1);if(o.length)this.selectDefaultTrack&&!o.some(d=>d.default)&&(this.selectDefaultTrack=!1),o.forEach((d,g)=>{d.id=g});else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=o;const c=this.hls.config.audioPreference;if(!r&&c){const d=st(c,o,Ct);if(d>-1)r=o[d];else{const g=st(c,this.tracks);r=this.tracks[g]}}let l=this.findTrackId(r);l===-1&&r&&(l=this.findTrackId(null));const h={audioTracks:o};this.log(`Updating audio tracks, ${o.length} track(s) found in group(s): ${s?.join(",")}`),this.hls.trigger(m.AUDIO_TRACKS_UPDATED,h);const u=this.trackId;if(l!==-1&&u===-1)this.setAudioTrack(l);else if(o.length&&u===-1){var n;const d=new Error(`No audio track selected for current audio group-ID(s): ${(n=this.groupIds)==null?void 0:n.join(",")} track count: ${o.length}`);this.warn(d.message),this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:d})}}}onError(e,t){t.fatal||!t.context||t.context.type===te.AUDIO_TRACK&&t.context.id===this.trackId&&(!this.groupIds||this.groupIds.indexOf(t.context.groupId)!==-1)&&this.checkRetry(t)}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const s=this.allAudioTracks;if(this.selectDefaultTrack=!1,s.length){const i=this.currentTrack;if(i&&Pt(e,i,Ct))return i;const r=st(e,this.tracksInGroup,Ct);if(r>-1){const n=this.tracksInGroup[r];return this.setAudioTrack(r),n}else if(i){let n=t.loadLevel;n===-1&&(n=t.firstAutoLevel);const o=mc(e,t.levels,s,n,Ct);if(o===-1)return null;t.nextLoadLevel=o}if(e.channels||e.audioCodec){const n=st(e,s);if(n>-1)return s[n]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length){this.warn(`Invalid audio track id: ${e}`);return}this.selectDefaultTrack=!1;const s=this.currentTrack,i=t[e],r=i.details&&!i.details.live;if(e===this.trackId&&i===s&&r||(this.log(`Switching to audio-track ${e} "${i.name}" lang:${i.lang} group:${i.groupId} channels:${i.channels}`),this.trackId=e,this.currentTrack=i,this.hls.trigger(m.AUDIO_TRACK_SWITCHING,re({},i)),r))return;const n=this.switchParams(i.url,s?.details,i.details);this.loadPlaylist(n)}findTrackId(e){const t=this.tracksInGroup;for(let s=0;s{const s={label:"async-blocker",execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};this.append(s,e)})}prependBlocker(e){return new Promise(t=>{if(this.queues){const s={label:"async-blocker-prepend",execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};this.queues[e].unshift(s)}})}removeBlockers(){this.queues!==null&&[this.queues.video,this.queues.audio,this.queues.audiovideo].forEach(e=>{var t;const s=(t=e[0])==null?void 0:t.label;(s==="async-blocker"||s==="async-blocker-prepend")&&(e[0].execute(),e.splice(0,1))})}unblockAudio(e){if(this.queues===null)return;this.queues.audio[0]===e&&this.shiftAndExecuteNext("audio")}executeNext(e){if(this.queues===null||this.tracks===null)return;const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(r){var s;if(i.onError(r),this.queues===null||this.tracks===null)return;const n=(s=this.tracks[e])==null?void 0:s.buffer;n!=null&&n.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues!==null&&(this.queues[e].shift(),this.executeNext(e))}current(e){var t;return((t=this.queues)==null?void 0:t[e][0])||null}toString(){const{queues:e,tracks:t}=this;return e===null||t===null?"":` ${this.list("video")} ${this.list("audio")} -${this.list("audiovideo")}}`}list(e){var t,s;return(t=this.queues)!=null&&t[e]||(s=this.tracks)!=null&&s[e]?`${e}: (${this.listSbInfo(e)}) ${this.listOps(e)}`:""}listSbInfo(e){var t;const s=(t=this.tracks)==null?void 0:t[e],i=s?.buffer;return i?`SourceBuffer${i.updating?" updating":""}${s.ended?" ended":""}${s.ending?" ending":""}`:"none"}listOps(e){var t;return((t=this.queues)==null?void 0:t[e].map(s=>s.label).join(", "))||""}}const _n=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,lo="HlsJsTrackRemovedError";class nu extends Error{constructor(e){super(e),this.name=lo}}class au extends Ye{constructor(e,t){super("buffer-controller",e.logger),this.hls=void 0,this.fragmentTracker=void 0,this.details=null,this._objectUrl=null,this.operationQueue=null,this.bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.blockedAudioAppend=null,this.lastVideoAppendEnd=0,this.appendSource=void 0,this.transferData=void 0,this.overrides=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.sourceBuffers=[[null,null],[null,null]],this._onEndStreaming=s=>{var i;this.hls&&((i=this.mediaSource)==null?void 0:i.readyState)==="open"&&this.hls.pauseBuffering()},this._onStartStreaming=s=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=s=>{const{media:i,mediaSource:r}=this;s&&this.log("Media source opened"),!(!i||!r)&&(r.removeEventListener("sourceopen",this._onMediaSourceOpen),i.removeEventListener("emptied",this._onMediaEmptied),this.updateDuration(),this.hls.trigger(m.MEDIA_ATTACHED,{media:i,mediaSource:r}),this.mediaSource!==null&&this.checkPendingTracks())},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:s,_objectUrl:i}=this;s!==i&&this.error(`Media element src was set while attaching MediaSource (${i} > ${s})`)},this.hls=e,this.fragmentTracker=t,this.appendSource=_l(It(e.config.preferManagedMediaSource)),this.initTracks(),this.registerListeners()}hasSourceTypes(){return Object.keys(this.tracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=this.blockedAudioAppend=null,this.transferData=this.overrides=void 0,this.operationQueue&&(this.operationQueue.destroy(),this.operationQueue=null),this.hls=this.fragmentTracker=null,this._onMediaSourceOpen=this._onMediaSourceClose=null,this._onMediaSourceEnded=null,this._onStartStreaming=this._onEndStreaming=null}registerListeners(){const{hls:e}=this;e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.BUFFER_RESET,this.onBufferReset,this),e.on(m.BUFFER_APPENDING,this.onBufferAppending,this),e.on(m.BUFFER_CODECS,this.onBufferCodecs,this),e.on(m.BUFFER_EOS,this.onBufferEos,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(m.FRAG_PARSED,this.onFragParsed,this),e.on(m.FRAG_CHANGED,this.onFragChanged,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.BUFFER_RESET,this.onBufferReset,this),e.off(m.BUFFER_APPENDING,this.onBufferAppending,this),e.off(m.BUFFER_CODECS,this.onBufferCodecs,this),e.off(m.BUFFER_EOS,this.onBufferEos,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(m.FRAG_PARSED,this.onFragParsed,this),e.off(m.FRAG_CHANGED,this.onFragChanged,this),e.off(m.ERROR,this.onError,this)}transferMedia(){const{media:e,mediaSource:t}=this;if(!e)return null;const s={};if(this.operationQueue){const r=this.isUpdating();r||this.operationQueue.removeBlockers();const n=this.isQueued();(r||n)&&this.warn(`Transfering MediaSource with${n?" operations in queue":""}${r?" updating SourceBuffer(s)":""} ${this.operationQueue}`),this.operationQueue.destroy()}const i=this.transferData;return!this.sourceBufferCount&&i&&i.mediaSource===t?ae(s,i.tracks):this.sourceBuffers.forEach(r=>{const[n]=r;n&&(s[n]=ae({},this.tracks[n]),this.removeBuffer(n)),r[0]=r[1]=null}),{media:e,mediaSource:t,tracks:s}}initTracks(){const e={};this.sourceBuffers=[[null,null],[null,null]],this.tracks=e,this.resetQueue(),this.resetAppendErrors(),this.lastMpegAudioChunk=this.blockedAudioAppend=null,this.lastVideoAppendEnd=0}onManifestLoading(){this.bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){var s;let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsTotal=i,this.log(`${i} bufferCodec event(s) expected.`),(s=this.transferData)!=null&&s.mediaSource&&this.sourceBufferCount&&i&&this.bufferCreated()}onMediaAttaching(e,t){const s=this.media=t.media;this.transferData=this.overrides=void 0;const i=It(this.appendSource);if(i){const r=!!t.mediaSource;(r||t.overrides)&&(this.transferData=t,this.overrides=t.overrides);const n=this.mediaSource=t.mediaSource||new i;if(this.assignMediaSource(n),r)this._objectUrl=s.src,this.attachTransferred();else{const o=this._objectUrl=self.URL.createObjectURL(n);if(this.appendSource)try{s.removeAttribute("src");const c=self.ManagedMediaSource;s.disableRemotePlayback=s.disableRemotePlayback||c&&n instanceof c,Dn(s),ou(s,o),s.load()}catch{s.src=o}else s.src=o}s.addEventListener("emptied",this._onMediaEmptied)}}assignMediaSource(e){var t,s;this.log(`${((t=this.transferData)==null?void 0:t.mediaSource)===e?"transferred":"created"} media source: ${(s=e.constructor)==null?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming))}attachTransferred(){const e=this.media,t=this.transferData;if(!t||!e)return;const s=this.tracks,i=t.tracks,r=i?Object.keys(i):null,n=r?r.length:0,o=()=>{Promise.resolve().then(()=>{this.media&&this.mediaSourceOpenOrEnded&&this._onMediaSourceOpen()})};if(i&&r&&n){if(!this.tracksReady){this.hls.config.startFragPrefetch=!0,this.log("attachTransferred: waiting for SourceBuffer track info");return}if(this.log(`attachTransferred: (bufferCodecEventsTotal ${this.bufferCodecEventsTotal}) +${this.list("audiovideo")}}`}list(e){var t,s;return(t=this.queues)!=null&&t[e]||(s=this.tracks)!=null&&s[e]?`${e}: (${this.listSbInfo(e)}) ${this.listOps(e)}`:""}listSbInfo(e){var t;const s=(t=this.tracks)==null?void 0:t[e],i=s?.buffer;return i?`SourceBuffer${i.updating?" updating":""}${s.ended?" ended":""}${s.ending?" ending":""}`:"none"}listOps(e){var t;return((t=this.queues)==null?void 0:t[e].map(s=>s.label).join(", "))||""}}const _n=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,lo="HlsJsTrackRemovedError";class nu extends Error{constructor(e){super(e),this.name=lo}}class au extends qe{constructor(e,t){super("buffer-controller",e.logger),this.hls=void 0,this.fragmentTracker=void 0,this.details=null,this._objectUrl=null,this.operationQueue=null,this.bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.blockedAudioAppend=null,this.lastVideoAppendEnd=0,this.appendSource=void 0,this.transferData=void 0,this.overrides=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.sourceBuffers=[[null,null],[null,null]],this._onEndStreaming=s=>{var i;this.hls&&((i=this.mediaSource)==null?void 0:i.readyState)==="open"&&this.hls.pauseBuffering()},this._onStartStreaming=s=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=s=>{const{media:i,mediaSource:r}=this;s&&this.log("Media source opened"),!(!i||!r)&&(r.removeEventListener("sourceopen",this._onMediaSourceOpen),i.removeEventListener("emptied",this._onMediaEmptied),this.updateDuration(),this.hls.trigger(m.MEDIA_ATTACHED,{media:i,mediaSource:r}),this.mediaSource!==null&&this.checkPendingTracks())},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:s,_objectUrl:i}=this;s!==i&&this.error(`Media element src was set while attaching MediaSource (${i} > ${s})`)},this.hls=e,this.fragmentTracker=t,this.appendSource=_l(Lt(e.config.preferManagedMediaSource)),this.initTracks(),this.registerListeners()}hasSourceTypes(){return Object.keys(this.tracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=this.blockedAudioAppend=null,this.transferData=this.overrides=void 0,this.operationQueue&&(this.operationQueue.destroy(),this.operationQueue=null),this.hls=this.fragmentTracker=null,this._onMediaSourceOpen=this._onMediaSourceClose=null,this._onMediaSourceEnded=null,this._onStartStreaming=this._onEndStreaming=null}registerListeners(){const{hls:e}=this;e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.BUFFER_RESET,this.onBufferReset,this),e.on(m.BUFFER_APPENDING,this.onBufferAppending,this),e.on(m.BUFFER_CODECS,this.onBufferCodecs,this),e.on(m.BUFFER_EOS,this.onBufferEos,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(m.FRAG_PARSED,this.onFragParsed,this),e.on(m.FRAG_CHANGED,this.onFragChanged,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.BUFFER_RESET,this.onBufferReset,this),e.off(m.BUFFER_APPENDING,this.onBufferAppending,this),e.off(m.BUFFER_CODECS,this.onBufferCodecs,this),e.off(m.BUFFER_EOS,this.onBufferEos,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(m.FRAG_PARSED,this.onFragParsed,this),e.off(m.FRAG_CHANGED,this.onFragChanged,this),e.off(m.ERROR,this.onError,this)}transferMedia(){const{media:e,mediaSource:t}=this;if(!e)return null;const s={};if(this.operationQueue){const r=this.isUpdating();r||this.operationQueue.removeBlockers();const n=this.isQueued();(r||n)&&this.warn(`Transfering MediaSource with${n?" operations in queue":""}${r?" updating SourceBuffer(s)":""} ${this.operationQueue}`),this.operationQueue.destroy()}const i=this.transferData;return!this.sourceBufferCount&&i&&i.mediaSource===t?ae(s,i.tracks):this.sourceBuffers.forEach(r=>{const[n]=r;n&&(s[n]=ae({},this.tracks[n]),this.removeBuffer(n)),r[0]=r[1]=null}),{media:e,mediaSource:t,tracks:s}}initTracks(){const e={};this.sourceBuffers=[[null,null],[null,null]],this.tracks=e,this.resetQueue(),this.resetAppendErrors(),this.lastMpegAudioChunk=this.blockedAudioAppend=null,this.lastVideoAppendEnd=0}onManifestLoading(){this.bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){var s;let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsTotal=i,this.log(`${i} bufferCodec event(s) expected.`),(s=this.transferData)!=null&&s.mediaSource&&this.sourceBufferCount&&i&&this.bufferCreated()}onMediaAttaching(e,t){const s=this.media=t.media;this.transferData=this.overrides=void 0;const i=Lt(this.appendSource);if(i){const r=!!t.mediaSource;(r||t.overrides)&&(this.transferData=t,this.overrides=t.overrides);const n=this.mediaSource=t.mediaSource||new i;if(this.assignMediaSource(n),r)this._objectUrl=s.src,this.attachTransferred();else{const o=this._objectUrl=self.URL.createObjectURL(n);if(this.appendSource)try{s.removeAttribute("src");const c=self.ManagedMediaSource;s.disableRemotePlayback=s.disableRemotePlayback||c&&n instanceof c,Dn(s),ou(s,o),s.load()}catch{s.src=o}else s.src=o}s.addEventListener("emptied",this._onMediaEmptied)}}assignMediaSource(e){var t,s;this.log(`${((t=this.transferData)==null?void 0:t.mediaSource)===e?"transferred":"created"} media source: ${(s=e.constructor)==null?void 0:s.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming))}attachTransferred(){const e=this.media,t=this.transferData;if(!t||!e)return;const s=this.tracks,i=t.tracks,r=i?Object.keys(i):null,n=r?r.length:0,o=()=>{Promise.resolve().then(()=>{this.media&&this.mediaSourceOpenOrEnded&&this._onMediaSourceOpen()})};if(i&&r&&n){if(!this.tracksReady){this.hls.config.startFragPrefetch=!0,this.log("attachTransferred: waiting for SourceBuffer track info");return}if(this.log(`attachTransferred: (bufferCodecEventsTotal ${this.bufferCodecEventsTotal}) required tracks: ${ce(s,(c,l)=>c==="initSegment"?void 0:l)}; -transfer tracks: ${ce(i,(c,l)=>c==="initSegment"?void 0:l)}}`),!ra(i,s)){t.mediaSource=null,t.tracks=void 0;const c=e.currentTime,l=this.details,h=Math.max(c,l?.fragments[0].start||0);if(h-c>1){this.log(`attachTransferred: waiting for playback to reach new tracks start time ${c} -> ${h}`);return}this.warn(`attachTransferred: resetting MediaSource for incompatible tracks ("${Object.keys(i)}"->"${Object.keys(s)}") start time: ${h} currentTime: ${c}`),this.onMediaDetaching(m.MEDIA_DETACHING,{}),this.onMediaAttaching(m.MEDIA_ATTACHING,t),e.currentTime=h;return}this.transferData=void 0,r.forEach(c=>{const l=c,h=i[l];if(h){const u=h.buffer;if(u){const d=this.fragmentTracker,g=h.id;if(d.hasFragments(g)||d.hasParts(g)){const y=Q.getBuffered(u);d.detectEvictedFragments(l,y,g,null,!0)}const f=pi(l),p=[l,u];this.sourceBuffers[f]=p,u.updating&&this.operationQueue&&this.operationQueue.prependBlocker(l),this.trackSourceBuffer(l,h)}}}),o(),this.bufferCreated()}else this.log("attachTransferred: MediaSource w/o SourceBuffers"),o()}get mediaSourceOpenOrEnded(){var e;const t=(e=this.mediaSource)==null?void 0:e.readyState;return t==="open"||t==="ended"}onMediaDetaching(e,t){const s=!!t.transferMedia;this.transferData=this.overrides=void 0;const{media:i,mediaSource:r,_objectUrl:n}=this;if(r){if(this.log(`media source ${s?"transferring":"detaching"}`),s)this.sourceBuffers.forEach(([o])=>{o&&this.removeBuffer(o)}),this.resetQueue();else{if(this.mediaSourceOpenOrEnded){const o=r.readyState==="open";try{const c=r.sourceBuffers;for(let l=c.length;l--;)o&&c[l].abort(),r.removeSourceBuffer(c[l]);o&&r.endOfStream()}catch(c){this.warn(`onMediaDetaching: ${c.message} while calling endOfStream`)}}this.sourceBufferCount&&this.onBufferReset()}r.removeEventListener("sourceopen",this._onMediaSourceOpen),r.removeEventListener("sourceended",this._onMediaSourceEnded),r.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(r.removeEventListener("startstreaming",this._onStartStreaming),r.removeEventListener("endstreaming",this._onEndStreaming)),this.mediaSource=null,this._objectUrl=null}i&&(i.removeEventListener("emptied",this._onMediaEmptied),s||(n&&self.URL.revokeObjectURL(n),this.mediaSrc===n?(i.removeAttribute("src"),this.appendSource&&Dn(i),i.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.media=null),this.hls.trigger(m.MEDIA_DETACHED,t)}onBufferReset(){this.sourceBuffers.forEach(([e])=>{e&&this.resetBuffer(e)}),this.initTracks()}resetBuffer(e){var t;const s=(t=this.tracks[e])==null?void 0:t.buffer;if(this.removeBuffer(e),s)try{var i;(i=this.mediaSource)!=null&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(s)}catch(r){this.warn(`onBufferReset ${e}`,r)}delete this.tracks[e]}removeBuffer(e){this.removeBufferListeners(e),this.sourceBuffers[pi(e)]=[null,null];const t=this.tracks[e];t&&(t.buffer=void 0)}resetQueue(){this.operationQueue&&this.operationQueue.destroy(),this.operationQueue=new ru(this.tracks)}onBufferCodecs(e,t){var s;const i=this.tracks,r=Object.keys(t);this.log(`BUFFER_CODECS: "${r}" (current SB count ${this.sourceBufferCount})`);const n="audiovideo"in t&&(i.audio||i.video)||i.audiovideo&&("audio"in t||"video"in t),o=!n&&this.sourceBufferCount&&this.media&&r.some(c=>!i[c]);if(n||o){this.warn(`Unsupported transition between "${Object.keys(i)}" and "${r}" SourceBuffers`);return}r.forEach(c=>{var l,h;const u=t[c],{id:d,codec:g,levelCodec:f,container:p,metadata:y,supplemental:E}=u;let v=i[c];const T=(l=this.transferData)==null||(l=l.tracks)==null?void 0:l[c],S=T!=null&&T.buffer?T:v,x=S?.pendingCodec||S?.codec,D=S?.levelCodec;v||(v=i[c]={buffer:void 0,listeners:[],codec:g,supplemental:E,container:p,levelCodec:f,metadata:y,id:d});const A=bs(x,D),L=A?.replace(_n,"$1");let R=bs(g,f);const I=(h=R)==null?void 0:h.replace(_n,"$1");R&&A&&L!==I&&(c.slice(0,5)==="audio"&&(R=Bs(R,this.appendSource)),this.log(`switching codec ${x} to ${R}`),R!==(v.pendingCodec||v.codec)&&(v.pendingCodec=R),v.container=p,this.appendChangeType(c,p,R))}),(this.tracksReady||this.sourceBufferCount)&&(t.tracks=this.sourceBufferTracks),!this.sourceBufferCount&&(this.bufferCodecEventsTotal>1&&!this.tracks.video&&!t.video&&((s=t.audio)==null?void 0:s.id)==="main"&&(this.log("Main audio-only"),this.bufferCodecEventsTotal=1),this.mediaSourceOpenOrEnded&&this.checkPendingTracks())}get sourceBufferTracks(){return Object.keys(this.tracks).reduce((e,t)=>{const s=this.tracks[t];return e[t]={id:s.id,container:s.container,codec:s.codec,levelCodec:s.levelCodec},e},{})}appendChangeType(e,t,s){const i=`${t};codecs=${s}`,r={label:`change-type=${i}`,execute:()=>{const n=this.tracks[e];if(n){const o=n.buffer;o!=null&&o.changeType&&(this.log(`changing ${e} sourceBuffer type to ${i}`),o.changeType(i),n.codec=s,n.container=t)}this.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:n=>{this.warn(`Failed to change ${e} SourceBuffer type`,n)}};this.append(r,e,this.isPending(this.tracks[e]))}blockAudio(e){var t;const s=e.start,i=s+e.duration*.05;if(((t=this.fragmentTracker.getAppendedFrag(s,Y.MAIN))==null?void 0:t.gap)===!0)return;const n={label:"block-audio",execute:()=>{var o;const c=this.tracks.video;(this.lastVideoAppendEnd>i||c!=null&&c.buffer&&Q.isBuffered(c.buffer,i)||((o=this.fragmentTracker.getAppendedFrag(i,Y.MAIN))==null?void 0:o.gap)===!0)&&(this.blockedAudioAppend=null,this.shiftAndExecuteNext("audio"))},onStart:()=>{},onComplete:()=>{},onError:o=>{this.warn("Error executing block-audio operation",o)}};this.blockedAudioAppend={op:n,frag:e},this.append(n,"audio",!0)}unblockAudio(){const{blockedAudioAppend:e,operationQueue:t}=this;e&&t&&(this.blockedAudioAppend=null,t.unblockAudio(e.op))}onBufferAppending(e,t){const{tracks:s}=this,{data:i,type:r,parent:n,frag:o,part:c,chunkMeta:l,offset:h}=t,u=l.buffering[r],{sn:d,cc:g}=o,f=self.performance.now();u.start=f;const p=o.stats.buffering,y=c?c.stats.buffering:null;p.start===0&&(p.start=f),y&&y.start===0&&(y.start=f);const E=s.audio;let v=!1;r==="audio"&&E?.container==="audio/mpeg"&&(v=!this.lastMpegAudioChunk||l.id===1||this.lastMpegAudioChunk.sn!==l.sn,this.lastMpegAudioChunk=l);const T=s.video,S=T?.buffer;if(S&&d!=="initSegment"){const A=c||o,L=this.blockedAudioAppend;if(r==="audio"&&n!=="main"&&!this.blockedAudioAppend&&!(T.ending||T.ended)){const I=A.start+A.duration*.05,C=S.buffered,$=this.currentOp("video");!C.length&&!$?this.blockAudio(A):!$&&!Q.isBuffered(S,I)&&this.lastVideoAppendEndI||R{var A;u.executeStart=self.performance.now();const L=(A=this.tracks[r])==null?void 0:A.buffer;L&&(v?this.updateTimestampOffset(L,x,.1,r,d,g):h!==void 0&&K(h)&&this.updateTimestampOffset(L,h,1e-6,r,d,g)),this.appendExecutor(i,r)},onStart:()=>{},onComplete:()=>{const A=self.performance.now();u.executeEnd=u.end=A,p.first===0&&(p.first=A),y&&y.first===0&&(y.first=A);const L={};this.sourceBuffers.forEach(([R,I])=>{R&&(L[R]=Q.getBuffered(I))}),this.appendErrors[r]=0,r==="audio"||r==="video"?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(m.BUFFER_APPENDED,{type:r,frag:o,part:c,chunkMeta:l,parent:o.type,timeRanges:L})},onError:A=>{var L;const R={type:W.MEDIA_ERROR,parent:o.type,details:_.BUFFER_APPEND_ERROR,sourceBufferName:r,frag:o,part:c,chunkMeta:l,error:A,err:A,fatal:!1},I=(L=this.media)==null?void 0:L.error;if(A.code===DOMException.QUOTA_EXCEEDED_ERR||A.name=="QuotaExceededError"||"quota"in A)R.details=_.BUFFER_FULL_ERROR;else if(A.code===DOMException.INVALID_STATE_ERR&&this.mediaSourceOpenOrEnded&&!I)R.errorAction=Gt(!0);else if(A.name===lo&&this.sourceBufferCount===0)R.errorAction=Gt(!0);else{const C=++this.appendErrors[r];this.warn(`Failed ${C}/${this.hls.config.appendErrorMaxRetry} times to append segment in "${r}" sourceBuffer (${I||"no media error"})`),(C>=this.hls.config.appendErrorMaxRetry||I)&&(R.fatal=!0)}this.hls.trigger(m.ERROR,R)}};this.log(`queuing "${r}" append sn: ${d}${c?" p: "+c.index:""} of ${o.type===Y.MAIN?"level":"track"} ${o.level} cc: ${g}`),this.append(D,r,this.isPending(this.tracks[r]))}getFlushOp(e,t,s){return this.log(`queuing "${e}" remove ${t}-${s}`),{label:"remove",execute:()=>{this.removeExecutor(e,t,s)},onStart:()=>{},onComplete:()=>{this.hls.trigger(m.BUFFER_FLUSHED,{type:e})},onError:i=>{this.warn(`Failed to remove ${t}-${s} from "${e}" SourceBuffer`,i)}}}onBufferFlushing(e,t){const{type:s,startOffset:i,endOffset:r}=t;s?this.append(this.getFlushOp(s,i,r),s):this.sourceBuffers.forEach(([n])=>{n&&this.append(this.getFlushOp(n,i,r),n)})}onFragParsed(e,t){const{frag:s,part:i}=t,r=[],n=i?i.elementaryStreams:s.elementaryStreams;n[le.AUDIOVIDEO]?r.push("audiovideo"):(n[le.AUDIO]&&r.push("audio"),n[le.VIDEO]&&r.push("video"));const o=()=>{const c=self.performance.now();s.stats.buffering.end=c,i&&(i.stats.buffering.end=c);const l=i?i.stats:s.stats;this.hls.trigger(m.FRAG_BUFFERED,{frag:s,part:i,stats:l,id:s.type})};r.length===0&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${s.type} level: ${s.level} sn: ${s.sn}`),this.blockBuffers(o,r).catch(c=>{this.warn(`Fragment buffered callback ${c}`),this.stepOperationQueue(this.sourceBufferTypes)})}onFragChanged(e,t){this.trimBuffers()}get bufferedToEnd(){return this.sourceBufferCount>0&&!this.sourceBuffers.some(([e])=>{if(e){const t=this.tracks[e];if(t)return!t.ended||t.ending}return!1})}onBufferEos(e,t){var s;this.sourceBuffers.forEach(([n])=>{if(n){const o=this.tracks[n];(!t.type||t.type===n)&&(o.ending=!0,o.ended||(o.ended=!0,this.log(`${n} buffer reached EOS`)))}});const i=((s=this.overrides)==null?void 0:s.endOfStream)!==!1;this.sourceBufferCount>0&&!this.sourceBuffers.some(([n])=>{var o;return n&&!((o=this.tracks[n])!=null&&o.ended)})?i?(this.log("Queueing EOS"),this.blockUntilOpen(()=>{this.tracksEnded();const{mediaSource:n}=this;if(!n||n.readyState!=="open"){n&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${n.readyState}`);return}this.log("Calling mediaSource.endOfStream()"),n.endOfStream(),this.hls.trigger(m.BUFFERED_TO_END,void 0)})):(this.tracksEnded(),this.hls.trigger(m.BUFFERED_TO_END,void 0)):t.type==="video"&&this.unblockAudio()}tracksEnded(){this.sourceBuffers.forEach(([e])=>{if(e!==null){const t=this.tracks[e];t&&(t.ending=!1)}})}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.updateDuration())}updateDuration(){this.blockUntilOpen(()=>{const e=this.getDurationAndRange();e&&this.updateMediaSource(e)})}onError(e,t){if(t.details===_.BUFFER_APPEND_ERROR&&t.frag){var s;const i=(s=t.errorAction)==null?void 0:s.nextAutoLevel;K(i)&&i!==t.frag.level&&this.resetAppendErrors()}}resetAppendErrors(){this.appendErrors={audio:0,video:0,audiovideo:0}}trimBuffers(){const{hls:e,details:t,media:s}=this;if(!s||t===null||!this.sourceBufferCount)return;const i=e.config,r=s.currentTime,n=t.levelTargetDuration,o=t.live&&i.liveBackBufferLength!==null?i.liveBackBufferLength:i.backBufferLength;if(K(o)&&o>=0){const l=Math.max(o,n),h=Math.floor(r/n)*n-l;this.flushBackBuffer(r,n,h)}const c=i.frontBufferFlushThreshold;if(K(c)&&c>0){const l=Math.max(i.maxBufferLength,c),h=Math.max(l,n),u=Math.floor(r/n)*n+h;this.flushFrontBuffer(r,n,u)}}flushBackBuffer(e,t,s){this.sourceBuffers.forEach(([i,r])=>{if(r){const o=Q.getBuffered(r);if(o.length>0&&s>o.start(0)){var n;this.hls.trigger(m.BACK_BUFFER_REACHED,{bufferEnd:s});const c=this.tracks[i];if((n=this.details)!=null&&n.live)this.hls.trigger(m.LIVE_BACK_BUFFER_REACHED,{bufferEnd:s});else if(c!=null&&c.ended){this.log(`Cannot flush ${i} back buffer while SourceBuffer is in ended state`);return}this.hls.trigger(m.BUFFER_FLUSHING,{startOffset:0,endOffset:s,type:i})}}})}flushFrontBuffer(e,t,s){this.sourceBuffers.forEach(([i,r])=>{if(r){const n=Q.getBuffered(r),o=n.length;if(o<2)return;const c=n.start(o-1),l=n.end(o-1);if(s>c||e>=c&&e<=l)return;this.hls.trigger(m.BUFFER_FLUSHING,{startOffset:c,endOffset:1/0,type:i})}})}getDurationAndRange(){var e;const{details:t,mediaSource:s}=this;if(!t||!this.media||s?.readyState!=="open")return null;const i=t.edge;if(t.live&&this.hls.config.liveDurationInfinity){if(t.fragments.length&&s.setLiveSeekableRange){const l=Math.max(0,t.fragmentStart),h=Math.max(l,i);return{duration:1/0,start:l,end:h}}return{duration:1/0}}const r=(e=this.overrides)==null?void 0:e.duration;if(r)return K(r)?{duration:r}:null;const n=this.media.duration,o=K(s.duration)?s.duration:0;return i>o&&i>n||!K(n)?{duration:i}:null}updateMediaSource({duration:e,start:t,end:s}){const i=this.mediaSource;!this.media||!i||i.readyState!=="open"||(i.duration!==e&&(K(e)&&this.log(`Updating MediaSource duration to ${e.toFixed(3)}`),i.duration=e),t!==void 0&&s!==void 0&&(this.log(`MediaSource duration is set to ${i.duration}. Setting seekable range to ${t}-${s}.`),i.setLiveSeekableRange(t,s)))}get tracksReady(){const e=this.pendingTrackCount;return e>0&&(e>=this.bufferCodecEventsTotal||this.isPending(this.tracks.audiovideo))}checkPendingTracks(){const{bufferCodecEventsTotal:e,pendingTrackCount:t,tracks:s}=this;if(this.log(`checkPendingTracks (pending: ${t} codec events expected: ${e}) ${ce(s)}`),this.tracksReady){var i;const r=(i=this.transferData)==null?void 0:i.tracks;r&&Object.keys(r).length?this.attachTransferred():this.createSourceBuffers()}}bufferCreated(){if(this.sourceBufferCount){const e={};this.sourceBuffers.forEach(([t,s])=>{if(t){const i=this.tracks[t];e[t]={buffer:s,container:i.container,codec:i.codec,supplemental:i.supplemental,levelCodec:i.levelCodec,id:i.id,metadata:i.metadata}}}),this.hls.trigger(m.BUFFER_CREATED,{tracks:e}),this.log(`SourceBuffers created. Running queue: ${this.operationQueue}`),this.sourceBuffers.forEach(([t])=>{this.executeNext(t)})}else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}createSourceBuffers(){const{tracks:e,sourceBuffers:t,mediaSource:s}=this;if(!s)throw new Error("createSourceBuffers called when mediaSource was null");for(const r in e){const n=r,o=e[n];if(this.isPending(o)){const c=this.getTrackCodec(o,n),l=`${o.container};codecs=${c}`;o.codec=c,this.log(`creating sourceBuffer(${l})${this.currentOp(n)?" Queued":""} ${ce(o)}`);try{const h=s.addSourceBuffer(l),u=pi(n),d=[n,h];t[u]=d,o.buffer=h}catch(h){var i;this.error(`error while trying to add sourceBuffer: ${h.message}`),this.shiftAndExecuteNext(n),(i=this.operationQueue)==null||i.removeBlockers(),delete this.tracks[n],this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:h,sourceBufferName:n,mimeType:l,parent:o.id});return}this.trackSourceBuffer(n,o)}}this.bufferCreated()}getTrackCodec(e,t){const s=e.supplemental;let i=e.codec;s&&(t==="video"||t==="audiovideo")&&ss(s,"video")&&(i=zl(i,s));const r=bs(i,e.levelCodec);return r?t.slice(0,5)==="audio"?Bs(r,this.appendSource):r:""}trackSourceBuffer(e,t){const s=t.buffer;if(!s)return;const i=this.getTrackCodec(t,e);this.tracks[e]={buffer:s,codec:i,container:t.container,levelCodec:t.levelCodec,supplemental:t.supplemental,metadata:t.metadata,id:t.id,listeners:[]},this.removeBufferListeners(e),this.addBufferListener(e,"updatestart",this.onSBUpdateStart),this.addBufferListener(e,"updateend",this.onSBUpdateEnd),this.addBufferListener(e,"error",this.onSBUpdateError),this.appendSource&&this.addBufferListener(e,"bufferedchange",(r,n)=>{const o=n.removedRanges;o!=null&&o.length&&this.hls.trigger(m.BUFFER_FLUSHED,{type:r})})}get mediaSrc(){var e,t;const s=((e=this.media)==null||(t=e.querySelector)==null?void 0:t.call(e,"source"))||this.media;return s?.src}onSBUpdateStart(e){const t=this.currentOp(e);t&&t.onStart()}onSBUpdateEnd(e){var t;if(((t=this.mediaSource)==null?void 0:t.readyState)==="closed"){this.resetBuffer(e);return}const s=this.currentOp(e);s&&(s.onComplete(),this.shiftAndExecuteNext(e))}onSBUpdateError(e,t){var s;const i=new Error(`${e} SourceBuffer error. MediaSource readyState: ${(s=this.mediaSource)==null?void 0:s.readyState}`);this.error(`${i}`,t),this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:i,fatal:!1});const r=this.currentOp(e);r&&r.onError(i)}updateTimestampOffset(e,t,s,i,r,n){const o=t-e.timestampOffset;Math.abs(o)>=s&&(this.log(`Updating ${i} SourceBuffer timestampOffset to ${t} (sn: ${r} cc: ${n})`),e.timestampOffset=t)}removeExecutor(e,t,s){const{media:i,mediaSource:r}=this,n=this.tracks[e],o=n?.buffer;if(!i||!r||!o){this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),this.shiftAndExecuteNext(e);return}const c=K(i.duration)?i.duration:1/0,l=K(r.duration)?r.duration:1/0,h=Math.max(0,t),u=Math.min(s,c,l);u>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${u}] from the ${e} SourceBuffer`),o.remove(h,u)):this.shiftAndExecuteNext(e)}appendExecutor(e,t){const s=this.tracks[t],i=s?.buffer;if(!i)throw new nu(`Attempting to append to the ${t} SourceBuffer, but it does not exist`);s.ending=!1,s.ended=!1,i.appendBuffer(e)}blockUntilOpen(e){if(this.isUpdating()||this.isQueued())this.blockBuffers(e).catch(t=>{this.warn(`SourceBuffer blocked callback ${t}`),this.stepOperationQueue(this.sourceBufferTypes)});else try{e()}catch(t){this.warn(`Callback run without blocking ${this.operationQueue} ${t}`)}}isUpdating(){return this.sourceBuffers.some(([e,t])=>e&&t.updating)}isQueued(){return this.sourceBuffers.some(([e])=>e&&!!this.currentOp(e))}isPending(e){return!!e&&!e.buffer}blockBuffers(e,t=this.sourceBufferTypes){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),Promise.resolve().then(e);const{operationQueue:s}=this,i=t.map(n=>this.appendBlocker(n));return t.length>1&&this.blockedAudioAppend&&this.unblockAudio(),Promise.all(i).then(n=>{s===this.operationQueue&&(e(),this.stepOperationQueue(this.sourceBufferTypes))})}stepOperationQueue(e){e.forEach(t=>{var s;const i=(s=this.tracks[t])==null?void 0:s.buffer;!i||i.updating||this.shiftAndExecuteNext(t)})}append(e,t,s){this.operationQueue&&this.operationQueue.append(e,t,s)}appendBlocker(e){if(this.operationQueue)return this.operationQueue.appendBlocker(e)}currentOp(e){return this.operationQueue?this.operationQueue.current(e):null}executeNext(e){e&&this.operationQueue&&this.operationQueue.executeNext(e)}shiftAndExecuteNext(e){this.operationQueue&&this.operationQueue.shiftAndExecuteNext(e)}get pendingTrackCount(){return Object.keys(this.tracks).reduce((e,t)=>e+(this.isPending(this.tracks[t])?1:0),0)}get sourceBufferCount(){return this.sourceBuffers.reduce((e,[t])=>e+(t?1:0),0)}get sourceBufferTypes(){return this.sourceBuffers.map(([e])=>e).filter(e=>!!e)}addBufferListener(e,t,s){const i=this.tracks[e];if(!i)return;const r=i.buffer;if(!r)return;const n=s.bind(this,e);i.listeners.push({event:t,listener:n}),r.addEventListener(t,n)}removeBufferListeners(e){const t=this.tracks[e];if(!t)return;const s=t.buffer;s&&(t.listeners.forEach(i=>{s.removeEventListener(i.event,i.listener)}),t.listeners.length=0)}}function Dn(a){const e=a.querySelectorAll("source");[].slice.call(e).forEach(t=>{a.removeChild(t)})}function ou(a,e){const t=self.document.createElement("source");t.type="video/mp4",t.src=e,a.appendChild(t)}function pi(a){return a==="audio"?1:0}class Tr{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(m.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(m.BUFFER_CODECS,this.onBufferCodecs,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(m.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(m.BUFFER_CODECS,this.onBufferCodecs,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const s=this.hls.levels[t.droppedLevel];this.isLevelAllowed(s)&&this.restrictedLevels.push({bitrate:s.bitrate,height:s.height,width:s.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const s=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,s.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&K(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping(),this.media=null}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0){this.clientRect=null;return}const e=this.hls.levels;if(e.length){const t=this.hls,s=this.getMaxLevel(e.length-1);s!==this.autoLevelCapping&&t.logger.log(`Setting autoLevelCapping to ${s}: ${e[s].height}p@${e[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=s,t.autoLevelEnabled&&t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const s=t.filter((i,r)=>this.isLevelAllowed(i)&&r<=e);return this.clientRect=null,Tr.getMaxLevelByMediaSize(s,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const s=e.getBoundingClientRect();t.width=s.width,t.height=s.height,!t.width&&!t.height&&(t.width=s.right-s.left||e.width||0,t.height=s.bottom-s.top||e.height||0)}return this.clientRect=t,t}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch{}return Math.min(e,this.hls.config.maxDevicePixelRatio)}isLevelAllowed(e){return!this.restrictedLevels.some(s=>e.bitrate===s.bitrate&&e.width===s.width&&e.height===s.height)}static getMaxLevelByMediaSize(e,t,s){if(!(e!=null&&e.length))return-1;const i=(o,c)=>c?o.width!==c.width||o.height!==c.height:!0;let r=e.length-1;const n=Math.max(t,s);for(let o=0;o=n||c.height>=n)&&i(c,e[o+1])){r=o;break}}return r}}const lu={MANIFEST:"m",AUDIO:"a",VIDEO:"v",MUXED:"av",INIT:"i",CAPTION:"c",TIMED_TEXT:"tt",KEY:"k",OTHER:"o"},Fe=lu,cu={HLS:"h"},hu=cu;class it{constructor(e,t){Array.isArray(e)&&(e=e.map(s=>s instanceof it?s:new it(s))),this.value=e,this.params=t}}const uu="Dict";function du(a){return Array.isArray(a)?JSON.stringify(a):a instanceof Map?"Map{}":a instanceof Set?"Set{}":typeof a=="object"?JSON.stringify(a):String(a)}function fu(a,e,t,s){return new Error(`failed to ${a} "${du(e)}" as ${t}`,{cause:s})}function rt(a,e,t){return fu("serialize",a,e,t)}class co{constructor(e){this.description=e}}const Cn="Bare Item",gu="Boolean";function mu(a){if(typeof a!="boolean")throw rt(a,gu);return a?"?1":"?0"}function pu(a){return btoa(String.fromCharCode(...a))}const yu="Byte Sequence";function Eu(a){if(ArrayBuffer.isView(a)===!1)throw rt(a,yu);return`:${pu(a)}:`}const vu="Integer";function Tu(a){return a<-999999999999999||99999999999999912)throw rt(a,xu);const t=e.toString();return t.includes(".")?t:`${t}.0`}const Iu="String",Lu=/[\x00-\x1f\x7f]+/;function Ru(a){if(Lu.test(a))throw rt(a,Iu);return`"${a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function bu(a){return a.description||a.toString().slice(7,-1)}const _u="Token";function Pn(a){const e=bu(a);if(/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e)===!1)throw rt(e,_u);return e}function Hi(a){switch(typeof a){case"number":if(!K(a))throw rt(a,Cn);return Number.isInteger(a)?ho(a):Au(a);case"string":return Ru(a);case"symbol":return Pn(a);case"boolean":return mu(a);case"object":if(a instanceof Date)return Su(a);if(a instanceof Uint8Array)return Eu(a);if(a instanceof co)return Pn(a);default:throw rt(a,Cn)}}const Du="Key";function Yi(a){if(/^[a-z*][a-z0-9\-_.*]*$/.test(a)===!1)throw rt(a,Du);return a}function Sr(a){return a==null?"":Object.entries(a).map(([e,t])=>t===!0?`;${Yi(e)}`:`;${Yi(e)}=${Hi(t)}`).join("")}function fo(a){return a instanceof it?`${Hi(a.value)}${Sr(a.params)}`:Hi(a)}function Cu(a){return`(${a.value.map(fo).join(" ")})${Sr(a.params)}`}function Pu(a,e={whitespace:!0}){if(typeof a!="object"||a==null)throw rt(a,uu);const t=a instanceof Map?a.entries():Object.entries(a),s=e?.whitespace?" ":"";return Array.from(t).map(([i,r])=>{r instanceof it||(r=new it(r));let n=Yi(i);return r.value===!0?n+=Sr(r.params):(n+="=",Array.isArray(r.value)?n+=Cu(r):n+=fo(r)),n}).join(`,${s}`)}function go(a,e){return Pu(a,e)}const Ze="CMCD-Object",pe="CMCD-Request",bt="CMCD-Session",Et="CMCD-Status",ku={br:Ze,ab:Ze,d:Ze,ot:Ze,tb:Ze,tpb:Ze,lb:Ze,tab:Ze,lab:Ze,url:Ze,pb:pe,bl:pe,tbl:pe,dl:pe,ltc:pe,mtp:pe,nor:pe,nrr:pe,rc:pe,sn:pe,sta:pe,su:pe,ttfb:pe,ttfbb:pe,ttlb:pe,cmsdd:pe,cmsds:pe,smrt:pe,df:pe,cs:pe,ts:pe,cid:bt,pr:bt,sf:bt,sid:bt,st:bt,v:bt,msd:bt,bs:Et,bsd:Et,cdn:Et,rtp:Et,bg:Et,pt:Et,ec:Et,e:Et},wu={REQUEST:pe};function Ou(a){return Object.keys(a).reduce((e,t)=>{var s;return(s=a[t])===null||s===void 0||s.forEach(i=>e[i]=t),e},{})}function Fu(a,e){const t={};if(!a)return t;const s=Object.keys(a),i=e?Ou(e):{};return s.reduce((r,n)=>{var o;const c=ku[n]||i[n]||wu.REQUEST,l=(o=r[c])!==null&&o!==void 0?o:r[c]={};return l[n]=a[n],r},t)}function Mu(a){return["ot","sf","st","e","sta"].includes(a)}function Nu(a){return typeof a=="number"?K(a):a!=null&&a!==""&&a!==!1}const mo="event";function Bu(a,e){const t=new URL(a),s=new URL(e);if(t.origin!==s.origin)return a;const i=t.pathname.split("/").slice(1),r=s.pathname.split("/").slice(1,-1);for(;i[0]===r[0];)i.shift(),r.shift();for(;r.length;)r.shift(),i.unshift("..");return i.join("/")+t.search+t.hash}const ks=a=>Math.round(a),Wi=(a,e)=>Array.isArray(a)?a.map(t=>Wi(t,e)):a instanceof it&&typeof a.value=="string"?new it(Wi(a.value,e),a.params):(e.baseUrl&&(a=Bu(a,e.baseUrl)),e.version===1?encodeURIComponent(a):a),Es=a=>ks(a/100)*100,Uu=(a,e)=>{let t=a;return e.version>=2&&(a instanceof it&&typeof a.value=="string"?t=new it([a]):typeof a=="string"&&(t=[a])),Wi(t,e)},$u={br:ks,d:ks,bl:Es,dl:Es,mtp:Es,nor:Uu,rtp:Es,tb:ks},po="request",yo="response",xr=["ab","bg","bl","br","bs","bsd","cdn","cid","cs","df","ec","lab","lb","ltc","msd","mtp","pb","pr","pt","sf","sid","sn","st","sta","tab","tb","tbl","tpb","ts","v"],Gu=["e"],Ku=/^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/;function zs(a){return Ku.test(a)}function Vu(a){return xr.includes(a)||Gu.includes(a)||zs(a)}const Eo=["d","dl","nor","ot","rtp","su"];function Hu(a){return xr.includes(a)||Eo.includes(a)||zs(a)}const Yu=["cmsdd","cmsds","rc","smrt","ttfb","ttfbb","ttlb","url"];function Wu(a){return xr.includes(a)||Eo.includes(a)||Yu.includes(a)||zs(a)}const qu=["bl","br","bs","cid","d","dl","mtp","nor","nrr","ot","pr","rtp","sf","sid","st","su","tb","v"];function ju(a){return qu.includes(a)||zs(a)}const Xu={[yo]:Wu,[mo]:Vu,[po]:Hu};function vo(a,e={}){const t={};if(a==null||typeof a!="object")return t;const s=e.version||a.v||1,i=e.reportingMode||po,r=s===1?ju:Xu[i];let n=Object.keys(a).filter(r);const o=e.filter;typeof o=="function"&&(n=n.filter(o));const c=i===yo||i===mo;c&&!n.includes("ts")&&n.push("ts"),s>1&&!n.includes("v")&&n.push("v");const l=ae({},$u,e.formatters),h={version:s,reportingMode:i,baseUrl:e.baseUrl};return n.sort().forEach(u=>{let d=a[u];const g=l[u];if(typeof g=="function"&&(d=g(d,h)),u==="v"){if(s===1)return;d=s}u=="pr"&&d===1||(c&&u==="ts"&&!K(d)&&(d=Date.now()),Nu(d)&&(Mu(u)&&typeof d=="string"&&(d=new co(d)),t[u]=d))}),t}function zu(a,e={}){const t={};if(!a)return t;const s=vo(a,e),i=Fu(s,e?.customHeaderMap);return Object.entries(i).reduce((r,[n,o])=>{const c=go(o,{whitespace:!1});return c&&(r[n]=c),r},t)}function Qu(a,e,t){return ae(a,zu(e,t))}const Zu="CMCD";function Ju(a,e={}){return a?go(vo(a,e),{whitespace:!1}):""}function ed(a,e={}){if(!a)return"";const t=Ju(a,e);return encodeURIComponent(t)}function td(a,e={}){if(!a)return"";const t=ed(a,e);return`${Zu}=${t}`}const kn=/CMCD=[^&#]+/;function sd(a,e,t){const s=td(e,t);if(!s)return a;if(kn.test(a))return a.replace(kn,s);const i=a.includes("?")?"&":"?";return`${a}${i}${s}`}class id{constructor(e){this.hls=void 0,this.config=void 0,this.media=void 0,this.sid=void 0,this.cid=void 0,this.useHeaders=!1,this.includeKeys=void 0,this.initialized=!1,this.starved=!1,this.buffering=!0,this.audioBuffer=void 0,this.videoBuffer=void 0,this.onWaiting=()=>{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=i=>{try{this.apply(i,{ot:Fe.MANIFEST,su:!this.initialized})}catch(r){this.hls.logger.warn("Could not generate manifest CMCD data.",r)}},this.applyFragmentData=i=>{try{const{frag:r,part:n}=i,o=this.hls.levels[r.level],c=this.getObjectType(r),l={d:(n||r).duration*1e3,ot:c};(c===Fe.VIDEO||c===Fe.AUDIO||c==Fe.MUXED)&&(l.br=o.bitrate/1e3,l.tb=this.getTopBandwidth(c)/1e3,l.bl=this.getBufferLength(c));const h=n?this.getNextPart(n):this.getNextFrag(r);h!=null&&h.url&&h.url!==r.url&&(l.nor=h.url),this.apply(i,l)}catch(r){this.hls.logger.warn("Could not generate segment CMCD data.",r)}},this.hls=e;const t=this.config=e.config,{cmcd:s}=t;s!=null&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=s.sessionId||e.sessionId,this.cid=s.contentId,this.useHeaders=s.useHeaders===!0,this.includeKeys=s.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHED,this.onMediaDetached,this),e.on(m.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHED,this.onMediaDetached,this),e.off(m.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=this.media=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var s,i;this.audioBuffer=(s=t.tracks.audio)==null?void 0:s.buffer,this.videoBuffer=(i=t.tracks.video)==null?void 0:i.buffer}createData(){var e;return{v:1,sf:hu.HLS,sid:this.sid,cid:this.cid,pr:(e=this.media)==null?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){ae(t,this.createData());const s=t.ot===Fe.INIT||t.ot===Fe.VIDEO||t.ot===Fe.MUXED;this.starved&&s&&(t.bs=!0,t.su=!0,this.starved=!1),t.su==null&&(t.su=this.buffering);const{includeKeys:i}=this;i&&(t=Object.keys(t).reduce((n,o)=>(i.includes(o)&&(n[o]=t[o]),n),{}));const r={baseUrl:e.url};this.useHeaders?(e.headers||(e.headers={}),Qu(e.headers,t,r)):e.url=sd(e.url,t,r)}getNextFrag(e){var t;const s=(t=this.hls.levels[e.level])==null?void 0:t.details;if(s){const i=e.sn-s.startSN;return s.fragments[i+1]}}getNextPart(e){var t;const{index:s,fragment:i}=e,r=(t=this.hls.levels[i.level])==null||(t=t.details)==null?void 0:t.partList;if(r){const{sn:n}=i;for(let o=r.length-1;o>=0;o--){const c=r[o];if(c.index===s&&c.fragment.sn===n)return r[o+1]}}}getObjectType(e){const{type:t}=e;if(t==="subtitle")return Fe.TIMED_TEXT;if(e.sn==="initSegment")return Fe.INIT;if(t==="audio")return Fe.AUDIO;if(t==="main")return this.hls.audioTracks.length?Fe.VIDEO:Fe.MUXED}getTopBandwidth(e){let t=0,s;const i=this.hls;if(e===Fe.AUDIO)s=i.audioTracks;else{const r=i.maxAutoLevel,n=r>-1?r+1:i.levels.length;s=i.levels.slice(0,n)}return s.forEach(r=>{r.bitrate>t&&(t=r.bitrate)}),t>0?t:NaN}getBufferLength(e){const t=this.media,s=e===Fe.AUDIO?this.audioBuffer:this.videoBuffer;return!s||!t?NaN:Q.bufferInfo(s,t.currentTime,this.config.maxBufferHole).len*1e3}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,s=e||this.config.loader;return class{constructor(r){this.loader=void 0,this.loader=new s(r)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(r,n,o){t(r),this.loader.load(r,n,o)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,s=e||this.config.loader;return class{constructor(r){this.loader=void 0,this.loader=new s(r)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(r,n,o){t(r),this.loader.load(r,n,o)}}}}const rd=3e5;class nd extends Ye{constructor(e){super("content-steering",e.logger),this.hls=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this._pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.registerListeners()}registerListeners(){const e=this.hls;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.ERROR,this.onError,this))}pathways(){return(this.levels||[]).reduce((e,t)=>(e.indexOf(t.pathwayId)===-1&&e.push(t.pathwayId),e),[])}get pathwayPriority(){return this._pathwayPriority}set pathwayPriority(e){this.updatePathwayPriority(e)}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=this.timeToLoad*1e3-(performance.now()-this.updated);if(e>0){this.scheduleRefresh(this.uri,e);return}}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){this.reloadTimer!==-1&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter(s=>s!==e))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:s}=t;s!==null&&(this.pathwayId=s.pathwayId,this.uri=s.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:s}=t;if(s?.action===Re.SendAlternateToPenaltyBox&&s.flags===Ue.MoveAllAlternatesMatchingHost){const i=this.levels;let r=this._pathwayPriority,n=this.pathwayId;if(t.context){const{groupId:o,pathwayId:c,type:l}=t.context;o&&i?n=this.getPathwayForGroupId(o,l,n):c&&(n=c)}n in this.penalizedPathways||(this.penalizedPathways[n]=performance.now()),!r&&i&&(r=this.pathways()),r&&r.length>1&&(this.updatePathwayPriority(r),s.resolved=this.pathwayId!==n),t.details===_.BUFFER_APPEND_ERROR&&!t.fatal?s.resolved=!0:s.resolved||this.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${n} levels: ${i&&i.length} priorities: ${ce(r)} penalized: ${ce(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(t.length===0){const s=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${s}"`),t=this.getLevelsForPathway(s),this.pathwayId=s}return t.length!==e.length&&this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t}getLevelsForPathway(e){return this.levels===null?[]:this.levels.filter(t=>e===t.pathwayId)}updatePathwayPriority(e){this._pathwayPriority=e;let t;const s=this.penalizedPathways,i=performance.now();Object.keys(s).forEach(r=>{i-s[r]>rd&&delete s[r]});for(let r=0;r0){this.log(`Setting Pathway to "${n}"`),this.pathwayId=n,Ba(t),this.hls.trigger(m.LEVELS_UPDATED,{levels:t});const l=this.hls.levels[o];c&&l&&this.levels&&(l.attrs["STABLE-VARIANT-ID"]!==c.attrs["STABLE-VARIANT-ID"]&&l.bitrate!==c.bitrate&&this.log(`Unstable Pathways change from bitrate ${c.bitrate} to ${l.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,s){const i=this.getLevelsForPathway(s).concat(this.levels||[]);for(let r=0;r{const{ID:n,"BASE-ID":o,"URI-REPLACEMENT":c}=r;if(t.some(h=>h.pathwayId===n))return;const l=this.getLevelsForPathway(o).map(h=>{const u=new fe(h.attrs);u["PATHWAY-ID"]=n;const d=u.AUDIO&&`${u.AUDIO}_clone_${n}`,g=u.SUBTITLES&&`${u.SUBTITLES}_clone_${n}`;d&&(s[u.AUDIO]=d,u.AUDIO=d),g&&(i[u.SUBTITLES]=g,u.SUBTITLES=g);const f=To(h.uri,u["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",c),p=new rs({attrs:u,audioCodec:h.audioCodec,bitrate:h.bitrate,height:h.height,name:h.name,url:f,videoCodec:h.videoCodec,width:h.width});if(h.audioGroups)for(let y=1;y{this.log(`Loaded steering manifest: "${i}"`);const f=h.data;if(f?.VERSION!==1){this.log(`Steering VERSION ${f.VERSION} not supported!`);return}this.updated=performance.now(),this.timeToLoad=f.TTL;const{"RELOAD-URI":p,"PATHWAY-CLONES":y,"PATHWAY-PRIORITY":E}=f;if(p)try{this.uri=new self.URL(p,i).href}catch{this.enabled=!1,this.log(`Failed to parse Steering Manifest RELOAD-URI: ${p}`);return}this.scheduleRefresh(this.uri||d.url),y&&this.clonePathways(y);const v={steeringManifest:f,url:i.toString()};this.hls.trigger(m.STEERING_MANIFEST_LOADED,v),E&&this.updatePathwayPriority(E)},onError:(h,u,d,g)=>{if(this.log(`Error loading steering manifest: ${h.code} ${h.text} (${u.url})`),this.stopLoad(),h.code===410){this.enabled=!1,this.log(`Steering manifest ${u.url} no longer available`);return}let f=this.timeToLoad*1e3;if(h.code===429){const p=this.loader;if(typeof p?.getResponseHeader=="function"){const y=p.getResponseHeader("Retry-After");y&&(f=parseFloat(y)*1e3)}this.log(`Steering manifest ${u.url} rate limited`);return}this.scheduleRefresh(this.uri||u.url,f)},onTimeout:(h,u,d)=>{this.log(`Timeout loading steering manifest (${u.url})`),this.scheduleRefresh(this.uri||u.url)}};this.log(`Requesting steering manifest: ${i}`),this.loader.load(r,c,l)}scheduleRefresh(e,t=this.timeToLoad*1e3){this.clearTimeout(),this.reloadTimer=self.setTimeout(()=>{var s;const i=(s=this.hls)==null?void 0:s.media;if(i&&!i.ended){this.loadSteeringManifest(e);return}this.scheduleRefresh(e,this.timeToLoad*1e3)},t)}}function wn(a,e,t,s){a&&Object.keys(e).forEach(i=>{const r=a.filter(n=>n.groupId===i).map(n=>{const o=ae({},n);return o.details=void 0,o.attrs=new fe(o.attrs),o.url=o.attrs.URI=To(n.url,n.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",t),o.groupId=o.attrs["GROUP-ID"]=e[i],o.attrs["PATHWAY-ID"]=s,o});a.push(...r)})}function To(a,e,t,s){const{HOST:i,PARAMS:r,[t]:n}=s;let o;e&&(o=n?.[e],o&&(a=o));const c=new self.URL(a);return i&&!o&&(c.host=i),r&&Object.keys(r).sort().forEach(l=>{l&&c.searchParams.set(l,r[l])}),c.href}class Vt extends Ye{constructor(e){super("eme",e.logger),this.hls=void 0,this.config=void 0,this.media=null,this.mediaResolved=void 0,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.mediaKeys=null,this.setMediaKeysQueue=Vt.CDMCleanupPromise?[Vt.CDMCleanupPromise]:[],this.bannedKeyIds={},this.onMediaEncrypted=t=>{const{initDataType:s,initData:i}=t,r=`"${t.type}" event: init data type: "${s}"`;if(this.debug(r),i!==null){if(!this.keyFormatPromise){let n=Object.keys(this.keySystemAccessPromises);n.length||(n=Qt(this.config));const o=n.map(li).filter(c=>!!c);this.keyFormatPromise=this.getKeyFormatPromise(o)}this.keyFormatPromise.then(n=>{const o=Ds(n);if(s!=="sinf"||o!==ge.FAIRPLAY){this.log(`Ignoring "${t.type}" event with init data type: "${s}" for selected key-system ${o}`);return}let c;try{const g=Ae(new Uint8Array(i)),f=hr(JSON.parse(g).sinf),p=fa(f);if(!p)throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc");c=new Uint8Array(p.subarray(8,24))}catch(g){this.warn(`${r} Failed to parse sinf: ${g}`);return}const l=be(c),{keyIdToKeySessionPromise:h,mediaKeySessions:u}=this;let d=h[l];for(let g=0;gthis.generateRequestWithPreferredKeySession(f,s,i,"encrypted-event-key-match")),d.catch(E=>this.handleError(E));break}}d||this.handleError(new Error(`Key ID ${l} not encountered in playlist. Key-system sessions ${u.length}.`))}).catch(n=>this.handleError(n))}},this.onWaitingForKey=t=>{this.log(`"${t.type}" event`)},this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.onDestroying(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.config=this.keyIdToKeySessionPromise=null,this.onMediaEncrypted=this.onWaitingForKey=null}registerListeners(){this.hls.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(m.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(m.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),this.hls.on(m.DESTROYING,this.onDestroying,this)}unregisterListeners(){this.hls.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(m.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(m.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),this.hls.off(m.DESTROYING,this.onDestroying,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:s}=this.config,i=t?.[e];if(i)return i.licenseUrl;if(e===ge.WIDEVINE&&s)return s}getLicenseServerUrlOrThrow(e){const t=this.getLicenseServerUrl(e);if(t===void 0)throw new Error(`no license server URL configured for key-system "${e}"`);return t}getServerCertificateUrl(e){const{drmSystems:t}=this.config,s=t?.[e];if(s)return s.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,s=(n,o,c)=>!!n&&c.indexOf(n)===o,i=t.map(n=>n.audioCodec).filter(s),r=t.map(n=>n.videoCodec).filter(s);return i.length+r.length===0&&r.push("avc1.42e01e"),new Promise((n,o)=>{const c=l=>{const h=l.shift();this.getMediaKeysPromise(h,i,r).then(u=>n({keySystem:h,mediaKeys:u})).catch(u=>{l.length?c(l):u instanceof Be?o(u):o(new Be({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_ACCESS,error:u,fatal:!0},u.message))})};c(e)})}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:s}=this.config;if(typeof s!="function"){let i=`Configured requestMediaKeySystemAccess is not a function ${s}`;return Ca===null&&self.location.protocol==="http:"&&(i=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(i))}return s(e,t)}getMediaKeysPromise(e,t,s){var i;const r=Uc(e,t,s,this.config.drmSystemOptions||{});let n=this.keySystemAccessPromises[e],o=(i=n)==null?void 0:i.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${e}" key-system access with config: ${ce(r)}`),o=this.requestMediaKeySystemAccess(e,r);const c=n=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch(l=>{this.log(`Failed to obtain access to key-system "${e}": ${l}`)}),o.then(l=>{this.log(`Access for key-system "${l.keySystem}" obtained`);const h=this.fetchServerCertificate(e);this.log(`Create media-keys for "${e}"`);const u=c.mediaKeys=l.createMediaKeys().then(d=>(this.log(`Media-keys created for "${e}"`),c.hasMediaKeys=!0,h.then(g=>g?this.setMediaKeysServerCertificate(d,e,g):d)));return u.catch(d=>{this.error(`Failed to create media-keys for "${e}"}: ${d}`)}),u})}return o.then(()=>n.mediaKeys)}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:s}){this.log(`Creating key-system session "${t}" keyId: ${be(e.keyId||[])} keyUri: ${e.uri}`);const i=s.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:s,mediaKeysSession:i,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const s=this.createMediaKeySessionContext(e),i=vs(t),r="cenc";this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(s,r,t.pssh.buffer,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}updateKeySession(e,t){const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyId ${be(e.decryptdata.keyId||[])} - } (data length: ${t.byteLength})`),s.update(t)}getSelectedKeySystemFormats(){return Object.keys(this.keySystemAccessPromises).map(e=>({keySystem:e,hasMediaKeys:this.keySystemAccessPromises[e].hasMediaKeys})).filter(({hasMediaKeys:e})=>!!e).map(({keySystem:e})=>li(e)).filter(e=>!!e)}getKeySystemAccess(e){return this.getKeySystemSelectionPromise(e).then(({keySystem:t,mediaKeys:s})=>this.attemptSetMediaKeys(t,s))}selectKeySystem(e){return new Promise((t,s)=>{this.getKeySystemSelectionPromise(e).then(({keySystem:i})=>{const r=li(i);r?t(r):s(new Error(`Unable to find format for key-system "${i}"`))}).catch(s)})}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){const t=Qt(this.config),s=e.map(Ds).filter(i=>!!i&&t.indexOf(i)!==-1);return this.selectKeySystem(s)}getKeyStatus(e){const{mediaKeySessions:t}=this;for(let s=0;s(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(c,l).then(()=>(this.throwIfDestroyed(),this.createMediaKeySessionContext({keySystem:c,mediaKeys:l,decryptdata:t}))))).then(c=>{const l="cenc",h=t.pssh?t.pssh.buffer:null;return this.generateRequestWithPreferredKeySession(c,l,h,"playlist-key")});return o.catch(c=>this.handleError(c,e.frag)),this.keyIdToKeySessionPromise[s]=o,o}return n.catch(o=>{if(o instanceof Be){const c=re({},o.data);this.getKeyStatus(t)==="internal-error"&&(c.decryptdata=t);const l=new Be(c,o.message);this.handleError(l,e.frag)}}),n}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e,t){if(this.hls)if(e instanceof Be){t&&(e.data.frag=t);const s=e.data.decryptdata;this.error(`${e.message}${s?` (${be(s.keyId||[])})`:""}`),this.hls.trigger(m.ERROR,e.data)}else this.error(e.message),this.hls.trigger(m.ERROR,{type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0})}getKeySystemForKeyPromise(e){const t=vs(e),s=this.keyIdToKeySessionPromise[t];if(!s){const i=Ds(e.keyFormat),r=i?[i]:Qt(this.config);return this.attemptKeySystemAccess(r)}return s}getKeySystemSelectionPromise(e){if(e.length||(e=Qt(this.config)),e.length===0)throw new Be({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${ce({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}attemptSetMediaKeys(e,t){if(this.mediaResolved=void 0,this.mediaKeys===t)return Promise.resolve();const s=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const i=Promise.all(s).then(()=>this.media?this.media.setMediaKeys(t):new Promise((r,n)=>{this.mediaResolved=()=>{if(this.mediaResolved=void 0,!this.media)return n(new Error("Attempted to set mediaKeys without media element attached"));this.mediaKeys=t,this.media.setMediaKeys(t).then(r).catch(n)}}));return this.mediaKeys=t,this.setMediaKeysQueue.push(i),i.then(()=>{this.log(`Media-keys set for "${e}"`),s.push(i),this.setMediaKeysQueue=this.setMediaKeysQueue.filter(r=>s.indexOf(r)===-1)})}generateRequestWithPreferredKeySession(e,t,s,i){var r;const n=(r=this.config.drmSystems)==null||(r=r[e.keySystem])==null?void 0:r.generateRequest;if(n)try{const f=n.call(this.hls,t,s,e);if(!f)throw new Error("Invalid response from configured generateRequest filter");t=f.initDataType,s=f.initData?f.initData:null,e.decryptdata.pssh=s?new Uint8Array(s):null}catch(f){if(this.warn(f.message),this.hls&&this.hls.config.debug)throw f}if(s===null)return this.log(`Skipping key-session request for "${i}" (no initData)`),Promise.resolve(e);const o=vs(e.decryptdata),c=e.decryptdata.uri;this.log(`Generating key-session request for "${i}" keyId: ${o} URI: ${c} (init data type: ${t} length: ${s.byteLength})`);const l=new dr,h=e._onmessage=f=>{const p=e.mediaKeysSession;if(!p){l.emit("error",new Error("invalid state"));return}const{messageType:y,message:E}=f;this.log(`"${y}" message event for session "${p.sessionId}" message size: ${E.byteLength}`),y==="license-request"||y==="license-renewal"?this.renewLicense(e,E).catch(v=>{l.eventNames().length?l.emit("error",v):this.handleError(v)}):y==="license-release"?e.keySystem===ge.FAIRPLAY&&this.updateKeySession(e,Bi("acknowledged")).then(()=>this.removeSession(e)).catch(v=>this.handleError(v)):this.warn(`unhandled media key message type "${y}"`)},u=(f,p)=>{p.keyStatus=f;let y;f.startsWith("usable")?l.emit("resolved"):f==="internal-error"||f==="output-restricted"||f==="output-downscaled"?y=On(f,p.decryptdata):f==="expired"?y=new Error(`key expired (keyId: ${o})`):f==="released"?y=new Error("key released"):f==="status-pending"||this.warn(`unhandled key status change "${f}" (keyId: ${o})`),y&&(l.eventNames().length?l.emit("error",y):this.handleError(y))},d=e._onkeystatuseschange=f=>{if(!e.mediaKeysSession){l.emit("error",new Error("invalid state"));return}const y=this.getKeyStatuses(e);if(!Object.keys(y).some(S=>y[S]!=="status-pending"))return;if(y[o]==="expired"){this.log(`Expired key ${ce(y)} in key-session "${e.mediaKeysSession.sessionId}"`),this.renewKeySession(e);return}let v=y[o];if(v)u(v,e);else{var T;e.keyStatusTimeouts||(e.keyStatusTimeouts={}),(T=e.keyStatusTimeouts)[o]||(T[o]=self.setTimeout(()=>{if(!e.mediaKeysSession||!this.mediaKeys)return;const x=this.getKeyStatus(e.decryptdata);if(x&&x!=="status-pending")return this.log(`No status for keyId ${o} in key-session "${e.mediaKeysSession.sessionId}". Using session key-status ${x} from other session.`),u(x,e);this.log(`key status for ${o} in key-session "${e.mediaKeysSession.sessionId}" timed out after 1000ms`),v="internal-error",u(v,e)},1e3)),this.log(`No status for keyId ${o} (${ce(y)}).`)}};we(e.mediaKeysSession,"message",h),we(e.mediaKeysSession,"keystatuseschange",d);const g=new Promise((f,p)=>{l.on("error",p),l.on("resolved",f)});return e.mediaKeysSession.generateRequest(t,s).then(()=>{this.log(`Request generated for key-session "${e.mediaKeysSession.sessionId}" keyId: ${o} URI: ${c}`)}).catch(f=>{throw new Be({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_SESSION,error:f,decryptdata:e.decryptdata,fatal:!1},`Error generating key-session request: ${f}`)}).then(()=>g).catch(f=>(l.removeAllListeners(),this.removeSession(e).then(()=>{throw f}))).then(()=>(l.removeAllListeners(),e))}getKeyStatuses(e){const t={};return e.mediaKeysSession.keyStatuses.forEach((s,i)=>{if(typeof i=="string"&&typeof s=="object"){const o=i;i=s,s=o}const r="buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i);if(e.keySystem===ge.PLAYREADY&&r.length===16){const o=be(r);t[o]=s,_a(r)}const n=be(r);s==="internal-error"&&(this.bannedKeyIds[n]=s),this.log(`key status change "${s}" for keyStatuses keyId: ${n} key-session "${e.mediaKeysSession.sessionId}"`),t[n]=s}),t}fetchServerCertificate(e){const t=this.config,s=t.loader,i=new s(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise((n,o)=>{const c={responseType:"arraybuffer",url:r},l=t.certLoadPolicy.default,h={loadPolicy:l,timeout:l.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},u={onSuccess:(d,g,f,p)=>{n(d.data)},onError:(d,g,f,p)=>{o(new Be({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:f,response:re({url:c.url,data:void 0},d)},`"${e}" certificate request failed (${r}). Status: ${d.code} (${d.text})`))},onTimeout:(d,g,f)=>{o(new Be({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:f,response:{url:c.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(d,g,f)=>{o(new Error("aborted"))}};i.load(c,h,u)})):Promise.resolve()}setMediaKeysServerCertificate(e,t,s){return new Promise((i,r)=>{e.setServerCertificate(s).then(n=>{this.log(`setServerCertificate ${n?"success":"not supported by CDM"} (${s.byteLength}) on "${t}"`),i(e)}).catch(n=>{r(new Be({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:n,fatal:!0},n.message))})})}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then(s=>this.updateKeySession(e,new Uint8Array(s)).catch(i=>{throw new Be({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_SESSION_UPDATE_FAILED,decryptdata:e.decryptdata,error:i,fatal:!1},i.message)}))}unpackPlayReadyKeyMessage(e,t){const s=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!s.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const i=new DOMParser().parseFromString(s,"application/xml"),r=i.querySelectorAll("HttpHeader");if(r.length>0){let h;for(let u=0,d=r.length;u in key message");return Bi(atob(l))}setupLicenseXHR(e,t,s,i){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then(()=>{if(!s.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,s,i)}).catch(n=>{if(!s.decryptdata)throw n;return e.open("POST",t,!0),r.call(this.hls,e,t,s,i)}).then(n=>(e.readyState||e.open("POST",t,!0),{xhr:e,licenseChallenge:n||i})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:i}))}requestLicense(e,t){const s=this.config.keyLoadPolicy.default;return new Promise((i,r)=>{const n=this.getLicenseServerUrlOrThrow(e.keySystem);this.log(`Sending license request to URL: ${n}`);const o=new XMLHttpRequest;o.responseType="arraybuffer",o.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(o.readyState===4)if(o.status===200){this._requestLicenseFailureCount=0;let c=o.response;this.log(`License received ${c instanceof ArrayBuffer?c.byteLength:c}`);const l=this.config.licenseResponseCallback;if(l)try{c=l.call(this.hls,o,n,e)}catch(h){this.error(h)}i(c)}else{const c=s.errorRetry,l=c?c.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||o.status>=400&&o.status<500)r(new Be({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_LICENSE_REQUEST_FAILED,decryptdata:e.decryptdata,fatal:!0,networkDetails:o,response:{url:n,data:void 0,code:o.status,text:o.statusText}},`License Request XHR failed (${n}). Status: ${o.status} (${o.statusText})`));else{const h=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${h} attempts left`),this.requestLicense(e,t).then(i,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=o,this.setupLicenseXHR(o,n,e,t).then(({xhr:c,licenseChallenge:l})=>{e.keySystem==ge.PLAYREADY&&(l=this.unpackPlayReadyKeyMessage(c,l)),c.send(l)}).catch(r)})}onDestroying(){this.unregisterListeners(),this._clear()}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const s=t.media;this.media=s,we(s,"encrypted",this.onMediaEncrypted),we(s,"waitingforkey",this.onWaitingForKey);const i=this.mediaResolved;i?i():this.mediaKeys=s.mediaKeys}onMediaDetached(){const e=this.media;e&&(Me(e,"encrypted",this.onMediaEncrypted),Me(e,"waitingforkey",this.onWaitingForKey),this.media=null,this.mediaKeys=null)}_clear(){var e;this._requestLicenseFailureCount=0,this.keyIdToKeySessionPromise={},this.bannedKeyIds={};const t=this.mediaResolved;if(t&&t(),!this.mediaKeys&&!this.mediaKeySessions.length)return;const s=this.media,i=this.mediaKeySessions.slice();this.mediaKeySessions=[],this.mediaKeys=null,At.clearKeyUriToKeyIdMap();const r=i.length;Vt.CDMCleanupPromise=Promise.all(i.map(n=>this.removeSession(n)).concat((s==null||(e=s.setMediaKeys(null))==null?void 0:e.catch(n=>{this.log(`Could not clear media keys: ${n}`),this.hls&&this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR,fatal:!1,error:new Error(`Could not clear media keys: ${n}`)})}))||Promise.resolve())).catch(n=>{this.log(`Could not close sessions and clear media keys: ${n}`),this.hls&&this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,fatal:!1,error:new Error(`Could not close sessions and clear media keys: ${n}`)})}).then(()=>{r&&this.log("finished closing key sessions and clearing media keys")})}onManifestLoading(){this._clear()}onManifestLoaded(e,{sessionKeys:t}){if(!(!t||!this.config.emeEnabled)&&!this.keyFormatPromise){const s=t.reduce((i,r)=>(i.indexOf(r.keyFormat)===-1&&i.push(r.keyFormat),i),[]);this.log(`Selecting key-system from session-keys ${s.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(s)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:s,decryptdata:i}=e;if(t){this.log(`Remove licenses and keys and close session "${t.sessionId}" keyId: ${be(i?.keyId||[])}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),s&&s.readyState!==XMLHttpRequest.DONE&&s.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);r>-1&&this.mediaKeySessions.splice(r,1);const{keyStatusTimeouts:n}=e;n&&Object.keys(n).forEach(l=>self.clearTimeout(n[l]));const{drmSystemOptions:o}=this.config;return(Gc(o)?new Promise((l,h)=>{self.setTimeout(()=>h(new Error("MediaKeySession.remove() timeout")),8e3),t.remove().then(l).catch(h)}):Promise.resolve()).catch(l=>{this.log(`Could not remove session: ${l}`),this.hls&&this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR,fatal:!1,error:new Error(`Could not remove session: ${l}`)})}).then(()=>t.close()).catch(l=>{this.log(`Could not close session: ${l}`),this.hls&&this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,fatal:!1,error:new Error(`Could not close session: ${l}`)})})}return Promise.resolve()}}Vt.CDMCleanupPromise=void 0;function vs(a){if(!a)throw new Error("Could not read keyId of undefined decryptdata");if(a.keyId===null)throw new Error("keyId is null");return be(a.keyId)}function ad(a,e){if(a.keyId&&e.mediaKeysSession.keyStatuses.has(a.keyId))return e.mediaKeysSession.keyStatuses.get(a.keyId);if(a.matches(e.decryptdata))return e.keyStatus}class Be extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}function On(a,e){const t=a==="output-restricted",s=t?_.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:_.KEY_SYSTEM_STATUS_INTERNAL_ERROR;return new Be({type:W.KEY_SYSTEM_ERROR,details:s,fatal:!1,decryptdata:e},t?"HDCP level output restricted":`key status changed to "${a}"`)}class od{constructor(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.on(m.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListeners(){this.hls.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.off(m.MEDIA_DETACHING,this.onMediaDetaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const s=this.hls.config;if(s.capLevelOnFPSDrop){const i=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=i,i&&typeof i.getVideoPlaybackQuality=="function"&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),s.fpsDroppedMonitoringPeriod)}}onMediaDetaching(){this.media=null}checkFPS(e,t,s){const i=performance.now();if(t){if(this.lastTime){const r=i-this.lastTime,n=s-this.lastDroppedFrames,o=t-this.lastDecodedFrames,c=1e3*n/r,l=this.hls;if(l.trigger(m.FPS_DROP,{currentDropped:n,currentDecoded:o,totalDroppedFrames:s}),c>0&&n>l.config.fpsDroppedMonitoringThreshold*o){let h=l.currentLevel;l.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+h),h>0&&(l.autoLevelCapping===-1||l.autoLevelCapping>=h)&&(h=h-1,l.trigger(m.FPS_DROP_LEVEL_CAPPING,{level:h,droppedLevel:l.currentLevel}),l.autoLevelCapping=h,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=s,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}}function So(a,e){let t;try{t=new Event("addtrack")}catch{t=document.createEvent("Event"),t.initEvent("addtrack",!1,!1)}t.track=a,e.dispatchEvent(t)}function xo(a,e){const t=a.mode;if(t==="disabled"&&(a.mode="hidden"),a.cues&&!a.cues.getCueById(e.id))try{if(a.addCue(e),!a.cues.getCueById(e.id))throw new Error(`addCue is failed for: ${e}`)}catch(s){ne.debug(`[texttrack-utils]: ${s}`);try{const i=new self.TextTrackCue(e.startTime,e.endTime,e.text);i.id=e.id,a.addCue(i)}catch(i){ne.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${i}`)}}t==="disabled"&&(a.mode=t)}function $t(a,e){const t=a.mode;if(t==="disabled"&&(a.mode="hidden"),a.cues)for(let s=a.cues.length;s--;)e&&a.cues[s].removeEventListener("enter",e),a.removeCue(a.cues[s]);t==="disabled"&&(a.mode=t)}function qi(a,e,t,s){const i=a.mode;if(i==="disabled"&&(a.mode="hidden"),a.cues&&a.cues.length>0){const r=cd(a.cues,e,t);for(let n=0;na[t].endTime)return-1;let s=0,i=t,r;for(;s<=i;)if(r=Math.floor((i+s)/2),ea[r].startTime&&s-1)for(let r=i,n=a.length;r=e&&o.endTime<=t)s.push(o);else if(o.startTime>t)return s}return s}function ws(a){const e=[];for(let t=0;tthis.pollTrackChange(0),this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let t=null;const s=ws(this.media.textTracks);for(let r=0;r-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.LEVEL_LOADING,this.onLevelLoading,this),e.on(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(m.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.LEVEL_LOADING,this.onLevelLoading,this),e.off(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(m.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(m.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(e,t){const s=this.media;if(!s)return;const i=!!t.transferMedia;if(self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||s.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),this.subtitleTrack=-1,this.media=null,i)return;ws(s.textTracks).forEach(n=>{$t(n)})}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:s,groupId:i,details:r}=t,n=this.tracksInGroup[s];if(!n||n.groupId!==i){this.warn(`Subtitle track with id:${s} and group:${i} not found in active group ${n?.groupId}`);return}const o=n.details;n.details=t.details,this.log(`Subtitle track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,t,o)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const s=t.subtitleGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||i?.length!==s?.length||s!=null&&s.some(n=>i?.indexOf(n)===-1)){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const n=this.tracks.filter(h=>!s||s.indexOf(h.groupId)!==-1);if(n.length)this.selectDefaultTrack&&!n.some(h=>h.default)&&(this.selectDefaultTrack=!1),n.forEach((h,u)=>{h.id=u});else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=n;const o=this.hls.config.subtitlePreference;if(!r&&o){this.selectDefaultTrack=!1;const h=tt(o,n);if(h>-1)r=n[h];else{const u=tt(o,this.tracks);r=this.tracks[u]}}let c=this.findTrackId(r);c===-1&&r&&(c=this.findTrackId(null));const l={subtitleTracks:n};this.log(`Updating subtitle tracks, ${n.length} track(s) found in "${s?.join(",")}" group-id`),this.hls.trigger(m.SUBTITLE_TRACKS_UPDATED,l),c!==-1&&this.trackId===-1&&this.setSubtitleTrack(c)}}findTrackId(e){const t=this.tracksInGroup,s=this.selectDefaultTrack;for(let i=0;i-1){const r=this.tracksInGroup[i];return this.setSubtitleTrack(i),r}else{if(s)return null;{const r=tt(e,t);if(r>-1)return t[r]}}}}return null}loadPlaylist(e){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentTrack)&&this.scheduleLoading(this.currentTrack,e)}loadingPlaylist(e,t){super.loadingPlaylist(e,t);const s=e.id,i=e.groupId,r=this.getUrlWithDirectives(e.url,t),n=e.details,o=n?.age;this.log(`Loading subtitle ${s} "${e.name}" lang:${e.lang} group:${i}${t?.msn!==void 0?" at sn "+t.msn+" part "+t.part:""}${o&&n.live?" age "+o.toFixed(1)+(n.type&&" "+n.type||""):""} ${r}`),this.hls.trigger(m.SUBTITLE_TRACK_LOADING,{url:r,id:s,groupId:i,deliveryDirectives:t||null,track:e})}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=ws(e.textTracks),s=this.currentTrack;let i;if(s&&(i=t.filter(r=>Vi(s,r))[0],i||this.warn(`Unable to find subtitle TextTrack with name "${s.name}" and language "${s.lang}"`)),[].slice.call(t).forEach(r=>{r.mode!=="disabled"&&r!==i&&(r.mode="disabled")}),i){const r=this.subtitleDisplay?"showing":"hidden";i.mode!==r&&(i.mode=r)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media){this.queuedDefaultTrack=e;return}if(e<-1||e>=t.length||!K(e)){this.warn(`Invalid subtitle track id: ${e}`);return}this.selectDefaultTrack=!1;const s=this.currentTrack,i=t[e]||null;if(this.trackId=e,this.currentTrack=i,this.toggleTrackModes(),!i){this.hls.trigger(m.SUBTITLE_TRACK_SWITCH,{id:e});return}const r=!!i.details&&!i.details.live;if(e===this.trackId&&i===s&&r)return;this.log(`Switching to subtitle-track ${e}`+(i?` "${i.name}" lang:${i.lang} group:${i.groupId}`:""));const{id:n,groupId:o="",name:c,type:l,url:h}=i;this.hls.trigger(m.SUBTITLE_TRACK_SWITCH,{id:n,groupId:o,name:c,type:l,url:h});const u=this.switchParams(i.url,s?.details,i.details);this.loadPlaylist(u)}}function ud(){try{return crypto.randomUUID()}catch{try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch{let t=new Date().getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{const r=(t+Math.random()*16)%16|0;return t=Math.floor(t/16),(i=="x"?r:r&3|8).toString(16)})}}}function ts(a){let e=5381,t=a.length;for(;t;)e=e*33^a.charCodeAt(--t);return(e>>>0).toString()}const Ht=.025;let qs=(function(a){return a[a.Point=0]="Point",a[a.Range=1]="Range",a})({});function dd(a,e,t){return`${a.identifier}-${t+1}-${ts(e)}`}class fd{constructor(e,t){this.base=void 0,this._duration=null,this._timelineStart=null,this.appendInPlaceDisabled=void 0,this.appendInPlaceStarted=void 0,this.dateRange=void 0,this.hasPlayed=!1,this.cumulativeDuration=0,this.resumeOffset=NaN,this.playoutLimit=NaN,this.restrictions={skip:!1,jump:!1},this.snapOptions={out:!1,in:!1},this.assetList=[],this.assetListLoader=void 0,this.assetListResponse=null,this.resumeAnchor=void 0,this.error=void 0,this.resetOnResume=void 0,this.base=t,this.dateRange=e,this.setDateRange(e)}setDateRange(e){this.dateRange=e,this.resumeOffset=e.attr.optionalFloat("X-RESUME-OFFSET",this.resumeOffset),this.playoutLimit=e.attr.optionalFloat("X-PLAYOUT-LIMIT",this.playoutLimit),this.restrictions=e.attr.enumeratedStringList("X-RESTRICT",this.restrictions),this.snapOptions=e.attr.enumeratedStringList("X-SNAP",this.snapOptions)}reset(){var e;this.appendInPlaceStarted=!1,(e=this.assetListLoader)==null||e.destroy(),this.assetListLoader=void 0,this.supplementsPrimary||(this.assetListResponse=null,this.assetList=[],this._duration=null)}isAssetPastPlayoutLimit(e){var t;if(e>0&&e>=this.assetList.length)return!0;const s=this.playoutLimit;return e<=0||isNaN(s)?!1:s===0?!0:(((t=this.assetList[e])==null?void 0:t.startOffset)||0)>s}findAssetIndex(e){return this.assetList.indexOf(e)}get identifier(){return this.dateRange.id}get startDate(){return this.dateRange.startDate}get startTime(){const e=this.dateRange.startTime;if(this.snapOptions.out){const t=this.dateRange.tagAnchor;if(t)return yi(e,t)}return e}get startOffset(){return this.cue.pre?0:this.startTime}get startIsAligned(){if(this.startTime===0||this.snapOptions.out)return!0;const e=this.dateRange.tagAnchor;if(e){const t=this.dateRange.startTime,s=yi(t,e);return t-s<.1}return!1}get resumptionOffset(){const e=this.resumeOffset,t=K(e)?e:this.duration;return this.cumulativeDuration+t}get resumeTime(){const e=this.startOffset+this.resumptionOffset;if(this.snapOptions.in){const t=this.resumeAnchor;if(t)return yi(e,t)}return e}get appendInPlace(){return this.appendInPlaceStarted?!0:this.appendInPlaceDisabled?!1:!!(!this.cue.once&&!this.cue.pre&&this.startIsAligned&&(isNaN(this.playoutLimit)&&isNaN(this.resumeOffset)||this.resumeOffset&&this.duration&&Math.abs(this.resumeOffset-this.duration)0||this.assetListResponse!==null}toString(){return gd(this)}}function yi(a,e){return a-e.start":a.cue.post?"":""}${a.timelineStart.toFixed(2)}-${a.resumeTime.toFixed(2)}]`}function Ut(a){const e=a.timelineStart,t=a.duration||0;return`["${a.identifier}" ${e.toFixed(2)}-${(e+t).toFixed(2)}]`}class md{constructor(e,t,s,i){this.hls=void 0,this.interstitial=void 0,this.assetItem=void 0,this.tracks=null,this.hasDetails=!1,this.mediaAttached=null,this._currentTime=void 0,this._bufferedEosTime=void 0,this.checkPlayout=()=>{this.reachedPlayout(this.currentTime)&&this.hls&&this.hls.trigger(m.PLAYOUT_LIMIT_REACHED,{})};const r=this.hls=new e(t);this.interstitial=s,this.assetItem=i;const n=()=>{this.hasDetails=!0};r.once(m.LEVEL_LOADED,n),r.once(m.AUDIO_TRACK_LOADED,n),r.once(m.SUBTITLE_TRACK_LOADED,n),r.on(m.MEDIA_ATTACHING,(o,{media:c})=>{this.removeMediaListeners(),this.mediaAttached=c,this.interstitial.playoutLimit&&(c.addEventListener("timeupdate",this.checkPlayout),this.appendInPlace&&r.on(m.BUFFER_APPENDED,()=>{const h=this.bufferedEnd;this.reachedPlayout(h)&&(this._bufferedEosTime=h,r.trigger(m.BUFFERED_TO_END,void 0))}))})}get appendInPlace(){return this.interstitial.appendInPlace}loadSource(){const e=this.hls;if(e)if(e.url)e.levels.length&&!e.started&&e.startLoad(-1,!0);else{let t=this.assetItem.uri;try{t=Ao(t,e.config.primarySessionId||"").href}catch{}e.loadSource(t)}}bufferedInPlaceToEnd(e){var t;if(!this.appendInPlace)return!1;if((t=this.hls)!=null&&t.bufferedToEnd)return!0;if(!e)return!1;const s=Math.min(this._bufferedEosTime||1/0,this.duration),i=this.timelineOffset,r=Q.bufferInfo(e,i,0);return this.getAssetTime(r.end)>=s-.02}reachedPlayout(e){const s=this.interstitial.playoutLimit;return this.startOffset+e>=s}get destroyed(){var e;return!((e=this.hls)!=null&&e.userConfig)}get assetId(){return this.assetItem.identifier}get interstitialId(){return this.assetItem.parentIdentifier}get media(){var e;return((e=this.hls)==null?void 0:e.media)||null}get bufferedEnd(){const e=this.media||this.mediaAttached;if(!e)return this._bufferedEosTime?this._bufferedEosTime:this.currentTime;const t=Q.bufferInfo(e,e.currentTime,.001);return this.getAssetTime(t.end)}get currentTime(){const e=this.media||this.mediaAttached;return e?this.getAssetTime(e.currentTime):this._currentTime||0}get duration(){const e=this.assetItem.duration;if(!e)return 0;const t=this.interstitial.playoutLimit;if(t){const s=t-this.startOffset;if(s>0&&s1/9e4&&this.hls){if(this.hasDetails)throw new Error("Cannot set timelineOffset after playlists are loaded");this.hls.config.timelineOffset=e}}}getAssetTime(e){const t=this.timelineOffset,s=this.duration;return Math.min(Math.max(0,e-t),s)}removeMediaListeners(){const e=this.mediaAttached;e&&(this._currentTime=e.currentTime,this.bufferSnapShot(),e.removeEventListener("timeupdate",this.checkPlayout))}bufferSnapShot(){if(this.mediaAttached){var e;(e=this.hls)!=null&&e.bufferedToEnd&&(this._bufferedEosTime=this.bufferedEnd)}}destroy(){this.removeMediaListeners(),this.hls&&this.hls.destroy(),this.hls=null,this.tracks=this.mediaAttached=this.checkPlayout=null}attachMedia(e){var t;this.loadSource(),(t=this.hls)==null||t.attachMedia(e)}detachMedia(){var e;this.removeMediaListeners(),this.mediaAttached=null,(e=this.hls)==null||e.detachMedia()}resumeBuffering(){var e;(e=this.hls)==null||e.resumeBuffering()}pauseBuffering(){var e;(e=this.hls)==null||e.pauseBuffering()}transferMedia(){var e;return this.bufferSnapShot(),((e=this.hls)==null?void 0:e.transferMedia())||null}resetDetails(){const e=this.hls;if(e&&this.hasDetails){e.stopLoad();const t=s=>delete s.details;e.levels.forEach(t),e.allAudioTracks.forEach(t),e.allSubtitleTracks.forEach(t),this.hasDetails=!1}}on(e,t,s){var i;(i=this.hls)==null||i.on(e,t)}once(e,t,s){var i;(i=this.hls)==null||i.once(e,t)}off(e,t,s){var i;(i=this.hls)==null||i.off(e,t)}toString(){var e;return`HlsAssetPlayer: ${Ut(this.assetItem)} ${(e=this.hls)==null?void 0:e.sessionId} ${this.appendInPlace?"append-in-place":""}`}}const Fn=.033;class pd extends Ye{constructor(e,t){super("interstitials-sched",t),this.onScheduleUpdate=void 0,this.eventMap={},this.events=null,this.items=null,this.durations={primary:0,playout:0,integrated:0},this.onScheduleUpdate=e}destroy(){this.reset(),this.onScheduleUpdate=null}reset(){this.eventMap={},this.setDurations(0,0,0),this.events&&this.events.forEach(e=>e.reset()),this.events=this.items=null}resetErrorsInRange(e,t){return this.events?this.events.reduce((s,i)=>e<=i.startOffset&&t>i.startOffset?(delete i.error,s+1):s,0):0}get duration(){const e=this.items;return e?e[e.length-1].end:0}get length(){return this.items?this.items.length:0}getEvent(e){return e&&this.eventMap[e]||null}hasEvent(e){return e in this.eventMap}findItemIndex(e,t){if(e.event)return this.findEventIndex(e.event.identifier);let s=-1;e.nextEvent?s=this.findEventIndex(e.nextEvent.identifier)-1:e.previousEvent&&(s=this.findEventIndex(e.previousEvent.identifier)+1);const i=this.items;if(i)for(i[s]||(t===void 0&&(t=e.start),s=this.findItemIndexAtTime(t));s>=0&&(r=i[s])!=null&&r.event;){var r;s--}return s}findItemIndexAtTime(e,t){const s=this.items;if(s)for(let i=0;ir.start&&e1)for(let r=0;ro&&(t!o.includes(l.identifier)):[];n.length&&n.sort((l,h)=>{const u=l.cue.pre,d=l.cue.post,g=h.cue.pre,f=h.cue.post;if(u&&!g)return-1;if(g&&!u||d&&!f)return 1;if(f&&!d)return-1;if(!u&&!g&&!d&&!f){const p=l.startTime,y=h.startTime;if(p!==y)return p-y}return l.dateRange.tagOrder-h.dateRange.tagOrder}),this.events=n,c.forEach(l=>{this.removeEvent(l)}),this.updateSchedule(e,c)}updateSchedule(e,t=[],s=!1){const i=this.events||[];if(i.length||t.length||this.length<2){const r=this.items,n=this.parseSchedule(i,e);(s||t.length||r?.length!==n.length||n.some((c,l)=>Math.abs(c.playout.start-r[l].playout.start)>.005||Math.abs(c.playout.end-r[l].playout.end)>.005))&&(this.items=n,this.onScheduleUpdate(t,r))}}parseDateRanges(e,t,s){const i=[],r=Object.keys(e);for(let n=0;n!c.error&&!(c.cue.once&&c.hasPlayed)),e.length){this.resolveOffsets(e,t);let c=0,l=0;if(e.forEach((h,u)=>{const d=h.cue.pre,g=h.cue.post,f=e[u-1]||null,p=h.appendInPlace,y=g?r:h.startOffset,E=h.duration,v=h.timelineOccupancy===qs.Range?E:0,T=h.resumptionOffset,S=f?.startTime===y,x=y+h.cumulativeDuration;let D=p?x+E:y+T;if(d||!g&&y<=0){const L=l;l+=v,h.timelineStart=x;const R=n;n+=E,s.push({event:h,start:x,end:D,playout:{start:R,end:n},integrated:{start:L,end:l}})}else if(y<=r){if(!S){const I=y-c;if(I>Fn){const C=c,$=l;l+=I;const G=n;n+=I;const H={previousEvent:e[u-1]||null,nextEvent:h,start:C,end:C+I,playout:{start:G,end:n},integrated:{start:$,end:l}};s.push(H)}else I>0&&f&&(f.cumulativeDuration+=I,s[s.length-1].end=y)}g&&(D=x),h.timelineStart=x;const L=l;l+=v;const R=n;n+=E,s.push({event:h,start:x,end:D,playout:{start:R,end:n},integrated:{start:L,end:l}})}else return;const A=h.resumeTime;g||A>r?c=r:c=A}),c{const l=o.cue.pre,h=o.cue.post,u=l?0:h?i:o.startTime;this.updateAssetDurations(o),n===u?o.cumulativeDuration=r:(r=0,n=u),!h&&o.snapOptions.in&&(o.resumeAnchor=Pt(null,s.fragments,o.startOffset+o.resumptionOffset,0,0)||void 0),o.appendInPlace&&!o.appendInPlaceStarted&&(this.primaryCanResumeInPlaceAt(o,t)||(o.appendInPlace=!1)),!o.appendInPlace&&c+1Ht?(this.log(`"${e.identifier}" resumption ${s} not aligned with estimated timeline end ${i}`),!1):!Object.keys(t).some(n=>{const o=t[n].details,c=o.edge;if(s>=c)return this.log(`"${e.identifier}" resumption ${s} past ${n} playlist end ${c}`),!1;const l=Pt(null,o.fragments,s);if(!l)return this.log(`"${e.identifier}" resumption ${s} does not align with any fragments in ${n} playlist (${o.fragStart}-${o.fragmentEnd})`),!0;const h=n==="audio"?.175:0;return Math.abs(l.start-s){const y=d.data,E=y?.ASSETS;if(!Array.isArray(E)){const v=this.assignAssetListError(e,_.ASSET_LIST_PARSING_ERROR,new Error("Invalid interstitial asset list"),f.url,g,p);this.hls.trigger(m.ERROR,v);return}e.assetListResponse=y,this.hls.trigger(m.ASSET_LIST_LOADED,{event:e,assetListResponse:y,networkDetails:p})},onError:(d,g,f,p)=>{const y=this.assignAssetListError(e,_.ASSET_LIST_LOAD_ERROR,new Error(`Error loading X-ASSET-LIST: HTTP status ${d.code} ${d.text} (${g.url})`),g.url,p,f);this.hls.trigger(m.ERROR,y)},onTimeout:(d,g,f)=>{const p=this.assignAssetListError(e,_.ASSET_LIST_LOAD_TIMEOUT,new Error(`Timeout loading X-ASSET-LIST (${g.url})`),g.url,d,f);this.hls.trigger(m.ERROR,p)}};return o.load(c,h,u),this.hls.trigger(m.ASSET_LIST_LOADING,{event:e}),o}assignAssetListError(e,t,s,i,r,n){return e.error=s,{type:W.NETWORK_ERROR,details:t,fatal:!1,interstitial:e,url:i,error:s,networkDetails:n,stats:r}}}function Mn(a){var e;a==null||(e=a.play())==null||e.catch(()=>{})}function Ts(a,e){return`[${a}] Advancing timeline position to ${e}`}class Ed extends Ye{constructor(e,t){super("interstitials",e.logger),this.HlsPlayerClass=void 0,this.hls=void 0,this.assetListLoader=void 0,this.mediaSelection=null,this.altSelection=null,this.media=null,this.detachedData=null,this.requiredTracks=null,this.manager=null,this.playerQueue=[],this.bufferedPos=-1,this.timelinePos=-1,this.schedule=void 0,this.playingItem=null,this.bufferingItem=null,this.waitingItem=null,this.endedItem=null,this.playingAsset=null,this.endedAsset=null,this.bufferingAsset=null,this.shouldPlay=!1,this.onPlay=()=>{this.shouldPlay=!0},this.onPause=()=>{this.shouldPlay=!1},this.onSeeking=()=>{const s=this.currentTime;if(s===void 0||this.playbackDisabled||!this.schedule)return;const i=s-this.timelinePos;if(Math.abs(i)<1/7056e5)return;const n=i<=-.01;this.timelinePos=s,this.bufferedPos=s;const o=this.playingItem;if(!o){this.checkBuffer();return}if(n&&this.schedule.resetErrorsInRange(s,s-i)&&this.updateSchedule(!0),this.checkBuffer(),n&&s=o.end){var c;const g=this.findItemIndex(o);let f=this.schedule.findItemIndexAtTime(s);if(f===-1&&(f=g+(n?-1:1),this.log(`seeked ${n?"back ":""}to position not covered by schedule ${s} (resolving from ${g} to ${f})`)),!this.isInterstitial(o)&&(c=this.media)!=null&&c.paused&&(this.shouldPlay=!1),!n&&f>g){const p=this.schedule.findJumpRestrictedIndex(g+1,f);if(p>g){this.setSchedulePosition(p);return}}this.setSchedulePosition(f);return}const l=this.playingAsset;if(!l){if(this.playingLastItem&&this.isInterstitial(o)){const g=o.event.assetList[0];g&&(this.endedItem=this.playingItem,this.playingItem=null,this.setScheduleToAssetAtTime(s,g))}return}const h=l.timelineStart,u=l.duration||0;if(n&&s=h+u){var d;(d=o.event)!=null&&d.appendInPlace&&(this.clearAssetPlayers(o.event,o),this.flushFrontBuffer(s)),this.setScheduleToAssetAtTime(s,l)}},this.onTimeupdate=()=>{const s=this.currentTime;if(s===void 0||this.playbackDisabled)return;if(s>this.timelinePos)this.timelinePos=s,s>this.bufferedPos&&this.checkBuffer();else return;const i=this.playingItem;if(!i||this.playingLastItem)return;if(s>=i.end){this.timelinePos=i.end;const o=this.findItemIndex(i);this.setSchedulePosition(o+1)}const r=this.playingAsset;if(!r)return;const n=r.timelineStart+(r.duration||0);s>=n&&this.setScheduleToAssetAtTime(s,r)},this.onScheduleUpdate=(s,i)=>{const r=this.schedule;if(!r)return;const n=this.playingItem,o=r.events||[],c=r.items||[],l=r.durations,h=s.map(p=>p.identifier),u=!!(o.length||h.length);(u||i)&&this.log(`INTERSTITIALS_UPDATED (${o.length}): ${o} -Schedule: ${c.map(p=>qe(p))} pos: ${this.timelinePos}`),h.length&&this.log(`Removed events ${h}`);let d=null,g=null;n&&(d=this.updateItem(n,this.timelinePos),this.itemsMatch(n,d)?this.playingItem=d:this.waitingItem=this.endedItem=null),this.waitingItem=this.updateItem(this.waitingItem),this.endedItem=this.updateItem(this.endedItem);const f=this.bufferingItem;if(f&&(g=this.updateItem(f,this.bufferedPos),this.itemsMatch(f,g)?this.bufferingItem=g:f.event&&(this.bufferingItem=this.playingItem,this.clearInterstitial(f.event,null))),s.forEach(p=>{p.assetList.forEach(y=>{this.clearAssetPlayer(y.identifier,null)})}),this.playerQueue.forEach(p=>{if(p.interstitial.appendInPlace){const y=p.assetItem.timelineStart,E=p.timelineOffset-y;if(E)try{p.timelineOffset=y}catch(v){Math.abs(E)>Ht&&this.warn(`${v} ("${p.assetId}" ${p.timelineOffset}->${y})`)}}}),u||i){if(this.hls.trigger(m.INTERSTITIALS_UPDATED,{events:o.slice(0),schedule:c.slice(0),durations:l,removedIds:h}),this.isInterstitial(n)&&h.includes(n.event.identifier)){this.warn(`Interstitial "${n.event.identifier}" removed while playing`),this.primaryFallback(n.event);return}n&&this.trimInPlace(d,n),f&&g!==d&&this.trimInPlace(g,f),this.checkBuffer()}},this.hls=e,this.HlsPlayerClass=t,this.assetListLoader=new yd(e),this.schedule=new pd(this.onScheduleUpdate,e.logger),this.registerListeners()}registerListeners(){const e=this.hls;e&&(e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(m.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),e.on(m.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(m.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),e.on(m.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),e.on(m.ASSET_LIST_LOADED,this.onAssetListLoaded,this),e.on(m.BUFFER_APPENDED,this.onBufferAppended,this),e.on(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(m.BUFFERED_TO_END,this.onBufferedToEnd,this),e.on(m.MEDIA_ENDED,this.onMediaEnded,this),e.on(m.ERROR,this.onError,this),e.on(m.DESTROYING,this.onDestroying,this))}unregisterListeners(){const e=this.hls;e&&(e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(m.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),e.off(m.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(m.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),e.off(m.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),e.off(m.ASSET_LIST_LOADED,this.onAssetListLoaded,this),e.off(m.BUFFER_CODECS,this.onBufferCodecs,this),e.off(m.BUFFER_APPENDED,this.onBufferAppended,this),e.off(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(m.BUFFERED_TO_END,this.onBufferedToEnd,this),e.off(m.MEDIA_ENDED,this.onMediaEnded,this),e.off(m.ERROR,this.onError,this),e.off(m.DESTROYING,this.onDestroying,this))}startLoad(){this.resumeBuffering()}stopLoad(){this.pauseBuffering()}resumeBuffering(){var e;(e=this.getBufferingPlayer())==null||e.resumeBuffering()}pauseBuffering(){var e;(e=this.getBufferingPlayer())==null||e.pauseBuffering()}destroy(){this.unregisterListeners(),this.stopLoad(),this.assetListLoader&&this.assetListLoader.destroy(),this.emptyPlayerQueue(),this.clearScheduleState(),this.schedule&&this.schedule.destroy(),this.media=this.detachedData=this.mediaSelection=this.requiredTracks=this.altSelection=this.schedule=this.manager=null,this.hls=this.HlsPlayerClass=this.log=null,this.assetListLoader=null,this.onPlay=this.onPause=this.onSeeking=this.onTimeupdate=null,this.onScheduleUpdate=null}onDestroying(){const e=this.primaryMedia||this.media;e&&this.removeMediaListeners(e)}removeMediaListeners(e){Me(e,"play",this.onPlay),Me(e,"pause",this.onPause),Me(e,"seeking",this.onSeeking),Me(e,"timeupdate",this.onTimeupdate)}onMediaAttaching(e,t){const s=this.media=t.media;we(s,"seeking",this.onSeeking),we(s,"timeupdate",this.onTimeupdate),we(s,"play",this.onPlay),we(s,"pause",this.onPause)}onMediaAttached(e,t){const s=this.effectivePlayingItem,i=this.detachedData;if(this.detachedData=null,s===null)this.checkStart();else if(!i){this.clearScheduleState();const r=this.findItemIndex(s);this.setSchedulePosition(r)}}clearScheduleState(){this.log("clear schedule state"),this.playingItem=this.bufferingItem=this.waitingItem=this.endedItem=this.playingAsset=this.endedAsset=this.bufferingAsset=null}onMediaDetaching(e,t){const s=!!t.transferMedia,i=this.media;if(this.media=null,!s&&(i&&this.removeMediaListeners(i),this.detachedData)){const r=this.getBufferingPlayer();r&&(this.log(`Removing schedule state for detachedData and ${r}`),this.playingAsset=this.endedAsset=this.bufferingAsset=this.bufferingItem=this.waitingItem=this.detachedData=null,r.detachMedia()),this.shouldPlay=!1}}get interstitialsManager(){if(!this.hls)return null;if(this.manager)return this.manager;const e=this,t=()=>e.bufferingItem||e.waitingItem,s=u=>u&&e.getAssetPlayer(u.identifier),i=(u,d,g,f,p)=>{if(u){let y=u[d].start;const E=u.event;if(E){if(d==="playout"||E.timelineOccupancy!==qs.Point){const v=s(g);v?.interstitial===E&&(y+=v.assetItem.startOffset+v[p])}}else{const v=f==="bufferedPos"?n():e[f];y+=v-u.start}return y}return 0},r=(u,d)=>{var g;if(u!==0&&d!=="primary"&&(g=e.schedule)!=null&&g.length){var f;const p=e.schedule.findItemIndexAtTime(u),y=(f=e.schedule.items)==null?void 0:f[p];if(y){const E=y[d].start-y.start;return u+E}}return u},n=()=>{const u=e.bufferedPos;return u===Number.MAX_VALUE?o("primary"):Math.max(u,0)},o=u=>{var d,g;return(d=e.primaryDetails)!=null&&d.live?e.primaryDetails.edge:((g=e.schedule)==null?void 0:g.durations[u])||0},c=(u,d)=>{var g,f;const p=e.effectivePlayingItem;if(p!=null&&(g=p.event)!=null&&g.restrictions.skip||!e.schedule)return;e.log(`seek to ${u} "${d}"`);const y=e.effectivePlayingItem,E=e.schedule.findItemIndexAtTime(u,d),v=(f=e.schedule.items)==null?void 0:f[E],T=e.getBufferingPlayer(),S=T?.interstitial,x=S?.appendInPlace,D=y&&e.itemsMatch(y,v);if(y&&(x||D)){const A=s(e.playingAsset),L=A?.media||e.primaryMedia;if(L){const R=d==="primary"?L.currentTime:i(y,d,e.playingAsset,"timelinePos","currentTime"),I=u-R,C=(x?R:L.currentTime)+I;if(C>=0&&(!A||x||C<=A.duration)){L.currentTime=C;return}}}if(v){let A=u;if(d!=="primary"){const R=v[d].start,I=u-R;A=v.start+I}const L=!e.isInterstitial(v);if((!e.isInterstitial(y)||y.event.appendInPlace)&&(L||v.event.appendInPlace)){const R=e.media||(x?T?.media:null);R&&(R.currentTime=A)}else if(y){const R=e.findItemIndex(y);if(E>R){const C=e.schedule.findJumpRestrictedIndex(R+1,E);if(C>R){e.setSchedulePosition(C);return}}let I=0;if(L)e.timelinePos=A,e.checkBuffer();else{const C=v.event.assetList,$=u-(v[d]||v).start;for(let G=C.length;G--;){const H=C[G];if(H.duration&&$>=H.startOffset&&${const u=e.effectivePlayingItem;if(e.isInterstitial(u))return u;const d=t();return e.isInterstitial(d)?d:null},h={get bufferedEnd(){const u=t(),d=e.bufferingItem;if(d&&d===u){var g;return i(d,"playout",e.bufferingAsset,"bufferedPos","bufferedEnd")-d.playout.start||((g=e.bufferingAsset)==null?void 0:g.startOffset)||0}return 0},get currentTime(){const u=l(),d=e.effectivePlayingItem;return d&&d===u?i(d,"playout",e.effectivePlayingAsset,"timelinePos","currentTime")-d.playout.start:0},set currentTime(u){const d=l(),g=e.effectivePlayingItem;g&&g===d&&c(u+g.playout.start,"playout")},get duration(){const u=l();return u?u.playout.end-u.playout.start:0},get assetPlayers(){var u;const d=(u=l())==null?void 0:u.event.assetList;return d?d.map(g=>e.getAssetPlayer(g.identifier)):[]},get playingIndex(){var u;const d=(u=l())==null?void 0:u.event;return d&&e.effectivePlayingAsset?d.findAssetIndex(e.effectivePlayingAsset):-1},get scheduleItem(){return l()}};return this.manager={get events(){var u;return((u=e.schedule)==null||(u=u.events)==null?void 0:u.slice(0))||[]},get schedule(){var u;return((u=e.schedule)==null||(u=u.items)==null?void 0:u.slice(0))||[]},get interstitialPlayer(){return l()?h:null},get playerQueue(){return e.playerQueue.slice(0)},get bufferingAsset(){return e.bufferingAsset},get bufferingItem(){return t()},get bufferingIndex(){const u=t();return e.findItemIndex(u)},get playingAsset(){return e.effectivePlayingAsset},get playingItem(){return e.effectivePlayingItem},get playingIndex(){const u=e.effectivePlayingItem;return e.findItemIndex(u)},primary:{get bufferedEnd(){return n()},get currentTime(){const u=e.timelinePos;return u>0?u:0},set currentTime(u){c(u,"primary")},get duration(){return o("primary")},get seekableStart(){var u;return((u=e.primaryDetails)==null?void 0:u.fragmentStart)||0}},integrated:{get bufferedEnd(){return i(t(),"integrated",e.bufferingAsset,"bufferedPos","bufferedEnd")},get currentTime(){return i(e.effectivePlayingItem,"integrated",e.effectivePlayingAsset,"timelinePos","currentTime")},set currentTime(u){c(u,"integrated")},get duration(){return o("integrated")},get seekableStart(){var u;return r(((u=e.primaryDetails)==null?void 0:u.fragmentStart)||0,"integrated")}},skip:()=>{const u=e.effectivePlayingItem,d=u?.event;if(d&&!d.restrictions.skip){const g=e.findItemIndex(u);if(d.appendInPlace){const f=u.playout.start+u.event.duration;c(f+.001,"playout")}else e.advanceAfterAssetEnded(d,g,1/0)}}}}get effectivePlayingItem(){return this.waitingItem||this.playingItem||this.endedItem}get effectivePlayingAsset(){return this.playingAsset||this.endedAsset}get playingLastItem(){var e;const t=this.playingItem,s=(e=this.schedule)==null?void 0:e.items;return!this.playbackStarted||!t||!s?!1:this.findItemIndex(t)===s.length-1}get playbackStarted(){return this.effectivePlayingItem!==null}get currentTime(){var e,t;if(this.mediaSelection===null)return;const s=this.waitingItem||this.playingItem;if(this.isInterstitial(s)&&!s.event.appendInPlace)return;let i=this.media;!i&&(e=this.bufferingItem)!=null&&(e=e.event)!=null&&e.appendInPlace&&(i=this.primaryMedia);const r=(t=i)==null?void 0:t.currentTime;if(!(r===void 0||!K(r)))return r}get primaryMedia(){var e;return this.media||((e=this.detachedData)==null?void 0:e.media)||null}isInterstitial(e){return!!(e!=null&&e.event)}retreiveMediaSource(e,t){const s=this.getAssetPlayer(e);s&&this.transferMediaFromPlayer(s,t)}transferMediaFromPlayer(e,t){const s=e.interstitial.appendInPlace,i=e.media;if(s&&i===this.primaryMedia){if(this.bufferingAsset=null,(!t||this.isInterstitial(t)&&!t.event.appendInPlace)&&t&&i){this.detachedData={media:i};return}const r=e.transferMedia();this.log(`transfer MediaSource from ${e} ${ce(r)}`),this.detachedData=r}else t&&i&&(this.shouldPlay||(this.shouldPlay=!i.paused))}transferMediaTo(e,t){var s,i;if(e.media===t)return;let r=null;const n=this.hls,o=e!==n,c=o&&e.interstitial.appendInPlace,l=(s=this.detachedData)==null?void 0:s.mediaSource;let h;if(n.media)c&&(r=n.transferMedia(),this.detachedData=r),h="Primary";else if(l){const f=this.getBufferingPlayer();f?(r=f.transferMedia(),h=`${f}`):h="detached MediaSource"}else h="detached media";if(!r){if(l)r=this.detachedData,this.log(`using detachedData: MediaSource ${ce(r)}`);else if(!this.detachedData||n.media===t){const f=this.playerQueue;f.length>1&&f.forEach(p=>{if(o&&p.interstitial.appendInPlace!==c){const y=p.interstitial;this.clearInterstitial(p.interstitial,null),y.appendInPlace=!1,y.appendInPlace&&this.warn(`Could not change append strategy for queued assets ${y}`)}}),this.hls.detachMedia(),this.detachedData={media:t}}}const u=r&&"mediaSource"in r&&((i=r.mediaSource)==null?void 0:i.readyState)!=="closed",d=u&&r?r:t;this.log(`${u?"transfering MediaSource":"attaching media"} to ${o?e:"Primary"} from ${h} (media.currentTime: ${t.currentTime})`);const g=this.schedule;if(d===r&&g){const f=o&&e.assetId===g.assetIdAtEnd;d.overrides={duration:g.duration,endOfStream:!o||f,cueRemoval:!o}}e.attachMedia(d)}onInterstitialCueEnter(){this.onTimeupdate()}checkStart(){const e=this.schedule,t=e?.events;if(!t||this.playbackDisabled||!this.media)return;this.bufferedPos===-1&&(this.bufferedPos=0);const s=this.timelinePos,i=this.effectivePlayingItem;if(s===-1){const r=this.hls.startPosition;if(this.log(Ts("checkStart",r)),this.timelinePos=r,t.length&&t[0].cue.pre){const n=e.findEventIndex(t[0].identifier);this.setSchedulePosition(n)}else if(r>=0||!this.primaryLive){const n=this.timelinePos=r>0?r:0,o=e.findItemIndexAtTime(n);this.setSchedulePosition(o)}}else if(i&&!this.playingItem){const r=e.findItemIndex(i);this.setSchedulePosition(r)}}advanceAssetBuffering(e,t){const s=e.event,i=s.findAssetIndex(t),r=Ei(s,i);if(!s.isAssetPastPlayoutLimit(r))this.bufferedToEvent(e,r);else if(this.schedule){var n;const o=(n=this.schedule.items)==null?void 0:n[this.findItemIndex(e)+1];o&&this.bufferedToItem(o)}}advanceAfterAssetEnded(e,t,s){const i=Ei(e,s);if(e.isAssetPastPlayoutLimit(i)){if(this.schedule){const r=this.schedule.items;if(r){const n=t+1,o=r.length;if(n>=o){this.setSchedulePosition(-1);return}const c=e.resumeTime;this.timelinePos=0?i[e]:null;this.log(`setSchedulePosition ${e}, ${t} (${r&&qe(r)}) pos: ${this.timelinePos}`);const n=this.waitingItem||this.playingItem,o=this.playingLastItem;if(this.isInterstitial(n)){const h=n.event,u=this.playingAsset,d=u?.identifier,g=d?this.getAssetPlayer(d):null;if(g&&d&&(!this.eventItemsMatch(n,r)||t!==void 0&&d!==h.assetList[t].identifier)){var c;const f=h.findAssetIndex(u);if(this.log(`INTERSTITIAL_ASSET_ENDED ${f+1}/${h.assetList.length} ${Ut(u)}`),this.endedAsset=u,this.playingAsset=null,this.hls.trigger(m.INTERSTITIAL_ASSET_ENDED,{asset:u,assetListIndex:f,event:h,schedule:i.slice(0),scheduleIndex:e,player:g}),n!==this.playingItem){this.itemsMatch(n,this.playingItem)&&!this.playingAsset&&this.advanceAfterAssetEnded(h,this.findItemIndex(this.playingItem),f);return}this.retreiveMediaSource(d,r),g.media&&!((c=this.detachedData)!=null&&c.mediaSource)&&g.detachMedia()}if(!this.eventItemsMatch(n,r)&&(this.endedItem=n,this.playingItem=null,this.log(`INTERSTITIAL_ENDED ${h} ${qe(n)}`),h.hasPlayed=!0,this.hls.trigger(m.INTERSTITIAL_ENDED,{event:h,schedule:i.slice(0),scheduleIndex:e}),h.cue.once)){var l;this.updateSchedule();const f=(l=this.schedule)==null?void 0:l.items;if(r&&f){const p=this.findItemIndex(r);this.advanceSchedule(p,f,t,n,o)}return}}this.advanceSchedule(e,i,t,n,o)}advanceSchedule(e,t,s,i,r){const n=this.schedule;if(!n)return;const o=t[e]||null,c=this.primaryMedia,l=this.playerQueue;if(l.length&&l.forEach(h=>{const u=h.interstitial,d=n.findEventIndex(u.identifier);(de+1)&&this.clearInterstitial(u,o)}),this.isInterstitial(o)){this.timelinePos=Math.min(Math.max(this.timelinePos,o.start),o.end);const h=o.event;if(s===void 0){s=n.findAssetIndex(h,this.timelinePos);const f=Ei(h,s-1);if(h.isAssetPastPlayoutLimit(f)||h.appendInPlace&&this.timelinePos===o.end){this.advanceAfterAssetEnded(h,e,s);return}s=f}const u=this.waitingItem;this.assetsBuffered(o,c)||this.setBufferingItem(o);let d=this.preloadAssets(h,s);if(this.eventItemsMatch(o,u||i)||(this.waitingItem=o,this.log(`INTERSTITIAL_STARTED ${qe(o)} ${h.appendInPlace?"append in place":""}`),this.hls.trigger(m.INTERSTITIAL_STARTED,{event:h,schedule:t.slice(0),scheduleIndex:e})),!h.assetListLoaded){this.log(`Waiting for ASSET-LIST to complete loading ${h}`);return}if(h.assetListLoader&&(h.assetListLoader.destroy(),h.assetListLoader=void 0),!c){this.log(`Waiting for attachMedia to start Interstitial ${h}`);return}this.waitingItem=this.endedItem=null,this.playingItem=o;const g=h.assetList[s];if(!g){this.advanceAfterAssetEnded(h,e,s||0);return}if(d||(d=this.getAssetPlayer(g.identifier)),d===null||d.destroyed){const f=h.assetList.length;this.warn(`asset ${s+1}/${f} player destroyed ${h}`),d=this.createAssetPlayer(h,g,s),d.loadSource()}if(!this.eventItemsMatch(o,this.bufferingItem)&&h.appendInPlace&&this.isAssetBuffered(g))return;this.startAssetPlayer(d,s,t,e,c),this.shouldPlay&&Mn(d.media)}else o?(this.resumePrimary(o,e,i),this.shouldPlay&&Mn(this.hls.media)):r&&this.isInterstitial(i)&&(this.endedItem=null,this.playingItem=i,i.event.appendInPlace||this.attachPrimary(n.durations.primary,null))}get playbackDisabled(){return this.hls.config.enableInterstitialPlayback===!1}get primaryDetails(){var e;return(e=this.mediaSelection)==null?void 0:e.main.details}get primaryLive(){var e;return!!((e=this.primaryDetails)!=null&&e.live)}resumePrimary(e,t,s){var i,r;if(this.playingItem=e,this.playingAsset=this.endedAsset=null,this.waitingItem=this.endedItem=null,this.bufferedToItem(e),this.log(`resuming ${qe(e)}`),!((i=this.detachedData)!=null&&i.mediaSource)){let o=this.timelinePos;(o=e.end)&&(o=this.getPrimaryResumption(e,t),this.log(Ts("resumePrimary",o)),this.timelinePos=o),this.attachPrimary(o,e)}if(!s)return;const n=(r=this.schedule)==null?void 0:r.items;n&&(this.log(`INTERSTITIALS_PRIMARY_RESUMED ${qe(e)}`),this.hls.trigger(m.INTERSTITIALS_PRIMARY_RESUMED,{schedule:n.slice(0),scheduleIndex:t}),this.checkBuffer())}getPrimaryResumption(e,t){const s=e.start;if(this.primaryLive){const i=this.primaryDetails;if(t===0)return this.hls.startPosition;if(i&&(si.edge))return this.hls.liveSyncPosition||-1}return s}isAssetBuffered(e){const t=this.getAssetPlayer(e.identifier);return t!=null&&t.hls?t.hls.bufferedToEnd:Q.bufferInfo(this.primaryMedia,this.timelinePos,0).end+1>=e.timelineStart+(e.duration||0)}attachPrimary(e,t,s){t?this.setBufferingItem(t):this.bufferingItem=this.playingItem,this.bufferingAsset=null;const i=this.primaryMedia;if(!i)return;const r=this.hls;r.media?this.checkBuffer():(this.transferMediaTo(r,i),s&&this.startLoadingPrimaryAt(e,s)),s||(this.log(Ts("attachPrimary",e)),this.timelinePos=e,this.startLoadingPrimaryAt(e,s))}startLoadingPrimaryAt(e,t){var s;const i=this.hls;!i.loadingEnabled||!i.media||Math.abs((((s=i.mainForwardBufferInfo)==null?void 0:s.start)||i.media.currentTime)-e)>.5?i.startLoad(e,t):i.bufferingEnabled||i.resumeBuffering()}onManifestLoading(){var e;this.stopLoad(),(e=this.schedule)==null||e.reset(),this.emptyPlayerQueue(),this.clearScheduleState(),this.shouldPlay=!1,this.bufferedPos=this.timelinePos=-1,this.mediaSelection=this.altSelection=this.manager=this.requiredTracks=null,this.hls.off(m.BUFFER_CODECS,this.onBufferCodecs,this),this.hls.on(m.BUFFER_CODECS,this.onBufferCodecs,this)}onLevelUpdated(e,t){if(t.level===-1||!this.schedule)return;const s=this.hls.levels[t.level];if(!s.details)return;const i=re(re({},this.mediaSelection||this.altSelection),{},{main:s});this.mediaSelection=i,this.schedule.parseInterstitialDateRanges(i,this.hls.config.interstitialAppendInPlace),!this.effectivePlayingItem&&this.schedule.items&&this.checkStart()}onAudioTrackUpdated(e,t){const s=this.hls.audioTracks[t.id],i=this.mediaSelection;if(!i){this.altSelection=re(re({},this.altSelection),{},{audio:s});return}const r=re(re({},i),{},{audio:s});this.mediaSelection=r}onSubtitleTrackUpdated(e,t){const s=this.hls.subtitleTracks[t.id],i=this.mediaSelection;if(!i){this.altSelection=re(re({},this.altSelection),{},{subtitles:s});return}const r=re(re({},i),{},{subtitles:s});this.mediaSelection=r}onAudioTrackSwitching(e,t){const s=Hr(t);this.playerQueue.forEach(({hls:i})=>i&&(i.setAudioOption(t)||i.setAudioOption(s)))}onSubtitleTrackSwitch(e,t){const s=Hr(t);this.playerQueue.forEach(({hls:i})=>i&&(i.setSubtitleOption(t)||t.id!==-1&&i.setSubtitleOption(s)))}onBufferCodecs(e,t){const s=t.tracks;s&&(this.requiredTracks=s)}onBufferAppended(e,t){this.checkBuffer()}onBufferFlushed(e,t){const s=this.playingItem;if(s&&!this.itemsMatch(s,this.bufferingItem)&&!this.isInterstitial(s)){const i=this.timelinePos;this.bufferedPos=i,this.checkBuffer()}}onBufferedToEnd(e){if(!this.schedule)return;const t=this.schedule.events;if(this.bufferedPos.25){e.event.assetList.forEach((r,n)=>{e.event.isAssetPastPlayoutLimit(n)&&this.clearAssetPlayer(r.identifier,null)});const s=e.end+.25,i=Q.bufferInfo(this.primaryMedia,s,0);(i.end>s||(i.nextStart||0)>s)&&(this.log(`trim buffered interstitial ${qe(e)} (was ${qe(t)})`),this.attachPrimary(s,null,!0),this.flushFrontBuffer(s))}}itemsMatch(e,t){return!!t&&(e===t||e.event&&t.event&&this.eventItemsMatch(e,t)||!e.event&&!t.event&&this.findItemIndex(e)===this.findItemIndex(t))}eventItemsMatch(e,t){var s;return!!t&&(e===t||e.event.identifier===((s=t.event)==null?void 0:s.identifier))}findItemIndex(e,t){return e&&this.schedule?this.schedule.findItemIndex(e,t):-1}updateSchedule(e=!1){var t;const s=this.mediaSelection;s&&((t=this.schedule)==null||t.updateSchedule(s,[],e))}checkBuffer(e){var t;const s=(t=this.schedule)==null?void 0:t.items;if(!s)return;const i=Q.bufferInfo(this.primaryMedia,this.timelinePos,0);e&&(this.bufferedPos=this.timelinePos),e||(e=i.len<1),this.updateBufferedPos(i.end,s,e)}updateBufferedPos(e,t,s){const i=this.schedule,r=this.bufferingItem;if(this.bufferedPos>e||!i)return;if(t.length===1&&this.itemsMatch(t[0],r)){this.bufferedPos=e;return}const n=this.playingItem,o=this.findItemIndex(n);let c=i.findItemIndexAtTime(e);if(this.bufferedPos=r.end||(l=d.event)!=null&&l.appendInPlace&&e+.01>=d.start)&&(c=u),this.isInterstitial(r)){const g=r.event;if(u-o>1&&g.appendInPlace===!1||g.assetList.length===0&&g.assetListLoader)return}if(this.bufferedPos=e,c>h&&c>o)this.bufferedToItem(d);else{const g=this.primaryDetails;this.primaryLive&&g&&e>g.edge-g.targetduration&&d.start{const r=this.getAssetPlayer(i.identifier);return!(r!=null&&r.bufferedInPlaceToEnd(t))})}setBufferingItem(e){const t=this.bufferingItem,s=this.schedule;if(!this.itemsMatch(e,t)&&s){const{items:i,events:r}=s;if(!i||!r)return t;const n=this.isInterstitial(e),o=this.getBufferingPlayer();this.bufferingItem=e,this.bufferedPos=Math.max(e.start,Math.min(e.end,this.timelinePos));const c=o?o.remaining:t?t.end-this.timelinePos:0;if(this.log(`INTERSTITIALS_BUFFERED_TO_BOUNDARY ${qe(e)}`+(t?` (${c.toFixed(2)} remaining)`:"")),!this.playbackDisabled)if(n){const l=s.findAssetIndex(e.event,this.bufferedPos);e.event.assetList.forEach((h,u)=>{const d=this.getAssetPlayer(h.identifier);d&&(u===l&&d.loadSource(),d.resumeBuffering())})}else this.hls.resumeBuffering(),this.playerQueue.forEach(l=>l.pauseBuffering());this.hls.trigger(m.INTERSTITIALS_BUFFERED_TO_BOUNDARY,{events:r.slice(0),schedule:i.slice(0),bufferingIndex:this.findItemIndex(e),playingIndex:this.findItemIndex(this.playingItem)})}else this.bufferingItem!==e&&(this.bufferingItem=e);return t}bufferedToItem(e,t=0){const s=this.setBufferingItem(e);if(!this.playbackDisabled){if(this.isInterstitial(e))this.bufferedToEvent(e,t);else if(s!==null){this.bufferingAsset=null;const i=this.detachedData;i?i.mediaSource?this.attachPrimary(e.start,e,!0):this.preloadPrimary(e):this.preloadPrimary(e)}}}preloadPrimary(e){const t=this.findItemIndex(e),s=this.getPrimaryResumption(e,t);this.startLoadingPrimaryAt(s)}bufferedToEvent(e,t){const s=e.event,i=s.assetList.length===0&&!s.assetListLoader,r=s.cue.once;if(i||!r){const n=this.preloadAssets(s,t);if(n!=null&&n.interstitial.appendInPlace){const o=this.primaryMedia;o&&this.bufferAssetPlayer(n,o)}}}preloadAssets(e,t){const s=e.assetUrl,i=e.assetList.length,r=i===0&&!e.assetListLoader,n=e.cue.once;if(r){const c=e.timelineStart;if(e.appendInPlace){var o;const d=this.playingItem;!this.isInterstitial(d)&&(d==null||(o=d.nextEvent)==null?void 0:o.identifier)===e.identifier&&this.flushFrontBuffer(c+.25)}let l,h=0;if(!this.playingItem&&this.primaryLive&&(h=this.hls.startPosition,h===-1&&(h=this.hls.liveSyncPosition||0)),h&&!(e.cue.pre||e.cue.post)){const d=h-c;d>0&&(l=Math.round(d*1e3)/1e3)}if(this.log(`Load interstitial asset ${t+1}/${s?1:i} ${e}${l?` live-start: ${h} start-offset: ${l}`:""}`),s)return this.createAsset(e,0,0,c,e.duration,s);const u=this.assetListLoader.loadAssetList(e,l);u&&(e.assetListLoader=u)}else if(!n&&i){for(let l=t;l{this.hls.trigger(m.BUFFER_FLUSHING,{startOffset:e,endOffset:1/0,type:i})})}getAssetPlayerQueueIndex(e){const t=this.playerQueue;for(let s=0;s1){const x=t.duration;x&&S{if(S.live){var x;const L=new Error(`Interstitials MUST be VOD assets ${e}`),R={fatal:!0,type:W.OTHER_ERROR,details:_.INTERSTITIAL_ASSET_ITEM_ERROR,error:L},I=((x=this.schedule)==null?void 0:x.findEventIndex(e.identifier))||-1;this.handleAssetItemError(R,e,I,s,L.message);return}const D=S.edge-S.fragmentStart,A=t.duration;(p||A===null||D>A)&&(p=!1,this.log(`Interstitial asset "${u}" duration change ${A} > ${D}`),t.duration=D,this.updateSchedule())};f.on(m.LEVEL_UPDATED,(S,{details:x})=>y(x)),f.on(m.LEVEL_PTS_UPDATED,(S,{details:x})=>y(x)),f.on(m.EVENT_CUE_ENTER,()=>this.onInterstitialCueEnter());const E=(S,x)=>{const D=this.getAssetPlayer(u);if(D&&x.tracks){D.off(m.BUFFER_CODECS,E),D.tracks=x.tracks;const A=this.primaryMedia;this.bufferingAsset===D.assetItem&&A&&!D.media&&this.bufferAssetPlayer(D,A)}};f.on(m.BUFFER_CODECS,E);const v=()=>{var S;const x=this.getAssetPlayer(u);if(this.log(`buffered to end of asset ${x}`),!x||!this.schedule)return;const D=this.schedule.findEventIndex(e.identifier),A=(S=this.schedule.items)==null?void 0:S[D];this.isInterstitial(A)&&this.advanceAssetBuffering(A,t)};f.on(m.BUFFERED_TO_END,v);const T=S=>()=>{if(!this.getAssetPlayer(u)||!this.schedule)return;this.shouldPlay=!0;const D=this.schedule.findEventIndex(e.identifier);this.advanceAfterAssetEnded(e,D,S)};return f.once(m.MEDIA_ENDED,T(s)),f.once(m.PLAYOUT_LIMIT_REACHED,T(1/0)),f.on(m.ERROR,(S,x)=>{if(!this.schedule)return;const D=this.getAssetPlayer(u);if(x.details===_.BUFFER_STALLED_ERROR){if(D!=null&&D.appendInPlace){this.handleInPlaceStall(e);return}this.onTimeupdate(),this.checkBuffer(!0);return}this.handleAssetItemError(x,e,this.schedule.findEventIndex(e.identifier),s,`Asset player error ${x.error} ${e}`)}),f.on(m.DESTROYING,()=>{if(!this.getAssetPlayer(u)||!this.schedule)return;const x=new Error(`Asset player destroyed unexpectedly ${u}`),D={fatal:!0,type:W.OTHER_ERROR,details:_.INTERSTITIAL_ASSET_ITEM_ERROR,error:x};this.handleAssetItemError(D,e,this.schedule.findEventIndex(e.identifier),s,x.message)}),this.log(`INTERSTITIAL_ASSET_PLAYER_CREATED ${Ut(t)}`),this.hls.trigger(m.INTERSTITIAL_ASSET_PLAYER_CREATED,{asset:t,assetListIndex:s,event:e,player:f}),f}clearInterstitial(e,t){this.clearAssetPlayers(e,t),e.reset()}clearAssetPlayers(e,t){e.assetList.forEach(s=>{this.clearAssetPlayer(s.identifier,t)})}resetAssetPlayer(e){const t=this.getAssetPlayerQueueIndex(e);if(t!==-1){this.log(`reset asset player "${e}" after error`);const s=this.playerQueue[t];this.transferMediaFromPlayer(s,null),s.resetDetails()}}clearAssetPlayer(e,t){const s=this.getAssetPlayerQueueIndex(e);if(s!==-1){const i=this.playerQueue[s];this.log(`clear ${i} toSegment: ${t&&qe(t)}`),this.transferMediaFromPlayer(i,t),this.playerQueue.splice(s,1),i.destroy()}}emptyPlayerQueue(){let e;for(;e=this.playerQueue.pop();)e.destroy();this.playerQueue=[]}startAssetPlayer(e,t,s,i,r){const{interstitial:n,assetItem:o,assetId:c}=e,l=n.assetList.length,h=this.playingAsset;this.endedAsset=null,this.playingAsset=o,(!h||h.identifier!==c)&&(h&&(this.clearAssetPlayer(h.identifier,s[i]),delete h.error),this.log(`INTERSTITIAL_ASSET_STARTED ${t+1}/${l} ${Ut(o)}`),this.hls.trigger(m.INTERSTITIAL_ASSET_STARTED,{asset:o,assetListIndex:t,event:n,schedule:s.slice(0),scheduleIndex:i,player:e})),this.bufferAssetPlayer(e,r)}bufferAssetPlayer(e,t){var s,i;if(!this.schedule)return;const{interstitial:r,assetItem:n}=e,o=this.schedule.findEventIndex(r.identifier),c=(s=this.schedule.items)==null?void 0:s[o];if(!c)return;e.loadSource(),this.setBufferingItem(c),this.bufferingAsset=n;const l=this.getBufferingPlayer();if(l===e)return;const h=r.appendInPlace;if(h&&l?.interstitial.appendInPlace===!1)return;const u=l?.tracks||((i=this.detachedData)==null?void 0:i.tracks)||this.requiredTracks;if(h&&n!==this.playingAsset){if(!e.tracks){this.log(`Waiting for track info before buffering ${e}`);return}if(u&&!ra(u,e.tracks)){const d=new Error(`Asset ${Ut(n)} SourceBuffer tracks ('${Object.keys(e.tracks)}') are not compatible with primary content tracks ('${Object.keys(u)}')`),g={fatal:!0,type:W.OTHER_ERROR,details:_.INTERSTITIAL_ASSET_ITEM_ERROR,error:d},f=r.findAssetIndex(n);this.handleAssetItemError(g,r,o,f,d.message);return}}this.transferMediaTo(e,t)}handleInPlaceStall(e){const t=this.schedule,s=this.primaryMedia;if(!t||!s)return;const i=s.currentTime,r=t.findAssetIndex(e,i),n=e.assetList[r];if(n){const o=this.getAssetPlayer(n.identifier);if(o){const c=o.currentTime||i-n.timelineStart,l=o.duration-c;if(this.warn(`Stalled at ${c} of ${c+l} in ${o} ${e} (media.currentTime: ${i})`),c&&(l/s.playbackRate<.5||o.bufferedInPlaceToEnd(s))&&o.hls){const h=t.findEventIndex(e.identifier);this.advanceAfterAssetEnded(e,h,r)}}}}advanceInPlace(e){const t=this.primaryMedia;t&&t.currentTime!p.error))t.error=f;else for(let p=i;p{const E=parseFloat(p.DURATION);this.createAsset(r,y,h,c+h,E,p.URI),h+=E}),r.duration=h,this.log(`Loaded asset-list with duration: ${h} (was: ${l}) ${r}`);const u=this.waitingItem,d=u?.event.identifier===n;this.updateSchedule();const g=(i=this.bufferingItem)==null?void 0:i.event;if(d){var f;const p=this.schedule.findEventIndex(n),y=(f=this.schedule.items)==null?void 0:f[p];if(y){if(!this.playingItem&&this.timelinePos>y.end&&this.schedule.findItemIndexAtTime(this.timelinePos)!==p){r.error=new Error(`Interstitial ${o.length?"no longer within playback range":"asset-list is empty"} ${this.timelinePos} ${r}`),this.log(r.error.message),this.updateSchedule(!0),this.primaryFallback(r);return}this.setBufferingItem(y)}this.setSchedulePosition(p)}else if(g?.identifier===n){const p=r.assetList[0];if(p){const y=this.getAssetPlayer(p.identifier);if(g.appendInPlace){const E=this.primaryMedia;y&&E&&this.bufferAssetPlayer(y,E)}else y&&y.loadSource()}}}onError(e,t){if(this.schedule)switch(t.details){case _.ASSET_LIST_PARSING_ERROR:case _.ASSET_LIST_LOAD_ERROR:case _.ASSET_LIST_LOAD_TIMEOUT:{const s=t.interstitial;s&&(this.updateSchedule(!0),this.primaryFallback(s));break}case _.BUFFER_STALLED_ERROR:{const s=this.endedItem||this.waitingItem||this.playingItem;if(this.isInterstitial(s)&&s.event.appendInPlace){this.handleInPlaceStall(s.event);return}this.log(`Primary player stall @${this.timelinePos} bufferedPos: ${this.bufferedPos}`),this.onTimeupdate(),this.checkBuffer(!0);break}}}}const Nn=500;class vd extends ur{constructor(e,t,s){super(e,t,s,"subtitle-stream-controller",Y.SUBTITLE),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}registerListeners(){super.registerListeners();const{hls:e}=this;e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(m.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(m.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(m.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this)}unregisterListeners(){super.unregisterListeners();const{hls:e}=this;e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(m.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(m.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(m.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this)}startLoad(e,t){this.stopLoad(),this.state=P.IDLE,this.setInterval(Nn),this.nextLoadPosition=this.lastCurrentTime=e+this.timelineOffset,this.startPosition=t?-1:e,this.tick()}onManifestLoading(){super.onManifestLoading(),this.mainDetails=null}onMediaDetaching(e,t){this.tracksBuffered=[],super.onMediaDetaching(e,t)}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:s,success:i}=t;if(this.fragContextChanged(s)||(Te(s)&&(this.fragPrevious=s),this.state=P.IDLE),!i)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let n;const o=s.start;for(let l=0;l=r[l].start&&o<=r[l].end){n=r[l];break}const c=s.start+s.duration;n?n.end=c:(n={start:o,end:c},r.push(n)),this.fragmentTracker.fragBuffered(s),this.fragBufferedComplete(s,null),this.media&&this.tick()}onBufferFlushing(e,t){const{startOffset:s,endOffset:i}=t;if(s===0&&i!==Number.POSITIVE_INFINITY){const r=i-1;if(r<=0)return;t.endOffsetSubtitles=Math.max(0,r),this.tracksBuffered.forEach(n=>{for(let o=0;onew rs(s));return}this.tracksBuffered=[],this.levels=t.map(s=>{const i=new rs(s);return this.tracksBuffered[i.id]=[],i}),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Y.SUBTITLE),this.fragPrevious=null,this.mediaBuffer=null}onSubtitleTrackSwitch(e,t){var s;if(this.currentTrackId=t.id,!((s=this.levels)!=null&&s.length)||this.currentTrackId===-1){this.clearInterval();return}const i=this.levels[this.currentTrackId];i!=null&&i.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,i&&this.state!==P.STOPPED&&this.setInterval(Nn)}onSubtitleTrackLoaded(e,t){var s;const{currentTrackId:i,levels:r}=this,{details:n,id:o}=t;if(!r){this.warn(`Subtitle tracks were reset while loading level ${o}`);return}const c=r[o];if(o>=r.length||!c)return;this.log(`Subtitle track ${o} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||(s=c.details)!=null&&s.live){if(n.deltaUpdateFailed)return;const u=this.mainDetails;if(!u){this.startFragRequested=!1;return}const d=u.fragments[0];if(!c.details)n.hasProgramDateTime&&u.hasProgramDateTime?(Ys(n,u),l=n.fragmentStart):d&&(l=d.start,$i(n,l));else{var h;l=this.alignPlaylists(n,c.details,(h=this.levelLastLoaded)==null?void 0:h.details),l===0&&d&&(l=d.start,$i(n,l))}u&&!this.startFragRequested&&this.setStartPosition(u,l)}c.details=n,this.levelLastLoaded=c,o===i&&(this.hls.trigger(m.SUBTITLE_TRACK_UPDATED,{details:n,id:o,groupId:t.groupId}),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===P.IDLE&&(Pt(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),c.details=void 0)))}_handleFragmentLoadComplete(e){const{frag:t,payload:s}=e,i=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&s&&s.byteLength>0&&i!=null&&i.key&&i.iv&&Kt(i.method)){const n=performance.now();this.decrypter.decrypt(new Uint8Array(s),i.key.buffer,i.iv.buffer,cr(i.method)).catch(o=>{throw r.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_DECRYPT_ERROR,fatal:!1,error:o,reason:o.message,frag:t}),o}).then(o=>{const c=performance.now();r.trigger(m.FRAG_DECRYPTED,{frag:t,payload:o,stats:{tstart:n,tdecrypt:c}})}).catch(o=>{this.warn(`${o.name}: ${o.message}`),this.state=P.IDLE})}}doTick(){if(!this.media){this.state=P.IDLE;return}if(this.state===P.IDLE){const{currentTrackId:e,levels:t}=this,s=t?.[e];if(!s||!t.length||!s.details||this.waitForLive(s))return;const{config:i}=this,r=this.getLoadPosition(),n=Q.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,i.maxBufferHole),{end:o,len:c}=n,l=s.details,h=this.hls.maxBufferLength+l.levelTargetDuration;if(c>h)return;const u=l.fragments,d=u.length,g=l.edge;let f=null;const p=this.fragPrevious;if(og-v?0:v;f=Pt(p,u,Math.max(u[0].start,o),T),!f&&p&&p.start{if(i=i>>>0,i>r-1)throw new DOMException(`Failed to execute '${s}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${r})`);return e[i][s]};this.buffered={get length(){return e.length},end(s){return t("end",s,e.length)},start(s){return t("start",s,e.length)}}}}const Sd={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Io=a=>String.fromCharCode(Sd[a]||a),je=15,ct=100,xd={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},Ad={17:2,18:4,21:6,22:8,23:10,19:13,20:15},Id={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Ld={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Rd=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class bd{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const s=typeof t=="function"?t():t;ne.log(`${this.time} [${e}] ${s}`)}}}const _t=function(e){const t=[];for(let s=0;sct&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=ct)}moveCursor(e){const t=this.pos+e;if(e>1)for(let s=this.pos+1;s=144&&this.backSpace();const t=Io(e);if(this.pos>=ct){this.logger.log(0,()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!");return}this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1)}clearFromPos(e){let t;for(t=e;t"pacData = "+ce(e));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+ce(e)),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(this.nrRollUpRows===null){this.logger.log(3,"roll_up but nrRollUpRows not set yet");return}this.logger.log(1,()=>this.getDisplayText());const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let s="",i=-1;for(let r=0;r0&&(e?s="["+t.join(" | ")+"]":s=t.join(` -`)),s}getTextAndFormat(){return this.rows}}class Bn{constructor(e,t,s){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new vi(s),this.nonDisplayedMemory=new vi(s),this.lastOutputScreen=new vi(s),this.currRollUpRow=this.displayedMemory.rows[je-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=s}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[je-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,()=>"MODE="+e),this.mode==="MODE_POP-ON"?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),this.mode!=="MODE_ROLL-UP"&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let s=0;st+": "+this.writeScreen.getDisplayText(!0)),(this.mode==="MODE_PAINT-ON"||this.mode==="MODE_ROLL-UP")&&(this.logger.log(1,()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),this.mode!=="MODE_TEXT"&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),this.mode==="MODE_POP-ON"){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,()=>"DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2===1,t.italics=e>=46,t.italics)t.foreground="white";else{const s=Math.floor(e/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=i[s]}this.logger.log(2,"MIDROW: "+ce(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;t!==null&&this.outputFilter&&(this.cueStartTime===null&&!this.displayedMemory.isEmpty()?this.cueStartTime=t:this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t),this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Un{constructor(e,t,s){this.channels=void 0,this.currentChannel=0,this.cmdHistory=Pd(),this.logger=void 0;const i=this.logger=new bd;this.channels=[null,new Bn(e,t,i),new Bn(e+1,s,i)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let s=0;s"["+_t([t[s],t[s+1]])+"] -> ("+_t([i,r])+")");const c=this.cmdHistory;if(i>=16&&i<=31){if(Cd(i,r,c)){Ss(null,null,c),this.logger.log(3,()=>"Repeated command ("+_t([i,r])+") is dropped");continue}Ss(i,r,this.cmdHistory),n=this.parseCmd(i,r),n||(n=this.parseMidrow(i,r)),n||(n=this.parsePAC(i,r)),n||(n=this.parseBackgroundAttributes(i,r))}else Ss(null,null,c);if(!n&&(o=this.parseChars(i,r),o)){const h=this.currentChannel;h&&h>0?this.channels[h].insertChars(o):this.logger.log(2,"No channel found yet. TEXT-MODE?")}!n&&!o&&this.logger.log(2,()=>"Couldn't parse cleaned data "+_t([i,r])+" orig: "+_t([t[s],t[s+1]]))}}parseCmd(e,t){const s=(e===20||e===28||e===21||e===29)&&t>=32&&t<=47,i=(e===23||e===31)&&t>=33&&t<=35;if(!(s||i))return!1;const r=e===20||e===21||e===23?1:2,n=this.channels[r];return e===20||e===21||e===28||e===29?t===32?n.ccRCL():t===33?n.ccBS():t===34?n.ccAOF():t===35?n.ccAON():t===36?n.ccDER():t===37?n.ccRU(2):t===38?n.ccRU(3):t===39?n.ccRU(4):t===40?n.ccFON():t===41?n.ccRDC():t===42?n.ccTR():t===43?n.ccRTD():t===44?n.ccEDM():t===45?n.ccCR():t===46?n.ccENM():t===47&&n.ccEOC():n.ccTO(t-32),this.currentChannel=r,!0}parseMidrow(e,t){let s=0;if((e===17||e===25)&&t>=32&&t<=47){if(e===17?s=1:s=2,s!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const i=this.channels[s];return i?(i.ccMIDROW(t),this.logger.log(3,()=>"MIDROW ("+_t([e,t])+")"),!0):!1}return!1}parsePAC(e,t){let s;const i=(e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127,r=(e===16||e===24)&&t>=64&&t<=95;if(!(i||r))return!1;const n=e<=23?1:2;t>=64&&t<=95?s=n===1?xd[e]:Id[e]:s=n===1?Ad[e]:Ld[e];const o=this.channels[n];return o?(o.setPAC(this.interpretPAC(s,t)),this.currentChannel=n,!0):!1}interpretPAC(e,t){let s;const i={color:null,italics:!1,indent:null,underline:!1,row:e};return t>95?s=t-96:s=t-64,i.underline=(s&1)===1,s<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(s/2)]:s<=15?(i.italics=!0,i.color="white"):i.indent=Math.floor((s-16)/2)*4,i}parseChars(e,t){let s,i=null,r=null;if(e>=25?(s=2,r=e-8):(s=1,r=e),r>=17&&r<=19){let n;r===17?n=t+80:r===18?n=t+112:n=t+144,this.logger.log(2,()=>"Special char '"+Io(n)+"' in channel "+s),i=[n]}else e>=32&&e<=127&&(i=t===0?[e]:[e,t]);return i&&this.logger.log(3,()=>"Char codes = "+_t(i).join(",")),i}parseBackgroundAttributes(e,t){const s=(e===16||e===24)&&t>=32&&t<=47,i=(e===23||e===31)&&t>=45&&t<=47;if(!(s||i))return!1;let r;const n={};e===16||e===24?(r=Math.floor((t-32)/2),n.background=Rd[r],t%2===1&&(n.background=n.background+"_semi")):t===45?n.background="transparent":(n.foreground="black",t===47&&(n.underline=!0));const o=e<=23?1:2;return this.channels[o].setBkgData(n),!0}reset(){for(let e=0;e100)throw new Error("Position must be between 0 and 100.");D=I,this.hasBeenReset=!0}})),Object.defineProperty(h,"positionAlign",r({},u,{get:function(){return A},set:function(I){const C=i(I);if(!C)throw new SyntaxError("An invalid or illegal string was specified.");A=C,this.hasBeenReset=!0}})),Object.defineProperty(h,"size",r({},u,{get:function(){return L},set:function(I){if(I<0||I>100)throw new Error("Size must be between 0 and 100.");L=I,this.hasBeenReset=!0}})),Object.defineProperty(h,"align",r({},u,{get:function(){return R},set:function(I){const C=i(I);if(!C)throw new SyntaxError("An invalid or illegal string was specified.");R=C,this.hasBeenReset=!0}})),h.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n})();class kd{decode(e,t){if(!e)return"";if(typeof e!="string")throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Ro(a){function e(s,i,r,n){return(s|0)*3600+(i|0)*60+(r|0)+parseFloat(n||0)}const t=a.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return t?parseFloat(t[2])>59?e(t[2],t[3],0,t[4]):e(t[1],t[2],t[3],t[4]):null}class wd{constructor(){this.values=Object.create(null)}set(e,t){!this.get(e)&&t!==""&&(this.values[e]=t)}get(e,t,s){return s?this.has(e)?this.values[e]:t[s]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,s){for(let i=0;i=0&&s<=100)return this.set(e,s),!0}return!1}}function bo(a,e,t,s){const i=s?a.split(s):[a];for(const r in i){if(typeof i[r]!="string")continue;const n=i[r].split(t);if(n.length!==2)continue;const o=n[0],c=n[1];e(o,c)}}const ji=new Ar(0,0,""),xs=ji.align==="middle"?"middle":"center";function Od(a,e,t){const s=a;function i(){const o=Ro(a);if(o===null)throw new Error("Malformed timestamp: "+s);return a=a.replace(/^[^\sa-zA-Z-]+/,""),o}function r(o,c){const l=new wd;bo(o,function(d,g){let f;switch(d){case"region":for(let p=t.length-1;p>=0;p--)if(t[p].id===g){l.set(d,t[p].region);break}break;case"vertical":l.alt(d,g,["rl","lr"]);break;case"line":f=g.split(","),l.integer(d,f[0]),l.percent(d,f[0])&&l.set("snapToLines",!1),l.alt(d,f[0],["auto"]),f.length===2&&l.alt("lineAlign",f[1],["start",xs,"end"]);break;case"position":f=g.split(","),l.percent(d,f[0]),f.length===2&&l.alt("positionAlign",f[1],["start",xs,"end","line-left","line-right","auto"]);break;case"size":l.percent(d,g);break;case"align":l.alt(d,g,["start",xs,"end","left","right"]);break}},/:/,/\s/),c.region=l.get("region",null),c.vertical=l.get("vertical","");let h=l.get("line","auto");h==="auto"&&ji.line===-1&&(h=-1),c.line=h,c.lineAlign=l.get("lineAlign","start"),c.snapToLines=l.get("snapToLines",!0),c.size=l.get("size",100),c.align=l.get("align",xs);let u=l.get("position","auto");u==="auto"&&ji.position===50&&(u=c.align==="start"||c.align==="left"?0:c.align==="end"||c.align==="right"?100:50),c.position=u}function n(){a=a.replace(/^\s+/,"")}if(n(),e.startTime=i(),n(),a.slice(0,3)!=="-->")throw new Error("Malformed time stamp (time stamps must be separated by '-->'): "+s);a=a.slice(3),n(),e.endTime=i(),n(),r(a,e)}function _o(a){return a.replace(//gi,` +transfer tracks: ${ce(i,(c,l)=>c==="initSegment"?void 0:l)}}`),!ra(i,s)){t.mediaSource=null,t.tracks=void 0;const c=e.currentTime,l=this.details,h=Math.max(c,l?.fragments[0].start||0);if(h-c>1){this.log(`attachTransferred: waiting for playback to reach new tracks start time ${c} -> ${h}`);return}this.warn(`attachTransferred: resetting MediaSource for incompatible tracks ("${Object.keys(i)}"->"${Object.keys(s)}") start time: ${h} currentTime: ${c}`),this.onMediaDetaching(m.MEDIA_DETACHING,{}),this.onMediaAttaching(m.MEDIA_ATTACHING,t),e.currentTime=h;return}this.transferData=void 0,r.forEach(c=>{const l=c,h=i[l];if(h){const u=h.buffer;if(u){const d=this.fragmentTracker,g=h.id;if(d.hasFragments(g)||d.hasParts(g)){const y=Q.getBuffered(u);d.detectEvictedFragments(l,y,g,null,!0)}const f=pi(l),p=[l,u];this.sourceBuffers[f]=p,u.updating&&this.operationQueue&&this.operationQueue.prependBlocker(l),this.trackSourceBuffer(l,h)}}}),o(),this.bufferCreated()}else this.log("attachTransferred: MediaSource w/o SourceBuffers"),o()}get mediaSourceOpenOrEnded(){var e;const t=(e=this.mediaSource)==null?void 0:e.readyState;return t==="open"||t==="ended"}onMediaDetaching(e,t){const s=!!t.transferMedia;this.transferData=this.overrides=void 0;const{media:i,mediaSource:r,_objectUrl:n}=this;if(r){if(this.log(`media source ${s?"transferring":"detaching"}`),s)this.sourceBuffers.forEach(([o])=>{o&&this.removeBuffer(o)}),this.resetQueue();else{if(this.mediaSourceOpenOrEnded){const o=r.readyState==="open";try{const c=r.sourceBuffers;for(let l=c.length;l--;)o&&c[l].abort(),r.removeSourceBuffer(c[l]);o&&r.endOfStream()}catch(c){this.warn(`onMediaDetaching: ${c.message} while calling endOfStream`)}}this.sourceBufferCount&&this.onBufferReset()}r.removeEventListener("sourceopen",this._onMediaSourceOpen),r.removeEventListener("sourceended",this._onMediaSourceEnded),r.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(r.removeEventListener("startstreaming",this._onStartStreaming),r.removeEventListener("endstreaming",this._onEndStreaming)),this.mediaSource=null,this._objectUrl=null}i&&(i.removeEventListener("emptied",this._onMediaEmptied),s||(n&&self.URL.revokeObjectURL(n),this.mediaSrc===n?(i.removeAttribute("src"),this.appendSource&&Dn(i),i.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.media=null),this.hls.trigger(m.MEDIA_DETACHED,t)}onBufferReset(){this.sourceBuffers.forEach(([e])=>{e&&this.resetBuffer(e)}),this.initTracks()}resetBuffer(e){var t;const s=(t=this.tracks[e])==null?void 0:t.buffer;if(this.removeBuffer(e),s)try{var i;(i=this.mediaSource)!=null&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(s)}catch(r){this.warn(`onBufferReset ${e}`,r)}delete this.tracks[e]}removeBuffer(e){this.removeBufferListeners(e),this.sourceBuffers[pi(e)]=[null,null];const t=this.tracks[e];t&&(t.buffer=void 0)}resetQueue(){this.operationQueue&&this.operationQueue.destroy(),this.operationQueue=new ru(this.tracks)}onBufferCodecs(e,t){var s;const i=this.tracks,r=Object.keys(t);this.log(`BUFFER_CODECS: "${r}" (current SB count ${this.sourceBufferCount})`);const n="audiovideo"in t&&(i.audio||i.video)||i.audiovideo&&("audio"in t||"video"in t),o=!n&&this.sourceBufferCount&&this.media&&r.some(c=>!i[c]);if(n||o){this.warn(`Unsupported transition between "${Object.keys(i)}" and "${r}" SourceBuffers`);return}r.forEach(c=>{var l,h;const u=t[c],{id:d,codec:g,levelCodec:f,container:p,metadata:y,supplemental:E}=u;let v=i[c];const T=(l=this.transferData)==null||(l=l.tracks)==null?void 0:l[c],S=T!=null&&T.buffer?T:v,x=S?.pendingCodec||S?.codec,D=S?.levelCodec;v||(v=i[c]={buffer:void 0,listeners:[],codec:g,supplemental:E,container:p,levelCodec:f,metadata:y,id:d});const A=bs(x,D),L=A?.replace(_n,"$1");let R=bs(g,f);const I=(h=R)==null?void 0:h.replace(_n,"$1");R&&A&&L!==I&&(c.slice(0,5)==="audio"&&(R=Bs(R,this.appendSource)),this.log(`switching codec ${x} to ${R}`),R!==(v.pendingCodec||v.codec)&&(v.pendingCodec=R),v.container=p,this.appendChangeType(c,p,R))}),(this.tracksReady||this.sourceBufferCount)&&(t.tracks=this.sourceBufferTracks),!this.sourceBufferCount&&(this.bufferCodecEventsTotal>1&&!this.tracks.video&&!t.video&&((s=t.audio)==null?void 0:s.id)==="main"&&(this.log("Main audio-only"),this.bufferCodecEventsTotal=1),this.mediaSourceOpenOrEnded&&this.checkPendingTracks())}get sourceBufferTracks(){return Object.keys(this.tracks).reduce((e,t)=>{const s=this.tracks[t];return e[t]={id:s.id,container:s.container,codec:s.codec,levelCodec:s.levelCodec},e},{})}appendChangeType(e,t,s){const i=`${t};codecs=${s}`,r={label:`change-type=${i}`,execute:()=>{const n=this.tracks[e];if(n){const o=n.buffer;o!=null&&o.changeType&&(this.log(`changing ${e} sourceBuffer type to ${i}`),o.changeType(i),n.codec=s,n.container=t)}this.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:n=>{this.warn(`Failed to change ${e} SourceBuffer type`,n)}};this.append(r,e,this.isPending(this.tracks[e]))}blockAudio(e){var t;const s=e.start,i=s+e.duration*.05;if(((t=this.fragmentTracker.getAppendedFrag(s,Y.MAIN))==null?void 0:t.gap)===!0)return;const n={label:"block-audio",execute:()=>{var o;const c=this.tracks.video;(this.lastVideoAppendEnd>i||c!=null&&c.buffer&&Q.isBuffered(c.buffer,i)||((o=this.fragmentTracker.getAppendedFrag(i,Y.MAIN))==null?void 0:o.gap)===!0)&&(this.blockedAudioAppend=null,this.shiftAndExecuteNext("audio"))},onStart:()=>{},onComplete:()=>{},onError:o=>{this.warn("Error executing block-audio operation",o)}};this.blockedAudioAppend={op:n,frag:e},this.append(n,"audio",!0)}unblockAudio(){const{blockedAudioAppend:e,operationQueue:t}=this;e&&t&&(this.blockedAudioAppend=null,t.unblockAudio(e.op))}onBufferAppending(e,t){const{tracks:s}=this,{data:i,type:r,parent:n,frag:o,part:c,chunkMeta:l,offset:h}=t,u=l.buffering[r],{sn:d,cc:g}=o,f=self.performance.now();u.start=f;const p=o.stats.buffering,y=c?c.stats.buffering:null;p.start===0&&(p.start=f),y&&y.start===0&&(y.start=f);const E=s.audio;let v=!1;r==="audio"&&E?.container==="audio/mpeg"&&(v=!this.lastMpegAudioChunk||l.id===1||this.lastMpegAudioChunk.sn!==l.sn,this.lastMpegAudioChunk=l);const T=s.video,S=T?.buffer;if(S&&d!=="initSegment"){const A=c||o,L=this.blockedAudioAppend;if(r==="audio"&&n!=="main"&&!this.blockedAudioAppend&&!(T.ending||T.ended)){const I=A.start+A.duration*.05,C=S.buffered,$=this.currentOp("video");!C.length&&!$?this.blockAudio(A):!$&&!Q.isBuffered(S,I)&&this.lastVideoAppendEndI||R{var A;u.executeStart=self.performance.now();const L=(A=this.tracks[r])==null?void 0:A.buffer;L&&(v?this.updateTimestampOffset(L,x,.1,r,d,g):h!==void 0&&V(h)&&this.updateTimestampOffset(L,h,1e-6,r,d,g)),this.appendExecutor(i,r)},onStart:()=>{},onComplete:()=>{const A=self.performance.now();u.executeEnd=u.end=A,p.first===0&&(p.first=A),y&&y.first===0&&(y.first=A);const L={};this.sourceBuffers.forEach(([R,I])=>{R&&(L[R]=Q.getBuffered(I))}),this.appendErrors[r]=0,r==="audio"||r==="video"?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(m.BUFFER_APPENDED,{type:r,frag:o,part:c,chunkMeta:l,parent:o.type,timeRanges:L})},onError:A=>{var L;const R={type:W.MEDIA_ERROR,parent:o.type,details:_.BUFFER_APPEND_ERROR,sourceBufferName:r,frag:o,part:c,chunkMeta:l,error:A,err:A,fatal:!1},I=(L=this.media)==null?void 0:L.error;if(A.code===DOMException.QUOTA_EXCEEDED_ERR||A.name=="QuotaExceededError"||"quota"in A)R.details=_.BUFFER_FULL_ERROR;else if(A.code===DOMException.INVALID_STATE_ERR&&this.mediaSourceOpenOrEnded&&!I)R.errorAction=Gt(!0);else if(A.name===lo&&this.sourceBufferCount===0)R.errorAction=Gt(!0);else{const C=++this.appendErrors[r];this.warn(`Failed ${C}/${this.hls.config.appendErrorMaxRetry} times to append segment in "${r}" sourceBuffer (${I||"no media error"})`),(C>=this.hls.config.appendErrorMaxRetry||I)&&(R.fatal=!0)}this.hls.trigger(m.ERROR,R)}};this.log(`queuing "${r}" append sn: ${d}${c?" p: "+c.index:""} of ${o.type===Y.MAIN?"level":"track"} ${o.level} cc: ${g}`),this.append(D,r,this.isPending(this.tracks[r]))}getFlushOp(e,t,s){return this.log(`queuing "${e}" remove ${t}-${s}`),{label:"remove",execute:()=>{this.removeExecutor(e,t,s)},onStart:()=>{},onComplete:()=>{this.hls.trigger(m.BUFFER_FLUSHED,{type:e})},onError:i=>{this.warn(`Failed to remove ${t}-${s} from "${e}" SourceBuffer`,i)}}}onBufferFlushing(e,t){const{type:s,startOffset:i,endOffset:r}=t;s?this.append(this.getFlushOp(s,i,r),s):this.sourceBuffers.forEach(([n])=>{n&&this.append(this.getFlushOp(n,i,r),n)})}onFragParsed(e,t){const{frag:s,part:i}=t,r=[],n=i?i.elementaryStreams:s.elementaryStreams;n[le.AUDIOVIDEO]?r.push("audiovideo"):(n[le.AUDIO]&&r.push("audio"),n[le.VIDEO]&&r.push("video"));const o=()=>{const c=self.performance.now();s.stats.buffering.end=c,i&&(i.stats.buffering.end=c);const l=i?i.stats:s.stats;this.hls.trigger(m.FRAG_BUFFERED,{frag:s,part:i,stats:l,id:s.type})};r.length===0&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${s.type} level: ${s.level} sn: ${s.sn}`),this.blockBuffers(o,r).catch(c=>{this.warn(`Fragment buffered callback ${c}`),this.stepOperationQueue(this.sourceBufferTypes)})}onFragChanged(e,t){this.trimBuffers()}get bufferedToEnd(){return this.sourceBufferCount>0&&!this.sourceBuffers.some(([e])=>{if(e){const t=this.tracks[e];if(t)return!t.ended||t.ending}return!1})}onBufferEos(e,t){var s;this.sourceBuffers.forEach(([n])=>{if(n){const o=this.tracks[n];(!t.type||t.type===n)&&(o.ending=!0,o.ended||(o.ended=!0,this.log(`${n} buffer reached EOS`)))}});const i=((s=this.overrides)==null?void 0:s.endOfStream)!==!1;this.sourceBufferCount>0&&!this.sourceBuffers.some(([n])=>{var o;return n&&!((o=this.tracks[n])!=null&&o.ended)})?i?(this.log("Queueing EOS"),this.blockUntilOpen(()=>{this.tracksEnded();const{mediaSource:n}=this;if(!n||n.readyState!=="open"){n&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${n.readyState}`);return}this.log("Calling mediaSource.endOfStream()"),n.endOfStream(),this.hls.trigger(m.BUFFERED_TO_END,void 0)})):(this.tracksEnded(),this.hls.trigger(m.BUFFERED_TO_END,void 0)):t.type==="video"&&this.unblockAudio()}tracksEnded(){this.sourceBuffers.forEach(([e])=>{if(e!==null){const t=this.tracks[e];t&&(t.ending=!1)}})}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.updateDuration())}updateDuration(){this.blockUntilOpen(()=>{const e=this.getDurationAndRange();e&&this.updateMediaSource(e)})}onError(e,t){if(t.details===_.BUFFER_APPEND_ERROR&&t.frag){var s;const i=(s=t.errorAction)==null?void 0:s.nextAutoLevel;V(i)&&i!==t.frag.level&&this.resetAppendErrors()}}resetAppendErrors(){this.appendErrors={audio:0,video:0,audiovideo:0}}trimBuffers(){const{hls:e,details:t,media:s}=this;if(!s||t===null||!this.sourceBufferCount)return;const i=e.config,r=s.currentTime,n=t.levelTargetDuration,o=t.live&&i.liveBackBufferLength!==null?i.liveBackBufferLength:i.backBufferLength;if(V(o)&&o>=0){const l=Math.max(o,n),h=Math.floor(r/n)*n-l;this.flushBackBuffer(r,n,h)}const c=i.frontBufferFlushThreshold;if(V(c)&&c>0){const l=Math.max(i.maxBufferLength,c),h=Math.max(l,n),u=Math.floor(r/n)*n+h;this.flushFrontBuffer(r,n,u)}}flushBackBuffer(e,t,s){this.sourceBuffers.forEach(([i,r])=>{if(r){const o=Q.getBuffered(r);if(o.length>0&&s>o.start(0)){var n;this.hls.trigger(m.BACK_BUFFER_REACHED,{bufferEnd:s});const c=this.tracks[i];if((n=this.details)!=null&&n.live)this.hls.trigger(m.LIVE_BACK_BUFFER_REACHED,{bufferEnd:s});else if(c!=null&&c.ended){this.log(`Cannot flush ${i} back buffer while SourceBuffer is in ended state`);return}this.hls.trigger(m.BUFFER_FLUSHING,{startOffset:0,endOffset:s,type:i})}}})}flushFrontBuffer(e,t,s){this.sourceBuffers.forEach(([i,r])=>{if(r){const n=Q.getBuffered(r),o=n.length;if(o<2)return;const c=n.start(o-1),l=n.end(o-1);if(s>c||e>=c&&e<=l)return;this.hls.trigger(m.BUFFER_FLUSHING,{startOffset:c,endOffset:1/0,type:i})}})}getDurationAndRange(){var e;const{details:t,mediaSource:s}=this;if(!t||!this.media||s?.readyState!=="open")return null;const i=t.edge;if(t.live&&this.hls.config.liveDurationInfinity){if(t.fragments.length&&s.setLiveSeekableRange){const l=Math.max(0,t.fragmentStart),h=Math.max(l,i);return{duration:1/0,start:l,end:h}}return{duration:1/0}}const r=(e=this.overrides)==null?void 0:e.duration;if(r)return V(r)?{duration:r}:null;const n=this.media.duration,o=V(s.duration)?s.duration:0;return i>o&&i>n||!V(n)?{duration:i}:null}updateMediaSource({duration:e,start:t,end:s}){const i=this.mediaSource;!this.media||!i||i.readyState!=="open"||(i.duration!==e&&(V(e)&&this.log(`Updating MediaSource duration to ${e.toFixed(3)}`),i.duration=e),t!==void 0&&s!==void 0&&(this.log(`MediaSource duration is set to ${i.duration}. Setting seekable range to ${t}-${s}.`),i.setLiveSeekableRange(t,s)))}get tracksReady(){const e=this.pendingTrackCount;return e>0&&(e>=this.bufferCodecEventsTotal||this.isPending(this.tracks.audiovideo))}checkPendingTracks(){const{bufferCodecEventsTotal:e,pendingTrackCount:t,tracks:s}=this;if(this.log(`checkPendingTracks (pending: ${t} codec events expected: ${e}) ${ce(s)}`),this.tracksReady){var i;const r=(i=this.transferData)==null?void 0:i.tracks;r&&Object.keys(r).length?this.attachTransferred():this.createSourceBuffers()}}bufferCreated(){if(this.sourceBufferCount){const e={};this.sourceBuffers.forEach(([t,s])=>{if(t){const i=this.tracks[t];e[t]={buffer:s,container:i.container,codec:i.codec,supplemental:i.supplemental,levelCodec:i.levelCodec,id:i.id,metadata:i.metadata}}}),this.hls.trigger(m.BUFFER_CREATED,{tracks:e}),this.log(`SourceBuffers created. Running queue: ${this.operationQueue}`),this.sourceBuffers.forEach(([t])=>{this.executeNext(t)})}else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}createSourceBuffers(){const{tracks:e,sourceBuffers:t,mediaSource:s}=this;if(!s)throw new Error("createSourceBuffers called when mediaSource was null");for(const r in e){const n=r,o=e[n];if(this.isPending(o)){const c=this.getTrackCodec(o,n),l=`${o.container};codecs=${c}`;o.codec=c,this.log(`creating sourceBuffer(${l})${this.currentOp(n)?" Queued":""} ${ce(o)}`);try{const h=s.addSourceBuffer(l),u=pi(n),d=[n,h];t[u]=d,o.buffer=h}catch(h){var i;this.error(`error while trying to add sourceBuffer: ${h.message}`),this.shiftAndExecuteNext(n),(i=this.operationQueue)==null||i.removeBlockers(),delete this.tracks[n],this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:h,sourceBufferName:n,mimeType:l,parent:o.id});return}this.trackSourceBuffer(n,o)}}this.bufferCreated()}getTrackCodec(e,t){const s=e.supplemental;let i=e.codec;s&&(t==="video"||t==="audiovideo")&&ss(s,"video")&&(i=zl(i,s));const r=bs(i,e.levelCodec);return r?t.slice(0,5)==="audio"?Bs(r,this.appendSource):r:""}trackSourceBuffer(e,t){const s=t.buffer;if(!s)return;const i=this.getTrackCodec(t,e);this.tracks[e]={buffer:s,codec:i,container:t.container,levelCodec:t.levelCodec,supplemental:t.supplemental,metadata:t.metadata,id:t.id,listeners:[]},this.removeBufferListeners(e),this.addBufferListener(e,"updatestart",this.onSBUpdateStart),this.addBufferListener(e,"updateend",this.onSBUpdateEnd),this.addBufferListener(e,"error",this.onSBUpdateError),this.appendSource&&this.addBufferListener(e,"bufferedchange",(r,n)=>{const o=n.removedRanges;o!=null&&o.length&&this.hls.trigger(m.BUFFER_FLUSHED,{type:r})})}get mediaSrc(){var e,t;const s=((e=this.media)==null||(t=e.querySelector)==null?void 0:t.call(e,"source"))||this.media;return s?.src}onSBUpdateStart(e){const t=this.currentOp(e);t&&t.onStart()}onSBUpdateEnd(e){var t;if(((t=this.mediaSource)==null?void 0:t.readyState)==="closed"){this.resetBuffer(e);return}const s=this.currentOp(e);s&&(s.onComplete(),this.shiftAndExecuteNext(e))}onSBUpdateError(e,t){var s;const i=new Error(`${e} SourceBuffer error. MediaSource readyState: ${(s=this.mediaSource)==null?void 0:s.readyState}`);this.error(`${i}`,t),this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:i,fatal:!1});const r=this.currentOp(e);r&&r.onError(i)}updateTimestampOffset(e,t,s,i,r,n){const o=t-e.timestampOffset;Math.abs(o)>=s&&(this.log(`Updating ${i} SourceBuffer timestampOffset to ${t} (sn: ${r} cc: ${n})`),e.timestampOffset=t)}removeExecutor(e,t,s){const{media:i,mediaSource:r}=this,n=this.tracks[e],o=n?.buffer;if(!i||!r||!o){this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),this.shiftAndExecuteNext(e);return}const c=V(i.duration)?i.duration:1/0,l=V(r.duration)?r.duration:1/0,h=Math.max(0,t),u=Math.min(s,c,l);u>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${u}] from the ${e} SourceBuffer`),o.remove(h,u)):this.shiftAndExecuteNext(e)}appendExecutor(e,t){const s=this.tracks[t],i=s?.buffer;if(!i)throw new nu(`Attempting to append to the ${t} SourceBuffer, but it does not exist`);s.ending=!1,s.ended=!1,i.appendBuffer(e)}blockUntilOpen(e){if(this.isUpdating()||this.isQueued())this.blockBuffers(e).catch(t=>{this.warn(`SourceBuffer blocked callback ${t}`),this.stepOperationQueue(this.sourceBufferTypes)});else try{e()}catch(t){this.warn(`Callback run without blocking ${this.operationQueue} ${t}`)}}isUpdating(){return this.sourceBuffers.some(([e,t])=>e&&t.updating)}isQueued(){return this.sourceBuffers.some(([e])=>e&&!!this.currentOp(e))}isPending(e){return!!e&&!e.buffer}blockBuffers(e,t=this.sourceBufferTypes){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),Promise.resolve().then(e);const{operationQueue:s}=this,i=t.map(n=>this.appendBlocker(n));return t.length>1&&this.blockedAudioAppend&&this.unblockAudio(),Promise.all(i).then(n=>{s===this.operationQueue&&(e(),this.stepOperationQueue(this.sourceBufferTypes))})}stepOperationQueue(e){e.forEach(t=>{var s;const i=(s=this.tracks[t])==null?void 0:s.buffer;!i||i.updating||this.shiftAndExecuteNext(t)})}append(e,t,s){this.operationQueue&&this.operationQueue.append(e,t,s)}appendBlocker(e){if(this.operationQueue)return this.operationQueue.appendBlocker(e)}currentOp(e){return this.operationQueue?this.operationQueue.current(e):null}executeNext(e){e&&this.operationQueue&&this.operationQueue.executeNext(e)}shiftAndExecuteNext(e){this.operationQueue&&this.operationQueue.shiftAndExecuteNext(e)}get pendingTrackCount(){return Object.keys(this.tracks).reduce((e,t)=>e+(this.isPending(this.tracks[t])?1:0),0)}get sourceBufferCount(){return this.sourceBuffers.reduce((e,[t])=>e+(t?1:0),0)}get sourceBufferTypes(){return this.sourceBuffers.map(([e])=>e).filter(e=>!!e)}addBufferListener(e,t,s){const i=this.tracks[e];if(!i)return;const r=i.buffer;if(!r)return;const n=s.bind(this,e);i.listeners.push({event:t,listener:n}),r.addEventListener(t,n)}removeBufferListeners(e){const t=this.tracks[e];if(!t)return;const s=t.buffer;s&&(t.listeners.forEach(i=>{s.removeEventListener(i.event,i.listener)}),t.listeners.length=0)}}function Dn(a){const e=a.querySelectorAll("source");[].slice.call(e).forEach(t=>{a.removeChild(t)})}function ou(a,e){const t=self.document.createElement("source");t.type="video/mp4",t.src=e,a.appendChild(t)}function pi(a){return a==="audio"?1:0}class Tr{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(m.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(m.BUFFER_CODECS,this.onBufferCodecs,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(m.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(m.BUFFER_CODECS,this.onBufferCodecs,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const s=this.hls.levels[t.droppedLevel];this.isLevelAllowed(s)&&this.restrictedLevels.push({bitrate:s.bitrate,height:s.height,width:s.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const s=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,s.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&V(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping(),this.media=null}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0){this.clientRect=null;return}const e=this.hls.levels;if(e.length){const t=this.hls,s=this.getMaxLevel(e.length-1);s!==this.autoLevelCapping&&t.logger.log(`Setting autoLevelCapping to ${s}: ${e[s].height}p@${e[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=s,t.autoLevelEnabled&&t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const s=t.filter((i,r)=>this.isLevelAllowed(i)&&r<=e);return this.clientRect=null,Tr.getMaxLevelByMediaSize(s,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const s=e.getBoundingClientRect();t.width=s.width,t.height=s.height,!t.width&&!t.height&&(t.width=s.right-s.left||e.width||0,t.height=s.bottom-s.top||e.height||0)}return this.clientRect=t,t}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch{}return Math.min(e,this.hls.config.maxDevicePixelRatio)}isLevelAllowed(e){return!this.restrictedLevels.some(s=>e.bitrate===s.bitrate&&e.width===s.width&&e.height===s.height)}static getMaxLevelByMediaSize(e,t,s){if(!(e!=null&&e.length))return-1;const i=(o,c)=>c?o.width!==c.width||o.height!==c.height:!0;let r=e.length-1;const n=Math.max(t,s);for(let o=0;o=n||c.height>=n)&&i(c,e[o+1])){r=o;break}}return r}}const lu={MANIFEST:"m",AUDIO:"a",VIDEO:"v",MUXED:"av",INIT:"i",CAPTION:"c",TIMED_TEXT:"tt",KEY:"k",OTHER:"o"},Fe=lu,cu={HLS:"h"},hu=cu;class rt{constructor(e,t){Array.isArray(e)&&(e=e.map(s=>s instanceof rt?s:new rt(s))),this.value=e,this.params=t}}const uu="Dict";function du(a){return Array.isArray(a)?JSON.stringify(a):a instanceof Map?"Map{}":a instanceof Set?"Set{}":typeof a=="object"?JSON.stringify(a):String(a)}function fu(a,e,t,s){return new Error(`failed to ${a} "${du(e)}" as ${t}`,{cause:s})}function nt(a,e,t){return fu("serialize",a,e,t)}class co{constructor(e){this.description=e}}const Cn="Bare Item",gu="Boolean";function mu(a){if(typeof a!="boolean")throw nt(a,gu);return a?"?1":"?0"}function pu(a){return btoa(String.fromCharCode(...a))}const yu="Byte Sequence";function Eu(a){if(ArrayBuffer.isView(a)===!1)throw nt(a,yu);return`:${pu(a)}:`}const vu="Integer";function Tu(a){return a<-999999999999999||99999999999999912)throw nt(a,xu);const t=e.toString();return t.includes(".")?t:`${t}.0`}const Iu="String",Lu=/[\x00-\x1f\x7f]+/;function Ru(a){if(Lu.test(a))throw nt(a,Iu);return`"${a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function bu(a){return a.description||a.toString().slice(7,-1)}const _u="Token";function Pn(a){const e=bu(a);if(/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e)===!1)throw nt(e,_u);return e}function Hi(a){switch(typeof a){case"number":if(!V(a))throw nt(a,Cn);return Number.isInteger(a)?ho(a):Au(a);case"string":return Ru(a);case"symbol":return Pn(a);case"boolean":return mu(a);case"object":if(a instanceof Date)return Su(a);if(a instanceof Uint8Array)return Eu(a);if(a instanceof co)return Pn(a);default:throw nt(a,Cn)}}const Du="Key";function Yi(a){if(/^[a-z*][a-z0-9\-_.*]*$/.test(a)===!1)throw nt(a,Du);return a}function Sr(a){return a==null?"":Object.entries(a).map(([e,t])=>t===!0?`;${Yi(e)}`:`;${Yi(e)}=${Hi(t)}`).join("")}function fo(a){return a instanceof rt?`${Hi(a.value)}${Sr(a.params)}`:Hi(a)}function Cu(a){return`(${a.value.map(fo).join(" ")})${Sr(a.params)}`}function Pu(a,e={whitespace:!0}){if(typeof a!="object"||a==null)throw nt(a,uu);const t=a instanceof Map?a.entries():Object.entries(a),s=e?.whitespace?" ":"";return Array.from(t).map(([i,r])=>{r instanceof rt||(r=new rt(r));let n=Yi(i);return r.value===!0?n+=Sr(r.params):(n+="=",Array.isArray(r.value)?n+=Cu(r):n+=fo(r)),n}).join(`,${s}`)}function go(a,e){return Pu(a,e)}const Je="CMCD-Object",pe="CMCD-Request",_t="CMCD-Session",vt="CMCD-Status",ku={br:Je,ab:Je,d:Je,ot:Je,tb:Je,tpb:Je,lb:Je,tab:Je,lab:Je,url:Je,pb:pe,bl:pe,tbl:pe,dl:pe,ltc:pe,mtp:pe,nor:pe,nrr:pe,rc:pe,sn:pe,sta:pe,su:pe,ttfb:pe,ttfbb:pe,ttlb:pe,cmsdd:pe,cmsds:pe,smrt:pe,df:pe,cs:pe,ts:pe,cid:_t,pr:_t,sf:_t,sid:_t,st:_t,v:_t,msd:_t,bs:vt,bsd:vt,cdn:vt,rtp:vt,bg:vt,pt:vt,ec:vt,e:vt},wu={REQUEST:pe};function Ou(a){return Object.keys(a).reduce((e,t)=>{var s;return(s=a[t])===null||s===void 0||s.forEach(i=>e[i]=t),e},{})}function Fu(a,e){const t={};if(!a)return t;const s=Object.keys(a),i=e?Ou(e):{};return s.reduce((r,n)=>{var o;const c=ku[n]||i[n]||wu.REQUEST,l=(o=r[c])!==null&&o!==void 0?o:r[c]={};return l[n]=a[n],r},t)}function Mu(a){return["ot","sf","st","e","sta"].includes(a)}function Nu(a){return typeof a=="number"?V(a):a!=null&&a!==""&&a!==!1}const mo="event";function Bu(a,e){const t=new URL(a),s=new URL(e);if(t.origin!==s.origin)return a;const i=t.pathname.split("/").slice(1),r=s.pathname.split("/").slice(1,-1);for(;i[0]===r[0];)i.shift(),r.shift();for(;r.length;)r.shift(),i.unshift("..");return i.join("/")+t.search+t.hash}const ks=a=>Math.round(a),Wi=(a,e)=>Array.isArray(a)?a.map(t=>Wi(t,e)):a instanceof rt&&typeof a.value=="string"?new rt(Wi(a.value,e),a.params):(e.baseUrl&&(a=Bu(a,e.baseUrl)),e.version===1?encodeURIComponent(a):a),Es=a=>ks(a/100)*100,Uu=(a,e)=>{let t=a;return e.version>=2&&(a instanceof rt&&typeof a.value=="string"?t=new rt([a]):typeof a=="string"&&(t=[a])),Wi(t,e)},$u={br:ks,d:ks,bl:Es,dl:Es,mtp:Es,nor:Uu,rtp:Es,tb:ks},po="request",yo="response",xr=["ab","bg","bl","br","bs","bsd","cdn","cid","cs","df","ec","lab","lb","ltc","msd","mtp","pb","pr","pt","sf","sid","sn","st","sta","tab","tb","tbl","tpb","ts","v"],Gu=["e"],Ku=/^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/;function zs(a){return Ku.test(a)}function Vu(a){return xr.includes(a)||Gu.includes(a)||zs(a)}const Eo=["d","dl","nor","ot","rtp","su"];function Hu(a){return xr.includes(a)||Eo.includes(a)||zs(a)}const Yu=["cmsdd","cmsds","rc","smrt","ttfb","ttfbb","ttlb","url"];function Wu(a){return xr.includes(a)||Eo.includes(a)||Yu.includes(a)||zs(a)}const qu=["bl","br","bs","cid","d","dl","mtp","nor","nrr","ot","pr","rtp","sf","sid","st","su","tb","v"];function ju(a){return qu.includes(a)||zs(a)}const Xu={[yo]:Wu,[mo]:Vu,[po]:Hu};function vo(a,e={}){const t={};if(a==null||typeof a!="object")return t;const s=e.version||a.v||1,i=e.reportingMode||po,r=s===1?ju:Xu[i];let n=Object.keys(a).filter(r);const o=e.filter;typeof o=="function"&&(n=n.filter(o));const c=i===yo||i===mo;c&&!n.includes("ts")&&n.push("ts"),s>1&&!n.includes("v")&&n.push("v");const l=ae({},$u,e.formatters),h={version:s,reportingMode:i,baseUrl:e.baseUrl};return n.sort().forEach(u=>{let d=a[u];const g=l[u];if(typeof g=="function"&&(d=g(d,h)),u==="v"){if(s===1)return;d=s}u=="pr"&&d===1||(c&&u==="ts"&&!V(d)&&(d=Date.now()),Nu(d)&&(Mu(u)&&typeof d=="string"&&(d=new co(d)),t[u]=d))}),t}function zu(a,e={}){const t={};if(!a)return t;const s=vo(a,e),i=Fu(s,e?.customHeaderMap);return Object.entries(i).reduce((r,[n,o])=>{const c=go(o,{whitespace:!1});return c&&(r[n]=c),r},t)}function Qu(a,e,t){return ae(a,zu(e,t))}const Zu="CMCD";function Ju(a,e={}){return a?go(vo(a,e),{whitespace:!1}):""}function ed(a,e={}){if(!a)return"";const t=Ju(a,e);return encodeURIComponent(t)}function td(a,e={}){if(!a)return"";const t=ed(a,e);return`${Zu}=${t}`}const kn=/CMCD=[^&#]+/;function sd(a,e,t){const s=td(e,t);if(!s)return a;if(kn.test(a))return a.replace(kn,s);const i=a.includes("?")?"&":"?";return`${a}${i}${s}`}class id{constructor(e){this.hls=void 0,this.config=void 0,this.media=void 0,this.sid=void 0,this.cid=void 0,this.useHeaders=!1,this.includeKeys=void 0,this.initialized=!1,this.starved=!1,this.buffering=!0,this.audioBuffer=void 0,this.videoBuffer=void 0,this.onWaiting=()=>{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=i=>{try{this.apply(i,{ot:Fe.MANIFEST,su:!this.initialized})}catch(r){this.hls.logger.warn("Could not generate manifest CMCD data.",r)}},this.applyFragmentData=i=>{try{const{frag:r,part:n}=i,o=this.hls.levels[r.level],c=this.getObjectType(r),l={d:(n||r).duration*1e3,ot:c};(c===Fe.VIDEO||c===Fe.AUDIO||c==Fe.MUXED)&&(l.br=o.bitrate/1e3,l.tb=this.getTopBandwidth(c)/1e3,l.bl=this.getBufferLength(c));const h=n?this.getNextPart(n):this.getNextFrag(r);h!=null&&h.url&&h.url!==r.url&&(l.nor=h.url),this.apply(i,l)}catch(r){this.hls.logger.warn("Could not generate segment CMCD data.",r)}},this.hls=e;const t=this.config=e.config,{cmcd:s}=t;s!=null&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=s.sessionId||e.sessionId,this.cid=s.contentId,this.useHeaders=s.useHeaders===!0,this.includeKeys=s.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHED,this.onMediaDetached,this),e.on(m.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHED,this.onMediaDetached,this),e.off(m.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=this.media=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var s,i;this.audioBuffer=(s=t.tracks.audio)==null?void 0:s.buffer,this.videoBuffer=(i=t.tracks.video)==null?void 0:i.buffer}createData(){var e;return{v:1,sf:hu.HLS,sid:this.sid,cid:this.cid,pr:(e=this.media)==null?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){ae(t,this.createData());const s=t.ot===Fe.INIT||t.ot===Fe.VIDEO||t.ot===Fe.MUXED;this.starved&&s&&(t.bs=!0,t.su=!0,this.starved=!1),t.su==null&&(t.su=this.buffering);const{includeKeys:i}=this;i&&(t=Object.keys(t).reduce((n,o)=>(i.includes(o)&&(n[o]=t[o]),n),{}));const r={baseUrl:e.url};this.useHeaders?(e.headers||(e.headers={}),Qu(e.headers,t,r)):e.url=sd(e.url,t,r)}getNextFrag(e){var t;const s=(t=this.hls.levels[e.level])==null?void 0:t.details;if(s){const i=e.sn-s.startSN;return s.fragments[i+1]}}getNextPart(e){var t;const{index:s,fragment:i}=e,r=(t=this.hls.levels[i.level])==null||(t=t.details)==null?void 0:t.partList;if(r){const{sn:n}=i;for(let o=r.length-1;o>=0;o--){const c=r[o];if(c.index===s&&c.fragment.sn===n)return r[o+1]}}}getObjectType(e){const{type:t}=e;if(t==="subtitle")return Fe.TIMED_TEXT;if(e.sn==="initSegment")return Fe.INIT;if(t==="audio")return Fe.AUDIO;if(t==="main")return this.hls.audioTracks.length?Fe.VIDEO:Fe.MUXED}getTopBandwidth(e){let t=0,s;const i=this.hls;if(e===Fe.AUDIO)s=i.audioTracks;else{const r=i.maxAutoLevel,n=r>-1?r+1:i.levels.length;s=i.levels.slice(0,n)}return s.forEach(r=>{r.bitrate>t&&(t=r.bitrate)}),t>0?t:NaN}getBufferLength(e){const t=this.media,s=e===Fe.AUDIO?this.audioBuffer:this.videoBuffer;return!s||!t?NaN:Q.bufferInfo(s,t.currentTime,this.config.maxBufferHole).len*1e3}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,s=e||this.config.loader;return class{constructor(r){this.loader=void 0,this.loader=new s(r)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(r,n,o){t(r),this.loader.load(r,n,o)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,s=e||this.config.loader;return class{constructor(r){this.loader=void 0,this.loader=new s(r)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(r,n,o){t(r),this.loader.load(r,n,o)}}}}const rd=3e5;class nd extends qe{constructor(e){super("content-steering",e.logger),this.hls=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this._pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.registerListeners()}registerListeners(){const e=this.hls;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.ERROR,this.onError,this))}pathways(){return(this.levels||[]).reduce((e,t)=>(e.indexOf(t.pathwayId)===-1&&e.push(t.pathwayId),e),[])}get pathwayPriority(){return this._pathwayPriority}set pathwayPriority(e){this.updatePathwayPriority(e)}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=this.timeToLoad*1e3-(performance.now()-this.updated);if(e>0){this.scheduleRefresh(this.uri,e);return}}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){this.reloadTimer!==-1&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter(s=>s!==e))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:s}=t;s!==null&&(this.pathwayId=s.pathwayId,this.uri=s.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:s}=t;if(s?.action===Le.SendAlternateToPenaltyBox&&s.flags===Ge.MoveAllAlternatesMatchingHost){const i=this.levels;let r=this._pathwayPriority,n=this.pathwayId;if(t.context){const{groupId:o,pathwayId:c,type:l}=t.context;o&&i?n=this.getPathwayForGroupId(o,l,n):c&&(n=c)}n in this.penalizedPathways||(this.penalizedPathways[n]=performance.now()),!r&&i&&(r=this.pathways()),r&&r.length>1&&(this.updatePathwayPriority(r),s.resolved=this.pathwayId!==n),t.details===_.BUFFER_APPEND_ERROR&&!t.fatal?s.resolved=!0:s.resolved||this.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${n} levels: ${i&&i.length} priorities: ${ce(r)} penalized: ${ce(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(t.length===0){const s=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${s}"`),t=this.getLevelsForPathway(s),this.pathwayId=s}return t.length!==e.length&&this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t}getLevelsForPathway(e){return this.levels===null?[]:this.levels.filter(t=>e===t.pathwayId)}updatePathwayPriority(e){this._pathwayPriority=e;let t;const s=this.penalizedPathways,i=performance.now();Object.keys(s).forEach(r=>{i-s[r]>rd&&delete s[r]});for(let r=0;r0){this.log(`Setting Pathway to "${n}"`),this.pathwayId=n,Ba(t),this.hls.trigger(m.LEVELS_UPDATED,{levels:t});const l=this.hls.levels[o];c&&l&&this.levels&&(l.attrs["STABLE-VARIANT-ID"]!==c.attrs["STABLE-VARIANT-ID"]&&l.bitrate!==c.bitrate&&this.log(`Unstable Pathways change from bitrate ${c.bitrate} to ${l.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,s){const i=this.getLevelsForPathway(s).concat(this.levels||[]);for(let r=0;r{const{ID:n,"BASE-ID":o,"URI-REPLACEMENT":c}=r;if(t.some(h=>h.pathwayId===n))return;const l=this.getLevelsForPathway(o).map(h=>{const u=new fe(h.attrs);u["PATHWAY-ID"]=n;const d=u.AUDIO&&`${u.AUDIO}_clone_${n}`,g=u.SUBTITLES&&`${u.SUBTITLES}_clone_${n}`;d&&(s[u.AUDIO]=d,u.AUDIO=d),g&&(i[u.SUBTITLES]=g,u.SUBTITLES=g);const f=To(h.uri,u["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",c),p=new rs({attrs:u,audioCodec:h.audioCodec,bitrate:h.bitrate,height:h.height,name:h.name,url:f,videoCodec:h.videoCodec,width:h.width});if(h.audioGroups)for(let y=1;y{this.log(`Loaded steering manifest: "${i}"`);const f=h.data;if(f?.VERSION!==1){this.log(`Steering VERSION ${f.VERSION} not supported!`);return}this.updated=performance.now(),this.timeToLoad=f.TTL;const{"RELOAD-URI":p,"PATHWAY-CLONES":y,"PATHWAY-PRIORITY":E}=f;if(p)try{this.uri=new self.URL(p,i).href}catch{this.enabled=!1,this.log(`Failed to parse Steering Manifest RELOAD-URI: ${p}`);return}this.scheduleRefresh(this.uri||d.url),y&&this.clonePathways(y);const v={steeringManifest:f,url:i.toString()};this.hls.trigger(m.STEERING_MANIFEST_LOADED,v),E&&this.updatePathwayPriority(E)},onError:(h,u,d,g)=>{if(this.log(`Error loading steering manifest: ${h.code} ${h.text} (${u.url})`),this.stopLoad(),h.code===410){this.enabled=!1,this.log(`Steering manifest ${u.url} no longer available`);return}let f=this.timeToLoad*1e3;if(h.code===429){const p=this.loader;if(typeof p?.getResponseHeader=="function"){const y=p.getResponseHeader("Retry-After");y&&(f=parseFloat(y)*1e3)}this.log(`Steering manifest ${u.url} rate limited`);return}this.scheduleRefresh(this.uri||u.url,f)},onTimeout:(h,u,d)=>{this.log(`Timeout loading steering manifest (${u.url})`),this.scheduleRefresh(this.uri||u.url)}};this.log(`Requesting steering manifest: ${i}`),this.loader.load(r,c,l)}scheduleRefresh(e,t=this.timeToLoad*1e3){this.clearTimeout(),this.reloadTimer=self.setTimeout(()=>{var s;const i=(s=this.hls)==null?void 0:s.media;if(i&&!i.ended){this.loadSteeringManifest(e);return}this.scheduleRefresh(e,this.timeToLoad*1e3)},t)}}function wn(a,e,t,s){a&&Object.keys(e).forEach(i=>{const r=a.filter(n=>n.groupId===i).map(n=>{const o=ae({},n);return o.details=void 0,o.attrs=new fe(o.attrs),o.url=o.attrs.URI=To(n.url,n.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",t),o.groupId=o.attrs["GROUP-ID"]=e[i],o.attrs["PATHWAY-ID"]=s,o});a.push(...r)})}function To(a,e,t,s){const{HOST:i,PARAMS:r,[t]:n}=s;let o;e&&(o=n?.[e],o&&(a=o));const c=new self.URL(a);return i&&!o&&(c.host=i),r&&Object.keys(r).sort().forEach(l=>{l&&c.searchParams.set(l,r[l])}),c.href}class Vt extends qe{constructor(e){super("eme",e.logger),this.hls=void 0,this.config=void 0,this.media=null,this.mediaResolved=void 0,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.mediaKeys=null,this.setMediaKeysQueue=Vt.CDMCleanupPromise?[Vt.CDMCleanupPromise]:[],this.bannedKeyIds={},this.onMediaEncrypted=t=>{const{initDataType:s,initData:i}=t,r=`"${t.type}" event: init data type: "${s}"`;if(this.debug(r),i!==null){if(!this.keyFormatPromise){let n=Object.keys(this.keySystemAccessPromises);n.length||(n=Qt(this.config));const o=n.map(li).filter(c=>!!c);this.keyFormatPromise=this.getKeyFormatPromise(o)}this.keyFormatPromise.then(n=>{const o=Ds(n);if(s!=="sinf"||o!==ge.FAIRPLAY){this.log(`Ignoring "${t.type}" event with init data type: "${s}" for selected key-system ${o}`);return}let c;try{const g=xe(new Uint8Array(i)),f=hr(JSON.parse(g).sinf),p=fa(f);if(!p)throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc");c=new Uint8Array(p.subarray(8,24))}catch(g){this.warn(`${r} Failed to parse sinf: ${g}`);return}const l=Re(c),{keyIdToKeySessionPromise:h,mediaKeySessions:u}=this;let d=h[l];for(let g=0;gthis.generateRequestWithPreferredKeySession(f,s,i,"encrypted-event-key-match")),d.catch(E=>this.handleError(E));break}}d||this.handleError(new Error(`Key ID ${l} not encountered in playlist. Key-system sessions ${u.length}.`))}).catch(n=>this.handleError(n))}},this.onWaitingForKey=t=>{this.log(`"${t.type}" event`)},this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.onDestroying(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.config=this.keyIdToKeySessionPromise=null,this.onMediaEncrypted=this.onWaitingForKey=null}registerListeners(){this.hls.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(m.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(m.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),this.hls.on(m.DESTROYING,this.onDestroying,this)}unregisterListeners(){this.hls.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(m.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(m.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),this.hls.off(m.DESTROYING,this.onDestroying,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:s}=this.config,i=t?.[e];if(i)return i.licenseUrl;if(e===ge.WIDEVINE&&s)return s}getLicenseServerUrlOrThrow(e){const t=this.getLicenseServerUrl(e);if(t===void 0)throw new Error(`no license server URL configured for key-system "${e}"`);return t}getServerCertificateUrl(e){const{drmSystems:t}=this.config,s=t?.[e];if(s)return s.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,s=(n,o,c)=>!!n&&c.indexOf(n)===o,i=t.map(n=>n.audioCodec).filter(s),r=t.map(n=>n.videoCodec).filter(s);return i.length+r.length===0&&r.push("avc1.42e01e"),new Promise((n,o)=>{const c=l=>{const h=l.shift();this.getMediaKeysPromise(h,i,r).then(u=>n({keySystem:h,mediaKeys:u})).catch(u=>{l.length?c(l):u instanceof $e?o(u):o(new $e({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_ACCESS,error:u,fatal:!0},u.message))})};c(e)})}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:s}=this.config;if(typeof s!="function"){let i=`Configured requestMediaKeySystemAccess is not a function ${s}`;return Ca===null&&self.location.protocol==="http:"&&(i=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(i))}return s(e,t)}getMediaKeysPromise(e,t,s){var i;const r=Uc(e,t,s,this.config.drmSystemOptions||{});let n=this.keySystemAccessPromises[e],o=(i=n)==null?void 0:i.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${e}" key-system access with config: ${ce(r)}`),o=this.requestMediaKeySystemAccess(e,r);const c=n=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch(l=>{this.log(`Failed to obtain access to key-system "${e}": ${l}`)}),o.then(l=>{this.log(`Access for key-system "${l.keySystem}" obtained`);const h=this.fetchServerCertificate(e);this.log(`Create media-keys for "${e}"`);const u=c.mediaKeys=l.createMediaKeys().then(d=>(this.log(`Media-keys created for "${e}"`),c.hasMediaKeys=!0,h.then(g=>g?this.setMediaKeysServerCertificate(d,e,g):d)));return u.catch(d=>{this.error(`Failed to create media-keys for "${e}"}: ${d}`)}),u})}return o.then(()=>n.mediaKeys)}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:s}){this.log(`Creating key-system session "${t}" keyId: ${Re(e.keyId||[])} keyUri: ${e.uri}`);const i=s.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:s,mediaKeysSession:i,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const s=this.createMediaKeySessionContext(e),i=vs(t),r="cenc";this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(s,r,t.pssh.buffer,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}updateKeySession(e,t){const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyId ${Re(e.decryptdata.keyId||[])} + } (data length: ${t.byteLength})`),s.update(t)}getSelectedKeySystemFormats(){return Object.keys(this.keySystemAccessPromises).map(e=>({keySystem:e,hasMediaKeys:this.keySystemAccessPromises[e].hasMediaKeys})).filter(({hasMediaKeys:e})=>!!e).map(({keySystem:e})=>li(e)).filter(e=>!!e)}getKeySystemAccess(e){return this.getKeySystemSelectionPromise(e).then(({keySystem:t,mediaKeys:s})=>this.attemptSetMediaKeys(t,s))}selectKeySystem(e){return new Promise((t,s)=>{this.getKeySystemSelectionPromise(e).then(({keySystem:i})=>{const r=li(i);r?t(r):s(new Error(`Unable to find format for key-system "${i}"`))}).catch(s)})}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){const t=Qt(this.config),s=e.map(Ds).filter(i=>!!i&&t.indexOf(i)!==-1);return this.selectKeySystem(s)}getKeyStatus(e){const{mediaKeySessions:t}=this;for(let s=0;s(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${r}`),this.attemptSetMediaKeys(c,l).then(()=>(this.throwIfDestroyed(),this.createMediaKeySessionContext({keySystem:c,mediaKeys:l,decryptdata:t}))))).then(c=>{const l="cenc",h=t.pssh?t.pssh.buffer:null;return this.generateRequestWithPreferredKeySession(c,l,h,"playlist-key")});return o.catch(c=>this.handleError(c,e.frag)),this.keyIdToKeySessionPromise[s]=o,o}return n.catch(o=>{if(o instanceof $e){const c=re({},o.data);this.getKeyStatus(t)==="internal-error"&&(c.decryptdata=t);const l=new $e(c,o.message);this.handleError(l,e.frag)}}),n}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e,t){if(this.hls)if(e instanceof $e){t&&(e.data.frag=t);const s=e.data.decryptdata;this.error(`${e.message}${s?` (${Re(s.keyId||[])})`:""}`),this.hls.trigger(m.ERROR,e.data)}else this.error(e.message),this.hls.trigger(m.ERROR,{type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0})}getKeySystemForKeyPromise(e){const t=vs(e),s=this.keyIdToKeySessionPromise[t];if(!s){const i=Ds(e.keyFormat),r=i?[i]:Qt(this.config);return this.attemptKeySystemAccess(r)}return s}getKeySystemSelectionPromise(e){if(e.length||(e=Qt(this.config)),e.length===0)throw new $e({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${ce({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}attemptSetMediaKeys(e,t){if(this.mediaResolved=void 0,this.mediaKeys===t)return Promise.resolve();const s=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const i=Promise.all(s).then(()=>this.media?this.media.setMediaKeys(t):new Promise((r,n)=>{this.mediaResolved=()=>{if(this.mediaResolved=void 0,!this.media)return n(new Error("Attempted to set mediaKeys without media element attached"));this.mediaKeys=t,this.media.setMediaKeys(t).then(r).catch(n)}}));return this.mediaKeys=t,this.setMediaKeysQueue.push(i),i.then(()=>{this.log(`Media-keys set for "${e}"`),s.push(i),this.setMediaKeysQueue=this.setMediaKeysQueue.filter(r=>s.indexOf(r)===-1)})}generateRequestWithPreferredKeySession(e,t,s,i){var r;const n=(r=this.config.drmSystems)==null||(r=r[e.keySystem])==null?void 0:r.generateRequest;if(n)try{const f=n.call(this.hls,t,s,e);if(!f)throw new Error("Invalid response from configured generateRequest filter");t=f.initDataType,s=f.initData?f.initData:null,e.decryptdata.pssh=s?new Uint8Array(s):null}catch(f){if(this.warn(f.message),this.hls&&this.hls.config.debug)throw f}if(s===null)return this.log(`Skipping key-session request for "${i}" (no initData)`),Promise.resolve(e);const o=vs(e.decryptdata),c=e.decryptdata.uri;this.log(`Generating key-session request for "${i}" keyId: ${o} URI: ${c} (init data type: ${t} length: ${s.byteLength})`);const l=new dr,h=e._onmessage=f=>{const p=e.mediaKeysSession;if(!p){l.emit("error",new Error("invalid state"));return}const{messageType:y,message:E}=f;this.log(`"${y}" message event for session "${p.sessionId}" message size: ${E.byteLength}`),y==="license-request"||y==="license-renewal"?this.renewLicense(e,E).catch(v=>{l.eventNames().length?l.emit("error",v):this.handleError(v)}):y==="license-release"?e.keySystem===ge.FAIRPLAY&&this.updateKeySession(e,Bi("acknowledged")).then(()=>this.removeSession(e)).catch(v=>this.handleError(v)):this.warn(`unhandled media key message type "${y}"`)},u=(f,p)=>{p.keyStatus=f;let y;f.startsWith("usable")?l.emit("resolved"):f==="internal-error"||f==="output-restricted"||f==="output-downscaled"?y=On(f,p.decryptdata):f==="expired"?y=new Error(`key expired (keyId: ${o})`):f==="released"?y=new Error("key released"):f==="status-pending"||this.warn(`unhandled key status change "${f}" (keyId: ${o})`),y&&(l.eventNames().length?l.emit("error",y):this.handleError(y))},d=e._onkeystatuseschange=f=>{if(!e.mediaKeysSession){l.emit("error",new Error("invalid state"));return}const y=this.getKeyStatuses(e);if(!Object.keys(y).some(S=>y[S]!=="status-pending"))return;if(y[o]==="expired"){this.log(`Expired key ${ce(y)} in key-session "${e.mediaKeysSession.sessionId}"`),this.renewKeySession(e);return}let v=y[o];if(v)u(v,e);else{var T;e.keyStatusTimeouts||(e.keyStatusTimeouts={}),(T=e.keyStatusTimeouts)[o]||(T[o]=self.setTimeout(()=>{if(!e.mediaKeysSession||!this.mediaKeys)return;const x=this.getKeyStatus(e.decryptdata);if(x&&x!=="status-pending")return this.log(`No status for keyId ${o} in key-session "${e.mediaKeysSession.sessionId}". Using session key-status ${x} from other session.`),u(x,e);this.log(`key status for ${o} in key-session "${e.mediaKeysSession.sessionId}" timed out after 1000ms`),v="internal-error",u(v,e)},1e3)),this.log(`No status for keyId ${o} (${ce(y)}).`)}};we(e.mediaKeysSession,"message",h),we(e.mediaKeysSession,"keystatuseschange",d);const g=new Promise((f,p)=>{l.on("error",p),l.on("resolved",f)});return e.mediaKeysSession.generateRequest(t,s).then(()=>{this.log(`Request generated for key-session "${e.mediaKeysSession.sessionId}" keyId: ${o} URI: ${c}`)}).catch(f=>{throw new $e({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_NO_SESSION,error:f,decryptdata:e.decryptdata,fatal:!1},`Error generating key-session request: ${f}`)}).then(()=>g).catch(f=>(l.removeAllListeners(),this.removeSession(e).then(()=>{throw f}))).then(()=>(l.removeAllListeners(),e))}getKeyStatuses(e){const t={};return e.mediaKeysSession.keyStatuses.forEach((s,i)=>{if(typeof i=="string"&&typeof s=="object"){const o=i;i=s,s=o}const r="buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i);if(e.keySystem===ge.PLAYREADY&&r.length===16){const o=Re(r);t[o]=s,_a(r)}const n=Re(r);s==="internal-error"&&(this.bannedKeyIds[n]=s),this.log(`key status change "${s}" for keyStatuses keyId: ${n} key-session "${e.mediaKeysSession.sessionId}"`),t[n]=s}),t}fetchServerCertificate(e){const t=this.config,s=t.loader,i=new s(t),r=this.getServerCertificateUrl(e);return r?(this.log(`Fetching server certificate for "${e}"`),new Promise((n,o)=>{const c={responseType:"arraybuffer",url:r},l=t.certLoadPolicy.default,h={loadPolicy:l,timeout:l.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},u={onSuccess:(d,g,f,p)=>{n(d.data)},onError:(d,g,f,p)=>{o(new $e({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:f,response:re({url:c.url,data:void 0},d)},`"${e}" certificate request failed (${r}). Status: ${d.code} (${d.text})`))},onTimeout:(d,g,f)=>{o(new $e({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:f,response:{url:c.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(d,g,f)=>{o(new Error("aborted"))}};i.load(c,h,u)})):Promise.resolve()}setMediaKeysServerCertificate(e,t,s){return new Promise((i,r)=>{e.setServerCertificate(s).then(n=>{this.log(`setServerCertificate ${n?"success":"not supported by CDM"} (${s.byteLength}) on "${t}"`),i(e)}).catch(n=>{r(new $e({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:n,fatal:!0},n.message))})})}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then(s=>this.updateKeySession(e,new Uint8Array(s)).catch(i=>{throw new $e({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_SESSION_UPDATE_FAILED,decryptdata:e.decryptdata,error:i,fatal:!1},i.message)}))}unpackPlayReadyKeyMessage(e,t){const s=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!s.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const i=new DOMParser().parseFromString(s,"application/xml"),r=i.querySelectorAll("HttpHeader");if(r.length>0){let h;for(let u=0,d=r.length;u in key message");return Bi(atob(l))}setupLicenseXHR(e,t,s,i){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then(()=>{if(!s.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,s,i)}).catch(n=>{if(!s.decryptdata)throw n;return e.open("POST",t,!0),r.call(this.hls,e,t,s,i)}).then(n=>(e.readyState||e.open("POST",t,!0),{xhr:e,licenseChallenge:n||i})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:i}))}requestLicense(e,t){const s=this.config.keyLoadPolicy.default;return new Promise((i,r)=>{const n=this.getLicenseServerUrlOrThrow(e.keySystem);this.log(`Sending license request to URL: ${n}`);const o=new XMLHttpRequest;o.responseType="arraybuffer",o.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(o.readyState===4)if(o.status===200){this._requestLicenseFailureCount=0;let c=o.response;this.log(`License received ${c instanceof ArrayBuffer?c.byteLength:c}`);const l=this.config.licenseResponseCallback;if(l)try{c=l.call(this.hls,o,n,e)}catch(h){this.error(h)}i(c)}else{const c=s.errorRetry,l=c?c.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||o.status>=400&&o.status<500)r(new $e({type:W.KEY_SYSTEM_ERROR,details:_.KEY_SYSTEM_LICENSE_REQUEST_FAILED,decryptdata:e.decryptdata,fatal:!0,networkDetails:o,response:{url:n,data:void 0,code:o.status,text:o.statusText}},`License Request XHR failed (${n}). Status: ${o.status} (${o.statusText})`));else{const h=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${h} attempts left`),this.requestLicense(e,t).then(i,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=o,this.setupLicenseXHR(o,n,e,t).then(({xhr:c,licenseChallenge:l})=>{e.keySystem==ge.PLAYREADY&&(l=this.unpackPlayReadyKeyMessage(c,l)),c.send(l)}).catch(r)})}onDestroying(){this.unregisterListeners(),this._clear()}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const s=t.media;this.media=s,we(s,"encrypted",this.onMediaEncrypted),we(s,"waitingforkey",this.onWaitingForKey);const i=this.mediaResolved;i?i():this.mediaKeys=s.mediaKeys}onMediaDetached(){const e=this.media;e&&(Me(e,"encrypted",this.onMediaEncrypted),Me(e,"waitingforkey",this.onWaitingForKey),this.media=null,this.mediaKeys=null)}_clear(){var e;this._requestLicenseFailureCount=0,this.keyIdToKeySessionPromise={},this.bannedKeyIds={};const t=this.mediaResolved;if(t&&t(),!this.mediaKeys&&!this.mediaKeySessions.length)return;const s=this.media,i=this.mediaKeySessions.slice();this.mediaKeySessions=[],this.mediaKeys=null,It.clearKeyUriToKeyIdMap();const r=i.length;Vt.CDMCleanupPromise=Promise.all(i.map(n=>this.removeSession(n)).concat((s==null||(e=s.setMediaKeys(null))==null?void 0:e.catch(n=>{this.log(`Could not clear media keys: ${n}`),this.hls&&this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR,fatal:!1,error:new Error(`Could not clear media keys: ${n}`)})}))||Promise.resolve())).catch(n=>{this.log(`Could not close sessions and clear media keys: ${n}`),this.hls&&this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,fatal:!1,error:new Error(`Could not close sessions and clear media keys: ${n}`)})}).then(()=>{r&&this.log("finished closing key sessions and clearing media keys")})}onManifestLoading(){this._clear()}onManifestLoaded(e,{sessionKeys:t}){if(!(!t||!this.config.emeEnabled)&&!this.keyFormatPromise){const s=t.reduce((i,r)=>(i.indexOf(r.keyFormat)===-1&&i.push(r.keyFormat),i),[]);this.log(`Selecting key-system from session-keys ${s.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(s)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:s,decryptdata:i}=e;if(t){this.log(`Remove licenses and keys and close session "${t.sessionId}" keyId: ${Re(i?.keyId||[])}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),s&&s.readyState!==XMLHttpRequest.DONE&&s.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const r=this.mediaKeySessions.indexOf(e);r>-1&&this.mediaKeySessions.splice(r,1);const{keyStatusTimeouts:n}=e;n&&Object.keys(n).forEach(l=>self.clearTimeout(n[l]));const{drmSystemOptions:o}=this.config;return(Gc(o)?new Promise((l,h)=>{self.setTimeout(()=>h(new Error("MediaKeySession.remove() timeout")),8e3),t.remove().then(l).catch(h)}):Promise.resolve()).catch(l=>{this.log(`Could not remove session: ${l}`),this.hls&&this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR,fatal:!1,error:new Error(`Could not remove session: ${l}`)})}).then(()=>t.close()).catch(l=>{this.log(`Could not close session: ${l}`),this.hls&&this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,fatal:!1,error:new Error(`Could not close session: ${l}`)})})}return Promise.resolve()}}Vt.CDMCleanupPromise=void 0;function vs(a){if(!a)throw new Error("Could not read keyId of undefined decryptdata");if(a.keyId===null)throw new Error("keyId is null");return Re(a.keyId)}function ad(a,e){if(a.keyId&&e.mediaKeysSession.keyStatuses.has(a.keyId))return e.mediaKeysSession.keyStatuses.get(a.keyId);if(a.matches(e.decryptdata))return e.keyStatus}class $e extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}function On(a,e){const t=a==="output-restricted",s=t?_.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:_.KEY_SYSTEM_STATUS_INTERNAL_ERROR;return new $e({type:W.KEY_SYSTEM_ERROR,details:s,fatal:!1,decryptdata:e},t?"HDCP level output restricted":`key status changed to "${a}"`)}class od{constructor(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.on(m.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListeners(){this.hls.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.off(m.MEDIA_DETACHING,this.onMediaDetaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const s=this.hls.config;if(s.capLevelOnFPSDrop){const i=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=i,i&&typeof i.getVideoPlaybackQuality=="function"&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),s.fpsDroppedMonitoringPeriod)}}onMediaDetaching(){this.media=null}checkFPS(e,t,s){const i=performance.now();if(t){if(this.lastTime){const r=i-this.lastTime,n=s-this.lastDroppedFrames,o=t-this.lastDecodedFrames,c=1e3*n/r,l=this.hls;if(l.trigger(m.FPS_DROP,{currentDropped:n,currentDecoded:o,totalDroppedFrames:s}),c>0&&n>l.config.fpsDroppedMonitoringThreshold*o){let h=l.currentLevel;l.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+h),h>0&&(l.autoLevelCapping===-1||l.autoLevelCapping>=h)&&(h=h-1,l.trigger(m.FPS_DROP_LEVEL_CAPPING,{level:h,droppedLevel:l.currentLevel}),l.autoLevelCapping=h,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=s,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}}function So(a,e){let t;try{t=new Event("addtrack")}catch{t=document.createEvent("Event"),t.initEvent("addtrack",!1,!1)}t.track=a,e.dispatchEvent(t)}function xo(a,e){const t=a.mode;if(t==="disabled"&&(a.mode="hidden"),a.cues&&!a.cues.getCueById(e.id))try{if(a.addCue(e),!a.cues.getCueById(e.id))throw new Error(`addCue is failed for: ${e}`)}catch(s){ne.debug(`[texttrack-utils]: ${s}`);try{const i=new self.TextTrackCue(e.startTime,e.endTime,e.text);i.id=e.id,a.addCue(i)}catch(i){ne.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${i}`)}}t==="disabled"&&(a.mode=t)}function $t(a,e){const t=a.mode;if(t==="disabled"&&(a.mode="hidden"),a.cues)for(let s=a.cues.length;s--;)e&&a.cues[s].removeEventListener("enter",e),a.removeCue(a.cues[s]);t==="disabled"&&(a.mode=t)}function qi(a,e,t,s){const i=a.mode;if(i==="disabled"&&(a.mode="hidden"),a.cues&&a.cues.length>0){const r=cd(a.cues,e,t);for(let n=0;na[t].endTime)return-1;let s=0,i=t,r;for(;s<=i;)if(r=Math.floor((i+s)/2),ea[r].startTime&&s-1)for(let r=i,n=a.length;r=e&&o.endTime<=t)s.push(o);else if(o.startTime>t)return s}return s}function ws(a){const e=[];for(let t=0;tthis.pollTrackChange(0),this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let t=null;const s=ws(this.media.textTracks);for(let r=0;r-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.LEVEL_LOADING,this.onLevelLoading,this),e.on(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(m.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(m.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.LEVEL_LOADING,this.onLevelLoading,this),e.off(m.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(m.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(m.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(e,t){const s=this.media;if(!s)return;const i=!!t.transferMedia;if(self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||s.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),this.subtitleTrack=-1,this.media=null,i)return;ws(s.textTracks).forEach(n=>{$t(n)})}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:s,groupId:i,details:r}=t,n=this.tracksInGroup[s];if(!n||n.groupId!==i){this.warn(`Subtitle track with id:${s} and group:${i} not found in active group ${n?.groupId}`);return}const o=n.details;n.details=t.details,this.log(`Subtitle track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,t,o)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const s=t.subtitleGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||i?.length!==s?.length||s!=null&&s.some(n=>i?.indexOf(n)===-1)){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const n=this.tracks.filter(h=>!s||s.indexOf(h.groupId)!==-1);if(n.length)this.selectDefaultTrack&&!n.some(h=>h.default)&&(this.selectDefaultTrack=!1),n.forEach((h,u)=>{h.id=u});else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=n;const o=this.hls.config.subtitlePreference;if(!r&&o){this.selectDefaultTrack=!1;const h=st(o,n);if(h>-1)r=n[h];else{const u=st(o,this.tracks);r=this.tracks[u]}}let c=this.findTrackId(r);c===-1&&r&&(c=this.findTrackId(null));const l={subtitleTracks:n};this.log(`Updating subtitle tracks, ${n.length} track(s) found in "${s?.join(",")}" group-id`),this.hls.trigger(m.SUBTITLE_TRACKS_UPDATED,l),c!==-1&&this.trackId===-1&&this.setSubtitleTrack(c)}}findTrackId(e){const t=this.tracksInGroup,s=this.selectDefaultTrack;for(let i=0;i-1){const r=this.tracksInGroup[i];return this.setSubtitleTrack(i),r}else{if(s)return null;{const r=st(e,t);if(r>-1)return t[r]}}}}return null}loadPlaylist(e){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentTrack)&&this.scheduleLoading(this.currentTrack,e)}loadingPlaylist(e,t){super.loadingPlaylist(e,t);const s=e.id,i=e.groupId,r=this.getUrlWithDirectives(e.url,t),n=e.details,o=n?.age;this.log(`Loading subtitle ${s} "${e.name}" lang:${e.lang} group:${i}${t?.msn!==void 0?" at sn "+t.msn+" part "+t.part:""}${o&&n.live?" age "+o.toFixed(1)+(n.type&&" "+n.type||""):""} ${r}`),this.hls.trigger(m.SUBTITLE_TRACK_LOADING,{url:r,id:s,groupId:i,deliveryDirectives:t||null,track:e})}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=ws(e.textTracks),s=this.currentTrack;let i;if(s&&(i=t.filter(r=>Vi(s,r))[0],i||this.warn(`Unable to find subtitle TextTrack with name "${s.name}" and language "${s.lang}"`)),[].slice.call(t).forEach(r=>{r.mode!=="disabled"&&r!==i&&(r.mode="disabled")}),i){const r=this.subtitleDisplay?"showing":"hidden";i.mode!==r&&(i.mode=r)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media){this.queuedDefaultTrack=e;return}if(e<-1||e>=t.length||!V(e)){this.warn(`Invalid subtitle track id: ${e}`);return}this.selectDefaultTrack=!1;const s=this.currentTrack,i=t[e]||null;if(this.trackId=e,this.currentTrack=i,this.toggleTrackModes(),!i){this.hls.trigger(m.SUBTITLE_TRACK_SWITCH,{id:e});return}const r=!!i.details&&!i.details.live;if(e===this.trackId&&i===s&&r)return;this.log(`Switching to subtitle-track ${e}`+(i?` "${i.name}" lang:${i.lang} group:${i.groupId}`:""));const{id:n,groupId:o="",name:c,type:l,url:h}=i;this.hls.trigger(m.SUBTITLE_TRACK_SWITCH,{id:n,groupId:o,name:c,type:l,url:h});const u=this.switchParams(i.url,s?.details,i.details);this.loadPlaylist(u)}}function ud(){try{return crypto.randomUUID()}catch{try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch{let t=new Date().getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{const r=(t+Math.random()*16)%16|0;return t=Math.floor(t/16),(i=="x"?r:r&3|8).toString(16)})}}}function ts(a){let e=5381,t=a.length;for(;t;)e=e*33^a.charCodeAt(--t);return(e>>>0).toString()}const Ht=.025;let qs=(function(a){return a[a.Point=0]="Point",a[a.Range=1]="Range",a})({});function dd(a,e,t){return`${a.identifier}-${t+1}-${ts(e)}`}class fd{constructor(e,t){this.base=void 0,this._duration=null,this._timelineStart=null,this.appendInPlaceDisabled=void 0,this.appendInPlaceStarted=void 0,this.dateRange=void 0,this.hasPlayed=!1,this.cumulativeDuration=0,this.resumeOffset=NaN,this.playoutLimit=NaN,this.restrictions={skip:!1,jump:!1},this.snapOptions={out:!1,in:!1},this.assetList=[],this.assetListLoader=void 0,this.assetListResponse=null,this.resumeAnchor=void 0,this.error=void 0,this.resetOnResume=void 0,this.base=t,this.dateRange=e,this.setDateRange(e)}setDateRange(e){this.dateRange=e,this.resumeOffset=e.attr.optionalFloat("X-RESUME-OFFSET",this.resumeOffset),this.playoutLimit=e.attr.optionalFloat("X-PLAYOUT-LIMIT",this.playoutLimit),this.restrictions=e.attr.enumeratedStringList("X-RESTRICT",this.restrictions),this.snapOptions=e.attr.enumeratedStringList("X-SNAP",this.snapOptions)}reset(){var e;this.appendInPlaceStarted=!1,(e=this.assetListLoader)==null||e.destroy(),this.assetListLoader=void 0,this.supplementsPrimary||(this.assetListResponse=null,this.assetList=[],this._duration=null)}isAssetPastPlayoutLimit(e){var t;if(e>0&&e>=this.assetList.length)return!0;const s=this.playoutLimit;return e<=0||isNaN(s)?!1:s===0?!0:(((t=this.assetList[e])==null?void 0:t.startOffset)||0)>s}findAssetIndex(e){return this.assetList.indexOf(e)}get identifier(){return this.dateRange.id}get startDate(){return this.dateRange.startDate}get startTime(){const e=this.dateRange.startTime;if(this.snapOptions.out){const t=this.dateRange.tagAnchor;if(t)return yi(e,t)}return e}get startOffset(){return this.cue.pre?0:this.startTime}get startIsAligned(){if(this.startTime===0||this.snapOptions.out)return!0;const e=this.dateRange.tagAnchor;if(e){const t=this.dateRange.startTime,s=yi(t,e);return t-s<.1}return!1}get resumptionOffset(){const e=this.resumeOffset,t=V(e)?e:this.duration;return this.cumulativeDuration+t}get resumeTime(){const e=this.startOffset+this.resumptionOffset;if(this.snapOptions.in){const t=this.resumeAnchor;if(t)return yi(e,t)}return e}get appendInPlace(){return this.appendInPlaceStarted?!0:this.appendInPlaceDisabled?!1:!!(!this.cue.once&&!this.cue.pre&&this.startIsAligned&&(isNaN(this.playoutLimit)&&isNaN(this.resumeOffset)||this.resumeOffset&&this.duration&&Math.abs(this.resumeOffset-this.duration)0||this.assetListResponse!==null}toString(){return gd(this)}}function yi(a,e){return a-e.start":a.cue.post?"":""}${a.timelineStart.toFixed(2)}-${a.resumeTime.toFixed(2)}]`}function Ut(a){const e=a.timelineStart,t=a.duration||0;return`["${a.identifier}" ${e.toFixed(2)}-${(e+t).toFixed(2)}]`}class md{constructor(e,t,s,i){this.hls=void 0,this.interstitial=void 0,this.assetItem=void 0,this.tracks=null,this.hasDetails=!1,this.mediaAttached=null,this._currentTime=void 0,this._bufferedEosTime=void 0,this.checkPlayout=()=>{this.reachedPlayout(this.currentTime)&&this.hls&&this.hls.trigger(m.PLAYOUT_LIMIT_REACHED,{})};const r=this.hls=new e(t);this.interstitial=s,this.assetItem=i;const n=()=>{this.hasDetails=!0};r.once(m.LEVEL_LOADED,n),r.once(m.AUDIO_TRACK_LOADED,n),r.once(m.SUBTITLE_TRACK_LOADED,n),r.on(m.MEDIA_ATTACHING,(o,{media:c})=>{this.removeMediaListeners(),this.mediaAttached=c,this.interstitial.playoutLimit&&(c.addEventListener("timeupdate",this.checkPlayout),this.appendInPlace&&r.on(m.BUFFER_APPENDED,()=>{const h=this.bufferedEnd;this.reachedPlayout(h)&&(this._bufferedEosTime=h,r.trigger(m.BUFFERED_TO_END,void 0))}))})}get appendInPlace(){return this.interstitial.appendInPlace}loadSource(){const e=this.hls;if(e)if(e.url)e.levels.length&&!e.started&&e.startLoad(-1,!0);else{let t=this.assetItem.uri;try{t=Ao(t,e.config.primarySessionId||"").href}catch{}e.loadSource(t)}}bufferedInPlaceToEnd(e){var t;if(!this.appendInPlace)return!1;if((t=this.hls)!=null&&t.bufferedToEnd)return!0;if(!e)return!1;const s=Math.min(this._bufferedEosTime||1/0,this.duration),i=this.timelineOffset,r=Q.bufferInfo(e,i,0);return this.getAssetTime(r.end)>=s-.02}reachedPlayout(e){const s=this.interstitial.playoutLimit;return this.startOffset+e>=s}get destroyed(){var e;return!((e=this.hls)!=null&&e.userConfig)}get assetId(){return this.assetItem.identifier}get interstitialId(){return this.assetItem.parentIdentifier}get media(){var e;return((e=this.hls)==null?void 0:e.media)||null}get bufferedEnd(){const e=this.media||this.mediaAttached;if(!e)return this._bufferedEosTime?this._bufferedEosTime:this.currentTime;const t=Q.bufferInfo(e,e.currentTime,.001);return this.getAssetTime(t.end)}get currentTime(){const e=this.media||this.mediaAttached;return e?this.getAssetTime(e.currentTime):this._currentTime||0}get duration(){const e=this.assetItem.duration;if(!e)return 0;const t=this.interstitial.playoutLimit;if(t){const s=t-this.startOffset;if(s>0&&s1/9e4&&this.hls){if(this.hasDetails)throw new Error("Cannot set timelineOffset after playlists are loaded");this.hls.config.timelineOffset=e}}}getAssetTime(e){const t=this.timelineOffset,s=this.duration;return Math.min(Math.max(0,e-t),s)}removeMediaListeners(){const e=this.mediaAttached;e&&(this._currentTime=e.currentTime,this.bufferSnapShot(),e.removeEventListener("timeupdate",this.checkPlayout))}bufferSnapShot(){if(this.mediaAttached){var e;(e=this.hls)!=null&&e.bufferedToEnd&&(this._bufferedEosTime=this.bufferedEnd)}}destroy(){this.removeMediaListeners(),this.hls&&this.hls.destroy(),this.hls=null,this.tracks=this.mediaAttached=this.checkPlayout=null}attachMedia(e){var t;this.loadSource(),(t=this.hls)==null||t.attachMedia(e)}detachMedia(){var e;this.removeMediaListeners(),this.mediaAttached=null,(e=this.hls)==null||e.detachMedia()}resumeBuffering(){var e;(e=this.hls)==null||e.resumeBuffering()}pauseBuffering(){var e;(e=this.hls)==null||e.pauseBuffering()}transferMedia(){var e;return this.bufferSnapShot(),((e=this.hls)==null?void 0:e.transferMedia())||null}resetDetails(){const e=this.hls;if(e&&this.hasDetails){e.stopLoad();const t=s=>delete s.details;e.levels.forEach(t),e.allAudioTracks.forEach(t),e.allSubtitleTracks.forEach(t),this.hasDetails=!1}}on(e,t,s){var i;(i=this.hls)==null||i.on(e,t)}once(e,t,s){var i;(i=this.hls)==null||i.once(e,t)}off(e,t,s){var i;(i=this.hls)==null||i.off(e,t)}toString(){var e;return`HlsAssetPlayer: ${Ut(this.assetItem)} ${(e=this.hls)==null?void 0:e.sessionId} ${this.appendInPlace?"append-in-place":""}`}}const Fn=.033;class pd extends qe{constructor(e,t){super("interstitials-sched",t),this.onScheduleUpdate=void 0,this.eventMap={},this.events=null,this.items=null,this.durations={primary:0,playout:0,integrated:0},this.onScheduleUpdate=e}destroy(){this.reset(),this.onScheduleUpdate=null}reset(){this.eventMap={},this.setDurations(0,0,0),this.events&&this.events.forEach(e=>e.reset()),this.events=this.items=null}resetErrorsInRange(e,t){return this.events?this.events.reduce((s,i)=>e<=i.startOffset&&t>i.startOffset?(delete i.error,s+1):s,0):0}get duration(){const e=this.items;return e?e[e.length-1].end:0}get length(){return this.items?this.items.length:0}getEvent(e){return e&&this.eventMap[e]||null}hasEvent(e){return e in this.eventMap}findItemIndex(e,t){if(e.event)return this.findEventIndex(e.event.identifier);let s=-1;e.nextEvent?s=this.findEventIndex(e.nextEvent.identifier)-1:e.previousEvent&&(s=this.findEventIndex(e.previousEvent.identifier)+1);const i=this.items;if(i)for(i[s]||(t===void 0&&(t=e.start),s=this.findItemIndexAtTime(t));s>=0&&(r=i[s])!=null&&r.event;){var r;s--}return s}findItemIndexAtTime(e,t){const s=this.items;if(s)for(let i=0;ir.start&&e1)for(let r=0;ro&&(t!o.includes(l.identifier)):[];n.length&&n.sort((l,h)=>{const u=l.cue.pre,d=l.cue.post,g=h.cue.pre,f=h.cue.post;if(u&&!g)return-1;if(g&&!u||d&&!f)return 1;if(f&&!d)return-1;if(!u&&!g&&!d&&!f){const p=l.startTime,y=h.startTime;if(p!==y)return p-y}return l.dateRange.tagOrder-h.dateRange.tagOrder}),this.events=n,c.forEach(l=>{this.removeEvent(l)}),this.updateSchedule(e,c)}updateSchedule(e,t=[],s=!1){const i=this.events||[];if(i.length||t.length||this.length<2){const r=this.items,n=this.parseSchedule(i,e);(s||t.length||r?.length!==n.length||n.some((c,l)=>Math.abs(c.playout.start-r[l].playout.start)>.005||Math.abs(c.playout.end-r[l].playout.end)>.005))&&(this.items=n,this.onScheduleUpdate(t,r))}}parseDateRanges(e,t,s){const i=[],r=Object.keys(e);for(let n=0;n!c.error&&!(c.cue.once&&c.hasPlayed)),e.length){this.resolveOffsets(e,t);let c=0,l=0;if(e.forEach((h,u)=>{const d=h.cue.pre,g=h.cue.post,f=e[u-1]||null,p=h.appendInPlace,y=g?r:h.startOffset,E=h.duration,v=h.timelineOccupancy===qs.Range?E:0,T=h.resumptionOffset,S=f?.startTime===y,x=y+h.cumulativeDuration;let D=p?x+E:y+T;if(d||!g&&y<=0){const L=l;l+=v,h.timelineStart=x;const R=n;n+=E,s.push({event:h,start:x,end:D,playout:{start:R,end:n},integrated:{start:L,end:l}})}else if(y<=r){if(!S){const I=y-c;if(I>Fn){const C=c,$=l;l+=I;const K=n;n+=I;const H={previousEvent:e[u-1]||null,nextEvent:h,start:C,end:C+I,playout:{start:K,end:n},integrated:{start:$,end:l}};s.push(H)}else I>0&&f&&(f.cumulativeDuration+=I,s[s.length-1].end=y)}g&&(D=x),h.timelineStart=x;const L=l;l+=v;const R=n;n+=E,s.push({event:h,start:x,end:D,playout:{start:R,end:n},integrated:{start:L,end:l}})}else return;const A=h.resumeTime;g||A>r?c=r:c=A}),c{const l=o.cue.pre,h=o.cue.post,u=l?0:h?i:o.startTime;this.updateAssetDurations(o),n===u?o.cumulativeDuration=r:(r=0,n=u),!h&&o.snapOptions.in&&(o.resumeAnchor=kt(null,s.fragments,o.startOffset+o.resumptionOffset,0,0)||void 0),o.appendInPlace&&!o.appendInPlaceStarted&&(this.primaryCanResumeInPlaceAt(o,t)||(o.appendInPlace=!1)),!o.appendInPlace&&c+1Ht?(this.log(`"${e.identifier}" resumption ${s} not aligned with estimated timeline end ${i}`),!1):!Object.keys(t).some(n=>{const o=t[n].details,c=o.edge;if(s>=c)return this.log(`"${e.identifier}" resumption ${s} past ${n} playlist end ${c}`),!1;const l=kt(null,o.fragments,s);if(!l)return this.log(`"${e.identifier}" resumption ${s} does not align with any fragments in ${n} playlist (${o.fragStart}-${o.fragmentEnd})`),!0;const h=n==="audio"?.175:0;return Math.abs(l.start-s){const y=d.data,E=y?.ASSETS;if(!Array.isArray(E)){const v=this.assignAssetListError(e,_.ASSET_LIST_PARSING_ERROR,new Error("Invalid interstitial asset list"),f.url,g,p);this.hls.trigger(m.ERROR,v);return}e.assetListResponse=y,this.hls.trigger(m.ASSET_LIST_LOADED,{event:e,assetListResponse:y,networkDetails:p})},onError:(d,g,f,p)=>{const y=this.assignAssetListError(e,_.ASSET_LIST_LOAD_ERROR,new Error(`Error loading X-ASSET-LIST: HTTP status ${d.code} ${d.text} (${g.url})`),g.url,p,f);this.hls.trigger(m.ERROR,y)},onTimeout:(d,g,f)=>{const p=this.assignAssetListError(e,_.ASSET_LIST_LOAD_TIMEOUT,new Error(`Timeout loading X-ASSET-LIST (${g.url})`),g.url,d,f);this.hls.trigger(m.ERROR,p)}};return o.load(c,h,u),this.hls.trigger(m.ASSET_LIST_LOADING,{event:e}),o}assignAssetListError(e,t,s,i,r,n){return e.error=s,{type:W.NETWORK_ERROR,details:t,fatal:!1,interstitial:e,url:i,error:s,networkDetails:n,stats:r}}}function Mn(a){var e;a==null||(e=a.play())==null||e.catch(()=>{})}function Ts(a,e){return`[${a}] Advancing timeline position to ${e}`}class Ed extends qe{constructor(e,t){super("interstitials",e.logger),this.HlsPlayerClass=void 0,this.hls=void 0,this.assetListLoader=void 0,this.mediaSelection=null,this.altSelection=null,this.media=null,this.detachedData=null,this.requiredTracks=null,this.manager=null,this.playerQueue=[],this.bufferedPos=-1,this.timelinePos=-1,this.schedule=void 0,this.playingItem=null,this.bufferingItem=null,this.waitingItem=null,this.endedItem=null,this.playingAsset=null,this.endedAsset=null,this.bufferingAsset=null,this.shouldPlay=!1,this.onPlay=()=>{this.shouldPlay=!0},this.onPause=()=>{this.shouldPlay=!1},this.onSeeking=()=>{const s=this.currentTime;if(s===void 0||this.playbackDisabled||!this.schedule)return;const i=s-this.timelinePos;if(Math.abs(i)<1/7056e5)return;const n=i<=-.01;this.timelinePos=s,this.bufferedPos=s;const o=this.playingItem;if(!o){this.checkBuffer();return}if(n&&this.schedule.resetErrorsInRange(s,s-i)&&this.updateSchedule(!0),this.checkBuffer(),n&&s=o.end){var c;const g=this.findItemIndex(o);let f=this.schedule.findItemIndexAtTime(s);if(f===-1&&(f=g+(n?-1:1),this.log(`seeked ${n?"back ":""}to position not covered by schedule ${s} (resolving from ${g} to ${f})`)),!this.isInterstitial(o)&&(c=this.media)!=null&&c.paused&&(this.shouldPlay=!1),!n&&f>g){const p=this.schedule.findJumpRestrictedIndex(g+1,f);if(p>g){this.setSchedulePosition(p);return}}this.setSchedulePosition(f);return}const l=this.playingAsset;if(!l){if(this.playingLastItem&&this.isInterstitial(o)){const g=o.event.assetList[0];g&&(this.endedItem=this.playingItem,this.playingItem=null,this.setScheduleToAssetAtTime(s,g))}return}const h=l.timelineStart,u=l.duration||0;if(n&&s=h+u){var d;(d=o.event)!=null&&d.appendInPlace&&(this.clearAssetPlayers(o.event,o),this.flushFrontBuffer(s)),this.setScheduleToAssetAtTime(s,l)}},this.onTimeupdate=()=>{const s=this.currentTime;if(s===void 0||this.playbackDisabled)return;if(s>this.timelinePos)this.timelinePos=s,s>this.bufferedPos&&this.checkBuffer();else return;const i=this.playingItem;if(!i||this.playingLastItem)return;if(s>=i.end){this.timelinePos=i.end;const o=this.findItemIndex(i);this.setSchedulePosition(o+1)}const r=this.playingAsset;if(!r)return;const n=r.timelineStart+(r.duration||0);s>=n&&this.setScheduleToAssetAtTime(s,r)},this.onScheduleUpdate=(s,i)=>{const r=this.schedule;if(!r)return;const n=this.playingItem,o=r.events||[],c=r.items||[],l=r.durations,h=s.map(p=>p.identifier),u=!!(o.length||h.length);(u||i)&&this.log(`INTERSTITIALS_UPDATED (${o.length}): ${o} +Schedule: ${c.map(p=>je(p))} pos: ${this.timelinePos}`),h.length&&this.log(`Removed events ${h}`);let d=null,g=null;n&&(d=this.updateItem(n,this.timelinePos),this.itemsMatch(n,d)?this.playingItem=d:this.waitingItem=this.endedItem=null),this.waitingItem=this.updateItem(this.waitingItem),this.endedItem=this.updateItem(this.endedItem);const f=this.bufferingItem;if(f&&(g=this.updateItem(f,this.bufferedPos),this.itemsMatch(f,g)?this.bufferingItem=g:f.event&&(this.bufferingItem=this.playingItem,this.clearInterstitial(f.event,null))),s.forEach(p=>{p.assetList.forEach(y=>{this.clearAssetPlayer(y.identifier,null)})}),this.playerQueue.forEach(p=>{if(p.interstitial.appendInPlace){const y=p.assetItem.timelineStart,E=p.timelineOffset-y;if(E)try{p.timelineOffset=y}catch(v){Math.abs(E)>Ht&&this.warn(`${v} ("${p.assetId}" ${p.timelineOffset}->${y})`)}}}),u||i){if(this.hls.trigger(m.INTERSTITIALS_UPDATED,{events:o.slice(0),schedule:c.slice(0),durations:l,removedIds:h}),this.isInterstitial(n)&&h.includes(n.event.identifier)){this.warn(`Interstitial "${n.event.identifier}" removed while playing`),this.primaryFallback(n.event);return}n&&this.trimInPlace(d,n),f&&g!==d&&this.trimInPlace(g,f),this.checkBuffer()}},this.hls=e,this.HlsPlayerClass=t,this.assetListLoader=new yd(e),this.schedule=new pd(this.onScheduleUpdate,e.logger),this.registerListeners()}registerListeners(){const e=this.hls;e&&(e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(m.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),e.on(m.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(m.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),e.on(m.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),e.on(m.ASSET_LIST_LOADED,this.onAssetListLoaded,this),e.on(m.BUFFER_APPENDED,this.onBufferAppended,this),e.on(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(m.BUFFERED_TO_END,this.onBufferedToEnd,this),e.on(m.MEDIA_ENDED,this.onMediaEnded,this),e.on(m.ERROR,this.onError,this),e.on(m.DESTROYING,this.onDestroying,this))}unregisterListeners(){const e=this.hls;e&&(e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(m.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),e.off(m.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(m.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),e.off(m.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),e.off(m.ASSET_LIST_LOADED,this.onAssetListLoaded,this),e.off(m.BUFFER_CODECS,this.onBufferCodecs,this),e.off(m.BUFFER_APPENDED,this.onBufferAppended,this),e.off(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(m.BUFFERED_TO_END,this.onBufferedToEnd,this),e.off(m.MEDIA_ENDED,this.onMediaEnded,this),e.off(m.ERROR,this.onError,this),e.off(m.DESTROYING,this.onDestroying,this))}startLoad(){this.resumeBuffering()}stopLoad(){this.pauseBuffering()}resumeBuffering(){var e;(e=this.getBufferingPlayer())==null||e.resumeBuffering()}pauseBuffering(){var e;(e=this.getBufferingPlayer())==null||e.pauseBuffering()}destroy(){this.unregisterListeners(),this.stopLoad(),this.assetListLoader&&this.assetListLoader.destroy(),this.emptyPlayerQueue(),this.clearScheduleState(),this.schedule&&this.schedule.destroy(),this.media=this.detachedData=this.mediaSelection=this.requiredTracks=this.altSelection=this.schedule=this.manager=null,this.hls=this.HlsPlayerClass=this.log=null,this.assetListLoader=null,this.onPlay=this.onPause=this.onSeeking=this.onTimeupdate=null,this.onScheduleUpdate=null}onDestroying(){const e=this.primaryMedia||this.media;e&&this.removeMediaListeners(e)}removeMediaListeners(e){Me(e,"play",this.onPlay),Me(e,"pause",this.onPause),Me(e,"seeking",this.onSeeking),Me(e,"timeupdate",this.onTimeupdate)}onMediaAttaching(e,t){const s=this.media=t.media;we(s,"seeking",this.onSeeking),we(s,"timeupdate",this.onTimeupdate),we(s,"play",this.onPlay),we(s,"pause",this.onPause)}onMediaAttached(e,t){const s=this.effectivePlayingItem,i=this.detachedData;if(this.detachedData=null,s===null)this.checkStart();else if(!i){this.clearScheduleState();const r=this.findItemIndex(s);this.setSchedulePosition(r)}}clearScheduleState(){this.log("clear schedule state"),this.playingItem=this.bufferingItem=this.waitingItem=this.endedItem=this.playingAsset=this.endedAsset=this.bufferingAsset=null}onMediaDetaching(e,t){const s=!!t.transferMedia,i=this.media;if(this.media=null,!s&&(i&&this.removeMediaListeners(i),this.detachedData)){const r=this.getBufferingPlayer();r&&(this.log(`Removing schedule state for detachedData and ${r}`),this.playingAsset=this.endedAsset=this.bufferingAsset=this.bufferingItem=this.waitingItem=this.detachedData=null,r.detachMedia()),this.shouldPlay=!1}}get interstitialsManager(){if(!this.hls)return null;if(this.manager)return this.manager;const e=this,t=()=>e.bufferingItem||e.waitingItem,s=u=>u&&e.getAssetPlayer(u.identifier),i=(u,d,g,f,p)=>{if(u){let y=u[d].start;const E=u.event;if(E){if(d==="playout"||E.timelineOccupancy!==qs.Point){const v=s(g);v?.interstitial===E&&(y+=v.assetItem.startOffset+v[p])}}else{const v=f==="bufferedPos"?n():e[f];y+=v-u.start}return y}return 0},r=(u,d)=>{var g;if(u!==0&&d!=="primary"&&(g=e.schedule)!=null&&g.length){var f;const p=e.schedule.findItemIndexAtTime(u),y=(f=e.schedule.items)==null?void 0:f[p];if(y){const E=y[d].start-y.start;return u+E}}return u},n=()=>{const u=e.bufferedPos;return u===Number.MAX_VALUE?o("primary"):Math.max(u,0)},o=u=>{var d,g;return(d=e.primaryDetails)!=null&&d.live?e.primaryDetails.edge:((g=e.schedule)==null?void 0:g.durations[u])||0},c=(u,d)=>{var g,f;const p=e.effectivePlayingItem;if(p!=null&&(g=p.event)!=null&&g.restrictions.skip||!e.schedule)return;e.log(`seek to ${u} "${d}"`);const y=e.effectivePlayingItem,E=e.schedule.findItemIndexAtTime(u,d),v=(f=e.schedule.items)==null?void 0:f[E],T=e.getBufferingPlayer(),S=T?.interstitial,x=S?.appendInPlace,D=y&&e.itemsMatch(y,v);if(y&&(x||D)){const A=s(e.playingAsset),L=A?.media||e.primaryMedia;if(L){const R=d==="primary"?L.currentTime:i(y,d,e.playingAsset,"timelinePos","currentTime"),I=u-R,C=(x?R:L.currentTime)+I;if(C>=0&&(!A||x||C<=A.duration)){L.currentTime=C;return}}}if(v){let A=u;if(d!=="primary"){const R=v[d].start,I=u-R;A=v.start+I}const L=!e.isInterstitial(v);if((!e.isInterstitial(y)||y.event.appendInPlace)&&(L||v.event.appendInPlace)){const R=e.media||(x?T?.media:null);R&&(R.currentTime=A)}else if(y){const R=e.findItemIndex(y);if(E>R){const C=e.schedule.findJumpRestrictedIndex(R+1,E);if(C>R){e.setSchedulePosition(C);return}}let I=0;if(L)e.timelinePos=A,e.checkBuffer();else{const C=v.event.assetList,$=u-(v[d]||v).start;for(let K=C.length;K--;){const H=C[K];if(H.duration&&$>=H.startOffset&&${const u=e.effectivePlayingItem;if(e.isInterstitial(u))return u;const d=t();return e.isInterstitial(d)?d:null},h={get bufferedEnd(){const u=t(),d=e.bufferingItem;if(d&&d===u){var g;return i(d,"playout",e.bufferingAsset,"bufferedPos","bufferedEnd")-d.playout.start||((g=e.bufferingAsset)==null?void 0:g.startOffset)||0}return 0},get currentTime(){const u=l(),d=e.effectivePlayingItem;return d&&d===u?i(d,"playout",e.effectivePlayingAsset,"timelinePos","currentTime")-d.playout.start:0},set currentTime(u){const d=l(),g=e.effectivePlayingItem;g&&g===d&&c(u+g.playout.start,"playout")},get duration(){const u=l();return u?u.playout.end-u.playout.start:0},get assetPlayers(){var u;const d=(u=l())==null?void 0:u.event.assetList;return d?d.map(g=>e.getAssetPlayer(g.identifier)):[]},get playingIndex(){var u;const d=(u=l())==null?void 0:u.event;return d&&e.effectivePlayingAsset?d.findAssetIndex(e.effectivePlayingAsset):-1},get scheduleItem(){return l()}};return this.manager={get events(){var u;return((u=e.schedule)==null||(u=u.events)==null?void 0:u.slice(0))||[]},get schedule(){var u;return((u=e.schedule)==null||(u=u.items)==null?void 0:u.slice(0))||[]},get interstitialPlayer(){return l()?h:null},get playerQueue(){return e.playerQueue.slice(0)},get bufferingAsset(){return e.bufferingAsset},get bufferingItem(){return t()},get bufferingIndex(){const u=t();return e.findItemIndex(u)},get playingAsset(){return e.effectivePlayingAsset},get playingItem(){return e.effectivePlayingItem},get playingIndex(){const u=e.effectivePlayingItem;return e.findItemIndex(u)},primary:{get bufferedEnd(){return n()},get currentTime(){const u=e.timelinePos;return u>0?u:0},set currentTime(u){c(u,"primary")},get duration(){return o("primary")},get seekableStart(){var u;return((u=e.primaryDetails)==null?void 0:u.fragmentStart)||0}},integrated:{get bufferedEnd(){return i(t(),"integrated",e.bufferingAsset,"bufferedPos","bufferedEnd")},get currentTime(){return i(e.effectivePlayingItem,"integrated",e.effectivePlayingAsset,"timelinePos","currentTime")},set currentTime(u){c(u,"integrated")},get duration(){return o("integrated")},get seekableStart(){var u;return r(((u=e.primaryDetails)==null?void 0:u.fragmentStart)||0,"integrated")}},skip:()=>{const u=e.effectivePlayingItem,d=u?.event;if(d&&!d.restrictions.skip){const g=e.findItemIndex(u);if(d.appendInPlace){const f=u.playout.start+u.event.duration;c(f+.001,"playout")}else e.advanceAfterAssetEnded(d,g,1/0)}}}}get effectivePlayingItem(){return this.waitingItem||this.playingItem||this.endedItem}get effectivePlayingAsset(){return this.playingAsset||this.endedAsset}get playingLastItem(){var e;const t=this.playingItem,s=(e=this.schedule)==null?void 0:e.items;return!this.playbackStarted||!t||!s?!1:this.findItemIndex(t)===s.length-1}get playbackStarted(){return this.effectivePlayingItem!==null}get currentTime(){var e,t;if(this.mediaSelection===null)return;const s=this.waitingItem||this.playingItem;if(this.isInterstitial(s)&&!s.event.appendInPlace)return;let i=this.media;!i&&(e=this.bufferingItem)!=null&&(e=e.event)!=null&&e.appendInPlace&&(i=this.primaryMedia);const r=(t=i)==null?void 0:t.currentTime;if(!(r===void 0||!V(r)))return r}get primaryMedia(){var e;return this.media||((e=this.detachedData)==null?void 0:e.media)||null}isInterstitial(e){return!!(e!=null&&e.event)}retreiveMediaSource(e,t){const s=this.getAssetPlayer(e);s&&this.transferMediaFromPlayer(s,t)}transferMediaFromPlayer(e,t){const s=e.interstitial.appendInPlace,i=e.media;if(s&&i===this.primaryMedia){if(this.bufferingAsset=null,(!t||this.isInterstitial(t)&&!t.event.appendInPlace)&&t&&i){this.detachedData={media:i};return}const r=e.transferMedia();this.log(`transfer MediaSource from ${e} ${ce(r)}`),this.detachedData=r}else t&&i&&(this.shouldPlay||(this.shouldPlay=!i.paused))}transferMediaTo(e,t){var s,i;if(e.media===t)return;let r=null;const n=this.hls,o=e!==n,c=o&&e.interstitial.appendInPlace,l=(s=this.detachedData)==null?void 0:s.mediaSource;let h;if(n.media)c&&(r=n.transferMedia(),this.detachedData=r),h="Primary";else if(l){const f=this.getBufferingPlayer();f?(r=f.transferMedia(),h=`${f}`):h="detached MediaSource"}else h="detached media";if(!r){if(l)r=this.detachedData,this.log(`using detachedData: MediaSource ${ce(r)}`);else if(!this.detachedData||n.media===t){const f=this.playerQueue;f.length>1&&f.forEach(p=>{if(o&&p.interstitial.appendInPlace!==c){const y=p.interstitial;this.clearInterstitial(p.interstitial,null),y.appendInPlace=!1,y.appendInPlace&&this.warn(`Could not change append strategy for queued assets ${y}`)}}),this.hls.detachMedia(),this.detachedData={media:t}}}const u=r&&"mediaSource"in r&&((i=r.mediaSource)==null?void 0:i.readyState)!=="closed",d=u&&r?r:t;this.log(`${u?"transfering MediaSource":"attaching media"} to ${o?e:"Primary"} from ${h} (media.currentTime: ${t.currentTime})`);const g=this.schedule;if(d===r&&g){const f=o&&e.assetId===g.assetIdAtEnd;d.overrides={duration:g.duration,endOfStream:!o||f,cueRemoval:!o}}e.attachMedia(d)}onInterstitialCueEnter(){this.onTimeupdate()}checkStart(){const e=this.schedule,t=e?.events;if(!t||this.playbackDisabled||!this.media)return;this.bufferedPos===-1&&(this.bufferedPos=0);const s=this.timelinePos,i=this.effectivePlayingItem;if(s===-1){const r=this.hls.startPosition;if(this.log(Ts("checkStart",r)),this.timelinePos=r,t.length&&t[0].cue.pre){const n=e.findEventIndex(t[0].identifier);this.setSchedulePosition(n)}else if(r>=0||!this.primaryLive){const n=this.timelinePos=r>0?r:0,o=e.findItemIndexAtTime(n);this.setSchedulePosition(o)}}else if(i&&!this.playingItem){const r=e.findItemIndex(i);this.setSchedulePosition(r)}}advanceAssetBuffering(e,t){const s=e.event,i=s.findAssetIndex(t),r=Ei(s,i);if(!s.isAssetPastPlayoutLimit(r))this.bufferedToEvent(e,r);else if(this.schedule){var n;const o=(n=this.schedule.items)==null?void 0:n[this.findItemIndex(e)+1];o&&this.bufferedToItem(o)}}advanceAfterAssetEnded(e,t,s){const i=Ei(e,s);if(e.isAssetPastPlayoutLimit(i)){if(this.schedule){const r=this.schedule.items;if(r){const n=t+1,o=r.length;if(n>=o){this.setSchedulePosition(-1);return}const c=e.resumeTime;this.timelinePos=0?i[e]:null;this.log(`setSchedulePosition ${e}, ${t} (${r&&je(r)}) pos: ${this.timelinePos}`);const n=this.waitingItem||this.playingItem,o=this.playingLastItem;if(this.isInterstitial(n)){const h=n.event,u=this.playingAsset,d=u?.identifier,g=d?this.getAssetPlayer(d):null;if(g&&d&&(!this.eventItemsMatch(n,r)||t!==void 0&&d!==h.assetList[t].identifier)){var c;const f=h.findAssetIndex(u);if(this.log(`INTERSTITIAL_ASSET_ENDED ${f+1}/${h.assetList.length} ${Ut(u)}`),this.endedAsset=u,this.playingAsset=null,this.hls.trigger(m.INTERSTITIAL_ASSET_ENDED,{asset:u,assetListIndex:f,event:h,schedule:i.slice(0),scheduleIndex:e,player:g}),n!==this.playingItem){this.itemsMatch(n,this.playingItem)&&!this.playingAsset&&this.advanceAfterAssetEnded(h,this.findItemIndex(this.playingItem),f);return}this.retreiveMediaSource(d,r),g.media&&!((c=this.detachedData)!=null&&c.mediaSource)&&g.detachMedia()}if(!this.eventItemsMatch(n,r)&&(this.endedItem=n,this.playingItem=null,this.log(`INTERSTITIAL_ENDED ${h} ${je(n)}`),h.hasPlayed=!0,this.hls.trigger(m.INTERSTITIAL_ENDED,{event:h,schedule:i.slice(0),scheduleIndex:e}),h.cue.once)){var l;this.updateSchedule();const f=(l=this.schedule)==null?void 0:l.items;if(r&&f){const p=this.findItemIndex(r);this.advanceSchedule(p,f,t,n,o)}return}}this.advanceSchedule(e,i,t,n,o)}advanceSchedule(e,t,s,i,r){const n=this.schedule;if(!n)return;const o=t[e]||null,c=this.primaryMedia,l=this.playerQueue;if(l.length&&l.forEach(h=>{const u=h.interstitial,d=n.findEventIndex(u.identifier);(de+1)&&this.clearInterstitial(u,o)}),this.isInterstitial(o)){this.timelinePos=Math.min(Math.max(this.timelinePos,o.start),o.end);const h=o.event;if(s===void 0){s=n.findAssetIndex(h,this.timelinePos);const f=Ei(h,s-1);if(h.isAssetPastPlayoutLimit(f)||h.appendInPlace&&this.timelinePos===o.end){this.advanceAfterAssetEnded(h,e,s);return}s=f}const u=this.waitingItem;this.assetsBuffered(o,c)||this.setBufferingItem(o);let d=this.preloadAssets(h,s);if(this.eventItemsMatch(o,u||i)||(this.waitingItem=o,this.log(`INTERSTITIAL_STARTED ${je(o)} ${h.appendInPlace?"append in place":""}`),this.hls.trigger(m.INTERSTITIAL_STARTED,{event:h,schedule:t.slice(0),scheduleIndex:e})),!h.assetListLoaded){this.log(`Waiting for ASSET-LIST to complete loading ${h}`);return}if(h.assetListLoader&&(h.assetListLoader.destroy(),h.assetListLoader=void 0),!c){this.log(`Waiting for attachMedia to start Interstitial ${h}`);return}this.waitingItem=this.endedItem=null,this.playingItem=o;const g=h.assetList[s];if(!g){this.advanceAfterAssetEnded(h,e,s||0);return}if(d||(d=this.getAssetPlayer(g.identifier)),d===null||d.destroyed){const f=h.assetList.length;this.warn(`asset ${s+1}/${f} player destroyed ${h}`),d=this.createAssetPlayer(h,g,s),d.loadSource()}if(!this.eventItemsMatch(o,this.bufferingItem)&&h.appendInPlace&&this.isAssetBuffered(g))return;this.startAssetPlayer(d,s,t,e,c),this.shouldPlay&&Mn(d.media)}else o?(this.resumePrimary(o,e,i),this.shouldPlay&&Mn(this.hls.media)):r&&this.isInterstitial(i)&&(this.endedItem=null,this.playingItem=i,i.event.appendInPlace||this.attachPrimary(n.durations.primary,null))}get playbackDisabled(){return this.hls.config.enableInterstitialPlayback===!1}get primaryDetails(){var e;return(e=this.mediaSelection)==null?void 0:e.main.details}get primaryLive(){var e;return!!((e=this.primaryDetails)!=null&&e.live)}resumePrimary(e,t,s){var i,r;if(this.playingItem=e,this.playingAsset=this.endedAsset=null,this.waitingItem=this.endedItem=null,this.bufferedToItem(e),this.log(`resuming ${je(e)}`),!((i=this.detachedData)!=null&&i.mediaSource)){let o=this.timelinePos;(o=e.end)&&(o=this.getPrimaryResumption(e,t),this.log(Ts("resumePrimary",o)),this.timelinePos=o),this.attachPrimary(o,e)}if(!s)return;const n=(r=this.schedule)==null?void 0:r.items;n&&(this.log(`INTERSTITIALS_PRIMARY_RESUMED ${je(e)}`),this.hls.trigger(m.INTERSTITIALS_PRIMARY_RESUMED,{schedule:n.slice(0),scheduleIndex:t}),this.checkBuffer())}getPrimaryResumption(e,t){const s=e.start;if(this.primaryLive){const i=this.primaryDetails;if(t===0)return this.hls.startPosition;if(i&&(si.edge))return this.hls.liveSyncPosition||-1}return s}isAssetBuffered(e){const t=this.getAssetPlayer(e.identifier);return t!=null&&t.hls?t.hls.bufferedToEnd:Q.bufferInfo(this.primaryMedia,this.timelinePos,0).end+1>=e.timelineStart+(e.duration||0)}attachPrimary(e,t,s){t?this.setBufferingItem(t):this.bufferingItem=this.playingItem,this.bufferingAsset=null;const i=this.primaryMedia;if(!i)return;const r=this.hls;r.media?this.checkBuffer():(this.transferMediaTo(r,i),s&&this.startLoadingPrimaryAt(e,s)),s||(this.log(Ts("attachPrimary",e)),this.timelinePos=e,this.startLoadingPrimaryAt(e,s))}startLoadingPrimaryAt(e,t){var s;const i=this.hls;!i.loadingEnabled||!i.media||Math.abs((((s=i.mainForwardBufferInfo)==null?void 0:s.start)||i.media.currentTime)-e)>.5?i.startLoad(e,t):i.bufferingEnabled||i.resumeBuffering()}onManifestLoading(){var e;this.stopLoad(),(e=this.schedule)==null||e.reset(),this.emptyPlayerQueue(),this.clearScheduleState(),this.shouldPlay=!1,this.bufferedPos=this.timelinePos=-1,this.mediaSelection=this.altSelection=this.manager=this.requiredTracks=null,this.hls.off(m.BUFFER_CODECS,this.onBufferCodecs,this),this.hls.on(m.BUFFER_CODECS,this.onBufferCodecs,this)}onLevelUpdated(e,t){if(t.level===-1||!this.schedule)return;const s=this.hls.levels[t.level];if(!s.details)return;const i=re(re({},this.mediaSelection||this.altSelection),{},{main:s});this.mediaSelection=i,this.schedule.parseInterstitialDateRanges(i,this.hls.config.interstitialAppendInPlace),!this.effectivePlayingItem&&this.schedule.items&&this.checkStart()}onAudioTrackUpdated(e,t){const s=this.hls.audioTracks[t.id],i=this.mediaSelection;if(!i){this.altSelection=re(re({},this.altSelection),{},{audio:s});return}const r=re(re({},i),{},{audio:s});this.mediaSelection=r}onSubtitleTrackUpdated(e,t){const s=this.hls.subtitleTracks[t.id],i=this.mediaSelection;if(!i){this.altSelection=re(re({},this.altSelection),{},{subtitles:s});return}const r=re(re({},i),{},{subtitles:s});this.mediaSelection=r}onAudioTrackSwitching(e,t){const s=Hr(t);this.playerQueue.forEach(({hls:i})=>i&&(i.setAudioOption(t)||i.setAudioOption(s)))}onSubtitleTrackSwitch(e,t){const s=Hr(t);this.playerQueue.forEach(({hls:i})=>i&&(i.setSubtitleOption(t)||t.id!==-1&&i.setSubtitleOption(s)))}onBufferCodecs(e,t){const s=t.tracks;s&&(this.requiredTracks=s)}onBufferAppended(e,t){this.checkBuffer()}onBufferFlushed(e,t){const s=this.playingItem;if(s&&!this.itemsMatch(s,this.bufferingItem)&&!this.isInterstitial(s)){const i=this.timelinePos;this.bufferedPos=i,this.checkBuffer()}}onBufferedToEnd(e){if(!this.schedule)return;const t=this.schedule.events;if(this.bufferedPos.25){e.event.assetList.forEach((r,n)=>{e.event.isAssetPastPlayoutLimit(n)&&this.clearAssetPlayer(r.identifier,null)});const s=e.end+.25,i=Q.bufferInfo(this.primaryMedia,s,0);(i.end>s||(i.nextStart||0)>s)&&(this.log(`trim buffered interstitial ${je(e)} (was ${je(t)})`),this.attachPrimary(s,null,!0),this.flushFrontBuffer(s))}}itemsMatch(e,t){return!!t&&(e===t||e.event&&t.event&&this.eventItemsMatch(e,t)||!e.event&&!t.event&&this.findItemIndex(e)===this.findItemIndex(t))}eventItemsMatch(e,t){var s;return!!t&&(e===t||e.event.identifier===((s=t.event)==null?void 0:s.identifier))}findItemIndex(e,t){return e&&this.schedule?this.schedule.findItemIndex(e,t):-1}updateSchedule(e=!1){var t;const s=this.mediaSelection;s&&((t=this.schedule)==null||t.updateSchedule(s,[],e))}checkBuffer(e){var t;const s=(t=this.schedule)==null?void 0:t.items;if(!s)return;const i=Q.bufferInfo(this.primaryMedia,this.timelinePos,0);e&&(this.bufferedPos=this.timelinePos),e||(e=i.len<1),this.updateBufferedPos(i.end,s,e)}updateBufferedPos(e,t,s){const i=this.schedule,r=this.bufferingItem;if(this.bufferedPos>e||!i)return;if(t.length===1&&this.itemsMatch(t[0],r)){this.bufferedPos=e;return}const n=this.playingItem,o=this.findItemIndex(n);let c=i.findItemIndexAtTime(e);if(this.bufferedPos=r.end||(l=d.event)!=null&&l.appendInPlace&&e+.01>=d.start)&&(c=u),this.isInterstitial(r)){const g=r.event;if(u-o>1&&g.appendInPlace===!1||g.assetList.length===0&&g.assetListLoader)return}if(this.bufferedPos=e,c>h&&c>o)this.bufferedToItem(d);else{const g=this.primaryDetails;this.primaryLive&&g&&e>g.edge-g.targetduration&&d.start{const r=this.getAssetPlayer(i.identifier);return!(r!=null&&r.bufferedInPlaceToEnd(t))})}setBufferingItem(e){const t=this.bufferingItem,s=this.schedule;if(!this.itemsMatch(e,t)&&s){const{items:i,events:r}=s;if(!i||!r)return t;const n=this.isInterstitial(e),o=this.getBufferingPlayer();this.bufferingItem=e,this.bufferedPos=Math.max(e.start,Math.min(e.end,this.timelinePos));const c=o?o.remaining:t?t.end-this.timelinePos:0;if(this.log(`INTERSTITIALS_BUFFERED_TO_BOUNDARY ${je(e)}`+(t?` (${c.toFixed(2)} remaining)`:"")),!this.playbackDisabled)if(n){const l=s.findAssetIndex(e.event,this.bufferedPos);e.event.assetList.forEach((h,u)=>{const d=this.getAssetPlayer(h.identifier);d&&(u===l&&d.loadSource(),d.resumeBuffering())})}else this.hls.resumeBuffering(),this.playerQueue.forEach(l=>l.pauseBuffering());this.hls.trigger(m.INTERSTITIALS_BUFFERED_TO_BOUNDARY,{events:r.slice(0),schedule:i.slice(0),bufferingIndex:this.findItemIndex(e),playingIndex:this.findItemIndex(this.playingItem)})}else this.bufferingItem!==e&&(this.bufferingItem=e);return t}bufferedToItem(e,t=0){const s=this.setBufferingItem(e);if(!this.playbackDisabled){if(this.isInterstitial(e))this.bufferedToEvent(e,t);else if(s!==null){this.bufferingAsset=null;const i=this.detachedData;i?i.mediaSource?this.attachPrimary(e.start,e,!0):this.preloadPrimary(e):this.preloadPrimary(e)}}}preloadPrimary(e){const t=this.findItemIndex(e),s=this.getPrimaryResumption(e,t);this.startLoadingPrimaryAt(s)}bufferedToEvent(e,t){const s=e.event,i=s.assetList.length===0&&!s.assetListLoader,r=s.cue.once;if(i||!r){const n=this.preloadAssets(s,t);if(n!=null&&n.interstitial.appendInPlace){const o=this.primaryMedia;o&&this.bufferAssetPlayer(n,o)}}}preloadAssets(e,t){const s=e.assetUrl,i=e.assetList.length,r=i===0&&!e.assetListLoader,n=e.cue.once;if(r){const c=e.timelineStart;if(e.appendInPlace){var o;const d=this.playingItem;!this.isInterstitial(d)&&(d==null||(o=d.nextEvent)==null?void 0:o.identifier)===e.identifier&&this.flushFrontBuffer(c+.25)}let l,h=0;if(!this.playingItem&&this.primaryLive&&(h=this.hls.startPosition,h===-1&&(h=this.hls.liveSyncPosition||0)),h&&!(e.cue.pre||e.cue.post)){const d=h-c;d>0&&(l=Math.round(d*1e3)/1e3)}if(this.log(`Load interstitial asset ${t+1}/${s?1:i} ${e}${l?` live-start: ${h} start-offset: ${l}`:""}`),s)return this.createAsset(e,0,0,c,e.duration,s);const u=this.assetListLoader.loadAssetList(e,l);u&&(e.assetListLoader=u)}else if(!n&&i){for(let l=t;l{this.hls.trigger(m.BUFFER_FLUSHING,{startOffset:e,endOffset:1/0,type:i})})}getAssetPlayerQueueIndex(e){const t=this.playerQueue;for(let s=0;s1){const x=t.duration;x&&S{if(S.live){var x;const L=new Error(`Interstitials MUST be VOD assets ${e}`),R={fatal:!0,type:W.OTHER_ERROR,details:_.INTERSTITIAL_ASSET_ITEM_ERROR,error:L},I=((x=this.schedule)==null?void 0:x.findEventIndex(e.identifier))||-1;this.handleAssetItemError(R,e,I,s,L.message);return}const D=S.edge-S.fragmentStart,A=t.duration;(p||A===null||D>A)&&(p=!1,this.log(`Interstitial asset "${u}" duration change ${A} > ${D}`),t.duration=D,this.updateSchedule())};f.on(m.LEVEL_UPDATED,(S,{details:x})=>y(x)),f.on(m.LEVEL_PTS_UPDATED,(S,{details:x})=>y(x)),f.on(m.EVENT_CUE_ENTER,()=>this.onInterstitialCueEnter());const E=(S,x)=>{const D=this.getAssetPlayer(u);if(D&&x.tracks){D.off(m.BUFFER_CODECS,E),D.tracks=x.tracks;const A=this.primaryMedia;this.bufferingAsset===D.assetItem&&A&&!D.media&&this.bufferAssetPlayer(D,A)}};f.on(m.BUFFER_CODECS,E);const v=()=>{var S;const x=this.getAssetPlayer(u);if(this.log(`buffered to end of asset ${x}`),!x||!this.schedule)return;const D=this.schedule.findEventIndex(e.identifier),A=(S=this.schedule.items)==null?void 0:S[D];this.isInterstitial(A)&&this.advanceAssetBuffering(A,t)};f.on(m.BUFFERED_TO_END,v);const T=S=>()=>{if(!this.getAssetPlayer(u)||!this.schedule)return;this.shouldPlay=!0;const D=this.schedule.findEventIndex(e.identifier);this.advanceAfterAssetEnded(e,D,S)};return f.once(m.MEDIA_ENDED,T(s)),f.once(m.PLAYOUT_LIMIT_REACHED,T(1/0)),f.on(m.ERROR,(S,x)=>{if(!this.schedule)return;const D=this.getAssetPlayer(u);if(x.details===_.BUFFER_STALLED_ERROR){if(D!=null&&D.appendInPlace){this.handleInPlaceStall(e);return}this.onTimeupdate(),this.checkBuffer(!0);return}this.handleAssetItemError(x,e,this.schedule.findEventIndex(e.identifier),s,`Asset player error ${x.error} ${e}`)}),f.on(m.DESTROYING,()=>{if(!this.getAssetPlayer(u)||!this.schedule)return;const x=new Error(`Asset player destroyed unexpectedly ${u}`),D={fatal:!0,type:W.OTHER_ERROR,details:_.INTERSTITIAL_ASSET_ITEM_ERROR,error:x};this.handleAssetItemError(D,e,this.schedule.findEventIndex(e.identifier),s,x.message)}),this.log(`INTERSTITIAL_ASSET_PLAYER_CREATED ${Ut(t)}`),this.hls.trigger(m.INTERSTITIAL_ASSET_PLAYER_CREATED,{asset:t,assetListIndex:s,event:e,player:f}),f}clearInterstitial(e,t){this.clearAssetPlayers(e,t),e.reset()}clearAssetPlayers(e,t){e.assetList.forEach(s=>{this.clearAssetPlayer(s.identifier,t)})}resetAssetPlayer(e){const t=this.getAssetPlayerQueueIndex(e);if(t!==-1){this.log(`reset asset player "${e}" after error`);const s=this.playerQueue[t];this.transferMediaFromPlayer(s,null),s.resetDetails()}}clearAssetPlayer(e,t){const s=this.getAssetPlayerQueueIndex(e);if(s!==-1){const i=this.playerQueue[s];this.log(`clear ${i} toSegment: ${t&&je(t)}`),this.transferMediaFromPlayer(i,t),this.playerQueue.splice(s,1),i.destroy()}}emptyPlayerQueue(){let e;for(;e=this.playerQueue.pop();)e.destroy();this.playerQueue=[]}startAssetPlayer(e,t,s,i,r){const{interstitial:n,assetItem:o,assetId:c}=e,l=n.assetList.length,h=this.playingAsset;this.endedAsset=null,this.playingAsset=o,(!h||h.identifier!==c)&&(h&&(this.clearAssetPlayer(h.identifier,s[i]),delete h.error),this.log(`INTERSTITIAL_ASSET_STARTED ${t+1}/${l} ${Ut(o)}`),this.hls.trigger(m.INTERSTITIAL_ASSET_STARTED,{asset:o,assetListIndex:t,event:n,schedule:s.slice(0),scheduleIndex:i,player:e})),this.bufferAssetPlayer(e,r)}bufferAssetPlayer(e,t){var s,i;if(!this.schedule)return;const{interstitial:r,assetItem:n}=e,o=this.schedule.findEventIndex(r.identifier),c=(s=this.schedule.items)==null?void 0:s[o];if(!c)return;e.loadSource(),this.setBufferingItem(c),this.bufferingAsset=n;const l=this.getBufferingPlayer();if(l===e)return;const h=r.appendInPlace;if(h&&l?.interstitial.appendInPlace===!1)return;const u=l?.tracks||((i=this.detachedData)==null?void 0:i.tracks)||this.requiredTracks;if(h&&n!==this.playingAsset){if(!e.tracks){this.log(`Waiting for track info before buffering ${e}`);return}if(u&&!ra(u,e.tracks)){const d=new Error(`Asset ${Ut(n)} SourceBuffer tracks ('${Object.keys(e.tracks)}') are not compatible with primary content tracks ('${Object.keys(u)}')`),g={fatal:!0,type:W.OTHER_ERROR,details:_.INTERSTITIAL_ASSET_ITEM_ERROR,error:d},f=r.findAssetIndex(n);this.handleAssetItemError(g,r,o,f,d.message);return}}this.transferMediaTo(e,t)}handleInPlaceStall(e){const t=this.schedule,s=this.primaryMedia;if(!t||!s)return;const i=s.currentTime,r=t.findAssetIndex(e,i),n=e.assetList[r];if(n){const o=this.getAssetPlayer(n.identifier);if(o){const c=o.currentTime||i-n.timelineStart,l=o.duration-c;if(this.warn(`Stalled at ${c} of ${c+l} in ${o} ${e} (media.currentTime: ${i})`),c&&(l/s.playbackRate<.5||o.bufferedInPlaceToEnd(s))&&o.hls){const h=t.findEventIndex(e.identifier);this.advanceAfterAssetEnded(e,h,r)}}}}advanceInPlace(e){const t=this.primaryMedia;t&&t.currentTime!p.error))t.error=f;else for(let p=i;p{const E=parseFloat(p.DURATION);this.createAsset(r,y,h,c+h,E,p.URI),h+=E}),r.duration=h,this.log(`Loaded asset-list with duration: ${h} (was: ${l}) ${r}`);const u=this.waitingItem,d=u?.event.identifier===n;this.updateSchedule();const g=(i=this.bufferingItem)==null?void 0:i.event;if(d){var f;const p=this.schedule.findEventIndex(n),y=(f=this.schedule.items)==null?void 0:f[p];if(y){if(!this.playingItem&&this.timelinePos>y.end&&this.schedule.findItemIndexAtTime(this.timelinePos)!==p){r.error=new Error(`Interstitial ${o.length?"no longer within playback range":"asset-list is empty"} ${this.timelinePos} ${r}`),this.log(r.error.message),this.updateSchedule(!0),this.primaryFallback(r);return}this.setBufferingItem(y)}this.setSchedulePosition(p)}else if(g?.identifier===n){const p=r.assetList[0];if(p){const y=this.getAssetPlayer(p.identifier);if(g.appendInPlace){const E=this.primaryMedia;y&&E&&this.bufferAssetPlayer(y,E)}else y&&y.loadSource()}}}onError(e,t){if(this.schedule)switch(t.details){case _.ASSET_LIST_PARSING_ERROR:case _.ASSET_LIST_LOAD_ERROR:case _.ASSET_LIST_LOAD_TIMEOUT:{const s=t.interstitial;s&&(this.updateSchedule(!0),this.primaryFallback(s));break}case _.BUFFER_STALLED_ERROR:{const s=this.endedItem||this.waitingItem||this.playingItem;if(this.isInterstitial(s)&&s.event.appendInPlace){this.handleInPlaceStall(s.event);return}this.log(`Primary player stall @${this.timelinePos} bufferedPos: ${this.bufferedPos}`),this.onTimeupdate(),this.checkBuffer(!0);break}}}}const Nn=500;class vd extends ur{constructor(e,t,s){super(e,t,s,"subtitle-stream-controller",Y.SUBTITLE),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}registerListeners(){super.registerListeners();const{hls:e}=this;e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(m.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(m.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(m.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this)}unregisterListeners(){super.unregisterListeners();const{hls:e}=this;e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(m.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(m.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(m.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this)}startLoad(e,t){this.stopLoad(),this.state=P.IDLE,this.setInterval(Nn),this.nextLoadPosition=this.lastCurrentTime=e+this.timelineOffset,this.startPosition=t?-1:e,this.tick()}onManifestLoading(){super.onManifestLoading(),this.mainDetails=null}onMediaDetaching(e,t){this.tracksBuffered=[],super.onMediaDetaching(e,t)}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:s,success:i}=t;if(this.fragContextChanged(s)||(ve(s)&&(this.fragPrevious=s),this.state=P.IDLE),!i)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let n;const o=s.start;for(let l=0;l=r[l].start&&o<=r[l].end){n=r[l];break}const c=s.start+s.duration;n?n.end=c:(n={start:o,end:c},r.push(n)),this.fragmentTracker.fragBuffered(s),this.fragBufferedComplete(s,null),this.media&&this.tick()}onBufferFlushing(e,t){const{startOffset:s,endOffset:i}=t;if(s===0&&i!==Number.POSITIVE_INFINITY){const r=i-1;if(r<=0)return;t.endOffsetSubtitles=Math.max(0,r),this.tracksBuffered.forEach(n=>{for(let o=0;onew rs(s));return}this.tracksBuffered=[],this.levels=t.map(s=>{const i=new rs(s);return this.tracksBuffered[i.id]=[],i}),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Y.SUBTITLE),this.fragPrevious=null,this.mediaBuffer=null}onSubtitleTrackSwitch(e,t){var s;if(this.currentTrackId=t.id,!((s=this.levels)!=null&&s.length)||this.currentTrackId===-1){this.clearInterval();return}const i=this.levels[this.currentTrackId];i!=null&&i.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,i&&this.state!==P.STOPPED&&this.setInterval(Nn)}onSubtitleTrackLoaded(e,t){var s;const{currentTrackId:i,levels:r}=this,{details:n,id:o}=t;if(!r){this.warn(`Subtitle tracks were reset while loading level ${o}`);return}const c=r[o];if(o>=r.length||!c)return;this.log(`Subtitle track ${o} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||(s=c.details)!=null&&s.live){if(n.deltaUpdateFailed)return;const u=this.mainDetails;if(!u){this.startFragRequested=!1;return}const d=u.fragments[0];if(!c.details)n.hasProgramDateTime&&u.hasProgramDateTime?(Ys(n,u),l=n.fragmentStart):d&&(l=d.start,$i(n,l));else{var h;l=this.alignPlaylists(n,c.details,(h=this.levelLastLoaded)==null?void 0:h.details),l===0&&d&&(l=d.start,$i(n,l))}u&&!this.startFragRequested&&this.setStartPosition(u,l)}c.details=n,this.levelLastLoaded=c,o===i&&(this.hls.trigger(m.SUBTITLE_TRACK_UPDATED,{details:n,id:o,groupId:t.groupId}),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===P.IDLE&&(kt(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),c.details=void 0)))}_handleFragmentLoadComplete(e){const{frag:t,payload:s}=e,i=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&s&&s.byteLength>0&&i!=null&&i.key&&i.iv&&Kt(i.method)){const n=performance.now();this.decrypter.decrypt(new Uint8Array(s),i.key.buffer,i.iv.buffer,cr(i.method)).catch(o=>{throw r.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.FRAG_DECRYPT_ERROR,fatal:!1,error:o,reason:o.message,frag:t}),o}).then(o=>{const c=performance.now();r.trigger(m.FRAG_DECRYPTED,{frag:t,payload:o,stats:{tstart:n,tdecrypt:c}})}).catch(o=>{this.warn(`${o.name}: ${o.message}`),this.state=P.IDLE})}}doTick(){if(!this.media){this.state=P.IDLE;return}if(this.state===P.IDLE){const{currentTrackId:e,levels:t}=this,s=t?.[e];if(!s||!t.length||!s.details||this.waitForLive(s))return;const{config:i}=this,r=this.getLoadPosition(),n=Q.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,i.maxBufferHole),{end:o,len:c}=n,l=s.details,h=this.hls.maxBufferLength+l.levelTargetDuration;if(c>h)return;const u=l.fragments,d=u.length,g=l.edge;let f=null;const p=this.fragPrevious;if(og-v?0:v;f=kt(p,u,Math.max(u[0].start,o),T),!f&&p&&p.start{if(i=i>>>0,i>r-1)throw new DOMException(`Failed to execute '${s}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${r})`);return e[i][s]};this.buffered={get length(){return e.length},end(s){return t("end",s,e.length)},start(s){return t("start",s,e.length)}}}}const Sd={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Io=a=>String.fromCharCode(Sd[a]||a),Xe=15,ct=100,xd={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},Ad={17:2,18:4,21:6,22:8,23:10,19:13,20:15},Id={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Ld={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Rd=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class bd{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const s=typeof t=="function"?t():t;ne.log(`${this.time} [${e}] ${s}`)}}}const Dt=function(e){const t=[];for(let s=0;sct&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=ct)}moveCursor(e){const t=this.pos+e;if(e>1)for(let s=this.pos+1;s=144&&this.backSpace();const t=Io(e);if(this.pos>=ct){this.logger.log(0,()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!");return}this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1)}clearFromPos(e){let t;for(t=e;t"pacData = "+ce(e));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+ce(e)),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(this.nrRollUpRows===null){this.logger.log(3,"roll_up but nrRollUpRows not set yet");return}this.logger.log(1,()=>this.getDisplayText());const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let s="",i=-1;for(let r=0;r0&&(e?s="["+t.join(" | ")+"]":s=t.join(` +`)),s}getTextAndFormat(){return this.rows}}class Bn{constructor(e,t,s){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new vi(s),this.nonDisplayedMemory=new vi(s),this.lastOutputScreen=new vi(s),this.currRollUpRow=this.displayedMemory.rows[Xe-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=s}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[Xe-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,()=>"MODE="+e),this.mode==="MODE_POP-ON"?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),this.mode!=="MODE_ROLL-UP"&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let s=0;st+": "+this.writeScreen.getDisplayText(!0)),(this.mode==="MODE_PAINT-ON"||this.mode==="MODE_ROLL-UP")&&(this.logger.log(1,()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),this.mode!=="MODE_TEXT"&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),this.mode==="MODE_POP-ON"){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,()=>"DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2===1,t.italics=e>=46,t.italics)t.foreground="white";else{const s=Math.floor(e/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=i[s]}this.logger.log(2,"MIDROW: "+ce(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;t!==null&&this.outputFilter&&(this.cueStartTime===null&&!this.displayedMemory.isEmpty()?this.cueStartTime=t:this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t),this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Un{constructor(e,t,s){this.channels=void 0,this.currentChannel=0,this.cmdHistory=Pd(),this.logger=void 0;const i=this.logger=new bd;this.channels=[null,new Bn(e,t,i),new Bn(e+1,s,i)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let s=0;s"["+Dt([t[s],t[s+1]])+"] -> ("+Dt([i,r])+")");const c=this.cmdHistory;if(i>=16&&i<=31){if(Cd(i,r,c)){Ss(null,null,c),this.logger.log(3,()=>"Repeated command ("+Dt([i,r])+") is dropped");continue}Ss(i,r,this.cmdHistory),n=this.parseCmd(i,r),n||(n=this.parseMidrow(i,r)),n||(n=this.parsePAC(i,r)),n||(n=this.parseBackgroundAttributes(i,r))}else Ss(null,null,c);if(!n&&(o=this.parseChars(i,r),o)){const h=this.currentChannel;h&&h>0?this.channels[h].insertChars(o):this.logger.log(2,"No channel found yet. TEXT-MODE?")}!n&&!o&&this.logger.log(2,()=>"Couldn't parse cleaned data "+Dt([i,r])+" orig: "+Dt([t[s],t[s+1]]))}}parseCmd(e,t){const s=(e===20||e===28||e===21||e===29)&&t>=32&&t<=47,i=(e===23||e===31)&&t>=33&&t<=35;if(!(s||i))return!1;const r=e===20||e===21||e===23?1:2,n=this.channels[r];return e===20||e===21||e===28||e===29?t===32?n.ccRCL():t===33?n.ccBS():t===34?n.ccAOF():t===35?n.ccAON():t===36?n.ccDER():t===37?n.ccRU(2):t===38?n.ccRU(3):t===39?n.ccRU(4):t===40?n.ccFON():t===41?n.ccRDC():t===42?n.ccTR():t===43?n.ccRTD():t===44?n.ccEDM():t===45?n.ccCR():t===46?n.ccENM():t===47&&n.ccEOC():n.ccTO(t-32),this.currentChannel=r,!0}parseMidrow(e,t){let s=0;if((e===17||e===25)&&t>=32&&t<=47){if(e===17?s=1:s=2,s!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const i=this.channels[s];return i?(i.ccMIDROW(t),this.logger.log(3,()=>"MIDROW ("+Dt([e,t])+")"),!0):!1}return!1}parsePAC(e,t){let s;const i=(e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127,r=(e===16||e===24)&&t>=64&&t<=95;if(!(i||r))return!1;const n=e<=23?1:2;t>=64&&t<=95?s=n===1?xd[e]:Id[e]:s=n===1?Ad[e]:Ld[e];const o=this.channels[n];return o?(o.setPAC(this.interpretPAC(s,t)),this.currentChannel=n,!0):!1}interpretPAC(e,t){let s;const i={color:null,italics:!1,indent:null,underline:!1,row:e};return t>95?s=t-96:s=t-64,i.underline=(s&1)===1,s<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(s/2)]:s<=15?(i.italics=!0,i.color="white"):i.indent=Math.floor((s-16)/2)*4,i}parseChars(e,t){let s,i=null,r=null;if(e>=25?(s=2,r=e-8):(s=1,r=e),r>=17&&r<=19){let n;r===17?n=t+80:r===18?n=t+112:n=t+144,this.logger.log(2,()=>"Special char '"+Io(n)+"' in channel "+s),i=[n]}else e>=32&&e<=127&&(i=t===0?[e]:[e,t]);return i&&this.logger.log(3,()=>"Char codes = "+Dt(i).join(",")),i}parseBackgroundAttributes(e,t){const s=(e===16||e===24)&&t>=32&&t<=47,i=(e===23||e===31)&&t>=45&&t<=47;if(!(s||i))return!1;let r;const n={};e===16||e===24?(r=Math.floor((t-32)/2),n.background=Rd[r],t%2===1&&(n.background=n.background+"_semi")):t===45?n.background="transparent":(n.foreground="black",t===47&&(n.underline=!0));const o=e<=23?1:2;return this.channels[o].setBkgData(n),!0}reset(){for(let e=0;e100)throw new Error("Position must be between 0 and 100.");D=I,this.hasBeenReset=!0}})),Object.defineProperty(h,"positionAlign",r({},u,{get:function(){return A},set:function(I){const C=i(I);if(!C)throw new SyntaxError("An invalid or illegal string was specified.");A=C,this.hasBeenReset=!0}})),Object.defineProperty(h,"size",r({},u,{get:function(){return L},set:function(I){if(I<0||I>100)throw new Error("Size must be between 0 and 100.");L=I,this.hasBeenReset=!0}})),Object.defineProperty(h,"align",r({},u,{get:function(){return R},set:function(I){const C=i(I);if(!C)throw new SyntaxError("An invalid or illegal string was specified.");R=C,this.hasBeenReset=!0}})),h.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n})();class kd{decode(e,t){if(!e)return"";if(typeof e!="string")throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Ro(a){function e(s,i,r,n){return(s|0)*3600+(i|0)*60+(r|0)+parseFloat(n||0)}const t=a.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return t?parseFloat(t[2])>59?e(t[2],t[3],0,t[4]):e(t[1],t[2],t[3],t[4]):null}class wd{constructor(){this.values=Object.create(null)}set(e,t){!this.get(e)&&t!==""&&(this.values[e]=t)}get(e,t,s){return s?this.has(e)?this.values[e]:t[s]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,s){for(let i=0;i=0&&s<=100)return this.set(e,s),!0}return!1}}function bo(a,e,t,s){const i=s?a.split(s):[a];for(const r in i){if(typeof i[r]!="string")continue;const n=i[r].split(t);if(n.length!==2)continue;const o=n[0],c=n[1];e(o,c)}}const ji=new Ar(0,0,""),xs=ji.align==="middle"?"middle":"center";function Od(a,e,t){const s=a;function i(){const o=Ro(a);if(o===null)throw new Error("Malformed timestamp: "+s);return a=a.replace(/^[^\sa-zA-Z-]+/,""),o}function r(o,c){const l=new wd;bo(o,function(d,g){let f;switch(d){case"region":for(let p=t.length-1;p>=0;p--)if(t[p].id===g){l.set(d,t[p].region);break}break;case"vertical":l.alt(d,g,["rl","lr"]);break;case"line":f=g.split(","),l.integer(d,f[0]),l.percent(d,f[0])&&l.set("snapToLines",!1),l.alt(d,f[0],["auto"]),f.length===2&&l.alt("lineAlign",f[1],["start",xs,"end"]);break;case"position":f=g.split(","),l.percent(d,f[0]),f.length===2&&l.alt("positionAlign",f[1],["start",xs,"end","line-left","line-right","auto"]);break;case"size":l.percent(d,g);break;case"align":l.alt(d,g,["start",xs,"end","left","right"]);break}},/:/,/\s/),c.region=l.get("region",null),c.vertical=l.get("vertical","");let h=l.get("line","auto");h==="auto"&&ji.line===-1&&(h=-1),c.line=h,c.lineAlign=l.get("lineAlign","start"),c.snapToLines=l.get("snapToLines",!0),c.size=l.get("size",100),c.align=l.get("align",xs);let u=l.get("position","auto");u==="auto"&&ji.position===50&&(u=c.align==="start"||c.align==="left"?0:c.align==="end"||c.align==="right"?100:50),c.position=u}function n(){a=a.replace(/^\s+/,"")}if(n(),e.startTime=i(),n(),a.slice(0,3)!=="-->")throw new Error("Malformed time stamp (time stamps must be separated by '-->'): "+s);a=a.slice(3),n(),e.endTime=i(),n(),r(a,e)}function _o(a){return a.replace(//gi,` `)}class Fd{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new kd,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;e&&(t.buffer+=t.decoder.decode(e,{stream:!0}));function s(){let r=t.buffer,n=0;for(r=_o(r);n")===-1){t.cue.id=r;continue}case"CUE":if(!t.cue){t.state="BADCUE";continue}try{Od(r,t.cue,t.regionList)}catch{t.cue=null,t.state="BADCUE";continue}t.state="CUETEXT";continue;case"CUETEXT":{const o=r.indexOf("-->")!==-1;if(!r||o&&(n=!0)){t.oncue&&t.cue&&t.oncue(t.cue),t.cue=null,t.state="ID";continue}if(t.cue===null)continue;t.cue.text&&(t.cue.text+=` `),t.cue.text+=r}continue;case"BADCUE":r||(t.state="ID")}}}catch{t.state==="CUETEXT"&&t.cue&&t.oncue&&t.oncue(t.cue),t.cue=null,t.state=t.state==="INITIAL"?"BADWEBVTT":"BADCUE"}return this}flush(){const e=this;try{if((e.cue||e.state==="HEADER")&&(e.buffer+=` -`,e.parse()),e.state==="INITIAL"||e.state==="BADWEBVTT")throw new Error("Malformed WebVTT signature.")}catch(t){e.onparsingerror&&e.onparsingerror(t)}return e.onflush&&e.onflush(),this}}const Md=/\r\n|\n\r|\n|\r/g,Ti=function(e,t,s=0){return e.slice(s,s+t.length)===t},Nd=function(e){let t=parseInt(e.slice(-3));const s=parseInt(e.slice(-6,-4)),i=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!K(t)||!K(s)||!K(i)||!K(r))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*s,t+=60*1e3*i,t+=3600*1e3*r,t};function Ir(a,e,t){return ts(a.toString())+ts(e.toString())+ts(t)}const Bd=function(e,t,s){let i=e[t],r=e[i.prevCC];if(!r||!r.new&&i.new){e.ccOffset=e.presentationOffset=i.start,i.new=!1;return}for(;(n=r)!=null&&n.new;){var n;e.ccOffset+=i.start-r.start,i.new=!1,i=r,r=e[i.prevCC]}e.presentationOffset=s};function Ud(a,e,t,s,i,r,n){const o=new Fd,c=Ve(new Uint8Array(a)).trim().replace(Md,` +`,e.parse()),e.state==="INITIAL"||e.state==="BADWEBVTT")throw new Error("Malformed WebVTT signature.")}catch(t){e.onparsingerror&&e.onparsingerror(t)}return e.onflush&&e.onflush(),this}}const Md=/\r\n|\n\r|\n|\r/g,Ti=function(e,t,s=0){return e.slice(s,s+t.length)===t},Nd=function(e){let t=parseInt(e.slice(-3));const s=parseInt(e.slice(-6,-4)),i=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!V(t)||!V(s)||!V(i)||!V(r))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*s,t+=60*1e3*i,t+=3600*1e3*r,t};function Ir(a,e,t){return ts(a.toString())+ts(e.toString())+ts(t)}const Bd=function(e,t,s){let i=e[t],r=e[i.prevCC];if(!r||!r.new&&i.new){e.ccOffset=e.presentationOffset=i.start,i.new=!1;return}for(;(n=r)!=null&&n.new;){var n;e.ccOffset+=i.start-r.start,i.new=!1,i=r,r=e[i.prevCC]}e.presentationOffset=s};function Ud(a,e,t,s,i,r,n){const o=new Fd,c=Ye(new Uint8Array(a)).trim().replace(Md,` `).split(` -`),l=[],h=e?Yh(e.baseTime,e.timescale):0;let u="00:00.000",d=0,g=0,f,p=!0;o.oncue=function(y){const E=t[s];let v=t.ccOffset;const T=(d-h)/9e4;if(E!=null&&E.new&&(g!==void 0?v=t.ccOffset=E.start:Bd(t,s,T)),T){if(!e){f=new Error("Missing initPTS for VTT MPEGTS");return}v=T-t.presentationOffset}const S=y.endTime-y.startTime,x=$e((y.startTime+v-g)*9e4,i*9e4)/9e4;y.startTime=Math.max(x,0),y.endTime=Math.max(x+S,0);const D=y.text.trim();y.text=decodeURIComponent(encodeURIComponent(D)),y.id||(y.id=Ir(y.startTime,y.endTime,D)),y.endTime>0&&l.push(y)},o.onparsingerror=function(y){f=y},o.onflush=function(){if(f){n(f);return}r(l)},c.forEach(y=>{if(p)if(Ti(y,"X-TIMESTAMP-MAP=")){p=!1,y.slice(16).split(",").forEach(E=>{Ti(E,"LOCAL:")?u=E.slice(6):Ti(E,"MPEGTS:")&&(d=parseInt(E.slice(7)))});try{g=Nd(u)/1e3}catch(E){f=E}return}else y===""&&(p=!1);o.parse(y+` -`)}),o.flush()}const Si="stpp.ttml.im1t",Do=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Co=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,$d={left:"start",center:"center",right:"end",start:"start",end:"end"};function $n(a,e,t,s){const i=ee(new Uint8Array(a),["mdat"]);if(i.length===0){s(new Error("Could not parse IMSC1 mdat"));return}const r=i.map(o=>Ve(o)),n=Hh(e.baseTime,1,e.timescale);try{r.forEach(o=>t(Gd(o,n)))}catch(o){s(o)}}function Gd(a,e){const i=new DOMParser().parseFromString(a,"text/xml").getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(r).reduce((u,d)=>(u[d]=i.getAttribute(`ttp:${d}`)||r[d],u),{}),o=i.getAttribute("xml:space")!=="preserve",c=Gn(xi(i,"styling","style")),l=Gn(xi(i,"layout","region")),h=xi(i,"body","[begin]");return[].map.call(h,u=>{const d=Po(u,o);if(!d||!u.hasAttribute("begin"))return null;const g=Ii(u.getAttribute("begin"),n),f=Ii(u.getAttribute("dur"),n);let p=Ii(u.getAttribute("end"),n);if(g===null)throw Kn(u);if(p===null){if(f===null)throw Kn(u);p=g+f}const y=new Ar(g-e,p-e,d);y.id=Ir(y.startTime,y.endTime,y.text);const E=l[u.getAttribute("region")],v=c[u.getAttribute("style")],T=Kd(E,v,c),{textAlign:S}=T;if(S){const x=$d[S];x&&(y.lineAlign=x),y.align=S}return ae(y,T),y}).filter(u=>u!==null)}function xi(a,e,t){const s=a.getElementsByTagName(e)[0];return s?[].slice.call(s.querySelectorAll(t)):[]}function Gn(a){return a.reduce((e,t)=>{const s=t.getAttribute("xml:id");return s&&(e[s]=t),e},{})}function Po(a,e){return[].slice.call(a.childNodes).reduce((t,s,i)=>{var r;return s.nodeName==="br"&&i?t+` -`:(r=s.childNodes)!=null&&r.length?Po(s,e):e?t+s.textContent.trim().replace(/\s+/g," "):t+s.textContent},"")}function Kd(a,e,t){const s="http://www.w3.org/ns/ttml#styling";let i=null;const r=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],n=a!=null&&a.hasAttribute("style")?a.getAttribute("style"):null;return n&&t.hasOwnProperty(n)&&(i=t[n]),r.reduce((o,c)=>{const l=Ai(e,s,c)||Ai(a,s,c)||Ai(i,s,c);return l&&(o[c]=l),o},{})}function Ai(a,e,t){return a&&a.hasAttributeNS(e,t)?a.getAttributeNS(e,t):null}function Kn(a){return new Error(`Could not parse ttml timestamp ${a}`)}function Ii(a,e){if(!a)return null;let t=Ro(a);return t===null&&(Do.test(a)?t=Vd(a,e):Co.test(a)&&(t=Hd(a,e))),t}function Vd(a,e){const t=Do.exec(a),s=(t[4]|0)+(t[5]|0)/e.subFrameRate;return(t[1]|0)*3600+(t[2]|0)*60+(t[3]|0)+s/e.frameRate}function Hd(a,e){const t=Co.exec(a),s=Number(t[1]);switch(t[2]){case"h":return s*3600;case"m":return s*60;case"ms":return s*1e3;case"f":return s/e.frameRate;case"t":return s/e.tickRate}return s}class As{constructor(e,t){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=e,this.trackName=t}dispatchCue(){this.startTime!==null&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)}newCue(e,t,s){(this.startTime===null||this.startTime>e)&&(this.startTime=e),this.endTime=t,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}class Yd{constructor(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Hn(),this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(m.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(m.FRAG_LOADING,this.onFragLoading,this),e.on(m.FRAG_LOADED,this.onFragLoaded,this),e.on(m.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(m.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(m.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(m.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(m.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(m.FRAG_LOADING,this.onFragLoading,this),e.off(m.FRAG_LOADED,this.onFragLoaded,this),e.off(m.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(m.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(m.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(m.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){const e=new As(this,"textTrack1"),t=new As(this,"textTrack2"),s=new As(this,"textTrack3"),i=new As(this,"textTrack4");this.cea608Parser1=new Un(1,e,t),this.cea608Parser2=new Un(3,s,i)}addCues(e,t,s,i,r){let n=!1;for(let o=r.length;o--;){const c=r[o],l=Wd(c[0],c[1],t,s);if(l>=0&&(c[0]=Math.min(c[0],t),c[1]=Math.max(c[1],s),n=!0,l/(s-t)>.5))return}if(n||r.push([t,s]),this.config.renderTextTracksNatively){const o=this.captionsTracks[e];this.Cues.newCue(o,t,s,i)}else{const o=this.Cues.newCue(null,t,s,i);this.hls.trigger(m.CUES_PARSED,{type:"captions",cues:o,track:e})}}onInitPtsFound(e,{frag:t,id:s,initPTS:i,timescale:r,trackId:n}){const{unparsedVttFrags:o}=this;s===Y.MAIN&&(this.initPTS[t.cc]={baseTime:i,timescale:r,trackId:n}),o.length&&(this.unparsedVttFrags=[],o.forEach(c=>{this.initPTS[c.frag.cc]?this.onFragLoaded(m.FRAG_LOADED,c):this.hls.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:c.frag,error:new Error("Subtitle discontinuity domain does not match main")})}))}getExistingTrack(e,t){const{media:s}=this;if(s)for(let i=0;i{$t(i[r]),delete i[r]}),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Hn(),this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let s=0;sr.textCodec===Si);if(this.config.enableWebVTT||i&&this.config.enableIMSC1){if(oo(this.tracks,s)){this.tracks=s;return}if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){const n=this.media,o=n?ws(n.textTracks):null;if(this.tracks.forEach((c,l)=>{let h;if(o){let u=null;for(let d=0;dl!==null).map(l=>l.label);c.length&&this.hls.logger.warn(`Media element contains unused subtitle tracks: ${c.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const n=this.tracks.map(o=>({label:o.name,kind:o.type.toLowerCase(),default:o.default,subtitleTrack:o}));this.hls.trigger(m.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:n})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach(s=>{const i=/(?:CC|SERVICE)([1-4])/.exec(s.instreamId);if(!i)return;const r=`textTrack${i[1]}`,n=this.captionsProperties[r];n&&(n.label=s.name,s.lang&&(n.languageCode=s.lang),n.media=s)})}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return t?.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===Y.MAIN){var s,i;const{cea608Parser1:r,cea608Parser2:n,lastSn:o}=this,{cc:c,sn:l}=t.frag,h=(s=(i=t.part)==null?void 0:i.index)!=null?s:-1;r&&n&&(l!==o+1||l===o&&h!==this.lastPartIndex+1||c!==this.lastCc)&&(r.reset(),n.reset()),this.lastCc=c,this.lastSn=l,this.lastPartIndex=h}}onFragLoaded(e,t){const{frag:s,payload:i}=t;if(s.type===Y.SUBTITLE)if(i.byteLength){const r=s.decryptdata,n="stats"in t;if(r==null||!r.encrypted||n){const o=this.tracks[s.level],c=this.vttCCs;c[s.cc]||(c[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),o&&o.textCodec===Si?this._parseIMSC1(s,i):this._parseVTTs(t)}}else this.hls.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const s=this.hls;$n(t,this.initPTS[e.cc],i=>{this._appendCues(i,e.level),s.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})},i=>{s.logger.log(`Failed to parse IMSC1: ${i}`),s.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:i})})}_parseVTTs(e){var t;const{frag:s,payload:i}=e,{initPTS:r,unparsedVttFrags:n}=this,o=r.length-1;if(!r[s.cc]&&o===-1){n.push(e);return}const c=this.hls,l=(t=s.initSegment)!=null&&t.data?He(s.initSegment.data,new Uint8Array(i)).buffer:i;Ud(l,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,h=>{this._appendCues(h,s.level),c.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})},h=>{const u=h.message==="Missing initPTS for VTT MPEGTS";u?n.push(e):this._fallbackToIMSC1(s,i),c.logger.log(`Failed to parse VTT cue: ${h}`),!(u&&o>s.cc)&&c.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:h})})}_fallbackToIMSC1(e,t){const s=this.tracks[e.level];s.textCodec||$n(t,this.initPTS[e.cc],()=>{s.textCodec=Si,this._parseIMSC1(e,t)},()=>{s.textCodec="wvtt"})}_appendCues(e,t){const s=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||i.mode==="disabled")return;e.forEach(r=>xo(i,r))}else{const i=this.tracks[t];if(!i)return;const r=i.default?"default":"subtitles"+t;s.trigger(m.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:s}=t;s.type===Y.SUBTITLE&&this.onFragLoaded(m.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){if(!this.enabled||!this.config.enableCEA708Captions)return;const{frag:s,samples:i}=t;if(!(s.type===Y.MAIN&&this.closedCaptionsForLevel(s)==="NONE"))for(let r=0;rqi(o[c],t,s))}if(this.config.renderTextTracksNatively&&t===0&&i!==void 0){const{textTracks:o}=this;Object.keys(o).forEach(c=>qi(o[c],t,i))}}}extractCea608Data(e){const t=[[],[]],s=e[0]&31;let i=2;for(let r=0;r=16?c--:c++;const g=_o(l.trim()),f=Ir(e,t,g);a!=null&&(u=a.cues)!=null&&u.getCueById(f)||(n=new h(e,t,g),n.id=f,n.line=d+1,n.align="left",n.position=10+Math.min(80,Math.floor(c*8/32)*10),i.push(n))}return a&&i.length&&(i.sort((d,g)=>d.line==="auto"||g.line==="auto"?0:d.line>8&&g.line>8?g.line-d.line:d.line-g.line),i.forEach(d=>xo(a,d))),i}};function Xd(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch{}return!1}const zd=/(\d+)-(\d+)\/(\d+)/;class Yn{constructor(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||ef,this.controller=new self.AbortController,this.stats=new sr}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),(e=this.callbacks)!=null&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,s){const i=this.stats;if(i.loading.start)throw new Error("Loader can only be used once.");i.loading.start=self.performance.now();const r=Qd(e,this.controller.signal),n=e.responseType==="arraybuffer",o=n?"byteLength":"length",{maxTimeToFirstByteMs:c,maxLoadTimeMs:l}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=s,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=c&&K(c)?c:l,this.requestTimeout=self.setTimeout(()=>{this.callbacks&&(this.abortInternal(),this.callbacks.onTimeout(i,e,this.response))},t.timeout),(os(this.request)?this.request.then(self.fetch):self.fetch(this.request)).then(u=>{var d;this.response=this.loader=u;const g=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=l,this.requestTimeout=self.setTimeout(()=>{this.callbacks&&(this.abortInternal(),this.callbacks.onTimeout(i,e,this.response))},l-(g-i.loading.start)),!u.ok){const{status:p,statusText:y}=u;throw new tf(y||"fetch, bad network response",p,u)}i.loading.first=g,i.total=Jd(u.headers)||i.total;const f=(d=this.callbacks)==null?void 0:d.onProgress;return f&&K(t.highWaterMark)?this.loadProgressively(u,i,e,t.highWaterMark,f):n?u.arrayBuffer():e.responseType==="json"?u.json():u.text()}).then(u=>{var d,g;const f=this.response;if(!f)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);const p=u[o];p&&(i.loaded=i.total=p);const y={url:f.url,data:u,code:f.status},E=(d=this.callbacks)==null?void 0:d.onProgress;E&&!K(t.highWaterMark)&&E(i,e,u,f),(g=this.callbacks)==null||g.onSuccess(y,i,e,f)}).catch(u=>{var d;if(self.clearTimeout(this.requestTimeout),i.aborted)return;const g=u&&u.code||0,f=u?u.message:null;(d=this.callbacks)==null||d.onError({code:g,text:f},e,u?u.details:null,i)})}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,s,i=0,r){const n=new Ga,o=e.body.getReader(),c=()=>o.read().then(l=>{if(l.done)return n.dataLength&&r(t,s,n.flush().buffer,e),Promise.resolve(new ArrayBuffer(0));const h=l.value,u=h.length;return t.loaded+=u,u=i&&r(t,s,n.flush().buffer,e)):r(t,s,h.buffer,e),c()}).catch(()=>Promise.reject());return c()}}function Qd(a,e){const t={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(ae({},a.headers))};return a.rangeEnd&&t.headers.set("Range","bytes="+a.rangeStart+"-"+String(a.rangeEnd-1)),t}function Zd(a){const e=zd.exec(a);if(e)return parseInt(e[2])-parseInt(e[1])+1}function Jd(a){const e=a.get("Content-Range");if(e){const s=Zd(e);if(K(s))return s}const t=a.get("Content-Length");if(t)return parseInt(t)}function ef(a,e){return new self.Request(a.url,e)}class tf extends Error{constructor(e,t,s){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=s}}const sf=/^age:\s*[\d.]+\s*$/im;class wo{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new sr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,e.readyState!==4&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),(e=this.callbacks)!=null&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,s){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=s,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const s=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0,i.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then(()=>{if(!(this.loader!==s||this.stats.aborted))return r(s,t.url)}).catch(n=>{if(!(this.loader!==s||this.stats.aborted))return s.open("GET",t.url,!0),r(s,t.url)}).then(()=>{this.loader!==s||this.stats.aborted||this.openAndSendXhr(s,t,e)}).catch(n=>{var o;(o=this.callbacks)==null||o.onError({code:s.status,text:n.message},t,s,i)}):this.openAndSendXhr(s,t,e)}openAndSendXhr(e,t,s){e.readyState||e.open("GET",t.url,!0);const i=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:n}=s.loadPolicy;if(i)for(const o in i)e.setRequestHeader(o,i[o]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),s.timeout=r&&K(r)?r:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:s}=this;if(!e||!t)return;const i=t.readyState,r=this.config;if(!s.aborted&&i>=2&&(s.loading.first===0&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),i===4)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const l=t.status,h=t.responseType==="text"?t.responseText:null;if(l>=200&&l<300){const f=h??t.response;if(f!=null){var n,o;s.loading.end=Math.max(self.performance.now(),s.loading.first);const p=t.responseType==="arraybuffer"?f.byteLength:f.length;s.loaded=s.total=p,s.bwEstimate=s.total*8e3/(s.loading.end-s.loading.first);const y=(n=this.callbacks)==null?void 0:n.onProgress;y&&y(s,e,f,t);const E={url:t.responseURL,data:f,code:l};(o=this.callbacks)==null||o.onSuccess(E,s,e,t);return}}const u=r.loadPolicy.errorRetry,d=s.retry,g={url:e.url,data:void 0,code:l};if(Ks(u,d,!1,g))this.retry(u);else{var c;ne.error(`${l} while loading ${e.url}`),(c=this.callbacks)==null||c.onError({code:l,text:t.statusText},e,t,s)}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry,t=this.stats.retry;if(Ks(e,t,!0))this.retry(e);else{var s;ne.warn(`timeout while loading ${(s=this.context)==null?void 0:s.url}`);const i=this.callbacks;i&&(this.abortInternal(),i.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:s}=this;this.retryDelay=ar(e,s.retry),s.retry++,ne.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${t?.url}, retrying ${s.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&sf.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const rf={maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null},nf=re(re({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,maxDevicePixelRatio:Number.POSITIVE_INFINITY,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,startOnSegmentBoundary:!1,maxBufferSize:60*1e3*1e3,maxFragLookUpTolerance:.25,maxBufferHole:.1,detectStallWithCurrentTimeMs:1250,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,nudgeOnVideoHole:!0,liveSyncMode:"edge",liveSyncDurationCount:3,liveSyncOnStallIncrease:1,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,ignorePlaylistParsingErrors:!1,loader:wo,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:pc,bufferController:au,capLevelController:Tr,errorController:Sc,fpsController:od,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:Ca,requireKeySystemAccessOnStart:!1,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableEmsgKLVMetadata:!1,enableID3MetadataCues:!0,enableInterstitialPlayback:!0,interstitialAppendInPlace:!0,interstitialLiveLookAhead:10,useMediaCapabilities:!0,preserveManualLevelOnError:!1,certLoadPolicy:{default:rf},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},interstitialAssetListLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:3e4,timeoutRetry:{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:0,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},af()),{},{subtitleStreamController:vd,subtitleTrackController:hd,timelineController:Yd,audioStreamController:su,audioTrackController:iu,emeController:Vt,cmcdController:id,contentSteeringController:nd,interstitialsController:Ed});function af(){return{cueHandler:jd,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function of(a,e,t){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(e.liveMaxLatencyDurationCount!==void 0&&(e.liveSyncDurationCount===void 0||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(e.liveMaxLatencyDuration!==void 0&&(e.liveSyncDuration===void 0||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const s=Xi(a),i=["manifest","level","frag"],r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return i.forEach(n=>{const o=`${n==="level"?"playlist":n}LoadPolicy`,c=e[o]===void 0,l=[];r.forEach(h=>{const u=`${n}Loading${h}`,d=e[u];if(d!==void 0&&c){l.push(u);const g=s[o].default;switch(e[o]={default:g},h){case"TimeOut":g.maxLoadTimeMs=d,g.maxTimeToFirstByteMs=d;break;case"MaxRetry":g.errorRetry.maxNumRetry=d,g.timeoutRetry.maxNumRetry=d;break;case"RetryDelay":g.errorRetry.retryDelayMs=d,g.timeoutRetry.retryDelayMs=d;break;case"MaxRetryTimeout":g.errorRetry.maxRetryDelayMs=d,g.timeoutRetry.maxRetryDelayMs=d;break}}}),l.length&&t.warn(`hls.js config: "${l.join('", "')}" setting(s) are deprecated, use "${o}": ${ce(e[o])}`)}),re(re({},s),e)}function Xi(a){return a&&typeof a=="object"?Array.isArray(a)?a.map(Xi):Object.keys(a).reduce((e,t)=>(e[t]=Xi(a[t]),e),{}):a}function lf(a,e){const t=a.loader;t!==Yn&&t!==wo?(e.log("[config]: Custom loader detected, cannot enable progressive streaming"),a.progressive=!1):Xd()&&(a.loader=Yn,a.progressive=!0,a.enableSoftwareAES=!0,e.log("[config]: Progressive streaming enabled, using FetchLoader"))}const Os=2,cf=.1,hf=.05,uf=100;class df extends La{constructor(e,t){super("gap-controller",e.logger),this.hls=void 0,this.fragmentTracker=void 0,this.media=null,this.mediaSource=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.buffered={},this.lastCurrentTime=0,this.ended=0,this.waiting=0,this.onMediaPlaying=()=>{this.ended=0,this.waiting=0},this.onMediaWaiting=()=>{var s;(s=this.media)!=null&&s.seeking||(this.waiting=self.performance.now(),this.tick())},this.onMediaEnded=()=>{if(this.hls){var s;this.ended=((s=this.media)==null?void 0:s.currentTime)||1,this.hls.trigger(m.MEDIA_ENDED,{stalled:!1})}},this.hls=e,this.fragmentTracker=t,this.registerListeners()}registerListeners(){const{hls:e}=this;e&&(e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.BUFFER_APPENDED,this.onBufferAppended,this))}unregisterListeners(){const{hls:e}=this;e&&(e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.BUFFER_APPENDED,this.onBufferAppended,this))}destroy(){super.destroy(),this.unregisterListeners(),this.media=this.hls=this.fragmentTracker=null,this.mediaSource=void 0}onMediaAttached(e,t){this.setInterval(uf),this.mediaSource=t.mediaSource;const s=this.media=t.media;we(s,"playing",this.onMediaPlaying),we(s,"waiting",this.onMediaWaiting),we(s,"ended",this.onMediaEnded)}onMediaDetaching(e,t){this.clearInterval();const{media:s}=this;s&&(Me(s,"playing",this.onMediaPlaying),Me(s,"waiting",this.onMediaWaiting),Me(s,"ended",this.onMediaEnded),this.media=null),this.mediaSource=void 0}onBufferAppended(e,t){this.buffered=t.timeRanges}get hasBuffered(){return Object.keys(this.buffered).length>0}tick(){var e;if(!((e=this.media)!=null&&e.readyState)||!this.hasBuffered)return;const t=this.media.currentTime;this.poll(t,this.lastCurrentTime),this.lastCurrentTime=t}poll(e,t){var s,i;const r=(s=this.hls)==null?void 0:s.config;if(!r)return;const n=this.media;if(!n)return;const{seeking:o}=n,c=this.seeking&&!o,l=!this.seeking&&o,h=n.paused&&!o||n.ended||n.playbackRate===0;if(this.seeking=o,e!==t){t&&(this.ended=0),this.moved=!0,o||(this.nudgeRetry=0,r.nudgeOnVideoHole&&!h&&e>t&&this.nudgeOnVideoHole(e,t)),this.waiting===0&&this.stallResolved(e);return}if(l||c){c&&this.stallResolved(e);return}if(h){this.nudgeRetry=0,this.stallResolved(e),!this.ended&&n.ended&&this.hls&&(this.ended=e||1,this.hls.trigger(m.MEDIA_ENDED,{stalled:!1}));return}if(!Q.getBuffered(n).length){this.nudgeRetry=0;return}const u=Q.bufferInfo(n,e,0),d=u.nextStart||0,g=this.fragmentTracker;if(o&&g&&this.hls){const D=Wn(this.hls.inFlightFragments,e),A=u.len>Os,L=!d||D||d-e>Os&&!g.getPartialFragment(e);if(A||L)return;this.moved=!1}const f=(i=this.hls)==null?void 0:i.latestLevelDetails;if(!this.moved&&this.stalled!==null&&g){if(!(u.len>0)&&!d)return;const A=Math.max(d,u.start||0)-e,R=!!(f!=null&&f.live)?f.targetduration*2:Os,I=Is(e,g);if(A>0&&(A<=R||I)){n.paused||this._trySkipBufferHole(I);return}}const p=r.detectStallWithCurrentTimeMs,y=self.performance.now(),E=this.waiting;let v=this.stalled;if(v===null)if(E>0&&y-E=p||E)&&this.hls){var S;if(((S=this.mediaSource)==null?void 0:S.readyState)==="ended"&&!(f!=null&&f.live)&&Math.abs(e-(f?.edge||0))<1){if(this.ended)return;this.ended=e||1,this.hls.trigger(m.MEDIA_ENDED,{stalled:!0});return}if(this._reportStall(u),!this.media||!this.hls)return}const x=Q.bufferInfo(n,e,r.maxBufferHole);this._tryFixBufferStall(x,T,e)}stallResolved(e){const t=this.stalled;if(t&&this.hls&&(this.stalled=null,this.stallReported)){const s=self.performance.now()-t;this.log(`playback not stuck anymore @${e}, after ${Math.round(s)}ms`),this.stallReported=!1,this.waiting=0,this.hls.trigger(m.STALL_RESOLVED,{})}}nudgeOnVideoHole(e,t){var s;const i=this.buffered.video;if(this.hls&&this.media&&this.fragmentTracker&&(s=this.buffered.audio)!=null&&s.length&&i&&i.length>1&&e>i.end(0)){const r=Q.bufferedInfo(Q.timeRangesToArray(this.buffered.audio),e,0);if(r.len>1&&t>=r.start){const n=Q.timeRangesToArray(i),o=Q.bufferedInfo(n,t,0).bufferedIndex;if(o>-1&&oo)&&h-l<1&&e-l<2){const u=new Error(`nudging playhead to flush pipeline after video hole. currentTime: ${e} hole: ${l} -> ${h} buffered index: ${c}`);this.warn(u.message),this.media.currentTime+=1e-6;let d=Is(e,this.fragmentTracker);d&&"fragment"in d?d=d.fragment:d||(d=void 0);const g=Q.bufferInfo(this.media,e,0);this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_SEEK_OVER_HOLE,fatal:!1,error:u,reason:u.message,frag:d,buffer:g.len,bufferInfo:g})}}}}}_tryFixBufferStall(e,t,s){var i,r;const{fragmentTracker:n,media:o}=this,c=(i=this.hls)==null?void 0:i.config;if(!o||!n||!c)return;const l=(r=this.hls)==null?void 0:r.latestLevelDetails,h=Is(s,n);if((h||l!=null&&l.live&&s1&&e.len>c.maxBufferHole||e.nextStart&&(e.nextStart-sc.highBufferWatchdogPeriod*1e3||this.waiting)&&(this.warn("Trying to nudge playhead over buffer-hole"),this._tryNudgeBuffer(e))}adjacentTraversal(e,t){const s=this.fragmentTracker,i=e.nextStart;if(s&&i){const r=s.getFragAtPos(t,Y.MAIN),n=s.getFragAtPos(i,Y.MAIN);if(r&&n)return n.sn-r.sn<2}return!1}_reportStall(e){const{hls:t,media:s,stallReported:i,stalled:r}=this;if(!i&&r!==null&&s&&t){this.stallReported=!0;const n=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${ce(e)})`);this.warn(n.message),t.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_STALLED_ERROR,fatal:!1,error:n,buffer:e.len,bufferInfo:e,stalled:{start:r}})}}_trySkipBufferHole(e){var t;const{fragmentTracker:s,media:i}=this,r=(t=this.hls)==null?void 0:t.config;if(!i||!s||!r)return 0;const n=i.currentTime,o=Q.bufferInfo(i,n,0),c=n0&&o.len<1&&i.readyState<3,d=c-n;if(d>0&&(h||u)){if(d>r.maxBufferHole){let f=!1;if(n===0){const p=s.getAppendedFrag(0,Y.MAIN);p&&c"u"))return self.VTTCue||self.TextTrackCue}function Li(a,e,t,s,i){let r=new a(e,t,"");try{r.value=s,i&&(r.type=i)}catch{r=new a(e,t,ce(i?re({type:i},s):s))}return r}const Ls=(()=>{const a=zi();try{a&&new a(0,Number.POSITIVE_INFINITY,"")}catch{return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();class gf{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.removeCues=!0,this.assetCue=void 0,this.onEventCueEnter=()=>{this.hls&&this.hls.trigger(m.EVENT_CUE_ENTER,{})},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=this.onEventCueEnter=null}_registerListeners(){const{hls:e}=this;e&&(e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(m.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}_unregisterListeners(){const{hls:e}=this;e&&(e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(m.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}onMediaAttaching(e,t){var s;this.media=t.media,((s=t.overrides)==null?void 0:s.cueRemoval)===!1&&(this.removeCues=!1)}onMediaAttached(){var e;const t=(e=this.hls)==null?void 0:e.latestLevelDetails;t&&this.updateDateRangeCues(t)}onMediaDetaching(e,t){this.media=null,!t.transferMedia&&(this.id3Track&&(this.removeCues&&$t(this.id3Track,this.onEventCueEnter),this.id3Track=null),this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tLs&&(u=Ls),u-h<=0&&(u=h+ff);for(let g=0;gh.type===Ke.audioId3&&c:i==="video"?l=h=>h.type===Ke.emsg&&o:l=h=>h.type===Ke.audioId3&&c||h.type===Ke.emsg&&o,qi(r,t,s,l)}}onLevelUpdated(e,{details:t}){this.updateDateRangeCues(t,!0)}onLevelPtsUpdated(e,t){Math.abs(t.drift)>.01&&this.updateDateRangeCues(t.details)}updateDateRangeCues(e,t){if(!this.hls||!this.media)return;const{assetPlayerId:s,timelineOffset:i,enableDateRangeMetadataCues:r,interstitialsController:n}=this.hls.config;if(!r)return;const o=zi();if(s&&i&&!n){const{fragmentStart:p,fragmentEnd:y}=e;let E=this.assetCue;E?(E.startTime=p,E.endTime=y):o&&(E=this.assetCue=Li(o,p,y,{assetPlayerId:this.hls.config.assetPlayerId},"hlsjs.interstitial.asset"),E&&(E.id=s,this.id3Track||(this.id3Track=this.createTrack(this.media)),this.id3Track.addCue(E),E.addEventListener("enter",this.onEventCueEnter)))}if(!e.hasProgramDateTime)return;const{id3Track:c}=this,{dateRanges:l}=e,h=Object.keys(l);let u=this.dateRangeCuesAppended;if(c&&t){var d;if((d=c.cues)!=null&&d.length){const p=Object.keys(u).filter(y=>!h.includes(y));for(let y=p.length;y--;){var g;const E=p[y],v=(g=u[E])==null?void 0:g.cues;delete u[E],v&&Object.keys(v).forEach(T=>{const S=v[T];if(S){S.removeEventListener("enter",this.onEventCueEnter);try{c.removeCue(S)}catch{}}})}}else u=this.dateRangeCuesAppended={}}const f=e.fragments[e.fragments.length-1];if(!(h.length===0||!K(f?.programDateTime))){this.id3Track||(this.id3Track=this.createTrack(this.media));for(let p=0;p{if($!==E.id){const G=l[$];if(G.class===E.class&&G.startDate>E.startDate&&(!C||E.startDate.01&&($.startTime=v,$.endTime=D);else if(o){let G=E.attr[C];Fc(C)&&(G=na(G));const O=Li(o,v,D,{key:C,data:G},Ke.dateRange);O&&(O.id=y,this.id3Track.addCue(O),S[C]=O,n&&(C==="X-ASSET-LIST"||C==="X-ASSET-URL")&&O.addEventListener("enter",this.onEventCueEnter))}}u[y]={cues:S,dateRange:E,durationKnown:x}}}}}class mf{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.currentTime=0,this.stallCount=0,this._latency=null,this._targetLatencyUpdated=!1,this.onTimeupdate=()=>{const{media:t}=this,s=this.levelDetails;if(!t||!s)return;this.currentTime=t.currentTime;const i=this.computeLatency();if(i===null)return;this._latency=i;const{lowLatencyMode:r,maxLiveSyncPlaybackRate:n}=this.config;if(!r||n===1||!s.live)return;const o=this.targetLatency;if(o===null)return;const c=i-o,l=Math.min(this.maxLatency,o+s.targetduration);if(c.05&&this.forwardBufferLength>1){const u=Math.min(2,Math.max(1,n)),d=Math.round(2/(1+Math.exp(-.75*c-this.edgeStalled))*20)/20,g=Math.min(u,Math.max(1,d));this.changeMediaPlaybackRate(t,g)}else t.playbackRate!==1&&t.playbackRate!==0&&this.changeMediaPlaybackRate(t,1)},this.hls=e,this.config=e.config,this.registerListeners()}get levelDetails(){var e;return((e=this.hls)==null?void 0:e.latestLevelDetails)||null}get latency(){return this._latency||0}get maxLatency(){const{config:e}=this;if(e.liveMaxLatencyDuration!==void 0)return e.liveMaxLatencyDuration;const t=this.levelDetails;return t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const e=this.levelDetails;if(e===null||this.hls===null)return null;const{holdBack:t,partHoldBack:s,targetduration:i}=e,{liveSyncDuration:r,liveSyncDurationCount:n,lowLatencyMode:o}=this.config,c=this.hls.userConfig;let l=o&&s||t;(this._targetLatencyUpdated||c.liveSyncDuration||c.liveSyncDurationCount||l===0)&&(l=r!==void 0?r:n*i);const h=i;return l+Math.min(this.stallCount*this.config.liveSyncOnStallIncrease,h)}set targetLatency(e){this.stallCount=0,this.config.liveSyncDuration=e,this._targetLatencyUpdated=!0}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency;if(e===null||t===null)return null;const s=this.levelDetails;if(s===null)return null;const i=s.edge,r=e-t-this.edgeStalled,n=i-s.totalduration,o=i-(this.config.lowLatencyMode&&s.partTarget||s.targetduration);return Math.min(Math.max(n,r),o)}get drift(){const e=this.levelDetails;return e===null?1:e.drift}get edgeStalled(){const e=this.levelDetails;if(e===null)return 0;const t=(this.config.lowLatencyMode&&e.partTarget||e.targetduration)*3;return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e}=this,t=this.levelDetails;if(!e||!t)return 0;const s=e.buffered.length;return(s?e.buffered.end(s-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.hls=null}registerListeners(){const{hls:e}=this;e&&(e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(m.ERROR,this.onError,this))}unregisterListeners(){const{hls:e}=this;e&&(e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(m.ERROR,this.onError,this))}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.onTimeupdate)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null)}onManifestLoading(){this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){t.advanced&&this.onTimeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.onTimeupdate)}onError(e,t){var s;t.details===_.BUFFER_STALLED_ERROR&&(this.stallCount++,this.hls&&(s=this.levelDetails)!=null&&s.live&&this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))}changeMediaPlaybackRate(e,t){var s,i;e.playbackRate!==t&&((s=this.hls)==null||s.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${(i=this.targetLatency)==null?void 0:i.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${e.playbackRate} to ${t}`),e.playbackRate=t)}estimateLiveEdge(){const e=this.levelDetails;return e===null?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return e===null?null:e-this.currentTime}}class pf extends vr{constructor(e,t){super(e,"level-controller"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(m.FRAG_BUFFERED,this.onFragBuffered,this),e.on(m.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(m.FRAG_BUFFERED,this.onFragBuffered,this),e.off(m.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach(t=>{t.loadError=0,t.fragmentError=0}),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const s=this.hls.config.preferManagedMediaSource,i=[],r={},n={};let o=!1,c=!1,l=!1;t.levels.forEach(h=>{const u=h.attrs;let{audioCodec:d,videoCodec:g}=h;d&&(h.audioCodec=d=Bs(d,s)||void 0),g&&(g=h.videoCodec=Ql(g));const{width:f,height:p,unknownCodecs:y}=h,E=y?.length||0;if(o||(o=!!(f&&p)),c||(c=!!g),l||(l=!!d),E||d&&!this.isAudioSupported(d)||g&&!this.isVideoSupported(g)){this.log(`Some or all CODECS not supported "${u.CODECS}"`);return}const{CODECS:v,"FRAME-RATE":T,"HDCP-LEVEL":S,"PATHWAY-ID":x,RESOLUTION:D,"VIDEO-RANGE":A}=u,R=`${`${x||"."}-`}${h.bitrate}-${D}-${T}-${v}-${A}-${S}`;if(r[R])if(r[R].uri!==h.url&&!h.attrs["PATHWAY-ID"]){const I=n[R]+=1;h.attrs["PATHWAY-ID"]=new Array(I+1).join(".");const C=this.createLevel(h);r[R]=C,i.push(C)}else r[R].addGroupId("audio",u.AUDIO),r[R].addGroupId("text",u.SUBTITLES);else{const I=this.createLevel(h);r[R]=I,n[R]=1,i.push(I)}}),this.filterAndSortMediaOptions(i,t,o,c,l)}createLevel(e){const t=new rs(e),s=e.supplemental;if(s!=null&&s.videoCodec&&!this.isVideoSupported(s.videoCodec)){const i=new Error(`SUPPLEMENTAL-CODECS not supported "${s.videoCodec}"`);this.log(i.message),t.supportedResult=ya(i,[])}return t}isAudioSupported(e){return ss(e,"audio",this.hls.config.preferManagedMediaSource)}isVideoSupported(e){return ss(e,"video",this.hls.config.preferManagedMediaSource)}filterAndSortMediaOptions(e,t,s,i,r){var n;let o=[],c=[],l=e;const h=((n=t.stats)==null?void 0:n.parsing)||{};if((s||i)&&r&&(l=l.filter(({videoCodec:v,videoRange:T,width:S,height:x})=>(!!v||!!(S&&x))&&oc(T))),l.length===0){Promise.resolve().then(()=>{if(this.hls){let v="no level with compatible codecs found in manifest",T=v;t.levels.length&&(T=`one or more CODECS in variant not supported: ${ce(t.levels.map(x=>x.attrs.CODECS).filter((x,D,A)=>A.indexOf(x)===D))}`,this.warn(T),v+=` (${T})`);const S=new Error(v);this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:S,reason:T})}}),h.end=performance.now();return}t.audioTracks&&(o=t.audioTracks.filter(v=>!v.audioCodec||this.isAudioSupported(v.audioCodec)),jn(o)),t.subtitles&&(c=t.subtitles,jn(c));const u=l.slice(0);l.sort((v,T)=>{if(v.attrs["HDCP-LEVEL"]!==T.attrs["HDCP-LEVEL"])return(v.attrs["HDCP-LEVEL"]||"")>(T.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&v.height!==T.height)return v.height-T.height;if(v.frameRate!==T.frameRate)return v.frameRate-T.frameRate;if(v.videoRange!==T.videoRange)return Us.indexOf(v.videoRange)-Us.indexOf(T.videoRange);if(v.videoCodec!==T.videoCodec){const S=Br(v.videoCodec),x=Br(T.videoCodec);if(S!==x)return x-S}if(v.uri===T.uri&&v.codecSet!==T.codecSet){const S=Ns(v.codecSet),x=Ns(T.codecSet);if(S!==x)return x-S}return v.averageBitrate!==T.averageBitrate?v.averageBitrate-T.averageBitrate:0});let d=u[0];if(this.steering&&(l=this.steering.filterParsedLevels(l),l.length!==u.length)){for(let v=0;vS&&S===this.hls.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=x)}break}const f=r&&!i,p=this.hls.config,y=!!(p.audioStreamController&&p.audioTrackController),E={levels:l,audioTracks:o,subtitleTracks:c,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:i,altAudio:y&&!f&&o.some(v=>!!v.url)};h.end=performance.now(),this.hls.trigger(m.MANIFEST_PARSED,E)}get levels(){return this._levels.length===0?null:this._levels}get loadLevelObj(){return this.currentLevel}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(t.length===0)return;if(e<0||e>=t.length){const h=new Error("invalid level idx"),u=e<0;if(this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.LEVEL_SWITCH_ERROR,level:e,fatal:u,error:h,reason:h.message}),u)return;e=Math.min(e,t.length-1)}const s=this.currentLevelIndex,i=this.currentLevel,r=i?i.attrs["PATHWAY-ID"]:void 0,n=t[e],o=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,s===e&&i&&r===o)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${o?" with Pathway "+o:""} from level ${s}${r?" with Pathway "+r:""}`);const c={level:e,attrs:n.attrs,details:n.details,bitrate:n.bitrate,averageBitrate:n.averageBitrate,maxBitrate:n.maxBitrate,realBitrate:n.realBitrate,width:n.width,height:n.height,codecSet:n.codecSet,audioCodec:n.audioCodec,videoCodec:n.videoCodec,audioGroups:n.audioGroups,subtitleGroups:n.subtitleGroups,loaded:n.loaded,loadError:n.loadError,fragmentError:n.fragmentError,name:n.name,id:n.id,uri:n.uri,url:n.url,urlId:0,audioGroupIds:n.audioGroupIds,textGroupIds:n.textGroupIds};this.hls.trigger(m.LEVEL_SWITCHING,c);const l=n.details;if(!l||l.live){const h=this.switchParams(n.uri,i?.details,l);this.loadPlaylist(h)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,this._startLevel===void 0&&(this._startLevel=e),e!==-1&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(this._startLevel===void 0){const e=this.hls.config.startLevel;return e!==void 0?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}get pathways(){return this.steering?this.steering.pathways():[]}get pathwayPriority(){return this.steering?this.steering.pathwayPriority:null}set pathwayPriority(e){if(this.steering){const t=this.steering.pathways(),s=e.filter(i=>t.indexOf(i)!==-1);if(e.length<1){this.warn(`pathwayPriority ${e} should contain at least one pathway from list: ${t}`);return}this.steering.pathwayPriority=s}}onError(e,t){t.fatal||!t.context||t.context.type===te.LEVEL&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(t!==void 0&&t.type===Y.MAIN){const s=t.elementaryStreams;if(!Object.keys(s).some(r=>!!s[r]))return;const i=this._levels[t.level];i!=null&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var s;const{level:i,details:r}=t,n=t.levelInfo;if(!n){var o;this.warn(`Invalid level index ${i}`),(o=t.deliveryDirectives)!=null&&o.skip&&(r.deltaUpdateFailed=!0);return}if(n===this.currentLevel||t.withoutMultiVariant){n.fragmentError===0&&(n.loadError=0);let c=n.details;c===t.details&&c.advanced&&(c=void 0),this.playlistLoaded(i,t,c)}else(s=t.deliveryDirectives)!=null&&s.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentLevel)&&this.scheduleLoading(this.currentLevel,e)}loadingPlaylist(e,t){super.loadingPlaylist(e,t);const s=this.getUrlWithDirectives(e.uri,t),i=this.currentLevelIndex,r=e.attrs["PATHWAY-ID"],n=e.details,o=n?.age;this.log(`Loading level index ${i}${t?.msn!==void 0?" at sn "+t.msn+" part "+t.part:""}${r?" Pathway "+r:""}${o&&n.live?" age "+o.toFixed(1)+(n.type&&" "+n.type||""):""} ${s}`),this.hls.trigger(m.LEVEL_LOADING,{url:s,level:i,levelInfo:e,pathwayId:e.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}get nextLoadLevel(){return this.manualLevelIndex!==-1?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,this.manualLevelIndex===-1&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;if(this._levels.length===1)return;const s=this._levels.filter((r,n)=>n!==e?!0:(this.steering&&this.steering.removeLevel(r),r===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,r.details&&r.details.fragments.forEach(o=>o.level=-1)),!1));Ba(s),this._levels=s,this.currentLevelIndex>-1&&(t=this.currentLevel)!=null&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.manualLevelIndex>-1&&(this.manualLevelIndex=this.currentLevelIndex);const i=s.length-1;this._firstLevel=Math.min(this._firstLevel,i),this._startLevel&&(this._startLevel=Math.min(this._startLevel,i)),this.hls.trigger(m.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(m.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}}function jn(a){const e={};a.forEach(t=>{const s=t.groupId||"";t.id=e[s]=e[s]||0,e[s]++})}function Oo(){return self.SourceBuffer||self.WebKitSourceBuffer}function Fo(){if(!It())return!1;const e=Oo();return!e||e.prototype&&typeof e.prototype.appendBuffer=="function"&&typeof e.prototype.remove=="function"}function yf(){if(!Fo())return!1;const a=It();return typeof a?.isTypeSupported=="function"&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some(e=>a.isTypeSupported(is(e,"video")))||["mp4a.40.2","fLaC"].some(e=>a.isTypeSupported(is(e,"audio"))))}function Ef(){var a;const e=Oo();return typeof(e==null||(a=e.prototype)==null?void 0:a.changeType)=="function"}const vf=100;class Tf extends ur{constructor(e,t,s){super(e,t,s,"stream-controller",Y.MAIN),this.audioCodecSwap=!1,this.level=-1,this._forceStartLoad=!1,this._hasEnoughToStart=!1,this.altAudio=0,this.audioOnly=!1,this.fragPlaying=null,this.fragLastKbps=0,this.couldBacktrack=!1,this.backtrackFragment=null,this.audioCodecSwitch=!1,this.videoBuffer=null,this.onMediaPlaying=()=>{this.tick()},this.onMediaSeeked=()=>{const i=this.media,r=i?i.currentTime:null;if(r===null||!K(r)||(this.log(`Media seeked to ${r.toFixed(3)}`),!this.getBufferedFrag(r)))return;const n=this.getFwdBufferInfoAtPos(i,r,Y.MAIN,0);if(n===null||n.len===0){this.warn(`Main forward buffer length at ${r} on "seeked" event ${n?n.len:"empty"})`);return}this.tick()},this.registerListeners()}registerListeners(){super.registerListeners();const{hls:e}=this;e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.LEVEL_LOADING,this.onLevelLoading,this),e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.on(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(m.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(m.BUFFER_CREATED,this.onBufferCreated,this),e.on(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(m.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){super.unregisterListeners();const{hls:e}=this;e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.off(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(m.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(m.BUFFER_CREATED,this.onBufferCreated,this),e.off(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(m.FRAG_BUFFERED,this.onFragBuffered,this)}onHandlerDestroying(){this.onMediaPlaying=this.onMediaSeeked=null,this.unregisterListeners(),super.onHandlerDestroying()}startLoad(e,t){if(this.levels){const{lastCurrentTime:s,hls:i}=this;if(this.stopLoad(),this.setInterval(vf),this.level=-1,!this.startFragRequested){let r=i.startLevel;r===-1&&(i.config.testBandwidth&&this.levels.length>1?(r=0,this.bitrateTest=!0):r=i.firstAutoLevel),i.nextLoadLevel=r,this.level=i.loadLevel,this._hasEnoughToStart=!!t}s>0&&e===-1&&!t&&(this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`),e=s),this.state=P.IDLE,this.nextLoadPosition=this.lastCurrentTime=e+this.timelineOffset,this.startPosition=t?-1:e,this.tick()}else this._forceStartLoad=!0,this.state=P.STOPPED}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case P.WAITING_LEVEL:{const{levels:e,level:t}=this,s=e?.[t],i=s?.details;if(i&&(!i.live||this.levelLastLoaded===s&&!this.waitForLive(s))){if(this.waitForCdnTuneIn(i))break;this.state=P.IDLE;break}else if(this.hls.nextLoadLevel!==this.level){this.state=P.IDLE;break}break}case P.FRAG_LOADING_WAITING_RETRY:this.checkRetryDate();break}this.state===P.IDLE&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){var e;super.onTickEnd(),(e=this.media)!=null&&e.readyState&&this.media.seeking===!1&&(this.lastCurrentTime=this.media.currentTime),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:s,media:i}=this;if(t===null||!i&&!this.primaryPrefetch&&(this.startFragRequested||!e.config.startFragPrefetch)||this.altAudio&&this.audioOnly)return;const r=this.buffering?e.nextLoadLevel:e.loadLevel;if(!(s!=null&&s[r]))return;const n=s[r],o=this.getMainFwdBufferInfo();if(o===null)return;const c=this.getLevelDetails();if(c&&this._streamEnded(o,c)){const p={};this.altAudio===2&&(p.type="video"),this.hls.trigger(m.BUFFER_EOS,p),this.state=P.ENDED;return}if(!this.buffering)return;e.loadLevel!==r&&e.manualLevel===-1&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=n.details;if(!l||this.state===P.WAITING_LEVEL||this.waitForLive(n)){this.level=r,this.state=P.WAITING_LEVEL,this.startFragRequested=!1;return}const h=o.len,u=this.getMaxBufferLength(n.maxBitrate);if(h>=u)return;this.backtrackFragment&&this.backtrackFragment.start>o.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:o.end;let g=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&g&&Te(g)&&this.fragmentTracker.getState(g)!==Ie.OK){var f;const y=((f=this.backtrackFragment)!=null?f:g).sn-l.startSN,E=l.fragments[y-1];E&&g.cc===E.cc&&(g=E,this.fragmentTracker.removeFragment(E))}else this.backtrackFragment&&o.len&&(this.backtrackFragment=null);if(g&&this.isLoopLoading(g,d)){if(!g.gap){const y=this.audioOnly&&!this.altAudio?le.AUDIO:le.VIDEO,E=(y===le.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;E&&this.afterBufferFlushed(E,y,Y.MAIN)}g=this.getNextFragmentLoopLoading(g,l,o,Y.MAIN,u)}g&&(g.initSegment&&!g.initSegment.data&&!this.bitrateTest&&(g=g.initSegment),this.loadFragment(g,n,d))}loadFragment(e,t,s){const i=this.fragmentTracker.getState(e);i===Ie.NOT_LOADED||i===Ie.PARTIAL?Te(e)?this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):super.loadFragment(e,t,s):this._loadInitSegment(e,t):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,Y.MAIN)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(t!=null&&t.readyState){let s;const i=this.getAppendedFrag(t.currentTime);i&&i.start>1&&this.flushMainBuffer(0,i.start-1);const r=this.getLevelDetails();if(r!=null&&r.live){const o=this.getMainFwdBufferInfo();if(!o||o.len=n-t.maxFragLookUpTolerance&&r<=o;if(i!==null&&s.duration>i&&(r{this.hls&&this.hls.trigger(m.AUDIO_TRACK_SWITCHED,t)}),s.trigger(m.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null});return}s.trigger(m.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const s=$s(t.url,this.hls);if(s){const i=this.videoBuffer;i&&this.mediaBuffer!==i&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=i)}this.altAudio=s?2:0,this.tick()}onBufferCreated(e,t){const s=t.tracks;let i,r,n=!1;for(const o in s){const c=s[o];if(c.id==="main"){if(r=o,i=c,o==="video"){const l=s[o];l&&(this.videoBuffer=l.buffer)}}else n=!0}n&&i?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:s,part:i}=t,r=s.type===Y.MAIN;if(r){if(this.fragContextChanged(s)){this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),this.state===P.PARSED&&(this.state=P.IDLE);return}const o=i?i.stats:s.stats;this.fragLastKbps=Math.round(8*o.total/(o.buffering.end-o.loading.first)),Te(s)&&(this.fragPrevious=s),this.fragBufferedComplete(s,i)}const n=this.media;n&&(!this._hasEnoughToStart&&Q.getBuffered(n).length&&(this._hasEnoughToStart=!0,this.seekToStartPos()),r&&this.tick())}get hasEnoughToStart(){return this._hasEnoughToStart}onError(e,t){var s;if(t.fatal){this.state=P.ERROR;return}switch(t.details){case _.FRAG_GAP:case _.FRAG_PARSING_ERROR:case _.FRAG_DECRYPT_ERROR:case _.FRAG_LOAD_ERROR:case _.FRAG_LOAD_TIMEOUT:case _.KEY_LOAD_ERROR:case _.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Y.MAIN,t);break;case _.LEVEL_LOAD_ERROR:case _.LEVEL_LOAD_TIMEOUT:case _.LEVEL_PARSING_ERROR:!t.levelRetry&&this.state===P.WAITING_LEVEL&&((s=t.context)==null?void 0:s.type)===te.LEVEL&&(this.state=P.IDLE);break;case _.BUFFER_ADD_CODEC_ERROR:case _.BUFFER_APPEND_ERROR:if(t.parent!=="main")return;this.reduceLengthAndFlushBuffer(t)&&this.resetLoadingState();break;case _.BUFFER_FULL_ERROR:if(t.parent!=="main")return;this.reduceLengthAndFlushBuffer(t)&&(!this.config.interstitialsController&&this.config.assetPlayerId?this._hasEnoughToStart=!0:this.flushMainBuffer(0,Number.POSITIVE_INFINITY));break;case _.INTERNAL_EXCEPTION:this.recoverWorkerError(t);break}}onFragLoadEmergencyAborted(){this.state=P.IDLE,this._hasEnoughToStart||(this.startFragRequested=!1,this.nextLoadPosition=this.lastCurrentTime),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==le.AUDIO||!this.altAudio){const s=(t===le.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;s&&(this.afterBufferFlushed(s,t,Y.MAIN),this.tick())}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level,this.level===-1&&this.resetWhenMissingContext(this.fragCurrent)),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let s=this.startPosition;if(s>=0&&t0&&(c{const{hls:i}=this,r=s?.frag;if(!r||this.fragContextChanged(r))return;t.fragmentError=0,this.state=P.IDLE,this.startFragRequested=!1,this.bitrateTest=!1;const n=r.stats;n.parsing.start=n.parsing.end=n.buffering.start=n.buffering.end=self.performance.now(),i.trigger(m.FRAG_LOADED,s),r.bitrateTest=!1}).catch(s=>{this.state===P.STOPPED||this.state===P.ERROR||(this.warn(s),this.resetFragmentLoading(e))})}_handleTransmuxComplete(e){const t=this.playlistType,{hls:s}=this,{remuxResult:i,chunkMeta:r}=e,n=this.getCurrentContext(r);if(!n){this.resetWhenMissingContext(r);return}const{frag:o,part:c,level:l}=n,{video:h,text:u,id3:d,initSegment:g}=i,{details:f}=l,p=this.altAudio?void 0:i.audio;if(this.fragContextChanged(o)){this.fragmentTracker.removeFragment(o);return}if(this.state=P.PARSING,g){const y=g.tracks;if(y){const S=o.initSegment||o;if(this.unhandledEncryptionError(g,o))return;this._bufferInitSegment(l,y,S,r),s.trigger(m.FRAG_PARSING_INIT_SEGMENT,{frag:S,id:t,tracks:y})}const E=g.initPTS,v=g.timescale,T=this.initPTS[o.cc];if(K(E)&&(!T||T.baseTime!==E||T.timescale!==v)){const S=g.trackId;this.initPTS[o.cc]={baseTime:E,timescale:v,trackId:S},s.trigger(m.INIT_PTS_FOUND,{frag:o,id:t,initPTS:E,timescale:v,trackId:S})}}if(h&&f){p&&h.type==="audiovideo"&&this.logMuxedErr(o);const y=f.fragments[o.sn-1-f.startSN],E=o.sn===f.startSN,v=!y||o.cc>y.cc;if(i.independent!==!1){const{startPTS:T,endPTS:S,startDTS:x,endDTS:D}=h;if(c)c.elementaryStreams[h.type]={startPTS:T,endPTS:S,startDTS:x,endDTS:D};else if(h.firstKeyFrame&&h.independent&&r.id===1&&!v&&(this.couldBacktrack=!0),h.dropped&&h.independent){const A=this.getMainFwdBufferInfo(),L=(A?A.end:this.getLoadPosition())+this.config.maxBufferHole,R=h.firstKeyFramePTS?h.firstKeyFramePTS:T;if(!E&&LOs&&(o.gap=!0);o.setElementaryStreamInfo(h.type,T,S,x,D),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(h,o,c,r,E||v)}else if(E||v)o.gap=!0;else{this.backtrack(o);return}}if(p){const{startPTS:y,endPTS:E,startDTS:v,endDTS:T}=p;c&&(c.elementaryStreams[le.AUDIO]={startPTS:y,endPTS:E,startDTS:v,endDTS:T}),o.setElementaryStreamInfo(le.AUDIO,y,E,v,T),this.bufferFragmentData(p,o,c,r)}if(f&&d!=null&&d.samples.length){const y={id:t,frag:o,details:f,samples:d.samples};s.trigger(m.FRAG_PARSING_METADATA,y)}if(f&&u){const y={id:t,frag:o,details:f,samples:u.samples};s.trigger(m.FRAG_PARSING_USERDATA,y)}}logMuxedErr(e){this.warn(`${Te(e)?"Media":"Init"} segment with muxed audiovideo where only video expected: ${e.url}`)}_bufferInitSegment(e,t,s,i){if(this.state!==P.PARSING)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&(delete t.audio,t.audiovideo&&this.logMuxedErr(s));const{audio:r,video:n,audiovideo:o}=t;if(r){const l=e.audioCodec;let h=bs(r.codec,l);h==="mp4a"&&(h="mp4a.40.5");const u=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){h&&(h.indexOf("mp4a.40.5")!==-1?h="mp4a.40.2":h="mp4a.40.5");const d=r.metadata;d&&"channelCount"in d&&(d.channelCount||1)!==1&&u.indexOf("firefox")===-1&&(h="mp4a.40.5")}h&&h.indexOf("mp4a.40.5")!==-1&&u.indexOf("android")!==-1&&r.container!=="audio/mpeg"&&(h="mp4a.40.2",this.log(`Android: force audio codec to ${h}`)),l&&l!==h&&this.log(`Swapping manifest audio codec "${l}" for "${h}"`),r.levelCodec=h,r.id=Y.MAIN,this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${h||""}/${l||""}/${r.codec}]`),delete t.audiovideo}if(n){n.levelCodec=e.videoCodec,n.id=Y.MAIN;const l=n.codec;if(l?.length===4)switch(l){case"hvc1":case"hev1":n.codec="hvc1.1.6.L120.90";break;case"av01":n.codec="av01.0.04M.08";break;case"avc1":n.codec="avc1.42e01e";break}this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${l}]${n.codec!==l?" parsed-corrected="+n.codec:""}${n.supplemental?" supplemental="+n.supplemental:""}`),delete t.audiovideo}o&&(this.log(`Init audiovideo buffer, container:${o.container}, codecs[level/parsed]=[${e.codecs}/${o.codec}]`),delete t.video,delete t.audio);const c=Object.keys(t);if(c.length){if(this.hls.trigger(m.BUFFER_CODECS,t),!this.hls)return;c.forEach(l=>{const u=t[l].initSegment;u!=null&&u.byteLength&&this.hls.trigger(m.BUFFER_APPENDING,{type:l,data:u,frag:s,part:null,chunkMeta:i,parent:s.type})})}this.tickImmediate()}getMainFwdBufferInfo(){const e=this.mediaBuffer&&this.altAudio===2?this.mediaBuffer:this.media;return this.getFwdBufferInfo(e,Y.MAIN)}get maxBufferLength(){const{levels:e,level:t}=this,s=e?.[t];return s?this.getMaxBufferLength(s.maxBitrate):this.config.maxBufferLength}backtrack(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=P.IDLE}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&e.seeking===!1){const s=e.currentTime;if(Q.isBuffered(e,s)?t=this.getAppendedFrag(s):Q.isBuffered(e,s+.1)&&(t=this.getAppendedFrag(s+.1)),t){this.backtrackFragment=null;const i=this.fragPlaying,r=t.level;(!i||t.sn!==i.sn||i.level!==r)&&(this.fragPlaying=t,this.hls.trigger(m.FRAG_CHANGED,{frag:t}),(!i||i.level!==r)&&this.hls.trigger(m.LEVEL_SWITCHED,{level:r}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){var e;if(this.fragPlaying)return this.fragPlaying;const t=((e=this.media)==null?void 0:e.currentTime)||this.lastCurrentTime;return K(t)?this.getAppendedFrag(t):null}get currentProgramDateTime(){var e;const t=((e=this.media)==null?void 0:e.currentTime)||this.lastCurrentTime;if(K(t)){const s=this.getLevelDetails(),i=this.currentFrag||(s?Pt(null,s.fragments,t):null);if(i){const r=i.programDateTime;if(r!==null){const n=r+(t-i.start)*1e3;return new Date(n)}}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Sf extends Ye{constructor(e,t){super("key-loader",t),this.config=void 0,this.keyIdToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const s in this.keyIdToKeyInfo){const i=this.keyIdToKeyInfo[s].loader;if(i){var t;if(e&&e!==((t=i.context)==null?void 0:t.frag.type))return;i.abort()}}}detach(){for(const e in this.keyIdToKeyInfo){const t=this.keyIdToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyIdToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyIdToKeyInfo){const t=this.keyIdToKeyInfo[e].loader;t&&t.destroy()}this.keyIdToKeyInfo={}}createKeyLoadError(e,t=_.KEY_LOAD_ERROR,s,i,r){return new ht({type:W.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:s,networkDetails:i})}loadClear(e,t,s){if(this.emeController&&this.config.emeEnabled&&!this.emeController.getSelectedKeySystemFormats().length){if(t.length)for(let i=0,r=t.length;i{if(!this.emeController)return;n.setKeyFormat(o);const c=Ds(o);if(c)return this.emeController.getKeySystemAccess([c])})}if(this.config.requireKeySystemAccessOnStart){const i=Qt(this.config);if(i.length)return this.emeController.getKeySystemAccess(i)}}return null}load(e){return!e.decryptdata&&e.encrypted&&this.emeController&&this.config.emeEnabled?this.emeController.selectKeySystemFormat(e).then(t=>this.loadInternal(e,t)):this.loadInternal(e)}loadInternal(e,t){var s,i;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const l=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:`Missing decryption data on fragment in onKeyLoading (emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`);return Promise.reject(this.createKeyLoadError(e,_.KEY_LOAD_ERROR,l))}const n=r.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,_.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));const o=Ri(r);let c=this.keyIdToKeyInfo[o];if((s=c)!=null&&s.decryptdata.key)return r.key=c.decryptdata.key,Promise.resolve({frag:e,keyInfo:c});if(this.emeController&&(i=c)!=null&&i.keyLoadPromise)switch(this.emeController.getKeyStatus(c.decryptdata)){case"usable":case"usable-in-future":return c.keyLoadPromise.then(h=>{const{keyInfo:u}=h;return r.key=u.decryptdata.key,{frag:e,keyInfo:u}})}switch(this.log(`${this.keyIdToKeyInfo[o]?"Rel":"L"}oading${r.keyId?" keyId: "+be(r.keyId):""} URI: ${r.uri} from ${e.type} ${e.level}`),c=this.keyIdToKeyInfo[o]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return r.keyFormat==="identity"?this.loadKeyHTTP(c,e):this.loadKeyEME(c,e);case"AES-128":case"AES-256":case"AES-256-CTR":return this.loadKeyHTTP(c,e);default:return Promise.reject(this.createKeyLoadError(e,_.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const s={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){var i;if(!e.decryptdata.keyId&&(i=t.initSegment)!=null&&i.data){const n=Ul(t.initSegment.data);if(n.length){let o=n[0];o.some(c=>c!==0)?(this.log(`Using keyId found in init segment ${be(o)}`),At.setKeyIdForUri(e.decryptdata.uri,o)):(o=At.addKeyIdForUri(e.decryptdata.uri),this.log(`Generating keyId to patch media ${be(o)}`)),e.decryptdata.keyId=o}}if(!e.decryptdata.keyId&&!Te(t))return Promise.resolve(s);const r=this.emeController.loadKey(s);return(e.keyLoadPromise=r.then(n=>(e.mediaKeySessionContext=n,s))).catch(n=>{throw e.keyLoadPromise=null,"data"in n&&(n.data.frag=t),n})}return Promise.resolve(s)}loadKeyHTTP(e,t){const s=this.config,i=s.loader,r=new i(s);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise((n,o)=>{const c={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},l=s.keyLoadPolicy.default,h={loadPolicy:l,timeout:l.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},u={onSuccess:(d,g,f,p)=>{const{frag:y,keyInfo:E}=f,v=Ri(E.decryptdata);if(!y.decryptdata||E!==this.keyIdToKeyInfo[v])return o(this.createKeyLoadError(y,_.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),p));E.decryptdata.key=y.decryptdata.key=new Uint8Array(d.data),y.keyLoader=null,E.loader=null,n({frag:y,keyInfo:E})},onError:(d,g,f,p)=>{this.resetLoader(g),o(this.createKeyLoadError(t,_.KEY_LOAD_ERROR,new Error(`HTTP Error ${d.code} loading key ${d.text}`),f,re({url:c.url,data:void 0},d)))},onTimeout:(d,g,f)=>{this.resetLoader(g),o(this.createKeyLoadError(t,_.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),f))},onAbort:(d,g,f)=>{this.resetLoader(g),o(this.createKeyLoadError(t,_.INTERNAL_ABORTED,new Error("key loading aborted"),f))}};r.load(c,h,u)})}resetLoader(e){const{frag:t,keyInfo:s,url:i}=e,r=s.loader;t.keyLoader===r&&(t.keyLoader=null,s.loader=null);const n=Ri(s.decryptdata)||i;delete this.keyIdToKeyInfo[n],r&&r.destroy()}}function Ri(a){if(a.keyFormat!==_e.FAIRPLAY){const e=a.keyId;if(e)return be(e)}return a.uri}function Xn(a){const{type:e}=a;switch(e){case te.AUDIO_TRACK:return Y.AUDIO;case te.SUBTITLE_TRACK:return Y.SUBTITLE;default:return Y.MAIN}}function bi(a,e){let t=a.url;return(t===void 0||t.indexOf("data:")===0)&&(t=e.url),t}class xf{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.onManifestLoaded=this.checkAutostartLoad,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.LEVEL_LOADING,this.onLevelLoading,this),e.on(m.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(m.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.LEVEL_LOADING,this.onLevelLoading,this),e.off(m.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(m.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this)}createInternalLoader(e){const t=this.hls.config,s=t.pLoader,i=t.loader,r=s||i,n=new r(t);return this.loaders[e.type]=n,n}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:s}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:te.MANIFEST,url:s,deliveryDirectives:null,levelOrTrack:null})}onLevelLoading(e,t){const{id:s,level:i,pathwayId:r,url:n,deliveryDirectives:o,levelInfo:c}=t;this.load({id:s,level:i,pathwayId:r,responseType:"text",type:te.LEVEL,url:n,deliveryDirectives:o,levelOrTrack:c})}onAudioTrackLoading(e,t){const{id:s,groupId:i,url:r,deliveryDirectives:n,track:o}=t;this.load({id:s,groupId:i,level:null,responseType:"text",type:te.AUDIO_TRACK,url:r,deliveryDirectives:n,levelOrTrack:o})}onSubtitleTrackLoading(e,t){const{id:s,groupId:i,url:r,deliveryDirectives:n,track:o}=t;this.load({id:s,groupId:i,level:null,responseType:"text",type:te.SUBTITLE_TRACK,url:r,deliveryDirectives:n,levelOrTrack:o})}onLevelsUpdated(e,t){const s=this.loaders[te.LEVEL];if(s){const i=s.context;i&&!t.levels.some(r=>r===i.levelOrTrack)&&(s.abort(),delete this.loaders[te.LEVEL])}}load(e){var t;const s=this.hls.config;let i=this.getInternalLoader(e);if(i){const l=this.hls.logger,h=i.context;if(h&&h.levelOrTrack===e.levelOrTrack&&(h.url===e.url||h.deliveryDirectives&&!e.deliveryDirectives)){h.url===e.url?l.log(`[playlist-loader]: ignore ${e.url} ongoing request`):l.log(`[playlist-loader]: ignore ${e.url} in favor of ${h.url}`);return}l.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),i.abort()}let r;if(e.type===te.MANIFEST?r=s.manifestLoadPolicy.default:r=ae({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),i=this.createInternalLoader(e),K((t=e.deliveryDirectives)==null?void 0:t.part)){let l;if(e.type===te.LEVEL&&e.level!==null?l=this.hls.levels[e.level].details:e.type===te.AUDIO_TRACK&&e.id!==null?l=this.hls.audioTracks[e.id].details:e.type===te.SUBTITLE_TRACK&&e.id!==null&&(l=this.hls.subtitleTracks[e.id].details),l){const h=l.partTarget,u=l.targetduration;if(h&&u){const d=Math.max(h*3,u*.8)*1e3;r=ae({},r,{maxTimeToFirstByteMs:Math.min(d,r.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(d,r.maxTimeToFirstByteMs)})}}}const n=r.errorRetry||r.timeoutRetry||{},o={loadPolicy:r,timeout:r.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},c={onSuccess:(l,h,u,d)=>{const g=this.getInternalLoader(u);this.resetInternalLoader(u.type);const f=l.data;h.parsing.start=performance.now(),st.isMediaPlaylist(f)||u.type!==te.MANIFEST?this.handleTrackOrLevelPlaylist(l,h,u,d||null,g):this.handleMasterPlaylist(l,h,u,d)},onError:(l,h,u,d)=>{this.handleNetworkError(h,u,!1,l,d)},onTimeout:(l,h,u)=>{this.handleNetworkError(h,u,!0,void 0,l)}};i.load(e,o,c)}checkAutostartLoad(){if(!this.hls)return;const{config:{autoStartLoad:e,startPosition:t},forceStartLoad:s}=this.hls;(e||s)&&(this.hls.logger.log(`${e?"auto":"force"} startLoad with configured startPosition ${t}`),this.hls.startLoad(t))}handleMasterPlaylist(e,t,s,i){const r=this.hls,n=e.data,o=bi(e,s),c=st.parseMasterPlaylist(n,o);if(c.playlistParsingError){t.parsing.end=performance.now(),this.handleManifestParsingError(e,s,c.playlistParsingError,i,t);return}const{contentSteering:l,levels:h,sessionData:u,sessionKeys:d,startTimeOffset:g,variableList:f}=c;this.variableList=f,h.forEach(v=>{const{unknownCodecs:T}=v;if(T){const{preferManagedMediaSource:S}=this.hls.config;let{audioCodec:x,videoCodec:D}=v;for(let A=T.length;A--;){const L=T[A];ss(L,"audio",S)?(v.audioCodec=x=x?`${x},${L}`:L,Yt.audio[x.substring(0,4)]=2,T.splice(A,1)):ss(L,"video",S)&&(v.videoCodec=D=D?`${D},${L}`:L,Yt.video[D.substring(0,4)]=2,T.splice(A,1))}}});const{AUDIO:p=[],SUBTITLES:y,"CLOSED-CAPTIONS":E}=st.parseMasterPlaylistMedia(n,o,c);p.length&&!p.some(T=>!T.url)&&h[0].audioCodec&&!h[0].attrs.AUDIO&&(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),p.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new fe({}),bitrate:0,url:""})),r.trigger(m.MANIFEST_LOADED,{levels:h,audioTracks:p,subtitles:y,captions:E,contentSteering:l,url:o,stats:t,networkDetails:i,sessionData:u,sessionKeys:d,startTimeOffset:g,variableList:f})}handleTrackOrLevelPlaylist(e,t,s,i,r){const n=this.hls,{id:o,level:c,type:l}=s,h=bi(e,s),u=K(c)?c:K(o)?o:0,d=Xn(s),g=st.parseLevelPlaylist(e.data,h,u,d,0,this.variableList);if(l===te.MANIFEST){const f={attrs:new fe({}),bitrate:0,details:g,name:"",url:h};g.requestScheduled=t.loading.start+Fa(g,0),n.trigger(m.MANIFEST_LOADED,{levels:[f],audioTracks:[],url:h,stats:t,networkDetails:i,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),s.levelDetails=g,this.handlePlaylistLoaded(g,e,t,s,i,r)}handleManifestParsingError(e,t,s,i,r){this.hls.trigger(m.ERROR,{type:W.NETWORK_ERROR,details:_.MANIFEST_PARSING_ERROR,fatal:t.type===te.MANIFEST,url:e.url,err:s,error:s,reason:s.message,response:e,context:t,networkDetails:i,stats:r})}handleNetworkError(e,t,s=!1,i,r){let n=`A network ${s?"timeout":"error"+(i?" (status "+i.code+")":"")} occurred while loading ${e.type}`;e.type===te.LEVEL?n+=`: ${e.level} id: ${e.id}`:(e.type===te.AUDIO_TRACK||e.type===te.SUBTITLE_TRACK)&&(n+=` id: ${e.id} group-id: "${e.groupId}"`);const o=new Error(n);this.hls.logger.warn(`[playlist-loader]: ${n}`);let c=_.UNKNOWN,l=!1;const h=this.getInternalLoader(e);switch(e.type){case te.MANIFEST:c=s?_.MANIFEST_LOAD_TIMEOUT:_.MANIFEST_LOAD_ERROR,l=!0;break;case te.LEVEL:c=s?_.LEVEL_LOAD_TIMEOUT:_.LEVEL_LOAD_ERROR,l=!1;break;case te.AUDIO_TRACK:c=s?_.AUDIO_TRACK_LOAD_TIMEOUT:_.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case te.SUBTITLE_TRACK:c=s?_.SUBTITLE_TRACK_LOAD_TIMEOUT:_.SUBTITLE_LOAD_ERROR,l=!1;break}h&&this.resetInternalLoader(e.type);const u={type:W.NETWORK_ERROR,details:c,fatal:l,url:e.url,loader:h,context:e,error:o,networkDetails:t,stats:r};if(i){const d=t?.url||e.url;u.response=re({url:d,data:void 0},i)}this.hls.trigger(m.ERROR,u)}handlePlaylistLoaded(e,t,s,i,r,n){const o=this.hls,{type:c,level:l,levelOrTrack:h,id:u,groupId:d,deliveryDirectives:g}=i,f=bi(t,i),p=Xn(i);let y=typeof i.level=="number"&&p===Y.MAIN?l:void 0;const E=e.playlistParsingError;if(E){if(this.hls.logger.warn(`${E} ${e.url}`),!o.config.ignorePlaylistParsingErrors){o.trigger(m.ERROR,{type:W.NETWORK_ERROR,details:_.LEVEL_PARSING_ERROR,fatal:!1,url:f,error:E,reason:E.message,response:t,context:i,level:y,parent:p,networkDetails:r,stats:s});return}e.playlistParsingError=null}if(!e.fragments.length){const v=e.playlistParsingError=new Error("No Segments found in Playlist");o.trigger(m.ERROR,{type:W.NETWORK_ERROR,details:_.LEVEL_EMPTY_ERROR,fatal:!1,url:f,error:v,reason:v.message,response:t,context:i,level:y,parent:p,networkDetails:r,stats:s});return}switch(e.live&&n&&(n.getCacheAge&&(e.ageHeader=n.getCacheAge()||0),(!n.getCacheAge||isNaN(e.ageHeader))&&(e.ageHeader=0)),c){case te.MANIFEST:case te.LEVEL:if(y){if(!h)y=0;else if(h!==o.levels[y]){const v=o.levels.indexOf(h);v>-1&&(y=v)}}o.trigger(m.LEVEL_LOADED,{details:e,levelInfo:h||o.levels[0],level:y||0,id:u||0,stats:s,networkDetails:r,deliveryDirectives:g,withoutMultiVariant:c===te.MANIFEST});break;case te.AUDIO_TRACK:o.trigger(m.AUDIO_TRACK_LOADED,{details:e,track:h,id:u||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:g});break;case te.SUBTITLE_TRACK:o.trigger(m.SUBTITLE_TRACK_LOADED,{details:e,track:h,id:u||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:g});break}}}class De{static get version(){return ns}static isMSESupported(){return Fo()}static isSupported(){return yf()}static getMediaSource(){return It()}static get Events(){return m}static get MetadataSchema(){return Ke}static get ErrorTypes(){return W}static get ErrorDetails(){return _}static get DefaultConfig(){return De.defaultConfig?De.defaultConfig:nf}static set DefaultConfig(e){De.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.logger=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new dr,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioStreamController=void 0,this.subtititleStreamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.interstitialsController=void 0,this.gapController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this._url=null,this._sessionId=void 0,this.triggeringException=void 0,this.started=!1;const t=this.logger=bl(e.debug||!1,"Hls instance",e.assetPlayerId),s=this.config=of(De.DefaultConfig,e,t);this.userConfig=e,s.progressive&&lf(s,t);const{abrController:i,bufferController:r,capLevelController:n,errorController:o,fpsController:c}=s,l=new o(this),h=this.abrController=new i(this),u=new xc(this),d=s.interstitialsController,g=d?this.interstitialsController=new d(this,De):null,f=this.bufferController=new r(this,u),p=this.capLevelController=new n(this),y=new c(this),E=new xf(this),v=s.contentSteeringController,T=v?new v(this):null,S=this.levelController=new pf(this,T),x=new gf(this),D=new Sf(this.config,this.logger),A=this.streamController=new Tf(this,u,D),L=this.gapController=new df(this,u);p.setStreamController(A),y.setStreamController(A);const R=[E,S,A];g&&R.splice(1,0,g),T&&R.splice(1,0,T),this.networkControllers=R;const I=[h,f,L,p,y,x,u];this.audioTrackController=this.createController(s.audioTrackController,R);const C=s.audioStreamController;C&&R.push(this.audioStreamController=new C(this,u,D)),this.subtitleTrackController=this.createController(s.subtitleTrackController,R);const $=s.subtitleStreamController;$&&R.push(this.subtititleStreamController=new $(this,u,D)),this.createController(s.timelineController,I),D.emeController=this.emeController=this.createController(s.emeController,I),this.cmcdController=this.createController(s.cmcdController,I),this.latencyController=this.createController(mf,I),this.coreComponents=I,R.push(l);const G=l.onErrorOut;typeof G=="function"&&this.on(m.ERROR,G,l),this.on(m.MANIFEST_LOADED,E.onManifestLoaded,E)}createController(e,t){if(e){const s=new e(this);return t&&t.push(s),s}return null}on(e,t,s=this){this._emitter.on(e,t,s)}once(e,t,s=this){this._emitter.once(e,t,s)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,s=this,i){this._emitter.off(e,t,s,i)}listeners(e){return this._emitter.listeners(e)}emit(e,t,s){return this._emitter.emit(e,t,s)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(s){if(this.logger.error("An internal error happened while handling event "+e+'. Error message: "'+s.message+'". Here is a stacktrace:',s),!this.triggeringException){this.triggeringException=!0;const i=e===m.ERROR;this.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.INTERNAL_EXCEPTION,fatal:i,event:e,error:s}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){this.logger.log("destroy"),this.trigger(m.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this._url=null,this.networkControllers.forEach(t=>t.destroy()),this.networkControllers.length=0,this.coreComponents.forEach(t=>t.destroy()),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){if(!e||"media"in e&&!e.media){const r=new Error(`attachMedia failed: invalid argument (${e})`);this.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.ATTACH_MEDIA_ERROR,fatal:!0,error:r});return}this.logger.log("attachMedia"),this._media&&(this.logger.warn("media must be detached before attaching"),this.detachMedia());const t="media"in e,s=t?e.media:e,i=t?e:{media:s};this._media=s,this.trigger(m.MEDIA_ATTACHING,i)}detachMedia(){this.logger.log("detachMedia"),this.trigger(m.MEDIA_DETACHING,{}),this._media=null}transferMedia(){this._media=null;const e=this.bufferController.transferMedia();return this.trigger(m.MEDIA_DETACHING,{transferMedia:e}),e}loadSource(e){this.stopLoad();const t=this.media,s=this._url,i=this._url=tr.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log(`loadSource:${i}`),t&&s&&(s!==i||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(m.MANIFEST_LOADING,{url:e})}get url(){return this._url}get hasEnoughToStart(){return this.streamController.hasEnoughToStart}get startPosition(){return this.streamController.startPositionValue}startLoad(e=-1,t){this.logger.log(`startLoad(${e+(t?", ":"")})`),this.started=!0,this.resumeBuffering();for(let s=0;s{e.resumeBuffering&&e.resumeBuffering()}))}pauseBuffering(){this.bufferingEnabled&&(this.logger.log("pause buffering"),this.networkControllers.forEach(e=>{e.pauseBuffering&&e.pauseBuffering()}))}get inFlightFragments(){const e={[Y.MAIN]:this.streamController.inFlightFrag};return this.audioStreamController&&(e[Y.AUDIO]=this.audioStreamController.inFlightFrag),this.subtititleStreamController&&(e[Y.SUBTITLE]=this.subtititleStreamController.inFlightFrag),e}swapAudioCodec(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){this.logger.log("recoverMediaError");const e=this._media,t=e?.currentTime;this.detachMedia(),e&&(this.attachMedia(e),t&&this.startLoad(t))}removeLevel(e){this.levelController.removeLevel(e)}get sessionId(){let e=this._sessionId;return e||(e=this._sessionId=ud()),e}get levels(){const e=this.levelController.levels;return e||[]}get latestLevelDetails(){return this.streamController.getLevelDetails()||null}get loadLevelObj(){return this.levelController.loadLevelObj}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){this.logger.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){this.logger.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){this.logger.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){this.logger.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return e===-1&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){this.logger.log(`set startLevel:${e}`),e!==-1&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get abrEwmaDefaultEstimate(){const{bwEstimator:e}=this.abrController;return e?e.defaultEstimate:NaN}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(this.logger.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){ac(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return this.levelController.manualLevel===-1}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const s=e.length;for(let i=0;i=t)return i;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:s}=this;let i;if(t===-1&&e!=null&&e.length?i=e.length-1:i=t,s)for(let r=i;r--;){const n=e[r].attrs["HDCP-LEVEL"];if(n&&n<=s)return r}return i}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}get maxBufferLength(){return this.streamController.maxBufferLength}setAudioOption(e){var t;return((t=this.audioTrackController)==null?void 0:t.setAudioOption(e))||null}setSubtitleOption(e){var t;return((t=this.subtitleTrackController)==null?void 0:t.setSubtitleOption(e))||null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return e?e.subtitleDisplay:!1}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}set targetLatency(e){this.latencyController.targetLatency=e}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}get pathways(){return this.levelController.pathways}get pathwayPriority(){return this.levelController.pathwayPriority}set pathwayPriority(e){this.levelController.pathwayPriority=e}get bufferedToEnd(){var e;return!!((e=this.bufferController)!=null&&e.bufferedToEnd)}get interstitialsManager(){var e;return((e=this.interstitialsController)==null?void 0:e.interstitialsManager)||null}getMediaDecodingInfo(e,t=this.allAudioTracks){const s=Ta(t);return Ea(e,s,navigator.mediaCapabilities)}}De.defaultConfig=void 0;var Af=Oe('
'),If=Oe('
scrub
',2);function Lf(a,e){Zi(e,!0);let t=ie(void 0),s=null,i=ie(""),r=ie(!1),n=ie(0),o=ie(0),c=ie(void 0),l=ie(!1),h=ie(0),u=ie(0),d=ie(!1),g=0,f=ie(!0),p=null,y=ie(!1);function E(){s&&(s.destroy(),s=null)}function v(){!M(t)||!e.src||(E(),q(i,""),De.isSupported()?(s=new De({enableWorker:!0,lowLatencyMode:!1}),s.loadSource(e.src),s.attachMedia(M(t)),s.on(De.Events.MANIFEST_PARSED,()=>{M(t)?.play().catch(()=>{}),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&q(i,"🐸 Audio may not work in Safari — these streams use Opus. Try Chrome or Firefox for sound.")}),s.on(De.Events.ERROR,(k,F)=>{if(console.error("HLS error:",F),F.fatal)switch(F.type){case De.ErrorTypes.NETWORK_ERROR:q(i,`Network error: ${F.details}`),s?.startLoad();break;case De.ErrorTypes.MEDIA_ERROR:q(i,`Media error: ${F.details}`),s?.recoverMediaError();break;default:q(i,`Fatal error: ${F.details}`),E();break}})):q(i,"HLS playback is not supported in this browser."))}ii(()=>(e.src,M(t)&&v(),E)),ii(()=>(document.addEventListener("fullscreenchange",R),()=>document.removeEventListener("fullscreenchange",R)));let T=0;function S(){if(!M(t)||M(l))return;q(n,M(t).currentTime,!0),q(o,M(t).duration||0,!0);const k=M(o)>0?M(n)/M(o):0,F=k-T;Math.abs(F)>.002&&(q(u,M(u)===0?1:0,!0),q(d,F<0),T=k),q(h,k,!0)}function x(){q(r,!0)}function D(){q(r,!1)}function A(){M(t)&&(M(t).paused?M(t).play().catch(()=>{}):M(t).pause())}function L(){const k=M(t)?.closest(".player-wrapper");k&&(document.fullscreenElement?document.exitFullscreen?.().catch(()=>{}):k.requestFullscreen?.().catch(()=>{}))}function R(){q(y,!!document.fullscreenElement)}function I(k){if(!M(c))return;const F=M(c).getBoundingClientRect(),N=Math.max(0,Math.min(1,(k.clientX-F.left)/F.width)),V=N-g;Math.abs(V)>.02&&(q(u,M(u)===0?1:0,!0),q(d,V<0),g=N),q(h,N,!0),M(t)&&M(o)>0&&(M(t).currentTime=N*M(o),q(n,N*M(o)))}function C(k){k.preventDefault(),q(l,!0),I(k),window.addEventListener("mousemove",G),window.addEventListener("mouseup",H)}function $(k){k.preventDefault(),k.stopPropagation(),q(l,!0),window.addEventListener("mousemove",G),window.addEventListener("mouseup",H)}function G(k){M(l)&&I(k)}function H(){q(l,!1),window.removeEventListener("mousemove",G),window.removeEventListener("mouseup",H)}function O(k){k.code==="Space"&&M(t)&&(k.preventDefault(),A())}ii(()=>(window.addEventListener("keydown",O),()=>window.removeEventListener("keydown",O)));function w(){q(f,!0),p&&clearTimeout(p),p=setTimeout(()=>{M(r)&&q(f,!1)},2500)}Fs(a,{seed:"player-main",padding:4,children:(k,F)=>{var N=If(),V=de(N);Ms(V,ye=>q(t,ye),()=>M(t));var B=ve(V,2);let U;var j=de(B);dt(j,"aria-valuemin",0),dt(j,"tabindex",0);var J=de(j);let X;var Z=de(J);ue(J),ue(j),Ms(j,ye=>q(c,ye),()=>M(c)),ue(B);var oe=ve(B,2);let he;var xe=ve(oe,2);{var Ce=ye=>{var nt=Af(),kt=de(nt,!0);ue(nt),Ge(()=>Xe(kt,M(i))),ke(ye,nt)};mt(xe,ye=>{M(i)&&ye(Ce)})}ue(N),Ge(()=>{U=Zt(B,1,"controls svelte-zbxgh1",null,U,{visible:M(f)||!M(r)}),dt(j,"aria-valuenow",M(n)),dt(j,"aria-valuemax",M(o)),X=Zt(J,1,"scrub-frog svelte-zbxgh1",null,X,{flipped:M(d)}),Rs(J,`left: ${M(h)*100}%;`),dt(Z,"src",M(u)===0?"/froggiestand.png":"/froggiejump.png"),he=Zt(oe,1,"fullscreen-btn svelte-zbxgh1",null,he,{visible:M(f)||!M(r)}),dt(oe,"title",M(y)?"Exit fullscreen":"Fullscreen")}),ft("mousemove",N,w),xt("mouseenter",N,w),xt("mouseleave",N,()=>{M(r)&&q(f,!1)}),xt("timeupdate",V,S),xt("play",V,x),xt("pause",V,D),ft("click",V,A),ft("mousedown",j,C),ft("mousedown",J,$),ft("click",oe,L),ke(k,N)},$$slots:{default:!0}}),Ji()}er(["mousemove","click","mousedown"]);var Rf=Oe(''),bf=Oe('
'),_f=Oe('
'),Df=Oe('
hop
'),Cf=Oe(''),Pf=Oe('

',1),kf=Oe('');function wf(a,e){Zi(e,!0);let t=ie(Di(e.video.value.creator)),s=ie(null);const i=e.video.uri.split("/").pop()||e.video.uri,r=ul(e.video.value.creator),n=`transform: rotate(${r.rotation}deg) translate(${r.translateX}px, ${r.translateY}px);`;let o=ie(void 0),c=ie(void 0),l=ie(!1),h=ie(0),u=ie(!1),d=ie(!1),g=ie(!1),f=null,p=null,y=0,E=!1,v=null;zn(()=>{Ci(e.video.value.creator).then(k=>q(t,k,!0)),dl(e.video).then(k=>q(s,k,!0))}),Mo(S);function T(){if(f)return;q(d,!0),f=document.createElement("video"),f.muted=!0,f.playsInline=!0,f.preload="auto",f.style.cssText="position:fixed;top:-9999px;left:-9999px;width:320px;height:180px;pointer-events:none;",document.body.appendChild(f),f.addEventListener("seeked",x);const k=ia(e.video.uri);De.isSupported()&&(p=new De({enableWorker:!1,lowLatencyMode:!1,startLevel:0}),p.loadSource(k),p.attachMedia(f),p.on(De.Events.LEVEL_LOADED,(F,N)=>{y=N.details.totalduration,q(u,!0),A(M(h))}),p.on(De.Events.ERROR,(F,N)=>{N.fatal&&q(d,!1)}))}function S(){p&&(p.destroy(),p=null),f&&(f.removeEventListener("seeked",x),f.remove(),f=null),q(u,!1),q(d,!1),q(g,!1),E=!1,v=null,y=0}function x(){if(E=!1,q(d,!1),L(),v!==null){const k=v;v=null,D(k)}}function D(k){!f||!M(u)||(E=!0,f.currentTime=k)}function A(k){if(!M(u)||!y)return;const F=k*y;E?v=F:D(F)}function L(){if(!f||!M(c))return;const k=f.videoWidth,F=f.videoHeight;if(!k||!F)return;const N=M(c).getBoundingClientRect(),V=window.devicePixelRatio||1;M(c).width=N.width*V,M(c).height=N.height*V;const B=M(c).getContext("2d");B&&(B.drawImage(f,0,0,M(c).width,M(c).height),q(g,!0))}let R=ie(0),I=0,C=ie(!1);function $(){q(l,!0),T()}function G(k){if(!M(o))return;const F=M(o).getBoundingClientRect(),N=Math.max(0,Math.min(1,(k.clientX-F.left)/F.width)),V=N-I;Math.abs(V)>.03&&(q(R,M(R)===0?1:0,!0),q(C,V<0),I=N),q(h,N,!0),A(M(h))}function H(){q(l,!1)}var O=kf(),w=de(O);Fs(w,{get seed(){return i},fill:"#39FF44",strokeColor:"#0A182B",strokeWidth:2.2,padding:"clamp(24px, 4vw, 36px)",children:(k,F)=>{var N=Pf(),V=Jn(N),B=de(V,!0);ue(V);var U=ve(V,2),j=de(U);{let ye=ea(()=>i+"-thumb");Fs(j,{get seed(){return M(ye)},fill:"#3992FF",strokeColor:"#0A182B",strokeWidth:1.5,padding:0,children:(nt,kt)=>{var We=Cf(),Qs=de(We);{var se=me=>{var Ee=Rf();Ge(()=>{dt(Ee,"src",M(s)),dt(Ee,"alt",e.video.value.title)}),ke(me,Ee)};mt(Qs,me=>{M(s)&&me(se)})}var Se=ve(Qs,2);let Pe;Ms(Se,me=>q(c,me),()=>M(c));var ze=ve(Se,2);{var Ne=me=>{var Ee=bf();ke(me,Ee)};mt(ze,me=>{M(l)&&M(d)&&!M(g)&&me(Ne)})}var at=ve(ze,2);{var ot=me=>{var Ee=_f(),Rt=de(Ee);ue(Ee),Ge(()=>Rs(Rt,`width: ${M(h)*100}%`)),ke(me,Ee)};mt(at,me=>{M(l)&&M(u)&&me(ot)})}var cs=ve(at,2);{var wt=me=>{var Ee=Df();let Rt;var Zs=de(Ee);ue(Ee),Ge(()=>{Rt=Zt(Ee,1,"scrub-frog svelte-1nxalmg",null,Rt,{flipped:M(C)}),Rs(Ee,`left: ${M(h)*100}%;`),dt(Zs,"src",M(R)===0?"/froggiestand.png":"/froggiejump.png")}),ke(me,Ee)};mt(cs,me=>{M(l)&&me(wt)})}nl(2),ue(We),Ms(We,me=>q(o,me),()=>M(o)),Ge(()=>Pe=Zt(Se,1,"scrub-canvas svelte-1nxalmg",null,Pe,{visible:M(l)&&M(g)})),xt("mouseenter",We,$),ft("mousemove",We,G),xt("mouseleave",We,H),ke(nt,We)},$$slots:{default:!0}})}ue(U);var J=ve(U,2),X=de(J),Z=de(X,!0);ue(X);var oe=ve(X,2),he=de(oe,!0);ue(oe);var xe=ve(oe,2),Ce=de(xe,!0);ue(xe),ue(J),Ge((ye,nt)=>{Xe(B,ye),Xe(Z,e.video.value.title),Xe(he,M(t)),Xe(Ce,nt)},[()=>ta(e.video.value.duration),()=>sa(e.video.value.createdAt)]),ke(k,N)},$$slots:{default:!0}}),ue(O),Ge(()=>Rs(O,n)),ft("click",O,()=>e.onSelect(e.video)),ke(a,O),Ji()}er(["click","mousemove"]);var Of=Oe('

· ·

',1),Ff=Oe('
'),Mf=Oe('
'),Nf=Oe(''),Bf=Oe(''),Uf=Oe('
');function zf(a,e){Zi(e,!0);const t=9;let s=ie(Di([])),i=ie(!1),r=ie(null),n=ie(""),o=ie(""),c=ie(Di([void 0])),l=ie(0),h=ie(!0);async function u(){q(i,!0),q(o,"");try{const O=await gl(M(c)[M(l)],t);q(s,O.records,!0),q(h,!!O.cursor&&O.records.length===t,!0),M(h)&&M(c).length<=M(l)+1&&q(c,[...M(c),O.cursor],!0)}catch(O){q(o,O.message,!0)}q(i,!1)}function d(){!M(h)||M(i)||(Cr(l),u(),window.scrollTo({top:0,behavior:"smooth"}))}function g(){M(l)<=0||M(i)||(Cr(l,-1),u(),window.scrollTo({top:0,behavior:"smooth"}))}function f(O){q(r,O,!0),Ci(O.value.creator).then(k=>q(n,k,!0));const w=new URL(window.location.href);w.searchParams.set("v",O.uri),window.history.pushState({},"",w.toString()),window.scrollTo({top:0,behavior:"smooth"})}function p(){q(r,null);const O=new URL(window.location.href);O.searchParams.delete("v"),window.history.pushState({},"",O.toString())}zn(async()=>{await u();const w=new URLSearchParams(window.location.search).get("v");if(w){const k=M(s).find(F=>F.uri===w);k&&f(k)}});function y(){const w=new URLSearchParams(window.location.search).get("v");if(w){const k=M(s).find(F=>F.uri===w);k&&(q(r,k,!0),Ci(k.value.creator).then(F=>q(n,F,!0)))}else q(r,null)}var E=Uf();xt("popstate",ol,y),cl("1uha8ag",O=>{al(()=>{ll.title="vod frog"})});var v=de(E);fl(v,{onHomeClick:p});var T=ve(v,2);{var S=O=>{var w=Ff(),k=de(w);{let V=ea(()=>ia(M(r).uri));Lf(k,{get src(){return M(V)}})}var F=ve(k,2),N=de(F);Fs(N,{seed:"player-info",fill:"#39FF44",strokeColor:"#0A182B",strokeWidth:1.8,padding:48,children:(V,B)=>{var U=Of(),j=Jn(U),J=de(j,!0);ue(j);var X=ve(j,2),Z=de(X),oe=de(Z,!0);ue(Z);var he=ve(Z,3),xe=ve(he,2);ue(X),Ge((Ce,ye)=>{Xe(J,M(r).value.title),Xe(oe,M(n)||M(r).value.creator),Xe(he,` ${Ce??""} `),Xe(xe,` ${ye??""}`)},[()=>sa(M(r).value.createdAt),()=>ta(M(r).value.duration)]),ke(V,U)},$$slots:{default:!0}}),ue(F),ue(w),ke(O,w)};mt(T,O=>{M(r)&&O(S)})}var x=ve(T,2);{var D=O=>{var w=Mf(),k=de(w,!0);ue(w),Ge(()=>Xe(k,M(o))),ke(O,w)};mt(x,O=>{M(o)&&O(D)})}var A=ve(x,2);pl(A,21,()=>M(s),O=>O.uri,(O,w)=>{wf(O,{get video(){return M(w)},onSelect:f})}),ue(A);var L=ve(A,2),R=de(L);{var I=O=>{var w=Nf();Ge(()=>w.disabled=M(i)),ft("click",w,g),ke(O,w)};mt(R,O=>{M(l)>0&&O(I)})}var C=ve(R,2),$=de(C);ue(C);var G=ve(C,2);{var H=O=>{var w=Bf();Ge(()=>w.disabled=M(i)),ft("click",w,d),ke(O,w)};mt(G,O=>{M(h)&&O(H)})}ue(L),ue(E),Ge(()=>Xe($,`page ${M(l)+1}`)),ke(a,E),Ji()}er(["click"]);export{zf as component}; +`),l=[],h=e?Yh(e.baseTime,e.timescale):0;let u="00:00.000",d=0,g=0,f,p=!0;o.oncue=function(y){const E=t[s];let v=t.ccOffset;const T=(d-h)/9e4;if(E!=null&&E.new&&(g!==void 0?v=t.ccOffset=E.start:Bd(t,s,T)),T){if(!e){f=new Error("Missing initPTS for VTT MPEGTS");return}v=T-t.presentationOffset}const S=y.endTime-y.startTime,x=Ke((y.startTime+v-g)*9e4,i*9e4)/9e4;y.startTime=Math.max(x,0),y.endTime=Math.max(x+S,0);const D=y.text.trim();y.text=decodeURIComponent(encodeURIComponent(D)),y.id||(y.id=Ir(y.startTime,y.endTime,D)),y.endTime>0&&l.push(y)},o.onparsingerror=function(y){f=y},o.onflush=function(){if(f){n(f);return}r(l)},c.forEach(y=>{if(p)if(Ti(y,"X-TIMESTAMP-MAP=")){p=!1,y.slice(16).split(",").forEach(E=>{Ti(E,"LOCAL:")?u=E.slice(6):Ti(E,"MPEGTS:")&&(d=parseInt(E.slice(7)))});try{g=Nd(u)/1e3}catch(E){f=E}return}else y===""&&(p=!1);o.parse(y+` +`)}),o.flush()}const Si="stpp.ttml.im1t",Do=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Co=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,$d={left:"start",center:"center",right:"end",start:"start",end:"end"};function $n(a,e,t,s){const i=ee(new Uint8Array(a),["mdat"]);if(i.length===0){s(new Error("Could not parse IMSC1 mdat"));return}const r=i.map(o=>Ye(o)),n=Hh(e.baseTime,1,e.timescale);try{r.forEach(o=>t(Gd(o,n)))}catch(o){s(o)}}function Gd(a,e){const i=new DOMParser().parseFromString(a,"text/xml").getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(r).reduce((u,d)=>(u[d]=i.getAttribute(`ttp:${d}`)||r[d],u),{}),o=i.getAttribute("xml:space")!=="preserve",c=Gn(xi(i,"styling","style")),l=Gn(xi(i,"layout","region")),h=xi(i,"body","[begin]");return[].map.call(h,u=>{const d=Po(u,o);if(!d||!u.hasAttribute("begin"))return null;const g=Ii(u.getAttribute("begin"),n),f=Ii(u.getAttribute("dur"),n);let p=Ii(u.getAttribute("end"),n);if(g===null)throw Kn(u);if(p===null){if(f===null)throw Kn(u);p=g+f}const y=new Ar(g-e,p-e,d);y.id=Ir(y.startTime,y.endTime,y.text);const E=l[u.getAttribute("region")],v=c[u.getAttribute("style")],T=Kd(E,v,c),{textAlign:S}=T;if(S){const x=$d[S];x&&(y.lineAlign=x),y.align=S}return ae(y,T),y}).filter(u=>u!==null)}function xi(a,e,t){const s=a.getElementsByTagName(e)[0];return s?[].slice.call(s.querySelectorAll(t)):[]}function Gn(a){return a.reduce((e,t)=>{const s=t.getAttribute("xml:id");return s&&(e[s]=t),e},{})}function Po(a,e){return[].slice.call(a.childNodes).reduce((t,s,i)=>{var r;return s.nodeName==="br"&&i?t+` +`:(r=s.childNodes)!=null&&r.length?Po(s,e):e?t+s.textContent.trim().replace(/\s+/g," "):t+s.textContent},"")}function Kd(a,e,t){const s="http://www.w3.org/ns/ttml#styling";let i=null;const r=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],n=a!=null&&a.hasAttribute("style")?a.getAttribute("style"):null;return n&&t.hasOwnProperty(n)&&(i=t[n]),r.reduce((o,c)=>{const l=Ai(e,s,c)||Ai(a,s,c)||Ai(i,s,c);return l&&(o[c]=l),o},{})}function Ai(a,e,t){return a&&a.hasAttributeNS(e,t)?a.getAttributeNS(e,t):null}function Kn(a){return new Error(`Could not parse ttml timestamp ${a}`)}function Ii(a,e){if(!a)return null;let t=Ro(a);return t===null&&(Do.test(a)?t=Vd(a,e):Co.test(a)&&(t=Hd(a,e))),t}function Vd(a,e){const t=Do.exec(a),s=(t[4]|0)+(t[5]|0)/e.subFrameRate;return(t[1]|0)*3600+(t[2]|0)*60+(t[3]|0)+s/e.frameRate}function Hd(a,e){const t=Co.exec(a),s=Number(t[1]);switch(t[2]){case"h":return s*3600;case"m":return s*60;case"ms":return s*1e3;case"f":return s/e.frameRate;case"t":return s/e.tickRate}return s}class As{constructor(e,t){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=e,this.trackName=t}dispatchCue(){this.startTime!==null&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)}newCue(e,t,s){(this.startTime===null||this.startTime>e)&&(this.startTime=e),this.endTime=t,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}class Yd{constructor(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Hn(),this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(m.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(m.FRAG_LOADING,this.onFragLoading,this),e.on(m.FRAG_LOADED,this.onFragLoaded,this),e.on(m.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(m.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(m.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(m.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(m.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(m.FRAG_LOADING,this.onFragLoading,this),e.off(m.FRAG_LOADED,this.onFragLoaded,this),e.off(m.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(m.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(m.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(m.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){const e=new As(this,"textTrack1"),t=new As(this,"textTrack2"),s=new As(this,"textTrack3"),i=new As(this,"textTrack4");this.cea608Parser1=new Un(1,e,t),this.cea608Parser2=new Un(3,s,i)}addCues(e,t,s,i,r){let n=!1;for(let o=r.length;o--;){const c=r[o],l=Wd(c[0],c[1],t,s);if(l>=0&&(c[0]=Math.min(c[0],t),c[1]=Math.max(c[1],s),n=!0,l/(s-t)>.5))return}if(n||r.push([t,s]),this.config.renderTextTracksNatively){const o=this.captionsTracks[e];this.Cues.newCue(o,t,s,i)}else{const o=this.Cues.newCue(null,t,s,i);this.hls.trigger(m.CUES_PARSED,{type:"captions",cues:o,track:e})}}onInitPtsFound(e,{frag:t,id:s,initPTS:i,timescale:r,trackId:n}){const{unparsedVttFrags:o}=this;s===Y.MAIN&&(this.initPTS[t.cc]={baseTime:i,timescale:r,trackId:n}),o.length&&(this.unparsedVttFrags=[],o.forEach(c=>{this.initPTS[c.frag.cc]?this.onFragLoaded(m.FRAG_LOADED,c):this.hls.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:c.frag,error:new Error("Subtitle discontinuity domain does not match main")})}))}getExistingTrack(e,t){const{media:s}=this;if(s)for(let i=0;i{$t(i[r]),delete i[r]}),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Hn(),this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let s=0;sr.textCodec===Si);if(this.config.enableWebVTT||i&&this.config.enableIMSC1){if(oo(this.tracks,s)){this.tracks=s;return}if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){const n=this.media,o=n?ws(n.textTracks):null;if(this.tracks.forEach((c,l)=>{let h;if(o){let u=null;for(let d=0;dl!==null).map(l=>l.label);c.length&&this.hls.logger.warn(`Media element contains unused subtitle tracks: ${c.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const n=this.tracks.map(o=>({label:o.name,kind:o.type.toLowerCase(),default:o.default,subtitleTrack:o}));this.hls.trigger(m.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:n})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach(s=>{const i=/(?:CC|SERVICE)([1-4])/.exec(s.instreamId);if(!i)return;const r=`textTrack${i[1]}`,n=this.captionsProperties[r];n&&(n.label=s.name,s.lang&&(n.languageCode=s.lang),n.media=s)})}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return t?.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===Y.MAIN){var s,i;const{cea608Parser1:r,cea608Parser2:n,lastSn:o}=this,{cc:c,sn:l}=t.frag,h=(s=(i=t.part)==null?void 0:i.index)!=null?s:-1;r&&n&&(l!==o+1||l===o&&h!==this.lastPartIndex+1||c!==this.lastCc)&&(r.reset(),n.reset()),this.lastCc=c,this.lastSn=l,this.lastPartIndex=h}}onFragLoaded(e,t){const{frag:s,payload:i}=t;if(s.type===Y.SUBTITLE)if(i.byteLength){const r=s.decryptdata,n="stats"in t;if(r==null||!r.encrypted||n){const o=this.tracks[s.level],c=this.vttCCs;c[s.cc]||(c[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),o&&o.textCodec===Si?this._parseIMSC1(s,i):this._parseVTTs(t)}}else this.hls.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const s=this.hls;$n(t,this.initPTS[e.cc],i=>{this._appendCues(i,e.level),s.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})},i=>{s.logger.log(`Failed to parse IMSC1: ${i}`),s.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:i})})}_parseVTTs(e){var t;const{frag:s,payload:i}=e,{initPTS:r,unparsedVttFrags:n}=this,o=r.length-1;if(!r[s.cc]&&o===-1){n.push(e);return}const c=this.hls,l=(t=s.initSegment)!=null&&t.data?We(s.initSegment.data,new Uint8Array(i)).buffer:i;Ud(l,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,h=>{this._appendCues(h,s.level),c.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})},h=>{const u=h.message==="Missing initPTS for VTT MPEGTS";u?n.push(e):this._fallbackToIMSC1(s,i),c.logger.log(`Failed to parse VTT cue: ${h}`),!(u&&o>s.cc)&&c.trigger(m.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:h})})}_fallbackToIMSC1(e,t){const s=this.tracks[e.level];s.textCodec||$n(t,this.initPTS[e.cc],()=>{s.textCodec=Si,this._parseIMSC1(e,t)},()=>{s.textCodec="wvtt"})}_appendCues(e,t){const s=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||i.mode==="disabled")return;e.forEach(r=>xo(i,r))}else{const i=this.tracks[t];if(!i)return;const r=i.default?"default":"subtitles"+t;s.trigger(m.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:s}=t;s.type===Y.SUBTITLE&&this.onFragLoaded(m.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){if(!this.enabled||!this.config.enableCEA708Captions)return;const{frag:s,samples:i}=t;if(!(s.type===Y.MAIN&&this.closedCaptionsForLevel(s)==="NONE"))for(let r=0;rqi(o[c],t,s))}if(this.config.renderTextTracksNatively&&t===0&&i!==void 0){const{textTracks:o}=this;Object.keys(o).forEach(c=>qi(o[c],t,i))}}}extractCea608Data(e){const t=[[],[]],s=e[0]&31;let i=2;for(let r=0;r=16?c--:c++;const g=_o(l.trim()),f=Ir(e,t,g);a!=null&&(u=a.cues)!=null&&u.getCueById(f)||(n=new h(e,t,g),n.id=f,n.line=d+1,n.align="left",n.position=10+Math.min(80,Math.floor(c*8/32)*10),i.push(n))}return a&&i.length&&(i.sort((d,g)=>d.line==="auto"||g.line==="auto"?0:d.line>8&&g.line>8?g.line-d.line:d.line-g.line),i.forEach(d=>xo(a,d))),i}};function Xd(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch{}return!1}const zd=/(\d+)-(\d+)\/(\d+)/;class Yn{constructor(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||ef,this.controller=new self.AbortController,this.stats=new sr}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),(e=this.callbacks)!=null&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,s){const i=this.stats;if(i.loading.start)throw new Error("Loader can only be used once.");i.loading.start=self.performance.now();const r=Qd(e,this.controller.signal),n=e.responseType==="arraybuffer",o=n?"byteLength":"length",{maxTimeToFirstByteMs:c,maxLoadTimeMs:l}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=s,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=c&&V(c)?c:l,this.requestTimeout=self.setTimeout(()=>{this.callbacks&&(this.abortInternal(),this.callbacks.onTimeout(i,e,this.response))},t.timeout),(os(this.request)?this.request.then(self.fetch):self.fetch(this.request)).then(u=>{var d;this.response=this.loader=u;const g=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=l,this.requestTimeout=self.setTimeout(()=>{this.callbacks&&(this.abortInternal(),this.callbacks.onTimeout(i,e,this.response))},l-(g-i.loading.start)),!u.ok){const{status:p,statusText:y}=u;throw new tf(y||"fetch, bad network response",p,u)}i.loading.first=g,i.total=Jd(u.headers)||i.total;const f=(d=this.callbacks)==null?void 0:d.onProgress;return f&&V(t.highWaterMark)?this.loadProgressively(u,i,e,t.highWaterMark,f):n?u.arrayBuffer():e.responseType==="json"?u.json():u.text()}).then(u=>{var d,g;const f=this.response;if(!f)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);const p=u[o];p&&(i.loaded=i.total=p);const y={url:f.url,data:u,code:f.status},E=(d=this.callbacks)==null?void 0:d.onProgress;E&&!V(t.highWaterMark)&&E(i,e,u,f),(g=this.callbacks)==null||g.onSuccess(y,i,e,f)}).catch(u=>{var d;if(self.clearTimeout(this.requestTimeout),i.aborted)return;const g=u&&u.code||0,f=u?u.message:null;(d=this.callbacks)==null||d.onError({code:g,text:f},e,u?u.details:null,i)})}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,s,i=0,r){const n=new Ga,o=e.body.getReader(),c=()=>o.read().then(l=>{if(l.done)return n.dataLength&&r(t,s,n.flush().buffer,e),Promise.resolve(new ArrayBuffer(0));const h=l.value,u=h.length;return t.loaded+=u,u=i&&r(t,s,n.flush().buffer,e)):r(t,s,h.buffer,e),c()}).catch(()=>Promise.reject());return c()}}function Qd(a,e){const t={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(ae({},a.headers))};return a.rangeEnd&&t.headers.set("Range","bytes="+a.rangeStart+"-"+String(a.rangeEnd-1)),t}function Zd(a){const e=zd.exec(a);if(e)return parseInt(e[2])-parseInt(e[1])+1}function Jd(a){const e=a.get("Content-Range");if(e){const s=Zd(e);if(V(s))return s}const t=a.get("Content-Length");if(t)return parseInt(t)}function ef(a,e){return new self.Request(a.url,e)}class tf extends Error{constructor(e,t,s){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=s}}const sf=/^age:\s*[\d.]+\s*$/im;class wo{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new sr,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,e.readyState!==4&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),(e=this.callbacks)!=null&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,s){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=s,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const s=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0,i.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then(()=>{if(!(this.loader!==s||this.stats.aborted))return r(s,t.url)}).catch(n=>{if(!(this.loader!==s||this.stats.aborted))return s.open("GET",t.url,!0),r(s,t.url)}).then(()=>{this.loader!==s||this.stats.aborted||this.openAndSendXhr(s,t,e)}).catch(n=>{var o;(o=this.callbacks)==null||o.onError({code:s.status,text:n.message},t,s,i)}):this.openAndSendXhr(s,t,e)}openAndSendXhr(e,t,s){e.readyState||e.open("GET",t.url,!0);const i=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:n}=s.loadPolicy;if(i)for(const o in i)e.setRequestHeader(o,i[o]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),s.timeout=r&&V(r)?r:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:s}=this;if(!e||!t)return;const i=t.readyState,r=this.config;if(!s.aborted&&i>=2&&(s.loading.first===0&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),i===4)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const l=t.status,h=t.responseType==="text"?t.responseText:null;if(l>=200&&l<300){const f=h??t.response;if(f!=null){var n,o;s.loading.end=Math.max(self.performance.now(),s.loading.first);const p=t.responseType==="arraybuffer"?f.byteLength:f.length;s.loaded=s.total=p,s.bwEstimate=s.total*8e3/(s.loading.end-s.loading.first);const y=(n=this.callbacks)==null?void 0:n.onProgress;y&&y(s,e,f,t);const E={url:t.responseURL,data:f,code:l};(o=this.callbacks)==null||o.onSuccess(E,s,e,t);return}}const u=r.loadPolicy.errorRetry,d=s.retry,g={url:e.url,data:void 0,code:l};if(Ks(u,d,!1,g))this.retry(u);else{var c;ne.error(`${l} while loading ${e.url}`),(c=this.callbacks)==null||c.onError({code:l,text:t.statusText},e,t,s)}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry,t=this.stats.retry;if(Ks(e,t,!0))this.retry(e);else{var s;ne.warn(`timeout while loading ${(s=this.context)==null?void 0:s.url}`);const i=this.callbacks;i&&(this.abortInternal(),i.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:s}=this;this.retryDelay=ar(e,s.retry),s.retry++,ne.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${t?.url}, retrying ${s.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&sf.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const rf={maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null},nf=re(re({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,maxDevicePixelRatio:Number.POSITIVE_INFINITY,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,startOnSegmentBoundary:!1,maxBufferSize:60*1e3*1e3,maxFragLookUpTolerance:.25,maxBufferHole:.1,detectStallWithCurrentTimeMs:1250,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,nudgeOnVideoHole:!0,liveSyncMode:"edge",liveSyncDurationCount:3,liveSyncOnStallIncrease:1,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,ignorePlaylistParsingErrors:!1,loader:wo,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:pc,bufferController:au,capLevelController:Tr,errorController:Sc,fpsController:od,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:Ca,requireKeySystemAccessOnStart:!1,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableEmsgKLVMetadata:!1,enableID3MetadataCues:!0,enableInterstitialPlayback:!0,interstitialAppendInPlace:!0,interstitialLiveLookAhead:10,useMediaCapabilities:!0,preserveManualLevelOnError:!1,certLoadPolicy:{default:rf},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},interstitialAssetListLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:3e4,timeoutRetry:{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:0,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},af()),{},{subtitleStreamController:vd,subtitleTrackController:hd,timelineController:Yd,audioStreamController:su,audioTrackController:iu,emeController:Vt,cmcdController:id,contentSteeringController:nd,interstitialsController:Ed});function af(){return{cueHandler:jd,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function of(a,e,t){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(e.liveMaxLatencyDurationCount!==void 0&&(e.liveSyncDurationCount===void 0||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(e.liveMaxLatencyDuration!==void 0&&(e.liveSyncDuration===void 0||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const s=Xi(a),i=["manifest","level","frag"],r=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return i.forEach(n=>{const o=`${n==="level"?"playlist":n}LoadPolicy`,c=e[o]===void 0,l=[];r.forEach(h=>{const u=`${n}Loading${h}`,d=e[u];if(d!==void 0&&c){l.push(u);const g=s[o].default;switch(e[o]={default:g},h){case"TimeOut":g.maxLoadTimeMs=d,g.maxTimeToFirstByteMs=d;break;case"MaxRetry":g.errorRetry.maxNumRetry=d,g.timeoutRetry.maxNumRetry=d;break;case"RetryDelay":g.errorRetry.retryDelayMs=d,g.timeoutRetry.retryDelayMs=d;break;case"MaxRetryTimeout":g.errorRetry.maxRetryDelayMs=d,g.timeoutRetry.maxRetryDelayMs=d;break}}}),l.length&&t.warn(`hls.js config: "${l.join('", "')}" setting(s) are deprecated, use "${o}": ${ce(e[o])}`)}),re(re({},s),e)}function Xi(a){return a&&typeof a=="object"?Array.isArray(a)?a.map(Xi):Object.keys(a).reduce((e,t)=>(e[t]=Xi(a[t]),e),{}):a}function lf(a,e){const t=a.loader;t!==Yn&&t!==wo?(e.log("[config]: Custom loader detected, cannot enable progressive streaming"),a.progressive=!1):Xd()&&(a.loader=Yn,a.progressive=!0,a.enableSoftwareAES=!0,e.log("[config]: Progressive streaming enabled, using FetchLoader"))}const Os=2,cf=.1,hf=.05,uf=100;class df extends La{constructor(e,t){super("gap-controller",e.logger),this.hls=void 0,this.fragmentTracker=void 0,this.media=null,this.mediaSource=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.buffered={},this.lastCurrentTime=0,this.ended=0,this.waiting=0,this.onMediaPlaying=()=>{this.ended=0,this.waiting=0},this.onMediaWaiting=()=>{var s;(s=this.media)!=null&&s.seeking||(this.waiting=self.performance.now(),this.tick())},this.onMediaEnded=()=>{if(this.hls){var s;this.ended=((s=this.media)==null?void 0:s.currentTime)||1,this.hls.trigger(m.MEDIA_ENDED,{stalled:!1})}},this.hls=e,this.fragmentTracker=t,this.registerListeners()}registerListeners(){const{hls:e}=this;e&&(e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.BUFFER_APPENDED,this.onBufferAppended,this))}unregisterListeners(){const{hls:e}=this;e&&(e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.BUFFER_APPENDED,this.onBufferAppended,this))}destroy(){super.destroy(),this.unregisterListeners(),this.media=this.hls=this.fragmentTracker=null,this.mediaSource=void 0}onMediaAttached(e,t){this.setInterval(uf),this.mediaSource=t.mediaSource;const s=this.media=t.media;we(s,"playing",this.onMediaPlaying),we(s,"waiting",this.onMediaWaiting),we(s,"ended",this.onMediaEnded)}onMediaDetaching(e,t){this.clearInterval();const{media:s}=this;s&&(Me(s,"playing",this.onMediaPlaying),Me(s,"waiting",this.onMediaWaiting),Me(s,"ended",this.onMediaEnded),this.media=null),this.mediaSource=void 0}onBufferAppended(e,t){this.buffered=t.timeRanges}get hasBuffered(){return Object.keys(this.buffered).length>0}tick(){var e;if(!((e=this.media)!=null&&e.readyState)||!this.hasBuffered)return;const t=this.media.currentTime;this.poll(t,this.lastCurrentTime),this.lastCurrentTime=t}poll(e,t){var s,i;const r=(s=this.hls)==null?void 0:s.config;if(!r)return;const n=this.media;if(!n)return;const{seeking:o}=n,c=this.seeking&&!o,l=!this.seeking&&o,h=n.paused&&!o||n.ended||n.playbackRate===0;if(this.seeking=o,e!==t){t&&(this.ended=0),this.moved=!0,o||(this.nudgeRetry=0,r.nudgeOnVideoHole&&!h&&e>t&&this.nudgeOnVideoHole(e,t)),this.waiting===0&&this.stallResolved(e);return}if(l||c){c&&this.stallResolved(e);return}if(h){this.nudgeRetry=0,this.stallResolved(e),!this.ended&&n.ended&&this.hls&&(this.ended=e||1,this.hls.trigger(m.MEDIA_ENDED,{stalled:!1}));return}if(!Q.getBuffered(n).length){this.nudgeRetry=0;return}const u=Q.bufferInfo(n,e,0),d=u.nextStart||0,g=this.fragmentTracker;if(o&&g&&this.hls){const D=Wn(this.hls.inFlightFragments,e),A=u.len>Os,L=!d||D||d-e>Os&&!g.getPartialFragment(e);if(A||L)return;this.moved=!1}const f=(i=this.hls)==null?void 0:i.latestLevelDetails;if(!this.moved&&this.stalled!==null&&g){if(!(u.len>0)&&!d)return;const A=Math.max(d,u.start||0)-e,R=!!(f!=null&&f.live)?f.targetduration*2:Os,I=Is(e,g);if(A>0&&(A<=R||I)){n.paused||this._trySkipBufferHole(I);return}}const p=r.detectStallWithCurrentTimeMs,y=self.performance.now(),E=this.waiting;let v=this.stalled;if(v===null)if(E>0&&y-E=p||E)&&this.hls){var S;if(((S=this.mediaSource)==null?void 0:S.readyState)==="ended"&&!(f!=null&&f.live)&&Math.abs(e-(f?.edge||0))<1){if(this.ended)return;this.ended=e||1,this.hls.trigger(m.MEDIA_ENDED,{stalled:!0});return}if(this._reportStall(u),!this.media||!this.hls)return}const x=Q.bufferInfo(n,e,r.maxBufferHole);this._tryFixBufferStall(x,T,e)}stallResolved(e){const t=this.stalled;if(t&&this.hls&&(this.stalled=null,this.stallReported)){const s=self.performance.now()-t;this.log(`playback not stuck anymore @${e}, after ${Math.round(s)}ms`),this.stallReported=!1,this.waiting=0,this.hls.trigger(m.STALL_RESOLVED,{})}}nudgeOnVideoHole(e,t){var s;const i=this.buffered.video;if(this.hls&&this.media&&this.fragmentTracker&&(s=this.buffered.audio)!=null&&s.length&&i&&i.length>1&&e>i.end(0)){const r=Q.bufferedInfo(Q.timeRangesToArray(this.buffered.audio),e,0);if(r.len>1&&t>=r.start){const n=Q.timeRangesToArray(i),o=Q.bufferedInfo(n,t,0).bufferedIndex;if(o>-1&&oo)&&h-l<1&&e-l<2){const u=new Error(`nudging playhead to flush pipeline after video hole. currentTime: ${e} hole: ${l} -> ${h} buffered index: ${c}`);this.warn(u.message),this.media.currentTime+=1e-6;let d=Is(e,this.fragmentTracker);d&&"fragment"in d?d=d.fragment:d||(d=void 0);const g=Q.bufferInfo(this.media,e,0);this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_SEEK_OVER_HOLE,fatal:!1,error:u,reason:u.message,frag:d,buffer:g.len,bufferInfo:g})}}}}}_tryFixBufferStall(e,t,s){var i,r;const{fragmentTracker:n,media:o}=this,c=(i=this.hls)==null?void 0:i.config;if(!o||!n||!c)return;const l=(r=this.hls)==null?void 0:r.latestLevelDetails,h=Is(s,n);if((h||l!=null&&l.live&&s1&&e.len>c.maxBufferHole||e.nextStart&&(e.nextStart-sc.highBufferWatchdogPeriod*1e3||this.waiting)&&(this.warn("Trying to nudge playhead over buffer-hole"),this._tryNudgeBuffer(e))}adjacentTraversal(e,t){const s=this.fragmentTracker,i=e.nextStart;if(s&&i){const r=s.getFragAtPos(t,Y.MAIN),n=s.getFragAtPos(i,Y.MAIN);if(r&&n)return n.sn-r.sn<2}return!1}_reportStall(e){const{hls:t,media:s,stallReported:i,stalled:r}=this;if(!i&&r!==null&&s&&t){this.stallReported=!0;const n=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${ce(e)})`);this.warn(n.message),t.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.BUFFER_STALLED_ERROR,fatal:!1,error:n,buffer:e.len,bufferInfo:e,stalled:{start:r}})}}_trySkipBufferHole(e){var t;const{fragmentTracker:s,media:i}=this,r=(t=this.hls)==null?void 0:t.config;if(!i||!s||!r)return 0;const n=i.currentTime,o=Q.bufferInfo(i,n,0),c=n0&&o.len<1&&i.readyState<3,d=c-n;if(d>0&&(h||u)){if(d>r.maxBufferHole){let f=!1;if(n===0){const p=s.getAppendedFrag(0,Y.MAIN);p&&c"u"))return self.VTTCue||self.TextTrackCue}function Li(a,e,t,s,i){let r=new a(e,t,"");try{r.value=s,i&&(r.type=i)}catch{r=new a(e,t,ce(i?re({type:i},s):s))}return r}const Ls=(()=>{const a=zi();try{a&&new a(0,Number.POSITIVE_INFINITY,"")}catch{return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();class gf{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.removeCues=!0,this.assetCue=void 0,this.onEventCueEnter=()=>{this.hls&&this.hls.trigger(m.EVENT_CUE_ENTER,{})},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=this.onEventCueEnter=null}_registerListeners(){const{hls:e}=this;e&&(e.on(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(m.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}_unregisterListeners(){const{hls:e}=this;e&&(e.off(m.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(m.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(m.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}onMediaAttaching(e,t){var s;this.media=t.media,((s=t.overrides)==null?void 0:s.cueRemoval)===!1&&(this.removeCues=!1)}onMediaAttached(){var e;const t=(e=this.hls)==null?void 0:e.latestLevelDetails;t&&this.updateDateRangeCues(t)}onMediaDetaching(e,t){this.media=null,!t.transferMedia&&(this.id3Track&&(this.removeCues&&$t(this.id3Track,this.onEventCueEnter),this.id3Track=null),this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tLs&&(u=Ls),u-h<=0&&(u=h+ff);for(let g=0;gh.type===He.audioId3&&c:i==="video"?l=h=>h.type===He.emsg&&o:l=h=>h.type===He.audioId3&&c||h.type===He.emsg&&o,qi(r,t,s,l)}}onLevelUpdated(e,{details:t}){this.updateDateRangeCues(t,!0)}onLevelPtsUpdated(e,t){Math.abs(t.drift)>.01&&this.updateDateRangeCues(t.details)}updateDateRangeCues(e,t){if(!this.hls||!this.media)return;const{assetPlayerId:s,timelineOffset:i,enableDateRangeMetadataCues:r,interstitialsController:n}=this.hls.config;if(!r)return;const o=zi();if(s&&i&&!n){const{fragmentStart:p,fragmentEnd:y}=e;let E=this.assetCue;E?(E.startTime=p,E.endTime=y):o&&(E=this.assetCue=Li(o,p,y,{assetPlayerId:this.hls.config.assetPlayerId},"hlsjs.interstitial.asset"),E&&(E.id=s,this.id3Track||(this.id3Track=this.createTrack(this.media)),this.id3Track.addCue(E),E.addEventListener("enter",this.onEventCueEnter)))}if(!e.hasProgramDateTime)return;const{id3Track:c}=this,{dateRanges:l}=e,h=Object.keys(l);let u=this.dateRangeCuesAppended;if(c&&t){var d;if((d=c.cues)!=null&&d.length){const p=Object.keys(u).filter(y=>!h.includes(y));for(let y=p.length;y--;){var g;const E=p[y],v=(g=u[E])==null?void 0:g.cues;delete u[E],v&&Object.keys(v).forEach(T=>{const S=v[T];if(S){S.removeEventListener("enter",this.onEventCueEnter);try{c.removeCue(S)}catch{}}})}}else u=this.dateRangeCuesAppended={}}const f=e.fragments[e.fragments.length-1];if(!(h.length===0||!V(f?.programDateTime))){this.id3Track||(this.id3Track=this.createTrack(this.media));for(let p=0;p{if($!==E.id){const K=l[$];if(K.class===E.class&&K.startDate>E.startDate&&(!C||E.startDate.01&&($.startTime=v,$.endTime=D);else if(o){let K=E.attr[C];Fc(C)&&(K=na(K));const F=Li(o,v,D,{key:C,data:K},He.dateRange);F&&(F.id=y,this.id3Track.addCue(F),S[C]=F,n&&(C==="X-ASSET-LIST"||C==="X-ASSET-URL")&&F.addEventListener("enter",this.onEventCueEnter))}}u[y]={cues:S,dateRange:E,durationKnown:x}}}}}class mf{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.currentTime=0,this.stallCount=0,this._latency=null,this._targetLatencyUpdated=!1,this.onTimeupdate=()=>{const{media:t}=this,s=this.levelDetails;if(!t||!s)return;this.currentTime=t.currentTime;const i=this.computeLatency();if(i===null)return;this._latency=i;const{lowLatencyMode:r,maxLiveSyncPlaybackRate:n}=this.config;if(!r||n===1||!s.live)return;const o=this.targetLatency;if(o===null)return;const c=i-o,l=Math.min(this.maxLatency,o+s.targetduration);if(c.05&&this.forwardBufferLength>1){const u=Math.min(2,Math.max(1,n)),d=Math.round(2/(1+Math.exp(-.75*c-this.edgeStalled))*20)/20,g=Math.min(u,Math.max(1,d));this.changeMediaPlaybackRate(t,g)}else t.playbackRate!==1&&t.playbackRate!==0&&this.changeMediaPlaybackRate(t,1)},this.hls=e,this.config=e.config,this.registerListeners()}get levelDetails(){var e;return((e=this.hls)==null?void 0:e.latestLevelDetails)||null}get latency(){return this._latency||0}get maxLatency(){const{config:e}=this;if(e.liveMaxLatencyDuration!==void 0)return e.liveMaxLatencyDuration;const t=this.levelDetails;return t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const e=this.levelDetails;if(e===null||this.hls===null)return null;const{holdBack:t,partHoldBack:s,targetduration:i}=e,{liveSyncDuration:r,liveSyncDurationCount:n,lowLatencyMode:o}=this.config,c=this.hls.userConfig;let l=o&&s||t;(this._targetLatencyUpdated||c.liveSyncDuration||c.liveSyncDurationCount||l===0)&&(l=r!==void 0?r:n*i);const h=i;return l+Math.min(this.stallCount*this.config.liveSyncOnStallIncrease,h)}set targetLatency(e){this.stallCount=0,this.config.liveSyncDuration=e,this._targetLatencyUpdated=!0}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency;if(e===null||t===null)return null;const s=this.levelDetails;if(s===null)return null;const i=s.edge,r=e-t-this.edgeStalled,n=i-s.totalduration,o=i-(this.config.lowLatencyMode&&s.partTarget||s.targetduration);return Math.min(Math.max(n,r),o)}get drift(){const e=this.levelDetails;return e===null?1:e.drift}get edgeStalled(){const e=this.levelDetails;if(e===null)return 0;const t=(this.config.lowLatencyMode&&e.partTarget||e.targetduration)*3;return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e}=this,t=this.levelDetails;if(!e||!t)return 0;const s=e.buffered.length;return(s?e.buffered.end(s-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.hls=null}registerListeners(){const{hls:e}=this;e&&(e.on(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(m.ERROR,this.onError,this))}unregisterListeners(){const{hls:e}=this;e&&(e.off(m.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(m.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(m.ERROR,this.onError,this))}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.onTimeupdate)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null)}onManifestLoading(){this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){t.advanced&&this.onTimeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.onTimeupdate)}onError(e,t){var s;t.details===_.BUFFER_STALLED_ERROR&&(this.stallCount++,this.hls&&(s=this.levelDetails)!=null&&s.live&&this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))}changeMediaPlaybackRate(e,t){var s,i;e.playbackRate!==t&&((s=this.hls)==null||s.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${(i=this.targetLatency)==null?void 0:i.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${e.playbackRate} to ${t}`),e.playbackRate=t)}estimateLiveEdge(){const e=this.levelDetails;return e===null?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return e===null?null:e-this.currentTime}}class pf extends vr{constructor(e,t){super(e,"level-controller"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(m.FRAG_BUFFERED,this.onFragBuffered,this),e.on(m.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(m.FRAG_BUFFERED,this.onFragBuffered,this),e.off(m.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach(t=>{t.loadError=0,t.fragmentError=0}),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const s=this.hls.config.preferManagedMediaSource,i=[],r={},n={};let o=!1,c=!1,l=!1;t.levels.forEach(h=>{const u=h.attrs;let{audioCodec:d,videoCodec:g}=h;d&&(h.audioCodec=d=Bs(d,s)||void 0),g&&(g=h.videoCodec=Ql(g));const{width:f,height:p,unknownCodecs:y}=h,E=y?.length||0;if(o||(o=!!(f&&p)),c||(c=!!g),l||(l=!!d),E||d&&!this.isAudioSupported(d)||g&&!this.isVideoSupported(g)){this.log(`Some or all CODECS not supported "${u.CODECS}"`);return}const{CODECS:v,"FRAME-RATE":T,"HDCP-LEVEL":S,"PATHWAY-ID":x,RESOLUTION:D,"VIDEO-RANGE":A}=u,R=`${`${x||"."}-`}${h.bitrate}-${D}-${T}-${v}-${A}-${S}`;if(r[R])if(r[R].uri!==h.url&&!h.attrs["PATHWAY-ID"]){const I=n[R]+=1;h.attrs["PATHWAY-ID"]=new Array(I+1).join(".");const C=this.createLevel(h);r[R]=C,i.push(C)}else r[R].addGroupId("audio",u.AUDIO),r[R].addGroupId("text",u.SUBTITLES);else{const I=this.createLevel(h);r[R]=I,n[R]=1,i.push(I)}}),this.filterAndSortMediaOptions(i,t,o,c,l)}createLevel(e){const t=new rs(e),s=e.supplemental;if(s!=null&&s.videoCodec&&!this.isVideoSupported(s.videoCodec)){const i=new Error(`SUPPLEMENTAL-CODECS not supported "${s.videoCodec}"`);this.log(i.message),t.supportedResult=ya(i,[])}return t}isAudioSupported(e){return ss(e,"audio",this.hls.config.preferManagedMediaSource)}isVideoSupported(e){return ss(e,"video",this.hls.config.preferManagedMediaSource)}filterAndSortMediaOptions(e,t,s,i,r){var n;let o=[],c=[],l=e;const h=((n=t.stats)==null?void 0:n.parsing)||{};if((s||i)&&r&&(l=l.filter(({videoCodec:v,videoRange:T,width:S,height:x})=>(!!v||!!(S&&x))&&oc(T))),l.length===0){Promise.resolve().then(()=>{if(this.hls){let v="no level with compatible codecs found in manifest",T=v;t.levels.length&&(T=`one or more CODECS in variant not supported: ${ce(t.levels.map(x=>x.attrs.CODECS).filter((x,D,A)=>A.indexOf(x)===D))}`,this.warn(T),v+=` (${T})`);const S=new Error(v);this.hls.trigger(m.ERROR,{type:W.MEDIA_ERROR,details:_.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:S,reason:T})}}),h.end=performance.now();return}t.audioTracks&&(o=t.audioTracks.filter(v=>!v.audioCodec||this.isAudioSupported(v.audioCodec)),jn(o)),t.subtitles&&(c=t.subtitles,jn(c));const u=l.slice(0);l.sort((v,T)=>{if(v.attrs["HDCP-LEVEL"]!==T.attrs["HDCP-LEVEL"])return(v.attrs["HDCP-LEVEL"]||"")>(T.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&v.height!==T.height)return v.height-T.height;if(v.frameRate!==T.frameRate)return v.frameRate-T.frameRate;if(v.videoRange!==T.videoRange)return Us.indexOf(v.videoRange)-Us.indexOf(T.videoRange);if(v.videoCodec!==T.videoCodec){const S=Br(v.videoCodec),x=Br(T.videoCodec);if(S!==x)return x-S}if(v.uri===T.uri&&v.codecSet!==T.codecSet){const S=Ns(v.codecSet),x=Ns(T.codecSet);if(S!==x)return x-S}return v.averageBitrate!==T.averageBitrate?v.averageBitrate-T.averageBitrate:0});let d=u[0];if(this.steering&&(l=this.steering.filterParsedLevels(l),l.length!==u.length)){for(let v=0;vS&&S===this.hls.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=x)}break}const f=r&&!i,p=this.hls.config,y=!!(p.audioStreamController&&p.audioTrackController),E={levels:l,audioTracks:o,subtitleTracks:c,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:i,altAudio:y&&!f&&o.some(v=>!!v.url)};h.end=performance.now(),this.hls.trigger(m.MANIFEST_PARSED,E)}get levels(){return this._levels.length===0?null:this._levels}get loadLevelObj(){return this.currentLevel}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(t.length===0)return;if(e<0||e>=t.length){const h=new Error("invalid level idx"),u=e<0;if(this.hls.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.LEVEL_SWITCH_ERROR,level:e,fatal:u,error:h,reason:h.message}),u)return;e=Math.min(e,t.length-1)}const s=this.currentLevelIndex,i=this.currentLevel,r=i?i.attrs["PATHWAY-ID"]:void 0,n=t[e],o=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=n,s===e&&i&&r===o)return;this.log(`Switching to level ${e} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${o?" with Pathway "+o:""} from level ${s}${r?" with Pathway "+r:""}`);const c={level:e,attrs:n.attrs,details:n.details,bitrate:n.bitrate,averageBitrate:n.averageBitrate,maxBitrate:n.maxBitrate,realBitrate:n.realBitrate,width:n.width,height:n.height,codecSet:n.codecSet,audioCodec:n.audioCodec,videoCodec:n.videoCodec,audioGroups:n.audioGroups,subtitleGroups:n.subtitleGroups,loaded:n.loaded,loadError:n.loadError,fragmentError:n.fragmentError,name:n.name,id:n.id,uri:n.uri,url:n.url,urlId:0,audioGroupIds:n.audioGroupIds,textGroupIds:n.textGroupIds};this.hls.trigger(m.LEVEL_SWITCHING,c);const l=n.details;if(!l||l.live){const h=this.switchParams(n.uri,i?.details,l);this.loadPlaylist(h)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,this._startLevel===void 0&&(this._startLevel=e),e!==-1&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(this._startLevel===void 0){const e=this.hls.config.startLevel;return e!==void 0?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}get pathways(){return this.steering?this.steering.pathways():[]}get pathwayPriority(){return this.steering?this.steering.pathwayPriority:null}set pathwayPriority(e){if(this.steering){const t=this.steering.pathways(),s=e.filter(i=>t.indexOf(i)!==-1);if(e.length<1){this.warn(`pathwayPriority ${e} should contain at least one pathway from list: ${t}`);return}this.steering.pathwayPriority=s}}onError(e,t){t.fatal||!t.context||t.context.type===te.LEVEL&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(t!==void 0&&t.type===Y.MAIN){const s=t.elementaryStreams;if(!Object.keys(s).some(r=>!!s[r]))return;const i=this._levels[t.level];i!=null&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var s;const{level:i,details:r}=t,n=t.levelInfo;if(!n){var o;this.warn(`Invalid level index ${i}`),(o=t.deliveryDirectives)!=null&&o.skip&&(r.deltaUpdateFailed=!0);return}if(n===this.currentLevel||t.withoutMultiVariant){n.fragmentError===0&&(n.loadError=0);let c=n.details;c===t.details&&c.advanced&&(c=void 0),this.playlistLoaded(i,t,c)}else(s=t.deliveryDirectives)!=null&&s.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentLevel)&&this.scheduleLoading(this.currentLevel,e)}loadingPlaylist(e,t){super.loadingPlaylist(e,t);const s=this.getUrlWithDirectives(e.uri,t),i=this.currentLevelIndex,r=e.attrs["PATHWAY-ID"],n=e.details,o=n?.age;this.log(`Loading level index ${i}${t?.msn!==void 0?" at sn "+t.msn+" part "+t.part:""}${r?" Pathway "+r:""}${o&&n.live?" age "+o.toFixed(1)+(n.type&&" "+n.type||""):""} ${s}`),this.hls.trigger(m.LEVEL_LOADING,{url:s,level:i,levelInfo:e,pathwayId:e.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}get nextLoadLevel(){return this.manualLevelIndex!==-1?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,this.manualLevelIndex===-1&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;if(this._levels.length===1)return;const s=this._levels.filter((r,n)=>n!==e?!0:(this.steering&&this.steering.removeLevel(r),r===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,r.details&&r.details.fragments.forEach(o=>o.level=-1)),!1));Ba(s),this._levels=s,this.currentLevelIndex>-1&&(t=this.currentLevel)!=null&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.manualLevelIndex>-1&&(this.manualLevelIndex=this.currentLevelIndex);const i=s.length-1;this._firstLevel=Math.min(this._firstLevel,i),this._startLevel&&(this._startLevel=Math.min(this._startLevel,i)),this.hls.trigger(m.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(m.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}}function jn(a){const e={};a.forEach(t=>{const s=t.groupId||"";t.id=e[s]=e[s]||0,e[s]++})}function Oo(){return self.SourceBuffer||self.WebKitSourceBuffer}function Fo(){if(!Lt())return!1;const e=Oo();return!e||e.prototype&&typeof e.prototype.appendBuffer=="function"&&typeof e.prototype.remove=="function"}function yf(){if(!Fo())return!1;const a=Lt();return typeof a?.isTypeSupported=="function"&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some(e=>a.isTypeSupported(is(e,"video")))||["mp4a.40.2","fLaC"].some(e=>a.isTypeSupported(is(e,"audio"))))}function Ef(){var a;const e=Oo();return typeof(e==null||(a=e.prototype)==null?void 0:a.changeType)=="function"}const vf=100;class Tf extends ur{constructor(e,t,s){super(e,t,s,"stream-controller",Y.MAIN),this.audioCodecSwap=!1,this.level=-1,this._forceStartLoad=!1,this._hasEnoughToStart=!1,this.altAudio=0,this.audioOnly=!1,this.fragPlaying=null,this.fragLastKbps=0,this.couldBacktrack=!1,this.backtrackFragment=null,this.audioCodecSwitch=!1,this.videoBuffer=null,this.onMediaPlaying=()=>{this.tick()},this.onMediaSeeked=()=>{const i=this.media,r=i?i.currentTime:null;if(r===null||!V(r)||(this.log(`Media seeked to ${r.toFixed(3)}`),!this.getBufferedFrag(r)))return;const n=this.getFwdBufferInfoAtPos(i,r,Y.MAIN,0);if(n===null||n.len===0){this.warn(`Main forward buffer length at ${r} on "seeked" event ${n?n.len:"empty"})`);return}this.tick()},this.registerListeners()}registerListeners(){super.registerListeners();const{hls:e}=this;e.on(m.MANIFEST_PARSED,this.onManifestParsed,this),e.on(m.LEVEL_LOADING,this.onLevelLoading,this),e.on(m.LEVEL_LOADED,this.onLevelLoaded,this),e.on(m.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.on(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(m.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(m.BUFFER_CREATED,this.onBufferCreated,this),e.on(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(m.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){super.unregisterListeners();const{hls:e}=this;e.off(m.MANIFEST_PARSED,this.onManifestParsed,this),e.off(m.LEVEL_LOADED,this.onLevelLoaded,this),e.off(m.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.off(m.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(m.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(m.BUFFER_CREATED,this.onBufferCreated,this),e.off(m.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(m.FRAG_BUFFERED,this.onFragBuffered,this)}onHandlerDestroying(){this.onMediaPlaying=this.onMediaSeeked=null,this.unregisterListeners(),super.onHandlerDestroying()}startLoad(e,t){if(this.levels){const{lastCurrentTime:s,hls:i}=this;if(this.stopLoad(),this.setInterval(vf),this.level=-1,!this.startFragRequested){let r=i.startLevel;r===-1&&(i.config.testBandwidth&&this.levels.length>1?(r=0,this.bitrateTest=!0):r=i.firstAutoLevel),i.nextLoadLevel=r,this.level=i.loadLevel,this._hasEnoughToStart=!!t}s>0&&e===-1&&!t&&(this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`),e=s),this.state=P.IDLE,this.nextLoadPosition=this.lastCurrentTime=e+this.timelineOffset,this.startPosition=t?-1:e,this.tick()}else this._forceStartLoad=!0,this.state=P.STOPPED}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case P.WAITING_LEVEL:{const{levels:e,level:t}=this,s=e?.[t],i=s?.details;if(i&&(!i.live||this.levelLastLoaded===s&&!this.waitForLive(s))){if(this.waitForCdnTuneIn(i))break;this.state=P.IDLE;break}else if(this.hls.nextLoadLevel!==this.level){this.state=P.IDLE;break}break}case P.FRAG_LOADING_WAITING_RETRY:this.checkRetryDate();break}this.state===P.IDLE&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){var e;super.onTickEnd(),(e=this.media)!=null&&e.readyState&&this.media.seeking===!1&&(this.lastCurrentTime=this.media.currentTime),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:s,media:i}=this;if(t===null||!i&&!this.primaryPrefetch&&(this.startFragRequested||!e.config.startFragPrefetch)||this.altAudio&&this.audioOnly)return;const r=this.buffering?e.nextLoadLevel:e.loadLevel;if(!(s!=null&&s[r]))return;const n=s[r],o=this.getMainFwdBufferInfo();if(o===null)return;const c=this.getLevelDetails();if(c&&this._streamEnded(o,c)){const p={};this.altAudio===2&&(p.type="video"),this.hls.trigger(m.BUFFER_EOS,p),this.state=P.ENDED;return}if(!this.buffering)return;e.loadLevel!==r&&e.manualLevel===-1&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=n.details;if(!l||this.state===P.WAITING_LEVEL||this.waitForLive(n)){this.level=r,this.state=P.WAITING_LEVEL,this.startFragRequested=!1;return}const h=o.len,u=this.getMaxBufferLength(n.maxBitrate);if(h>=u)return;this.backtrackFragment&&this.backtrackFragment.start>o.end&&(this.backtrackFragment=null);const d=this.backtrackFragment?this.backtrackFragment.start:o.end;let g=this.getNextFragment(d,l);if(this.couldBacktrack&&!this.fragPrevious&&g&&ve(g)&&this.fragmentTracker.getState(g)!==Ae.OK){var f;const y=((f=this.backtrackFragment)!=null?f:g).sn-l.startSN,E=l.fragments[y-1];E&&g.cc===E.cc&&(g=E,this.fragmentTracker.removeFragment(E))}else this.backtrackFragment&&o.len&&(this.backtrackFragment=null);if(g&&this.isLoopLoading(g,d)){if(!g.gap){const y=this.audioOnly&&!this.altAudio?le.AUDIO:le.VIDEO,E=(y===le.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;E&&this.afterBufferFlushed(E,y,Y.MAIN)}g=this.getNextFragmentLoopLoading(g,l,o,Y.MAIN,u)}g&&(g.initSegment&&!g.initSegment.data&&!this.bitrateTest&&(g=g.initSegment),this.loadFragment(g,n,d))}loadFragment(e,t,s){const i=this.fragmentTracker.getState(e);i===Ae.NOT_LOADED||i===Ae.PARTIAL?ve(e)?this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):super.loadFragment(e,t,s):this._loadInitSegment(e,t):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,Y.MAIN)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(t!=null&&t.readyState){let s;const i=this.getAppendedFrag(t.currentTime);i&&i.start>1&&this.flushMainBuffer(0,i.start-1);const r=this.getLevelDetails();if(r!=null&&r.live){const o=this.getMainFwdBufferInfo();if(!o||o.len=n-t.maxFragLookUpTolerance&&r<=o;if(i!==null&&s.duration>i&&(r{this.hls&&this.hls.trigger(m.AUDIO_TRACK_SWITCHED,t)}),s.trigger(m.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null});return}s.trigger(m.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const s=$s(t.url,this.hls);if(s){const i=this.videoBuffer;i&&this.mediaBuffer!==i&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=i)}this.altAudio=s?2:0,this.tick()}onBufferCreated(e,t){const s=t.tracks;let i,r,n=!1;for(const o in s){const c=s[o];if(c.id==="main"){if(r=o,i=c,o==="video"){const l=s[o];l&&(this.videoBuffer=l.buffer)}}else n=!0}n&&i?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:s,part:i}=t,r=s.type===Y.MAIN;if(r){if(this.fragContextChanged(s)){this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),this.state===P.PARSED&&(this.state=P.IDLE);return}const o=i?i.stats:s.stats;this.fragLastKbps=Math.round(8*o.total/(o.buffering.end-o.loading.first)),ve(s)&&(this.fragPrevious=s),this.fragBufferedComplete(s,i)}const n=this.media;n&&(!this._hasEnoughToStart&&Q.getBuffered(n).length&&(this._hasEnoughToStart=!0,this.seekToStartPos()),r&&this.tick())}get hasEnoughToStart(){return this._hasEnoughToStart}onError(e,t){var s;if(t.fatal){this.state=P.ERROR;return}switch(t.details){case _.FRAG_GAP:case _.FRAG_PARSING_ERROR:case _.FRAG_DECRYPT_ERROR:case _.FRAG_LOAD_ERROR:case _.FRAG_LOAD_TIMEOUT:case _.KEY_LOAD_ERROR:case _.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Y.MAIN,t);break;case _.LEVEL_LOAD_ERROR:case _.LEVEL_LOAD_TIMEOUT:case _.LEVEL_PARSING_ERROR:!t.levelRetry&&this.state===P.WAITING_LEVEL&&((s=t.context)==null?void 0:s.type)===te.LEVEL&&(this.state=P.IDLE);break;case _.BUFFER_ADD_CODEC_ERROR:case _.BUFFER_APPEND_ERROR:if(t.parent!=="main")return;this.reduceLengthAndFlushBuffer(t)&&this.resetLoadingState();break;case _.BUFFER_FULL_ERROR:if(t.parent!=="main")return;this.reduceLengthAndFlushBuffer(t)&&(!this.config.interstitialsController&&this.config.assetPlayerId?this._hasEnoughToStart=!0:this.flushMainBuffer(0,Number.POSITIVE_INFINITY));break;case _.INTERNAL_EXCEPTION:this.recoverWorkerError(t);break}}onFragLoadEmergencyAborted(){this.state=P.IDLE,this._hasEnoughToStart||(this.startFragRequested=!1,this.nextLoadPosition=this.lastCurrentTime),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==le.AUDIO||!this.altAudio){const s=(t===le.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;s&&(this.afterBufferFlushed(s,t,Y.MAIN),this.tick())}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level,this.level===-1&&this.resetWhenMissingContext(this.fragCurrent)),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let s=this.startPosition;if(s>=0&&t0&&(c{const{hls:i}=this,r=s?.frag;if(!r||this.fragContextChanged(r))return;t.fragmentError=0,this.state=P.IDLE,this.startFragRequested=!1,this.bitrateTest=!1;const n=r.stats;n.parsing.start=n.parsing.end=n.buffering.start=n.buffering.end=self.performance.now(),i.trigger(m.FRAG_LOADED,s),r.bitrateTest=!1}).catch(s=>{this.state===P.STOPPED||this.state===P.ERROR||(this.warn(s),this.resetFragmentLoading(e))})}_handleTransmuxComplete(e){const t=this.playlistType,{hls:s}=this,{remuxResult:i,chunkMeta:r}=e,n=this.getCurrentContext(r);if(!n){this.resetWhenMissingContext(r);return}const{frag:o,part:c,level:l}=n,{video:h,text:u,id3:d,initSegment:g}=i,{details:f}=l,p=this.altAudio?void 0:i.audio;if(this.fragContextChanged(o)){this.fragmentTracker.removeFragment(o);return}if(this.state=P.PARSING,g){const y=g.tracks;if(y){const S=o.initSegment||o;if(this.unhandledEncryptionError(g,o))return;this._bufferInitSegment(l,y,S,r),s.trigger(m.FRAG_PARSING_INIT_SEGMENT,{frag:S,id:t,tracks:y})}const E=g.initPTS,v=g.timescale,T=this.initPTS[o.cc];if(V(E)&&(!T||T.baseTime!==E||T.timescale!==v)){const S=g.trackId;this.initPTS[o.cc]={baseTime:E,timescale:v,trackId:S},s.trigger(m.INIT_PTS_FOUND,{frag:o,id:t,initPTS:E,timescale:v,trackId:S})}}if(h&&f){p&&h.type==="audiovideo"&&this.logMuxedErr(o);const y=f.fragments[o.sn-1-f.startSN],E=o.sn===f.startSN,v=!y||o.cc>y.cc;if(i.independent!==!1){const{startPTS:T,endPTS:S,startDTS:x,endDTS:D}=h;if(c)c.elementaryStreams[h.type]={startPTS:T,endPTS:S,startDTS:x,endDTS:D};else if(h.firstKeyFrame&&h.independent&&r.id===1&&!v&&(this.couldBacktrack=!0),h.dropped&&h.independent){const A=this.getMainFwdBufferInfo(),L=(A?A.end:this.getLoadPosition())+this.config.maxBufferHole,R=h.firstKeyFramePTS?h.firstKeyFramePTS:T;if(!E&&LOs&&(o.gap=!0);o.setElementaryStreamInfo(h.type,T,S,x,D),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(h,o,c,r,E||v)}else if(E||v)o.gap=!0;else{this.backtrack(o);return}}if(p){const{startPTS:y,endPTS:E,startDTS:v,endDTS:T}=p;c&&(c.elementaryStreams[le.AUDIO]={startPTS:y,endPTS:E,startDTS:v,endDTS:T}),o.setElementaryStreamInfo(le.AUDIO,y,E,v,T),this.bufferFragmentData(p,o,c,r)}if(f&&d!=null&&d.samples.length){const y={id:t,frag:o,details:f,samples:d.samples};s.trigger(m.FRAG_PARSING_METADATA,y)}if(f&&u){const y={id:t,frag:o,details:f,samples:u.samples};s.trigger(m.FRAG_PARSING_USERDATA,y)}}logMuxedErr(e){this.warn(`${ve(e)?"Media":"Init"} segment with muxed audiovideo where only video expected: ${e.url}`)}_bufferInitSegment(e,t,s,i){if(this.state!==P.PARSING)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&(delete t.audio,t.audiovideo&&this.logMuxedErr(s));const{audio:r,video:n,audiovideo:o}=t;if(r){const l=e.audioCodec;let h=bs(r.codec,l);h==="mp4a"&&(h="mp4a.40.5");const u=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){h&&(h.indexOf("mp4a.40.5")!==-1?h="mp4a.40.2":h="mp4a.40.5");const d=r.metadata;d&&"channelCount"in d&&(d.channelCount||1)!==1&&u.indexOf("firefox")===-1&&(h="mp4a.40.5")}h&&h.indexOf("mp4a.40.5")!==-1&&u.indexOf("android")!==-1&&r.container!=="audio/mpeg"&&(h="mp4a.40.2",this.log(`Android: force audio codec to ${h}`)),l&&l!==h&&this.log(`Swapping manifest audio codec "${l}" for "${h}"`),r.levelCodec=h,r.id=Y.MAIN,this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${h||""}/${l||""}/${r.codec}]`),delete t.audiovideo}if(n){n.levelCodec=e.videoCodec,n.id=Y.MAIN;const l=n.codec;if(l?.length===4)switch(l){case"hvc1":case"hev1":n.codec="hvc1.1.6.L120.90";break;case"av01":n.codec="av01.0.04M.08";break;case"avc1":n.codec="avc1.42e01e";break}this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${l}]${n.codec!==l?" parsed-corrected="+n.codec:""}${n.supplemental?" supplemental="+n.supplemental:""}`),delete t.audiovideo}o&&(this.log(`Init audiovideo buffer, container:${o.container}, codecs[level/parsed]=[${e.codecs}/${o.codec}]`),delete t.video,delete t.audio);const c=Object.keys(t);if(c.length){if(this.hls.trigger(m.BUFFER_CODECS,t),!this.hls)return;c.forEach(l=>{const u=t[l].initSegment;u!=null&&u.byteLength&&this.hls.trigger(m.BUFFER_APPENDING,{type:l,data:u,frag:s,part:null,chunkMeta:i,parent:s.type})})}this.tickImmediate()}getMainFwdBufferInfo(){const e=this.mediaBuffer&&this.altAudio===2?this.mediaBuffer:this.media;return this.getFwdBufferInfo(e,Y.MAIN)}get maxBufferLength(){const{levels:e,level:t}=this,s=e?.[t];return s?this.getMaxBufferLength(s.maxBitrate):this.config.maxBufferLength}backtrack(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=P.IDLE}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&e.seeking===!1){const s=e.currentTime;if(Q.isBuffered(e,s)?t=this.getAppendedFrag(s):Q.isBuffered(e,s+.1)&&(t=this.getAppendedFrag(s+.1)),t){this.backtrackFragment=null;const i=this.fragPlaying,r=t.level;(!i||t.sn!==i.sn||i.level!==r)&&(this.fragPlaying=t,this.hls.trigger(m.FRAG_CHANGED,{frag:t}),(!i||i.level!==r)&&this.hls.trigger(m.LEVEL_SWITCHED,{level:r}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){var e;if(this.fragPlaying)return this.fragPlaying;const t=((e=this.media)==null?void 0:e.currentTime)||this.lastCurrentTime;return V(t)?this.getAppendedFrag(t):null}get currentProgramDateTime(){var e;const t=((e=this.media)==null?void 0:e.currentTime)||this.lastCurrentTime;if(V(t)){const s=this.getLevelDetails(),i=this.currentFrag||(s?kt(null,s.fragments,t):null);if(i){const r=i.programDateTime;if(r!==null){const n=r+(t-i.start)*1e3;return new Date(n)}}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class Sf extends qe{constructor(e,t){super("key-loader",t),this.config=void 0,this.keyIdToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const s in this.keyIdToKeyInfo){const i=this.keyIdToKeyInfo[s].loader;if(i){var t;if(e&&e!==((t=i.context)==null?void 0:t.frag.type))return;i.abort()}}}detach(){for(const e in this.keyIdToKeyInfo){const t=this.keyIdToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyIdToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyIdToKeyInfo){const t=this.keyIdToKeyInfo[e].loader;t&&t.destroy()}this.keyIdToKeyInfo={}}createKeyLoadError(e,t=_.KEY_LOAD_ERROR,s,i,r){return new ht({type:W.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:s,networkDetails:i})}loadClear(e,t,s){if(this.emeController&&this.config.emeEnabled&&!this.emeController.getSelectedKeySystemFormats().length){if(t.length)for(let i=0,r=t.length;i{if(!this.emeController)return;n.setKeyFormat(o);const c=Ds(o);if(c)return this.emeController.getKeySystemAccess([c])})}if(this.config.requireKeySystemAccessOnStart){const i=Qt(this.config);if(i.length)return this.emeController.getKeySystemAccess(i)}}return null}load(e){return!e.decryptdata&&e.encrypted&&this.emeController&&this.config.emeEnabled?this.emeController.selectKeySystemFormat(e).then(t=>this.loadInternal(e,t)):this.loadInternal(e)}loadInternal(e,t){var s,i;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const l=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:`Missing decryption data on fragment in onKeyLoading (emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`);return Promise.reject(this.createKeyLoadError(e,_.KEY_LOAD_ERROR,l))}const n=r.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,_.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));const o=Ri(r);let c=this.keyIdToKeyInfo[o];if((s=c)!=null&&s.decryptdata.key)return r.key=c.decryptdata.key,Promise.resolve({frag:e,keyInfo:c});if(this.emeController&&(i=c)!=null&&i.keyLoadPromise)switch(this.emeController.getKeyStatus(c.decryptdata)){case"usable":case"usable-in-future":return c.keyLoadPromise.then(h=>{const{keyInfo:u}=h;return r.key=u.decryptdata.key,{frag:e,keyInfo:u}})}switch(this.log(`${this.keyIdToKeyInfo[o]?"Rel":"L"}oading${r.keyId?" keyId: "+Re(r.keyId):""} URI: ${r.uri} from ${e.type} ${e.level}`),c=this.keyIdToKeyInfo[o]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return r.keyFormat==="identity"?this.loadKeyHTTP(c,e):this.loadKeyEME(c,e);case"AES-128":case"AES-256":case"AES-256-CTR":return this.loadKeyHTTP(c,e);default:return Promise.reject(this.createKeyLoadError(e,_.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const s={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){var i;if(!e.decryptdata.keyId&&(i=t.initSegment)!=null&&i.data){const n=Ul(t.initSegment.data);if(n.length){let o=n[0];o.some(c=>c!==0)?(this.log(`Using keyId found in init segment ${Re(o)}`),It.setKeyIdForUri(e.decryptdata.uri,o)):(o=It.addKeyIdForUri(e.decryptdata.uri),this.log(`Generating keyId to patch media ${Re(o)}`)),e.decryptdata.keyId=o}}if(!e.decryptdata.keyId&&!ve(t))return Promise.resolve(s);const r=this.emeController.loadKey(s);return(e.keyLoadPromise=r.then(n=>(e.mediaKeySessionContext=n,s))).catch(n=>{throw e.keyLoadPromise=null,"data"in n&&(n.data.frag=t),n})}return Promise.resolve(s)}loadKeyHTTP(e,t){const s=this.config,i=s.loader,r=new i(s);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise((n,o)=>{const c={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},l=s.keyLoadPolicy.default,h={loadPolicy:l,timeout:l.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},u={onSuccess:(d,g,f,p)=>{const{frag:y,keyInfo:E}=f,v=Ri(E.decryptdata);if(!y.decryptdata||E!==this.keyIdToKeyInfo[v])return o(this.createKeyLoadError(y,_.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),p));E.decryptdata.key=y.decryptdata.key=new Uint8Array(d.data),y.keyLoader=null,E.loader=null,n({frag:y,keyInfo:E})},onError:(d,g,f,p)=>{this.resetLoader(g),o(this.createKeyLoadError(t,_.KEY_LOAD_ERROR,new Error(`HTTP Error ${d.code} loading key ${d.text}`),f,re({url:c.url,data:void 0},d)))},onTimeout:(d,g,f)=>{this.resetLoader(g),o(this.createKeyLoadError(t,_.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),f))},onAbort:(d,g,f)=>{this.resetLoader(g),o(this.createKeyLoadError(t,_.INTERNAL_ABORTED,new Error("key loading aborted"),f))}};r.load(c,h,u)})}resetLoader(e){const{frag:t,keyInfo:s,url:i}=e,r=s.loader;t.keyLoader===r&&(t.keyLoader=null,s.loader=null);const n=Ri(s.decryptdata)||i;delete this.keyIdToKeyInfo[n],r&&r.destroy()}}function Ri(a){if(a.keyFormat!==be.FAIRPLAY){const e=a.keyId;if(e)return Re(e)}return a.uri}function Xn(a){const{type:e}=a;switch(e){case te.AUDIO_TRACK:return Y.AUDIO;case te.SUBTITLE_TRACK:return Y.SUBTITLE;default:return Y.MAIN}}function bi(a,e){let t=a.url;return(t===void 0||t.indexOf("data:")===0)&&(t=e.url),t}class xf{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.onManifestLoaded=this.checkAutostartLoad,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(m.MANIFEST_LOADING,this.onManifestLoading,this),e.on(m.LEVEL_LOADING,this.onLevelLoading,this),e.on(m.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(m.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),e.on(m.LEVELS_UPDATED,this.onLevelsUpdated,this)}unregisterListeners(){const{hls:e}=this;e.off(m.MANIFEST_LOADING,this.onManifestLoading,this),e.off(m.LEVEL_LOADING,this.onLevelLoading,this),e.off(m.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(m.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),e.off(m.LEVELS_UPDATED,this.onLevelsUpdated,this)}createInternalLoader(e){const t=this.hls.config,s=t.pLoader,i=t.loader,r=s||i,n=new r(t);return this.loaders[e.type]=n,n}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:s}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:te.MANIFEST,url:s,deliveryDirectives:null,levelOrTrack:null})}onLevelLoading(e,t){const{id:s,level:i,pathwayId:r,url:n,deliveryDirectives:o,levelInfo:c}=t;this.load({id:s,level:i,pathwayId:r,responseType:"text",type:te.LEVEL,url:n,deliveryDirectives:o,levelOrTrack:c})}onAudioTrackLoading(e,t){const{id:s,groupId:i,url:r,deliveryDirectives:n,track:o}=t;this.load({id:s,groupId:i,level:null,responseType:"text",type:te.AUDIO_TRACK,url:r,deliveryDirectives:n,levelOrTrack:o})}onSubtitleTrackLoading(e,t){const{id:s,groupId:i,url:r,deliveryDirectives:n,track:o}=t;this.load({id:s,groupId:i,level:null,responseType:"text",type:te.SUBTITLE_TRACK,url:r,deliveryDirectives:n,levelOrTrack:o})}onLevelsUpdated(e,t){const s=this.loaders[te.LEVEL];if(s){const i=s.context;i&&!t.levels.some(r=>r===i.levelOrTrack)&&(s.abort(),delete this.loaders[te.LEVEL])}}load(e){var t;const s=this.hls.config;let i=this.getInternalLoader(e);if(i){const l=this.hls.logger,h=i.context;if(h&&h.levelOrTrack===e.levelOrTrack&&(h.url===e.url||h.deliveryDirectives&&!e.deliveryDirectives)){h.url===e.url?l.log(`[playlist-loader]: ignore ${e.url} ongoing request`):l.log(`[playlist-loader]: ignore ${e.url} in favor of ${h.url}`);return}l.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),i.abort()}let r;if(e.type===te.MANIFEST?r=s.manifestLoadPolicy.default:r=ae({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),i=this.createInternalLoader(e),V((t=e.deliveryDirectives)==null?void 0:t.part)){let l;if(e.type===te.LEVEL&&e.level!==null?l=this.hls.levels[e.level].details:e.type===te.AUDIO_TRACK&&e.id!==null?l=this.hls.audioTracks[e.id].details:e.type===te.SUBTITLE_TRACK&&e.id!==null&&(l=this.hls.subtitleTracks[e.id].details),l){const h=l.partTarget,u=l.targetduration;if(h&&u){const d=Math.max(h*3,u*.8)*1e3;r=ae({},r,{maxTimeToFirstByteMs:Math.min(d,r.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(d,r.maxTimeToFirstByteMs)})}}}const n=r.errorRetry||r.timeoutRetry||{},o={loadPolicy:r,timeout:r.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},c={onSuccess:(l,h,u,d)=>{const g=this.getInternalLoader(u);this.resetInternalLoader(u.type);const f=l.data;h.parsing.start=performance.now(),it.isMediaPlaylist(f)||u.type!==te.MANIFEST?this.handleTrackOrLevelPlaylist(l,h,u,d||null,g):this.handleMasterPlaylist(l,h,u,d)},onError:(l,h,u,d)=>{this.handleNetworkError(h,u,!1,l,d)},onTimeout:(l,h,u)=>{this.handleNetworkError(h,u,!0,void 0,l)}};i.load(e,o,c)}checkAutostartLoad(){if(!this.hls)return;const{config:{autoStartLoad:e,startPosition:t},forceStartLoad:s}=this.hls;(e||s)&&(this.hls.logger.log(`${e?"auto":"force"} startLoad with configured startPosition ${t}`),this.hls.startLoad(t))}handleMasterPlaylist(e,t,s,i){const r=this.hls,n=e.data,o=bi(e,s),c=it.parseMasterPlaylist(n,o);if(c.playlistParsingError){t.parsing.end=performance.now(),this.handleManifestParsingError(e,s,c.playlistParsingError,i,t);return}const{contentSteering:l,levels:h,sessionData:u,sessionKeys:d,startTimeOffset:g,variableList:f}=c;this.variableList=f,h.forEach(v=>{const{unknownCodecs:T}=v;if(T){const{preferManagedMediaSource:S}=this.hls.config;let{audioCodec:x,videoCodec:D}=v;for(let A=T.length;A--;){const L=T[A];ss(L,"audio",S)?(v.audioCodec=x=x?`${x},${L}`:L,Yt.audio[x.substring(0,4)]=2,T.splice(A,1)):ss(L,"video",S)&&(v.videoCodec=D=D?`${D},${L}`:L,Yt.video[D.substring(0,4)]=2,T.splice(A,1))}}});const{AUDIO:p=[],SUBTITLES:y,"CLOSED-CAPTIONS":E}=it.parseMasterPlaylistMedia(n,o,c);p.length&&!p.some(T=>!T.url)&&h[0].audioCodec&&!h[0].attrs.AUDIO&&(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),p.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new fe({}),bitrate:0,url:""})),r.trigger(m.MANIFEST_LOADED,{levels:h,audioTracks:p,subtitles:y,captions:E,contentSteering:l,url:o,stats:t,networkDetails:i,sessionData:u,sessionKeys:d,startTimeOffset:g,variableList:f})}handleTrackOrLevelPlaylist(e,t,s,i,r){const n=this.hls,{id:o,level:c,type:l}=s,h=bi(e,s),u=V(c)?c:V(o)?o:0,d=Xn(s),g=it.parseLevelPlaylist(e.data,h,u,d,0,this.variableList);if(l===te.MANIFEST){const f={attrs:new fe({}),bitrate:0,details:g,name:"",url:h};g.requestScheduled=t.loading.start+Fa(g,0),n.trigger(m.MANIFEST_LOADED,{levels:[f],audioTracks:[],url:h,stats:t,networkDetails:i,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),s.levelDetails=g,this.handlePlaylistLoaded(g,e,t,s,i,r)}handleManifestParsingError(e,t,s,i,r){this.hls.trigger(m.ERROR,{type:W.NETWORK_ERROR,details:_.MANIFEST_PARSING_ERROR,fatal:t.type===te.MANIFEST,url:e.url,err:s,error:s,reason:s.message,response:e,context:t,networkDetails:i,stats:r})}handleNetworkError(e,t,s=!1,i,r){let n=`A network ${s?"timeout":"error"+(i?" (status "+i.code+")":"")} occurred while loading ${e.type}`;e.type===te.LEVEL?n+=`: ${e.level} id: ${e.id}`:(e.type===te.AUDIO_TRACK||e.type===te.SUBTITLE_TRACK)&&(n+=` id: ${e.id} group-id: "${e.groupId}"`);const o=new Error(n);this.hls.logger.warn(`[playlist-loader]: ${n}`);let c=_.UNKNOWN,l=!1;const h=this.getInternalLoader(e);switch(e.type){case te.MANIFEST:c=s?_.MANIFEST_LOAD_TIMEOUT:_.MANIFEST_LOAD_ERROR,l=!0;break;case te.LEVEL:c=s?_.LEVEL_LOAD_TIMEOUT:_.LEVEL_LOAD_ERROR,l=!1;break;case te.AUDIO_TRACK:c=s?_.AUDIO_TRACK_LOAD_TIMEOUT:_.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case te.SUBTITLE_TRACK:c=s?_.SUBTITLE_TRACK_LOAD_TIMEOUT:_.SUBTITLE_LOAD_ERROR,l=!1;break}h&&this.resetInternalLoader(e.type);const u={type:W.NETWORK_ERROR,details:c,fatal:l,url:e.url,loader:h,context:e,error:o,networkDetails:t,stats:r};if(i){const d=t?.url||e.url;u.response=re({url:d,data:void 0},i)}this.hls.trigger(m.ERROR,u)}handlePlaylistLoaded(e,t,s,i,r,n){const o=this.hls,{type:c,level:l,levelOrTrack:h,id:u,groupId:d,deliveryDirectives:g}=i,f=bi(t,i),p=Xn(i);let y=typeof i.level=="number"&&p===Y.MAIN?l:void 0;const E=e.playlistParsingError;if(E){if(this.hls.logger.warn(`${E} ${e.url}`),!o.config.ignorePlaylistParsingErrors){o.trigger(m.ERROR,{type:W.NETWORK_ERROR,details:_.LEVEL_PARSING_ERROR,fatal:!1,url:f,error:E,reason:E.message,response:t,context:i,level:y,parent:p,networkDetails:r,stats:s});return}e.playlistParsingError=null}if(!e.fragments.length){const v=e.playlistParsingError=new Error("No Segments found in Playlist");o.trigger(m.ERROR,{type:W.NETWORK_ERROR,details:_.LEVEL_EMPTY_ERROR,fatal:!1,url:f,error:v,reason:v.message,response:t,context:i,level:y,parent:p,networkDetails:r,stats:s});return}switch(e.live&&n&&(n.getCacheAge&&(e.ageHeader=n.getCacheAge()||0),(!n.getCacheAge||isNaN(e.ageHeader))&&(e.ageHeader=0)),c){case te.MANIFEST:case te.LEVEL:if(y){if(!h)y=0;else if(h!==o.levels[y]){const v=o.levels.indexOf(h);v>-1&&(y=v)}}o.trigger(m.LEVEL_LOADED,{details:e,levelInfo:h||o.levels[0],level:y||0,id:u||0,stats:s,networkDetails:r,deliveryDirectives:g,withoutMultiVariant:c===te.MANIFEST});break;case te.AUDIO_TRACK:o.trigger(m.AUDIO_TRACK_LOADED,{details:e,track:h,id:u||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:g});break;case te.SUBTITLE_TRACK:o.trigger(m.SUBTITLE_TRACK_LOADED,{details:e,track:h,id:u||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:g});break}}}class _e{static get version(){return ns}static isMSESupported(){return Fo()}static isSupported(){return yf()}static getMediaSource(){return Lt()}static get Events(){return m}static get MetadataSchema(){return He}static get ErrorTypes(){return W}static get ErrorDetails(){return _}static get DefaultConfig(){return _e.defaultConfig?_e.defaultConfig:nf}static set DefaultConfig(e){_e.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.logger=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new dr,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioStreamController=void 0,this.subtititleStreamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.interstitialsController=void 0,this.gapController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this._url=null,this._sessionId=void 0,this.triggeringException=void 0,this.started=!1;const t=this.logger=bl(e.debug||!1,"Hls instance",e.assetPlayerId),s=this.config=of(_e.DefaultConfig,e,t);this.userConfig=e,s.progressive&&lf(s,t);const{abrController:i,bufferController:r,capLevelController:n,errorController:o,fpsController:c}=s,l=new o(this),h=this.abrController=new i(this),u=new xc(this),d=s.interstitialsController,g=d?this.interstitialsController=new d(this,_e):null,f=this.bufferController=new r(this,u),p=this.capLevelController=new n(this),y=new c(this),E=new xf(this),v=s.contentSteeringController,T=v?new v(this):null,S=this.levelController=new pf(this,T),x=new gf(this),D=new Sf(this.config,this.logger),A=this.streamController=new Tf(this,u,D),L=this.gapController=new df(this,u);p.setStreamController(A),y.setStreamController(A);const R=[E,S,A];g&&R.splice(1,0,g),T&&R.splice(1,0,T),this.networkControllers=R;const I=[h,f,L,p,y,x,u];this.audioTrackController=this.createController(s.audioTrackController,R);const C=s.audioStreamController;C&&R.push(this.audioStreamController=new C(this,u,D)),this.subtitleTrackController=this.createController(s.subtitleTrackController,R);const $=s.subtitleStreamController;$&&R.push(this.subtititleStreamController=new $(this,u,D)),this.createController(s.timelineController,I),D.emeController=this.emeController=this.createController(s.emeController,I),this.cmcdController=this.createController(s.cmcdController,I),this.latencyController=this.createController(mf,I),this.coreComponents=I,R.push(l);const K=l.onErrorOut;typeof K=="function"&&this.on(m.ERROR,K,l),this.on(m.MANIFEST_LOADED,E.onManifestLoaded,E)}createController(e,t){if(e){const s=new e(this);return t&&t.push(s),s}return null}on(e,t,s=this){this._emitter.on(e,t,s)}once(e,t,s=this){this._emitter.once(e,t,s)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,s=this,i){this._emitter.off(e,t,s,i)}listeners(e){return this._emitter.listeners(e)}emit(e,t,s){return this._emitter.emit(e,t,s)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(s){if(this.logger.error("An internal error happened while handling event "+e+'. Error message: "'+s.message+'". Here is a stacktrace:',s),!this.triggeringException){this.triggeringException=!0;const i=e===m.ERROR;this.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.INTERNAL_EXCEPTION,fatal:i,event:e,error:s}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){this.logger.log("destroy"),this.trigger(m.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this._url=null,this.networkControllers.forEach(t=>t.destroy()),this.networkControllers.length=0,this.coreComponents.forEach(t=>t.destroy()),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){if(!e||"media"in e&&!e.media){const r=new Error(`attachMedia failed: invalid argument (${e})`);this.trigger(m.ERROR,{type:W.OTHER_ERROR,details:_.ATTACH_MEDIA_ERROR,fatal:!0,error:r});return}this.logger.log("attachMedia"),this._media&&(this.logger.warn("media must be detached before attaching"),this.detachMedia());const t="media"in e,s=t?e.media:e,i=t?e:{media:s};this._media=s,this.trigger(m.MEDIA_ATTACHING,i)}detachMedia(){this.logger.log("detachMedia"),this.trigger(m.MEDIA_DETACHING,{}),this._media=null}transferMedia(){this._media=null;const e=this.bufferController.transferMedia();return this.trigger(m.MEDIA_DETACHING,{transferMedia:e}),e}loadSource(e){this.stopLoad();const t=this.media,s=this._url,i=this._url=tr.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log(`loadSource:${i}`),t&&s&&(s!==i||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(m.MANIFEST_LOADING,{url:e})}get url(){return this._url}get hasEnoughToStart(){return this.streamController.hasEnoughToStart}get startPosition(){return this.streamController.startPositionValue}startLoad(e=-1,t){this.logger.log(`startLoad(${e+(t?", ":"")})`),this.started=!0,this.resumeBuffering();for(let s=0;s{e.resumeBuffering&&e.resumeBuffering()}))}pauseBuffering(){this.bufferingEnabled&&(this.logger.log("pause buffering"),this.networkControllers.forEach(e=>{e.pauseBuffering&&e.pauseBuffering()}))}get inFlightFragments(){const e={[Y.MAIN]:this.streamController.inFlightFrag};return this.audioStreamController&&(e[Y.AUDIO]=this.audioStreamController.inFlightFrag),this.subtititleStreamController&&(e[Y.SUBTITLE]=this.subtititleStreamController.inFlightFrag),e}swapAudioCodec(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){this.logger.log("recoverMediaError");const e=this._media,t=e?.currentTime;this.detachMedia(),e&&(this.attachMedia(e),t&&this.startLoad(t))}removeLevel(e){this.levelController.removeLevel(e)}get sessionId(){let e=this._sessionId;return e||(e=this._sessionId=ud()),e}get levels(){const e=this.levelController.levels;return e||[]}get latestLevelDetails(){return this.streamController.getLevelDetails()||null}get loadLevelObj(){return this.levelController.loadLevelObj}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){this.logger.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){this.logger.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){this.logger.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){this.logger.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return e===-1&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){this.logger.log(`set startLevel:${e}`),e!==-1&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get abrEwmaDefaultEstimate(){const{bwEstimator:e}=this.abrController;return e?e.defaultEstimate:NaN}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(this.logger.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){ac(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return this.levelController.manualLevel===-1}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const s=e.length;for(let i=0;i=t)return i;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:s}=this;let i;if(t===-1&&e!=null&&e.length?i=e.length-1:i=t,s)for(let r=i;r--;){const n=e[r].attrs["HDCP-LEVEL"];if(n&&n<=s)return r}return i}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}get maxBufferLength(){return this.streamController.maxBufferLength}setAudioOption(e){var t;return((t=this.audioTrackController)==null?void 0:t.setAudioOption(e))||null}setSubtitleOption(e){var t;return((t=this.subtitleTrackController)==null?void 0:t.setSubtitleOption(e))||null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return e?e.subtitleDisplay:!1}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}set targetLatency(e){this.latencyController.targetLatency=e}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}get pathways(){return this.levelController.pathways}get pathwayPriority(){return this.levelController.pathwayPriority}set pathwayPriority(e){this.levelController.pathwayPriority=e}get bufferedToEnd(){var e;return!!((e=this.bufferController)!=null&&e.bufferedToEnd)}get interstitialsManager(){var e;return((e=this.interstitialsController)==null?void 0:e.interstitialsManager)||null}getMediaDecodingInfo(e,t=this.allAudioTracks){const s=Ta(t);return Ea(e,s,navigator.mediaCapabilities)}}_e.defaultConfig=void 0;var Af=Oe('
'),If=Oe('
scrub
',2);function Lf(a,e){Zi(e,!0);let t=ie(void 0),s=null,i=ie(""),r=ie(!1),n=ie(0),o=ie(0),c=ie(void 0),l=ie(!1),h=ie(0),u=ie(0),d=ie(!1),g=0,f=ie(!0),p=null,y=ie(!1);function E(){s&&(s.destroy(),s=null)}function v(){!O(t)||!e.src||(E(),q(i,""),_e.isSupported()?(s=new _e({enableWorker:!0,lowLatencyMode:!1}),s.loadSource(e.src),s.attachMedia(O(t)),s.on(_e.Events.MANIFEST_PARSED,()=>{O(t)?.play().catch(()=>{}),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&q(i,"🐸 Audio may not work in Safari — these streams use Opus. Try Chrome or Firefox for sound.")}),s.on(_e.Events.ERROR,(k,B)=>{if(console.error("HLS error:",B),B.fatal)switch(B.type){case _e.ErrorTypes.NETWORK_ERROR:q(i,`Network error: ${B.details}`),s?.startLoad();break;case _e.ErrorTypes.MEDIA_ERROR:q(i,`Media error: ${B.details}`),s?.recoverMediaError();break;default:q(i,`Fatal error: ${B.details}`),E();break}})):q(i,"HLS playback is not supported in this browser."))}ii(()=>(e.src,O(t)&&v(),E)),ii(()=>(document.addEventListener("fullscreenchange",R),()=>document.removeEventListener("fullscreenchange",R)));let T=0;function S(){if(!O(t)||O(l))return;q(n,O(t).currentTime,!0),q(o,O(t).duration||0,!0);const k=O(o)>0?O(n)/O(o):0,B=k-T;Math.abs(B)>.002&&(q(u,O(u)===0?1:0,!0),q(d,B<0),T=k),q(h,k,!0)}function x(){q(r,!0)}function D(){q(r,!1)}function A(){O(t)&&(O(t).paused?O(t).play().catch(()=>{}):O(t).pause())}function L(){const k=O(t)?.closest(".player-wrapper");k&&(document.fullscreenElement?document.exitFullscreen?.().catch(()=>{}):k.requestFullscreen?.().catch(()=>{}))}function R(){q(y,!!document.fullscreenElement)}function I(k){if(!O(c))return;const B=O(c).getBoundingClientRect(),G=Math.max(0,Math.min(1,(k.clientX-B.left)/B.width)),N=G-g;Math.abs(N)>.02&&(q(u,O(u)===0?1:0,!0),q(d,N<0),g=G),q(h,G,!0),O(t)&&O(o)>0&&(O(t).currentTime=G*O(o),q(n,G*O(o)))}let C=!1;function $(k){k.preventDefault(),q(l,!0),C=!!(O(t)&&!O(t).paused),O(t)&&C&&O(t).pause(),I(k),window.addEventListener("mousemove",H),window.addEventListener("mouseup",F)}function K(k){k.preventDefault(),k.stopPropagation(),q(l,!0),C=!!(O(t)&&!O(t).paused),O(t)&&C&&O(t).pause(),window.addEventListener("mousemove",H),window.addEventListener("mouseup",F)}function H(k){O(l)&&I(k)}function F(){q(l,!1),O(t)&&C&&O(t).play().catch(()=>{}),window.removeEventListener("mousemove",H),window.removeEventListener("mouseup",F)}function w(k){k.code==="Space"&&O(t)&&(k.preventDefault(),A())}ii(()=>(window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)));function M(){q(f,!0),p&&clearTimeout(p),p=setTimeout(()=>{O(r)&&q(f,!1)},2500)}Fs(a,{seed:"player-main",padding:4,children:(k,B)=>{var G=If(),N=de(G);Ms(N,Ne=>q(t,Ne),()=>O(t));var U=Ee(N,2);let X;var Z=de(U);dt(Z,"aria-valuemin",0),dt(Z,"tabindex",0);var j=de(Z);let J;var ue=de(j);he(j),he(Z),Ms(Z,Ne=>q(c,Ne),()=>O(c)),he(U);var oe=Ee(U,2);let Te;var De=Ee(oe,2);{var Ce=Ne=>{var pt=Af(),Be=de(pt,!0);he(pt),Ve(()=>ze(Be,O(i))),ke(Ne,pt)};mt(De,Ne=>{O(i)&&Ne(Ce)})}he(G),Ve(()=>{X=Zt(U,1,"controls svelte-zbxgh1",null,X,{visible:O(f)||!O(r)}),dt(Z,"aria-valuenow",O(n)),dt(Z,"aria-valuemax",O(o)),J=Zt(j,1,"scrub-frog svelte-zbxgh1",null,J,{flipped:O(d)}),Rs(j,`left: ${O(h)*100}%;`),dt(ue,"src",O(u)===0?"/froggiestand.png":"/froggiejump.png"),Te=Zt(oe,1,"fullscreen-btn svelte-zbxgh1",null,Te,{visible:O(f)||!O(r)}),dt(oe,"title",O(y)?"Exit fullscreen":"Fullscreen")}),ft("mousemove",G,M),At("mouseenter",G,M),At("mouseleave",G,()=>{O(r)&&q(f,!1)}),At("timeupdate",N,S),At("play",N,x),At("pause",N,D),ft("click",N,A),ft("mousedown",Z,$),ft("mousedown",j,K),ft("click",oe,L),ke(k,G)},$$slots:{default:!0}}),Ji()}er(["mousemove","click","mousedown"]);var Rf=Oe(''),bf=Oe('
'),_f=Oe('
'),Df=Oe('
hop
'),Cf=Oe(''),Pf=Oe('

',1),kf=Oe('');function wf(a,e){Zi(e,!0);let t=ie(Di(e.video.value.creator)),s=ie(null);const i=e.video.uri.split("/").pop()||e.video.uri,r=ul(e.video.value.creator),n=`transform: rotate(${r.rotation}deg) translate(${r.translateX}px, ${r.translateY}px);`;let o=ie(void 0),c=ie(void 0),l=ie(!1),h=ie(0),u=ie(!1),d=ie(!1),g=ie(!1),f=null,p=null,y=0,E=!1,v=null;zn(()=>{Ci(e.video.value.creator).then(M=>q(t,M,!0)),dl(e.video).then(M=>q(s,M,!0))}),Mo(S);function T(){if(f)return;q(d,!0),f=document.createElement("video"),f.muted=!0,f.playsInline=!0,f.preload="auto",f.style.cssText="position:fixed;top:-9999px;left:-9999px;width:320px;height:180px;pointer-events:none;",document.body.appendChild(f),f.addEventListener("seeked",x);const M=ia(e.video.uri);_e.isSupported()&&(p=new _e({enableWorker:!1,lowLatencyMode:!1,startLevel:0}),p.loadSource(M),p.attachMedia(f),p.on(_e.Events.LEVEL_LOADED,(k,B)=>{y=B.details.totalduration,q(u,!0),A(O(h))}),p.on(_e.Events.ERROR,(k,B)=>{B.fatal&&q(d,!1)}))}function S(){p&&(p.destroy(),p=null),f&&(f.removeEventListener("seeked",x),f.remove(),f=null),q(u,!1),q(d,!1),q(g,!1),E=!1,v=null,y=0}function x(){if(E=!1,q(d,!1),L(),v!==null){const M=v;v=null,D(M)}}function D(M){!f||!O(u)||(E=!0,f.currentTime=M)}function A(M){if(!O(u)||!y)return;const k=M*y;E?v=k:D(k)}function L(){if(!f||!O(c))return;const M=f.videoWidth,k=f.videoHeight;if(!M||!k)return;const B=O(c).getBoundingClientRect(),G=window.devicePixelRatio||1;O(c).width=B.width*G,O(c).height=B.height*G;const N=O(c).getContext("2d");N&&(N.drawImage(f,0,0,O(c).width,O(c).height),q(g,!0))}let R=ie(0),I=0,C=ie(!1);function $(){q(l,!0),T()}function K(M){if(!O(o))return;const k=O(o).getBoundingClientRect(),B=Math.max(0,Math.min(1,(M.clientX-k.left)/k.width)),G=B-I;Math.abs(G)>.03&&(q(R,O(R)===0?1:0,!0),q(C,G<0),I=B),q(h,B,!0),A(O(h))}function H(){q(l,!1)}var F=kf(),w=de(F);Fs(w,{get seed(){return i},fill:"#39FF44",strokeColor:"#0A182B",strokeWidth:2.2,padding:"clamp(24px, 4vw, 36px)",children:(M,k)=>{var B=Pf(),G=Jn(B),N=de(G,!0);he(G);var U=Ee(G,2),X=de(U);{let Ce=ea(()=>i+"-thumb");Fs(X,{get seed(){return O(Ce)},fill:"#3992FF",strokeColor:"#0A182B",strokeWidth:1.5,padding:0,children:(Ne,pt)=>{var Be=Cf(),Qs=de(Be);{var se=me=>{var ye=Rf();Ve(()=>{dt(ye,"src",O(s)),dt(ye,"alt",e.video.value.title)}),ke(me,ye)};mt(Qs,me=>{O(s)&&me(se)})}var Se=Ee(Qs,2);let Pe;Ms(Se,me=>q(c,me),()=>O(c));var Qe=Ee(Se,2);{var Ue=me=>{var ye=bf();ke(me,ye)};mt(Qe,me=>{O(l)&&O(d)&&!O(g)&&me(Ue)})}var at=Ee(Qe,2);{var ot=me=>{var ye=_f(),bt=de(ye);he(ye),Ve(()=>Rs(bt,`width: ${O(h)*100}%`)),ke(me,ye)};mt(at,me=>{O(l)&&O(u)&&me(ot)})}var cs=Ee(at,2);{var wt=me=>{var ye=Df();let bt;var Zs=de(ye);he(ye),Ve(()=>{bt=Zt(ye,1,"scrub-frog svelte-1nxalmg",null,bt,{flipped:O(C)}),Rs(ye,`left: ${O(h)*100}%;`),dt(Zs,"src",O(R)===0?"/froggiestand.png":"/froggiejump.png")}),ke(me,ye)};mt(cs,me=>{O(l)&&me(wt)})}nl(2),he(Be),Ms(Be,me=>q(o,me),()=>O(o)),Ve(()=>Pe=Zt(Se,1,"scrub-canvas svelte-1nxalmg",null,Pe,{visible:O(l)&&O(g)})),At("mouseenter",Be,$),ft("mousemove",Be,K),At("mouseleave",Be,H),ke(Ne,Be)},$$slots:{default:!0}})}he(U);var Z=Ee(U,2),j=de(Z),J=de(j,!0);he(j);var ue=Ee(j,2),oe=de(ue,!0);he(ue);var Te=Ee(ue,2),De=de(Te,!0);he(Te),he(Z),Ve((Ce,Ne)=>{ze(N,Ce),ze(J,e.video.value.title),ze(oe,O(t)),ze(De,Ne)},[()=>ta(e.video.value.duration),()=>sa(e.video.value.createdAt)]),ke(M,B)},$$slots:{default:!0}}),he(F),Ve(()=>Rs(F,n)),ft("click",F,()=>e.onSelect(e.video)),ke(a,F),Ji()}er(["click","mousemove"]);var Of=Oe('

· ·

',1),Ff=Oe('
'),Mf=Oe('
'),Nf=Oe(''),Bf=Oe(''),Uf=Oe('
');function zf(a,e){Zi(e,!0);const t=9;let s=ie(Di([])),i=ie(!1),r=ie(null),n=ie(""),o=ie(""),c=ie(Di([void 0])),l=ie(0),h=ie(!0);async function u(){q(i,!0),q(o,"");try{const F=await gl(O(c)[O(l)],t);q(s,F.records,!0),q(h,!!F.cursor&&F.records.length===t,!0),O(h)&&O(c).length<=O(l)+1&&q(c,[...O(c),F.cursor],!0)}catch(F){q(o,F.message,!0)}q(i,!1)}function d(){!O(h)||O(i)||(Cr(l),u(),window.scrollTo({top:0,behavior:"smooth"}))}function g(){O(l)<=0||O(i)||(Cr(l,-1),u(),window.scrollTo({top:0,behavior:"smooth"}))}function f(F){q(r,F,!0),Ci(F.value.creator).then(M=>q(n,M,!0));const w=new URL(window.location.href);w.searchParams.set("v",F.uri),window.history.pushState({},"",w.toString()),window.scrollTo({top:0,behavior:"smooth"})}function p(){q(r,null);const F=new URL(window.location.href);F.searchParams.delete("v"),window.history.pushState({},"",F.toString())}zn(async()=>{await u();const w=new URLSearchParams(window.location.search).get("v");if(w){const M=O(s).find(k=>k.uri===w);M&&f(M)}});function y(){const w=new URLSearchParams(window.location.search).get("v");if(w){const M=O(s).find(k=>k.uri===w);M&&(q(r,M,!0),Ci(M.value.creator).then(k=>q(n,k,!0)))}else q(r,null)}var E=Uf();At("popstate",ol,y),cl("1uha8ag",F=>{al(()=>{ll.title="vod frog"})});var v=de(E);fl(v,{onHomeClick:p});var T=Ee(v,2);{var S=F=>{var w=Ff(),M=de(w);{let G=ea(()=>ia(O(r).uri));Lf(M,{get src(){return O(G)}})}var k=Ee(M,2),B=de(k);Fs(B,{seed:"player-info",fill:"#39FF44",strokeColor:"#0A182B",strokeWidth:1.8,padding:48,children:(G,N)=>{var U=Of(),X=Jn(U),Z=de(X,!0);he(X);var j=Ee(X,2),J=de(j),ue=de(J,!0);he(J);var oe=Ee(J,3),Te=Ee(oe,2);he(j),Ve((De,Ce)=>{ze(Z,O(r).value.title),ze(ue,O(n)||O(r).value.creator),ze(oe,` ${De??""} `),ze(Te,` ${Ce??""}`)},[()=>sa(O(r).value.createdAt),()=>ta(O(r).value.duration)]),ke(G,U)},$$slots:{default:!0}}),he(k),he(w),ke(F,w)};mt(T,F=>{O(r)&&F(S)})}var x=Ee(T,2);{var D=F=>{var w=Mf(),M=de(w,!0);he(w),Ve(()=>ze(M,O(o))),ke(F,w)};mt(x,F=>{O(o)&&F(D)})}var A=Ee(x,2);pl(A,21,()=>O(s),F=>F.uri,(F,w)=>{wf(F,{get video(){return O(w)},onSelect:f})}),he(A);var L=Ee(A,2),R=de(L);{var I=F=>{var w=Nf();Ve(()=>w.disabled=O(i)),ft("click",w,g),ke(F,w)};mt(R,F=>{O(l)>0&&F(I)})}var C=Ee(R,2),$=de(C);he(C);var K=Ee(C,2);{var H=F=>{var w=Bf();Ve(()=>w.disabled=O(i)),ft("click",w,d),ke(F,w)};mt(K,F=>{O(h)&&F(H)})}he(L),he(E),Ve(()=>ze($,`page ${O(l)+1}`)),ke(a,E),Ji()}er(["click"]);export{zf as component}; diff --git a/.svelte-kit/output/client/_app/immutable/nodes/3.BJIJ5Us_.js b/.svelte-kit/output/client/_app/immutable/nodes/3.Ck5bt7k8.js similarity index 97% rename from .svelte-kit/output/client/_app/immutable/nodes/3.BJIJ5Us_.js rename to .svelte-kit/output/client/_app/immutable/nodes/3.Ck5bt7k8.js index 57a1587..1b18405 100644 --- a/.svelte-kit/output/client/_app/immutable/nodes/3.BJIJ5Us_.js +++ b/.svelte-kit/output/client/_app/immutable/nodes/3.Ck5bt7k8.js @@ -1 +1 @@ -import{a as i,f as n}from"../chunks/DGbOEUpF.js";import{o as oa}from"../chunks/DxGD2b0U.js";import{a1 as la,a4 as va,a8 as ia,a5 as r,B as b,A as a,a9 as na,a7 as p,aa as y,a6 as o,ab as j,ac as da,a3 as c}from"../chunks/CkzjbUDB.js";import{s as _}from"../chunks/BsDbD4Ku.js";import{i as u,s as pa,a as ca}from"../chunks/XE2G8ySY.js";import{h as ma}from"../chunks/DmyE0d-6.js";import{F as fa,g as _a,W as N,s as w}from"../chunks/D_t83wNY.js";import{s as ua}from"../chunks/hJNu5X86.js";const ga=!1,xa=!1,Ga=Object.freeze(Object.defineProperty({__proto__:null,prerender:ga,ssr:xa},Symbol.toStringTag,{value:"Module"})),ba=()=>{const m=ua;return{page:{subscribe:m.page.subscribe},navigating:{subscribe:m.navigating.subscribe},updated:m.updated}},ha={subscribe(m){return ba().page.subscribe(m)}};var $a=n('
loading

hopping over to fetch profile...

'),ka=n('
'),ya=n(''),wa=n(''),Ca=n('
'),Fa=n('

'),Ba=n('
followers
'),Pa=n('
following
'),Wa=n('
posts
'),Aa=n(''),ja=n('
'),Na=n('');function Ia(m,S){la(S,!0);const q=()=>ca(ha,"$page",G),[G,I]=pa();let e=j(null),C=j(!0),h=j(""),D=da(()=>q().params.handle);oa(async()=>{b(C,!0),b(h,"");try{b(e,await _a(a(D)),!0)}catch(l){b(h,l.message,!0)}b(C,!1)});var F=Na();ma("oxml5t",l=>{ia(()=>{na.title=`${(a(e)?.displayName||a(D))??""} — vod frog 🐸`})});var E=r(F);fa(E,{});var J=p(E,2);{var K=l=>{var d=$a();i(l,d)},L=l=>{var d=ka(),$=r(d,!0);o(d),c(()=>_($,a(h))),i(l,d)},Q=l=>{var d=ja(),$=r(d);{var R=g=>{N(g,{seed:"profile-banner",fill:"#3992FF",strokeColor:"#0A182B",strokeWidth:2,padding:4,children:(O,k)=>{var x=ya();c(()=>w(x,"src",a(e).banner)),i(O,x)},$$slots:{default:!0}})};u($,g=>{a(e).banner&&g(R)})}var M=p($,2),U=r(M);N(U,{seed:"profile-card",fill:"#39FF44",strokeColor:"#0A182B",strokeWidth:2,padding:48,children:(g,O)=>{var k=Aa(),x=r(k);{var V=t=>{var s=Ca(),v=r(s);N(v,{seed:"profile-avatar",fill:"#FFDEED",strokeColor:"#0A182B",strokeWidth:1.5,padding:4,children:(f,Sa)=>{var A=wa();c(()=>{w(A,"src",a(e).avatar),w(A,"alt",a(e).displayName||a(e).handle)}),i(f,A)},$$slots:{default:!0}}),o(s),i(t,s)};u(x,t=>{a(e).avatar&&t(V)})}var B=p(x,2),X=r(B,!0);o(B);var P=p(B,2),Y=r(P);o(P);var z=p(P,2);{var Z=t=>{var s=Fa(),v=r(s,!0);o(s),c(()=>_(v,a(e).description)),i(t,s)};u(z,t=>{a(e).description&&t(Z)})}var W=p(z,2),H=r(W);{var aa=t=>{var s=Ba(),v=r(s),f=r(v,!0);o(v),y(2),o(s),c(()=>_(f,a(e).followersCount)),i(t,s)};u(H,t=>{a(e).followersCount!==void 0&&t(aa)})}var T=p(H,2);{var ea=t=>{var s=Pa(),v=r(s),f=r(v,!0);o(v),y(2),o(s),c(()=>_(f,a(e).followsCount)),i(t,s)};u(T,t=>{a(e).followsCount!==void 0&&t(ea)})}var ta=p(T,2);{var sa=t=>{var s=Wa(),v=r(s),f=r(v,!0);o(v),y(2),o(s),c(()=>_(f,a(e).postsCount)),i(t,s)};u(ta,t=>{a(e).postsCount!==void 0&&t(sa)})}o(W);var ra=p(W,2);o(k),c(()=>{_(X,a(e).displayName||a(e).handle),_(Y,`@${a(e).handle??""}`),w(ra,"href",`https://witchsky.app/profile/${a(e).handle??""}`)}),i(g,k)},$$slots:{default:!0}}),o(M),o(d),i(l,d)};u(J,l=>{a(C)?l(K):a(h)?l(L,1):a(e)&&l(Q,2)})}y(2),o(F),i(m,F),va(),I()}export{Ia as component,Ga as universal}; +import{a as i,f as n}from"../chunks/DGbOEUpF.js";import{o as oa}from"../chunks/DxGD2b0U.js";import{a1 as la,a4 as va,a8 as ia,a5 as r,B as b,A as a,a9 as na,a7 as p,aa as y,a6 as o,ab as j,ac as da,a3 as c}from"../chunks/CkzjbUDB.js";import{s as _}from"../chunks/BsDbD4Ku.js";import{i as u,s as pa,a as ca}from"../chunks/XE2G8ySY.js";import{h as ma}from"../chunks/DmyE0d-6.js";import{F as fa,g as _a,W as N,s as w}from"../chunks/wDE00Dcu.js";import{s as ua}from"../chunks/p8sLpASk.js";const ga=!1,xa=!1,Ga=Object.freeze(Object.defineProperty({__proto__:null,prerender:ga,ssr:xa},Symbol.toStringTag,{value:"Module"})),ba=()=>{const m=ua;return{page:{subscribe:m.page.subscribe},navigating:{subscribe:m.navigating.subscribe},updated:m.updated}},ha={subscribe(m){return ba().page.subscribe(m)}};var $a=n('
loading

hopping over to fetch profile...

'),ka=n('
'),ya=n(''),wa=n(''),Ca=n('
'),Fa=n('

'),Ba=n('
followers
'),Pa=n('
following
'),Wa=n('
posts
'),Aa=n(''),ja=n('
'),Na=n('');function Ia(m,S){la(S,!0);const q=()=>ca(ha,"$page",G),[G,I]=pa();let e=j(null),C=j(!0),h=j(""),D=da(()=>q().params.handle);oa(async()=>{b(C,!0),b(h,"");try{b(e,await _a(a(D)),!0)}catch(l){b(h,l.message,!0)}b(C,!1)});var F=Na();ma("oxml5t",l=>{ia(()=>{na.title=`${(a(e)?.displayName||a(D))??""} — vod frog 🐸`})});var E=r(F);fa(E,{});var J=p(E,2);{var K=l=>{var d=$a();i(l,d)},L=l=>{var d=ka(),$=r(d,!0);o(d),c(()=>_($,a(h))),i(l,d)},Q=l=>{var d=ja(),$=r(d);{var R=g=>{N(g,{seed:"profile-banner",fill:"#3992FF",strokeColor:"#0A182B",strokeWidth:2,padding:4,children:(O,k)=>{var x=ya();c(()=>w(x,"src",a(e).banner)),i(O,x)},$$slots:{default:!0}})};u($,g=>{a(e).banner&&g(R)})}var M=p($,2),U=r(M);N(U,{seed:"profile-card",fill:"#39FF44",strokeColor:"#0A182B",strokeWidth:2,padding:48,children:(g,O)=>{var k=Aa(),x=r(k);{var V=t=>{var s=Ca(),v=r(s);N(v,{seed:"profile-avatar",fill:"#FFDEED",strokeColor:"#0A182B",strokeWidth:1.5,padding:4,children:(f,Sa)=>{var A=wa();c(()=>{w(A,"src",a(e).avatar),w(A,"alt",a(e).displayName||a(e).handle)}),i(f,A)},$$slots:{default:!0}}),o(s),i(t,s)};u(x,t=>{a(e).avatar&&t(V)})}var B=p(x,2),X=r(B,!0);o(B);var P=p(B,2),Y=r(P);o(P);var z=p(P,2);{var Z=t=>{var s=Fa(),v=r(s,!0);o(s),c(()=>_(v,a(e).description)),i(t,s)};u(z,t=>{a(e).description&&t(Z)})}var W=p(z,2),H=r(W);{var aa=t=>{var s=Ba(),v=r(s),f=r(v,!0);o(v),y(2),o(s),c(()=>_(f,a(e).followersCount)),i(t,s)};u(H,t=>{a(e).followersCount!==void 0&&t(aa)})}var T=p(H,2);{var ea=t=>{var s=Pa(),v=r(s),f=r(v,!0);o(v),y(2),o(s),c(()=>_(f,a(e).followsCount)),i(t,s)};u(T,t=>{a(e).followsCount!==void 0&&t(ea)})}var ta=p(T,2);{var sa=t=>{var s=Wa(),v=r(s),f=r(v,!0);o(v),y(2),o(s),c(()=>_(f,a(e).postsCount)),i(t,s)};u(ta,t=>{a(e).postsCount!==void 0&&t(sa)})}o(W);var ra=p(W,2);o(k),c(()=>{_(X,a(e).displayName||a(e).handle),_(Y,`@${a(e).handle??""}`),w(ra,"href",`https://witchsky.app/profile/${a(e).handle??""}`)}),i(g,k)},$$slots:{default:!0}}),o(M),o(d),i(l,d)};u(J,l=>{a(C)?l(K):a(h)?l(L,1):a(e)&&l(Q,2)})}y(2),o(F),i(m,F),va(),I()}export{Ia as component,Ga as universal}; diff --git a/.svelte-kit/output/client/_app/version.json b/.svelte-kit/output/client/_app/version.json index d3827a2..516a6de 100644 --- a/.svelte-kit/output/client/_app/version.json +++ b/.svelte-kit/output/client/_app/version.json @@ -1 +1 @@ -{"version":"1774912668657"} \ No newline at end of file +{"version":"1774912885214"} \ No newline at end of file diff --git a/.svelte-kit/output/client/fonts/Fang-Italic.otf b/.svelte-kit/output/client/fonts/Fang-Italic.otf new file mode 100755 index 0000000000000000000000000000000000000000..d7d15b380ee334fe116df6071566ecbfe2c6a913 GIT binary patch literal 177300 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 literal 0 HcmV?d00001 diff --git a/.svelte-kit/output/client/fonts/PicNic-Regular.otf b/.svelte-kit/output/client/fonts/PicNic-Regular.otf new file mode 100755 index 0000000000000000000000000000000000000000..2aba2651d913b471b0815b7ab33d3402b54ed739 GIT binary patch literal 148848 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%0A%Ss%v)XVJ?3rW()!r}DbC%J%XZ*$X=s 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 literal 0 HcmV?d00001 diff --git a/.svelte-kit/output/prerendered/pages/index.html b/.svelte-kit/output/prerendered/pages/index.html index 7c1d06a..03a03d9 100644 --- a/.svelte-kit/output/prerendered/pages/index.html +++ b/.svelte-kit/output/prerendered/pages/index.html @@ -5,11 +5,11 @@ vod frog - - + + - + @@ -21,15 +21,15 @@