PageSourceSearch

https://www.oceg.org/js/ui.js?4dd3-c822-c852

js oceg.org collected 2026-09-24 20:29:36 UTC 564,673 bytes, 247 lines download raw bytes

1(()=>{var Hc=Object.create;var Ra=Object.defineProperty;var Kc=Object.getOwnPropertyDescriptor;var Vc=Object.getOwnPropertyNames;var jc=Object.getPrototypeOf,Wc=Object.prototype.hasOwnProperty;var ms=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var Yc=(a,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Vc(e))!Wc.call(a,i)&&i!==t&&Ra(a,i,{get:()=>e[i],enumerable:!(s=Kc(e,i))||s.enumerable});return a};var Qt=(a,e,t)=>(t=a!=null?Hc(jc(a)):{},Yc(e||!a||!a.__esModule?Ra(t,"default",{value:a,enumerable:!0}):t,a));var Ca=ms((gi,pi)=>{(function(a,e){typeof gi=="object"&&typeof pi<"u"?pi.exports=e():typeof define=="function"&&define.amd?define(e):(a=a||self)["@algolia/recommend"]=e()})(gi,function(){"use strict";function a(P,k,O){return k in P?Object.defineProperty(P,k,{value:O,enumerable:!0,configurable:!0,writable:!0}):P[k]=O,P}function e(P,k){var O=Object.keys(P);if(Object.getOwnPropertySymbols){var B=Object.getOwnPropertySymbols(P);k&&(B=B.filter(function(K){return Object.getOwnPropertyDescriptor(P,K).enumerable})),O.push.apply(O,B)}return O}function t(P){for(var k=1;k<arguments.length;k++){var O=arguments[k]!=null?arguments[k]:{};k%2?e(Object(O),!0).forEach(function(B){a(P,B,O[B])}):Object.getOwnPropertyDescriptors?Object.defineProperties(P,Object.getOwnPropertyDescriptors(O)):e(Object(O)).forEach(function(B){Object.defineProperty(P,B,Object.getOwnPropertyDescriptor(O,B))})}return P}function s(P,k){return function(O){if(Array.isArray(O))return O}(P)||function(O,B){if(Symbol.iterator in Object(O)||Object.prototype.toString.call(O)==="[object Arguments]"){var K=[],J=!0,ie=!1,te=void 0;try{for(var ve,we=O[Symbol.iterator]();!(J=(ve=we.next()).done)&&(K.push(ve.value),!B||K.length!==B);J=!0);}catch(Se){ie=!0,te=Se}finally{try{J||we.return==null||we.return()}finally{if(ie)throw te}}return K}}(P,k)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function i(P){return function(k){if(Array.isArray(k)){for(var O=0,B=new Array(k.length);O<k.length;O++)B[O]=k[O];return B}}(P)||function(k){if(Symbol.iterator in Object(k)||Object.prototype.toString.call(k)==="[object Arguments]")return Array.from(k)}(P)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function r(P){var k,O="algoliasearch-client-js-".concat(P.key),B=function(){return k===void 0&&(k=P.localStorage||window.localStorage),k},K=function(){return JSON.parse(B().getItem(O)||"{}")},J=function(te){B().setItem(O,JSON.stringify(te))},ie=function(){var te=P.timeToLive?1e3*P.timeToLive:null,ve=K(),we=Object.fromEntries(Object.entries(ve).filter(function(De){return s(De,2)[1].timestamp!==void 0}));if(J(we),te){var Se=Object.fromEntries(Object.entries(we).filter(function(De){var Ie=s(De,2)[1],qe=new Date().getTime();return!(Ie.timestamp+te<qe)}));J(Se)}};return{get:function(te,ve){var we=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){ie();var Se=JSON.stringify(te);return K()[Se]}).then(function(Se){return Promise.all([Se?Se.value:ve(),Se!==void 0])}).then(function(Se){var De=s(Se,2),Ie=De[0],qe=De[1];return Promise.all([Ie,qe||we.miss(Ie)])}).then(function(Se){return s(Se,1)[0]})},set:function(te,ve){return Promise.resolve().then(function(){var we=K();return we[JSON.stringify(te)]={timestamp:new Date().getTime(),value:ve},B().setItem(O,JSON.stringify(we)),ve})},delete:function(te){return Promise.resolve().then(function(){var ve=K();delete ve[JSON.stringify(te)],B().setItem(O,JSON.stringify(ve))})},clear:function(){return Promise.resolve().then(function(){B().removeItem(O)})}}}function n(P){var k=i(P.caches),O=k.shift();return O===void 0?{get:function(B,K){var J=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},ie=K();return ie.then(function(te){return Promise.all([te,J.miss(te)])}).then(function(te){return s(te,1)[0]})},set:function(B,K){return Promise.resolve(K)},delete:function(B){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(B,K){var J=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};
1return O.get(B,K,J).catch(function(){return n({caches:k}).get(B,K,J)})},set:function(B,K){return O.set(B,K).catch(function(){return n({caches:k}).set(B,K)})},delete:function(B){return O.delete(B).catch(function(){return n({caches:k}).delete(B)})},clear:function(){return O.clear().catch(function(){return n({caches:k}).clear()})}}}function o(){var P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},k={};return{get:function(O,B){var K=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},J=JSON.stringify(O);if(J in k)return Promise.resolve(P.serializable?JSON.parse(k[J]):k[J]);var ie=B(),te=K&&K.miss||function(){return Promise.resolve()};return ie.then(function(ve){return te(ve)}).then(function(){return ie})},set:function(O,B){return k[JSON.stringify(O)]=P.serializable?JSON.stringify(B):B,Promise.resolve(B)},delete:function(O){return delete k[JSON.stringify(O)],Promise.resolve()},clear:function(){return k={},Promise.resolve()}}}function l(P){for(var k=P.length-1;k>0;k--){var O=Math.floor(Math.random()*(k+1)),B=P[k];P[k]=P[O],P[O]=B}return P}var c={WithinQueryParameters:0,WithinHeaders:1},u=1,d=2,h=3;function m(P,k){var O=P||{},B=O.data||{};return Object.keys(O).forEach(function(K){["timeout","headers","queryParameters","data","cacheable"].indexOf(K)===-1&&(B[K]=O[K])}),{data:Object.entries(B).length>0?B:void 0,timeout:O.timeout||k,headers:O.headers||{},queryParameters:O.queryParameters||{},cacheable:O.cacheable}}var f={Read:1,Write:2,Any:3},g=1,y=2,T=3;function b(P){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:g;return t(t({},P),{},{status:k,lastUpdate:Date.now()})}function A(P){return typeof P=="string"?{protocol:"https",url:P,accept:f.Any}:{protocol:P.protocol||"https",url:P.url,accept:P.accept||f.Any}}var _="GET",L="POST";function U(P,k){return Promise.all(k.map(function(O){return P.get(O,function(){return Promise.resolve(b(O))})})).then(function(O){var B=O.filter(function(ie){return function(te){return te.status===g||Date.now()-te.lastUpdate>12e4}(ie)}),K=O.filter(function(ie){return function(te){return te.status===T&&Date.now()-te.lastUpdate<=12e4}(ie)}),J=[].concat(i(B),i(K));return{getTimeout:function(ie,te){return(K.length===0&&ie===0?1:K.length+3+ie)*te},statelessHosts:J.length>0?J.map(function(ie){return A(ie)}):k}})}function C(P,k,O,B){var K=[],J=function(Ie,qe){if(!(Ie.method===_||Ie.data===void 0&&qe.data===void 0)){var be=Array.isArray(Ie.data)?Ie.data:t(t({},Ie.data),qe.data);return JSON.stringify(be)}}(O,B),ie=function(Ie,qe){var be=t(t({},Ie.headers),qe.headers),Fe={};return Object.keys(be).forEach(function(tt){var $e=be[tt];Fe[tt.toLowerCase()]=$e}),Fe}(P,B),te=O.method,ve=O.method!==_?{}:t(t({},O.data),B.data),we=t(t(t({"x-algolia-agent":P.userAgent.value},P.queryParameters),ve),B.queryParameters),Se=0,De=function Ie(qe,be){var Fe=qe.pop();if(Fe===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support .",transporterStackTrace:F(K)};var tt={data:J,headers:ie,method:te,url:N(Fe,O.path,we),connectTimeout:be(Se,P.timeouts.connect),responseTimeout:be(Se,B.timeout)},$e=function(_e){var Te={request:tt,response:_e,host:Fe,triesLeft:qe.length};return K.push(Te),Te},It={onSuccess:function(_e){return function(Te){try{return JSON.parse(Te.content)}catch(Xe){throw function(ot,vt){return{name:"DeserializationError",message:ot,response:vt}}(Xe.message,Te)}}(_e)},onRetry:function(_e){var Te=$e(_e);return _e.isTimedOut&&Se++,Promise.all([P.logger.info("Retryable failure",H(Te)),P.hostsCache.set(Fe,b(Fe,_e.isTimedOut?T:y))]).then(function(){return Ie(qe,be)})},onFail:function(_e){throw $e(_e),function(Te,Xe){var ot=Te.content,vt=Te.status,st=ot;try{st=JSON.parse(ot).message}catch{}return function(Ot,zt,oi){return{name:"ApiError",message:Ot,status:zt,transporterStackTrace:oi}}(st,vt,Xe)}(_e,F(K))}};return P.requester.send(tt).then(function(_e){return function(Te,Xe){return function(ot){var vt=ot.status;return ot.isTimedOut||function(st){var Ot=st.isTimedOut,zt=st.status;return!Ot&&~~zt==0}(ot)||~~(vt/100)!=2&&~~(vt/100)!=4}(Te)?Xe.onRetry(Te):~~(Te.status/100)==2?Xe.onSuccess(Te):Xe.onFail(Te)}(_e,It)})};return U(P.hostsCache,k).then(function(Ie){return De(i(Ie.statelessHosts).reverse(),Ie.getTimeout)})}function M(P){var k={value:"Algolia for JavaScript (".concat(P,")"),add:function(O){var B="; ".concat(O.segment).concat(O.version!==void 0?" (".concat(O.version,")"):"");return k.value.indexOf(B)===-1&&(k.value="".concat(k.value).concat(B)),k}};return k}function N(P,k,O){var B,K=(B=O,Object.keys(B).map(function(ie){return function(ve){for(var we=arguments.length,Se=new Array(we>1?we-1:0),De=1;De<we;De++)Se[De-1]=arguments[De];var Ie=0;return ve.replace(/%s/g,function(){return encodeURIComponent(Se[Ie++])})}("%s=%s",ie,(te=B[ie],Object.prototype.toString.call(te)==="[object Object]"||Object.prototype.toString.call(te)==="[object Array]"?JSON.stringify(B[ie]):B[ie]));var te}).join("&")),J="".concat(P.protocol,"://").concat(P.url,"/").concat(k.charAt(0)==="/"?k.substr(1):k);return K.length&&(J+="?".concat(K)),J}function F(P){return P.map(function(k){return H(k)})}function H(P){var k=P.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};
1return t(t({},P),{},{request:t(t({},P.request),{},{headers:t(t({},P.request.headers),k)})})}var ce=function(P){var k=P.appId,O=function(K,J,ie){var te={"x-algolia-api-key":ie,"x-algolia-application-id":J};return{headers:function(){return K===c.WithinHeaders?te:{}},queryParameters:function(){return K===c.WithinQueryParameters?te:{}}}}(P.authMode!==void 0?P.authMode:c.WithinHeaders,k,P.apiKey),B=function(K){var J=K.hostsCache,ie=K.logger,te=K.requester,ve=K.requestsCache,we=K.responsesCache,Se=K.timeouts,De=K.userAgent,Ie=K.hosts,qe=K.queryParameters,be={hostsCache:J,logger:ie,requester:te,requestsCache:ve,responsesCache:we,timeouts:Se,userAgent:De,headers:K.headers,queryParameters:qe,hosts:Ie.map(function(Fe){return A(Fe)}),read:function(Fe,tt){var $e=m(tt,be.timeouts.read),It=function(){return C(be,be.hosts.filter(function(Te){return(Te.accept&f.Read)!=0}),Fe,$e)};if(($e.cacheable!==void 0?$e.cacheable:Fe.cacheable)!==!0)return It();var _e={request:Fe,mappedRequestOptions:$e,transporter:{queryParameters:be.queryParameters,headers:be.headers}};return be.responsesCache.get(_e,function(){return be.requestsCache.get(_e,function(){return be.requestsCache.set(_e,It()).then(function(Te){return Promise.all([be.requestsCache.delete(_e),Te])},function(Te){return Promise.all([be.requestsCache.delete(_e),Promise.reject(Te)])}).then(function(Te){var Xe=s(Te,2);return Xe[0],Xe[1]})})},{miss:function(Te){return be.responsesCache.set(_e,Te)}})},write:function(Fe,tt){return C(be,be.hosts.filter(function($e){return($e.accept&f.Write)!=0}),Fe,m(tt,be.timeouts.write))}};return be}(t(t({hosts:[{url:"".concat(k,"-dsn.algolia.net"),accept:f.Read},{url:"".concat(k,".algolia.net"),accept:f.Write}].concat(l([{url:"".concat(k,"-1.algolianet.com")},{url:"".concat(k,"-2.algolianet.com")},{url:"".concat(k,"-3.algolianet.com")}]))},P),{},{headers:t(t(t({},O.headers()),{"content-type":"application/x-www-form-urlencoded"}),P.headers),queryParameters:t(t({},O.queryParameters()),P.queryParameters)}));return function(K,J){return J&&Object.keys(J).forEach(function(ie){K[ie]=J[ie](K)}),K}({transporter:B,appId:k,addAlgoliaAgent:function(K,J){B.userAgent.add({segment:K,version:J})},clearCache:function(){return Promise.all([B.requestsCache.clear(),B.responsesCache.clear()]).then(function(){})}},P.methods)},W=function(P){return function(k,O){var B=k.map(function(K){return t(t({},K),{},{threshold:K.threshold||0})});return P.transporter.read({method:L,path:"1/indexes/*/recommendations",data:{requests:B},cacheable:!0},O)}},oe=function(P){return function(k,O){return W(P)(k.map(function(B){return t(t({},B),{},{fallbackParameters:{},model:"bought-together"})}),O)}},ae=function(P){return function(k,O){return W(P)(k.map(function(B){return t(t({},B),{},{model:"related-products"})}),O)}},se=function(P){return function(k,O){var B=k.map(function(K){return t(t({},K),{},{model:"trending-facets",threshold:K.threshold||0})});return P.transporter.read({method:L,path:"1/indexes/*/recommendations",data:{requests:B},cacheable:!0},O)}},fe=function(P){return function(k,O){var B=k.map(function(K){return t(t({},K),{},{model:"trending-items",threshold:K.threshold||0})});return P.transporter.read({method:L,path:"1/indexes/*/recommendations",data:{requests:B},cacheable:!0},O)}},ge=function(P){return function(k,O){return W(P)(k.map(function(B){return t(t({},B),{},{model:"looking-similar"})}),O)}},Q=function(P){return function(k,O){var B=k.map(function(K){return t(t({},K),{},{model:"recommended-for-you",threshold:K.threshold||0})});return P.transporter.read({method:L,path:"1/indexes/*/recommendations",data:{requests:B},cacheable:!0},O)}};function j(P,k,O){var B,K={appId:P,apiKey:k,timeouts:{connect:1,read:2,write:30},requester:{send:function(J){return new Promise(function(ie){var te=new XMLHttpRequest;te.open(J.method,J.url,!0),Object.keys(J.headers).forEach(function(De){return te.setRequestHeader(De,J.headers[De])});var ve,we=function(De,Ie){return setTimeout(function(){te.abort(),ie({status:0,content:Ie,isTimedOut:!0})},1e3*De)},Se=we(J.connectTimeout,"Connection timeout");te.onreadystatechange=function(){te.readyState>te.OPENED&&ve===void 0&&(clearTimeout(Se),ve=we(J.responseTimeout,"Socket timeout"))},te.onerror=function(){te.status===0&&(clearTimeout(Se),clearTimeout(ve),ie({content:te.responseText||"Network request failed",status:te.status,isTimedOut:!1}))},te.onload=function(){clearTimeout(Se),clearTimeout(ve),ie({content:te.responseText,status:te.status,isTimedOut:!1})},te.send(J.data)})}},logger:(B=h,{debug:function(J,ie){return u>=B&&console.debug(J,ie),Promise.resolve()},info:function(J,ie){return d>=B&&console.info(J,ie),Promise.resolve()},error:function(J,ie){return console.error(J,ie),Promise.resolve()}}),responsesCache:o(),requestsCache:o({serializable:!1}
1),hostsCache:n({caches:[r({key:"".concat("4.24.0","-").concat(P)}),o()]}),userAgent:M("4.24.0").add({segment:"Recommend",version:"4.24.0"}).add({segment:"Browser"}),authMode:c.WithinQueryParameters};return ce(t(t(t({},K),O),{},{methods:{getFrequentlyBoughtTogether:oe,getRecommendations:W,getRelatedProducts:ae,getTrendingFacets:se,getTrendingItems:fe,getLookingSimilar:ge,getRecommendedForYou:Q}}))}return j.version="4.24.0",j.getFrequentlyBoughtTogether=oe,j.getRecommendations=W,j.getRelatedProducts=ae,j.getTrendingFacets=se,j.getTrendingItems=fe,j.getLookingSimilar=ge,j.getRecommendedForYou=Q,j})});var yi=ms((Df,Da)=>{Da.exports=[{name:"Standards",slug:"standards",handle:"standard",featured:!0},{name:"Illustrations",slug:"illustrations",handle:"illustration",featured:!0},{name:"eBooks",slug:"ebooks",handle:"ebook",featured:!0},{name:"Playbooks",slug:"playbooks",handle:"playbook",featured:!0},{name:"Videos",slug:"videos",handle:"video",featured:!1},{name:"Courses",slug:"courses",handle:"course"},{name:"Research",slug:"research",handle:"research",featured:!0},{name:"Slide decks",slug:"slide-decks",handle:"slidedeck",featured:!1},{name:"Articles",slug:"articles",handle:"article",featured:!1},{name:"Webinar Recordings",slug:"webinar-recordings",handle:"webinarRecording",featured:!0}]});var vi=ms((_f,ka)=>{var _a=[...yi()];_a.push({name:"Event",slug:"events",handle:"event"});ka.exports=(a,e)=>{let t="";return a.map((s,i)=>{let r="",n="",o="",l=`<svg aria-hidden="true" focusable="false" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
2                    <path fill="currentColor" d="M13.912.706a2 2 0 0 1 2.176 0l1.792 1.162a2 2 0 0 0 1.192.32l2.133-.111a2 2 0 0 1 1.885 1.088l.97 1.902a2 2 0 0 0 .873.873l1.902.97a2 2 0 0 1 1.088 1.885l-.11 2.133c-.022.421.09.838.32 1.192l1.161 1.792a2 2 0 0 1 0 2.176l-1.162 1.792c-.23.354-.341.77-.32 1.192l.111 2.133a2 2 0 0 1-1.088 1.885l-1.902.97a2 2 0 0 0-.873.873l-.97 1.902a2 2 0 0 1-1.885 1.088l-2.133-.11c-.421-.022-.838.09-1.192.32l-1.792 1.161a2 2 0 0 1-2.176 0l-1.792-1.162a1.999 1.999 0 0 0-1.192-.32l-2.133.111a2 2 0 0 1-1.885-1.088l-.97-1.902a2 2 0 0 0-.873-.873l-1.902-.97a2 2 0 0 1-1.088-1.885l.11-2.133a2 2 0 0 0-.32-1.192L.707 16.088a2 2 0 0 1 0-2.176l1.162-1.792a2 2 0 0 0 .32-1.192l-.111-2.133A2 2 0 0 1 3.165 6.91l1.902-.97a2 2 0 0 0 .873-.873l.97-1.902a2 2 0 0 1 1.885-1.088l2.133.11a2 2 0 0 0 1.192-.32L13.912.707Z"></path>
3                    <path fill="var(--color-light)" d="M14.524 8.964a.5.5 0 0 1 .952 0l1.096 3.373a.5.5 0 0 0 .475.345h3.547a.5.5 0 0 1 .294.905l-2.87 2.085a.5.5 0 0 0-.181.559l1.096 3.373a.5.5 0 0 1-.77.56l-2.87-2.086a.5.5 0 0 0-.587 0l-2.87 2.085a.5.5 0 0 1-.769-.559l1.096-3.373a.5.5 0 0 0-.181-.56l-2.87-2.084a.5.5 0 0 1 .294-.905h3.547a.5.5 0 0 0 .475-.345l1.096-3.373Z"></path>
4                    <rect width="21" height="21" x="4.5" y="4.5" stroke="var(--color-light)" stroke-width="1.5" rx="10.5"></rect>
5                    </svg>`;if(s.roles?.length>0)for(let u=0;u<s.roles.length;u++)s.roles[u]==="Premium"&&(o=`<div class="badge" data-type="icon">${l}<span>Premium</span></div>`);if(s.sponsors?.length>0){r+="<span>Sponsored by ";for(let u=0;u<s.sponsors.length;u++)r+=`${s.sponsors[u]}`,u!==s.sponsors.length-1&&(r+=", ");r+="</span>"}if(s.cpe?.length>0){n+="<span>CPE Credits: ";for(let u=0;u<s.cpe.length;u++)s.cpe[u]&&(n+=`${s.cpe[u].toUpperCase()}`),u!==s.cpe.length-1&&(n+=", ");n+="</span>"}let c=_a.find(u=>s._type===u.handle||s.type===u.handle);t+=`<a href="/${s.path}/?pos=${i+1}${e?"&qID="+e:""}" class="card">
6      <div class="card__copy">
7        <div class="card__central flow">
8          <h3 class="card__hed">${s.title}</h3>
9          <div class="card__meta">
10            ${o}
11            <div class="card__tags">
12            ${c?`<span style="text-transform: capitalize"><strong>${c.name}</strong></span>`:""}
13            ${r}
14            ${n}
15            </div>
16          </div>
17        </div>
18      </div>
19    </a>`}),t}});var Fa=ms((Ei,Ti)=>{(function(a,e){typeof Ei=="object"&&typeof Ti<"u"?Ti.exports=e():typeof define=="function"&&define.amd?define(e):(a=a||self).algoliasearch=e()})(Ei,function(){"use strict";function a(v,S,E){return S in v?Object.defineProperty(v,S,{value:E,enumerable:!0,configurable:!0,writable:!0}):v[S]=E,v}function e(v,S){var E=Object.keys(v);if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(v);S&&(x=x.filter(function(R){return Object.getOwnPropertyDescriptor(v,R).enumerable})),E.push.apply(E,x)}return E}function t(v){for(var S=1;S<arguments.length;S++){var E=arguments[S]!=null?arguments[S]:{};
19S%2?e(Object(E),!0).forEach(function(x){a(v,x,E[x])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(E)):e(Object(E)).forEach(function(x){Object.defineProperty(v,x,Object.getOwnPropertyDescriptor(E,x))})}return v}function s(v,S){if(v==null)return{};var E,x,R=function(Y,q){if(Y==null)return{};var V,ee,z={},de=Object.keys(Y);for(ee=0;ee<de.length;ee++)V=de[ee],q.indexOf(V)>=0||(z[V]=Y[V]);return z}(v,S);if(Object.getOwnPropertySymbols){var G=Object.getOwnPropertySymbols(v);for(x=0;x<G.length;x++)E=G[x],S.indexOf(E)>=0||Object.prototype.propertyIsEnumerable.call(v,E)&&(R[E]=v[E])}return R}function i(v,S){return function(E){if(Array.isArray(E))return E}(v)||function(E,x){if(Symbol.iterator in Object(E)||Object.prototype.toString.call(E)==="[object Arguments]"){var R=[],G=!0,Y=!1,q=void 0;try{for(var V,ee=E[Symbol.iterator]();!(G=(V=ee.next()).done)&&(R.push(V.value),!x||R.length!==x);G=!0);}catch(z){Y=!0,q=z}finally{try{G||ee.return==null||ee.return()}finally{if(Y)throw q}}return R}}(v,S)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function r(v){return function(S){if(Array.isArray(S)){for(var E=0,x=new Array(S.length);E<S.length;E++)x[E]=S[E];return x}}(v)||function(S){if(Symbol.iterator in Object(S)||Object.prototype.toString.call(S)==="[object Arguments]")return Array.from(S)}(v)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function n(v){var S,E="algoliasearch-client-js-".concat(v.key),x=function(){return S===void 0&&(S=v.localStorage||window.localStorage),S},R=function(){return JSON.parse(x().getItem(E)||"{}")},G=function(q){x().setItem(E,JSON.stringify(q))},Y=function(){var q=v.timeToLive?1e3*v.timeToLive:null,V=R(),ee=Object.fromEntries(Object.entries(V).filter(function(de){return i(de,2)[1].timestamp!==void 0}));if(G(ee),q){var z=Object.fromEntries(Object.entries(ee).filter(function(de){var ue=i(de,2)[1],pe
19=new Date().getTime();return!(ue.timestamp+q<pe)}));G(z)}};return{get:function(q,V){var ee=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){Y();var z=JSON.stringify(q);return R()[z]}).then(function(z){return Promise.all([z?z.value:V(),z!==void 0])}).then(function(z){var de=i(z,2),ue=de[0],pe=de[1];return Promise.all([ue,pe||ee.miss(ue)])}).then(function(z){return i(z,1)[0]})},set:function(q,V){return Promise.resolve().then(function(){var ee=R();return ee[JSON.stringify(q)]={timestamp:new Date().getTime(),value:V},x().setItem(E,JSON.stringify(ee)),V})},delete:function(q){return Promise.resolve().then(function(){var V=R();delete V[JSON.stringify(q)],x().setItem(E,JSON.stringify(V))})},clear:function(){return Promise.resolve().then(function(){x().removeItem(E)})}}}function o(v){var S=r(v.caches),E=S.shift();return E===void 0?{get:function(x,R){var G=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},Y=R();return Y.then(function(q){return Promise.all([q,G.miss(q)])}).then(function(q){return i(q,1)[0]})},set:function(x,R){return Promise.resolve(R)},delete:function(x){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(x,R){var G=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return E.get(x,R,G).catch(function(){return o({caches:S}).get(x,R,G)})}
19,set:function(x,R){return E.set(x,R).catch(function(){return o({caches:S}).set(x,R)})},delete:function(x){return E.delete(x).catch(function(){return o({caches:S}).delete(x)})},clear:function(){return E.clear().catch(function(){return o({caches:S}).clear()})}}}function l(){var v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},S={};return{get:function(E,x){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},G=JSON.stringify(E);if(G in S)return Promise.resolve(v.serializable?JSON.parse(S[G]):S[G]);var Y=x(),q=R&&R.miss||function(){return Promise.resolve()};return Y.then(function(V){return q(V)}).then(function(){return Y})},set:function(E,x){return S[JSON.stringify(E)]=v.serializable?JSON.stringify(x):x,Promise.resolve(x)},delete:function(E){return delete S[JSON.stringify(E)],Promise.resolve()},clear:function(){return S={},Promise.resolve()}}}function c(v,S,E){var x={"x-algolia-api-key":E,"x-algolia-application-id":S};return{headers:function(){return v===g.WithinHeaders?x:{}},queryParameters:function(){return v===g.WithinQueryParameters?x:{}}}}function u(v){var S=0;return v(function E(){return S++,new Promise(function(x){setTimeout(function(){x(v(E))},Math.min(100*S,1e3))})})}function d(v){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(E,x){return Promise.resolve()};return Object.assign(v,{wait:function(E){return d(v.then(function(x){return Promise.all([S(x,E),x])}).then(function(x){return x[1]}))}})}function h(v){for(var S=v.length-1;S>0;S--){var E=Math.floor(Math.random()*(S+1)),x=v[S];v[S]=v[E],v[E]=x}return v}function m(v,S){return S&&Object.keys(S).forEach(function(E){v[E]=S[E](v)}),v}function f(v){for(var S=arguments.length,E=new Array(S>1?S-1:0),x=1;x<S;x++)E[x-1]=arguments[x];var R=0;return v.replace(/%s/g,function(){return encodeURIComponent(E[R++])})}var g={WithinQueryParameters:0,WithinHeaders:1};function y(v,S){var E=v||{},x=E.data||{};
19return Object.keys(E).forEach(function(R){["timeout","headers","queryParameters","data","cacheable"].indexOf(R)===-1&&(x[R]=E[R])}),{data:Object.entries(x).length>0?x:void 0,timeout:E.timeout||S,headers:E.headers||{},queryParameters:E.queryParameters||{},cacheable:E.cacheable}}var T={Read:1,Write:2,Any:3},b=1,A=2,_=3;function L(v){var S=arguments.length>1&&arguments[1]!==void 0?arguments[1]:b;return t(t({},v),{},{status:S,lastUpdate:Date.now()})}function U(v){return typeof v=="string"?{protocol:"https",url:v,accept:T.Any}:{protocol:v.protocol||"https",url:v.url,accept:v.accept||T.Any}}var C="DELETE",M="GET",N="POST",F="PUT";function H(v,S){return Promise.all(S.map(function(E){return v.get(E,function(){return Promise.resolve(L(E))})})).then(function(E){var x=E.filter(function(Y){return function(q){return q.status===b||Date.now()-q.lastUpdate>12e4}(Y)}),R=E.filter(function(Y){return function(q){return q.status===_&&Date.now()-q.lastUpdate<=12e4}(Y)}),G=[].concat(r(x),r(R));return{getTimeout:function(Y,q){return(R.length===0&&Y===0?1:R.length+3+Y)*q},statelessHosts:G.length>0?G.map(function(Y){return U(Y)}):S}})}function ce(v,S,E,x){var R=[],G=function(ue,pe){if(!(ue.method===M||ue.data===void 0&&pe.data===void 0)){var me=Array.isArray(ue.data)?ue.data:t(t({},ue.data),pe.data);return JSON.stringify(me)}}(E,x),Y=function(ue,pe){var me=t(t({},ue.headers),pe.headers),Ae={};return Object.keys(me).forEach(function(Ce){var Ke=me[Ce];Ae[Ce.toLowerCase()]=Ke}),Ae}(v,x),q=E.method,V=E.method!==M?{}:t(t({},E.data),x.data),ee=t(t(t({"x-algolia-agent":v.userAgent.value},v.queryParameters),V),x.queryParameters),z=0,de=function ue(pe,me){var Ae=pe.pop();if(Ae===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, please reach out to the Algolia Support team: https://alg.li/support .",transporterStackTrace:fe(R)};var Ce={data:G,headers:Y,method:q,url:ae(Ae,E.path,ee),connectTimeout:me(z,v.timeouts.connect),responseTimeout:me(z,x.timeout)},Ke=function(Ve){var Ge={request:Ce,response:Ve,host:Ae,triesLeft:pe.length};return R.push(Ge),Ge},Xt={onSuccess:function(Ve){return function(Ge){try{return JSON.parse(Ge.content)}catch(Rt){throw function(St,Nt){return{name:"DeserializationError",message:St,response:Nt}}(Rt.message,Ge)}}(Ve)},onRetry:function(Ve){var Ge=Ke(Ve);return Ve.isTimedOut&&z++,Promise.all([v.logger.info("Retryable failure",ge(Ge)),v.hostsCache.set(Ae,L(Ae,Ve.isTimedOut?_:A))]).then(function(){return ue(pe,me)})},onFail:function(Ve){throw Ke(Ve),function(Ge,Rt){var St=Ge.content,Nt=Ge.status,Jt=St;try{Jt=JSON.parse(St).message}catch{}return function(fs,fi,Gc){return{name:"ApiError",message:fs,status:fi,transporterStackTrace:Gc}}(Jt,Nt,Rt)}(Ve,fe(R))}};return v.requester.send(Ce).then(function(Ve){return function(Ge,Rt){return function(St){var Nt=St.status;return St.isTimedOut||function(Jt){var fs=Jt.isTimedOut,fi=Jt.status;return!fs&&~~fi==0}(St)||~~(Nt/100)!=2&&~~(Nt/100)!=4}(Ge)?Rt.onRetry(Ge):~~(Ge.status/100)==2?Rt.onSuccess(Ge):Rt.onFail(Ge)}(Ve,Xt)})};return H(v.hostsCache,S).then(function(ue){return de(r(ue.statelessHosts).reverse(),ue.getTimeout)})}function W(v){var S=v.hostsCache,E=v.logger,x=v.requester,R=v.requestsCache,G=v.responsesCache,Y=v.timeouts,q=v.userAgent,V=v.hosts,ee=v.queryParameters,z={hostsCache:S,logger:E,requester:x,requestsCache:R,responsesCache:G,timeouts:Y,userAgent:q,headers:v.headers,queryParameters:ee,hosts:V.map(function(de){return U(de)}),read:function(de,ue){var pe=y(ue,z.timeouts.read),me=function(){return ce(z,z.hosts.filter(function(Ce){return(Ce.accept&T.Read)!=0}),de,pe)};if((pe.cacheable!==void 0?pe.cacheable:de.cacheable)!==!0)return me();var Ae={request:de,mappedRequestOptions:pe,transporter:{queryParameters:z.queryParameters,headers:z.headers}};return z.responsesCache.get(Ae,function(){return z.requestsCache.get(Ae,function(){return z.requestsCache.set(Ae,me()).then(function(Ce){return Promise.all([z.requestsCache.delete(Ae),Ce])},function(Ce){return Promise.all([z.requestsCache.delete(Ae),Promise.reject(Ce)])}).then(function(Ce){var Ke=i(Ce,2);return Ke[0],Ke[1]})})},{miss:function(Ce){return z.responsesCache.set(Ae,Ce)}})},write:function(de,ue){return ce(z,z.hosts.filter(function(pe){return(pe.accept&T.Write)!=0}),de,y(ue,z.timeouts.write))}};return z}function oe(v){var S={value:"Algolia for JavaScript (".concat(v,")"),add:function(E){var x="; ".concat(E.segment).concat(E.version!==void 0?" (".concat(E.version,")"):"");return S.value.indexOf(x)===-1&&(S.value="".concat(S.value).concat(x)),S}};return S}function ae(v,S,E){var x=se(E),R="".concat(v.protocol,"://").concat(v.url,"/").concat(S.charAt(0)==="/"?S.substr(1):S);return x.length&&(R+="?".concat(x)),R}function se(v){return Object.keys(v).map(function(S){return f("%s=%s",S,(E=v[S],Object.prototype.toString.call(E)==="[object Object]"||Object.prototype.toString.call(E)==="[object Array]"?JSON.stringify(v[S]):v[S]));var E}).join("&")}function fe(v){return v.map(function(S){return ge(S)})}function ge(v){var S=v.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};
19return t(t({},v),{},{request:t(t({},v.request),{},{headers:t(t({},v.request.headers),S)})})}var Q=function(v){return function(S,E){return v.transporter.write({method:N,path:"2/abtests",data:S},E)}},j=function(v){return function(S,E){return v.transporter.write({method:C,path:f("2/abtests/%s",S)},E)}},P=function(v){return function(S,E){return v.transporter.read({method:M,path:f("2/abtests/%s",S)},E)}},k=function(v){return function(S){return v.transporter.read({method:M,path:"2/abtests"},S)}},O=function(v){return function(S,E){return v.transporter.write({method:N,path:f("2/abtests/%s/stop",S)},E)}},B=function(v){return function(S){return v.transporter.read({method:M,path:"1/strategies/personalization"},S)}},K=function(v){return function(S,E){return v.transporter.write({method:N,path:"1/strategies/personalization",data:S},E)}};function J(v){return function S(E){return v.request(E).then(function(x){if(v.batch!==void 0&&v.batch(x.hits),!v.shouldStop(x))return x.cursor?S({cursor:x.cursor}):S({page:(E.page||0)+1})})}({})}var ie=function(v){return function(S,E){var x=E||{},R=x.queryParameters,G=s(x,["queryParameters"]),Y=t({acl:S},R!==void 0?{queryParameters:R}:{});return d(v.transporter.write({method:N,path:"1/keys",data:Y},G),function(q,V){return u(function(ee){return $e(v)(q.key,V).catch(function(z){if(z.status!==404)throw z;return ee()})})})}},te=function(v){return function(S,E,x){var R=y(x);return R.queryParameters["X-Algolia-User-ID"]=S,v.transporter.write({method:N,path:"1/clusters/mapping",data:{cluster:E}},R)}},ve=function(v){return function(S,E,x){return v.transporter.write({method:N,path:"1/clusters/mapping/batch",data:{users:S,cluster:E}},x)}},we=function(v){return function(S,E){return d(v.transporter.write({method:N,path:f("/1/dictionaries/%s/batch",S),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},E),function(x,R){return Ft(v)(x.taskID,R)})}},Se=function(v){return function(S,E,x){return d(v.transporter.write({method:N,path:f("1/indexes/%s/operation",S),data:{operation:"copy",destination:E}},x),function(R,G){return st(v)(S,{methods:{waitTask:ke}}).waitTask(R.taskID,G)})}},De=function(v){return function(S,E,x){return Se(v)(S,E,t(t({},x),{},{scope:[hi.Rules]}))}},Ie=function(v){return function(S,E,x){return Se(v)(S,E,t(t({},x),{},{scope:[hi.Settings]}))}},qe=function(v){return function(S,E,x){return Se(v)(S,E,t(t({},x),{},{scope:[hi.Synonyms]}))}},be=function(v){return function(S,E){return S.method===M?v.transporter.read(S,E):v.transporter.write(S,E)}},Fe=function(v){return function(S,E){return d(v.transporter.write({method:C,path:f("1/keys/%s",S)},E),function(x,R){return u(function(G){return $e(v)(S,R).then(G).catch(function(Y){if(Y.status!==404)throw Y})})})}},tt=function(v){return function(S,E,x){var R=E.map(function(G){return{action:"deleteEntry",body:{objectID:G}}});return d(v.transporter.write({method:N,path:f("/1/dictionaries/%s/batch",S),data:{clearExistingDictionaryEntries:!1,requests:R}},x),function(G,Y){return Ft(v)(G.taskID,Y)})}},$e=function(v){return function(S,E){return v.transporter.read({method:M,path:f("1/keys/%s",S)},E)}},It=function(v){return function(S,E){return v.transporter.read({method:M,path:f("1/task/%s",S.toString())},E)}},_e=function(v){return function(S){return v.transporter.read({method:M,path:"/1/dictionaries/*/settings"},S)}},Te=function(v){return function(S){return v.transporter.read({method:M,path:"1/logs"},S)}},Xe=function(v){return function(S){return v.transporter.read({method:M,path:"1/clusters/mapping/top"},S)}},ot=function(v){return function(S,E){return v.transporter.read({method:M,path:f("1/clusters/mapping/%s",S)},E)}},vt=function(v){return function(S){var E=S||{},x=E.retrieveMappings,R=s(E,["retrieveMappings"]);return x===!0&&(R.getClusters=!0),v.transporter.read({method:M,path:"1/clusters/mapping/pending"},R)}},st=function(v){return function(S){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},x={transporter:v.transporter,appId:v.appId,indexName:S};return m(x,E.methods)}},Ot=function(v){return function(S){return v.transporter.read({method:M,path:"1/keys"},S)}},zt=function(v){return function(S){return v.transporter.read({method:M,path:"1/clusters"},S)}},oi=function(v){return function(S){return v.transporter.read({method:M,path:"1/indexes"},S)}},Yl=function(v){return function(S){return v.transporter.read({method:M,path:"1/clusters/mapping"},S)}},zl=function(v){return function(S,E,x){return d(v.transporter.write({method:N,path:f("1/indexes/%s/operation",S),data:{operation:"move",destination:E}},x),function(R,G){return st(v)(S,{methods:{waitTask:ke}}).waitTask(R.taskID,G)}
19)}},Xl=function(v){return function(S,E){return d(v.transporter.write({method:N,path:"1/indexes/*/batch",data:{requests:S}},E),function(x,R){return Promise.all(Object.keys(x.taskID).map(function(G){return st(v)(G,{methods:{waitTask:ke}}).waitTask(x.taskID[G],R)}))})}},Jl=function(v){return function(S,E){return v.transporter.read({method:N,path:"1/indexes/*/objects",data:{requests:S}},E)}},pa=function(v){return function(S,E){var x=S.map(function(R){return t(t({},R),{},{params:se(R.params||{})})});return v.transporter.read({method:N,path:"1/indexes/*/queries",data:{requests:x},cacheable:!0},E)}},ya=function(v){return function(S,E){return Promise.all(S.map(function(x){var R=x.params,G=R.facetName,Y=R.facetQuery,q=s(R,["facetName","facetQuery"]);return st(v)(x.indexName,{methods:{searchForFacetValues:ba}}).searchForFacetValues(G,Y,t(t({},E),q))}))}},Ql=function(v){return function(S,E){var x=y(E);return x.queryParameters["X-Algolia-User-ID"]=S,v.transporter.write({method:C,path:"1/clusters/mapping"},x)}},Zl=function(v){return function(S,E,x){var R=E.map(function(G){return{action:"addEntry",body:G}});return d(v.transporter.write({method:N,path:f("/1/dictionaries/%s/batch",S),data:{clearExistingDictionaryEntries:!0,requests:R}},x),function(G,Y){return Ft(v)(G.taskID,Y)})}},ec=function(v){return function(S,E){return d(v.transporter.write({method:N,path:f("1/keys/%s/restore",S)},E),function(x,R){return u(function(G){return $e(v)(S,R).catch(function(Y){if(Y.status!==404)throw Y;return G()})})})}},tc=function(v){return function(S,E,x){var R=E.map(function(G){return{action:"addEntry",body:G}});return d(v.transporter.write({method:N,path:f("/1/dictionaries/%s/batch",S),data:{clearExistingDictionaryEntries:!1,requests:R}},x),function(G,Y){return Ft(v)(G.taskID,Y)})}},sc=function(v){return function(S,E,x){return v.transporter.read({method:N,path:f("/1/dictionaries/%s/search",S),data:{query:E},cacheable:!0},x)}},ic=function(v){return function(S,E){return v.transporter.read({method:N,path:"1/clusters/mapping/search",data:{query:S}},E)}},rc=function(v){return function(S,E){return d(v.transporter.write({method:F,path:"/1/dictionaries/*/settings",data:S},E),function(x,R){return Ft(v)(x.taskID,R)})}},nc=function(v){return function(S,E){var x=Object.assign({},E),R=E||{},G=R.queryParameters,Y=s(R,["queryParameters"]),q=G?{queryParameters:G}:{},V=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"];return d(v.transporter.write({method:F,path:f("1/keys/%s",S),data:q},Y),function(ee,z){return u(function(de){return $e(v)(S,z).then(function(ue){return function(pe){return Object.keys(x).filter(function(me){return V.indexOf(me)!==-1}).every(function(me){if(Array.isArray(pe[me])&&Array.isArray(x[me])){var Ae=pe[me];return Ae.length===x[me].length&&Ae.every(function(Ce,Ke){return Ce===x[me][Ke]})}return pe[me]===x[me]})}(ue)?Promise.resolve():de()})})})}},Ft=function(v){return function(S,E){return u(function(x){return It(v)(S,E).then(function(R){return R.status!=="published"?x():void 0})})}},va=function(v){return function(S,E){return d(v.transporter.write({method:N,path:f("1/indexes/%s/batch",v.indexName),data:{requests:S}},E),function(x,R){return ke(v)(x.taskID,R)})}},ac=function(v){return function(S){return J(t(t({shouldStop:function(E){return E.cursor===void 0}},S),{},{request:function(E){return v.transporter.read({method:N,path:f("1/indexes/%s/browse",v.indexName),data:E},S)}}))}},oc=function(v){return function(S){var E=t({hitsPerPage:1e3},S);return J(t(t({shouldStop:function(x){return x.hits.length<E.hitsPerPage}},E),{},{request:function(x){return Aa(v)("",t(t({},E),x)).then(function(R){return t(t({},R),{},{hits:R.hits.map(function(G){return delete G._highlightResult,G})})})}}))}},lc=function(v){return function(S){var E=t({hitsPerPage:1e3},S);return J(t(t({shouldStop:function(x){return x.hits.length<E.hitsPerPage}},E),{},{request:function(x){return La(v)("",t(t({},E),x)).then(function(R){return t(t({},R),{},{hits:R.hits.map(function(G){return delete G._highlightResult,G})})})}}))}},li=function(v){return function(S,E,x){var R=x||{},G=R.batchSize,Y=s(R,["batchSize"]),q={taskIDs:[],objectIDs:[]};return d(function V(){var ee,z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,de=[];for(ee=z;ee<S.length&&(de.push(S[ee]),de.length!==(G||1e3));ee++);return de.length===0?Promise.resolve(q):va(v)(de.map(function(ue){return{action:E,body:ue}}),Y).then(function(ue){return q.objectIDs=q.objectIDs.concat(ue.objectIDs),q.taskIDs.push(ue.taskID),ee++,V(ee)})}(),function(V,ee){return Promise.all(V.taskIDs.map(function(z){return ke(v)(z,ee)}))})}},cc=function(v){return function(S){return d(v.transporter.write({method:N,path:f("1/indexes/%s/clear",v.indexName)},S),function(E,x){return ke(v)(E.taskID,x)})}},uc=function(v){return function(S){var E=S||{},x=E.forwardToReplicas,R=y(s(E,["forwardToReplicas"]));return x&&(R.queryParameters.forwardToReplicas=1),d(v.transporter.write({method:N,path:f("1/indexes/%s/rules/clear",v.indexName)},R),function(G,Y){return ke(v)(G.taskID,Y)})}},dc=function(v){return function(S){var E=S||{},x=E.forwardToReplicas,R=y(s(E,["forwardToReplicas"]));return x&&(R.queryParameters.forwardToReplicas=1),d(v.transporter.write({method:N,path:f("1/indexes/%s/synonyms/clear",v.indexName)},R),function(G,Y){return ke(v)(G.taskID,Y)})}},hc=function(v){return function(S,E){return d(v.transporter.write({method:N,path:f("1/indexes/%s/deleteByQuery",v.indexName),data:S},E),function(x,R){return ke(v)(x.taskID,R)})}},fc=function(v){return function(S){return d(v.transporter.write({method:C,path:f("1/indexes/%s",v.indexName)},S),function(E,x){return ke(v)(E.taskID,x)})}},mc=function(v){return function(S,E){return d(Sa(v)([S],E).then(function(x){return{taskID:x.taskIDs[0]}}),function(x,R){return ke(v)(x.taskID,R)})}},Sa=function(v){return function(S,E){var x=S.map(function(R){return{objectID:R}});return li(v)(x,Mt.DeleteObject,E)}},gc=function(v){return function(S,E){var x=E||{},R=x.forwardToReplicas,G=y(s(x,["forwardToReplicas"]));return R&&(G.queryParameters.forwardToReplicas=1),d(v.transporter.write({method:C,path:f("1/indexes/%s/rules/%s",v.indexName,S)},G),function(Y,q){return ke(v)(Y.taskID,q)})}},pc=function(v){return function(S,E){var x=E||{},R=x.forwardToReplicas,G=y(s(x,["forwardToReplicas"]));return R&&(G.queryParameters.forwardToReplicas=1),d(v.transporter.write({method:C,path:f("1/indexes/%s/synonyms/%s",v.indexName,S)},G),function(Y,q){return ke(v)(Y.taskID,q)})}},yc=function(v){return function(S){return Ea(v)(S).then(function(){return!0}).catch(function(E){if(E.status!==404)throw E;return!1})}},vc=function(v){return function(S,E,x){return v.transporter.read({method:N,path:f("1/answers/%s/prediction",v.indexName),data:{query:S,queryLanguages:E},cacheable:!0},x)}},Sc=function(v){return function(S,E){var x=E||{},R=x.query,G=x.paginate,Y=s(x,["query","paginate"]),q=0;
19return function V(){return xa(v)(R||"",t(t({},Y),{},{page:q})).then(function(ee){for(var z=0,de=Object.entries(ee.hits);z<de.length;z++){var ue=i(de[z],2),pe=ue[0],me=ue[1];if(S(me))return{object:me,position:parseInt(pe,10),page:q}}if(q++,G===!1||q>=ee.nbPages)throw{name:"ObjectNotFoundError",message:"Object not found."};return V()})}()}},Ec=function(v){return function(S,E){return v.transporter.read({method:M,path:f("1/indexes/%s/%s",v.indexName,S)},E)}},Tc=function(){return function(v,S){for(var E=0,x=Object.entries(v.hits);E<x.length;E++){var R=i(x[E],2),G=R[0];if(R[1].objectID===S)return parseInt(G,10)}return-1}},xc=function(v){return function(S,E){var x=E||{},R=x.attributesToRetrieve,G=s(x,["attributesToRetrieve"]),Y=S.map(function(q){return t({indexName:v.indexName,objectID:q},R?{attributesToRetrieve:R}:{})});return v.transporter.read({method:N,path:"1/indexes/*/objects",data:{requests:Y}},G)}},bc=function(v){return function(S,E){return v.transporter.read({method:M,path:f("1/indexes/%s/rules/%s",v.indexName,S)},E)}},Ea=function(v){return function(S){return v.transporter.read({method:M,path:f("1/indexes/%s/settings",v.indexName),data:{getVersion:2}},S)}},Ac=function(v){return function(S,E){return v.transporter.read({method:M,path:f("1/indexes/%s/synonyms/%s",v.indexName,S)},E)}},Lc=function(v){return function(S,E){return d(Ta(v)([S],E).then(function(x){return{objectID:x.objectIDs[0],taskID:x.taskIDs[0]}}),function(x,R){return ke(v)(x.taskID,R)})}},Ta=function(v){return function(S,E){var x=E||{},R=x.createIfNotExists,G=s(x,["createIfNotExists"]),Y=R?Mt.PartialUpdateObject:Mt.PartialUpdateObjectNoCreate;return li(v)(S,Y,G)}},Ic=function(v){return function(S,E){var x=E||{},R=x.safe,G=x.autoGenerateObjectIDIfNotExist,Y=x.batchSize,q=s(x,["safe","autoGenerateObjectIDIfNotExist","batchSize"]),V=function(me,Ae,Ce,Ke){return d(v.transporter.write({method:N,path:f("1/indexes/%s/operation",me),data:{operation:Ce,destination:Ae}},Ke),function(Xt,Ve){return ke(v)(Xt.taskID,Ve)})},ee=Math.random().toString(36).substring(7),z="".concat(v.indexName,"_tmp_").concat(ee),de=ci({appId:v.appId,transporter:v.transporter,indexName:z}),ue=[],pe=V(v.indexName,z,"copy",t(t({},q),{},{scope:["settings","synonyms","rules"]}));return ue.push(pe),d((R?pe.wait(q):pe).then(function(){var me=de(S,t(t({},q),{},{autoGenerateObjectIDIfNotExist:G,batchSize:Y}));return ue.push(me),R?me.wait(q):me}).then(function(){var me=V(z,v.indexName,"move",q);return ue.push(me),R?me.wait(q):me}).then(function(){return Promise.all(ue)}).then(function(me){var Ae=i(me,3),Ce=Ae[0],Ke=Ae[1],Xt=Ae[2];return{objectIDs:Ke.objectIDs,taskIDs:[Ce.taskID].concat(r(Ke.taskIDs),[Xt.taskID])}}),function(me,Ae){return Promise.all(ue.map(function(Ce){return Ce.wait(Ae)}))})}},Rc=function(v){return function(S,E){return ui(v)(S,t(t({},E),{},{clearExistingRules:!0}))}},wc=function(v){return function(S,E){return di(v)(S,t(t({},E),{},{clearExistingSynonyms:!0}))}},Cc=function(v){return function(S,E){return d(ci(v)([S],E).then(function(x){return{objectID:x.objectIDs[0],taskID:x.taskIDs[0]}}),function(x,R){return ke(v)(x.taskID,R)})}},ci=function(v){return function(S,E){var x=E||{},R=x.autoGenerateObjectIDIfNotExist,G=s(x,["autoGenerateObjectIDIfNotExist"]),Y=R?Mt.AddObject:Mt.UpdateObject;if(Y===Mt.UpdateObject){var q=!0,V=!1,ee=void 0;try{for(var z,de=S[Symbol.iterator]();!(q=(z=de.next()).done);q=!0)if(z.value.objectID===void 0)return d(Promise.reject({name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}))}catch(ue){V=!0,ee=ue}finally{try{q||de.return==null||de.return()}finally{if(V)throw ee}}}return li(v)(S,Y,G)}},Dc=function(v){return function(S,E){return ui(v)([S],E)}},ui=function(v){return function(S,E){var x=E||{},R=x.forwardToReplicas,G=x.clearExistingRules,Y=y(s(x,["forwardToReplicas","clearExistingRules"]));return R&&(Y.queryParameters.forwardToReplicas=1),G&&(Y.queryParameters.clearExistingRules=1),d(v.transporter.write({method:N,path:f("1/indexes/%s/rules/batch",v.indexName),data:S},Y),function(q,V){return ke(v)(q.taskID,V)})}},_c=function(v){return function(S,E){return di(v)([S],E)}},di=function(v){return function(S,E){var x=E||{},R=x.forwardToReplicas,G=x.clearExistingSynonyms,Y=x.replaceExistingSynonyms,q=y(s(x,["forwardToReplicas","clearExistingSynonyms","replaceExistingSynonyms"]));return R&&(q.queryParameters.forwardToReplicas=1),(Y||G)&&(q.queryParameters.replaceExistingSynonyms=1),d(v.transporter.write({method:N,path:f("1/indexes/%s/synonyms/batch",v.indexName),data:S},q),function(V,ee){return ke(v)(V.taskID,ee)})}},xa=function(v){return function(S,E){return v.transporter.read({method:N,path:f("1/indexes/%s/query",v.indexName),data:{query:S},cacheable:!0},E)}},ba=function(v){return function(S,E,x){return v.transporter.read({method:N,path:f("1/indexes/%s/facets/%s/query",v.indexName,S),data:{facetQuery:E},cacheable:!0},x)}},Aa=function(v){return function(S,E){return v.transporter.read({method:N,path:f("1/indexes/%s/rules/search",v.indexName),data:{query:S}},E)}},La=function(v){return function(S,E){return v.transporter.read({method:N,path:f("1/indexes/%s/synonyms/search",v.indexName),data:{query:S}},E)}},kc=function(v){return function(S,E){var x=E||{},R=x.forwardToReplicas,G=y(s(x,["forwardToReplicas"]));return R&&(G.queryParameters.forwardToReplicas=1),d(v.transporter.write({method:F,path:f("1/indexes/%s/settings",v.indexName),data:S},G),function(Y,q){return ke(v)(Y.taskID,q)})}},ke=function(v){return function(S,E){return u(function(x){return function(R){return function(G,Y){return R.transporter.read({method:M,path:f("1/indexes/%s/task/%s",R.indexName,G.toString())},Y)}}(v)(S,E).then(function(R){return R.status!=="published"?x():void 0})})}}
19,Mt={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},hi={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},Pc=1,Oc=2,Fc=3,hs=function(v){return function(S,E){var x=S.map(function(R){return t(t({},R),{},{threshold:R.threshold||0})});return v.transporter.read({method:N,path:"1/indexes/*/recommendations",data:{requests:x},cacheable:!0},E)}},Mc=function(v){return function(S,E){return hs(v)(S.map(function(x){return t(t({},x),{},{fallbackParameters:{},model:"bought-together"})}),E)}},Nc=function(v){return function(S,E){return hs(v)(S.map(function(x){return t(t({},x),{},{model:"related-products"})}),E)}},Uc=function(v){return function(S,E){var x=S.map(function(R){return t(t({},R),{},{model:"trending-facets",threshold:R.threshold||0})});return v.transporter.read({method:N,path:"1/indexes/*/recommendations",data:{requests:x},cacheable:!0},E)}},Bc=function(v){return function(S,E){var x=S.map(function(R){return t(t({},R),{},{model:"trending-items",threshold:R.threshold||0})});return v.transporter.read({method:N,path:"1/indexes/*/recommendations",data:{requests:x},cacheable:!0},E)}},$c=function(v){return function(S,E){return hs(v)(S.map(function(x){return t(t({},x),{},{model:"looking-similar"})}),E)}},qc=function(v){return function(S,E){var x=S.map(function(R){return t(t({},R),{},{model:"recommended-for-you",threshold:R.threshold||0})});return v.transporter.read({method:N,path:"1/indexes/*/recommendations",data:{requests:x},cacheable:!0},E)}};function Ia(v,S,E){var x,R={appId:v,apiKey:S,timeouts:{connect:1,read:2,write:30},requester:{send:function(q){return new Promise(function(V){var ee=new XMLHttpRequest;ee.open(q.method,q.url,!0),Object.keys(q.headers).forEach(function(pe){return ee.setRequestHeader(pe,q.headers[pe])});var z,de=function(pe,me){return setTimeout(function(){ee.abort(),V({status:0,content:me,isTimedOut:!0})},1e3*pe)},ue=de(q.connectTimeout,"Connection timeout");ee.onreadystatechange=function(){ee.readyState>ee.OPENED&&z===void 0&&(clearTimeout(ue),z=de(q.responseTimeout,"Socket timeout"))},ee.onerror=function(){ee.status===0&&(clearTimeout(ue),clearTimeout(z),V({content:ee.responseText||"Network request failed",status:ee.status,isTimedOut:!1}))},ee.onload=function(){clearTimeout(ue),clearTimeout(z),V({content:ee.responseText,status:ee.status,isTimedOut:!1})},ee.send(q.data)})}},logger:(x=Fc,{debug:function(q,V){return Pc>=x&&console.debug(q,V),Promise.resolve()},info:function(q,V){return Oc>=x&&console.info(q,V),Promise.resolve()},error:function(q,V){return console.error(q,V),Promise.resolve()}}),responsesCache:l(),requestsCache:l({serializable:!1}),hostsCache:o({caches:[n({key:"".concat("4.24.0","-").concat(v)}),l()]}),userAgent:oe("4.24.0").add({segment:"Browser"})},G=t(t({},R),E),Y=function(){return function(q){return function(V){var ee=V.region||"us",z=c(g.WithinHeaders,V.appId,V.apiKey),de=W(t(t({hosts:[{url:"personalization.".concat(ee,".algolia.com")}]},V),{},{headers:t(t(t({},z.headers()),{"content-type":"application/json"}),V.headers),queryParameters:t(t({},z.queryParameters()),V.queryParameters)}));return m({appId:V.appId,transporter:de},V.methods)}(t(t(t({},R),q),{},{methods:{getPersonalizationStrategy:B,setPersonalizationStrategy:K}}))}};return function(q){var V=q.appId,ee=c(q.authMode!==void 0?q.authMode:g.WithinHeaders,V,q.apiKey),z=W(t(t({hosts:[{url:"".concat(V,"-dsn.algolia.net"),accept:T.Read},{url:"".concat(V,".algolia.net"),accept:T.Write}].concat(h([{url:"".concat(V,"-1.algolianet.com")},{url:"".concat(V,"-2.algolianet.com")},{url:"".concat(V,"-3.algolianet.com")}]))},q),{},{headers:t(t(t({},ee.headers()),{"content-type":"application/x-www-form-urlencoded"}),q.headers),queryParameters:t(t({},ee.queryParameters()),q.queryParameters)}));return m({transporter:z,appId:V,addAlgoliaAgent:function(de,ue){z.userAgent.add({segment:de,version:ue})},clearCache:function(){return Promise.all([z.requestsCache.clear(),z.responsesCache.clear()]).then(function(){})}},q.methods)}(t(t({},G),{},{methods:{search:pa,searchForFacetValues:ya,multipleBatch:Xl,multipleGetObjects:Jl,multipleQueries:pa,copyIndex:Se,copySettings:Ie,copySynonyms:qe,copyRules:De,moveIndex:zl,listIndices:oi,getLogs:Te,listCluster
19s:zt,multipleSearchForFacetValues:ya,getApiKey:$e,addApiKey:ie,listApiKeys:Ot,updateApiKey:nc,deleteApiKey:Fe,restoreApiKey:ec,assignUserID:te,assignUserIDs:ve,getUserID:ot,searchUserIDs:ic,listUserIDs:Yl,getTopUserIDs:Xe,removeUserID:Ql,hasPendingMappings:vt,clearDictionaryEntries:we,deleteDictionaryEntries:tt,getDictionarySettings:_e,getAppTask:It,replaceDictionaryEntries:Zl,saveDictionaryEntries:tc,searchDictionaryEntries:sc,setDictionarySettings:rc,waitAppTask:Ft,customRequest:be,initIndex:function(q){return function(V){return st(q)(V,{methods:{batch:va,delete:fc,findAnswers:vc,getObject:Ec,getObjects:xc,saveObject:Cc,saveObjects:ci,search:xa,searchForFacetValues:ba,waitTask:ke,setSettings:kc,getSettings:Ea,partialUpdateObject:Lc,partialUpdateObjects:Ta,deleteObject:mc,deleteObjects:Sa,deleteBy:hc,clearObjects:cc,browseObjects:ac,getObjectPosition:Tc,findObject:Sc,exists:yc,saveSynonym:_c,saveSynonyms:di,getSynonym:Ac,searchSynonyms:La,browseSynonyms:lc,deleteSynonym:pc,clearSynonyms:dc,replaceAllObjects:Ic,replaceAllSynonyms:wc,searchRules:Aa,getRule:bc,deleteRule:gc,saveRule:Dc,saveRules:ui,replaceAllRules:Rc,browseRules:oc,clearRules:uc}})}},initAnalytics:function(){return function(q){return function(V){var ee=V.region||"us",z=c(g.WithinHeaders,V.appId,V.apiKey),de=W(t(t({hosts:[{url:"analytics.".concat(ee,".algolia.com")}]},V),{},{headers:t(t(t({},z.headers()),{"content-type":"application/json"}),V.headers),queryParameters:t(t({},z.queryParameters()),V.queryParameters)}));return m({appId:V.appId,transporter:de},V.methods)}(t(t(t({},R),q),{},{methods:{addABTest:Q,getABTest:P,getABTests:k,stopABTest:O,deleteABTest:j}}))}},initPersonalization:Y,initRecommendation:function(){return function(q){return G.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),Y()(q)}},getRecommendations:hs,getFrequentlyBoughtTogether:Mc,getLookingSimilar:$c,getRecommendedForYou:qc,getRelatedProducts:Nc,getTrendingFacets:Uc,getTrendingItems:Bc}}))}return Ia.version="4.24.0",Ia})});function wa(){document.querySelectorAll("details").forEach(e=>{e.addEventListener("toggle",s=>{let i=s.target.querySelector("summary");s.target.querySelectorAll(":not(summary)").forEach(n=>{n.setAttribute("aria-hidden",!s.target.open)}),i.setAttribute("aria-expanded",s.target.open)}),e.addEventListener("keyup",s=>{s.key.toLowerCase()==="escape"&&s.target.closest("[open]").removeAttribute("open")});function t(){if(e.dataset.js==="open-lg"){let s=e.querySelector("summary"),i=e.querySelector(".collapsible__content");window.matchMedia("(min-width: 780px)").matches?(e.open=!0,s.setAttribute("aria-expanded",!0),i.setAttribute("aria-hidden",!1)):(e.open=!1,s.setAttribute("aria-expanded",!1),i.setAttribute("aria-hidden",!0))}}window.addEventListener("load",t),window.addEventListener("resize",t)})}var mi=class extends HTMLElement{constructor(){super(),this.classList.add("expandable-description"),this.button=this.querySelector('[aria-expanded="false"]'),this.button.addEventListener("click",this.expand.bind(this))}expand(){this.button.setAttribute("aria-expanded",!0),this.setAttribute("expanded",!0),typeof clickTracker=="function"&&clickTracker()}};customElements.define("expandable-description",mi);var Pa=Qt(Ca()),Oa=Qt(vi()),Si=class extends HTMLElement{constructor(){super(),(0,Pa.default)(this.dataset.algoliaId,this.dataset.algoliaPublic).getRelatedProducts([{indexName:"Sanity",objectID:this.dataset.objectId,maxRecommendations:3,queryParameters:{facetFilters:["ommitFromEmailRecommendations:-true"]}}]).then(({results:t})=>(0,Oa.default)(t[0].hits)).then(t=>{if(t.length<1)throw new Error("No items to show");let s=this.querySelector("[data-markup-container]");s.innerHTML=t,this.style.display="block"}).catch(t=>{console.log(t),this.style.display="none"})}};customElements.define("product-recommendations",Si);var Na=Qt(Fa()),Ua=Qt(vi());function Ma(a,e){window._user[a]=e}function X(){let a=window._user;return a&&!a.tags&&(a.tags=[]),a}var xi=class extends HTMLElement{constructor(){super();let e=X(),t=new URLSearchParams(location.search),i=(0,Na.default)(this.dataset.algoliaId,this.dataset.algoliaPublic).initIndex("Sanity"),r=e?.sfid,n=t.get("cpe"),o=t.get("topic"),l=t.get("type"),c=t.get("search"),u=t.get("tag"),d=[];if(o&&d.push([`topics:${o}`]),l&&d.push([`type:${l}`]),n){let m=[`cpe:${n}`];n.toLowerCase()!=="nasba"&&m.push("cpe:all"),d.push(m)}let h={};d.length&&(h={...h,facetFilters:d}),r&&(h={...h,userToken:r,enablePersonalization:!0,clickAnalytics:!0}),i.search(c||"",h).then(m=>(0,Ua.default)(m.hits,m.queryID)).then(m=>{let f="No result found",g=this.querySelector("[data-loading-container]"),y=this.querySelector("[data-markup-container]");y.innerHTML=m||f,g.style.display="none",y.style.display="block"}).catch(m=>{console.log(m)})}};customElements.define("search-results",xi);var bi=class extends HTMLElement{constructor(){super(),this.init()}#e=function(e){let t=0,s=0,i="None required - Great job!",r="";e.CPE_Status__c?.toLowerCase()!=="not required"&&e.Program__r.CPE_Required__c>0&&(t=Math.max(e.Program__r.CPE_Required__c-e.CPE_Credits__c,0),s=Math.round(e.CPE_Credits__c/e.Program__r.CPE_Required__c*100),s>=100?i+=" Great job!":i=`Complete ${t} units before ${new Date(e.Expires_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}`,r=`
20            <p class="mt-s">
21            This program requires <strong>${e.Program__r.CPE_Required__c}</strong> CPE units to be fulfilled between 
22            ${new Date(e.CPE_Period_Start__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})} and ${new Date(e.Expires_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}. 
23            So far, you have completed ${e.CPE_Credits__c} units (<a href="#cpe-anchor">see transcript</a>).
24            </p>
25        `);let n=`
26            <p class="mt-s">
27                You were originally certified on 
28                <strong>${new Date(e.Certified_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}</strong> 
29                and as of 
30                ${new Date().toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}  
31                you have been certified for 
32                <strong>
33                ${Math.floor((new Date().getTime()-new Date(e.Certified_On__c).getTime())/1e3/60/60/24)} 
34                </strong>
35                days.
36            </p>
37            <p class="mt-s">
38                Your certificate is set to renew automatically on 
39                <strong>
40                ${new Date(e.Expires_On__c).toLocaleDateString()}
41                </strong>.
42            </p>
43            
44            ${r}
45
46
47            <dl class="mt-s">
48                <dt>STATUS</dt>
49                <dd><strong class="text-tertiary-shade">ACTIVE</strong></dd>`;return s>0&&(n+=`
50                <dt>PROGRESS</dt>
51                <dd>${s}%</dd> `),n+=`
52                <dt>ACTION</dt>
53                <dd>${i}</dd>
54            </dl>`,n};#t=function(e){let t=new Date(e.Expires_On__c);t.setDate(t.getDate()+90);let s=new Date(e.Expires_On__c);s.setFullYear(s.getFullYear()+1);let i=Math.max(e.Program__r.CPE_Required__c-e.CPE_Credits__c,0),r=Math.round(e.CPE_Credits__c/e.Program__r.CPE_Required__c*100);return`
55            <p class="mt-s">
56            You were originally certified on <strong>${new Date(e.Certified_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}</strong> 
57            but your certification has been 
58            <strong class='text-primary'>deactivated because you failed to meet the CPE requirements before 
59            ${new Date(e.Expires_On__c).toLocaleDateString()}</strong>.
60            </p>
61
62            <p class="mt-s">
63            We understand that life can get busy so provide a generous grace peri
63od of 3 months 
64            to get back into compliance with your CPE requirements. If you complete your CPE units 
65            before <strong>${t.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}</strong> then your certificate will be 
66            reactivated, extended and set to renew automatically on <strong>${s.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}</strong>. 
67            </p>
68
69            <p class="mt-s">
70            This program requires <strong>${e.Program__r.CPE_Required__c}</strong> CPE units to be fulfilled between 
71            ${new Date(e.CPE_Period_Start__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})} and ${new Date(e.Expires_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}. 
72            So far, you have completed ${e.CPE_Credits__c} units 
73            (<a href="#cpe-anchor">see transcript</a>).
74            </p>
75
76            <dl class="mt-s text-primary">
77                <dt>STATUS</dt>
78                <dd><strong>INACTIVE</strong></dt>
79                <dt>ACTION</dt>
80                <dd><strong>Complete ${i} units before ${t.toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}</strong></dt>
81                <dt>PROGRESS</dt>
82                <dd><strong>${r}%</strong></dd>        
83            </dl>
84        `};renderCertifications=async function(e=[],t=[]){let s=t.reduce((o,l)=>(o[l.group_id]=l,o),{}),i=this.querySelector("#certificate-container"),r=this.querySelector("#certification-template").content,n=i.querySelector("#certificate-empty-state");this.querySelector("#loader").style.display="none",e.length||(n.style.display="block"),e.forEach(o=>{let l=r.cloneNode(!0),c=s[o.Accredible_Group_ID__c];if(l.querySelector("h3").textContent=o.Program__r.Name,c){let m=`/.netlify/functions/sso-certs?group_id=${encodeURIComponent(o.Accredible_Group_ID__c)}`;l.querySelector("img").setAttribute("src",c.badge.image.preview),l.querySelector("a[name=share]").setAttribute("href",m),l.querySelector("a[name=manage]").setAttribute("href",m)}else l.querySelector("img").remove(),l.querySelector("a[name=share]").remove(),l.querySelector("a[name=manage]").remove();let u=l.querySelector("a[name=submit-cpe]"),d=l.querySelector("a[name=browse-cpe]");if(o.CPE_Status__c?.toLowerCase()!=="not required"){let{email:m,name:f,sfid:g}=X(),y=u.getAttribute("href").replace("#sfid#",g).replace("#email#",m).replace("#name#",f).replace("#program#",o.Program__r.Alias__c);u.setAttribute("href",y),d.setAttribute("href",`/cpe-${o.Program__r.Alias__c}/`)}else u.remove(),d.remove();let h;switch(o.CPE_Status__c){case"Incomplete":h=this.#t(o);break;default:h=this.#e(o);break}l.querySelector(".maintenanceContents").innerHTML=h,i.appendChild(l)})};init=async function(){if(!X()?.tags?.includes("paid")){this.querySelector("#certification-no-access").style.display="",this.querySelector("#loader").style.display="none";return}try{let e="/.netlify/functions/certifications";this.dataset.certification&&(e+=`?certification=${encodeURIComponent(this.dataset.certification)}`);let s=await(await window.fetch(e,{credentials:"same-origin"})).json();this.renderCertifications(s.certifications,s.certificates),s.certifications?.some(r=>{let n=new Date(X().membershipEndDate*1e3),o=new Date(r.Expires_On__c);return Math.abs(n-o)<=864e5})&&!X()?.tags?.includes("certification-expiration-consent-yes")&&this.querySelector("certificate-expiration modal-window").open()}catch(e){console.log(e)}}};customElements.define("my-certifications",bi);var Ai=class extends HTMLElement{constructor(){super(),this.init()}deleteCpeEntry=async function(e){let t=e.target.closest("tr"),s=t.getAttribute("data-cpe-id"),i=t.querySelector(".removeCpeConfirmationModal modal-window"),r=i.querySelector("#removeCpeLoader");r.style.display="";try{let o=await(await window.fetch(`/.netlify/functions/cpe?cpeId=${encodeURIComponent(s)}`,{method:"DELETE",credentials:"same-origin"})).json();t.remove()}catch(n){console.log(n)}finally{r.style.display="none",i.close()}};renderTranscript=async function(e=[]){if(this.querySelector("#loader").style.display="none",!e.length){this.querySelector("#cpe-empty").style.display="";return}let t=this.querySelector("#cpe-container");t.style.display="";let s=t.querySelector("tbody"),i=this.querySelector("#cpe-template").content;e.sort(function(r,n){var o=r.CPE_Activity_Date__c,l=n.CPE_Activity_Date__c;return o<l?1:o>l?-1:0}),e.forEach(r=>{let n=i.cloneNode(!0),o=(r.CPE_Activity_Credit__c||0).toFixed(2);n.querySelector(".date").textContent=r.CPE_Activity_Date__c,n.querySelector("tr").setAttribute("data-cpe-id",r.Id),r.CPE_Activity_URL__c?.includes(".oceg.org")||r.Downloadable__c?(n.querySelector(".title a").textContent=r.Name,n.querySelector(".title a").setAttribute("href",r.CPE_Activity_URL__c),n.querySelector(".certificate a.certificate-download-btn").setAttribute("href",`/.netlify/functions/cpe-certificate?cpeId=${encodeURIComponent(r.Id)}`),n.querySelector(".certificate .noDownloadModal").remove()):(n.querySelector(".title a").parentElement.textContent=r.Name,n.querySelector(".certificate a.certificate-download-btn").remove()),n.querySelector(".credit").textContent=o,s.appendChild(n)}),s.querySelectorAll(".removeCpeConfirmationModal button[data-type=primary]").forEach((r,n)=>{r.addEventListener("click",this.deleteCpeEntry.bind(this))})};init=async function(){if(!X()?.tags?.includes("premium")){this.querySelector("#cpe-no-access").style.display="",this.querySelector("#loader").style.display="none";return}new URL(window.location).searchParams.get("cpesubmitted")==="true"&&(this.querySelector("div.banner[data-type=success]").style.display="");let{email:s,name:i,sfid:r}=X();this.querySelectorAll("a[name=submit-cpe]").forEach(l=>{let c=l.getAttribute("href").replace("#sfid#",r).replace("#email#",s).replace("#name#",i);l.setAttribute("href",c)});let o="/.netlify/functions/cpe";this.dataset.certification&&(o+=`?certification=${this.dataset.certification.toUpperCase()}`);try{let l=await window.fetch(o,{credentials:"same-origin"});this.allCpe=await l.json();let c=new Date;c.setFullYear(c.getFullYear()-1);let u=this.allCpe.filter(h=>new Date(h.CPE_Activity_Date__c).getTime()>=c.getTime());this.renderTranscript(u);let d=this.allCpe.filter(h=>new Date(h.CPE_Activity_Date__c).getTime()<c.getTime());d.length?this.querySelector("#displayAllBtn").addEventListener("click",h=>{h.preventDefault(),this.renderTranscript(d),this.querySelector("#displayAllBtn")&&this.querySelector("#displayAllBtn").remove()}):this.querySelector("#displayAllBtn")&&this.querySelector("#displayAllBtn").remove()}catch(l){console.log(l)}}};customElements.define("cpe-credits",Ai);var Li=class extends HTMLElement{constructor(){super(),this.init().catch(e=>console.log(e))}init=async function(){let e=new URLSearchParams(location.search),t=e.get("redirectUrl"),s=this.querySelector("form");t&&((this.querySelector("input[name=redirectUrl]")||{}).value=t);let i=new URL(document.referrer||location)?.searchParams;["utm","utm_source","utm_medium","utm_campaign","utm_term","utm_content"].forEach(d=>{(document.querySelector(`input[name=${d}]`)||{}).value=e.get(d)||i.get(d)||""}),s.dataset.clientSubmit&&s.addEventListener("submit",async d=>{d.preventDefault();let h=document.querySelector("#standardFormLoader");if(h){let g=d.target.querySelector('[type="submit"]');h.removeAttribute("style"),g&&(g.style.display="none",g.disabled=!0)}let m=d.target.getAttribute("name"),f=d.target.querySelector("input[name=Sponsors]")||"";try{gtag("event","Form Submit",{form_name:m,sponsors:f}),typeof Intercom=="function"&&Intercom("trackEvent","Form Submit",{form_name:m,page_title:document.title,page_url:location.href,sponsors:f})}catch(g){console.log(g)}await Promise.all([fetch("/",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(new FormData(d.target)).toString(),redirect:"manual"}).catch(g=>console.log(g)),fetch("/.netlify/functions/form",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(new FormData(d.target)).toString(),redirect:"manual"}).catch(g=>console.log(g))]),window.location.replace(this.querySelector("input[name=redirectUrl]").value)});let r=X(),n;if(!r){n=sessionStorage.getItem("possible-free-driver"),(this.querySelector("input[name=possible-free-driver]")||{}).value=n;return}if(!r)return;let o=this.querySelector("input[type=email]");if(o&&(o.parentElement.querySelector("#user-form-log-out").style.display="",o.value=r.email,o.setAttribute("readonly",!0)),this.querySelector("#item-action-oceg-consent")){this.querySelector("#item-action-oceg-consent").remove();let d=this.querySelector("#consent-parent");d&&d.remove()}let l=await fetch("/.netlify/functions/me"),c=await l.json(),u=this.querySelector('a[href="/.netlify/functions/logout"]');u&&(u.href+=`?redirectUrl=${encodeURIComponent(document.location.href)}
84`),Object.keys(c).forEach(d=>{let h=c[d];if(!h)return;let m=s.querySelector(`[name='${d}']`),f=s.querySelectorAll(`[name='[${d}]']`);if(f.length>1)[...f].filter(g=>g.value===h).forEach(g=>g.checked=!0);else if(m)switch(m.tagName.toLowerCase()){case"textarea":m.textContent=h;break;case"select":[...m.querySelectorAll(`[value='${h}']`)].forEach(g=>g.selected=!0);break;default:switch(m.type){case"checkbox":case"radiobutton":m.checked=h;break;default:m.value=h;break}break}s.dispatchEvent(new Event("filled"))})}};customElements.define("user-form",Li);function Ba(){let a=document.getElementsByClassName("burger-menu")[0],e="overflow-hidden";a&&a.addEventListener("toggle",t=>{a.open?document.body.classList.add(e):document.body.classList.remove(e)})}var Ii=class extends HTMLElement{constructor(){super(),this.init()}init=function(){let e=[...this.querySelectorAll("input[type=checkbox][name^=Subscribe]")],t=this.querySelector("input[type=checkbox][name=Unsubscribe]"),s=new URL(document.location).searchParams,i=this.querySelector("form"),r=new URLSearchParams(location.search);(this.querySelector("#user-unsubscribe-email")||{}).textContent=r.get("email"),(this.querySelector("input[name=email]")||{}).value=r.get("email"),(this.querySelector("input[name=signature]")||{}).value=r.get("s"),e.forEach(o=>{(s.get(o.name)==="true"||s.get(o.name)==="1")&&(o.checked=!0),o.addEventListener("click",l=>{t.checked=!1})});function n(){}t.addEventListener("click",function(o){e.forEach(l=>{o.currentTarget.checked&&(l.checked=!1),l.disabled=o.currentTarget.checked})}),(s.get(t.name)==="true"||s.get(t.name)==="1")&&(t.checked=!0,e.forEach(o=>{o.disabled=!0})),i.addEventListener("filled",function(){t.checked&&e.forEach(o=>{o.disabled=!0})})}};customElements.define("user-unsubscribe",Ii);document.querySelectorAll('[href*="contact-us"]').forEach(e=>{e.hasAttribute("data-exclude-intercom-launcher")||(e.setAttribute("data-intercom-launcher",""),e.setAttribute("role","button"))});var Ri=class extends HTMLElement{constructor(){super();let e=new URLSearchParams(window.location.search),t=e.get("email");this.textContent=t}};customElements.define("login-email",Ri);var wi=class extends HTMLElement{constructor(){super();let e=new URLSearchParams(window.location.search),t=e.get("redirectUrl")||"",s=this.querySelector("input[name=redirectUrl]"),i=e.get("resource"),r=this.querySelector("#resourceTitle"),n=this.querySelector("#resourceWrapper"),o=this.querySelector("#resourceTitleFallbackWrapper"),l={google:this.querySelector("#oauth-google"),linkedIn:this.querySelector("#oauth-linkedin")},c=document.querySelector("#backLink");s&&(s.value=t),l.google&&(l.google.href+=`&redirectUrl=${encodeURIComponent(t)}`),l.linkedIn&&(l.linkedIn.href+=`&redirectUrl=${encodeURIComponent(t)}`),t&&c&&(c.href=t.replace("/action",""),c.textContent="Back"),i&&r&&(r.textContent=i,n&&(n.style.display=""),o&&(o.style.display="none"))}};customElements.define("login-screen",wi);var Ci=class extends HTMLElement{constructor(){super();let e=new URLSearchParams(window.location.search),t=e.get("redirectUrl"),s=e.get("error");if(t&&(this.querySelector("#loginLink").attributes.href.value+=`?redirectUrl=${encodeURIComponent(t)}`),s){switch(s){case"Invalid token":s="The code you entered is invalid, expired, or does not match the email address you entered.";break}this.querySelector("#errorMsg").innerText=s}}};customElements.define("login-invalid",Ci);var Di=class extends HTMLElement{constructor(){super();let e=X();if(this.querySelector("#menu-title").textContent=e?"Menu & Account":"Menu & Login",e){let t=e.roles.map(s=>{switch(s.toLowerCase()){case"premium":return"Premium Resources";case"certification":return"Certifications";default:return s}});this.querySelector("#navigation-user-menu-logged-in").style.display="",this.querySelector("#navigation-user-header-logged-in").style.display="",this.querySelector("#navigation-user-name").textContent=e.name.split(" ")[0],this.querySelector("#navigation-user-roles").textContent=t.join(", ")||"Free member",e.avatar?(this.querySelector("#navigation-user-avatar img").src=e.avatar,this.querySelector("#navigation-user-no-avatar").style.display="none"):(this.querySelector("#navigation-user-avatar").style.display="none",this.querySelector("#navigation-user-no-avatar").textContent=e.name.slice(0,1)),e.roles?.includes("Premium")?this.querySelector('[href*="/logout"]').setAttribute("data-type","secondary"):this.querySelector("#navigation-user-upgrade").style.display=""}else this.querySelector("#navigation-user-header-not-logged-in").style.display=""}};customElements.define("navigation-panel",Di);var _i=class extends HTMLElement{constructor(){super();let e=X(),t=document.querySelector("#user-header-greeting"),s=document.querySelector("#navigation-user-manage");if(!e)return;e.avatar&&(this.querySelector("#user-header-avatar").style.display="",this.querySelector("#user-header-avatar img").src=e.avatar);let i=e.roles.map(r=>{switch(r.toLowerCase()){case"premium":return"Premium Resources";case"certification":return"Certifications";default:return r}});this.querySelector("#user-header-name").textContent=e.name,this.querySelector("#user-header-roles").textContent=i.join(", ")||"Free member",this.querySelector("#user-header-email").textContent=e.email,e.roles?.includes("Premium")?(s&&(this.querySelector("#navigation-user-manage").style.display=""),t&&(this.querySelector("#user-header-greeting").textContent="Welcome back,")):(this.querySelector("#navigation-user-upgrade").style.display="",t&&(this.querySelector("#user-header-greeting").textContent="Welcome,"))}};customElements.define("user-header",_i);var ki=class extends HTMLElement{constructor(){super();let e=X(),t=new URLSearchParams(location.search),s=t.get("search"),i=t.get("topic"),r=t.get("type"),n=t.get("cpe"),o=t.get("tag");(i||r)&&(this.querySelector("#search-page-filters").style.display="",i&&(this.querySelector("#search-page-topic-filter").style.display="",this.querySelector("#search-page-topic-filter strong").textContent=i),r&&(this.querySelector("#search-page-type-filter").style.display="",this.querySelector("#search-page-type-filter strong").textContent=r)),this.querySelector("input#search").value=s,this.querySelector("input#type").value=r,this.querySelector("input#topic").value=i,s&&(this.querySelector("#search-page-clear-button").href+=`?search=${s}`),i&&(this.querySelector("#typeFilter").style.display="",this.querySelectorAll("#typeFilter a").forEach(l=>{l.href+=`&topic=${i}`,s&&(l.href+=`&search=${s}`)})),this.querySelectorAll("#search-page-cpe-list li a").forEach(l=>{s&&(l.href+=`&search=${s}`),r&&(l.href+=`&type=${r}`),i&&(l.href+=`&topic=${i}`)})}};customElements.define("search-page",ki);var Gf=Qt(yi());function $a(a,e){return document?.cookie?document.cookie.split(";").some(t=>t.trim().startsWith(`${a}=${e}`)):!1}var zc=[/\/exam\/?$/,/\/embed\/?$/,/^\/design-system(?:\/|$)/,/^\/design-system(?:\/|$)$/];function qa(){let a=X();
84if(window.intercomSettings={api_base:"https://api-iam.intercom.io",app_id:"v1o8md99",custom_launcher_selector:"[data-intercom-launcher]"},a)window.intercomSettings={...window.intercomSettings,name:a.name,email:a.email,user_id:a.uid?.toString()||void 0,user_hash:a.intercomhash};else{let s=new URL(document.location).searchParams;s.has("email")&&s.has("name")&&s.has("intercomhash")&&(window.intercomSettings={...window.intercomSettings,email:s.get("email"),name:s.get("name"),user_hash:s.get("intercomhash")})}let e=!1;function t(){e||$a("impersonationActive","true")||(e=!0,function(){var s=window,i=s.Intercom;if(typeof i=="function")i("reattach_activator"),i("update",s.intercomSettings);else{var r=document,n=function(){n.c(arguments)};n.q=[],n.c=function(l){n.q.push(l)},s.Intercom=n;var o=function(){var l=r.createElement("script");l.type="text/javascript",l.async=!0,l.src="https://widget.intercom.io/widget/v1o8md99";var c=r.getElementsByTagName("script")[0];c.parentNode.insertBefore(l,c)};document.readyState==="complete"?o():s.attachEvent?s.attachEvent("onload",o):s.addEventListener("load",o,!1)}}())}zc.some(s=>window.location.pathname.match(s))||(window.addEventListener("scroll",t),document.body.addEventListener("mousemove",t),document.body.addEventListener("touchstart",t))}var Pi=class extends HTMLElement{constructor(){if(super(),X()?.roles.includes("OCEG Editors")){let s=this.querySelector("template").content.cloneNode(!0);this.appendChild(s)}}};customElements.define("edit-button",Pi);var Oi=class extends HTMLElement{constructor(){super();let t=new URLSearchParams(location.search).get("success");t&&(this.querySelector("div").style.display="",this.querySelector("span").textContent=t)}};customElements.define("success-message",Oi);var Fi=class extends HTMLElement{constructor(){super();let e=X();e&&(this.textContent=e.email)}};customElements.define("user-email",Fi);var Mi=class extends HTMLElement{constructor(){super();let e=X(),t=new URLSearchParams(location.search);for(let[s,i]of t.entries())(this.querySelector(`input[name=${s}]`)||{}).value=i;e&&((this.querySelector("input[name=Roles]")||{}).value=e.roles?.join(",")||"",this.querySelector("#item-action-oceg-consent")&&this.querySelector("#item-action-oceg-consent").remove(),this.querySelector(".primary-cta a[data-type=secondary]")&&this.querySelector(".primary-cta a[data-type=secondary]").remove())}};customElements.define("item-action",Mi);var Ni=class extends HTMLElement{progressStore=[];duration=0;lastTimecode=0;videoPlayer;ytIFrame;progressIndicator;progressCpePrompt;progressCpePromptInitial;progressCpePromptComplete;isCPECompletionSubmitted=!1;isSeeking=!1;user;constructor(){if(super(),this.user=X(),this.videoPlayer=this.querySelector("mux-player"),this.ytIFrame=this.querySelector("iframe#ytplayer"),this.progressIndicators=this.querySelectorAll("progress-indicator"),this.progressCpePrompt=this.querySelector(".video-player__cpe-prompt"),this.progressCpePromptInitial=`In order to earn ${this.dataset.cpeCredit} CPE credit(s), you must watch at least <strong>90% of the video</strong>. If you skip around the video, you will not get credit for that skipped time. Watching on 1.5x or 2x will accumulate your time more quickly and not impact this tracking. Once you've watched the whole video, a CPE credit will be assigned to your record.`,this.progressCpePromptComplete=`You have earned ${this.dataset.cpeCredit} CPE credit(s) for this video and it will be reflected in your <a href="/user/cpe/">CPE Transcript</a> within 48 hours.`,this.user){if(this.videoPlayer)this.videoPlayer.addEventListener("loadedmetadata",t=>this.onReady(t.target.duration)),this.videoPlayer.addEventListener("timeupdate",t=>this.onProgress(t.target.currentTime)),this.videoPlayer.addEventListener("seeking",t=>this.isSeeking=!0),this.videoPlayer.addEventListener("seeked",t=>{this.lastTimecode=t.target.currentTime,this.isSeeking=!1}),this.submitActivityEvent("watch");else if(this.ytIFrame){let t=document.createElement("script");t.src="https://www.youtube.com/iframe_api";let s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s),window.onYouTubeIframeAPIReady=function(){new YT.Player("ytplayer",{events:{onReady:i=>this.onReady(i.target.getDuration()),onStateChange:i=>{i.data===YT.PlayerState.ENDED&&!this.isCPECompletionSubmitted&&(this.isCPECompletionSubmitted=!0,this.submitCompletionEvent(duration))}}})},this.submitActivityEvent("watch")}}if(this.querySelector("#item-reward-download-container")){let t=location.pathname.replace("/reward/","");
84t.startsWith("/")&&(t=t.slice(1)),t.endsWith("/")&&(t=t.slice(0,t.length-1));let s=document.cookie.split("; ").find(r=>r.startsWith("__dl="))?.split("=")[1],i=this.user?.email;if(!i){let r=document.cookie.split("; ").find(n=>n.startsWith("FORM_DATA_TOKEN="))?.split("=")[1];if(r){let o=r.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),l=decodeURIComponent(window.atob(o).split("").map(function(c){return"%"+("00"+c.charCodeAt(0).toString(16)).slice(-2)}).join(""));i=JSON.parse(l)?.Email}}window.location.href.includes(s)?this.querySelector("#item-reward-download-wait").style.display="":i?(this.querySelector("#item-reward-download-email").style.display="",this.querySelector("#item-reward-email-address").textContent=i,this.download(t)):(this.querySelector("#item-reward-download-direct").style.display="",window.location.replace(`/.netlify/functions/download?slug=${encodeURIComponent(t)}`),this.submitActivityEvent("download"))}if(typeof aa=="function"){let s=new URLSearchParams(window.location.search).get("qID");s?aa("convertedObjectIDsAfterSearch",{index:"Sanity",eventName:"Reward",objectIDs:[this.dataset.id],queryID:s}):aa("convertedObjectIDs",{index:"Sanity",eventName:"Reward",objectIDs:[this.dataset.id]})}}connectedCallback(){this.user&&gtag("event","reward",{item_id:this.dataset.id,item_slug:this.dataset.slug,item_title:this.dataset.title,action_type:this.dataset.actionType})}getContentConsumptionProgress=()=>this.progressStore.filter(e=>!!e).length/100;onReady=e=>{this.duration=e};onProgress=e=>{if(this.isSeeking)return;let t=Math.round(this.lastTimecode/this.duration*100),s=Math.round(e/this.duration*100);if(t===s)return;for(let r=t;r<s;r++)this.progressStore[r]=1;this.lastTimecode=e;let i=this.getContentConsumptionProgress();if(this.progressIndicators.forEach(r=>r.setAttribute("data-progress",Math.round(i*100))),i>=.9){let r=this.querySelector("[data-default-cpe-message]"),n=this.querySelector("[data-success-cpe-message]");this.progressIndicators.forEach(o=>o.setAttribute("data-progress",100)),r.style.display="none",n.removeAttribute("style"),this.isCPECompletionSubmitted||(this.isCPECompletionSubmitted=!0,this.submitCompletionEvent(e))}};submitCompletionEvent(e){var t={ItemId:this.dataset.id,ItemTitle:this.dataset.title,ItemUrl:window.location.href.replace("/reward",""),SessionDuration:Math.round(e),VideoDuration:Math.round(this.duration),CPECredit:Number(this.dataset.cpeCredit||0)||Math.ceil(this.duration/3600*100)/100,AppliesTo:this.dataset.cpe};navigator.sendBeacon("/.netlify/functions/cpe-completion-event",JSON.stringify(t));let s={item_id:this.dataset.id,item_slug:this.dataset.slug,item_title:this.dataset.title,credit:t.CPECredit,applies_to:this.dataset.cpe};try{gtag("event","cpe",s),typeof Intercom=="function"&&Intercom("trackEvent","CPE",s)}catch(i){console.error(i)}}submitActivityEvent(e){this.user&&navigator.sendBeacon("/.netlify/functions/activity",new URLSearchParams(Object.entries({sanityId:this.dataset.id,url:this.dataset.slug,name:this.dataset.title,type:e})).toString())}provideItemCollection(){if(!this.dataset.collections)return;let e=sessionStorage.getItem("item_presenter");try{let t=JSON.parse(this.dataset.collections);if(t?.length&&e&&t.some(i=>i.slug===e))return sessionStorage.removeItem("item_presenter"),e}catch(t){console.error("Error parsing collections:",t)}}gtagDownloadEvent=()=>{if(!this.user)return;let e={item_id:this.dataset.id,item_slug:this.dataset.slug,item_title:this.dataset.title},t=this.provideItemCollection();t!==void 0&&(e.item_presenter=t);try{if(gtag("event","download",e),typeof Intercom=="function"&&Intercom("trackEvent","Download",e),!this.dataset.topics)return;let s=this.dataset.topics,i=JSON.parse(s);if(!i?.length)return;i.map(n=>({topic_id:n._id,topic_title:n.name,topic_slug:n.slug})).forEach(n=>{gtag("event","topic-download",n)})}catch(s){console.error(s)}};async download(e){let t=this.querySelector("#item-reward-download-email"),s=t.innerHTML,i=!1;t.textContent="Please wait...";let r=()=>{i=!0,t.innerHTML=s,this.submitActivityEvent("download")};setTimeout(()=>{i||(navigator.sendBeacon(`/.netlify/functions/download-email?slug=${encodeURIComponent(e)}`),r())},1e4);try{let n=await fetch(`/.netlify/functions/download-background?slug=${encodeURIComponent(e)}`);
84if(n.ok)r();else throw new Error(`${n.status} ${n.statusText}`)}catch{i||(navigator.sendBeacon(`/.netlify/functions/download-email?slug=${encodeURIComponent(e)}`),r())}document.cookie=`__dl=${e}; max-age=${5*60}`,this.gtagDownloadEvent()}};customElements.define("item-reward",Ni);var Ui=class extends HTMLElement{constructor(){super();let e=new Date,t=[...this.querySelectorAll("a")],[s]=t.filter(i=>new Date(i.dataset.startsOn)>=e);t.forEach(i=>i!==s&&i.remove()),s&&(this.style.display="")}};customElements.define("soonest-event",Ui);function Ga(){let a=document.cookie.split(";").map(n=>n.trim()),e=a.find(n=>n.startsWith("new_login")),t=a.find(n=>n.startsWith("new_signup")),s=a.find(n=>n.startsWith("new_identification")),i=a.find(n=>n.startsWith("user-logged-out")),r;if(e&&(gtag("event","login",{provider:e.split("=")[1]}),r="Login",document.cookie="new_login=; expires=Thu, 01 Jan 1970 00:00:00 GMT"),t&&(gtag("event","sign_up"),r="Sign Up",document.cookie="new_signup=; expires=Thu, 01 Jan 1970 00:00:00 GMT"),s&&(gtag("event","identified"),r="Identified",document.cookie="new_identification=; expires=Thu, 01 Jan 1970 00:00:00 GMT"),r){let n=setInterval(()=>{typeof Intercom=="function"&&(Intercom("trackEvent",r),clearInterval(n))},50)}if(i){let n=new URL(window.location.href).hostname.split(".").reverse().slice(0,2).reverse().join(".");document.cookie="user-logged-out=; expires=Thu, 01 Jan 1970 00:00:00 GMT",document.cookie="intercom-session-v1o8md99=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(n.indexOf(".")?`; Domain=.${n}`:"")}}var Bi=class extends HTMLElement{constructor(){super();let e=new URLSearchParams(window.location.search),t=e.get("redirectUrl")||"",s=e.get("resource"),i=X(),r=this.querySelector('a[href*="/login"]'),n=this.querySelector(".gateway"),o=this.querySelector(".banner__button"),l=this.querySelectorAll('[data-gateway-role="anon"]');if(i?l.forEach(c=>c.style.display="none"):t&&(r.href+=`?redirectUrl=${encodeURIComponent(t)}`),o&&(o.href=t?t.replace("/action/",""):"javascript:history.back()"),!i&&n){let c=this.querySelector('[data-feature-set="basic"]');c&&c.remove(),n.setAttribute("data-gateway-state","anon")}s&&(this.querySelector("#resourceTitle").textContent=s,this.querySelector("#resourceWrapper").style.display="")}};customElements.define("role-gateway",Bi);function Ha(){let a=document.querySelectorAll(".button[data-js='toggleCollapsible']"),e="Expand all",t="Close all",s="isOpen";a.forEach(i=>{i.addEventListener("click",r=>{let n=r.target.closest(".collapsible-list"),o=n.querySelectorAll("details"),l=n.querySelectorAll("summary"),c=n.querySelectorAll(".collapsible__content, .collapsible__content *");i.classList.contains(s)?(i.classList.remove(s),i.querySelector("span").textContent=e,d()):(i.classList.add(s),i.querySelector("span").textContent=t,u());function u(){o.forEach(h=>{h.open=!0}),l.forEach(h=>{h.ariaExpanded="true"}),c.forEach(h=>{h.ariaHidden="false"})}function d(){o.forEach(h=>{h.open=!1}),l.forEach(h=>{h.ariaExpanded="false"}),c.forEach(h=>{h.ariaHidden="true"})}})})}(function(){let a=X();if(document.documentElement.setAttribute("data-user-state",a?"authed":"no-auth"),a){let e=document.querySelectorAll("[data-visible-for]"),t=document.querySelectorAll("[data-hidden-for]");document.documentElement.setAttribute("data-tags",a.tags.join(",")),e.forEach(s=>{s.getAttribute("data-visible-for").split("&").every(i=>i.split(",").some(r=>a.tags.includes(r)))&&s.removeAttribute("data-visible-for")}),t.forEach(s=>{s.getAttribute("data-hidden-for").split("&").every(i=>i.split(",").some(r=>a.tags.includes(r)))&&(s.style.display="none")})}})();var $i=class{static getAttributeTypeMap(){return $i.attributeTypeMap}},gs=$i;gs.discriminator=void 0,gs.attributeTypeMap=[{name:"imagePath",baseName:"ImagePath",type:"string"},{name:"imageSrcType",baseName:"ImageSrcType",type:"ImageSrcType"},{name:"leftMargin",baseName:"LeftMargin",type:"number"},{name:"rightMargin",baseName:"RightMargin",type:"number"},{name:"topMargin",baseName:"TopMargin",type:"number"},{name:"bottomMargin",baseName:"BottomMargin",type:"number"},{name:"pageWidth",baseName:"PageWidth",type:"number"},{name:"pageHeight",baseName:"PageHeight",type:"number"},{name:"marginInfo",baseName:"MarginInfo",type:"MarginInfo"}];var Ka=[...";(){}[]"],Va=/{{ *([^} ]+) *}}/g,Je=X(),ja={user:Je&&{id:Je.sfid,first:Je.name.split(" ").shift()||void 0,last:Je.name.split(" ").pop()||void 0,name:Je.name,email:Je.email,certifications:(Je.certifications||[]).join(","),tags:(Je.tags||[]).join(","),roles:(Je.roles||[]).join(","),signedup:Je.signedUpOn,intercomhash:Je.intercomhash}||{}};
84function qi(a,e=ja){typeof a=="string"&&(a=a.split("."));let t=e[a.shift()];return typeof t=="object"?qi(a,t):typeof t>"u"?"":t}async function Wa(){let a=[];if(document.querySelectorAll('a[href*="{{"]').forEach(e=>{e.href=e.href.replace(Va,function(t,s){try{if(Ka.some(r=>s.includes(r)))throw new Error(`Invalid string replacement token ${s}`);let i=qi(s);return!i&&!a.includes(r=>r.element===e)&&a.push({element:e,href:e.href}),encodeURIComponent(i)}catch(i){return console.error(i),""}})}),Je&&a.length){let t=await(await fetch("/.netlify/functions/me")).json();for(let s in t)t.hasOwnProperty(s)&&(ja.user[s.replaceAll(" ","").toLowerCase()]=t[s]);a.forEach(s=>{s.element.href=s.href.replace(Va,function(i,r){try{if(Ka.some(n=>r.includes(n)))throw new Error(`Invalid string replacement token ${r}`);return encodeURIComponent(qi(r))}catch(n){return console.error(n),""}})})}}var Gi=class extends HTMLElement{constructor(){super(),this.trackEvent=this.trackEvent.bind(this),this.cleanup=this.cleanup.bind(this),this.scrollHandler=this.scrollHandler.bind(this),this.pageTimeoutId=null,this.isPageActionLogged=!1,this.isPageRewardLogged=!1,this.linkTuples=[],this.isListenersAttached=!1}connectedCallback(){this.isListenersAttached||(this.addPageInteractionListeners(),this.addCtaLinkHandlers(),this.isListenersAttached=!0)}disconnectedCallback(){this.cleanup(),this.isListenersAttached=!1}trackEvent(e,t,s={}){let i={item_id:this.dataset.itemId,item_slug:this.dataset.itemSlug,item_title:this.dataset.itemTitle,action_type:"Pass Through"},r=e==="item"?{...i,...s}:i;gtag("event",t,r)}scrollHandler(){this.isPageActionLogged||(this.trackEvent("page","action"),this.isPageActionLogged=!0)}addPageInteractionListeners(){window.addEventListener("scroll",this.scrollHandler),this.pageTimeoutId=setTimeout(()=>{this.isPageActionLogged||(this.trackEvent("page","action"),this.isPageActionLogged=!0),this.isPageRewardLogged||(this.trackEvent("page","reward"),this.isPageRewardLogged=!0)},6e3)}addCtaLinkHandlers(){let t=(s=>{let i=document.querySelector("[data-central-prose-column]");return i?[...i.querySelectorAll("a")].map(r=>{let n=r?.href??"",o=n.includes("oceg.org")||n.startsWith("/")?"internal":"external",l=n.replace(/^https:\/\/(www\.)?/i,"")||null;l.endsWith("/")&&(l=l.slice(0,-1)),o==="internal"&&(l=l.replace("oceg.org/",""));let c=r.innerText||null,u=o+"-"+l;return[r,{cta_print_string:u,cta_context:o,cta_text:c,cta_location:l,action_type:s}]}):[]})("CTA Click");this.linkTuples=[...t],this.linkTuples.forEach(([s,i])=>{let r=()=>{this.trackEvent("item","cta_click",i)};s.addEventListener("click",r),i._handler=r})}cleanup(){clearTimeout(this.pageTimeoutId),window.removeEventListener("scroll",this.scrollHandler),this.linkTuples.forEach(([e,t])=>{e.removeEventListener("click",t._handler)})}};customElements.define("standalone-article",Gi);var Hi=class extends HTMLElement{constructor(){super(),this.user=X(),this.trackEvent=this.trackEvent.bind(this),this.cleanup=this.cleanup.bind(this),this.scrollHandler=this.scrollHandler.bind(this),this.pageTimeoutId=null,this.isPageActionLogged=!1,this.isPageRewardLogged=!1,this.linkTuples=[],this.isListenersAttached=!1}connectedCallback(){this.setup()}disconnectedCallback(){this.cleanup()}trackEvent(e,t){let s={item_id:this.dataset.id,item_slug:this.dataset.slug,item_title:this.dataset.title,action_type:"Collection - Pass Through"};gtag("event",e,t||s)}scrollHandler(){this.isPageActionLogged||(this.trackEvent("action"),this.isPageActionLogged=!0)}addPageInteractionListeners(){window.addEventListener("scroll",this.scrollHandler),this.pageTimeoutId=setTimeout(()=>{this.isPageActionLogged||(this.trackEvent("action"),this.isPageActionLogged=!0),this.isPageRewardLogged||(this.trackEvent("reward"),this.isPageRewardLogged=!0)},6e3)}addResourceLinkHandlers(){if(this.dataset.isDynamic)return;let e=(i,r)=>{let n=document.querySelector(i);return n?[...n.querySelectorAll("a")].filter(o=>!o.closest(".pagination")).map(o=>[o,{item_slug:o.id||null,action_type:r}]):[]},t=e(".featured-list","Collection-Based Navigation (Featured)"),s=e(".resource-list","Collection-Based Navigation (Non-Featured)");
84this.linkTuples=[...t,...s],this.linkTuples.forEach(([i,r])=>{let n=()=>{sessionStorage.setItem("item_presenter",this.dataset.slug),this.trackEvent("click",r)};i.addEventListener("click",n),r._handler=n})}setup(){this.user&&(this.isListenersAttached||(this.addPageInteractionListeners(),this.addResourceLinkHandlers(),this.isListenersAttached=!0))}cleanup(){window.removeEventListener("scroll",this.scrollHandler),this.pageTimeoutId&&(clearTimeout(this.pageTimeoutId),this.pageTimeoutId=null),this.linkTuples.length&&this.linkTuples.forEach(([e,t])=>{e.removeEventListener("click",t._handler)}),this.linkTuples=[],this.isListenersAttached=!1}};customElements.define("collection-insight",Hi);var Ki=class extends HTMLElement{constructor(){super(),this.init()}init=async function(){let t=await fetch(`/.netlify/functions/exam-attempts?certification=${this.dataset.certificationAlias}`),s=await t.json(),i=this.querySelector("#exam-attempts-template").content,r=this.querySelector("table tbody"),n=Intl.DateTimeFormat("default",{year:"numeric",month:"numeric",day:"numeric"});if(s.length)this.querySelector("#exam-attempts-overview").style.display="";else{this.querySelector("#exam-no-history").style.display="",this.querySelector("#exam-table").style.display="none";return}let o=window.getUser()?.tags?.includes(this.dataset.certificationAlias.toLowerCase()),l=s.find(d=>d.Passed__c===!0),c=s.filter(d=>new Date(d.Timestamp__c)>new Date(new Date().setFullYear(new Date().getFullYear()-1))),u=s.length&&new Date(s[0].Timestamp__c).getTime();if(o){let d=l?.Timestamp__c?n.format(new Date(l?.Timestamp__c)):"N/A",h=`<strong>Completed On:</strong> ${d}`;this.querySelector("#exam-attempts-passed-cta").style.display="",this.querySelector("#exam-attempts-banner").style.display="",this.querySelector("#exam-attempts-banner-passed").style.display="",this.querySelector("#exam-attempts-banner-passed p").innerHTML=h}else{let d=c.length,h=d>=2?"attempts":"attempt",m=`<strong>In Progress:</strong> You have made ${d} ${h}`;this.querySelector("#exam-attempts-failed-cta").style.display="",this.querySelector("#exam-attempts-banner").style.display="",this.querySelector("#exam-attempts-banner-failed").style.display="",this.querySelector("#exam-attempts-banner-failed p").innerHTML=m;let f=0,g;switch(d){case 0:f=0,g="You have 6 attempts to take this exam.";break;case 1:f=0,g="You have 5 attempts remaining to take this exam. Be sure to study before your next attempt.";break;case 2:f=u+48*60*60*1e3,g="You have 4 attempts remaining.",f>Date.now()&&(g+=" Please wait 48 hours before your next attempt and use this time to study.");break;case 3:f=u+7*24*60*60*1e3,g="You have 3 attempts remaining.",f>Date.now()&&(g+=" Please wait 7 days before your next attempt and use this time to study.");break;case 4:f=u+7*24*60*60*1e3,g="You have 2 attempts remaining. ",f>Date.now()&&(g+=" Please wait 7 days before your next attempt and use this time to study.");break;case 5:f=u+14*24*60*60*1e3,g="You have ONE FINAL ATTEMPT remaining.",f>Date.now()&&(g+=" Please wait 14 days before your final attempt and use this time to study thoroughly."),g+=" If you do not pass, a re-take fee will be required.";break;default:let y=new Date(c[c.length-6].Timestamp__c);f=y.setFullYear(y.getFullYear()+1),g="You have exhausted your attempts for the past year.";break}[...this.querySelectorAll("#exam-history-descriptor")].forEach(y=>y.innerHTML=g),[...this.querySelectorAll("#exam-attempt-countdown")].forEach(y=>y.setAttribute("data-date-string",new Date(f).toISOString()))}s.forEach(d=>{let h=i.cloneNode(!0),m=d.Passed__c?"Passed":"Failed",f=d.Score_Percent__c+"%";d.Passed__c===!0?h.querySelector(".passed").style.display="":h.querySelector(".failed").style.display="",h.querySelector(".timestamp").textContent=d.Timestamp__c?n.format(new Date(d.Timestamp__c)):"N/A",h.querySelector(".status").textContent=m+" ("+f+")",r.appendChild(h)})}};customElements.define("exam-attempts",Ki);var Vi=class extends HTMLElement{constructor(){super();let e=X();e&&(this.refreshLabel(),this.querySelector("button").addEventListener("click",async t=>{let s={},i=Math.round(new Date().getTime()/1e3),r=this.certification?.toUpperCase(),n=e.tags.find(u=>u.startsWith("focus-"))?.split("-")[1]?.toUpperCase();r&&!e?.tags?.includes(`focus-${r.toLowerCase()}`)?(s.certification=this.certification,typeof Intercom=="function"&&(n&&Intercom("trackEvent","remove_focus",{date:i,"focu
84s-area":n}),Intercom("trackEvent","set_focus",{date:i,"focus-area":r}))):this.certification&&typeof Intercom=="function"&&Intercom("trackEvent","remove_focus",{date:i,"focus-area":r}),t.target.textContent="Loading\u2026";let o=await fetch("/.netlify/functions/certification-focus",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(s)}),{tags:l}=await o.json();Ma("tags",l);let c=l.includes(`focus-${this.certification}`)?`/certifications/${this.certification}/focus/`:"/user/certifications";window.location.replace(c)}))}get certification(){return this.getAttribute("data-certification").toLowerCase()}refreshLabel=function(){let e=X();e&&(this.certification&&e.tags.includes(`focus-${this.certification}`)?(this.querySelector("button span").textContent="I no longer want to focus on this",this.style.display="block"):this.certification&&!e.tags.includes(`focus-${this.certification}`)?(this.querySelector("button span").textContent="I want to focus on "+this.certification.toUpperCase(),this.style.display="block"):(this.querySelector("button span").textContent="I want to focus on this",this.style.display="block"))}};customElements.define("focus-button",Vi);var ji=class extends HTMLElement{constructor(){super(),this.init()}init=async function(){X().tags.includes(this.dataset.certificationAlias.toLowerCase())?(this.querySelector("#user-pathway-grc-leader").style.display="",this.querySelector("#user-pathway-steps").style.display="none"):this.querySelector("#user-pathway-steps").style.display=""}};customElements.define("user-pathway",ji);var Wi=class extends HTMLElement{constructor(){super(),this.init()}init=async function(){let t=X();if(!t?.tags?.includes("paid")){this.remove();return}let s=this.querySelector("#take-the-exam-card"),i=this.querySelector("#share-on-linkedin-card"),r=this.querySelector("#download-cert-card"),n=this.querySelector("#additional-certifications-card"),o=this.querySelector("#user-linear-grid-region"),l=this.querySelectorAll('.linear-grid li:not([style*="display"]');t?.tags?.includes(this.dataset.certificationAlias.toLowerCase())?(i.style.display="",r.style.display="",n.style.display="",o.style.display=""):(s&&(s.style.display=""),(l.length>0||s)&&(o.style.display=""))}};customElements.define("user-linear-grid",Wi);var Yi=class extends HTMLElement{constructor(){super(),this.panels=[],this.focusStates={current:"current-focus",wrong:"wrong-focus",passed:"user-passed",marketing:"marketing",unauth:"unauth"},this.locations={marketing:"marketing",focusPage:"focus-page"},this.visibleAttribute="data-focus-state-visible"}connectedCallback(){this.panels=[...this.querySelectorAll("[data-focus-state]")],this.init()}async generateCertificationData(){try{let e="/.netlify/functions/certifications";return this.alias&&(e+=`?certification=${encodeURIComponent(this.alias)}`),await(await window.fetch(e,{credentials:"same-origin"})).json()}catch(e){console.log(e)}}
84async init(){let e=X();if(!e){this.location==="focus-page"&&(window.location.href="/certifications");return}if(e.tags.includes("free"))return;let t=e.tags.find(i=>i.indexOf("focus-")===0),s=this.panels.filter(i=>i.dataset.location===this.location);if(t){let i="",r="",n=t.replace("focus-","");switch(e.certifications.length&&(r=e.certifications.find(l=>l===n.toUpperCase())),!0){case e.tags.includes(this.alias):i=this.focusStates.passed;break;case t===`focus-${this.alias}`:i=this.focusStates.current;break;default:i=this.focusStates.wrong;break}let o=s.find(l=>l.dataset.focusState===i);if(!o)return;if(o)switch(o.setAttribute(this.visibleAttribute,""),!0){case i===this.focusStates.passed:this.processPassedState(o);break;case i===this.focusStates.wrong:let l=o.querySelector(".button:not(#focusBtn)"),c=l.querySelector("span");c.innerText="Back to "+n.toUpperCase(),l.setAttribute("href",`/certifications/${n.toLowerCase()}/focus/`);let u=o.querySelector(".user-focus-cta__text p");u.innerHTML=`Your current focus is ${n.toUpperCase()}. We strongly advise you to stay focused on that certification because the best way to get certified is to be focused on one, and <strong>only one discipline</strong> at a time.`;break;case(i===this.focusStates.current&&o.dataset.location==="marketing"):o.querySelector('.button[data-type="secondary"]').setAttribute("href",this.focusPageUrl);break}}else{if(e.tags.includes(this.alias?.toLowerCase())){let r=s.find(n=>n.dataset.focusState===this.focusStates.passed);if(r){r.setAttribute(this.visibleAttribute,""),this.processPassedState(r);return}}let i=s.find(r=>r.dataset.focusState===this.focusStates.marketing);i&&i.setAttribute(this.visibleAttribute,"")}if(this.location==="marketing"){let i=document.querySelector('[data-focus-clear="page-builder-hero"]');i&&i.remove()}}processPassedState(e){this.generateCertificationData().then(t=>{let s=0,i=0,r=t.certifications.find(f=>f.Program__r.Alias__c===this.dataset.alias),n=new Date(r.Certified_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}),o=new Date(r.Expires_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}),l=r.Program__r.CPE_Required__c,c=r.CPE_Credits__c,u=r.Accredible_Group_ID__c,d=e.querySelector(".user-focus-cta__text"),h=e.querySelector(".button"),m=e.querySelector("[data-focus-page]");s=Math.max(l-c,0),i=Math.round(c/l*100),d.innerHTML=`<p>Congratulations, you passed this certification on <strong>${n}</strong>.</p>`,i<100&&r.CPE_Status__c?.toLowerCase()!=="not required"&&(d.innerHTML+=`<p>Your certification is now valid until <strong>${o}</strong>. To maintain your certification, you must earn <strong>${l} CPE credits</strong> before <strong>${o}</strong>.</p>`),u&&(h.setAttribute("href",`/.netlify/functions/sso-certs?group_id=${encodeURIComponent(u)}`),h.style.display=""),m&&(m.setAttribute("href",`/certifications/${this.alias.toLowerCase()}/focus`),m.style.display="")})}get alias(){return this.dataset.alias.toLowerCase()}get location(){return this.dataset.location}get focusPageUrl(){return this.dataset.focusPageUrl}};customElements.define("user-focus-cta",Yi);var zi=class extends HTMLElement{constructor(){super(),this.init()}init(){let e=X();if(!e?.tags?.includes("paid")){this.remove();return}let t=this.closest(this.overrideParentSelector+"[href]");if(t&&this.overrideURL)try{t.href=this.overrideURL}catch(i){console.error(i);return}let s=e?.tags?.find(i=>i.indexOf("focus-")===0);if(e.tags.includes(this.alias?.toLowerCase()))this.innerHTML='<span class="badge">Certified</span>';else if(`focus-${this.alias}`.toLowerCase()===s?.toLowerCase())this.innerHTML='<span class="badge" data-type="info">Your current focus</span>';else{this.remove();return}}get alias(){return this.dataset.alias}get overrideURL(){return this.dataset.overrideUrl}get overrideParentSelector(){return this.dataset.overrideParentSelector}};customElements.define("user-focus-badge",zi);var Xi=class extends HTMLElement{constructor(){super(),this.init()}init(){let e=X()?.tags?.find(s=>s.startsWith("focus-"))?.split("-")[1];X()?.roles?.includes("Premium")&&e&&document.location.pathname.indexOf("/focus")<0&&(this.querySelector("#certification-banner-label").textContent=e.toUpperCase(),this.querySelector("a").setAttribute("href",`/certifications/${e}/focus/`),this.classList.remove("visually-hidden"),this.setBannerHeight(),new ResizeObserver(()=>{this.setBannerHeight()}).observe(this))}setBannerHeight(){try{document.body.style.setProperty("--top-banner-height",`${this.getBoundingClientRect().height}px`)}catch{return}}};customElements.define("certification-banner",Xi);var Ji=class extends HTMLElement{constructor(){super(),this.init()}init(){let e=X();e?.subscriptions?.includes("all-access-pass-annual-renew")&&!e?.roles?.includes("Premium")&&(this.classList.remove("visually-hidden"),this.setBannerHeight(),new ResizeObserver(()=>{this.setBannerHeight()}).observe(this))}setBannerHeight(){try{document.body.style.setProperty("--top-banner-height",`${this.getBoundingClientRect().height}px`)}catch{return}}};customElements.define("suspended-banner",Ji);(function(){if(window.location.hostname!=="www.oceg.org")return;let a=document.querySelectorAll(".prose a"),e=["oceg.org","localhost","policymanagementpro","netlify.app"];a&&a.forEach(t=>{t.hasAttribute("href")&&t.href!=="#"&&t.href[0]!=="/"&&!e.some(s=>t.href.includes(s))&&t.classList.length<1&&(t.classList.add("outbound-link"),t.innerHTML=`
85          <span>${t.innerText}</span>
86          <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><g clip-path="url(#a)"><path fill="currentColor" d="M10 6v2H5v11h11v-5h2v6a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h6Zm11-3v8h-2V6.413l-7.793 7.794-1.414-1.414L17.585 5H13V3h8Z"/></g></svg>
87        `)})})();var Qi=class extends HTMLElement{constructor(){super();let e=document.querySelector("#glossary-edit-button-tmpl")?.content,t=X();e&&t?.roles?.includes("OCEG Editors")&&this.init(e)}init(e){let t=e.cloneNode(!0);t.querySelector("a").setAttribute("href",`https://cms.oceg.org/intent/edit/id=${this.dataset.id}`),this.innerHTML="",this.appendChild(t)}};customElements.define("glossary-edit-button",Qi);var Zi=class extends HTMLElement{constructor(){super(),this.init()}async init(){let e=new URLSearchParams(window.location.search),t=e.get("redirectUrl")||"/",s=e.get("tags")?.split(",")||[],i=0,r="/.netlify/functions/refresh-token",n=!!s.length,o=async l=>new Promise(c=>setTimeout(c,l));for(;n;){let l=r;i++,i>4&&(l+="?force",i=0);let u=await(await fetch(l)).json();s.every(d=>u.tags?.includes(d))?n=!1:await o(1e3)}window.location.replace(t)}};customElements.define("refresh-token",Zi);var er=class extends HTMLElement{constructor(){super(),this.renderTrigger(),this.wireUpEvents()}renderTrigger(){this.innerHTML+=`<a href="#" data-trigger class="${this.dataset.triggerType==="button"?"button":""}" data-type="${this.triggerException}">${this.triggerText}</a>`}wireUpEvents(){let e=this.querySelector("[data-trigger]"),t=this.querySelector("dialog"),s=this.querySelectorAll("[data-close-button]");e.addEventListener("click",i=>{i.preventDefault(),this.openDialog()}),this.addEventListener("openModal",()=>{this.openDialog()}),s.length&&s.forEach(i=>i.addEventListener("click",()=>t.close())),this.trapFocus(t),this.openByDefault&&this.openDialog(),this.hideTrigger!==null&&e.classList.add("hidden")}openDialog(){this.querySelector("dialog").showModal()}open(){this.dispatchEvent(new CustomEvent("openModal"))}close(){this.querySelector("dialog").close()}trapFocus(e){let t=e.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])'),s=t[0],i=t[t.length-1],r=9;e.addEventListener("keydown",n=>{(n.key==="Tab"||n.keyCode===r)&&(n.shiftKey?document.activeElement===s&&(i.focus(),n.preventDefault()):document.activeElement===i&&(s.focus(),n.preventDefault()))})}get hideTrigger(){return this.getAttribute("data-hide-trigger")}get triggerType(){return this.getAttribute("data-trigger-type")}get triggerText(){return this.getAttribute("data-trigger-text")}get triggerException(){return this.getAttribute("data-trigger-exception")}get openByDefault(){return this.hasAttribute("data-default-open")}};customElements.define("modal-window",er);var tr=class extends HTMLElement{subscription;endpoint="/.netlify/functions/billing";endpointSSO="/.netlify/functions/sso-billing";constructor(){super(),this.init().catch(e=>console.log(e))}setState(e){this.setAttribute("data-user-billing-state",e)}getState(){return this.getAttribute("data-user-billing-state")}showActionError(e,{redirectToLogin:t=!1}={}){let s=this.querySelector("#billingActionError");if(!s)return;let i=this.querySelector("#loader");i&&i.remove(),s.querySelector("#billingActionErrorText").textContent=e,s.style.display="flex",s.scrollIntoView({behavior:"smooth",block:"center"}),t&&setTimeout(()=>{window.location.href=`/login/?redirectUrl=${encodeURIComponent(window.location.pathname)}`},3e3)}clearActionError(){let e=this.querySelector("#billingActionError");e&&(e.style.display="none")}wireupEvents(){if(this.querySelector("modal-window [data-trigger]").addEventListener("click",t=>{typeof gtag=="function"&&gtag("event","cancel-init"),typeof Intercom=="function"&&Intercom("trackEvent","cancel-init")}),this.querySelector("#cancelModalConfirmTrigger").addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),this.querySelector("#billingCancelModal modal-window").close(),this.querySelector("#billingCancelModalConfirm modal-window").open()}),new URLSearchParams(window.location.search).has("canceled-immediate")){let t=this.querySelector("#billingCancelImmediately");t.style.display="flex",setTimeout(()=>{t.style.display="none"},"5000")}}bindSubscriptionData(){this.querySelector("#billingStatementsLink").href=`${this.endpointSSO}?type=statements`,this.querySelector("#billinUpdateCCLink").href=`${this.endpointSSO}?type=update-cc`,this.querySelectorAll(".billing-renewal-date").forEach(e
87=>{e.innerHTML=new Date(this.subscription.next_assessment_at).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}),this.querySelectorAll(".expiration-date").forEach(e=>{e.innerHTML=new Date(this.subscription.canceled_at).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}),this.querySelectorAll(".billing-product-name").forEach(e=>{e.innerHTML=this.subscription.productName}),this.subscription.cancel_at_end_of_period?(this.querySelector("#billingAutoPayOnBanner").style.display="none",this.querySelector(".vip-autopay__controls input").checked=!1,this.querySelector("#billingAutoPayModal").remove(),this.querySelector("#billingNonRenewBanner")&&this.subscription.state==="active"&&this.querySelector("#billingNonRenewBanner").removeAttribute("style"),this.querySelector("#billingStatusActive")&&(this.querySelector("#billingStatusActive").style.display="none"),this.querySelector(".vip-autopay__controls input").checked=!1,this.querySelector(".vip-autopay__controls").addEventListener("click",async e=>{e.preventDefault(),e.stopPropagation();let t=this.querySelector(".vip-autopay__controls input");t.checked=!0,this.clearActionError();try{let s=await fetch(`${this.endpoint}?id=${this.subscription.stripeId}`,{method:"PUT"});if(s.status===401){t.checked=!1,this.showActionError("Your session has expired. Please log in again to manage your subscription.",{redirectToLogin:!0});return}if(!s.ok){let r=await s.text().catch(()=>"");if(/no such subscription/i.test(r)){t.checked=!1,this.showActionError("We couldn't find that subscription \u2014 it may have already changed. Please refresh the page and try again.");return}t.checked=!1,this.showActionError("We couldn't reactivate your subscription. Please try again, or contact us if this keeps happening.");return}let{success:i}=await s.json();if(!i){t.checked=!1,this.showActionError("Your subscription couldn't be reactivated. Please refresh the page and try again.");return}window.location.reload()}catch{t.checked=!1,this.showActionError("We couldn't reach the server. Check your internet connection and try again.")}})):(this.querySelector("#billingAutoPayOffBanner")&&(this.querySelector("#billingAutoPayOffBanner").style.display="none"),this.querySelector(".vip-autopay__controls input")&&(this.querySelector(".vip-autopay__controls input").checked=!0))}assignState(){if(!this.subscription)this.setState("empty");else if(this.subscription.stripeId)switch(this.subscription.state){case"active":case"trialing":this.setState("active-subscription");break;case"past_due":this.setState("past_due");break;case"suspended":this.setState("suspended");break;case"canceled":this.setState("canceled-subscription");break;case"expired":this.setState("expired-subscription");break}else if(this.subscription.state==="active")this.subscription.isNonRenewingAap?this.setState("active-nonrenew"):this.setState("active-bundle");else switch(this.subscription.state){case"cancelled":case"canceled":this.setState("canceled-nosubscription");break;case"expired":this.setState("expired-nosubscription");break}}bindState(){let e=this.getState();this.querySelectorAll("[data-visible-state]").forEach(t=>{t.getAttribute("data-visible-state").split(",").map(i=>i.trim()).includes(e)?t.style.display="":t.style.display="none"}),this.querySelector("#loader").remove(),this.querySelector("#billingDetails").style.display="block"}findSubscriptionByPriority(e){e?.length&&(e.sort((t,s)=>new Date(s.created_at)-new Date(t.created_at)),this.subscription=e.find(({state:t,stripeId:s})=>s&&["active","trialing "].includes(t?.toLowerCase())),this.subscription||(this.subscription=e.find(({state:t})=>["active","trialing "].includes(t?.toLowerCase()))),this.subscription||(this.subscription=e.find(({state:t,stripeId:s})=>s&&["past_due","suspended"].includes(t?.toLowerCase()))),this.subscription||(e.sort((t,s)=>new Date(s.canceled_at)-new Date(t.canceled_at)),this.subscription=e[0]))}async loadCertificationData(){let e=await fetch("/.netlify/functions/certifications"),{certifications:t,deletedCertifications:s}=await e.json(),i=t.filter(m=>new Date(m.Expires_On__c)>=new Date),r=t.filter(m=>new Date(m.Expires_On__c)<new Date),n=this.querySelector("#billingActiveCerts"),o=n.querySelector("ul"),l=this.querySelector("#billingExpiredCerts"),c=l.querySelector("ul"),u=this.querySelector("#billingDeletedCerts"),d=u.querySelector("ul"),h=s.filter(m=>!t.some(f=>f.Program__r.Alias__c===m.Program_Alias__c));
87i?.length&&(n.style.display="",i.forEach(m=>{let f=document.createElement("li");f.innerHTML=`${m.Program__r.Name} - Expires on ${new Date(m.Expires_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}`,o.appendChild(f)})),r?.length&&(l.style.display="",r.forEach(m=>{let f=document.createElement("li");f.innerHTML=`${m.Program__r.Name} - Expired on ${new Date(m.Expires_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}`,c.appendChild(f)})),h?.length&&(u.style.display="",h.forEach(m=>{let f=document.createElement("li");f.innerHTML=`${m.Program_Alias__c} - Revoked on ${new Date(m.Expires_On__c).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}`,d.appendChild(f)})),t.length||s.length||(this.querySelector("#billingCertificationDetails").style.display="none")}async init(){let e;try{let t=await fetch(this.endpoint);if(t.status===401){this.showActionError("Your session has expired. Please log in again to view your billing details.",{redirectToLogin:!0});return}if(!t.ok){this.showActionError("We couldn't load your billing details. Please refresh the page, or contact us if this keeps happening.");return}e=await t.json()}catch{this.showActionError("We couldn't reach the server. Check your internet connection and try again.");return}this.findSubscriptionByPriority(e),this.subscription&&this.bindSubscriptionData(),this.assignState(),this.wireupEvents(),["empty","canceled-subscription","canceled-nosubscription","expired-subscription","expired-nosubscription"].includes(this.getState())&&await this.loadCertificationData(),this.bindState()}};customElements.define("user-billing",tr);function Ya(){let a=function(r){let n=document.querySelector(".toc__menu"),{bottom:o,height:l,top:c}=r.getBoundingClientRect(),u=n.getBoundingClientRect();(c<=u.top?u.top-c<=l:o-u.bottom<=l)||(n.scrollTop=r.offsetTop-u.height+l)},e=(r,n)=>{r.forEach(o=>{if(o.isIntersecting){let l=document.querySelector("nav .toc__anchor.active"),c=o.target.getAttribute("id"),u=document.querySelector(`nav .toc__anchor[href="#${c}"]`);u&&l&&l.classList.remove("active"),u&&(u.classList.add("active"),a(u))}})},t={root:null,rootMargin:"0px 0px -90%",threshold:0},s=new IntersectionObserver(e,t);document.querySelectorAll("[data-toc-heading]").forEach(r=>{s.observe(r)})}var sr=class extends HTMLElement{#e;bundles=[];constructor(){super(),this.newBundleSubscriptionId=Number(new URL(window.location.href).searchParams.get("subscriptionId"))||void 0;let e=X();this.querySelector("select").addEventListener("change",t=>{this.selectBundle(t.currentTarget.value)}),this.loadBundles().catch(t=>console.error(t))}async selectBundle(e){let t=this.bundles.find(s=>s.Id===e);await this.querySelector("membership-bundle").setBundle(t)}async loadBundles(){let e=await fetch("/.netlify/functions/bundles");if(this.bundles=await e.json()||[],this.newBundleSubscriptionId&&!this.bundles.some(i=>i.Chargify_Subscription_Id__c===this.newBundleSubscriptionId)){setTimeout(()=>{this.loadBundles().catch(i=>console.error(i))},1e3);return}this.bundles.sort((i,r)=>i.Chargify_Status__c==="Active"&&r.Chargify_Status__c!=="Active"?-1:i.Chargify_Status__c!=="Active"&&r.Chargify_Status__c==="Active"?1:0);let t=this.querySelector("select"),s=this.querySelector("membership-bundle");if(this.bundles.length>0){for(let r of this.bundles){let n=document.createElement("option");n.value=r.Id,n.innerText=r.Name,r.Chargify_Subscription_Id__c===this.newBundleSubscriptionId&&(n.selected=!0),t.appendChild(n)}let i=this.newBundleSubscriptionId&&this.bundles.find(r=>r.Chargify_Subscription_Id__c===this.newBundleSubscriptionId)||this.bundles[0];await s.setBundle(i),this.querySelector("#loader").remove(),this.newBundleSubscriptionId&&this.querySelector("#newPurchaseBanner").classList.remove("visually-hidden"),s.classList.remove("visually-hidden"),this.querySelector("#bundle-list-info").classList.remove("visually-hidden"),this.querySelector("#bundle-list-explainer").remove(),this.bundles.length<=1&&this.querySelector("#bundle-list-selection").classList.add("visually-hidden"),this.querySelector("#bundle-learn-more").remove()}else this.querySelector("#bundle-list-info").classList.remove("visually-hidden"),this.querySelector("#loader").remove(),this.querySelector("#bundle-list-selection").remove(),this.querySelector("#bundle-list-download").remove()}};customElements.define("membership-bundle-list",sr);var ir=class extends HTMLElement{#e=null;#t=null;constructor(){super();let e=navigator.share,t=navigator.clipboard,s=this.querySelector("#shareButton"),i=this.querySelector("#copyButton"),r=this.querySelector("#copyFeedback");e&&(s.classList.remove("hidden"),s.addEventListener("click",n=>this.shareRegistrationUrl())),t&&(i.classList.remove("hidden"),i.addEventListener("click",n=>this.copyRegistrationUrl()))}copyRegistrationUrl(){let e=this.querySelector("#share").dataset.url;navigator.clipboard.writeText(e),copyFeedback.classList.remove("hidden"),setTimeout(function(){copyFeedback.classList.add("hidden")},3e3)}shareRegistrationUrl(){let e=this.querySelector("#share").dataset.url;navigator.share({title:"OCEG Seat Registration URL",text:"OCEG Seat Registration URL:",url:e})}async refreshUsers(){let e=this.querySelector("template"),t=this.querySelector("#activeUsers"),s=this.querySelector("#inactiveUsers"),i=this.querySelector("#activeUsers table tbody"),r=this.querySelector("#inactiveUsers table tbody"),n=l=>l.Status==="Active",o=l=>l.Status!=="Cancelled";if(!this.#e){let l=await fetch(`/.netlify/functions/bundles?bundleId=${this.#t.Id}`);this.#e=await l.json()}this.#e.some(n)?t.classList.remove("visually-hidden"):t.classList.add("visually-hidden"),this.#e.some(o)?s.classList.remove("visually-hidden"):s.classList.add("visually-hidden"),i.innerHTML="",r.innerHTML="",this.#e.sort((l,c)=>l.LastName?.localeCompare(c.LastName)),this.#e.forEach(l=>{let c=e.content.cloneNode(!0);c.querySelector("[name=user-name]").innerText=`${l.LastName}, ${l.FirstName}`,c.querySelector("[name=user-email] a").innerText=l.Email,c.querySelector("[name=user-email] a").href+=l.Email,c.querySelector("[name=user-certifications]").innerText=l.Certification_Aliases__c?.split(",").map(d=>d.trim()).filter(d=>!!d).join(", ")||"";let u=c.querySelector("[name=user-actions] button");switch(u.setAttribute("data-user-id",l.Id),l.Status){case"Active":u.addEventListener("click",d=>
87this.deactivateUser(d.currentTarget.dataset.userId)),u.innerHTML='<span>Deactivate</span> <svg aria-hidden="true" focusable="false" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M12.08 22c-5.524 0-10-4.477-10-10s4.476-10 10-10c5.522 0 10 4.477 10 10s-4.478 10-10 10Zm0-11.414L9.25 7.757 7.836 9.172 10.666 12l-2.83 2.828 1.415 1.415 2.828-2.829 2.828 2.829 1.415-1.415L13.493 12l2.83-2.828-1.416-1.415-2.828 2.829Z"/></svg>',u.setAttribute("data-type","primary"),i.appendChild(c);break;case"Cancelled":u.addEventListener("click",d=>this.reactivateUser(d.currentTarget.dataset.userId)),u.innerHTML='<span>Reactivate</span> <svg aria-hidden="true" focusable="false" viewBox="0 0 34 34" xmlns="http://www.w3.org/2000/svg" fill="none"><path fill="currentColor" d="M17.001 33.667C7.796 33.667.334 26.205.334 17 .334 7.795 7.796.333 17.001.333 26.206.333 33.668 7.795 33.668 17c0 9.205-7.462 16.667-16.667 16.667Zm-1.662-10 11.784-11.785-2.357-2.357-9.427 9.428-4.715-4.715-2.356 2.357 7.071 7.072Z"/></svg>',u.setAttribute("data-type","secondary"),r.appendChild(c);break;default:u.remove(),r.appendChild(c);break}})}getButton(e){return this.querySelector(`button[data-user-id="${e}"]`)}reactivateUser(e){this.#e.find(t=>t.Id===e).Status="Active",this.refreshUsers(),fetch(`/.netlify/functions/bundles?bundleId=${this.#t.Id}&userId=${e}`,{method:"POST"})}deactivateUser(e){this.#e.find(t=>t.Id===e).Status="Cancelled",this.refreshUsers(),fetch(`/.netlify/functions/bundles?bundleId=${this.#t.Id}&userId=${e}`,{method:"DELETE"})}async setBundle(e){this.#t=e;let t=this.querySelector("#bundle-progress-stepper"),s=this.querySelector("#bundle-progress-bar"),i="",r=e?.Seats__c||0,n=e?.User_Count__c||0,o=this.querySelector("#bundle-heading"),l=this.querySelector("#bundle-seats-count"),c=this.querySelector("#bundle-end-date"),u=this.querySelector("#share"),d=this.querySelector("#share-url-text");switch(!0){case(e?.Chargify_Status__c&&e?.Chargify_Status__c==="Active"):i=`<span class="badge font-base" data-type="default">${e?.Chargify_Status__c}</span>`;break;case(e?.Chargify_Status__c&&e?.Chargify_Status__c!=="Active"):i=`<span class="badge font-base" data-type="tertiary">${e?.Chargify_Status__c}</span>`;break;default:i='<span class="badge font-base" data-type="default">Active</span>';break}switch(t.innerHTML="",!0){case(r>10&&r!==n):s.classList.remove("visually-hidden"),t.classList.add("visually-hidden"),u.classList.remove("visually-hidden"),l.innerText=`Activations Remaining: ${r-n} / ${r}`,s.setAttribute("value",n),s.setAttribute("max",r);break;case(r<=10&&r!==n):t.classList.remove("visually-hidden"),s.classList.add("visually-hidden"),u.classList.remove("visually-hidden"),l.innerText=`Activations Remaining: ${r-n} / ${r}`;for(let h=0;h<n;h++)t.innerHTML+='<li class="active"></li>';for(let h=n;h<r;h++)t.innerHTML+="<li></li>";break;case r===n:s.classList.add("visually-hidden"),t.classList.add("visually-hidden"),u.classList.add("visually-hidden"),l.innerHTML=`Activations Remaining: 0 / ${r} <i class="badge ml-2xs not-italic" data-type="primary" data-size="small">Full</i>`;break}if(o.innerText=e?.Name,o.innerHTML+=i,c.innerText=e?.ExpirationDate__c,e.Stripe_Subscription_Id__c?(this.querySelector("#edit-bundle-support").classList.add("visually-hidden"),this.querySelector("#edit-bundle-stripe").classList.remove("visually-hidden"),this.querySelector("#editBundleBtn").href="/.netlify/functions/sso-billing?type=update-bundle&sub="+e?.Stripe_Subscription_Id__c,this.querySelector("#statementsBtn").href="/.netlify/functions/sso-billing?type=statements&sub="+e?.Stripe_Subscription_Id__c,this.querySelector("#ccBtn").href="/.netlify/functions/sso-billing?type=update-cc&sub="+e?.Stripe_Subscription_Id__c):(this.querySelector("#edit-bundle-support").classList.remove("visually-hidden"),this.querySelector("#edit-bundle-stripe").classList.add("visually-hidden")),e?.ActivationKey__c){let h=window.location.port&&window.location.port!==443&&window.location.port!==80?`:${window.location.port}`:"",m=`${window.location.protocol}//${window.location.hostname}${h}/user/bundle/${e?.ActivationKey__c}/join/`;u.setAttribute("data-url",m),d.innerHTML=`<code>${m}</code>`,this.querySelector("#share").classList.remove("visually-hidden")}else this.querySelector("#share").classList.add("visually-hidden");e?.Chargify_Status__c!=="Active"&&(this.querySelector("#share").classList.add("visually-hidden"),this.querySelector("#edit-bundle-support").classList.add("visually-hidden"),this.querySelector("#editBundleBtn").classList.add("visually-hidden")),this.#e=null,await this.refreshUsers()}};customElements.define("membership-bundle",ir);var rr=class extends HTMLElement{subscription;endpoint="/.netlify/functions/billing";constructor(){super(),this.init().catch(i=>console.log(i)),this.loader=this.querySelector("#loader");let e=document.querySelector("[data-cancellation-menu]"),t=document.querySelector("[data-more-info]"),s="other";t.style.display="none",e.addEventListener("change",i=>{e.value?.toLowerCase()===s?t.style.display="":t.style.display="none"}),this.querySelector("a[data-skip-step]").addEventListener("click",i=>{i.preventDefault(),this.cancelSubscription().then(()=>{let r=this.dataset.type==="immediate";window.location.replace(`/user/billing/?${r?"canceled-immediate":"canceled-autopay"}`)}).catch(r=>console.log(r))})}cancelSubscription=async function(){let e=this.querySelector("[name=feedback]").value,t=e?this.querySelector("[name=feedback] option:checked").innerText:"",s;switch(e?.toLowerCase()){case"changed_jobs":s="switched_service";break;case"not_expected":s="low_quality";break;case"too_difficult":s="too_complex";break;case"cert_topics":s="missing_features";break;case"no_need":s="unused";break;case"not_reimbursed":s="too_expensive";break;case"content":s="low_quality";break;case"not_recognized":s="low_quality";break;case"other":s="other",t=this.querySelector("[name=more-information]").value;break;default:s="other";break}t+=`\r
88\r
89Immediate cancellation: `+(this.dataset.type==="immediate"?"Yes":"No");let i=this.dataset.type==="immediate",r=await fetch(`${this.endpoint}?id=${this.subscription.stripeId}&immediate=${i}&feedback=${encodeURIComponent(s)}&comment=${encodeURIComponent(t)}`,{method:"DELETE"});if(this.loader.style.display="block",typeof gtag=="function"&&gtag("event",i?"cancel":"autopay-off"),!r.ok)throw alert("There was an error cancelling your subscription. Please try again."),new Error("Could not cancel subscription")};
89async init(){try{let e=X(),[t,s]=e?.name?.split(" "),i=this.querySelector("input#subId"),r=this.querySelector("input#email"),n=this.querySelector("input#firstName"),o=this.querySelector("input#lastName"),l=this.querySelector("form"),c=await fetch(this.endpoint),u=await c.json();if(u=u?.filter(({stripeId:d})=>d)||[],!u?.length)throw new Error("No subscriptions found");if(u.sort((d,h)=>new Date(d.created_at)-new Date(h.created_at)),this.subscription=u.find(({state:d})=>d?.toLowerCase()==="active"||d?.toLowerCase()==="trialing"),this.subscription||(this.subscription=u.find(({state:d})=>d?.toLowerCase()==="past_due"||d?.toLowerCase()==="suspended")),!this.subscription){console.log("No active, trialing, past due, or suspended subscription found"),window.location.replace("/user/billing/?no-subscription");return}i.value=this.subscription.stripeId,r.value=e.email,n.value=t,o.value=s,l.addEventListener("submit",d=>{d.preventDefault();let h=d.target,m=new FormData(h);this.loader.style.display="block",this.cancelSubscription().then(()=>{fetch("/",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(m).toString()}).finally(()=>{let f=this.dataset.type==="immediate";window.location.replace(`/user/billing/?${f?"canceled-immediate":"canceled-autopay"}`)})}).catch(f=>{alert("There was an error cancelling your subscription. Please try again."),console.log(f)})})}catch(e){console.log(e)}}};customElements.define("cancellation-reason",rr);var nr=class extends HTMLElement{constructor(){super();let e={month:"long",day:"numeric"},t={hour:"numeric",minute:"numeric"},s=Intl.DateTimeFormat("default",e),i=Intl.DateTimeFormat("default",t),{timeZone:r}=s.resolvedOptions();if(!this.sourceDateTime)return;let n="";switch(this.formatType){case"date":n=s.format(this.sourceDateTime);break;case"time":n=i.format(this.sourceDateTime);break;case"timezone":n=`(${r})`;break}n.length&&(this.innerHTML=n)}get sourceDateTime(){try{return new Date(this.getAttribute("data-datetime-source"))}catch{return!1}}get formatType(){return this.getAttribute("data-datetime-type")||"date"}};customElements.define("date-time-formatter",nr);var ar=class extends HTMLElement{constructor(){super();let e=7,t=70,s=t/2,i=s-e*2,r=t*.45;this._circumference=i*2*Math.PI,this.innerHTML=`
90    <div class="progress-indicator">
91      <div class="progress-indicator__visual">
92        <div data-progress-count class="progress-indicator__count"></div>
93        <svg 
94          fill="none" 
95          viewBox="0 0 ${t} ${t}"
96          width="${t}"
97          height="${t}"
98          focusable="false"
99          class="progress-indicator__circle"
100        >
101          <circle 
102            r="${i}"
103            cx="${s}"
104            cy="${s}"
105            stroke-dasharray="${this._circumference} ${this._circumference}"
106            stroke-width="${e}"
107            style="stroke-dashoffset:${this._circumference}"
108          />
109          <circle 
110            r="${i}"
111            cx="${s}"
112            cy="${s}"
113            stroke-width="${e}"
114            opacity=".5"
115          />
116        </svg>
117        <svg 
118          class="progress-indicator__check"
119          focusable="false" 
120          viewBox="0 0 20 20" 
121          fill="none"
122          width="${r}"
123          height="${r}"
124        >
125          <path d="m8.335 12.643 7.66-7.66 1.179 1.178L8.334 15 3.032 9.697 4.21 8.518l4.125 4.125Z" fill="currentColor"/>
126        </svg>
127      </div>
128      ${this.tooltip?`
129      <div class="progress-indicator__tooltip">${this.tooltip}</div>
130      `:""}
131    </div>
132    <style>
133
134    </style>
135  `}setProgress(e){let t=this._circumference-e/100*this._circumference,s=this.querySelector("circle"),i=this.querySelector("[data-progress-count]");s.style.strokeDashoffset=t,i.innerText=`${e}%`,e>=this.completedValue?this.setAttribute("data-progress-state","complete"):this.removeAttribute("data-progress-state")}static get observedAttributes(){return["data-progress"]}get completeMessage(){return this.getAttribute("data-complete-message")}get tooltip(){return this.getAttribute("data-tooltip")}get completedValue(){return this.hasAttribute("data-completed-value")?parseInt(this.getAttribute("data-completed-value")):100}attributeChangedCallback(e,t,s){e==="data-progress"&&this.setProgress(s)}};customElements.define("progress-indicator",ar);var or=class extends HTMLElement{constructor(){super(),this.init()}init=async function(){let t=X();if(!t)return;let s=this.querySelector(".user-info-bar"),i=this.querySelector("[data-user-name]"),r=this.querySelector("[data-user-email]"),n=this.querySelector("[data-user-membership]"),o="";switch(!0){case(t.roles?.includes("Certification")&&!t.roles?.includes("Enterprise")):o="Pro";break;case(t.roles?.includes("Certification")&&t.roles?.includes("Enterprise")):o="Pro (Team)";break;case(t.roles?.includes("Premium")&&!t.roles?.includes("Certification")):o="Starter";break;default:o="Basic";break}s.removeAttribute("style"),i.textContent=t.name,r.textContent=t.email,n.textContent=o}};customElements.define("user-info-bar",or);var lr=class extends HTMLElement{constructor(){super(),this.init()}init=async function(){let t=getUser();if(!t)return;let s=this.querySelector('.banner[data-type="warning"]'),i=this.querySelector('.banner[data-type="success"]');switch(!0){case window.location.search.includes("?success"):i.removeAttribute("style");break;case(!t.tags?.includes("onboarding-complete")&&t.tags?.includes("free")):s.removeAttribute("style");break}}};customElements.define("user-onboarding-banner",lr);var cr=class extends HTMLElement{constructor(){super(),this.items=[]}connectedCallback(){this.feedParent=this.querySelector("[data-user-activity-feed-parent]"),this.emptyState=this.querySelector('[data-user-activity-state="empty"]'),this.hasItemsState=this.querySelector('[data-user-activity-state="hasItems"]'),this.loader=this.querySelector("[data-user-activity-loader]"),this.showAllControl=this.querySelector("[data-user-activity-show-all]"),this.loadItems().then(e=>{e.length&&(this.items=e),this.render()}),this.showAllControl&&this.showAllControl.addEventListener("click",()=>{this.itemsLimit=100,this.render()})}async loadItems(){return(await fetch("/.netlify/functions/activity",{credentials:"same-origin"})).json()}render(){if(this.loader.setAttribute("hidden",""),!this.items.length){this.hasItemsState.setAttribute("hidden",""),this.emptyState.removeAttribute("hidden");return}this.emptyState.setAttribute("hidden",""),this.hasItemsState.removeAttribute("hidden");let e=this.items.slice(0,this.itemsLimit).map(t=>this.renderItem(t));e.length>=this.items.length&&this.showAllControl&&this.showAllControl.remove(),this.feedParent.innerHTML=e.join(" ")}renderItem(e){return`
136      <a href="/${e.url}" class="card">
137        <div class="card__copy">
138          <div class="card__central flow">
139            <h3 class="card__hed">${e.name}</h3>
140            <div class="card__meta">
141              <div class="card__tags">
142                <span style="text-transform: capitalize"><strong>${e.type=="watch"?"Video":e.type}</strong></span>
143              </div>
144            </div>
145          </div>
146        </div>
147      </a>
148    `}get itemsLimit(){return parseInt(this.getAttribute("data-limit")||10)}set itemsLimit(e){this.setAttribute("data-limit",e)}};customElements.define("user-activity",cr);var ur=class extends HTMLElement{constructor(){super();let e=X();switch(this.result="",this.userState="",!0){case(e.roles.includes("Premium")&&e.roles.includes("Certification")):this.userState="pro";break;case(e.roles.includes("Premium")&&!e.roles.includes("Certification")):this.userState="starter";break;default:this.userState="basic";break}this.messagingData=this.messaging.find(t=>t.plan===this.userState),this.getActivityCard().then(()=>this.getCPECard()).then(()=>this.getCertificationsCard()).then(()=>{this.innerHTML=`
149        <div class="activity-card-list cluster gutter-s">${this.result}</div>
150      `})}async getActivityCard(){let t=await(await fetch("/.netlify/functions/activity",{credentials:"same-origin"})).json(),s={title:"Resources & Webinars",cardState:"active",count:t.length,summary:this.messagingData?.resources[t.length?"progress":"empty"]};this.result=this.result+this.renderCard(s)}async getCPECard(){let t=await(await fetch("/.netlify/functions/cpe",{credentials:"same-origin"})).json(),s={title:"Tracked CPE Credits",cardState:this.userState==="pro"?"active":"inactive",count:t.length,summary:this.messagingData?.cpe[t.length?"progress":"empty"]};this.result=this.result+this.renderCard(s)}async getCertificationsCard(){let t=await(await fetch("/.netlify/functions/certifications",{credentials:"same-origin"})).json(),s={title:"Certifications Completed",cardState:this.userState==="pro"?"active":"inactive",count:t?.certifications?.length,summary:this.messagingData?.certification[t?.certifications?.length?"progress":"empty"]};this.result=this.result+this.renderCard(s)}renderCard(e){return`
151      <div class="activity-card" data-activity-card-state="${e.cardState}">
152        <div class="activity-card__inner">
153          <h3 class="activity-card__heading">${e.title}</h3>
154          <span class="activity-card__number">${e.count}</span>
155          ${e.summary}
156        </div>
157      </div>
158    `}get messaging(){try{return JSON.parse(this.getAttribute("data-messaging")||"{}")}catch(e){return console.error(e),{}}}};customElements.define("user-activity-tiles",ur);var dr=class extends HTMLElement{constructor(){super(),this.init()}renderCertifications=async function(e=[],t=[]){let s=t.reduce((c,u)=>(c[u.group_id]=u,c),{}),i=getUser();if(i.tags.includes("free"))return;let r=this.querySelector("#loader");r&&r.remove();let n=document.querySelector('[data-feed-type="certs-only"]'),o=document.querySelector(".eyebrow"),l=i.tags.find(c=>c.indexOf("focus-")===0);if(!e.length&&n&&(document.querySelector('[data-state="certs-only-empty"]').removeAttribute("style"),o.removeAttribute("style")),!e.length&&!l&&!n&&(document.querySelector('[data-state="no-cert-empty"]').removeAttribute("style"),o.removeAttribute("style")),!e.length&&l&&!n){let c=l.replace("focus-",""),u=document.querySelector('[data-state="no-cert-focus"]'),d=u.querySelector(".focus-certification"),h=u.querySelector(".focus-certification-link");u.removeAttribute("style"),d.textContent=`${c.toUpperCase()} certification`,h.href=`/certifications/${c.toLowerCase()}/focus/`,o.removeAttribute("style")}if(e.length){let c="",u=document.querySelector('[data-state="certified"]'),d=u.querySelector("#certified-state-list");d.innerHTML="",u.removeAttribute("style"),o.removeAttribute("style"),e.forEach(h=>{let m=s[h.Accredible_Group_ID__c];m&&(c=`
159            <article class="flow lg:max-w-[33%] flex flex-col justify-between">
160              <div>
161                <img src="${m.badge.image.preview}" width="200" height="200" class="mb-xs" />
162                <h3 class="text-step-1 max-w-[20ch]">${h.Program__r.Name}</h3>
163              </div>
164              <p>
165                <a href="/.netlify/functions/sso-certs?group_id=${encodeURIComponent(h.Accredible_Group_ID__c)}" class="button">Download my certificate</a>
166              </p>
167            </article>
168          `,d.innerHTML+=c)})}};init=async function(){try{let e="/.netlify/functions/certifications";this.dataset.certification&&(e+=`?certification=${encodeURIComponent(this.dataset.certification)}`);let s=await(await window.fetch(e,{credentials:"same-origin"})).json();this.renderCertifications(s.certifications,s.certificates)}catch(e){console.log(e)}}};customElements.define("earned-certificates",dr);function Xc(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var Vo={exports:{}};(function(a,e){(function(t){var s=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,i=/^(?=([^\/?#]*))\1([^]*)$/,r=/(?:\/|^)\.(?=\/)/g,n=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,o={buildAbsoluteURL:function(l,c,u){if(u=u||{}
vendor: 4,232 bytes, line 168
168,l=l.trim(),c=c.trim(),!c){if(!u.alwaysNormalize)return l;var d=o.parseURL(l);if(!d)throw new Error("Error trying to parse base URL.");return d.path=o.normalizePath(d.path),o.buildURLFromParts(d)}var h=o.parseURL(c);if(!h)throw new Error("Error trying to parse relative URL.");if(h.scheme)return u.alwaysNormalize?(h.path=o.normalizePath(h.path),o.buildURLFromParts(h)):c;var m=o.parseURL(l);if(!m)throw new Error("Error trying to parse base URL.");if(!m.netLoc&&m.path&&m.path[0]!=="/"){var f=i.exec(m.path);m.netLoc=f[1],m.path=f[2]}m.netLoc&&!m.path&&(m.path="/");var g={scheme:m.scheme,netLoc:h.netLoc,path:null,params:h.params,query:h.query,fragment:h.fragment};if(!h.netLoc&&(g.netLoc=m.netLoc,h.path[0]!=="/"))if(!h.path)g.path=m.path,h.params||(g.params=m.params,h.query||(g.query=m.query));else{var y=m.path,T=y.substring(0,y.lastIndexOf("/")+1)+h.path;g.path=o.normalizePath(T)}return g.path===null&&(g.path=u.alwaysNormalize?o.normalizePath(h.path):h.path),o.buildURLFromParts(g)},parseURL:function(l){var c=s.exec(l);return c?{scheme:c[1]||"",netLoc:c[2]||"",path:c[3]||"",params:c[4]||"",query:c[5]||"",fragment:c[6]||""}:null},normalizePath:function(l){for(l=l.split("").reverse().join("").replace(r,"");l.length!==(l=l.replace(n,"")).length;);return l.split("").reverse().join("")},buildURLFromParts:function(l){return l.scheme+l.netLoc+l.path+l.params+l.query+l.fragment}};a.exports=o})()})(Vo);var Bn=Vo.exports;function za(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(i){return Object.getOwnPropertyDescriptor(a,i).enumerable})),t.push.apply(t,s)}return t}function Be(a){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?za(Object(t),!0).forEach(function(s){Zc(a,s,t[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(t)):za(Object(t)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(t,s))})}return a}function Jc(a,e){if(typeof a!="object"||!a)return a;var t=a[Symbol.toPrimitive];if(t!==void 0){var s=t.call(a,e||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(a)}function Qc(a){var e=Jc(a,"string");return typeof e=="symbol"?e:String(e)}function Zc(a,e,t){return e=Qc(e),e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function Pe(){return Pe=Object.assign?Object.assign.bind():function(a){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(a[s]=t[s])}return a},Pe.apply(this,arguments)}var Z=Number.isFinite||function(a){return typeof a=="number"&&isFinite(a)},eu=Number.isSafeInteger||function(a){return typeof a=="number"&&Math.abs(a)<=tu},tu=Number.MAX_SAFE_INTEGER||9007199254740991,p=function(a){return a.MEDIA_ATTACHING="hlsMediaAttaching",a.MEDIA_ATTACHED="hlsMediaAttached",a.MEDIA_DETACHING="hlsMediaDetaching",a.MEDIA_DETACHED="hlsMediaDetached",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.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.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_FRAG_PROCESSED="hl
168sSubtitleFragProcessed",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}({}),le=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}({}),D=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.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.INTERNAL_EXCEPTION="internalException",a.INTERNAL_ABORTED="aborted",a.UNKNOWN="unknown",a}({}),Ct=function(){},_r={trace:Ct,debug:Ct,log:Ct,warn:Ct,info:Ct,error:Ct},ts=_r;function su(a){let e=self.console[a];return e?e.bind(self.console,`[${a}] >`):Ct}function iu(a,...e){e.forEach(function(t){ts[t]=a[t]?a[t].bind(a):su(t)})}function ru(a,e){if(typeof console=="object"&&a===!0||typeof a=="object"){iu(a,"debug","log","info","warn","error");try{ts.log(`Debug logs enabled for "${e}" in hls.js version 1.5.17`)}catch{ts=_r}}else ts=_r}var I=ts,nu=/^(\d+)x(\d+)$/,Xa=/(.+?)=(".*?"|.*?)(?:,|$)/g,Re=class{constructor(e){typeof e=="string"&&(e=Re.parseAttrList(e)),Pe(this,e)}get clientAttrs(){return Object.keys(this).filter(e=>e.substring(0,2)==="X-")}decimalInteger(e){let 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;let s=new Uint8Array(t.length/2);for(let i=0;i<t.length/2;i++)s[i]=parseInt(t.slice(i*2,i*2+2),16);return s}else return null}hexadecimalIntegerAsNumber(e){let t=parseInt(this[e],16);return t>Number.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){let s=this[e];return s?parseFloat(s):t}enumeratedString(e){return this[e]}bool(e){return this[e]==="YES"}decimalResolution(e){let t=nu.exec(this[e]);if(t!==null)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t,s={},i='"';for(Xa.lastIndex=0;(t=Xa.exec(e))!==null;){let r=t[2];r.indexOf(i)===0&&r.lastIndexOf(i)===r.length-1&&(r=r.slice(1,-1));let n=t[1].trim();s[n]=r}return s}};function au(a){return a!=="ID"&&a!=="CLASS"&&a!=="START-DATE"&&a!=="DURATION"&&a!=="END-DATE"&&a!=="END-ON-NEXT"}function ou(a){return a==="SCTE35-OUT"||a==="SCTE35-IN"}var Ps=class{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){let s=t.attr;for(let i in s)if(Object.prototype.hasOwnProperty.call(e,i)&&e[i]!==s[i]){I.warn(`DATERANGE tag attribute: "${i}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=i;break}e=Pe(new Re({}),s,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){let s=new Date(this.attr["END-DATE"]);Z(s.getTime())&&(this._endDate=s)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;let e=this.duration;return e!==null?new Date(this._startDate.getTime()+e*1e3):null}get duration(){if("DURATION"in this.attr){let e=this.attr.decimalFloatingPoint("DURATION");if(Z(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 isValid(){return!!this.id&&!this._badValueForSameId&&Z(this.startDate.getTime())&&(this.duration===null||this.duration>=0)&&(!this.endOnNext||!!this.class)}},jt=class{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}},Ee={AUDIO:"audio",VIDEO:"video",AUDIOVIDEO:"audiovideo"},Os=class{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[Ee.AUDIO]:null,[Ee.VIDEO]:null,[Ee.AUDIOVIDEO]:null},this.baseurl=e}setByteRange(e,t){let s=e.split("@",2),i;s.length===1?i=t?.byteRangeEndOffset||0:i=parseInt(s[1]),this._byteRange=[i,parseInt(s[0])+i]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=Bn.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}},ss=class extends Os{constructor(e,t){super(t),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new jt,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=e}get decryptdata(){let{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){let t=this.levelkeys.identity;if(t)this._decryptdata=t.getDecryptData(this.sn);else{let s=Object.keys(this.levelkeys);if(s.length===1)return this._decryptdata=this.levelkeys[s[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(this.programDateTime===null||!Z(this.programDateTime))return null;let e=Z(this.duration)?this.duration:0;return this.programDateTime+e*1e3}get encrypted(){var e;if((e=this._decryptdata)!=null&&e.encrypted)return!0;
vendor: 6,211 bytes, line 168
168if(this.levelkeys){let t=Object.keys(this.levelkeys),s=t.length;if(s>1||s===1&&this.levelkeys[t[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){let t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;(e=this.loader)==null||e.abort(),(t=this.keyLoader)==null||t.abort()}setElementaryStreamInfo(e,t,s,i,r,n=!1){let{elementaryStreams:o}=this,l=o[e];if(!l){o[e]={startPTS:t,endPTS:s,startDTS:i,endDTS:r,partial:n};return}l.startPTS=Math.min(l.startPTS,t),l.endPTS=Math.max(l.endPTS,s),l.startDTS=Math.min(l.startDTS,i),l.endDTS=Math.max(l.endDTS,r)}clearElementaryStreamInfo(){let{elementaryStreams:e}=this;e[Ee.AUDIO]=null,e[Ee.VIDEO]=null,e[Ee.AUDIOVIDEO]=null}},kr=class extends Os{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.stats=new jt,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;let 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(){let{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}},lu=10,Pr=class{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.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 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.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}reloaded(e){if(!e){this.advanced=!0,this.updated=!0;return}let 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,this.availabilityDelay=e.availabilityDelay}get hasProgramDateTime(){return this.fragments.length?Z(this.fragments[this.fragments.length-1].programDateTime):!1}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||lu}get drift(){let 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(){var e;return(e=this.fragments)!=null&&e.length?this.fragments[this.fragments.length-1].end: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 lastPartSn(){var e;return(e=this.partList)!=null&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}};function $n(a){return Uint8Array.from(atob(a),e=>e.charCodeAt(0))}function cu(a){let e=Or(a).subarray(0,16),t=new Uint8Array(16);return t.set(e,16-e.length),t}function uu(a){let e=function(s,i,r){let 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 du(a){let e=a.split(":"),t=null;if(e[0]==="data"&&e.length===2){let s=e[1].split(";"),i=s[s.length-1].split(",");if(i.length===2){let r=i[0]==="base64",n=i[1];r?(s.splice(-1,1),t=$n(n)):t=cu(n)}}return t}function Or(a){return Uint8Array.from(unescape(encodeURIComponent(a)),e=>e.charCodeAt(0))}var Wt=typeof self<"u"?self:void 0,Le={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},Ye={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.streamingkeydelivery",PLAYREADY:"com.microsoft.playready",WIDEVINE:"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"};function Ja(a){switch(a){case Ye.FAIRPLAY:return Le.FAIRPLAY;case Ye.PLAYREADY:return Le.PLAYREADY;case Ye.WIDEVINE:return Le.WIDEVINE;case Ye.CLEARKEY:return Le.CLEARKEY}}var es={CENC:"1077efecc0b24d02ace33c1e52e2fb4b",CLEARKEY:"e2719d58a985b3c9781ab030af78d30e",FAIRPLAY:"94ce86fb07ff4f43adb893d2fa968ca2",PLAYREADY:"9a04f07998404286ab92e65be0885f95",WIDEVINE:"edef8ba979d64acea3c827dcd51d21ed"};function Qa(a){if(a===es.WIDEVINE)return Le.WIDEVINE;if(a===es.PLAYREADY)return Le.PLAYREADY;if(a===es.CENC||a===es.CLEARKEY)return Le.CLEARKEY}function Za(a){switch(a){case Le.FAIRPLAY:return Ye.FAIRPLAY;case Le.PLAYREADY:return Ye.PLAYREADY;case Le.WIDEVINE:return Ye.WIDEVINE;case Le.CLEARKEY:return Ye.CLEARKEY}}function hr(a){let{drmSystems:e,widevineLicenseUrl:t}=a,s=e?[Le.FAIRPLAY,Le.WIDEVINE,Le.PLAYREADY,Le.CLEARKEY].filter(i=>!!e[i]):[];return!s[Le.WIDEVINE]&&t&&s.push(Le.WIDEVINE),s}var jo=function(a){return Wt!=null&&(a=Wt.navigator)!=null&&a.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null}();function hu(a,e,t,s){let i;switch(a){case Le.FAIRPLAY:i=["cenc","sinf"];break;case Le.WIDEVINE:case Le.PLAYREADY:i=["cenc"];break;case Le.CLEARKEY:i=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${a}`)}return fu(i,e,t,s)}function fu(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}
168"`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null})),videoCapabilities:t.map(r=>({contentType:`video/mp4; codecs="${r}"`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null}))}]}function _t(a,e,t){return Uint8Array.prototype.slice?a.slice(e,t):new Uint8Array(Array.prototype.slice.call(a,e,t))}var qn=(a,e)=>e+10<=a.length&&a[e]===73&&a[e+1]===68&&a[e+2]===51&&a[e+3]<255&&a[e+4]<255&&a[e+6]<128&&a[e+7]<128&&a[e+8]<128&&a[e+9]<128,Wo=(a,e)=>e+10<=a.length&&a[e]===51&&a[e+1]===68&&a[e+2]===73&&a[e+3]<255&&a[e+4]<255&&a[e+6]<128&&a[e+7]<128&&a[e+8]<128&&a[e+9]<128,rs=(a,e)=>{let t=e,s=0;for(;qn(a,e);){s+=10;let i=ni(a,e+6);s+=i,Wo(a,e+10)&&(s+=10),e+=s}if(s>0)return a.subarray(t,t+s)},ni=(a,e)=>{let t=0;return t=(a[e]&127)<<21,t|=(a[e+1]&127)<<14,t|=(a[e+2]&127)<<7,t|=a[e+3]&127,t},mu=(a,e)=>qn(a,e)&&ni(a,e+6)+10<=a.length-e,Gn=a=>{let e=zo(a);for(let t=0;t<e.length;t++){let s=e[t];if(Yo(s))return Eu(s)}},Yo=a=>a&&a.key==="PRIV"&&a.info==="com.apple.streaming.transportStreamTimestamp",gu=a=>{let e=String.fromCharCode(a[0],a[1],a[2],a[3]),t=ni(a,4),s=10;return{type:e,size:t,data:a.subarray(s,s+t)}},zo=a=>{let e=0,t=[];for(;qn(a,e);){let s=ni(a,e+6);e+=10;let i=e+s;for(;e+8<i;){let r=gu(a.subarray(e)),n=pu(r);n&&t.push(n),e+=r.size+10}Wo(a,e)&&(e+=10)}return t},pu=a=>a.type==="PRIV"?yu(a):a.type[0]==="W"?Su(a):vu(a),yu=a=>{if(a.size<2)return;let e=ft(a.data,!0),t=new Uint8Array(a.data.subarray(e.length+1));return{key:a.type,info:e,data:t.buffer}},vu=a=>{if(a.size<2)return;if(a.type==="TXXX"){let t=1,s=ft(a.data.subarray(t),!0);t+=s.length+1;let i=ft(a.data.subarray(t));return{key:a.type,info:s,data:i}}let e=ft(a.data.subarray(1));return{key:a.type,data:e}},Su=a=>{if(a.type==="WXXX"){if(a.size<2)return;let t=1,s=ft(a.data.subarray(t),!0);t+=s.length+1;let i=ft(a.data.subarray(t));return{key:a.type,info:s,data:i}}let e=ft(a.data);return{key:a.type,data:e}},Eu=a=>{if(a.data.byteLength===8){let e=new Uint8Array(a.data),t=e[3]&1,s=(e[4]<<23)+(e[5]<<15)+(e[6]<<7)+e[7];return s/=45,t&&(s+=4772185884e-2),Math.round(s)}},ft=(a,e=!1)=>{let t=Tu();if(t){let c=t.decode(a);if(e){let u=c.indexOf("\0");return u!==-1?c.substring(0,u):c}return c.replace(/\0/g,"")}let s=a.length,i,r,n,o="",l=0;for(;l<s;){if(i=a[l++],i===0&&e)return o;if(i===0||i===3)continue;switch(i>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(i);break;case 12:case 13:r=a[l++],o+=String.fromCharCode((i&31)<<6|r&63);break;case 14:r=a[l++],n=a[l++],o+=String.fromCharCode((i&15)<<12|(r&63)<<6|(n&63)<<0);break}}return o},fr;function Tu(){if(!navigator.userAgent.includes("PlayStation 4"))return!fr&&typeof self.TextDecoder<"u"&&(fr=new self.TextDecoder("utf-8")),fr}var ct={hexDump:function(a){let e="";for(let t=0;t<a.length;t++){let s=a[t].toString(16);s.length<2&&(s="0"+s),e+=s}return e}},Fs=Math.pow(2,32)-1,xu=[].push,Xo={video:1,audio:2,id3:3,text:4};function Oe(a){return String.fromCharCode.apply(null,a)}function Jo(a,e){let t=a[e]<<8|a[e+1];return t<0?65536+t:t}function re(a,e){let t=Qo(a,e);return t<0?4294967296+t:t}function eo(a,e){let t=re(a,e);return t*=Math.pow(2,32),t+=re(a,e+4),t}function Qo(a,e){return a[e]<<24|a[e+1]<<16|a[e+2]<<8|a[e+3]}function mr(a,e,t){a[e]=t>>24,a[e+1]=t>>16&255,a[e+2]=t>>8&255,a[e+3]=t&255}function bu(a){let e=a.byteLength;for(let t=0;t<e;){let s=re(a,t);if(s>8&&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 he(a,e){let t=[];if(!e.length)return t;let s=a.byteLength;for(let i=0;i<s;){let r=re(a,i),n=Oe(a.subarray(i+4,i+8)),o=r>1?i+r:s;if(n===e[0])if(e.length===1)t.push(a.subarray(i+8,o));else{let l=he(a.subarray(i+8,o),e.slice(1));l.length&&xu.apply(t,l)}i=o}return t}function Au(a){let e=[],t=a[0],s=8,i=re(a,s);s+=4;let r=0,n=0;t===0?(r=re(a,s),n=re(a,s+4),s+=8):(r=eo(a,s),n=eo(a,s+8),s+=16),s+=2;let o=a.length+n,l=Jo(a,s);s+=2;for(let c=0;c<l;c++){let u=s,d=re(a,u);u+=4;let h=d&2147483647;if((d&2147483648)>>>31===1)return I.warn("SIDX has hierarchical references (not supported)"),null;let f=re(a,u);u+=4,e.push({referenceSize:h,subsegmentDuration:f,info:{duration:f/i,start:o,end:o+h-1}}),o+=h,u+=4,s=u}return{earliestPresentationTime:r,timescale:i,version:t,referencesCount:l,references:e}}function Zo(a){let e=[],t=he(a,["moov","trak"]);for(let i=0;i<t.length;i++){let r=t[i],n=he(r,["tkhd"])[0];if(n){let o=n[0],l=re(n,o===0?12:20),c=he(r,["mdia","mdhd"])[0];if(c){o=c[0];let u=re(c,o===0?12:20),d=he(r,["mdia","hdlr"])[0];if(d){let h=Oe(d.subarray(8,12)),m={soun:Ee.AUDIO,vide:Ee.VIDEO}[h];if(m){let f=he(r,["mdia","minf","stbl","stsd"])[0],g=Lu(f);e[l]={timescale:u,type:m},e[m]=Be({timescale:u,id:l},g)}}}}}
vendor: 8,585 bytes, line 168
168return he(a,["moov","mvex","trex"]).forEach(i=>{let r=re(i,4),n=e[r];n&&(n.default={duration:re(i,12),flags:re(i,20)})}),e}function Lu(a){let e=a.subarray(8),t=e.subarray(8+78),s=Oe(e.subarray(4,8)),i=s,r=s==="enca"||s==="encv";if(r){let o=he(e,[s])[0].subarray(s==="enca"?28:78);he(o,["sinf"]).forEach(c=>{let u=he(c,["schm"])[0];if(u){let d=Oe(u.subarray(4,8));if(d==="cbcs"||d==="cenc"){let h=he(c,["frma"])[0];h&&(i=Oe(h))}}})}switch(i){case"avc1":case"avc2":case"avc3":case"avc4":{let n=he(t,["avcC"])[0];i+="."+ps(n[1])+ps(n[2])+ps(n[3]);break}case"mp4a":{let n=he(e,[s])[0],o=he(n.subarray(28),["esds"])[0];if(o&&o.length>12){let l=4;if(o[l++]!==3)break;l=gr(o,l),l+=2;let c=o[l++];if(c&128&&(l+=2),c&64&&(l+=o[l++]),o[l++]!==4)break;l=gr(o,l);let u=o[l++];if(u===64)i+="."+ps(u);else break;if(l+=12,o[l++]!==5)break;l=gr(o,l);let d=o[l++],h=(d&248)>>3;h===31&&(h+=1+((d&7)<<3)+((o[l]&224)>>5)),i+="."+h}break}case"hvc1":case"hev1":{let n=he(t,["hvcC"])[0],o=n[1],l=["","A","B","C"][o>>6],c=o&31,u=re(n,2),d=(o&32)>>5?"H":"L",h=n[12],m=n.subarray(6,12);i+="."+l+c,i+="."+u.toString(16).toUpperCase(),i+="."+d+h;let f="";for(let g=m.length;g--;){let y=m[g];(y||f)&&(f="."+y.toString(16).toUpperCase()+f)}i+=f;break}case"dvh1":case"dvhe":{let n=he(t,["dvcC"])[0],o=n[2]>>1&127,l=n[2]<<5&32|n[3]>>3&31;i+="."+lt(o)+"."+lt(l);break}case"vp09":{let n=he(t,["vpcC"])[0],o=n[4],l=n[5],c=n[6]>>4&15;i+="."+lt(o)+"."+lt(l)+"."+lt(c);break}case"av01":{let n=he(t,["av1C"])[0],o=n[1]>>>5,l=n[1]&31,c=n[2]>>>7?"H":"M",u=(n[2]&64)>>6,d=(n[2]&32)>>5,h=o===2&&u?d?12:10:u?10:8,m=(n[2]&16)>>4,f=(n[2]&8)>>3,g=(n[2]&4)>>2,y=n[2]&3,T=1,b=1,A=1,_=0;i+="."+o+"."+lt(l)+c+"."+lt(h)+"."+m+"."+f+g+y+"."+lt(T)+"."+lt(b)+"."+lt(A)+"."+_;break}}return{codec:i,encrypted:r}}function gr(a,e){let t=e+5;for(;a[e++]&128&&e<t;);return e}function ps(a){return("0"+a.toString(16).toUpperCase()).slice(-2)}function lt(a){return(a<10?"0":"")+a}function Iu(a,e){if(!a||!e)return a;let t=e.keyId;return t&&e.isCommonEncryption&&he(a,["moov","trak"]).forEach(i=>{let n=he(i,["mdia","minf","stbl","stsd"])[0].subarray(8),o=he(n,["enca"]),l=o.length>0;l||(o=he(n,["encv"])),o.forEach(c=>{let u=l?c.subarray(28):c.subarray(78);he(u,["sinf"]).forEach(h=>{let m=el(h);if(m){let f=m.subarray(8,24);f.some(g=>g!==0)||(I.log(`[eme] Patching keyId in 'enc${l?"a":"v"}>sinf>>tenc' box: ${ct.hexDump(f)} -> ${ct.hexDump(t)}`),m.set(t,8))}})})}),a}function el(a){let e=he(a,["schm"])[0];if(e){let t=Oe(e.subarray(4,8));if(t==="cbcs"||t==="cenc")return he(a,["schi","tenc"])[0]}return null}function Ru(a,e){return he(e,["moof","traf"]).reduce((t,s)=>{let i=he(s,["tfdt"])[0],r=i[0],n=he(s,["tfhd"]).reduce((o,l)=>{let c=re(l,4),u=a[c];if(u){let d=re(i,4);if(r===1){if(d===Fs)return I.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),o;d*=Fs+1,d+=re(i,8)}let h=u.timescale||9e4,m=d/h;if(Z(m)&&(o===null||m<o))return m}return o},null);return n!==null&&Z(n)&&(t===null||n<t)?n:t},null)}function wu(a,e){let t=0,s=0,i=0,r=he(a,["moof","traf"]);for(let n=0;n<r.length;n++){let o=r[n],l=he(o,["tfhd"])[0],c=re(l,4),u=e[c];if(!u)continue;let d=u.default,h=re(l,0)|d?.flags,m=d?.duration;h&8&&(h&2?m=re(l,12):m=re(l,8));let f=u.timescale||9e4,g=he(o,["trun"]);for(let y=0;y<g.length;y++){if(t=Cu(g[y]),!t&&m){let T=re(g[y],4);t=m*T}u.type===Ee.VIDEO?s+=t/f:u.type===Ee.AUDIO&&(i+=t/f)}}if(s===0&&i===0){let n=1/0,o=0,l=0,c=he(a,["sidx"]);for(let u=0;u<c.length;u++){let d=Au(c[u]);if(d!=null&&d.references){n=Math.min(n,d.earliestPresentationTime/d.timescale);let h=d.references.reduce((m,f)=>m+f.info.duration||0,0);o=Math.max(o,h+d.earliestPresentationTime/d.timescale),l=o-n}}if(l&&Z(l))return l}return s||i}function Cu(a){let e=re(a,0),t=8;e&1&&(t+=4),e&4&&(t+=4);let s=0,i=re(a,4);for(let r=0;r<i;r++){if(e&256){let n=re(a,t);s+=n,t+=4}e&512&&(t+=4),e&1024&&(t+=4),e&2048&&(t+=4)}return s}function Du(a,e,t){he(e,["moof","traf"]).forEach(s=>{he(s,["tfhd"]).forEach(i=>{let r=re(i,4),n=a[r];if(!n)return;let o=n.timescale||9e4;he(s,["tfdt"]).forEach(l=>{let c=l[0],u=t*o;if(u){let d=re(l,4);if(c===0)d-=u,d=Math.max(d,0),mr(l,4,d);else{d*=Math.pow(2,32),d+=re(l,8),d-=u,d=Math.max(d,0);let h=Math.floor(d/(Fs+1)),m=Math.floor(d%(Fs+1));mr(l,4,h),mr(l,8,m)}}})})})}function _u(a){let e={valid:null,remainder:null},t=he(a,["moof"]);if(t.length<2)return e.remainder=a,e;let s=t[t.length-1];return e.valid=_t(a,0,s.byteOffset-8),e.remainder=_t(a,s.byteOffset-8),e}function et(a,e){let t=new Uint8Array(a.length+e.length);return t.set(a),t.set(e,a.length),t}function to(a,e){let t=[],s=e.samples,i=e.timescale,r=e.id,n=!1;return he(s,["moof"]).map(l=>{let c=l.byteOffset-8;he(l,["traf"]).map(d=>{let h=he(d,["tfdt"]).map(m=>{let f=m[0],g=re(m,4);return f===1&&(g*=Math.pow(2,32),g+=re(m,8)),g/i})[0];return h!==void 0&&(a=h),he(d,["tfhd"]).map(m=>{let f=re(m,4),g=re(m,0)&16777215,y=(g&1)!==0,T=(g&2)!==0,b=(g&8)!==0,A=0,_=(g&16)!==0,L=0,U=(g&32)!==0,C=8;f===r&&(y&&(C+=8),T&&(C+=4),b&&(A=re(m,C),C+=4),_&&(L=re(m,C),C+=4),U&&(C+=4),e.type==="video"&&(n=ku(e.codec)),he(d,["trun"]).map(M=>{let N=M[0],F=re(M,0)&16777215,H=(F&1)!==0,ce=0,W=(F&4)!==0,oe=(F&256)!==0,ae=0,se=(F&512)!==0,fe=0,ge=(F&1024)!==0,Q=(F&2048)!==0,j=0,P=re(M,4),k=8;H&&(ce=re(M,k),k+=4),W&&(k+=4);let O=ce+c;for(let B=0;B<P;B++){if(oe?(ae=re(M,k),k+=4):ae=A,se?(fe=re(M,k),k+=4):fe=L,ge&&(k+=4),Q&&(N===0?j=re(M,k):j=Qo(M,k),k+=4),e.type===Ee.VIDEO){let K=0;for(;K<fe;){let J=re(s,O);if(O+=4,Pu(n,s[O])){let ie=s.subarray(O,O+J);tl(ie,n?2:1,a+j/i,t)}O+=J,K+=J+4}}a+=ae/i}}))})})}),t}function ku(a){if(!a)return!1;let e=a.indexOf("."),t=e<0?a:a.substring(0,e);return t==="hvc1"||t==="hev1"||t==="dvh1"||t==="dvhe"}function Pu(a,e){if(a){let t=e>>1&63;return t===39||t===40}else return(e&31)===6}function tl(a,e,t,s){let i=sl(a),r=0;r+=e;let n=0,o=0,l=0;for(;r<i.length;){n=0;do{if(r>=i.length)break;l=i[r++],n+=l}while(l===255);o=0;do{if(r>=i.length)break;l=i[r++],o+=l}while(l===255);let c=i.length-r,u=r;if(o<c)r+=o;else if(o>c){I.error(`Malformed SEI payload. ${o} is too small, only ${c} bytes left to parse.`);break}if(n===4){if(i[u++]===181){let h=Jo(i,u);if(u+=2,h===49){let m=re(i,u);if(u+=4,m===1195456820){let f=i[u++];if(f===3){let g=i[u++],y=31&g,T=64&g,b=T?2+y*3:0,A=new Uint8Array(b);if(T){A[0]=g;for(let _=1;_<b;_++)A[_]=i[u++]}s.push({type:f,payloadType:n,pts:t,bytes:A})}}}}}else if(n===5&&o>16){let d=[];for(let f=0;f<16;f++){let g=i[u++].toString(16);d.push(g.length==1?"0"+g:g),(f===3||f===5||f===7||f===9)&&d.push("-")}let h=o-16,m=new Uint8Array(h);for(let f=0;f<h;f++)m[f]=i[u++];s.push({payloadType:n,pts:t,uuid:d.join(""),userData:ft(m),userDataBytes:m})}}}function sl(a){let e=a.byteLength,t=[],s=1;for(;s<e-2;)a[s]===0&&a[s+1]===0&&a[s+2]===3?(t.push(s+2),s+=2):s++;if(t.length===0)return a;let i=e-t.length,r=new Uint8Array(i),n=0;for(s=0;s<i;n++,s++)n===t[0]&&(n++,t.shift()),r[s]=a[n];return r}function Ou(a){let e=a[0],t="",s="",i=0,r=0,n=0,o=0,l=0,c=0;if(e===0){for(;Oe(a.subarray(c,c+1))!=="\0";)t+=Oe(a.subarray(c,c+1)),c+=1;for(t+=Oe(a.subarray(c,c+1)),c+=1;Oe(a.subarray(c,c+1))!=="\0";)s+=Oe(a.subarray(c,c+1)),c+=1;s+=Oe(a.subarray(c,c+1)),c+=1,i=re(a,12),r=re(a,16),o=re(a,20),l=re(a,24),c=28}else if(e===1){c+=4,i=re(a,c),c+=4;let d=re(a,c);c+=4;let h=re(a,c);for(c+=4,n=2**32*d+h,eu(n)||(n=Number.MAX_SAFE_INTEGER,I.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=re(a,c),c+=4,l=re(a,c),c+=4;Oe(a.subarray(c,c+1))!=="\0";)t+=Oe(a.subarray(c,c+1)),c+=1;for(t+=Oe(a.subarray(c,c+1)),c+=1;Oe(a.subarray(c,c+1))!=="\0";)s+=Oe(a.subarray(c,c+1)),c+=1;s+=Oe(a.subarray(c,c+1)),c+=1}let u=a.subarray(c,a.byteLength);return{schemeIdUri:t,value:s,timeScale:i,presentationTime:n,presentationTimeDelta:r,eventDuration:o,id:l,payload:u}}function Fu(a,...e){let t=e.length,s=8,i=t;for(;i--;)s+=e[i].byteLength;let r=new Uint8Array(s);for(r[0]=s>>24&255,r[1]=s>>16&255,r[2]=s>>8&255,r[3]=s&255,r.set(a,4),i=0,s=8;i<t;i++)r.set(e[i],s),s+=e[i].byteLength;return r}function Mu(a,e,t){if(a.byteLength!==16)throw new RangeError("Invalid system id");let s,i;if(e){s=1,i=new Uint8Array(e.length*16);for(let o=0;o<e.length;o++){let l=e[o];if(l.byteLength!==16)throw new RangeError("Invalid key");i.set(l,o*16)}}else s=0,i=new Uint8Array;let r;s>0?(r=new Uint8Array(4),e.length>0&&new DataView(r.buffer).setUint32(0,e.length,!1)):r=new Uint8Array;let n=new Uint8Array(4);return t&&t.byteLength>0&&new DataView(n.buffer).setUint32(0,t.byteLength,!1),Fu([112,115,115,104],new Uint8Array([s,0,0,0]),a,r,i,n,t||new Uint8Array)}function Nu(a){let e=[];
168if(a instanceof ArrayBuffer){let t=a.byteLength,s=0;for(;s+32<t;){let i=new DataView(a,s),r=Uu(i);e.push(r),s+=r.size}}return e}function Uu(a){let e=a.getUint32(0),t=a.byteOffset,s=a.byteLength;if(s<e)return{offset:t,size:s};if(a.getUint32(4)!==1886614376)return{offset:t,size:e};let r=a.getUint32(8)>>>24;if(r!==0&&r!==1)return{offset:t,size:e};let n=a.buffer,o=ct.hexDump(new Uint8Array(n,t+12,16)),l=a.getUint32(28),c=null,u=null;if(r===0){if(e-32<l||l<22)return{offset:t,size:e};u=new Uint8Array(n,t+32,l)}else if(r===1){if(!l||s<t+32+l*16+16)return{offset:t,size:e};c=[];for(let d=0;d<l;d++)c.push(new Uint8Array(n,t+32+d*16,16))}return{version:r,systemId:o,kids:c,data:u,offset:t,size:e}}var ys={},kt=class{static clearKeyUriToKeyIdMap(){ys={}}constructor(e,t,s,i=[1],r=null){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&&e!=="AES-128"}isSupported(){if(this.method){if(this.method==="AES-128"||this.method==="NONE")return!0;if(this.keyFormat==="identity")return this.method==="SAMPLE-AES";switch(this.keyFormat){case Ye.FAIRPLAY:case Ye.WIDEVINE:case Ye.PLAYREADY:case Ye.CLEARKEY:return["ISO-23001-7","SAMPLE-AES","SAMPLE-AES-CENC","SAMPLE-AES-CTR"].indexOf(this.method)!==-1}}return!1}getDecryptData(e){if(!this.encrypted||!this.uri)return null;if(this.method==="AES-128"&&this.uri&&!this.iv){typeof e!="number"&&(this.method==="AES-128"&&!this.iv&&I.warn(`missing IV for initialization segment with method="${this.method}" - compliance issue`),e=0);let s=Bu(e);return new kt(this.method,this.uri,"identity",this.keyFormatVersions,s)}let t=du(this.uri);if(t)switch(this.keyFormat){case Ye.WIDEVINE:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case Ye.PLAYREADY:{let s=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Mu(s,null,t);let i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),r=String.fromCharCode.apply(null,Array.from(i)),n=r.substring(r.indexOf("<"),r.length),c=new DOMParser().parseFromString(n,"text/xml").getElementsByTagName("KID")[0];if(c){let u=c.childNodes[0]?c.childNodes[0].nodeValue:c.getAttribute("VALUE");if(u){let d=$n(u).subarray(0,16);uu(d),this.keyId=d}}break}default:{let s=t.subarray(0,16);if(s.length!==16){let i=new Uint8Array(16);i.set(s,16-s.length),s=i}this.keyId=s;break}}if(!this.keyId||this.keyId.byteLength!==16){let s=ys[this.uri];if(!s){let i=Object.keys(ys).length%Number.MAX_SAFE_INTEGER;s=new Uint8Array(16),new DataView(s.buffer,12,4).setUint32(0,i),ys[this.uri]=s}this.keyId=s}return this}};function Bu(a){let e=new Uint8Array(16);for(let t=12;t<16;t++)e[t]=a>>8*(15-t)&255;return e}var il=/\{\$([a-zA-Z0-9-_]+)\}/g;function so(a){return il.test(a)}function je(a,e,t){if(a.variableList!==null||a.hasVariableRefs)for(let s=t.length;s--;){let i=t[s],r=e[i];r&&(e[i]=Fr(a,r))}}function Fr(a,e){if(a.variableList!==null||a.hasVariableRefs){let t=a.variableList;return e.replace(il,s=>{let 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 io(a,e,t){let s=a.variableList;s||(a.variableList=s={});let i,r;if("QUERYPARAM"in e){i=e.QUERYPARAM;try{let 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 $u(a,e,t){let 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}"`))}function Pt(a=!0){return typeof self>"u"?void 0:(a||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}function qu(a){return typeof self<"u"&&a===self.ManagedMediaSource}var Ms={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,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,rv
16860:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function Gu(a,e){let t=Ms[e];return!!t&&!!t[a.slice(0,4)]}function pr(a,e,t=!0){return!a.split(",").some(s=>!rl(s,e,t))}function rl(a,e,t=!0){var s;let i=Pt(t);return(s=i?.isTypeSupported(ns(a,e)))!=null?s:!1}function ns(a,e){return`${e}/mp4;codecs="${a}"`}function ro(a){if(a){let e=a.substring(0,4);return Ms.video[e]}return 2}function Ns(a){return a.split(",").reduce((e,t)=>{let s=Ms.video[t];return s?(s*2+e)/(e?3:2):(Ms.audio[t]+e)/(e?2:1)},0)}var yr={};function Hu(a,e=!0){if(yr[a])return yr[a];let t={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[a];for(let s=0;s<t.length;s++)if(rl(t[s],"audio",e))return yr[a]=t[s],t[s];return a}var Ku=/flac|opus/i;function Us(a,e=!0){return a.replace(Ku,t=>Hu(t.toLowerCase(),e))}function no(a,e){return a&&a!=="mp4a"?a:e&&e.split(",")[0]}function Vu(a){let e=a.split(",");for(let t=0;t<e.length;t++){let s=e[t].split(".");if(s.length>2){let i=s.shift()+".";i+=parseInt(s.shift()).toString(16),i+=("000"+parseInt(s.shift()).toString(16)).slice(-4),e[t]=i}}return e.join(",")}var ao=/#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,oo=/#EXT-X-MEDIA:(.*)/g,ju=/^#EXT(?:INF|-X-TARGETDURATION):/m,lo=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[^\r\n]*)/.source,/#EXT-X-BYTERANGE:*(.+)/.source,/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/#.*/.source].join("|"),"g"),Wu=new RegExp([/#(EXTM3U)/.source,/#EXT-X-(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("|")),Ze=class{static findGroup(e,t){for(let s=0;s<e.length;s++){let i=e[s];if(i.id===t)return i}}static resolve(e,t){return Bn.buildAbsoluteURL(t,e,{alwaysNormalize:!0})}static isMediaPlaylist(e){return ju.test(e)}static parseMasterPlaylist(e,t){let s=so(e),i={contentSteering:null,levels:[],playlistParsingError:null,sessionData:null,sessionKeys:null,startTimeOffset:null,variableList:null,hasVariableRefs:s},r=[];ao.lastIndex=0;let n;for(;(n=ao.exec(e))!=null;)if(n[1]){var o;let c=new Re(n[1]);je(i,c,["CODECS","SUPPLEMENTAL-CODECS","ALLOWED-CPC","PATHWAY-ID","STABLE-VARIANT-ID","AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS","NAME"]);let u=Fr(i,n[2]),d={attrs:c,bitrate:c.decimalInteger("BANDWIDTH")||c.decimalInteger("AVERAGE-BANDWIDTH"),name:c.NAME,url:Ze.resolve(u,t)},h=c.decimalResolution("RESOLUTION");h&&(d.width=h.width,d.height=h.height),Yu(c.CODECS,d),(o=d.unknownCodecs)!=null&&o.length||r.push(d),i.levels.push(d)}else if(n[3]){let c=n[3],u=n[4];switch(c){case"SESSION-DATA":{let d=new Re(u);je(i,d,["DATA-ID","LANGUAGE","VALUE","URI"]);let h=d["DATA-ID"];h&&(i.sessionData===null&&(i.sessionData={}),i.sessionData[h]=d);break}case"SESSION-KEY":{let d=co(u,t,i);d.encrypted&&d.isSupported()?(i.sessionKeys===null&&(i.sessionKeys=[]),i.sessionKeys.push(d)):I.warn(`[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "${u}"`);break}case"DEFINE":{{let d=new Re(u);je(i,d,["NAME","VALUE","QUERYPARAM"]),io(i,d,t)}break}case"CONTENT-STEERING":{let d=new Re(u);je(i,d,["SERVER-URI","PATHWAY-ID"]),i.contentSteering={uri:Ze.resolve(d["SERVER-URI"],t),pathwayId:d["PATHWAY-ID"]||"."};break}case"START":{i.startTimeOffset=uo(u);break}}}let l=r.length>0&&r.length<i.levels.length;return i.levels=l?r:i.levels,i.levels.length===0&&(i.playlistParsingError=new Error("no levels found in manifest")),i}static parseMasterPlaylistMedia(e,t,s){let i,r={},n=s.levels,o={AUDIO:n.map(c=>({id:c.attrs.AUDIO,audioCodec:c.audioCodec})),SUBTITLES:n.map(c=>({id:c.attrs.SUBTITLES,textCodec:c.textCodec})),"CLOSED-CAPTIONS":[]},l=0;for(oo.lastIndex=0;(i=oo.exec(e))!==null;){let c=new Re(i[1]),u=c.TYPE;if(u){let d=o[u],h=r[u]||[];r[u]=h,je(s,c,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);let m=c.LANGUAGE,f=c["ASSOC-LANGUAGE"],g=c.CHANNELS,y=c.CHARACTERISTICS,T=c["INSTREAM-ID"],b={attrs:c,bitrate:0,id:l++,groupId:c["GROUP-ID"]||"",name:c.NAME||m||"",type:u,default:c.bool("DEFAULT"),autoselect:c.bool("AUTOSELECT"),forced:c.bool("FORCED"),lang:m,url:c.URI?Ze.resolve(c.URI,t):""};if(f&&(b.assocLang=f),g&&(b.channels=g),y&&(b.characteristics=y),T&&(b.instreamId=T),d!=null&&d.length){let A=Ze.findGroup(d,b.groupId)||d[0];ho(b,A,"audioCodec"),ho(b,A,"textCodec")}h.push(b)}}return r}static parseLevelPlaylist(e,t,s,i,r,n){let o=new Pr(t),l=o.fragments,c=null,u=0,d=0,h=0,m=0,f=null,g=new ss(i,t),y,T,b,A=-1,_=!1,L=null;for(lo.lastIndex=0,o.m3u8=e,o.hasVariableRefs=so(e);(y=lo.exec(e))!==null;){_&&(_=!1,g=new ss(i,t),g.start=h,g.sn=u,g.cc=m,g.level=s,c&&(g.initSegment=c,g.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,L&&(g.setByteRange(L),L=null)));let N=y[1];if(N){g.duration=parseFloat(N);let F=(" "+y[2]).slice(1);g.title=F||null,g.tagList.push(F?["INF",N,F]:["INF",N])}else if(y[3]){if(Z(g.duration)){g.start=h,b&&go(g,b,o),g.sn=u,g.level=s,g.cc=m,l.push(g);let F=(" "+y[3]).slice(1);g.relurl=Fr(o,F),fo(g,f),f=g,h+=g.duration,u++,d=0,_=!0}}else if(y[4]){let F=(" "+y[4]).slice(1);f?g.setByteRange(F,f):g.setByteRange(F)}else if(y[5])g.rawProgramDateTime=(" "+y[5]).slice(1),g.tagList.push(["PROGRAM-DATE-TIME",g.rawProgramDateTime]),A===-1&&(A=l.length);
168else{if(y=y[0].match(Wu),!y){I.warn("No matches on slow regex match for level playlist!");continue}for(T=1;T<y.length&&!(typeof y[T]<"u");T++);let F=(" "+y[T]).slice(1),H=(" "+y[T+1]).slice(1),ce=y[T+2]?(" "+y[T+2]).slice(1):"";switch(F){case"PLAYLIST-TYPE":o.type=H.toUpperCase();break;case"MEDIA-SEQUENCE":u=o.startSN=parseInt(H);break;case"SKIP":{let W=new Re(H);je(o,W,["RECENTLY-REMOVED-DATERANGES"]);let oe=W.decimalInteger("SKIPPED-SEGMENTS");if(Z(oe)){o.skippedSegments=oe;for(let se=oe;se--;)l.unshift(null);u+=oe}let ae=W.enumeratedString("RECENTLY-REMOVED-DATERANGES");ae&&(o.recentlyRemovedDateranges=ae.split("	"));break}case"TARGETDURATION":o.targetduration=Math.max(parseInt(H),1);break;case"VERSION":o.version=parseInt(H);break;case"INDEPENDENT-SEGMENTS":case"EXTM3U":break;case"ENDLIST":o.live=!1;break;case"#":(H||ce)&&g.tagList.push(ce?[H,ce]:[H]);break;case"DISCONTINUITY":m++,g.tagList.push(["DIS"]);break;case"GAP":g.gap=!0,g.tagList.push([F]);break;case"BITRATE":g.tagList.push([F,H]);break;case"DATERANGE":{let W=new Re(H);je(o,W,["ID","CLASS","START-DATE","END-DATE","SCTE35-CMD","SCTE35-OUT","SCTE35-IN"]),je(o,W,W.clientAttrs);let oe=new Ps(W,o.dateRanges[W.ID]);oe.isValid||o.skippedSegments?o.dateRanges[oe.id]=oe:I.warn(`Ignoring invalid DATERANGE tag: "${H}"`),g.tagList.push(["EXT-X-DATERANGE",H]);break}case"DEFINE":{{let W=new Re(H);je(o,W,["NAME","VALUE","IMPORT","QUERYPARAM"]),"IMPORT"in W?$u(o,W,n):io(o,W,t)}break}case"DISCONTINUITY-SEQUENCE":m=parseInt(H);break;case"KEY":{let W=co(H,t,o);if(W.isSupported()){if(W.method==="NONE"){b=void 0;break}b||(b={}),b[W.keyFormat]&&(b=Pe({},b)),b[W.keyFormat]=W}else I.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: "${H}"`);break}case"START":o.startTimeOffset=uo(H);break;case"MAP":{let W=new Re(H);if(je(o,W,["BYTERANGE","URI"]),g.duration){let oe=new ss(i,t);mo(oe,W,s,b),c=oe,g.initSegment=c,c.rawProgramDateTime&&!g.rawProgramDateTime&&(g.rawProgramDateTime=c.rawProgramDateTime)}else{let oe=g.byteRangeEndOffset;if(oe){let ae=g.byteRangeStartOffset;L=`${oe-ae}@${ae}`}else L=null;mo(g,W,s,b),c=g,_=!0}break}case"SERVER-CONTROL":{let W=new Re(H);o.canBlockReload=W.bool("CAN-BLOCK-RELOAD"),o.canSkipUntil=W.optionalFloat("CAN-SKIP-UNTIL",0),o.canSkipDateRanges=o.canSkipUntil>0&&W.bool("CAN-SKIP-DATERANGES"),o.partHoldBack=W.optionalFloat("PART-HOLD-BACK",0),o.holdBack=W.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{let W=new Re(H);o.partTarget=W.decimalFloatingPoint("PART-TARGET");break}case"PART":{let W=o.partList;W||(W=o.partList=[]);let oe=d>0?W[W.length-1]:void 0,ae=d++,se=new Re(H);je(o,se,["BYTERANGE","URI"]);let fe=new kr(se,g,t,ae,oe);W.push(fe),g.duration+=fe.duration;break}case"PRELOAD-HINT":{let W=new Re(H);je(o,W,["URI"]),o.preloadHint=W;break}case"RENDITION-REPORT":{let W=new Re(H);je(o,W,["URI"]),o.renditionReports=o.renditionReports||[],o.renditionReports.push(W);break}default:I.warn(`line parsed but not handled: ${y}`);break}}}f&&!f.relurl?(l.pop(),h-=f.duration,o.partList&&(o.fragmentHint=f)):o.partList&&(fo(g,f),g.cc=m,o.fragmentHint=g,b&&go(g,b,o));let U=l.length,C=l[0],M=l[U-1];if(h+=o.skippedSegments*o.targetduration,h>0&&U&&M){o.averagetargetduration=h/U;let N=M.sn;o.endSN=N!=="initSegment"?N:0,o.live||(M.endList=!0),C&&(o.startCC=C.cc)}else o.endSN=0,o.startCC=0;return o.fragmentHint&&(h+=o.fragmentHint.duration),o.totalduration=h,o.endCC=m,A>0&&zu(l,A),o}};function co(a,e,t){var s,i;let r=new Re(a);je(t,r,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);let n=(s=r.METHOD)!=null?s:"",o=r.URI,l=r.hexadecimalInteger("IV"),c=r.KEYFORMATVERSIONS,u=(i=r.KEYFORMAT)!=null?i:"identity";o&&r.IV&&!l&&I.error(`Invalid IV: ${r.IV}`);let d=o?Ze.resolve(o,e):"",h=(c||"1").split("/").map(Number).filter(Number.isFinite);return new kt(n,d,u,h,l)}function uo(a){let t=new Re(a).decimalFloatingPoint("TIME-OFFSET");return Z(t)?t:null}function Yu(a,e){let t=(a||"").split(/[ ,]+/).filter(s=>s);["video","audio","text"].forEach(s=>{let i=t.filter(r=>Gu(r,s));i.length&&(e[`${s}Codec`]=i.join(","),t=t.filter(r=>i.indexOf(r)===-1))}),e.unknownCodecs=t}function ho(a,e,t){let s=e[t];s&&(a[t]=s)}function zu(a,e){let t=a[e];for(let s=e;s--;){let i=a[s];if(!i)return;i.programDateTime=t.programDateTime-i.duration*1e3,t=i}}function fo(a,e){a.rawProgramDateTime?a.programDateTime=Date.parse(a.rawProgramDateTime):e!=null&&e.programDateTime&&(a.programDateTime=e.endProgramDateTime),Z(a.programDateTime)||(a.programDateTime=null,a.rawProgramDateTime=null)}function mo(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 go(a,e,t){a.levelkeys=e;let{encryptedFragments:s}=t;(!s.length||s[s.length-1].levelkeys!==e)&&Object.keys(e).some(i=>e[i].isCommonEncryption)&&s.push(a)}var ye={MANIFEST:"manifest",LEVEL:"level",AUDIO_TRACK:"audioTrack",SUBTITLE_TRACK:"subtitleTrack"},ne={MAIN:"main",AUDIO:"audio",SUBTITLE:"subtitle"};function po(a){let{type:e}=a;switch(e){case ye.AUDIO_TRACK:return ne.AUDIO;case ye.SUBTITLE_TRACK:return ne.SUBTITLE;default:return ne.MAIN}}function vr(a,e){let t=a.url;return(t===void 0||t.indexOf("data:")===0)&&(t=e.url),t}var Mr=class{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}
vendor: 4,792 bytes, line 168
168startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){let{hls:e}=this;e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.LEVEL_LOADING,this.onLevelLoading,this),e.on(p.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(p.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){let{hls:e}=this;e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.LEVEL_LOADING,this.onLevelLoading,this),e.off(p.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(p.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){let 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(let e in this.loaders){let t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){let{url:s}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:ye.MANIFEST,url:s,deliveryDirectives:null})}onLevelLoading(e,t){let{id:s,level:i,pathwayId:r,url:n,deliveryDirectives:o}=t;this.load({id:s,level:i,pathwayId:r,responseType:"text",type:ye.LEVEL,url:n,deliveryDirectives:o})}onAudioTrackLoading(e,t){let{id:s,groupId:i,url:r,deliveryDirectives:n}=t;this.load({id:s,groupId:i,level:null,responseType:"text",type:ye.AUDIO_TRACK,url:r,deliveryDirectives:n})}onSubtitleTrackLoading(e,t){let{id:s,groupId:i,url:r,deliveryDirectives:n}=t;this.load({id:s,groupId:i,level:null,responseType:"text",type:ye.SUBTITLE_TRACK,url:r,deliveryDirectives:n})}load(e){var t;let s=this.hls.config,i=this.getInternalLoader(e);if(i){let c=i.context;if(c&&c.url===e.url&&c.level===e.level){I.trace("[playlist-loader]: playlist request ongoing");return}I.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),i.abort()}let r;if(e.type===ye.MANIFEST?r=s.manifestLoadPolicy.default:r=Pe({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),i=this.createInternalLoader(e),Z((t=e.deliveryDirectives)==null?void 0:t.part)){let c;if(e.type===ye.LEVEL&&e.level!==null?c=this.hls.levels[e.level].details:e.type===ye.AUDIO_TRACK&&e.id!==null?c=this.hls.audioTracks[e.id].details:e.type===ye.SUBTITLE_TRACK&&e.id!==null&&(c=this.hls.subtitleTracks[e.id].details),c){let u=c.partTarget,d=c.targetduration;if(u&&d){let h=Math.max(u*3,d*.8)*1e3;r=Pe({},r,{maxTimeToFirstByteMs:Math.min(h,r.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(h,r.maxTimeToFirstByteMs)})}}}let n=r.errorRetry||r.timeoutRetry||{},o={loadPolicy:r,timeout:r.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},l={onSuccess:(c,u,d,h)=>{let m=this.getInternalLoader(d);this.resetInternalLoader(d.type);let f=c.data;if(f.indexOf("#EXTM3U")!==0){this.handleManifestParsingError(c,d,new Error("no EXTM3U delimiter"),h||null,u);return}u.parsing.start=performance.now(),Ze.isMediaPlaylist(f)?this.handleTrackOrLevelPlaylist(c,u,d,h||null,m):this.handleMasterPlaylist(c,u,d,h)},onError:(c,u,d,h)=>{this.handleNetworkError(u,d,!1,c,h)},onTimeout:(c,u,d)=>{this.handleNetworkError(u,d,!0,void 0,c)}};i.load(e,o,l)}handleMasterPlaylist(e,t,s,i){let r=this.hls,n=e.data,o=vr(e,s),l=Ze.parseMasterPlaylist(n,o);if(l.playlistParsingError){this.handleManifestParsingError(e,s,l.playlistParsingError,i,t);return}let{contentSteering:c,levels:u,sessionData:d,sessionKeys:h,startTimeOffset:m,variableList:f}=l;this.variableList=f;let{AUDIO:g=[],SUBTITLES:y,"CLOSED-CAPTIONS":T}=Ze.parseMasterPlaylistMedia(n,o,l);g.length&&!g.some(A=>!A.url)&&u[0].audioCodec&&!u[0].attrs.AUDIO&&(I.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),g.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new Re({}),bitrate:0,url:""})),r.trigger(p.MANIFEST_LOADED,{levels:u,audioTracks:g,subtitles:y,captions:T,contentSteering:c,url:o,stats:t,networkDetails:i,sessionData:d,sessionKeys:h,startTimeOffset:m,variableList:f})}handleTrackOrLevelPlaylist(e,t,s,i,r){let n=this.hls,{id:o,level:l,type:c}=s,u=vr(e,s),d=0,h=Z(l)?l:Z(o)?o:0,m=po(s),f=Ze.parseLevelPlaylist(e.data,u,h,m,d,this.variableList);if(c===ye.MANIFEST){let g={attrs:new Re({}),bitrate:0,details:f,name:"",url:u};n.trigger(p.MANIFEST_LOADED,{levels:[g],audioTracks:[],url:u,stats:t,networkDetails:i,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),s.levelDetails=f,this.handlePlaylistLoaded(f,e,t,s,i,r)}handleManifestParsingError(e,t,s,i,r){this.hls.trigger(p.ERROR,{type:le.NETWORK_E
168RROR,details:D.MANIFEST_PARSING_ERROR,fatal:t.type===ye.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===ye.LEVEL?n+=`: ${e.level} id: ${e.id}`:(e.type===ye.AUDIO_TRACK||e.type===ye.SUBTITLE_TRACK)&&(n+=` id: ${e.id} group-id: "${e.groupId}"`);let o=new Error(n);I.warn(`[playlist-loader]: ${n}`);let l=D.UNKNOWN,c=!1,u=this.getInternalLoader(e);switch(e.type){case ye.MANIFEST:l=s?D.MANIFEST_LOAD_TIMEOUT:D.MANIFEST_LOAD_ERROR,c=!0;break;case ye.LEVEL:l=s?D.LEVEL_LOAD_TIMEOUT:D.LEVEL_LOAD_ERROR,c=!1;break;case ye.AUDIO_TRACK:l=s?D.AUDIO_TRACK_LOAD_TIMEOUT:D.AUDIO_TRACK_LOAD_ERROR,c=!1;break;case ye.SUBTITLE_TRACK:l=s?D.SUBTITLE_TRACK_LOAD_TIMEOUT:D.SUBTITLE_LOAD_ERROR,c=!1;break}u&&this.resetInternalLoader(e.type);let d={type:le.NETWORK_ERROR,details:l,fatal:c,url:e.url,loader:u,context:e,error:o,networkDetails:t,stats:r};if(i){let h=t?.url||e.url;d.response=Be({url:h,data:void 0},i)}this.hls.trigger(p.ERROR,d)}handlePlaylistLoaded(e,t,s,i,r,n){let o=this.hls,{type:l,level:c,id:u,groupId:d,deliveryDirectives:h}=i,m=vr(t,i),f=po(i),g=typeof i.level=="number"&&f===ne.MAIN?c:void 0;if(!e.fragments.length){let T=new Error("No Segments found in Playlist");o.trigger(p.ERROR,{type:le.NETWORK_ERROR,details:D.LEVEL_EMPTY_ERROR,fatal:!1,url:m,error:T,reason:T.message,response:t,context:i,level:g,parent:f,networkDetails:r,stats:s});return}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));let y=e.playlistParsingError;if(y){o.trigger(p.ERROR,{type:le.NETWORK_ERROR,details:D.LEVEL_PARSING_ERROR,fatal:!1,url:m,error:y,reason:y.message,response:t,context:i,level:g,parent:f,networkDetails:r,stats:s});return}switch(e.live&&n&&(n.getCacheAge&&(e.ageHeader=n.getCacheAge()||0),(!n.getCacheAge||isNaN(e.ageHeader))&&(e.ageHeader=0)),l){case ye.MANIFEST:case ye.LEVEL:o.trigger(p.LEVEL_LOADED,{details:e,level:g||0,id:u||0,stats:s,networkDetails:r,deliveryDirectives:h});break;case ye.AUDIO_TRACK:o.trigger(p.AUDIO_TRACK_LOADED,{details:e,id:u||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:h});break;case ye.SUBTITLE_TRACK:o.trigger(p.SUBTITLE_TRACK_LOADED,{details:e,id:u||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:h});break}}};function nl(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 al(a,e){let 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){I.debug(`[texttrack-utils]: ${s}`);try{let i=new self.TextTrackCue(e.startTime,e.endTime,e.text);i.id=e.id,a.addCue(i)}catch(i){I.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${i}`)}}t==="disabled"&&(a.mode=t)}function Gt(a){let e=a.mode;if(e==="disabled"&&(a.mode="hidden"),a.cues)for(let t=a.cues.length;t--;)a.removeCue(a.cues[t]);e==="disabled"&&(a.mode=e)}function Nr(a,e,t,s){let i=a.mode;if(i==="disabled"&&(a.mode="hidden"),a.cues&&a.cues.length>0){let r=Ju(a.cues,e,t);for(let n=0;n<r.length;n++)(!s||s(r[n]))&&a.removeCue(r[n])}i==="disabled"&&(a.mode=i)}function Xu(a,e){if(e<a[0].startTime)return 0;let t=a.length-1;if(e>a[t].endTime)return-1;let s=0,i=t;for(;s<=i;){let r=Math.floor((i+s)/2);if(e<a[r].startTime)i=r-1;else if(e>a[r].startTime&&s<t)s=r+1;else return r}return a[s].startTime-e<e-a[i].startTime?s:i}function Ju(a,e,t){let s=[],i=Xu(a,e);if(i>-1)for(let r=i,n=a.length;r<n;r++){let o=a[r];if(o.startTime>=e&&o.endTime<=t)s.push(o);else if(o.startTime>t)return s}return s}function Is(a){let e=[];for(let t=0;t<a.length;t++){let s=a[t];(s.kind==="subtitles"||s.kind==="captions")&&s.label&&e.push(a[t])}return e}var at={audioId3:"org.id3",dateRange:"com.apple.quicktime.HLS",emsg:"https://aomedia.org/emsg/ID3"},Qu=.25;function Ur(){if(!(typeof self>"u"))return self.VTTCue||self.TextTrackCue}function yo(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,JSON.stringify(i?Be({type:i},s):s))}return r}var vs=(()=>
168{let a=Ur();try{a&&new a(0,Number.POSITIVE_INFINITY,"")}catch{return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function Sr(a,e){return a.getTime()/1e3-e}function Zu(a){return Uint8Array.from(a.replace(/^0x/,"").replace(/([\da-fA-F]{2}) ?/g,"0x$1 ").replace(/ +$/,"").split(" ")).buffer}var Br=class{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){let{hls:e}=this;e.on(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(p.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(p.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){let{hls:e}=this;e.off(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(p.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(p.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(Gt(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){let t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;t<e.length;t++){let s=e[t];if(s.kind==="metadata"&&s.label==="id3")return nl(s,this.media),s}return this.media.addTextTrack("metadata","id3")}}onFragParsingMetadata(e,t){if(!this.media)return;let{hls:{config:{enableEmsgMetadataCues:s,enableID3MetadataCues:i}}}=this;if(!s&&!i)return;let{samples:r}=t;this.id3Track||(this.id3Track=this.createTrack(this.media));let n=Ur();if(n)for(let o=0;o<r.length;o++){let l=r[o].type;if(l===at.emsg&&!s||!i)continue;let c=zo(r[o].data);if(c){let u=r[o].pts,d=u+r[o].duration;d>vs&&(d=vs),d-u<=0&&(d=u+Qu);for(let m=0;m<c.length;m++){let f=c[m];if(!Yo(f)){this.updateId3CueEnds(u,l);let g=yo(n,u,d,f,l);g&&this.id3Track.addCue(g)}}}}}updateId3CueEnds(e,t){var s;let i=(s=this.id3Track)==null?void 0:s.cues;if(i)for(let r=i.length;r--;){let n=i[r];n.type===t&&n.startTime<e&&n.endTime===vs&&(n.endTime=e)}}onBufferFlushing(e,{startOffset:t,endOffset:s,type:i}){let{id3Track:r,hls:n}=this;if(!n)return;let{config:{enableEmsgMetadataCues:o,enableID3MetadataCues:l}}=n;if(r&&(o||l)){let c;i==="audio"?c=u=>u.type===at.audioId3&&l:i==="video"?c=u=>u.type===at.emsg&&o:c=u=>u.type===at.audioId3&&l||u.type===at.emsg&&o,Nr(r,t,s,c)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;let{dateRangeCuesAppended:s,id3Track:i}=this,{dateRanges:r}=t,n=Object.keys(r);if(i){let u=Object.keys(s).filter(d=>!n.includes(d));for(let d=u.length;d--;){let h=u[d];Object.keys(s[h].cues).forEach(m=>{i.removeCue(s[h].cues[m])}),delete s[h]}}let o=t.fragments[t.fragments.length-1];if(n.length===0||!Z(o?.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));let l=o.programDateTime/1e3-o.start,c=Ur();for(let u=0;u<n.length;u++){let d=n[u],h=r[d],m=Sr(h.startDate,l),f=s[d],g=f?.cues||{},y=f?.durationKnown||!1,T=vs,b=h.endDate;if(b)T=Sr(b,l),y=!0;else if(h.endOnNext&&!y){let _=n.reduce((L,U)=>{if(U!==h.id){let C=r[U];if(C.class===h.class&&C.startDate>h.startDate&&(!L||h.startDate<L.startDate))return C}return L},null);_&&(T=Sr(_.startDate,l),y=!0)}let A=Object.keys(h.attr);for(let _=0;_<A.length;_++){let L=A[_];if(!au(L))continue;let U=g[L];if(U)y&&!f.durationKnown&&(U.endTime=T);else if(c){let C=h.attr[L];ou(L)&&(C=Zu(C));let M=yo(c,m,T,{key:L,data:C},at.dateRange);M&&(M.id=d,this.id3Track.addCue(M),g[L]=M)}}s[d]={cues:g,dateRange:h,durationKnown:y}}}},$r=class{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.levelDetails=null,this.currentTime=0,this.stallCount=0,this._latency=null,this.timeupdateHandler=()=>this.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){let{config:e,levelDetails:t}=this;return e.liveMaxLatencyDuration!==void 0?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){let{levelDetails:e}=this;if(e===null)return null;let{holdBack:t,partHoldBack:s,targetduration:i}=e,{liveSyncDuration:r,liveSyncDurationCount:n,lowLatencyMode:o}=this.config,l=this.hls.userConfig,c=o&&s||t;(l.liveSyncDuration||l.liveSyncDurationCount||c===0)&&(c=r!==void 0?r:n*i);let u=i,d=1;return c+Math.min(this.stallCount*d,u)}get liveSyncPosition(){let e=this.estimateLiveEdge(),t=this.targetLatency,s=this.levelDetails;if(e===null||t===null||s===null)return null;let 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(){let{levelDetails:e}=this;return e===null?1:e.drift}get edgeStalled(){let{levelDetails:e}=this;if(e===null)return 0;let t=(this.config.lowLatencyMode&&e.partTarget||e.targetduration)*3;return Math.max(e.age-t,0)}get forwardBufferLength(){let{media:e,levelDetails:t}=this;if(!e||!t)return 0;let s=e.buffered.length;return(s?e.buffered.end(s-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}
168registerListeners(){this.hls.on(p.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(p.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(p.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(p.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(p.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(p.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(p.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(p.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(p.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(p.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){this.levelDetails=t,t.advanced&&this.timeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(e,t){var s;t.details===D.BUFFER_STALLED_ERROR&&(this.stallCount++,(s=this.levelDetails)!=null&&s.live&&I.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){let{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;let s=this.computeLatency();if(s===null)return;this._latency=s;let{lowLatencyMode:i,maxLiveSyncPlaybackRate:r}=this.config;if(!i||r===1||!t.live)return;let n=this.targetLatency;if(n===null)return;let o=s-n,l=Math.min(this.maxLatency,n+t.targetduration);if(o<l&&o>.05&&this.forwardBufferLength>1){let u=Math.min(2,Math.max(1,r)),d=Math.round(2/(1+Math.exp(-.75*o-this.edgeStalled))*20)/20;e.playbackRate=Math.min(u,Math.max(1,d))}else e.playbackRate!==1&&e.playbackRate!==0&&(e.playbackRate=1)}estimateLiveEdge(){let{levelDetails:e}=this;return e===null?null:e.edge+e.age}computeLatency(){let e=this.estimateLiveEdge();return e===null?null:e-this.currentTime}},qr=["NONE","TYPE-0","TYPE-1",null];function ed(a){return qr.indexOf(a)>-1}var Bs=["SDR","PQ","HLG"];function td(a){return!!a&&Bs.indexOf(a)>-1}var Rs={No:"",Yes:"YES",v2:"v2"};function vo(a){let{canSkipUntil:e,canSkipDateRanges:t,age:s}=a,i=s<e/2;return e&&i?t?Rs.v2:Rs.Yes:Rs.No}var $s=class{constructor(e,t,s){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=e,this.part=t,this.skip=s}addDirectives(e){let t=new self.URL(e);return this.msn!==void 0&&t.searchParams.set("_HLS_msn",this.msn.toString()),this.part!==void 0&&t.searchParams.set("_HLS_part",this.part.toString()),this.skip&&t.searchParams.set("_HLS_skip",this.skip),t.href}},At=class{constructor(e){this._attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.url=void 0,this.frameRate=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.supportedPromise=void 0,this.supportedResult=void 0,this._avgBitrate=0,this._audioGroups=void 0,this._subtitleGroups=void 0,this._urlId=0,this.url=[e.url],this._attrs=[e.attrs],this.bitrate=e.bitrate,e.details&&(this.details=e.details),this.id=e.id||0,this.name=e.name,this.width=e.width||0,this.height=e.height||0,this.frameRate=e.attrs.optionalFloat("FRAME-RATE",0),this._avgBitrate=e.attrs.decimalInteger("AVERAGE-BANDWIDTH"),this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.codecSet=[e.videoCodec,e.audioCodec].filter(t=>!!t).map(t=>t.substring(0,4)).join(","),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 So(this._audioGroups,e)}hasSubtitleGroup(e){return So(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 So(a,e){return!e||!a?!1:a.indexOf(e)!==-1}function Er(a,e){let t=e.startPTS;if(Z(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.duration=s)}else e.sn>a.sn?a.cc===e.cc&&a.minEndPTS?e.start=a.start+(a.minEndPTS-a.start):e.start=a.start+a.duration:e.start=Math.max(a.start-e.duration,0)}function ol(a,e,t,s,i,r){s-t<=0&&(I.warn("Fragment should have a positive duration",e),s=t+e.duration,r=i+e.duration);let o=t,l=s,c=e.startPTS,u=e.endPTS;if(Z(c)){let y=Math.abs(c-t);Z(e.deltaPTS)?e.deltaPTS=Math.max(y,e.deltaPTS):e.deltaPTS=y,o=Math.max(t,c),t=Math.min(t,c),i=Math.min(i,e.startDTS),l=Math.min(s,u),s=Math.max(s,u),r=Math.max(r,e.endDTS)}let d=t-e.start;e.start!==0&&(e.start=t),e.duration=s-e.start,e.startPTS=t,e.maxStartPTS=o,e.startDTS=i,e.endPTS=s,e.minEndPTS=l,e.endDTS=r;let h=e.sn;if(!a||h<a.startSN||h>a.endSN)return 0;
168let m,f=h-a.startSN,g=a.fragments;for(g[f]=e,m=f;m>0;m--)Er(g[m],g[m-1]);for(m=f;m<g.length-1;m++)Er(g[m],g[m+1]);return a.fragmentHint&&Er(g[g.length-1],a.fragmentHint),a.PTSKnown=a.alignedSliding=!0,d}function sd(a,e){let t=null,s=a.fragments;for(let l=s.length-1;l>=0;l--){let c=s[l].initSegment;if(c){t=c;break}}a.fragmentHint&&delete a.fragmentHint.endPTS;let i=0,r;if(nd(a,e,(l,c)=>{l.relurl&&(i=l.cc-c.cc),Z(l.startPTS)&&Z(l.endPTS)&&(c.start=c.startPTS=l.startPTS,c.startDTS=l.startDTS,c.maxStartPTS=l.maxStartPTS,c.endPTS=l.endPTS,c.endDTS=l.endDTS,c.minEndPTS=l.minEndPTS,c.duration=l.endPTS-l.startPTS,c.duration&&(r=c),e.PTSKnown=e.alignedSliding=!0),c.elementaryStreams=l.elementaryStreams,c.loader=l.loader,c.stats=l.stats,l.initSegment&&(c.initSegment=l.initSegment,t=l.initSegment)}),t&&(e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments).forEach(c=>{var u;c&&(!c.initSegment||c.initSegment.relurl===((u=t)==null?void 0:u.relurl))&&(c.initSegment=t)}),e.skippedSegments)if(e.deltaUpdateFailed=e.fragments.some(l=>!l),e.deltaUpdateFailed){I.warn("[level-helper] Previous playlist missing segments ski
168pped in delta playlist");for(let l=e.skippedSegments;l--;)e.fragments.shift();e.startSN=e.fragments[0].sn,e.startCC=e.fragments[0].cc}else e.canSkipDateRanges&&(e.dateRanges=id(a.dateRanges,e.dateRanges,e.recentlyRemovedDateranges));let n=e.fragments;if(i){I.warn("discontinuity sliding from playlist, take drift into account");for(let l=0;l<n.length;l++)n[l].cc+=i}e.skippedSegments&&(e.startCC=e.fragments[0].cc),rd(a.partList,e.partList,(l,c)=>{c.elementaryStreams=l.elementaryStreams,c.stats=l.stats}),r?ol(e,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):ll(a,e),n.length&&(e.totalduration=e.edge-n[0].start),e.driftStartTime=a.driftStartTime,e.driftStart=a.driftStart;let o=e.advancedDateTime;if(e.advanced&&o){let l=e.edge;e.driftStart||(e.driftStartTime=o,e.driftStart=l),e.driftEndTime=o,e.driftEnd=l}else e.driftEndTime=a.driftEndTime,e.driftEnd=a.driftEnd,e.advancedDateTime=a.advancedDateTime}function id(a,e,t){let s=Pe({},a);return t&&t.forEach(i=>{delete s[i]}),Object.keys(e).forEach(i=>{let r=new Ps(e[i].attr,s[i]);r.isValid?s[i]=r:I.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(e[i].attr)}"`)}),s}function rd(a,e,t){if(a&&e){let s=0;for(let i=0,r=a.length;i<=r;i++){let n=a[i],o=e[i+s];n&&o&&n.index===o.index&&n.fragment.sn===o.fragment.sn?t(n,o):s--}}}function nd(a,e,t){let 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,l=a.fragmentHint?a.fragments.concat(a.fragmentHint):a.fragments;for(let c=i;c<=r;c++){let u=l[n+c],d=o[c];s&&!d&&c<s&&(d=e.fragments[c]=u),u&&d&&t(u,d)}}function ll(a,e){let t=e.startSN+e.skippedSegments-a.startSN,s=a.fragments;t<0||t>=s.length||Gr(e,s[t].start)}function Gr(a,e){if(e){let t=a.fragments;for(let s=a.skippedSegments;s<t.length;s++)t[s].start+=e;a.fragmentHint&&(a.fragmentHint.start+=e)}}function ad(a,e=1/0){let t=1e3*a.targetduration;if(a.updated){let s=a.fragments,i=4;if(s.length&&t*i>e){let r=s[s.length-1].duration*1e3;r<t&&(t=r)}}else t/=2;return Math.round(t)}function od(a,e,t){if(!(a!=null&&a.details))return null;let s=a.details,i=s.fragments[e-s.startSN];return i||(i=s.fragmentHint,i&&i.sn===e)?i:e<s.startSN&&t&&t.sn===e?t:null}function Eo(a,e,t){var s;return a!=null&&a.details?cl((s=a.details)==null?void 0:s.partList,e,t):null}function cl(a,e,t){if(a)for(let s=a.length;s--;){let i=a[s];if(i.index===t&&i.fragment.sn===e)return i}return null}function ul(a){a.forEach((e,t)=>{let{details:s}=e;s!=null&&s.fragments&&s.fragments.forEach(i=>{i.level=t})})}function qs(a){switch(a.details){case D.FRAG_LOAD_TIMEOUT:case D.KEY_LOAD_TIMEOUT:case D.LEVEL_LOAD_TIMEOUT:case D.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function To(a,e){let t=qs(e);return a.default[`${t?"timeout":"error"}Retry`]}function Hn(a,e){let t=a.backoff==="linear"?1:Math.pow(2,e);return Math.min(t*a.retryDelayMs,a.maxRetryDelayMs)}function xo(a){return Be(Be({},a),{errorRetry:null,timeoutRetry:null})}function Gs(a,e,t,s){if(!a)return!1;let i=s?.code,r=e<a.maxNumRetry&&(ld(i)||!!t);return a.shouldRetry?a.shouldRetry(a,e,t,s,r):r}function ld(a){return a===0&&navigator.onLine===!1||!!a&&(a<400||a>499)}var dl={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];let n=e(r);if(n>0)t=i+1;else if(n<0)s=i-1;else return r}return null}};function cd(a,e,t){if(e===null||!Array.isArray(a)||!a.length||!Z(e))return null;let s=a[0].programDateTime;if(e<(s||0))return null;let i=a[a.length-1].endProgramDateTime;if(e>=(i||0))return null;t=t||0;for(let r=0;r<a.length;++r){let n=a[r];if(dd(e,t,n))return n}return null}function Hs(a,e,t=0,s=0,i=.005){let r=null;if(a){r=e[a.sn-e[0].sn+1]||null;let o=a.endDTS-t;o>0&&o<15e-7&&(t+=15e-7)}else t===0&&e[0].start===0&&(r=e[0]);if(r&&((!a||a.level===r.level)&&Hr(t,s,r)===0||ud(r,a,Math.min(i,s))))return r;let n=dl.search(e,Hr.bind(null,t,s));return n&&(n!==a||!r)?n:r}function ud(a,e,t){if(e&&e.start===0&&e.level<a.level&&(e.endPTS||0)>0){let s=e.tagList.reduce((i,r)=>(r[0]==="INF"&&(i+=parseFloat(r[1])),i),t);return a.start<=s}return!1}function Hr(a=0,e=0,t){if(t.start<=a&&t.start+t.duration>a)return 0;let 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 dd(a,e,t){let s=Math.min(e,t.duration+(t.deltaPTS?t.deltaPTS:0))*1e3;return(t.endProgramDateTime||0)-s>a}function hd(a,e){return dl.search(a,t=>t.cc<e?1:t.cc>e?-1:0)}var Ne={DoNothing:0,SendEndCallback:1,SendAlternateToPenaltyBox:2,RemoveAlternatePermanently:3,InsertDiscontinuity:4,RetryRequest:5},it={None:0,MoveAllAlternatesMatchingHost:1,MoveAllAlternatesMatchingHDCP:2,SwitchToSDR:4},Kr=class{constructor(e){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=e,this.log=I.log.bind(I,"[info]:"),this.warn=I.warn.bind(I,"[warning]:"),this.error=I.error.bind(I,"[error]:"),this.registerListeners()}registerListeners(){let e=this.hls;e.on(p.ERROR,this.onError,this),e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){let e=this.hls;e&&(e.off(p.ERROR,this.onError,this),e.off(p.ERROR,this.onErrorOut,this),e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return e?.type===ne.MAIN?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var s,i;if(t.fatal)return;let r=this.hls,n=t.context;switch(t.details){case D.FRAG_LOAD_ERROR:case D.FRAG_LOAD_TIMEOUT:case D.KEY_LOAD_ERROR:case D.KEY_LOAD_TIMEOUT:t.errorAction=this.getFragRetryOrSwitchAction(t);return;case D.FRAG_PARSING_ERROR:if((s=t.frag)!=null&&s.gap){t.errorAction={action:Ne.DoNothing,flags:it.None};return}case D.FRAG_GAP:case D.FRAG_DECRYPT_ERROR:{t.errorAction=this.getFragRetryOrSwitchAction(t),t.errorAction.action=Ne.SendAlternateToPenaltyBox;return}case D.LEVEL_EMPTY_ERROR:case D.LEVEL_PARSING_ERROR:{var o,l;
vendor: 4,292 bytes, line 168
168let c=t.parent===ne.MAIN?t.level:r.loadLevel;t.details===D.LEVEL_EMPTY_ERROR&&((o=t.context)!=null&&(l=o.levelDetails)!=null&&l.live)?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,c):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,c))}return;case D.LEVEL_LOAD_ERROR:case D.LEVEL_LOAD_TIMEOUT:typeof n?.level=="number"&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,n.level));return;case D.AUDIO_TRACK_LOAD_ERROR:case D.AUDIO_TRACK_LOAD_TIMEOUT:case D.SUBTITLE_LOAD_ERROR:case D.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){let c=r.levels[r.loadLevel];if(c&&(n.type===ye.AUDIO_TRACK&&c.hasAudioGroup(n.groupId)||n.type===ye.SUBTITLE_TRACK&&c.hasSubtitleGroup(n.groupId))){t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.loadLevel),t.errorAction.action=Ne.SendAlternateToPenaltyBox,t.errorAction.flags=it.MoveAllAlternatesMatchingHost;return}}return;case D.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{let c=r.levels[r.loadLevel],u=c?.attrs["HDCP-LEVEL"];u?t.errorAction={action:Ne.SendAlternateToPenaltyBox,flags:it.MoveAllAlternatesMatchingHDCP,hdcpLevel:u}:this.keySystemError(t)}return;case D.BUFFER_ADD_CODEC_ERROR:case D.REMUX_ALLOC_ERROR:case D.BUFFER_APPEND_ERROR:t.errorAction=this.getLevelSwitchAction(t,(i=t.level)!=null?i:r.loadLevel);return;case D.INTERNAL_EXCEPTION:case D.BUFFER_APPENDING_ERROR:case D.BUFFER_FULL_ERROR:case D.LEVEL_SWITCH_ERROR:case D.BUFFER_STALLED_ERROR:case D.BUFFER_SEEK_OVER_HOLE:case D.BUFFER_NUDGE_ON_STALL:t.errorAction={action:Ne.DoNothing,flags:it.None};return}t.type===le.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){let t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){let s=this.hls,i=To(s.config.playlistLoadPolicy,e),r=this.playlistError++;if(Gs(i,r,qs(e),e.response))return{action:Ne.RetryRequest,flags:it.None,retryConfig:i,retryCount:r};let o=this.getLevelSwitchAction(e,t);return i&&(o.retryConfig=i,o.retryCount=r),o}getFragRetryOrSwitchAction(e){let t=this.hls,s=this.getVariantLevelIndex(e.frag),i=t.levels[s],{fragLoadPolicy:r,keyLoadPolicy:n}=t.config,o=To(e.details.startsWith("key")?n:r,e),l=t.levels.reduce((u,d)=>u+d.fragmentError,0);if(i&&(e.details!==D.FRAG_GAP&&i.fragmentError++,Gs(o,l,qs(e),e.response)))return{action:Ne.RetryRequest,flags:it.None,retryConfig:o,retryCount:l};let c=this.getLevelSwitchAction(e,s);return o&&(c.retryConfig=o,c.retryCount=l),c}getLevelSwitchAction(e,t){let s=this.hls;t==null&&(t=s.loadLevel);let i=this.hls.levels[t];if(i){var r,n;let c=e.details;i.loadError++,c===D.BUFFER_APPEND_ERROR&&i.fragmentError++;let u=-1,{levels:d,loadLevel:h,minAutoLevel:m,maxAutoLevel:f}=s;s.autoLevelEnabled||(s.loadLevel=-1);let g=(r=e.frag)==null?void 0:r.type,T=(g===ne.AUDIO&&c===D.FRAG_PARSING_ERROR||e.sourceBufferName==="audio"&&(c===D.BUFFER_ADD_CODEC_ERROR||c===D.BUFFER_APPEND_ERROR))&&d.some(({audioCodec:U})=>i.audioCodec!==U),A=e.sourceBufferName==="video"&&(c===D.BUFFER_ADD_CODEC_ERROR||c===D.BUFFER_APPEND_ERROR)&&d.some(({codecSet:U,audioCodec:C})=>i.codecSet!==U&&i.audioCodec===C),{type:_,groupId:L}=(n=e.context)!=null?n:{};for(let U=d.length;U--;){let C=(U+h)%d.length;if(C!==h&&C>=m&&C<=f&&d[C].loadError===0){var o,l;let M=d[C];if(c===D.FRAG_GAP&&g===ne.MAIN&&e.frag){let N=d[C].details;if(N){let F=Hs(e.frag,N.fragments,e.frag.start);if(F!=null&&F.gap)continue}}else{if(_===ye.AUDIO_TRACK&&M.hasAudioGroup(L)||_===ye.SUBTITLE_TRACK&&M.hasSubtitleGroup(L))continue;if(g===ne.AUDIO&&(o=i.audioGroups)!=null&&o.some(N=>M.hasAudioGroup(N))||g===ne.SUBTITLE&&(l=i.subtitleGroups)!=null&&l.some(N=>M.hasSubtitleGroup(N))||T&&i.audioCodec===M.audioCodec||!T&&i.audioCodec!==M.audioCodec||A&&i.codecSet===M.codecSet)continue}u=C;break}}if(u>-1&&s.loadLevel!==u)return e.levelRetry=!0,this.playlistError=0,{action:Ne.SendAlternateToPenaltyBox,flags:it.None,nextAutoLevel:u}}return{action:Ne.SendAlternateToPenaltyBox,flags:it.MoveAllAlternatesMatchingHost}}onErrorOut(e,t){var s;switch((s=t.errorAction)==null?void 0:s.action){case Ne.DoNothing:break;case Ne.SendAlternateToPenaltyBox:this.sendAlternateToPenaltyBox(t),!t.errorAction.resolved&&t.details!==D.FRAG_GAP?t.fatal=!0:/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}
168" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError());break;case Ne.RetryRequest:break}if(t.fatal){this.hls.stopLoad();return}}sendAlternateToPenaltyBox(e){let t=this.hls,s=e.errorAction;if(!s)return;let{flags:i,hdcpLevel:r,nextAutoLevel:n}=s;switch(i){case it.None:this.switchLevel(e,n);break;case it.MoveAllAlternatesMatchingHDCP:r&&(t.maxHdcpLevel=qr[qr.indexOf(r)-1],s.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`);break}s.resolved||this.switchLevel(e,n)}switchLevel(e,t){t!==void 0&&e.errorAction&&(this.warn(`switching to level ${t} after ${e.details}`),this.hls.nextAutoLevel=t,e.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)}},as=class{constructor(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=I.log.bind(I,`${t}:`),this.warn=I.warn.bind(I,`${t}:`),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.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t,s){let i=t?.renditionReports;if(i){let r=-1;for(let n=0;n<i.length;n++){let o=i[n],l;try{l=new self.URL(o.URI,t.url).href}catch(c){I.warn(`Could not construct new URL for Rendition Report: ${c}`),l=o.URI||""}if(l===e){r=n;break}else l===e.substring(0,l.length)&&(r=n)}if(r!==-1){let n=i[r],o=parseInt(n["LAST-MSN"])||t?.lastPartSn,l=parseInt(n["LAST-PART"])||t?.lastPartIndex;if(this.hls.config.lowLatencyMode){let u=Math.min(t.age-t.partTarget,t.targetduration);l>=0&&u>t.partTarget&&(l+=1)}let c=s&&vo(s);return new $s(o,l>=0?l:void 0,c)}}}loadPlaylist(e){this.requestScheduled===-1&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return this.timer===-1&&this.requestScheduled===-1&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,s){let{details:i,stats:r}=t,n=self.performance.now(),o=r.loading.first?Math.max(0,n-r.loading.first):0;if(i.advancedDateTime=Date.now()-o,i.live||s!=null&&s.live){if(i.reloaded(s),s&&this.log(`live playlist ${e} ${i.advanced?"REFRESHED "+i.lastPartSn+"-"+i.lastPartIndex:i.updated?"UPDATED":"MISSED"}`),s&&i.fragments.length>0&&sd(s,i),!this.canLoad||!i.live)return;let l,c,u;if(i.canBlockReload&&i.endSN&&i.advanced){let y=this.hls.config.lowLatencyMode,T=i.lastPartSn,b=i.endSN,A=i.lastPartIndex,_=A!==-1,L=T===b,U=y?0:A;_?(c=L?b+1:T,u=L?U:A+1):c=b+1;let C=i.age,M=C+i.ageHeader,N=Math.min(M-i.partTarget,i.targetduration*1.5);if(N>0){if(s&&N>s.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${N} with playlist age: ${i.age}`),N=0;else{let F=Math.floor(N/i.targetduration);if(c+=F,u!==void 0){let H=Math.round(N%i.targetduration/i.partTarget);u+=H}this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${C.toFixed(2)}s goal: ${N} skip sn ${F} to part ${u}`)}i.tuneInGoal=N}if(l=this.getDeliveryDirectives(i,t.deliveryDirectives,c,u),y||!L){this.loadPlaylist(l);return}}else(i.canBlockReload||i.canSkipUntil)&&(l=this.getDeliveryDirectives(i,t.deliveryDirectives,c,u));let d=this.hls.mainForwardBufferInfo,h=d?d.end-d.len:0,m=(i.edge-h)*1e3,f=ad(i,m);i.updated&&n>this.requestScheduled+f&&(this.requestScheduled=r.loading.start),c!==void 0&&i.canBlockReload?this.requestScheduled=r.loading.first+f-(i.partTarget*1e3||1e3):this.requestScheduled===-1||this.requestScheduled+f<n?this.requestScheduled=n:this.requestScheduled-n<=0&&(this.requestScheduled+=f);let g=this.requestScheduled-n;g=Math.max(0,g),this.log(`reload live playlist ${e} in ${Math.round(g)} ms`),this.timer=self.setTimeout(()=>this.loadPlaylist(l),g)}else this.clearTimer()}getDeliveryDirectives(e,t,s,i){let r=vo(e);return t!=null&&t.skip&&e.deltaUpdateFailed&&(s=t.msn,i=t.part,r=Rs.No),new $s(s,i,r)}checkRetry(e){let t=e.details,s=qs(e),i=e.errorAction,{action:r,retryCount:n=0,retryConfig:o}=i||{},l=!!i&&!!o&&(r===Ne.RetryRequest||!i.resolved&&r===Ne.SendAlternateToPenaltyBox);if(l){var c;if(this.requestScheduled=-1,n>=o.maxNumRetry)return!1;if(s&&(c=e.context)!=null&&c.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${o.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{let u=Hn(o,n);this.timer=self.setTimeout(()=>this.loadPlaylist(),u),this.warn(`Retrying playlist loading ${n+1}/${o.maxNumRetry} after "${t}" in ${u}ms`)}e.levelRetry=!0,i.resolved=!0}return l}},Tt=class{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){let s=Math.pow(this.alpha_,e);this.estimate_=t*(1-s)+s*this.estimate_,this.totalWeight_+=e}
168getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){let e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}},Vr=class{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 Tt(e),this.fast_=new Tt(t),this.defaultTTFB_=i,this.ttfb_=new Tt(e)}update(e,t){let{slow_:s,fast_:i,ttfb_:r}=this;s.halfLife!==e&&(this.slow_=new Tt(e,s.getEstimate(),s.getTotalWeight())),i.halfLife!==t&&(this.fast_=new Tt(t,i.getEstimate(),i.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new Tt(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){e=Math.max(e,this.minDelayMs_);let s=8*t,i=e/1e3,r=s/i;this.fast_.sample(i,r),this.slow_.sample(i,r)}sampleTTFB(e){let 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_}destroy(){}},hl={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},bo={};function fd(a,e,t,s,i,r){let n=a.audioCodec?a.audioGroups:null,o=r?.audioCodec,l=r?.channels,c=l?parseInt(l):o?1/0:2,u=null;if(n!=null&&n.length)try{n.length===1&&n[0]?u=e.groups[n[0]].channels:u=n.reduce((d,h)=>{if(h){let m=e.groups[h];if(!m)throw new Error(`Audio track group ${h} not found`);Object.keys(m.channels).forEach(f=>{d[f]=(d[f]||0)+m.channels[f]})}return d},{2:0})}catch{return!0}return a.videoCodec!==void 0&&(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&&Z(c)&&Object.keys(u).some(d=>parseInt(d)>c)}function md(a,e,t){let s=a.videoCodec,i=a.audioCodec;if(!s||!i||!t)return Promise.resolve(hl);let r={width:a.width,height:a.height,bitrate:Math.ceil(Math.max(a.bitrate*.9,a.averageBitrate)),framerate:a.frameRate||30},n=a.videoRange;n!=="SDR"&&(r.transferFunction=n.toLowerCase());let o=s.split(",").map(l=>({type:"media-source",video:Be(Be({},r),{},{contentType:ns(l,"video")})}));return i&&a.audioGroups&&a.audioGroups.forEach(l=>{var c;l&&((c=e.groups[l])==null||c.tracks.forEach(u=>{if(u.groupId===l){let d=u.channels||"",h=parseFloat(d);Z(h)&&h>2&&o.push.apply(o,i.split(",").map(m=>({type:"media-source",audio:{contentType:ns(m,"audio"),channels:""+h}})))}}))}),Promise.all(o.map(l=>{let c=gd(l);return bo[c]||(bo[c]=t.decodingInfo(l))})).then(l=>({supported:!l.some(c=>!c.supported),configurations:o,decodingInfoResults:l})).catch(l=>({supported:!1,configurations:o,decodingInfoResults:[],error:l}))}function gd(a){let{audio:e,video:t}=a,s=t||e;if(s){let i=s.contentType.split('"')[1];if(t)return`r${t.height}x${t.width}f${Math.ceil(t.framerate)}${t.transferFunction||"sd"}_${i}_${Math.ceil(t.bitrate/1e5)}`;if(e)return`c${e.channels}${e.spatialRendering?"s":"n"}_${i}`}return""}function pd(){if(typeof matchMedia=="function"){let a=matchMedia("(dynamic-range: high)"),e=matchMedia("bad query");if(a.media!==e.media)return a.matches===!0}return!1}function yd(a,e){let t=!1,s=[];return a&&(t=a!=="SDR",s=[a]),e&&(s=e.allowedVideoRanges||Bs.slice(0),t=e.preferHDR!==void 0?e.preferHDR:pd(),t?s=s.filter(i=>i!=="SDR"):s=["SDR"]),{preferHDR:t,allowedVideoRanges:s}}function vd(a,e,t,s,i){let r=Object.keys(a),n=s?.channels,o=s?.audioCodec,l=n&&parseInt(n)===2,c=!0,u=!1,d=1/0,h=1/0,m=1/0,f=0,g=[],{preferHDR:y,allowedVideoRanges:T}=yd(e,i);for(let L=r.length;L--;){let U=a[r[L]];c=U.channels[2]>0,d=Math.min(d,U.minHeight),h=Math.min(h,U.minFramerate),m=Math.min(m,U.minBitrate);let C=T.filter(M=>U.videoRanges[M]>0);C.length>0&&(u=!0,g=C)}d=Z(d)?d:0,h=Z(h)?h:0;let b=Math.max(1080,d),A=Math.max(30,h);return m=Z(m)?m:t,t=Math.max(m,t),u||(e=void 0,g=[]),{codecSet:r.reduce((L,U)=>{let C=a[U];if(U===L)return L;if(C.minBitrate>t)return gt(U,`min bitrate of ${C.minBitrate} > current estimate of ${t}`),L;if(!C.hasDefaultAudio)return gt(U,"no renditions with default or auto-select sound found"),L;if(o&&U.indexOf(o.substring(0,4))%5!==0)return gt(U,`audio codec preference "${o}" not found`),L;if(n&&!l){if(!C.channels[n])return gt(U,`no renditions with ${n} channel sound found (channels options: ${Object.keys(C.channels)})`),L}else if((!o||l)&&c&&C.channels[2]===0)return gt(U,"no renditions with stereo sound found"),L;return C.minHeight>b?(gt(U,`min resolution of ${C.minHeight} > maximum of ${b}`),L):C.minFramerate>A?(gt(U,`min framerate of ${C.minFramerate} > maximum of ${A}`),L):g.some(M=>C.videoRanges[M]>0)?C.maxScore<f?(gt(U,`max score of ${C.maxScore} < selected max of ${f}`),L):L&&(Ns(U)>=Ns(L)||C.fragmentError>a[L].fragmentError)?L:(f=C.maxScore,U):(gt(U,`no variants with VIDEO-RANGE of ${JSON.stringify(g)} found`),L)},void 0),videoRanges:g,preferHDR:y,minFramerate:h,minBitrate:m}}function gt(a,e){I.log(`[abr] start candidates with "${a}" ignored because ${e}`)}function Sd(a){return a.reduce((e,t)=>
vendor: 2,837 bytes, line 168
168{let s=e.groups[t.groupId];s||(s=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),s.tracks.push(t);let 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 Ed(a,e,t,s){return a.slice(t,s+1).reduce((i,r)=>{if(!r.codecSet)return i;let n=r.audioGroups,o=i[r.codecSet];o||(i[r.codecSet]=o={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!n,fragmentError:0}),o.minBitrate=Math.min(o.minBitrate,r.bitrate);let l=Math.min(r.height,r.width);return o.minHeight=Math.min(o.minHeight,l),o.minFramerate=Math.min(o.minFramerate,r.frameRate),o.maxScore=Math.max(o.maxScore,r.score),o.fragmentError+=r.fragmentError,o.videoRanges[r.videoRange]=(o.videoRanges[r.videoRange]||0)+1,n&&n.forEach(c=>{if(!c)return;let u=e.groups[c];u&&(o.hasDefaultAudio=o.hasDefaultAudio||e.hasDefaultAudio?u.hasDefault:u.hasAutoSelect||!e.hasDefaultAudio&&!e.hasAutoSelectAudio,Object.keys(u.channels).forEach(d=>{o.channels[d]=(o.channels[d]||0)+u.channels[d]}))}),i},{})}function ht(a,e,t){if("attrs"in a){let s=e.indexOf(a);if(s!==-1)return s}for(let s=0;s<e.length;s++){let i=e[s];if(Kt(a,i,t))return s}return-1}function Kt(a,e,t){let{groupId:s,name:i,lang:r,assocLang:n,characteristics:o,default:l}=a,c=a.forced;return(s===void 0||e.groupId===s)&&(i===void 0||e.name===i)&&(r===void 0||e.lang===r)&&(r===void 0||e.assocLang===n)&&(l===void 0||e.default===l)&&(c===void 0||e.forced===c)&&(o===void 0||Td(o,e.characteristics))&&(t===void 0||t(a,e))}function Td(a,e=""){let t=a.split(","),s=e.split(",");return t.length===s.length&&!t.some(i=>s.indexOf(i)===-1)}function Ut(a,e){let{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 xd(a,e,t,s,i){let r=e[s],o=e.reduce((h,m,f)=>{let g=m.uri;return(h[g]||(h[g]=[])).push(f),h},{})[r.uri];o.length>1&&(s=Math.max.apply(Math,o));let l=r.videoRange,c=r.frameRate,u=r.codecSet.substring(0,4),d=Ao(e,s,h=>{if(h.videoRange!==l||h.frameRate!==c||h.codecSet.substring(0,4)!==u)return!1;let m=h.audioGroups,f=t.filter(g=>!m||m.indexOf(g.groupId)!==-1);return ht(a,f,i)>-1});return d>-1?d:Ao(e,s,h=>{let m=h.audioGroups,f=t.filter(g=>!m||m.indexOf(g.groupId)!==-1);return ht(a,f,i)>-1})}function Ao(a,e,t){for(let s=e;s>-1;s--)if(t(a[s]))return s;for(let s=e+1;s<a.length;s++)if(t(a[s]))return s;return-1}var jr=class{constructor(e){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.co
168decTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{let{fragCurrent:t,partCurrent:s,hls:i}=this,{autoLevelEnabled:r,media:n}=i;if(!t||!n)return;let o=performance.now(),l=s?s.stats:t.stats,c=s?s.duration:t.duration,u=o-l.loading.start,d=i.minAutoLevel;if(l.aborted||l.loaded&&l.loaded===l.total||t.level<=d){this.clearTimer(),this._nextAutoLevel=-1;return}if(!r||n.paused||!n.playbackRate||!n.readyState)return;let h=i.mainForwardBufferInfo;if(h===null)return;let m=this.bwEstimator.getEstimateTTFB(),f=Math.abs(n.playbackRate);if(u<=Math.max(m,1e3*(c/(f*2))))return;let g=h.len/f,y=l.loading.first?l.loading.first-l.loading.start:-1,T=l.loaded&&y>-1,b=this.getBwEstimate(),A=i.levels,_=A[t.level],L=l.total||Math.max(l.loaded,Math.round(c*_.averageBitrate/8)),U=T?u-y:u;U<1&&T&&(U=Math.min(u,l.loaded*8/b));let C=T?l.loaded*1e3/U:0,M=C?(L-l.loaded)/C:L*8/b+m/1e3;if(M<=g)return;let N=C?C*8:b,F=Number.POSITIVE_INFINITY,H;for(H=t.level-1;H>d;H--){let W=A[H].maxBitrate;if(F=this.getTimeToLoadFrag(m/1e3,N,c*W,!A[H].details),F<g)break}if(F>=M||F>c*10)return;i.nextLoadLevel=i.nextAutoLevel=H,T?this.bwEstimator.sample(u-Math.min(m,y),l.loaded):this.bwEstimator.sampleTTFB(u);let ce=A[H].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>ce&&this.resetEstimator(ce),this.clearTimer(),I.warn(`[abr] Fragment ${t.sn}${s?" part "+s.index:""} of level ${t.level} is loading too slowly;
169      Time to underbuffer: ${g.toFixed(3)} s
170      Estimated load time for current fragment: ${M.toFixed(3)} s
171      Estimated load time for down switch fragment: ${F.toFixed(3)} s
172      TTFB estimate: ${y|0} ms
173      Current BW estimate: ${Z(b)?b|0:"Unknown"} bps
174      New BW estimate: ${this.getBwEstimate()|0} bps
175      Switching to level ${H} @ ${ce|0} bps`),i.trigger(p.FRAG_LOAD_EMERGENCY_ABORTED,{frag:t,part:s,stats:l})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(I.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){let e=this.hls.config;return new Vr(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){let{hls:e}=this;e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.FRAG_LOADING,this.onFragLoading,this),e.on(p.FRAG_LOADED,this.onFragLoaded,this),e.on(p.FRAG_BUFFERED,this.onFragBuffered,this),e.on(p.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(p.LEVEL_LOADED,this.onLevelLoaded,this),e.on(p.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(p.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(p.ERROR,this.onError,this)}unregisterListeners(){let{hls:e}=this;e&&(e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.FRAG_LOADING,this.onFragLoading,this),e.off(p.FRAG_LOADED,this.onFragLoaded,this),e.off(p.FRAG_BUFFERED,this.onFragBuffered,this),e.off(p.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(p.LEVEL_LOADED,this.onLevelLoaded,this),e.off(p.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(p.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(p.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,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){let 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 D.BUFFER_ADD_CODEC_ERROR:case D.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case D.FRAG_LOAD_TIMEOUT:{let s=t.frag,{fragCurrent:i,partCurrent:r}=this;if(s&&i&&s.sn===i.sn&&s.level===i.level){let n=performance.now(),o=r?r.stats:s.stats,l=n-o.loading.start,c=o.loading.first?o.loading.first-o.loading.start:-1;if(o.loaded&&c>-1){let d=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(l-Math.min(d,c),o.loaded)}else this.bwEstimator.sampleTTFB(l)}break}}}getTimeToLoadFrag(e,t,s,i){let r=e+s/t,n=i?this.lastLevelLoadSec:0;return r+n}onLevelLoaded(e,t){let s=this.hls.config,{loading:i}=t.stats,r=i.end-i.start;Z(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(s.abrEwmaSlowLive,s.abrEwmaFastLive):this.bwEstimator.update(s.abrEwmaSlowVoD,s.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:s}){let i=s?s.stats:t.stats;if(t.type===ne.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){let r=s?s.duration:t.duration,n=this.hls.levels[t.level],o=(n.loaded?n.loaded.bytes:0)+i.loaded,l=(n.loaded?n.loaded.duration:0)+r;n.loaded={bytes:o,duration:l},n.realBitrate=Math.round(8*o/l)}if(t.bitrateTest){let r={stats:i,frag:t,part:s,id:t.type};this.onFragBuffered(p.FRAG_BUFFERED,r),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){let{frag:s,part:i}=t,r=i!=null&&i.stats.loaded?i.stats:s.stats;if(r.aborted||this.ignoreFragment(s))return;let 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!==ne.MAIN||e.sn==="initSegment"}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){let{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;let n=this.hls.firstLevel,o=Math.min(Math.max(n,t),e);return I.warn(`[abr] 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(){let e=this.forcedAutoLevel,s=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(e!==-1&&(!s||!i||this.nextAutoLevelKey===this.getAutoLevelKey()))return e;let r=s&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(e!==-1){let 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()}
175_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){let{fragCurrent:e,partCurrent:t,hls:s}=this,{maxAutoLevel:i,config:r,minAutoLevel:n}=s,o=t?t.duration:e?e.duration:0,l=this.getBwEstimate(),c=this.getStarvationDelay(),u=r.abrBandWidthFactor,d=r.abrBandWidthUpFactor;if(c){let y=this.findBestLevel(l,n,i,c,0,u,d);if(y>=0)return y}let h=o?Math.min(o,r.maxStarvationDelay):r.maxStarvationDelay;if(!c){let y=this.bitrateTestDelay;y&&(h=(o?Math.min(o,r.maxLoadingDelay):r.maxLoadingDelay)-y,I.info(`[abr] bitrate test took ${Math.round(1e3*y)}ms, set first fragment max fetchDuration to ${Math.round(1e3*h)} ms`),u=d=1)}let m=this.findBestLevel(l,n,i,c,h,u,d);if(I.info(`[abr] ${c?"rebuffering expected":"buffer is empty"}, optimal quality level ${m}`),m>-1)return m;let f=s.levels[n],g=s.levels[s.loadLevel];return f?.bitrate<g?.bitrate?n:s.loadLevel}getStarvationDelay(){let e=this.hls,t=e.media;if(!t)return 1/0;let s=t&&t.playbackRate!==0?Math.abs(t.playbackRate):1,i=e.mainForwardBufferInfo;return(i?i.len:0)/s}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,s,i,r,n,o){var l;let c=i+r,u=this.lastLoadedFragLevel,d=u===-1?this.hls.firstLevel:u,{fragCurrent:h,partCurrent:m}=this,{levels:f,allAudioTracks:g,loadLevel:y,config:T}=this.hls;if(f.length===1)return 0;let b=f[d],A=!!(b!=null&&(l=b.details)!=null&&l.live),_=y===-1||u===-1,L,U="SDR",C=b?.frameRate||0,{audioPreference:M,videoPreference:N}=T,F=this.audioTracksByGroup||(this.audioTracksByGroup=Sd(g));if(_){if(this.firstSelection!==-1)return this.firstSelection;let ae=this.codecTiers||(this.codecTiers=Ed(f,F,t,s)),se=vd(ae,U,e,M,N),{codecSet:fe,videoRanges:ge,minFramerate:Q,minBitrate:j,preferHDR:P}=se;L=fe,U=P?ge[ge.length-1]:ge[0],C=Q,e=Math.max(e,j),I.log(`[abr] picked start tier ${JSON.stringify(se)}`)}else L=b?.codecSet,U=b?.videoRange;let H=m?m.duration:h?h.duration:0,ce=this.bwEstimator.getEstimateTTFB()/1e3,W=[];for(let ae=s;ae>=t;ae--){var oe;let se=f[ae],fe=ae>d;if(!se)continue;if(T.useMediaCapabilities&&!se.supportedResult&&!se.supportedPromise){let B=navigator.mediaCapabilities;typeof B?.decodingInfo=="function"&&fd(se,F,U,C,e,M)?(se.supportedPromise=md(se,F,B),se.supportedPromise.then(K=>{if(!this.hls)return;se.supportedResult=K;let J=this.hls.levels,ie=J.indexOf(se);K.error?I.warn(`[abr] MediaCapabilities decodingInfo error: "${K.error}" for level ${ie} ${JSON.stringify(K)}`):K.supported||(I.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${ie} ${JSON.stringify(K)}`),ie>-1&&J.length>1&&(I.log(`[abr] Removing unsupported level ${ie}`),this.hls.removeLevel(ie)))})):se.supportedResult=hl}if(L&&se.codecSet!==L||U&&se.videoRange!==U||fe&&C>se.frameRate||!fe&&C>0&&C<se.frameRate||se.supportedResult&&!((oe=se.supportedResult.decodingInfoResults)!=null&&oe[0].smooth)){W.push(ae);continue}let ge=se.details,Q=(m?ge?.partTarget:ge?.averagetargetduration)||H,j;fe?j=o*e:j=n*e;let P=H&&i>=H*2&&r===0?f[ae].averageBitrate:f[ae].maxBitrate,k=this.getTimeToLoadFrag(ce,j,P*Q,ge===void 0);if(j>=P&&(ae===u||se.loadError===0&&se.fragmentError===0)&&(k<=ce||!Z(k)||A&&!this.bitrateTestDelay||k<c)){let B=this.forcedAutoLevel;return ae!==y&&(B===-1||B!==y)&&(W.length&&I.trace(`[abr] Skipped level(s) ${W.join(",")} of ${s} max with CODECS and VIDEO-RANGE:"${f[W[0]].codecs}" ${f[W[0]].videoRange}; not compatible with "${b.codecs}" ${U}`),I.info(`[abr] switch candidate:${d}->${ae} adjustedbw(${Math.round(j)})-bitrate=${Math.round(j-P)} ttfb:${ce.toFixed(1)} avgDuration:${Q.toFixed(1)} maxFetchDuration:${c.toFixed(1)} fetchDuration:${k.toFixed(1)} firstSelection:${_} codecSet:${L} videoRange:${U} hls.loadLevel:${y}`)),_&&(this.firstSelection=ae),ae}}return-1}set nextAutoLevel(e){let{maxAutoLevel:t,minAutoLevel:s}=this.hls,i=Math.min(Math.max(e,s),t);this._nextAutoLevel!==i&&(this.nextAutoLevelKey="",this._nextAutoLevel=i)}},Wr=class{constructor(){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(){}},Ue={NOT_LOADED:"NOT_LOADED",APPENDING:"APPENDING",PARTIAL:"PARTIAL",OK:"OK"},Yr=class{constructor(e){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=e,this._registerListeners()}_registerListeners(){let{hls:e}=this;e.on(p.BUFFER_APPENDED,this.onBufferAppended,this),e.on(p.FRAG_BUFFERED,this.onFragBuffered,this),e.on(p.FRAG_LOADED,this.onFragLoaded,this)}_unregisterListeners(){let{hls:e}=this;e.off(p.BUFFER_APPENDED,this.onBufferAppended,this),e.off(p.FRAG_BUFFERED,this.onFragBuffered,this),e.off(p.FRAG_LOADED,this.onFragLoaded,this)}destroy(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(e,t){let s=this.activePartLists[t];if(s)for(let i=s.length;i--;){let r=s[i];if(!r)break;let n=r.end;if(r.start<=e&&n!==null&&e<=n)return r}return this.getBufferedFrag(e,t)}getBufferedFrag(e,t){let{fragments:s}=this,i=Object.keys(s);for(let r=i.length;r--;){let n=s[i[r]];if(n?.body.type===t&&n.buffered){let o=n.body;if(o.start<=e&&e<=o.end)return o}}return null}detectEvictedFragments(e,t,s,i){this.timeRanges&&(this.timeRanges[e]=t);let r=i?.fragment.sn||-1;
175Object.keys(this.fragments).forEach(n=>{let o=this.fragments[n];if(!o||r>=o.body.sn)return;if(!o.buffered&&!o.loaded){o.body.type===s&&this.removeFragment(o.body);return}let l=o.range[e];l&&l.time.some(c=>{let u=!this.isTimeBuffered(c.startPTS,c.endPTS,t);return u&&this.removeFragment(o.body),u})})}detectPartialFragments(e){let t=this.timeRanges,{frag:s,part:i}=e;if(!t||s.sn==="initSegment")return;let r=Bt(s),n=this.fragments[r];if(!n||n.buffered&&s.gap)return;let o=!s.relurl;Object.keys(t).forEach(l=>{let c=s.elementaryStreams[l];if(!c)return;let u=t[l],d=o||c.partial===!0;n.range[l]=this.getBufferedTimes(s,i,d,u)}),n.loaded=null,Object.keys(n.range).length?(n.buffered=!0,(n.body.endList=s.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),Ss(n)||this.removeParts(s.sn-1,s.type)):this.removeFragment(n.body)}removeParts(e,t){let s=this.activePartLists[t];s&&(this.activePartLists[t]=s.filter(i=>i.fragment.sn>=e))}fragBuffered(e,t){let s=Bt(e),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,i.buffered=!0)}getBufferedTimes(e,t,s,i){let r={time:[],partial:s},n=e.start,o=e.end,l=e.minEndPTS||o,c=e.maxStartPTS||n;for(let u=0;u<i.length;u++){let d=i.start(u)-this.bufferPadding,h=i.end(u)+this.bufferPadding;if(c>=d&&l<=h){r.time.push({startPTS:Math.max(n,i.start(u)),endPTS:Math.min(o,i.end(u))});break}else if(n<h&&o>d){let m=Math.max(n,i.start(u)),f=Math.min(o,i.end(u));f>m&&(r.partial=!0,r.time.push({startPTS:m,endPTS:f}))}else if(o<=d)break}return r}getPartialFragment(e){let t=null,s,i,r,n=0,{bufferPadding:o,fragments:l}=this;return Object.keys(l).forEach(c=>{let u=l[c];u&&Ss(u)&&(i=u.body.start-o,r=u.body.end+o,e>=i&&e<=r&&(s=Math.min(e-i,r-e),n<=s&&(t=u.body,n=s)))}),t}isEndListAppended(e){let t=this.endListFragments[e];return t!==void 0&&(t.buffered||Ss(t))}getState(e){let t=Bt(e),s=this.fragments[t];return s?s.buffered?Ss(s)?Ue.PARTIAL:Ue.OK:Ue.APPENDING:Ue.NOT_LOADED}isTimeBuffered(e,t,s){let i,r;for(let n=0;n<s.length;n++){if(i=s.start(n)-this.bufferPadding,r=s.end(n)+this.bufferPadding,e>=i&&t<=r)return!0;if(t<=i)return!1}return!1}onFragLoaded(e,t){let{frag:s,part:i}=t;if(s.sn==="initSegment"||s.bitrateTest)return;let r=i?null:t,n=Bt(s);this.fragments[n]={body:s,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){let{frag:s,part:i,timeRanges:r}=t;if(s.sn==="initSegment")return;let n=s.type;if(i){let o=this.activePartLists[n];o||(this.activePartLists[n]=o=[]),o.push(i)}this.timeRanges=r,Object.keys(r).forEach(o=>{let l=r[o];this.detectEvictedFragments(o,l,n,i)})}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){let t=Bt(e);return!!this.fragments[t]}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=>{let o=this.fragments[n];if(!o)return;let l=o.body;l.type!==s||i&&!l.gap||l.start<t&&l.end>e&&(o.buffered||r)&&this.removeFragment(l)})}removeFragment(e){let t=Bt(e);e.stats.loaded=0,e.clearElementaryStreamInfo();let s=this.activePartLists[e.type];if(s){let i=e.sn;this.activePartLists[e.type]=s.filter(r=>r.fragment.sn!==i)}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}};function Ss(a){var e,t,s;return a.buffered&&(a.body.gap||((e=a.range.video)==null?void 0:e.partial)||((t=a.range.audio)==null?void 0:t.partial)||((s=a.range.audiovideo)==null?void 0:s.partial))}function Bt(a){return`${a.type}_${a.level}_${a.sn}`}var bd={length:0,start:()=>0,end:()=>0},xe=class{static isBuffered(e,t){try{if(e){let s=xe.getBuffered(e);for(let i=0;i<s.length;i++)if(t>=s.start(i)&&t<=s.end(i))return!0}}catch{}return!1}static bufferInfo(e,t,s){try{if(e){let i=xe.getBuffered(e),r=[],n;for(n=0;n<i.length;n++)r.push({start:i.start(n),end:i.end(n)});return this.bufferedInfo(r,t,s)}}catch{}return{len:0,start:t,end:t,nextStart:void 0}}static bufferedInfo(e,t,s){t=Math.max(0,t),e.sort(function(c,u){let d=c.start-u.start;return d||u.end-c.end});let i=[];if(s)for(let c=0;c<e.length;c++){let u=i.length;if(u){let d=i[u-1].end;e[c].start-d<s?e[c].end>d&&(i[u-1].end=e[c].end):i.push(e[c])}else i.push(e[c])}else i=e;let r=0,n,o=t,l=t;for(let c=0;c<i.length;c++){let u=i[c].start,d=i[c].end;if(t+s>=u&&t<d)o=u,l=d,r=l-t;else if(t+s<u){n=u;break}}return{len:r,start:o||0,end:l||0,nextStart:n}}static getBuffered(e){try{return e.buffered}catch(t){return I.log("failed to get media.buffered",t),bd}}},os=class{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=Es(),this.buffering={audio:Es(),video:Es(),audiovideo:Es()},this.level=e,this.sn=t,this.id=s,this.size=i,this.part=r,this.partial=n}};function Es(){return{start:0,executeStart:0,executeEnd:0,end:0}}function ws(a,e){for(let s=0,i=a.length;s<i;s++){var t;if(((t=a[s])==null?void 0:t.cc)===e)return a[s]}return null}function Ad(a,e,t){return!!(e&&(t.endCC>t.startCC||a&&a.cc<t.startCC))}function Ld(a,e){let t=a.fragments,s=e.fragments;if(!s.length||!t.length){I.log("No fragments to align");return}let i=ws(t,s[0].cc);if(!i||i&&!i.startPTS){I.log("No frag in previous level to align on");return}return i}function Lo(a,e){if(a){let t=a.start+e;a.start=a.startPTS=t,a.endPTS=t+a.duration}}function fl(a,e){let t=e.fragments;for(let s=0,i=t.length;s<i;s++)Lo(t[s],a);e.fragmentHint&&Lo(e.fragmentHint,a),e.alignedSliding=!0}function Id(a,e,t){e&&(Rd(a,t,e),!t.alignedSliding&&e&&Ks(t,e),!t.alignedSliding&&e&&!t.skippedSegments&&ll(e,t))}function Rd(a,e,t){if(Ad(a,t,e)){let s=Ld(t,e);s&&Z(s.start)&&(I.log(`Adjusting PTS using last level due to CC increase within current level ${e.url}`),fl(s.start,e))}}function Ks(a,e){if(!a.hasProgramDateTime||!e.hasProgramDateTime)return;let t=a.fragments,s=e.fragments;if(!t.length||!s.length)return;let i,r,n=Math.min(e.endCC,a.endCC);e.startCC<n&&a.startCC<n&&(i=ws(s,n),r=ws(t,n)),(!i||!r)&&(i=s[Math.floor(s.length/2)],r=ws(t,i.cc)||t[Math.floor(t.length/2)]);let o=i.programDateTime,l=r.programDateTime;if(!o||!l)return;let c=(l-o)/1e3-(r.start-i.start);fl(c,a)}var Io=Math.pow(2,17),zr=class{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){let s=e.url;
vendor: 5,824 bytes, line 175
175if(!s)return Promise.reject(new nt({type:le.NETWORK_ERROR,details:D.FRAG_LOAD_ERROR,fatal:!1,frag:e,error:new Error(`Fragment does not have a ${s?"part list":"url"}`),networkDetails:null}));this.abort();let i=this.config,r=i.fLoader,n=i.loader;return new Promise((o,l)=>{if(this.loader&&this.loader.destroy(),e.gap)if(e.tagList.some(m=>m[0]==="GAP")){l(wo(e));return}else e.gap=!1;let c=this.loader=e.loader=r?new r(i):new n(i),u=Ro(e),d=xo(i.fragLoadPolicy.default),h={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:e.sn==="initSegment"?1/0:Io};e.stats=c.stats,c.load(u,h,{onSuccess:(m,f,g,y)=>{this.resetLoader(e,c);let T=m.data;g.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(T.slice(0,16)),T=T.slice(16)),o({frag:e,part:null,payload:T,networkDetails:y})},onError:(m,f,g,y)=>{this.resetLoader(e,c),l(new nt({type:le.NETWORK_ERROR,details:D.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:Be({url:s,data:void 0},m),error:new Error(`HTTP Error ${m.code} ${m.text}`),networkDetails:g,stats:y}))},onAbort:(m,f,g)=>{this.resetLoader(e,c),l(new nt({type:le.NETWORK_ERROR,details:D.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:g,stats:m}))},onTimeout:(m,f,g)=>{this.resetLoader(e,c),l(new nt({type:le.NETWORK_ERROR,details:D.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${h.timeout}ms`),networkDetails:g,stats:m}))},onProgress:(m,f,g,y)=>{t&&t({frag:e,part:null,payload:g,networkDetails:y})}})})}loadPart(e,t,s){this.abort();let i=this.config,r=i.fLoader,n=i.loader;return new Promise((o,l)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap){l(wo(e,t));return}let c=this.loader=e.loader=r?new r(i):new n(i),u=Ro(e,t),d=xo(i.fragLoadPolicy.default),h={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:Io};t.stats=c.stats,c.load(u,h,{onSuccess:(m,f,g,y)=>{this.resetLoader(e,c),this.updateStatsFromPart(e,t);let T={frag:e,part:t,payload:m.data,networkDetails:y};s(T),o(T)},onError:(m,f,g,y)=>{this.resetLoader(e,c),l(new nt({type:le.NETWORK_ERROR,details:D.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:Be({url:u.url,data:void 0},m),error:new Error(`HTTP Error ${m.code} ${m.text}`),networkDetails:g,stats:y}))},onAbort:(m,f,g)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,c),l(new nt({type:le.NETWORK_ERROR,details:D.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:g,stats:m}))},onTimeout:(m,f,g)=>{this.resetLoader(e,c),l(new nt({type:le.NETWORK_ERROR,details:D.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${h.timeout}ms`),networkDetails:g,stats:m}))}})})}updateStatsFromPart(e,t){let s=e.stats,i=t.stats,r=i.total;if(s.loaded+=i.loaded,r){let l=Math.round(e.duration/t.duration),c=Math.min(Math.round(s.loaded/r),l),d=(l-c)*Math.round(s.loaded/c);s.total=s.loaded+d}else s.total=Math.max(s.loaded,s.total);let 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 Ro(a,e=null){let 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(Z(i)&&Z(r)){var n;let o=i,l=r;if(a.sn==="initSegment"&&((n=a.decryptdata)==null?void 0:n.method)==="AES-128"){let c=r-i;c%16&&(l=r+(16-c%16)),i!==0&&(s.resetIV=!0,o=i-16)}s.rangeStart=o,s.rangeEnd=l}return s}function wo(a,e){let t=new Error(`GAP ${a.gap?"tag":"attribute"} found`),s={type:le.MEDIA_ERROR,details:D.FRAG_GAP,fatal:!1,frag:a,error:t,networkDetails:null};return e&&(s.part=e),(e||a).stats.aborted=!0,new nt(s)}var nt=class extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}},Xr=class{constructor(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}},Jr=class{constructor(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}};function wd(a){let e=a.byteLength,t=e&&new DataView(a.buffer).getUint8(e-1);return t?_t(a,0,e-t):a}var Qr=class{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){let t=new DataView(e),s=new Uint32Array(4);for(let i=0;i<4;i++)s[i]=t.getUint32(i*4);return s}initTable(){let e=this.sBox,t=this.invSBox,s=this.subMix,i=s[0],r=s[1],n=s[2],o=s[3],l=this.invSubMix,c=l[0],u=l[1],d=l[2],h=l[3],m=new Uint32Array(256),f=0,g=0,y=0;for(y=0;y<256;y++)y<128?m[y]=y<<1:m[y]=y<<1^283;for(y=0;y<256;y++){let T=g^g<<1^g<<2^g<<3^g<<4;T=T>>>8^T&255^99,e[f]=T,t[T]=f;let b=m[f],A=m[b],_=m[A],L=m[T]*257^T*16843008;i[f]=L<<24|L>>>8,r[f]=L<<16|L>>>16,n[f]=L<<8|L>>>24,o[f]=L,L=_*16843009^A*65537^b*257^f*16843008,c[T]=L<<24|L>>>8,u[T]=L<<16|L>>>16,d[T]=L<<8|L>>>24,h[T]=L,f?(f=b^m[m[m[_^b]]],g^=m[m[g]]):f=g=1}}expandKey(e){let t=this.uint8ArrayToUint32Array_(e),s=!0,i=0;for(;i<t.length&&s;)s=t[i]===this.key[i],i++;if(s)return;this.key=t;let r=this.keySize=t.length;if(r!==4&&r!==6&&r!==8)throw new Error("Invalid aes key size="+r);let n=this.ksRows=(r+6+1)*4,o,l,c=this.keySchedule=new Uint32Array(n),u=this.invKeySchedule=new Uint32Array(n),d=this.sBox,h=this.rcon,m=this.invSubMix,f=m[0],g=m[1],y=m[2],T=m[3],b,A;for(o=0;o<n;
175o++){if(o<r){b=c[o]=t[o];continue}A=b,o%r===0?(A=A<<8|A>>>24,A=d[A>>>24]<<24|d[A>>>16&255]<<16|d[A>>>8&255]<<8|d[A&255],A^=h[o/r|0]<<24):r>6&&o%r===4&&(A=d[A>>>24]<<24|d[A>>>16&255]<<16|d[A>>>8&255]<<8|d[A&255]),c[o]=b=(c[o-r]^A)>>>0}for(l=0;l<n;l++)o=n-l,l&3?A=c[o]:A=c[o-4],l<4||o<=4?u[l]=A:u[l]=f[d[A>>>24]]^g[d[A>>>16&255]]^y[d[A>>>8&255]]^T[d[A&255]],u[l]=u[l]>>>0}networkToHostOrderSwap(e){return e<<24|(e&65280)<<8|(e&16711680)>>8|e>>>24}decrypt(e,t,s){let i=this.keySize+6,r=this.invKeySchedule,n=this.invSBox,o=this.invSubMix,l=o[0],c=o[1],u=o[2],d=o[3],h=this.uint8ArrayToUint32Array_(s),m=h[0],f=h[1],g=h[2],y=h[3],T=new Int32Array(e),b=new Int32Array(T.length),A,_,L,U,C,M,N,F,H,ce,W,oe,ae,se,fe=this.networkToHostOrderSwap;for(;t<T.length;){for(H=fe(T[t]),ce=fe(T[t+1]),W=fe(T[t+2]),oe=fe(T[t+3]),C=H^r[0],M=oe^r[1],N=W^r[2],F=ce^r[3],ae=4,se=1;se<i;se++)A=l[C>>>24]^c[M>>16&255]^u[N>>8&255]^d[F&255]^r[ae],_=l[M>>>24]^c[N>>16&255]^u[F>>8&255]^d[C&255]^r[ae+1],L=l[N>>>24]^c[F>>16&255]^u[C>>8&255]^d[M&255]^r[ae+2],U=l[F>>>24]^c[C>>16&255]^u[M>>8&255]^d[N&255]^r[ae+3],C=A,M=_,N=L,F=U,ae=ae+4;A=n[C>>>24]<<24^n[M>>16&255]<<16^n[N>>8&255]<<8^n[F&255]^r[ae],_=n[M>>>24]<<24^n[N>>16&255]<<16^n[F>>8&255]<<8^n[C&255]^r[ae+1],L=n[N>>>24]<<24^n[F>>16&255]<<16^n[C>>8&255]<<8^n[M&255]^r[ae+2],U=n[F>>>24]<<24^n[C>>16&255]<<16^n[M>>8&255]<<8^n[N&255]^r[ae+3],b[t]=fe(A^m),b[t+1]=fe(U^f),b[t+2]=fe(L^g),b[t+3]=fe(_^y),m=H,f=ce,g=W,y=oe,t=t+4}return b.buffer}},Cd=16,ls=class{constructor(e,{removePKCS7Padding:t=!0}={}){if(this.logEnabled=!0,this.removePKCS7Padding=void 0,this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null,this.useSoftware=void 0,this.useSoftware=e.enableSoftwareAES,this.removePKCS7Padding=t,t)try{let s=self.crypto;s&&(this.subtle=s.subtle||s.webkitSubtle)}catch{}this.useSoftware=!this.subtle}destroy(){this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null}isSync(){return this.useSoftware}flush(){let{currentResult:e,remainderData:t}=this;if(!e||t)return this.reset(),null;let s=new Uint8Array(e);return this.reset(),this.removePKCS7Padding?wd(s):s}reset(){this.currentResult=null,this.currentIV=null,this.remainderData=null,this.softwareDecrypter&&(this.softwareDecrypter=null)}decrypt(e,t,s){return this.useSoftware?new Promise((i,r)=>{this.softwareDecrypt(new Uint8Array(e),t,s);let n=this.flush();n?i(n.buffer):r(new Error("[softwareDecrypt] Failed to decrypt data"))}):this.webCryptoDecrypt(new Uint8Array(e),t,s)}softwareDecrypt(e,t,s){let{currentIV:i,currentResult:r,remainderData:n}=this;this.logOnce("JS AES decrypt"),n&&(e=et(n,e),this.remainderData=null);let o=this.getValidChunk(e);if(!o.length)return null;i&&(s=i);let l=this.softwareDecrypter;l||(l=this.softwareDecrypter=new Qr),l.expandKey(t);let c=r;return this.currentResult=l.decrypt(o.buffer,0,s),this.currentIV=_t(o,-16).buffer,c||null}webCryptoDecrypt(e,t,s){if(this.key!==t||!this.fastAesKey){if(!this.subtle)return Promise.resolve(this.onWebCryptoError(e,t,s));this.key=t,this.fastAesKey=new Jr(this.subtle,t)}return this.fastAesKey.expandKey().then(i=>this.subtle?(this.logOnce("WebCrypto AES decrypt"),new Xr(this.subtle,new Uint8Array(s)).decrypt(e.buffer,i)):Promise.reject(new Error("web crypto not initialized"))).catch(i=>(I.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${i.name}: ${i.message}`),this.onWebCryptoError(e,t,s)))}onWebCryptoError(e,t,s){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,s);let i=this.flush();if(i)return i.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e,s=e.length-e.length%Cd;return s!==e.length&&(t=_t(e,0,s),this.remainderData=_t(e,s)),t}logOnce(e){this.logEnabled&&(I.log(`[decrypter]: ${e}`),this.logEnabled=!1)}},Dd={toString:function(a){let e="",t=a.length;for(let s=0;s<t;s++)e+=`[${a.start(s).toFixed(3)}-${a.end(s).toFixed(3)}]`;return e}},$={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_TRACK:"WAITING_TRACK",PARSING:"PARSING",PARSED:"PARSED",ENDED:"ENDED",ERROR:"ERROR",WAITING_INIT_PTS:"WAITING_INIT_PTS",WAITING_LEVEL:"WAITING_LEVEL"},cs=class extends Wr{constructor(e,t,s,i,r){super(),this.hls=void 0,this.fragPrevious=null,this.fragCurrent=null,this.fragmentTracker=void 0,this.transmuxer=null,this._state=$.STOPPED,this.playlistType=void 0,this.media=null,this.mediaBuffer=null,this.config=void 0,this.bitrateTest=!1,this.lastCurrentTime=0,this.nextLoadPosition=0,this.startPosition=0,this.startTimeOffset=null,this.loadedmetadata=!1,this.retryDate=0,this.levels=null,this.fragmentLoader=void 0,this.keyLoader=void 0,this.levelLastLoaded=null,this.startFragRequested=!1,this.decrypter=void 0,this.initPTS=[],this.onvseeking=null,this.onvended=null,this.logPrefix="",this.log=void 0,this.warn=void 0,this.playlistType=r,this.logPrefix=i,this.log=I.log.bind(I,`${i}:`),this.warn=I.warn.bind(I,`${i}:`),this.hls=e,this.fragmentLoader=new zr(e.config),this.keyLoader=s,this.fragmentTracker=t,this.config=e.config,this.decrypter=new ls(e.config),e.on(p.MANIFEST_LOADED,this.onManifestLoaded,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);let 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=$.STOPPED}_streamEnded(e,t){if(t.live||e.nextStart||!e.end||!this.media)return!1;let s=t.partList;if(s!=null&&s.length){let r=s[s.length-1];return xe.isBuffered(this.media,r.start+r.duration/2)}let i=t.fragments[t.fragments.length-1].type;return this.fragmentTracker.isEndListAppended(i)}
175getLevelDetails(){if(this.levels&&this.levelLastLoaded!==null){var e;return(e=this.levelLastLoaded)==null?void 0:e.details}}onMediaAttached(e,t){let s=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),s.addEventListener("seeking",this.onvseeking),s.addEventListener("ended",this.onvended);let i=this.config;this.levels&&i.autoStartLoad&&this.state===$.STOPPED&&this.startLoad(i.startPosition)}onMediaDetaching(){let e=this.media;e!=null&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.keyLoader&&this.keyLoader.detach(),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()}onMediaSeeking(){let{config:e,fragCurrent:t,media:s,mediaBuffer:i,state:r}=this,n=s?s.currentTime:0,o=xe.bufferInfo(i||s,n,e.maxBufferHole);if(this.log(`media seeking to ${Z(n)?n.toFixed(3):n}, state: ${r}`),this.state===$.ENDED)this.resetLoadingState();else if(t){let l=e.maxFragLookUpTolerance,c=t.start-l,u=t.start+t.duration+l;if(!o.len||u<o.start||c>o.end){let d=n>u;(n<c||d)&&(d&&t.loader&&(this.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),t.abortRequests(),this.resetLoadingState()),this.fragPrevious=null)}}s&&(this.fragmentTracker.removeFragmentsInRange(n,1/0,this.playlistType,!0),this.lastCurrentTime=n),!this.loadedmetadata&&!o.len&&(this.nextLoadPosition=this.startPosition=n),this.tickImmediate()}onMediaEnded(){this.startPosition=this.lastCurrentTime=0}onManifestLoaded(e,t){this.startTimeOffset=t.startTimeOffset,this.initPTS=[]}onHandlerDestroying(){this.hls.off(p.MANIFEST_LOADED,this.onManifestLoaded,this),this.stopLoad(),super.onHandlerDestroying(),this.hls=null}onHandlerDestroyed(){this.state=$.STOPPED,this.fragmentLoader&&this.fragmentLoader.destroy(),this.keyLoader&&this.keyLoader.destroy(),this.decrypter&&this.decrypter.destroy(),this.hls=this.log=this.warn=this.decrypter=this.keyLoader=this.fragmentLoader=this.fragmentTracker=null,super.onHandlerDestroyed()}loadFragment(e,t,s){this._loadFragForPlayback(e,t,s)}_loadFragForPlayback(e,t,s){let i=r=>{if(this.fragContextChanged(e)){this.warn(`Fragment ${e.sn}${r.part?" p: "+r.part.index:""} of level ${e.level} was dropped during download.`),this.fragmentTracker.removeFragment(e);return}e.stats.chunkCount++,this._handleFragmentLoadProgress(r)};this._doFragLoad(e,t,s,i).then(r=>{if(!r)return;let n=this.state;if(this.fragContextChanged(e)){(n===$.FRAG_LOADING||!this.fragCurrent&&n===$.PARSING)&&(this.fragmentTracker.removeFragment(e),this.state=$.IDLE);return}"payload"in r&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(p.FRAG_LOADED,r)),this._handleFragmentLoadComplete(r)}).catch(r=>{this.state===$.STOPPED||this.state===$.ERROR||(this.warn(`Frag error: ${r?.message||r}`),this.resetFragmentLoading(e))})}clearTrackerIfNeeded(e){var t;let{fragmentTracker:s}=this;if(s.getState(e)===Ue.APPENDING){let r=e.type,n=this.getFwdBufferInfo(this.mediaBuffer,r),o=Math.max(e.duration,n?n.len:this.config.maxBufferLength),l=this.backtrackFragment;((l?e.sn-l.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)===Ue.PARTIAL&&s.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){let 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)}flushMainBuffer(e,t,s=null){if(!(e-t))return;let i={startOffset:e,endOffset:t,type:s};this.hls.trigger(p.BUFFER_FLUSHING,i)}_loadInitSegment(e,t){this._doFragLoad(e,t).then(s=>{if(!s||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return s}).then(s=>{let{hls:i}=this,{payload:r}=s,n=e.decryptdata;if(r&&r.byteLength>0&&n!=null&&n.key&&n.iv&&n.method==="AES-128"){let o=self.performance.now();
175return this.decrypter.decrypt(new Uint8Array(r),n.key.buffer,n.iv.buffer).catch(l=>{throw i.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.FRAG_DECRYPT_ERROR,fatal:!1,error:l,reason:l.message,frag:e}),l}).then(l=>{let c=self.performance.now();return i.trigger(p.FRAG_DECRYPTED,{frag:e,payload:l,stats:{tstart:o,tdecrypt:c}}),s.payload=l,this.completeInitSegmentLoad(s)})}return this.completeInitSegmentLoad(s)}).catch(s=>{this.state===$.STOPPED||this.state===$.ERROR||(this.warn(s),this.resetFragmentLoading(e))})}completeInitSegmentLoad(e){let{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");let s=e.frag.stats;this.state=$.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()}fragContextChanged(e){let{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var s,i,r,n;let o=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===ne.MAIN?"level":"track"} ${e.level} (frag:[${((s=e.startPTS)!=null?s:NaN).toFixed(3)}-${((i=e.endPTS)!=null?i:NaN).toFixed(3)}] > buffer:${o?Dd.toString(xe.getBuffered(o)):"(detached)"})`),e.sn!=="initSegment"){var l;if(e.type!==ne.SUBTITLE){let u=e.elementaryStreams;if(!Object.keys(u).some(d=>!!u[d])){this.state=$.IDLE;return}}let c=(l=this.levels)==null?void 0:l[e.level];c!=null&&c.fragmentError&&(this.log(`Resetting level fragment error count of ${c.fragmentError} on frag buffered`),c.fragmentError=0)}this.state=$.IDLE,o&&(!this.loadedmetadata&&e.type==ne.MAIN&&o.buffered.length&&((r=this.fragCurrent)==null?void 0:r.sn)===((n=this.fragPrevious)==null?void 0:n.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){let{transmuxer:t}=this;if(!t)return;let{frag:s,part:i,partsLoaded:r}=e,n=!r||r.length===0||r.some(l=>!l),o=new os(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;let 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)?(this.log(`Loading key for ${e.sn} of [${n.startSN}-${n.endSN}], ${this.logPrefix==="[stream-controller]"?"level":"track"} ${e.level}`),this.state=$.KEY_LOADING,this.fragCurrent=e,o=this.keyLoader.load(e).then(u=>{if(!this.fragContextChanged(u.frag))return this.hls.trigger(p.KEY_LOADED,u),this.state===$.KEY_LOADING&&(this.state=$.IDLE),u}),this.hls.trigger(p.KEY_LOADING,{frag:e}),this.fragCurrent===null&&(o=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))):!e.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(e,n.encryptedFragments),s=Math.max(e.start,s||0),this.config.lowLatencyMode&&e.sn!=="initSegment"){let u=n.partList;if(u&&i){s>e.end&&n.fragmentHint&&(e=n.fragmentHint);let d=this.getNextPart(u,e,s);if(d>-1){let h=u[d];this.log(`Loading part sn: ${e.sn} p: ${h.index} cc: ${e.cc} of playlist [${n.startSN}-${n.endSN}] parts [0-${d}-${u.length-1}] ${this.logPrefix==="[stream-controller]"?"level":"track"}: ${e.level}, target: ${parseFloat(s.toFixed(3))}`),this.nextLoadPosition=h.start+h.duration,this.state=$.FRAG_LOADING;let m;return o?m=o.then(f=>!f||this.fragContextChanged(f.frag)?null:this.doFragPartsLoad(e,h,t,i)).catch(f=>this.handleFragLoadError(f)):m=this.doFragPartsLoad(e,h,t,i).catch(f=>this.handleFragLoadError(f)),this.hls.trigger(p.FRAG_LOADING,{frag:e,part:h,targetBufferTime:s}),this.fragCurrent===null?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):m}else if(!e.url||this.loadedEndOfParts(u,s))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${n?"of ["+n.startSN+"-"+n.endSN+"] ":""}${this.logPrefix==="[stream-controller]"?"level":"track"}: ${e.level}, target: ${parseFloat(s.toFixed(3))}`),Z(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=$.FRAG_LOADING;let l=this.config.progressive,c;return l&&o?c=o.then(u=>!u||this.fragContextChanged(u?.frag)?null:this.fragmentLoader.load(e,i)).catch(u=>
175this.handleFragLoadError(u)):c=Promise.all([this.fragmentLoader.load(e,l?i:void 0),o]).then(([u])=>(!l&&u&&i&&i(u),u)).catch(u=>this.handleFragLoadError(u)),this.hls.trigger(p.FRAG_LOADING,{frag:e,targetBufferTime:s}),this.fragCurrent===null?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):c}doFragPartsLoad(e,t,s,i){return new Promise((r,n)=>{var o;let l=[],c=(o=s.details)==null?void 0:o.partList,u=d=>{this.fragmentLoader.loadPart(e,d,i).then(h=>{l[d.index]=h;let m=h.part;this.hls.trigger(p.FRAG_LOADED,h);let f=Eo(s,e.sn,d.index+1)||cl(c,e.sn,d.index+1);if(f)u(f);else return r({frag:e,part:m,partsLoaded:l})}).catch(n)};u(t)})}handleFragLoadError(e){if("data"in e){let t=e.data;e.data&&t.details===D.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(p.ERROR,t)}else this.hls.trigger(p.ERROR,{type:le.OTHER_ERROR,details:D.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){let t=this.getCurrentContext(e);if(!t||this.state!==$.PARSING){!this.fragCurrent&&this.state!==$.STOPPED&&this.state!==$.ERROR&&(this.state=$.IDLE);return}let{frag:s,part:i,level:r}=t,n=self.performance.now();s.stats.parsing.end=n,i&&(i.stats.parsing.end=n),this.updateLevelTiming(s,i,r,e.partial)}getCurrentContext(e){let{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 level ${i}. The current chunk will not be buffered.`),null;let o=t[i],l=n>-1?Eo(o,r,n):null,c=l?l.fragment:od(o,r,s);return c?(s&&s!==c&&(c.stats=s.stats),{frag:c,part:l,level:o}):null}bufferFragmentData(e,t,s,i,r){var n;if(!e||this.state!==$.PARSING)return;let{data1:o,data2:l}=e,c=o;if(o&&l&&(c=et(o,l)),!((n=c)!=null&&n.length))return;let u={type:e.type,frag:t,part:s,chunkMeta:i,parent:t.type,data:c};if(this.hls.trigger(p.BUFFER_APPENDING,u),e.dropped&&e.independent&&!s){if(r)return;this.flushBufferGap(t)}}flushBufferGap(e){let t=this.media;if(!t)return;if(!xe.isBuffered(t,t.currentTime)){this.flushMainBuffer(0,e.start);return}let s=t.currentTime,i=xe.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){let s=this.getLoadPosition();return Z(s)?this.getFwdBufferInfoAtPos(e,s,t):null}getFwdBufferInfoAtPos(e,t,s){let{config:{maxBufferHole:i}}=this,r=xe.bufferInfo(e,t,i);if(r.len===0&&r.nextStart!==void 0){let n=this.fragmentTracker.getBufferedFrag(t,s);if(n&&r.nextStart<n.end)return xe.bufferInfo(e,t,Math.max(r.nextStart,i))}return r}getMaxBufferLength(e){let{config:t}=this,s;return e?s=Math.max(8*t.maxBufferSize/e,t.maxBufferLength):s=t.maxBufferLength,Math.min(s,t.maxMaxBufferLength)}reduceMaxBufferLength(e,t){let 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=ne.MAIN){let s=this.fragmentTracker.getAppendedFrag(e,ne.MAIN);return s&&"fragment"in s?s.fragment:s}getNextFragment(e,t){let s=t.fragments,i=s.length;if(!i)return null;let{config:r}=this,n=s[0].start,o;if(t.live){let l=r.initialLiveManifestSize;if(i<l)return this.warn(`Not enough fragments to start playback (have: ${i}, need: ${l})`),null;(!t.PTSKnown&&!this.startFragRequested&&this.startPosition===-1||e<n)&&(o=this.getInitialLiveFragment(t,s),this.startPosition=this.nextLoadPosition=o?this.hls.liveSyncPosition||o.start:e)}else e<=n&&(o=s[0]);if(!o){let l=r.lowLatencyMode?t.partEnd:t.fragmentEnd;o=this.getFragmentAtPosition(e,l,t)}return this.mapToInitFragWhenRequired(o)}isLoopLoading(e,t){let s=this.fragmentTracker.getState(e);return(s===Ue.OK||s===Ue.PARTIAL&&!!e.gap)&&this.nextLoadPosition>t}getNextFragmentLoopLoading(e,t,s,i,r){let n=e.gap,o=this.getNextFragment(this.nextLoadPosition,t);if(o===null)return o;if(e=o,n&&e&&!e.gap&&s.nextStart){let l=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,s.nextStart,i);if(l!==null&&s.len+l.len>=r)return this.log(`buffer full after gaps in "${i}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return e!=null&&e.initSegment&&!(e!=null&&e.initSegment.data)&&!this.bitrateTest?e.
175initSegment:e}getNextPart(e,t,s){let i=-1,r=!1,n=!0;for(let o=0,l=e.length;o<l;o++){let c=e[o];if(n=n&&!c.independent,i>-1&&s<c.start)break;let u=c.loaded;u?i=-1:(r||c.independent||n)&&c.fragment===t&&(i=o),r=u}return i}loadedEndOfParts(e,t){let s=e[e.length-1];return s&&t>s.start&&s.loaded}getInitialLiveFragment(e,t){let s=this.fragPrevious,i=null;if(s){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`),i=cd(t,s.endProgramDateTime,this.config.maxFragLookUpTolerance)),!i){let r=s.sn+1;if(r>=e.startSN&&r<=e.endSN){let 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=hd(t,s.cc),i&&this.log(`Live playlist, switching playlist, load frag with same CC: ${i.sn}`))}}else{let r=this.hls.liveSyncPosition;r!==null&&(i=this.getFragmentAtPosition(r,this.bitrateTest?e.fragmentEnd:e.edge,e))}return i}getFragmentAtPosition(e,t,s){let{config:i}=this,{fragPrevious:r}=this,{fragments:n,endSN:o}=s,{fragmentHint:l}=s,{maxFragLookUpTolerance:c}=i,u=s.partList,d=!!(i.lowLatencyMode&&u!=null&&u.length&&l);d&&l&&!this.bitrateTest&&(n=n.concat(l),o=l.sn);let h;if(e<t){let m=e>t-c?0:c;h=Hs(r,n,e,m)}else h=n[n.length-1];if(h){let m=h.sn-s.startSN,f=this.fragmentTracker.getState(h);if((f===Ue.OK||f===Ue.PARTIAL&&h.gap)&&(r=h),r&&h.sn===r.sn&&(!d||u[0].fragment.sn>h.sn)&&r&&h.level===r.level){let y=n[m+1];h.sn<o&&this.fragmentTracker.getState(y)!==Ue.OK?h=y:h=null}}return h}synchronizeToLiveEdge(e){let{config:t,media:s}=this;if(!s)return;let i=this.hls.liveSyncPosition,r=s.currentTime,n=e.fragments[0].start,o=e.edge,l=r>=n-t.maxFragLookUpTolerance&&r<=o;if(i!==null&&s.duration>i&&(r<i||!l)){let c=t.liveMaxLatencyDuration!==void 0?t.liveMaxLatencyDuration:t.liveMaxLatencyDurationCount*e.targetduration;(!l&&s.readyState<4||r<o-c)&&(this.loadedmetadata||(this.nextLoadPosition=i),s.readyState&&(this.warn(`Playback: ${r.toFixed(3)} is located too far from the end of live sliding playlist: ${o}, reset currentTime to : ${i.toFixed(3)}`),s.currentTime=i))}}alignPlaylists(e,t,s){let i=e.fragments.length;if(!i)return this.warn("No fragments in live playlist"),0;let r=e.fragments[0].start,n=!t,o=e.alignedSliding&&Z(r);if(n||!o&&!r){let{fragPrevious:l}=this;Id(l,s,e);let c=e.fragments[0].start;return this.log(`Live playlist sliding: ${c.toFixed(2)} start-sn: ${t?t.startSN:"na"}->${e.startSN} prev-sn: ${l?l.sn:"na"} 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;if(s<t&&(s=-1),s===-1||this.lastCurrentTime===-1){let i=this.startTimeOffset!==null,r=i?this.startTimeOffset:e.startTimeOffset;r!==null&&Z(r)?(s=t+r,r<0&&(s+=e.totalduration),s=Math.min(Math.max(t,s),t+e.totalduration),this.log(`Start time offset ${r} found in ${i?"multivariant":"media"} playlist, adjust startPosition to ${s}`),this.startPosition=s):e.live?s=this.hls.liveSyncPosition||t:this.startPosition=s=0,this.lastCurrentTime=s}this.nextLoadPosition=s}getLoadPosition(){let{media:e}=this,t=0;return this.loadedmetadata&&e?t=e.currentTime:this.nextLoadPosition&&(t=this.nextLoadPosition),t}handleFragLoadAborted(e,t){this.transmuxer&&e.sn!=="initSegment"&&e.stats.aborted&&(this.warn(`Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} was aborted`),this.resetFragmentLoading(e))}resetFragmentLoading(e){(!this.fragCurrent||!this.fragContextChanged(e)&&this.state!==$.FRAG_LOADING_WAITING_RETRY)&&(this.state=$.IDLE)}onFragmentOrKeyLoadError(e,t){if(t.chunkMeta&&!t.frag){let u=this.getCurrentContext(t.chunkMeta);u&&(t.frag=u.frag)}let s=t.frag;if(!s||s.type!==e||!this.levels)return;if(this.fragContextChanged(s)){var i;this.warn(`Frag load error must match current frag to retry ${s.url} > ${(i=this.fragCurrent)==null?void 0:i.url}`);return}let r=t.details===D.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(s,!0);let n=t.errorAction,{action:o,retryCount:l=0,retryConfig:c}=n||{};if(n&&o===Ne.RetryRequest&&c){this.resetStartWhenNotLoaded(this.levelLastLoaded);let u=Hn(c,l);this.warn(`Fragment ${s.sn} of ${e} ${s.level} errored with ${t.details}, retrying loading ${l+1}/${c.maxNumRetry} in ${u}ms`),n.resolved=!0,this.retryDate=self.performance.now()+u,this.state=$.FRAG_LOADING_WAITING_RETRY}else if(c&&n)if(this.resetFragmentErrors(e),l<c.maxNumRetry)!r&&o!==Ne.RemoveAlternatePermanently&&(n.resolved=!0);else{I.warn(`${t.details} reached or exceeded max retry (${l})`);return}else n?.action===Ne.SendAlternateToPenaltyBox?this.state=$.WAITING_LEVEL:this.state=$.ERROR;this.tickImmediate()}reduceLengthAndFlushBuffer(e){if(this.state===$.PARSING||this.state===$.PARSED){let 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);let n=!r;return n&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${s} buffer`),t&&(this.fragmentTracker.removeFragment(t),this.nextLoadPosition=t.start),this.resetLoadingState(),n}return!1}resetFragmentErrors(e){e===ne.AUDIO&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==$.STOPPED&&(this.state=$.IDLE)}afterBufferFlushed(e,t,s){if(!e)return;let i=xe.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,i,s),this.state===$.ENDED&&this.resetLoadingState()}
175resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=$.IDLE}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;let t=e?e.details:null;t!=null&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(e){this.warn(`The loading context changed while buffering fragment ${e.sn} of level ${e.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,s,i){var r;let n=s.details;if(!n){this.warn("level.details undefined");return}if(!Object.keys(e.elementaryStreams).reduce((l,c)=>{let u=e.elementaryStreams[c];if(u){let d=u.endPTS-u.startPTS;if(d<=0)return this.warn(`Could not parse fragment ${e.sn} ${c} duration reliably (${d})`),l||!1;let h=i?0:ol(n,e,u.startPTS,u.endPTS,u.startDTS,u.endDTS);return this.hls.trigger(p.LEVEL_PTS_UPDATED,{details:n,level:s,drift:h,type:c,frag:e,start:u.startPTS,end:u.endPTS}),!0}return l},!1)&&((r=this.transmuxer)==null?void 0:r.error)===null){let l=new Error(`Found no media in fragment ${e.sn} of level ${e.level} resetting transmuxer to fallback to playlist timing`);if(s.fragmentError===0&&(s.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)),this.warn(l.message),this.hls.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,fatal:!1,error:l,frag:e,reason:`Found no media in msn ${e.sn} of level "${s.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=$.PARSED,this.hls.trigger(p.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){e.event==="demuxerWorker"&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){let t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}},Vs=class{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){let{chunks:e,dataLength:t}=this,s;if(e.length)e.length===1?s=e[0]:s=_d(e,t);else return new Uint8Array(0);return this.reset(),s}reset(){this.chunks.length=0,this.dataLength=0}};function _d(a,e){let t=new Uint8Array(e),s=0;for(let i=0;i<a.length;i++){let r=a[i];t.set(r,s),s+=r.length}return t}function kd(){return typeof __HLS_WORKER_BUNDLE__=="function"}function Pd(){let a=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),e=self.URL.createObjectURL(a);return{worker:new self.Worker(e),objectURL:e}}function Od(a){let e=new self.URL(a,self.location.href).href;return{worker:new self.Worker(e),scriptURL:e}}function ut(a="",e=9e4){return{type:a,id:-1,pid:-1,inputTimeScale:e,sequenceNumber:-1,samples:[],dropped:0}}var us=class{constructor(){this._audioTrack=void 0,this._id3Track=void 0,this.frameIndex=0,this.cachedData=null,this.basePTS=null,this.initPTS=null,this.lastPTS=null}resetInitSegment(e,t,s,i){this._id3Track={type:"id3",id:3,pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0}}resetTimeStamp(e){this.initPTS=e,this.resetContiguity()}resetContiguity(){this.basePTS=null,this.lastPTS=null,this.frameIndex=0}canParse(e,t){return!1}appendFrame(e,t,s){}demux(e,t){this.cachedData&&(e=et(this.cachedData,e),this.cachedData=null);let s=rs(e,0),i=s?s.length:0,r,n=this._audioTrack,o=this._id3Track,l=s?Gn(s):void 0,c=e.length;for((this.basePTS===null||this.frameIndex===0&&Z(l))&&(this.basePTS=Fd(l,t,this.initPTS),this.lastPTS=this.basePTS),this.lastPTS===null&&(this.lastPTS=this.basePTS),s&&s.length>0&&o.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:at.audioId3,duration:Number.POSITIVE_INFINITY});i<c;){if(this.canParse(e,i)){let u=this.appendFrame(n,e,i);u?(this.frameIndex++,this.lastPTS=u.sample.pts,i+=u.length,r=i):i=c}else mu(e,i)?(s=rs(e,i),o.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:at.audioId3,duration:Number.POSITIVE_INFINITY}),i+=s.length,r=i):i++;if(i===c&&r!==c){let u=_t(e,r);this.cachedData?this.cachedData=et(this.cachedData,u):this.cachedData=u}}return{audioTrack:n,videoTrack:ut(),id3Track:o,textTrack:ut()}}demuxSampleAes(e,t,s){return Promise.reject(new Error(`[${this}] This demuxer does not support Sample-AES decryption`))}flush(e){let t=this.cachedData;return t&&(this.cachedData=null,this.demux(t,0)),{audioTrack:this._audioTrack,videoTrack:ut(),id3Track:this._id3Track,textTrack:ut()}}destroy(){}},Fd=(a,e,t)=>{if(Z(a))return a*90;let s=t?t.baseTime*9e4/t.timescale:0;return e*9e4+s};function Md(a,e,t,s){let i,r,n,o,l=navigator.userAgent.toLowerCase(),c=s,u=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];i=((e[t+2]&192)>>>6)+1;let d=(e[t+2]&60)>>>2;if(d>u.length-1){let h=new Error(`invalid ADTS sampling index:${d}`);
175a.emit(p.ERROR,p.ERROR,{type:le.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,fatal:!0,error:h,reason:h.message});return}return n=(e[t+2]&1)<<2,n|=(e[t+3]&192)>>>6,I.log(`manifest codec:${s}, ADTS type:${i}, samplingIndex:${d}`),/firefox/i.test(l)?d>=6?(i=5,o=new Array(4),r=d-3):(i=2,o=new Array(2),r=d):l.indexOf("android")!==-1?(i=2,o=new Array(2),r=d):(i=5,o=new Array(4),s&&(s.indexOf("mp4a.40.29")!==-1||s.indexOf("mp4a.40.5")!==-1)||!s&&d>=6?r=d-3:((s&&s.indexOf("mp4a.40.2")!==-1&&(d>=6&&n===1||/vivaldi/i.test(l))||!s&&n===1)&&(i=2,o=new Array(2)),r=d)),o[0]=i<<3,o[0]|=(d&14)>>1,o[1]|=(d&1)<<7,o[1]|=n<<3,i===5&&(o[1]|=(r&14)>>1,o[2]=(r&1)<<7,o[2]|=8,o[3]=0),{config:o,samplerate:u[d],channelCount:n,codec:"mp4a.40."+i,manifestCodec:c}}function ml(a,e){return a[e]===255&&(a[e+1]&246)===240}function gl(a,e){return a[e+1]&1?7:9}function Kn(a,e){return(a[e+3]&3)<<11|a[e+4]<<3|(a[e+5]&224)>>>5}function Nd(a,e){return e+5<a.length}function js(a,e){return e+1<a.length&&ml(a,e)}function Ud(a,e){return Nd(a,e)&&ml(a,e)&&Kn(a,e)<=a.length-e}function Bd(a,e){if(js(a,e)){let t=gl(a,e);if(e+t>=a.length)return!1;let s=Kn(a,e);if(s<=t)return!1;let i=e+s;return i===a.length||js(a,i)}return!1}function pl(a,e,t,s,i){if(!a.samplerate){let r=Md(e,t,s,i);if(!r)return;a.config=r.config,a.samplerate=r.samplerate,a.channelCount=r.channelCount,a.codec=r.codec,a.manifestCodec=r.manifestCodec,I.log(`parsed codec:${a.codec}, rate:${r.samplerate}, channels:${r.channelCount}`)}}function yl(a){return 1024*9e4/a}function $d(a,e){let t=gl(a,e);if(e+t<=a.length){let s=Kn(a,e)-t;if(s>0)return{headerLength:t,frameLength:s}}}function vl(a,e,t,s,i){let r=yl(a.samplerate),n=s+i*r,o=$d(e,t),l;if(o){let{frameLength:d,headerLength:h}=o,m=h+d,f=Math.max(0,t+m-e.length);f?(l=new Uint8Array(m-h),l.set(e.subarray(t+h,e.length),0)):l=e.subarray(t+h,t+m);let g={unit:l,pts:n};return f||a.samples.push(g),{sample:g,length:m,missing:f}}let c=e.length-t;return l=new Uint8Array(c),l.set(e.subarray(t,e.length),0),{sample:{unit:l,pts:n},length:c,missing:-1}}var Ts=null,qd=[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],Gd=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Hd=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Kd=[0,1,1,4];function Sl(a,e,t,s,i){if(t+24>e.length)return;let r=El(e,t);if(r&&t+r.frameLength<=e.length){let n=r.samplesPerFrame*9e4/r.sampleRate,o=s+i*n,l={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(l),{sample:l,length:r.frameLength,missing:0}}}function El(a,e){let 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){let n=a[e+2]>>1&1,o=a[e+3]>>6,l=t===3?3-s:s===3?3:4,c=qd[l*14+i-1]*1e3,d=Gd[(t===3?0:t===2?1:2)*3+r],h=o===3?1:2,m=Hd[t][s],f=Kd[s],g=m*8*f,y=Math.floor(m*c/d+n)*f;if(Ts===null){let A=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Ts=A?parseInt(A[1]):0}return!!Ts&&Ts<=87&&s===2&&c>=224e3&&o===0&&(a[e+3]=a[e+3]|128),{sampleRate:d,channelCount:h,frameLength:y,samplesPerFrame:g}}}function Vn(a,e){return a[e]===255&&(a[e+1]&224)===224&&(a[e+1]&6)!==0}function Tl(a,e){return e+1<a.length&&Vn(a,e)}function Vd(a,e){return Vn(a,e)&&4<=a.length-e}function xl(a,e){if(e+1<a.length&&Vn(a,e)){let s=El(a,e),i=4;s!=null&&s.frameLength&&(i=s.frameLength);let r=e+i;return r===a.length||Tl(a,r)}return!1}var Zr=class extends us{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,s,i){super.resetInitSegment(e,t,s,i),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:i,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;let t=rs(e,0),s=t?.length||0;if(xl(e,s))return!1;for(let i=e.length;s<i;s++)if(Bd(e,s))return I.log("ADTS sync word found !"),!0;return!1}canParse(e,t){return Ud(e,t)}appendFrame(e,t,s){pl(e,this.observer,t,s,e.manifestCodec);let i=vl(e,t,s,this.basePTS,this.frameIndex);if(i&&i.missing===0)return i}},jd=/\/emsg[-/]ID3/i,en=class{constructor(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}resetTimeStamp(){}resetInitSegment(e,t,s,i){let r=this.videoTrack=ut("video",1),n=this.audioTrack=ut("audio",1),o=this.txtTrack=ut("text",1);if(this.id3Track=ut("id3",1),this.timeOffset=0,!(e!=null&&e.byteLength))return;let l=Zo(e);if(l.video){let{id:c,timescale:u,codec:d}=l.video;r.id=c,r.timescale=o.timescale=u,r.codec=d}if(l.audio){let{id:c,timescale:u,codec:d}=l.audio;n.id=c,n.timescale=u,n.codec=d}o.id=Xo.text,r.sampleDuration=0,r.duration=n.duration=i}resetContiguity(){this.remainderData=null}static probe(e){return bu(e)}demux(e,t){this.timeOffset=t;let s=e,i=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(s=et(this.remainderData,e));let o=_u(s);this.remainderData=o.remainder,i.samples=o.valid||new Uint8Array}else i.samples=s;let n=this.extractID3Track(i,t);
vendor: 10,326 bytes, line 175
175return r.samples=to(t,i),{videoTrack:i,audioTrack:this.audioTrack,id3Track:n,textTrack:this.txtTrack}}flush(){let e=this.timeOffset,t=this.videoTrack,s=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;let i=this.extractID3Track(t,this.timeOffset);return s.samples=to(e,t),{videoTrack:t,audioTrack:ut(),id3Track:i,textTrack:ut()}}extractID3Track(e,t){let s=this.id3Track;if(e.samples.length){let i=he(e.samples,["emsg"]);i&&i.forEach(r=>{let n=Ou(r);if(jd.test(n.schemeIdUri)){let o=Z(n.presentationTime)?n.presentationTime/n.timeScale:t+n.presentationTimeDelta/n.timeScale,l=n.eventDuration===4294967295?Number.POSITIVE_INFINITY:n.eventDuration/n.timeScale;l<=.001&&(l=Number.POSITIVE_INFINITY);let c=n.payload;s.samples.push({data:c,len:c.byteLength,dts:o,pts:o,type:at.emsg,duration:l})}})}return s}demuxSampleAes(e,t,s){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},bl=(a,e)=>{let t=0,s=5;e+=s;let i=new Uint32Array(1),r=new Uint32Array(1),n=new Uint8Array(1);for(;s>0;){n[0]=a[e];let o=Math.min(s,8),l=8-o;r[0]=4278190080>>>24+l<<l,i[0]=(n[0]&r[0])>>l,t=t?t<<o|i[0]:i[0],e+=1,s-=o}return t},tn=class extends us{constructor(e){super(),this.observer=void 0,this.observer=e}resetInitSegment(e,t,s,i){super.resetInitSegment(e,t,s,i),this._audioTrack={container:"audio/ac-3",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"ac3",samples:[],manifestCodec:t,duration:i,inputTimeScale:9e4,dropped:0}}canParse(e,t){return t+64<e.length}appendFrame(e,t,s){let i=Al(e,t,s,this.basePTS,this.frameIndex);if(i!==-1)return{sample:e.samples[e.samples.length-1],length:i,missing:0}}static probe(e){if(!e)return!1;let t=rs(e,0);if(!t)return!1;let s=t.length;return e[s]===11&&e[s+1]===119&&Gn(t)!==void 0&&bl(e,s)<16}};function Al(a,e,t,s,i){if(t+8>e.length||e[t]!==11||e[t+1]!==119)return-1;let r=e[t+4]>>6;if(r>=3)return-1;let o=[48e3,44100,32e3][r],l=e[t+4]&63,u=[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][l*3+r]*2;if(t+u>e.length)return-1;let d=e[t+6]>>5,h=0;d===2?h+=2:(d&1&&d!==1&&(h+=2),d&4&&(h+=2));let m=(e[t+6]<<8|e[t+7])>>12-h&1,g=[2,1,2,3,3,4,4,5][d]+m,y=e[t+5]>>3,T=e[t+5]&7,b=new Uint8Array([r<<6|y<<1|T>>2,(T&3)<<6|d<<3|m<<2|l>>4,l<<4&224]),A=1536/o*9e4,_=s+i*A,L=e.subarray(t,t+u);return a.config=b,a.channelCount=g,a.samplerate=o,a.samples.push({unit:L,pts:_}),u}var sn=class{constructor(){this.VideoSample=null}createVideoSample(e,t,s,i){return{key:e,frame:!1,pts:t,dts:s,units:[],debug:i,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){let r=s.units;i=r[r.length-1]}return i}pushAccessUnit(e,t){if(e.units.length&&e.frame){if(e.pts===void 0){let s=t.samples,i=s.length;if(i){let r=s[i-1];e.pts=r.pts,e.dts=r.dts}else{t.dropped++;return}}t.samples.push(e)}e.debug.length&&I.log(e.pts+"/"+e.dts+":"+e.debug)}},Ws=class{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(){let 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),s=this.word>>>32-t;if(e>32&&I.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<<t|this.readBits(t):s}skipLZ(){let e;for(e=0;e<this.bitsAvailable;++e)if(this.word&2147483648>>>e)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(){let e=this.skipLZ();return this.readBits(e+1)-1}readEG(){let 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)}skipScalingList(e){let t=8,s=8,i;for(let r=0;r<e;r++)s!==0&&(i=this.readEG(),s=(t+i+256)%256),t=s===0?t:s}readSPS(){let e=0,t=0,s=0,i=0,r,n,o,l=this.readUByte.bind(this),c=this.readBits.bind(this),u=this.readUEG.bind(this),d=this.readBoolean.bind(this),h=this.skipBits.bind(this),m=this.skipEG.bind(this),f=this.skipUEG.bind(this),g=this.skipScalingList.bind(this);l();let y=l();if(c(5),h(3),l(),f(),y===100||y===110||y===122||y===244||y===44||y===83||y===86||y===118||y===128){let U=u();if(U===3&&h(1),f(),f(),h(1),d())for(n=U!==3?8:12,o=0;o<n;o++)d()&&(o<6?g(16):g(64))}f();let T=u();if(T===0)u();else if(T===1)for(h(1),m(),m(),r=u(),o=0;o<r;o++)m();f(),h(1);let b=u(),A=u(),_=c(1);_===0&&h(1),h(1),d()&&(e=u(),t=u(),s=u(),i=u());let L=[1,1];if(d()&&d())switch(l()){case 1:L=[1,1];break;case 2:L=[12,11];break;case 3:L=[10,11];break;case 4:L=[16,11];break;case 5:L=[40,33];break;case 6:L=[24,11];break;case 7:L=[20,11];break;case 8:L=[32,11];break;case 9:L=[80,33];break;case 10:L=[18,11];break;case 11:L=[15,11];break;case 12:L=[64,33];break;case 13:L=[160,99];break;case 14:L=[4,3];break;case 15:L=[3,2];break;case 16:L=[2,1];break;case 255:{L=[l()<<8|l(),l()<<8|l()];break}}return{width:Math.ceil((b+1)*16-e*2-t*2),height:(2-_)*(A+1)*16-(_?2:4)*(s+i),pixelRatio:L}}readSliceType(){return this.readUByte(),this.readUEG(),this.readUEG()}},rn=class extends sn{parseAVCPES(e,t,s,i,r){let n=this.parseAVCNALu(e,s.data),o=this.VideoSample,l,c=!1;s.data=null,o&&n.length&&!e.audFound&&(this.pushAccessUnit(o,e),o=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts,"")),n.forEach(u=>{var d;switch(u.type){case 1:{let g=!1;l=!0;let y=u.data;if(c&&y.length>4){let T=new Ws(y).readSliceType();(T===2||T===4||T===7||T===9)&&(g=!0)}if(g){var h;(h=o)!=null&&h.frame&&!o.key&&(this.pushAccessUnit(o,e),o=this.VideoSample=null)}o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.frame=!0,o.key=g;break}case 5:l=!0,(d=o)!=null&&d.frame&&!o.key&&(this.pushAccessUnit(o,e),o=this.VideoSample=null),o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.key=!0,o.frame=!0;break;case 6:{l=!0,tl(u.data,1,s.pts,t.samples);break}case 7:{var m,f;l=!0,c=!0;let g=u.data,T=new Ws(g).readSPS();if(!e.sps||e.width!==T.width||e.height!==T.height||((m=e.pixelRatio)==null?void 0:m[0])!==T.pixelRatio[0]||((f=e.pixelRatio)==null?void 0:f[1])!==T.pixelRatio[1]){e.width=T.width,e.height=T.height,e.pixelRatio=T.pixelRatio,e.sps=[g],e.duration=r;let b=g.subarray(1,4),A="avc1.";for(let _=0;_<3;_++){let L=b[_].toString(16);L.length<2&&(L="0"+L),A+=L}e.codec=A}break}case 8:l=!0,e.pps=[u.data];break;case 9:l=!0,e.audFound=!0,o&&this.pushAccessUnit(o,e),o=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts,"");break;case 12:l=!0;break;default:l=!1,o&&(o.debug+="unknown NAL "+u.type+" ");break}o&&l&&o.units.push(u)}),i&&o&&(this.pushAccessUnit(o,e),this.VideoSample=null)}parseAVCNALu(e,t){let s=t.byteLength,i=e.naluState||0,r=i,n=[],o=0,l,c,u,d=-1,h=0;for(i===-1&&(d=0,h=t[0]&31,i=0,o=1);o<s;){if(l=t[o++],!i){i=l?0:1;continue}if(i===1){i=l?0:2;continue}if(!l)i=3;else if(l===1){if(c=o-i-1,d>=0){let m={data:t.subarray(d,c),type:h};n.push(m)}else{let m=this.getLastNalUnit(e.samples);m&&(r&&o<=4-r&&m.state&&(m.data=m.data.subarray(0,m.data.byteLength-r)),c>0&&(m.data=et(m.data,t.subarray(0,c)),m.state=0))}o<s?(u=t[o]&31,d=o,h=u,i=0):i=-1}else i=0}if(d>=0&&i>=0){let m={data:t.subarray(d,s),type:h,state:i};n.push(m)}if(n.length===0){let m=this.getLastNalUnit(e.samples);m&&(m.data=et(m.data,t))}return e.naluState=i,n}},nn=class{constructor(e,t,s){this.keyData=void 0,this.decrypter=void 0,this.keyData=s,this.decrypter=new ls(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,s){let i=e[t].unit;if(i.length<=16)return;let r=i.subarray(16,i.length-i.length%16),n=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(n).then(o=>{let l=new Uint8Array(o);i.set(l,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,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){let t=Math.floor((e.length-48)/160)*16+16,s=new Int8Array(t),i=0;for(let r=32;r<e.length-16;r+=160,i+=16)s.set(e.subarray(r,r+16),i);return s}getAvcDecryptedUnit(e,t){let s=new Uint8Array(t),i=0;for(let r=32;r<e.length-16;r+=160,i+=16)e.set(s.subarray(i,i+16),r);return e}decryptAvcSample(e,t,s,i,r){let n=sl(r.data),o=this.getAvcEncryptedData(n);this.decryptBuffer(o.buffer).then(l=>{r.data=this.getAvcDecryptedUnit(n,l),this.decrypter.isSync()||this.decryptAvcSamples(e,t,s+1,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}let r=e[t].units;for(;!(s>=r.length);s++){let 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}}}},Me=188,dt=class{constructor(e,t,s){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._duration=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.typeSupp
175orted=s,this.videoParser=new rn}static probe(e){let t=dt.syncOffset(e);return t>0&&I.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),t!==-1}static syncOffset(e){let t=e.length,s=Math.min(Me*5,t-Me)+1,i=0;for(;i<s;){let r=!1,n=-1,o=0;for(let l=i;l<t;l+=Me)if(e[l]===71&&(t-l===Me||e[l+Me]===71)){if(o++,n===-1&&(n=l,n!==0&&(s=Math.min(n+Me*99,e.length-Me)+1)),r||(r=an(e,l)===0),r&&o>1&&(n===0&&o>2||l+Me>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:Xo[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=dt.createTrack("video"),this._audioTrack=dt.createTrack("audio",i),this._id3Track=dt.createTrack("id3"),this._txtTrack=dt.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=s,this._duration=i}resetTimeStamp(){}resetContiguity(){let{_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,n=this._videoTrack,o=this._audioTrack,l=this._id3Track,c=this._txtTrack,u=n.pid,d=n.pesData,h=o.pid,m=l.pid,f=o.pesData,g=l.pesData,y=null,T=this.pmtParsed,b=this._pmtId,A=e.length;if(this.remainderData&&(e=et(this.remainderData,e),A=e.length,this.remainderData=null),A<Me&&!i)return this.remainderData=e,{audioTrack:o,videoTrack:n,id3Track:l,textTrack:c};let _=Math.max(0,dt.syncOffset(e));A-=(A-_)%Me,A<e.byteLength&&!i&&(this.remainderData=new Uint8Array(e.buffer,A,e.buffer.byteLength-A));let L=0;for(let C=_;C<A;C+=Me)if(e[C]===71){let M=!!(e[C+1]&64),N=an(e,C),F=(e[C+3]&48)>>4,H;if(F>1){if(H=C+5+e[C+4],H===C+Me)continue}else H=C+4;switch(N){case u:M&&(d&&(r=$t(d))&&this.videoParser.parseAVCPES(n,c,r,!1,this._duration),d={data:[],size:0}),d&&(d.data.push(e.subarray(H,C+Me)),d.size+=C+Me-H);break;case h:if(M){if(f&&(r=$t(f)))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(H,C+Me)),f.size+=C+Me-H);break;case m:M&&(g&&(r=$t(g))&&this.parseID3PES(l,r),g={data:[],size:0}),g&&(g.data.push(e.subarray(H,C+Me)),g.size+=C+Me-H);break;case 0:M&&(H+=e[H]+1),b=this._pmtId=Wd(e,H);break;case b:{M&&(H+=e[H]+1);let ce=Yd(e,H,this.typeSupported,s,this.observer);u=ce.videoPid,u>0&&(n.pid=u,n.segmentCodec=ce.segmentVideoCodec),h=ce.audioPid,h>0&&(o.pid=h,o.segmentCodec=ce.segmentAudioCodec),m=ce.id3Pid,m>0&&(l.pid=m),y!==null&&!T&&(I.warn(`MPEG-TS PMT found at ${C} after unknown PID '${y}'. Backtracking to sync byte @${_} to parse all TS packets.`),y=null,C=_-188),T=this.pmtParsed=!0;break}case 17:case 8191:break;default:y=N;break}}else L++;L>0&&Ys(this.observer,new Error(`Found ${L} TS packet/s that do not start with 0x47`)),n.pesData=d,o.pesData=f,l.pesData=g;let U={audioTrack:o,videoTrack:n,id3Track:l,textTrack:c};return i&&this.extractRemainingSamples(U),U}flush(){let{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){let{audioTrack:t,videoTrack:s,id3Track:i,textTrack:r}=e,n=s.pesData,o=t.pesData,l=i.pesData,c;if(n&&(c=$t(n))?(this.videoParser.parseAVCPES(s,r,c,!0,this._duration),s.pesData=null):s.pesData=n,o&&(c=$t(o))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,c);break;case"mp3":this.parseMPEGPES(t,c);break;case"ac3":this.parseAC3PES(t,c);break}t.pesData=null}else o!=null&&o.size&&I.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=o;l&&(c=$t(l))?(this.parseID3PES(i,c),i.pesData=null):i.pesData=l}demuxSampleAes(e,t,s){let i=this.demux(e,s,!0,!this.config.progressive),r=this.sampleAes=new nn(this.observer,this.config,t);return this.decrypt(i,r)}decrypt(e,t){return new Promise(s=>{let{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._duration=0}parseAACPES(e,t){let s=0,i=this.aacOverFlow,r=t.data;if(i){this.aacOverFlow=null;let d=i.missing,h=i.sample.unit.byteLength;if(d===-1)r=et(i.sample.unit,r);else{let m=h-d;i.sample.unit.set(r.subarray(0,d),m),e.samples.push(i.sample),s=i.missing}}let n,o;for(n=s,o=r.length;n<o-1&&!js(r,n);n++);if(n!==s){let d,h=n<o-1;if(h?d=`AAC PES did not start with ADTS header,offset:${n}`:d="No ADTS header found in AAC PES",Ys(this.observer,new Error(d),h),!h)return}pl(e,this.observer,r,n,this.audioCodec);let l;if(t.pts!==void 0)l=t.pts;
vendor: 12,155 bytes, line 175
175else if(i){let d=yl(e.samplerate);l=i.sample.pts+d}else{I.warn("[tsdemuxer]: AAC PES unknown PTS");return}let c=0,u;for(;n<o;)if(u=vl(e,r,n,l,c),n+=u.length,u.missing){this.aacOverFlow=u;break}else for(c++;n<o-1&&!js(r,n);n++);}parseMPEGPES(e,t){let s=t.data,i=s.length,r=0,n=0,o=t.pts;if(o===void 0){I.warn("[tsdemuxer]: MPEG PES unknown PTS");return}for(;n<i;)if(Tl(s,n)){let l=Sl(e,s,n,o,r);if(l)n+=l.length,r++;else break}else n++}parseAC3PES(e,t){{let s=t.data,i=t.pts;if(i===void 0){I.warn("[tsdemuxer]: AC3 PES unknown PTS");return}let r=s.length,n=0,o=0,l;for(;o<r&&(l=Al(e,s,o,i,n++))>0;)o+=l}}parseID3PES(e,t){if(t.pts===void 0){I.warn("[tsdemuxer]: ID3 PES unknown PTS");return}let s=Pe({},t,{type:this._videoTrack?at.emsg:at.audioId3,duration:Number.POSITIVE_INFINITY});e.samples.push(s)}};function an(a,e){return((a[e+1]&31)<<8)+a[e+2]}function Wd(a,e){return(a[e+10]&31)<<8|a[e+11]}function Yd(a,e,t,s,i){let r={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},n=(a[e+1]&15)<<8|a[e+2],o=e+3+n-4,l=(a[e+10]&15)<<8|a[e+11];for(e+=12+l;e<o;){let c=an(a,e),u=(a[e+3]&15)<<8|a[e+4];switch(a[e]){case 207:if(!s){Tr("ADTS AAC");break}case 15:r.audioPid===-1&&(r.audioPid=c);break;case 21:r.id3Pid===-1&&(r.id3Pid=c);break;case 219:if(!s){Tr("H.264");break}case 27:r.videoPid===-1&&(r.videoPid=c,r.segmentVideoCodec="avc");break;case 3:case 4:!t.mpeg&&!t.mp3?I.log("MPEG audio found, not supported in this browser"):r.audioPid===-1&&(r.audioPid=c,r.segmentAudioCodec="mp3");break;case 193:if(!s){Tr("AC-3");break}case 129:t.ac3?r.audioPid===-1&&(r.audioPid=c,r.segmentAudioCodec="ac3"):I.log("AC-3 audio found, not supported in this browser");break;case 6:if(r.audioPid===-1&&u>0){let d=e+5,h=u;for(;h>2;){switch(a[d]){case 106:t.ac3!==!0?I.log("AC-3 audio found, not supported in this browser for now"):(r.audioPid=c,r.segmentAudioCodec="ac3");break}let f=a[d+1]+2;d+=f,h-=f}}break;case 194:case 135:return Ys(i,new Error("Unsupported EC-3 in M2TS found")),r;case 36:return Ys(i,new Error("Unsupported HEVC in M2TS found")),r}e+=u+5}return r}function Ys(a,e,t){I.warn(`parsing error: ${e.message}`),a.emit(p.ERROR,p.ERROR,{type:le.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,fatal:!1,levelRetry:t,error:e,reason:e.message})}function Tr(a){I.log(`${a} with AES-128-CBC encryption found in unencrypted stream`)}function $t(a){let e=0,t,s,i,r,n,o=a.data;if(!a||a.size===0)return null;for(;o[0].length<19&&o.length>1;)o[0]=et(o[0],o[1]),o.splice(1,1);if(t=o[0],(t[0]<<16)+(t[1]<<8)+t[2]===1){if(s=(t[4]<<8)+t[5],s&&s>a.size-6)return null;let c=t[7];c&192&&(r=(t[9]&14)*536870912+(t[10]&255)*4194304+(t[11]&254)*16384+(t[12]&255)*128+(t[13]&254)/2,c&64?(n=(t[14]&14)*536870912+(t[15]&255)*4194304+(t[16]&254)*16384+(t[17]&255)*128+(t[18]&254)/2,r-n>60*9e4&&(I.warn(`${Math.round((r-n)/9e4)}s delta between PTS and DTS, align them`),r=n)):n=r),i=t[8];let u=i+9;if(a.size<=u)return null;a.size-=u;let d=new Uint8Array(a.size);for(let h=0,m=o.length;h<m;h++){t=o[h];let f=t.byteLength;if(u)if(u>f){u-=f;continue}else t=t.subarray(u),f-=u,u=0;d.set(t,e),e+=f}return s&&(s-=i+3),{data:d,pts:r,dts:n,len:s}}return null}var on=class extends us{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;let t=rs(e,0),s=t?.length||0;if(t&&e[s]===11&&e[s+1]===119&&Gn(t)!==void 0&&bl(e,s)<=16)return!1;for(let i=e.length;s<i;s++)if(xl(e,s))return I.log("MPEG Audio sync word found !"),!0;return!1}canParse(e,t){return Vd(e,t)}appendFrame(e,t,s){if(this.basePTS!==null)return Sl(e,t,s,this.basePTS,this.frameIndex)}},zs=class{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}}},Et=Math.pow(2,32)-1,w=class{static init(){w.types={avc1:[],avcC:[],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 w.types)w.types.hasOwnProperty(e)&&(w.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let 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]);w.HDLR_TYPES={video:t,audio:s};let 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]);w.STTS=w.STSC=w.STCO=r,w.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),w.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),w.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),w.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);let n=new Uint8Array([105,115,111,109]),o=new Uint8Array([97,118,99,49]),l=new Uint8Array([0,0,0,1]);w.FTYP=w.box(w.types.ftyp,n,l,n,o),w.DINF=w.box(w.types.dinf,w.box(w.types.dref,i))}static box(e,...t){let s=8,i=t.length,r=i;for(;i--;)s+=t[i].byteLength;let 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<r;i++)n.set(t[i],s),s+=t[i].byteLength;return n}static hdlr(e){return w.box(w.types.hdlr,w.HDLR_TYPES[e])}static mdat(e){return w.box(w.types.mdat,e)}static mdhd(e,t){t*=e;let s=Math.floor(t/(Et+1)),i=Math.floor(t%(Et+1));return w.box(w.types.mdhd,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,85,196,0,0]))}static mdia(e){return w.box(w.types.mdia,w.mdhd(e.timescale,e.duration),w.hdlr(e.type),w.minf(e))}static mfhd(e){return w.box(w.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"?w.box(w.types.minf,w.box(w.types.smhd,w.SMHD),w.DINF,w.stbl(e)):w.box(w.types.minf,w.box(w.types.vmhd,w.VMHD),w.DINF,w.stbl(e))}static moof(e,t,s){return w.box(w.types.moof,w.mfhd(e),w.traf(s,t))}static moov(e){let t=e.length,s=[];for(;t--;)s[t]=w.trak(e[t]);return w.box.apply(null,[w.types.moov,w.mvhd(e[0].timescale,e[0].duration)].concat(s).concat(w.mvex(e)))}static mvex(e){let t=e.length,s=[];for(;t--;)s[t]=w.trex(e[t]);return w.box.apply(null,[w.types.mvex,...s])}static mvhd(e,t){t*=e;let 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 w.box(w.types.mvhd,r)}static sdtp(e){let t=e.samples||[],s=new Uint8Array(4+t.length),i,r;for(i=0;i<t.length;i++)r=t[i].flags,s[i+4]=r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy;return w.box(w.types.sdtp,s)}static stbl(e){return w.box(w.types.stbl,w.stsd(e),w.box(w.types.stts,w.STTS),w.box(w.types.stsc,w.STSC),w.box(w.types.stsz,w.STSZ),w.box(w.types.stco,w.STCO))}static avc1(e){let t=[],s=[],i,r,n;for(i=0;i<e.sps.length;i++)r=e.sps[i],n=r.byteLength,t.push(n>>>8&255),t.push(n&255),t=t.concat(Array.prototype.slice.call(r));for(i=0;i<e.pps.length;i++)r=e.pps[i],n=r.byteLength,s.push(n>>>8&255),s.push(n&255),s=s.concat(Array.prototype.slice.call(r));let o=w.box(w.types.avcC,new Uint8Array([1,t[3],t[4],t[5],255,224|e.sps.length].concat(t).concat([e.pps.length]).concat(s))),l=e.width,c=e.height,u=e.pixelRatio[0],d=e.pixelRatio[1];return w.box(w.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,l>>8&255,l&255,c>>8&255,c&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,w.box(w.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),w.box(w.types.pasp,new Uint8Array([u>>24,u>>16&255,u>>8&255,u&255,d>>24,d>>16&255,d>>8&255,d&255])))}static esds(e){let t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))}static audioStsd(e){let t=e.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,t&255,0,0])}static mp4a(e){return w.box(w.types.mp4a,w.audioStsd(e),w.box(w.types.esds,w.esds(e)))}static mp3(e){return w.box(w.types[".mp3"],w.audioStsd(e))}static ac3(e){return w.box(w.types["ac-3"],w.audioStsd(e),w.box(w.types.dac3,e.config))}static stsd(e){return e.type==="audio"?e.segmentCodec==="mp3"&&e.codec==="mp3"?w.box(w.types.stsd,w.STSD,w.mp3(e)):e.segmentCodec==="ac3"?w.box(w.types.stsd,w.STSD,w.ac3(e)):w.box(w.types.stsd,w.STSD,w.mp4a(e)):w.box(w.types.stsd,w.STSD,w.avc1(e))}static tkhd(e){let t=e.id,s=e.duration*e.timescale,i=e.width,r=e.height,n=Math.floor(s/(Et+1)),o=Math.floor(s%(Et+1));return w.box(w.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){let s=w.sdtp(e),i=e.id,r=Math.floor(t/(Et+1)),n=Math.floor(t%(Et+1));return w.box(w.types.traf,w.box(w.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,i&255])),w.box(w.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])),w.trun(e,s.length+16+20+8+16+8+8),s)}static trak(e){return e.duration=e.duration||4294967295,w.box(w.types.trak,w.tkhd(e),w.mdia(e))}static trex(e){let t=e.id;return w.box(w.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){let s=e.samples||[],i=s.length,r=12+16*i,n=new Uint8Array(r),o,l,c,u,d,h;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<i;o++)l=s[o],c=l.duration,u=l.size,d=l.flags,h=l.cts,n.set([c>>>24&255,c>>>16&255,c>>>8&255,c&255,u>>>24&255,u>>>16&255,u>>>8&255,u&255,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.paddingValue<<1|d.isNonSync,d.degradPrio&61440,d.degradPrio&15,h>>>24&255,h>>>16&255,h>>>8&255,h&255],12+16*o);return w.box(w.types.trun,n)}static initSegment(e){w.types||w.init();let t=w.moov(e);return et(w.FTYP,t)}};w.types=void 0;w.HDLR_TYPES=void 0;w.STTS=void 0;w.STSC=void 0;w.STCO=void 0;w.STSZ=void 0;w.VMHD=void 0;w.SMHD=void 0;w.STSD=void 0;w.FTYP=void 0;w.DINF=void 0;var Ll=9e4;function jn(a,e,t=1,s=!1){let i=a*e*t;return s?Math.round(i):i}function zd(a,e,t=1,s=!1){return jn(a,e,1/t,s)}function Zt(a,e=!1){return jn(a,1e3,1/Ll,e)}function Xd(a,e=1){return jn(a,Ll,1/e)}var Jd=10*1e3,Co=1024,Qd=1152,Zd=1536,qt=null,xr=null,Vt=class{constructor(e,t,s,i=""){if(this.observer=void 0,this.config=void 0,this.typeSupp
175orted=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=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,qt===null){let n=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);qt=n?parseInt(n[1]):0}if(xr===null){let r=navigator.userAgent.match(/Safari\/(\d+)/i);xr=r?parseInt(r[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){I.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){I.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){I.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1,s=e.reduce((i,r)=>{let n=r.pts-i;return n<-4294967296?(t=!0,Qe(i,r.pts)):n>0?i:r.pts},e[0].pts);return t&&I.debug("PTS rollover detected"),s}remux(e,t,s,i,r,n,o,l){let c,u,d,h,m,f,g=r,y=r,T=e.pid>-1,b=t.pid>-1,A=t.samples.length,_=e.samples.length>0,L=o&&A>0||A>1;if((!T||_)&&(!b||L)||this.ISGenerated||o){if(this.ISGenerated){var C,M,N,F;let oe=this.videoTrackConfig;oe&&(t.width!==oe.width||t.height!==oe.height||((C=t.pixelRatio)==null?void 0:C[0])!==((M=oe.pixelRatio)==null?void 0:M[0])||((N=t.pixelRatio)==null?void 0:N[1])!==((F=oe.pixelRatio)==null?void 0:F[1]))&&this.resetInitSegment()}else d=this.generateIS(e,t,r,n);let H=this.isVideoContiguous,ce=-1,W;if(L&&(ce=eh(t.samples),!H&&this.config.forceKeyFrameOnDiscontinuity))if(f=!0,ce>0){I.warn(`[mp4-remuxer]: Dropped ${ce} out of ${A} video samples due to a missing keyframe`);let oe=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(ce),t.dropped+=ce,y+=(t.samples[0].pts-oe)/t.inputTimeScale,W=y}else ce===-1&&(I.warn(`[mp4-remuxer]: No keyframe found out of ${A} video samples`),f=!1);if(this.ISGenerated){if(_&&L){let oe=this.getVideoStartPts(t.samples),se=(Qe(e.samples[0].pts,oe)-oe)/t.inputTimeScale;g+=Math.max(0,se),y+=Math.max(0,-se)}if(_){if(e.samplerate||(I.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),d=this.generateIS(e,t,r,n)),u=this.remuxAudio(e,g,this.isAudioContiguous,n,b||L||l===ne.AUDIO?y:void 0),L){let oe=u?u.endPTS-u.startPTS:0;t.inputTimeScale||(I.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),d=this.generateIS(e,t,r,n)),c=this.remuxVideo(t,y,H,oe)}}else L&&(c=this.remuxVideo(t,y,H,0));c&&(c.firstKeyFrame=ce,c.independent=ce!==-1,c.firstKeyFramePTS=W)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(s.samples.length&&(m=Il(s,r,this._initPTS,this._initDTS)),i.samples.length&&(h=Rl(i,r,this._initPTS))),{audio:u,video:c,initSegment:d,independent:f,text:h,id3:m}}generateIS(e,t,s,i){let r=e.samples,n=t.samples,o=this.typeSupported,l={},c=this._initPTS,u=!c||i,d="audio/mp4",h,m,f;if(u&&(h=m=1/0),e.config&&r.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":o.mpeg?(d="audio/mpeg",e.codec=""):o.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3";break}l.audio={id:"audio",container:d,codec:e.codec,initSegment:e.segmentCodec==="mp3"&&o.mpeg?new Uint8Array(0):w.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(f=e.inputTimeScale,!c||f!==c.timescale?h=m=r[0].pts-Math.round(f*s):u=!1)}if(t.sps&&t.pps&&n.length){if(t.timescale=t.inputTimeScale,l.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:w.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(f=t.inputTimeScale,!c||f!==c.timescale){let g=this.getVideoStartPts(n),y=Math.round(f*s);m=Math.min(m,Qe(n[0].dts,g)-y),h=Math.min(h,g-y)}else u=!1;this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(l).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:h,timescale:f},this._initDTS={baseTime:m,timescale:f}):h=f=void 0,{tracks:l,initPTS:h,timescale:f}}remuxVideo(e,t,s,i){let r=e.inputTimeScale,n=e.samples,o=[],l=n.length,c=this._initPTS,u=this.nextAvcDts,d=8,h=this.videoSampleDuration,m,f,g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,T=!1;if(!s||u===null){let Q=t*r,j=n[0].pts-Qe(n[0].dts,n[0].pts);qt&&u!==null&&Math.abs(Q-j-u)<15e3?s=!0:u=Q-j}let b=c.baseTime*r/c.timescale;for(let Q=0;Q<l;Q++){let j=n[Q];j.pts=Qe(j.pts-b,u),j.dts=Qe(j.dts-b,u),j.dts<n[Q>0?Q-1:Q].dts&&(T=!0)}T&&n.sort(function(Q,j){let P=Q.dts-j.dts,k=Q.pts-j.pts;return P||k}),m=n[0].dts,f=n[n.length-1].dts;let A=f-m,_=A?Math.round(A/(l-1)):h||e.inputTimeScale/30;if(s){let Q=m-u,j=Q>_,P=Q<-1;if((j||P)&&(j?I.warn(`AVC: ${Zt(Q,!0)} ms (${Q}dts) hole between fragments detected at ${t.toFixed(3)}`):I.warn(`AVC: ${Zt(-Q,!0)} ms (${Q}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!P||u>=n[0].pts||qt)){m=u;let k=n[0].pts-Q;if(j)n[0].dts=m,n[0].pts=k;else for(let O=0;O<n.length&&!(n[O].dts>k);O++)n[O].dts-=Q,n[O].pts-=Q;I.log(`Video: Initial PTS/DTS adjusted: ${Zt(k,!0)}/${Zt(m,!0)}, delta: ${Zt(Q,!0)} ms`)}}m=Math.max(0,m);let L=0,U=0,C=m;for(let Q=0;Q<l;Q++){let j=n[Q],P=j.units,k=P.length,O=0;for(let B=0;B<k;B++)O+=P[B].data.length;U+=O,L+=k,j.length=O,j.dts<C?(j.dts=C,C+=_/4|0||1):C=j.dts,g=Math.min(j.pts,g),y=Math.max(j.pts,y)}f=n[l-1].dts;let M=U+4*L+8,N;try{N=new Uint8Array(M)}catch(Q){this.observer.emit(p.ERROR,p.ERROR,{type:le.MUX_ERROR,details:D.REMUX_ALLOC_ER
175ROR,fatal:!1,error:Q,bytes:M,reason:`fail allocating video mdat ${M}`});return}let F=new DataView(N.buffer);F.setUint32(0,M),N.set(w.types.mdat,4);let H=!1,ce=Number.POSITIVE_INFINITY,W=Number.POSITIVE_INFINITY,oe=Number.NEGATIVE_INFINITY,ae=Number.NEGATIVE_INFINITY;for(let Q=0;Q<l;Q++){let j=n[Q],P=j.units,k=0;for(let K=0,J=P.length;K<J;K++){let ie=P[K],te=ie.data,ve=ie.data.byteLength;F.setUint32(d,ve),d+=4,N.set(te,d),d+=ve,k+=4+ve}let O;if(Q<l-1)h=n[Q+1].dts-j.dts,O=n[Q+1].pts-j.pts;else{let K=this.config,J=Q>0?j.dts-n[Q-1].dts:_;if(O=Q>0?j.pts-n[Q-1].pts:_,K.stretchShortVideoTrack&&this.nextAudioPts!==null){let ie=Math.floor(K.maxBufferHole*r),te=(i?g+i*r:this.nextAudioPts)-j.pts;te>ie?(h=te-J,h<0?h=J:H=!0,I.log(`[mp4-remuxer]: It is approximately ${te/90} ms to the next segment; using duration ${h/90} ms for the last video frame.`)):h=J}else h=J}let B=Math.round(j.pts-j.dts);ce=Math.min(ce,h),oe=Math.max(oe,h),W=Math.min(W,O),ae=Math.max(ae,O),o.push(new Xs(j.key,h,k,B))}if(o.length){if(qt){if(qt<70){let Q=o[0].flags;Q.dependsOn=2,Q.isNonSync=0}}else if(xr&&ae-W<oe-ce&&_/oe<.025&&o[0].cts===0){I.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.");let Q=m;for(let j=0,P=o.length;j<P;j++){let k=Q+o[j].duration,O=Q+o[j].cts;if(j<P-1){let B=k+o[j+1].cts;o[j].duration=B-O}else o[j].duration=j?o[j-1].duration:_;o[j].cts=0,Q=k}}}h=H||!h?_:h,this.nextAvcDts=u=f+h,this.videoSampleDuration=h,this.isVideoContiguous=!0;let se=w.moof(e.sequenceNumber++,m,Pe({},e,{samples:o})),fe="video",ge={data1:se,data2:N,startPTS:g/r,endPTS:(y+h)/r,startDTS:m/r,endDTS:u/r,type:fe,hasAudio:!1,hasVideo:!0,nb:o.length,dropped:e.dropped};return e.samples=[],e.dropped=0,ge}getSamplesPerFrame(e){switch(e.segmentCodec){case"mp3":return Qd;case"ac3":return Zd;default:return Co}}remuxAudio(e,t,s,i,r){let n=e.inputTimeScale,o=e.samplerate?e.samplerate:n,l=n/o,c=this.getSamplesPerFrame(e),u=c*l,d=this._initPTS,h=e.segmentCodec==="mp3"&&this.typeSupported.mpeg,m=[],f=r!==void 0,g=e.samples,y=h?0:8,T=this.nextAudioPts||-1,b=t*n,A=d.baseTime*n/d.timescale;if(this.isAudioContiguous=s=s||g.length&&T>0&&(i&&Math.abs(b-T)<9e3||Math.abs(Qe(g[0].pts-A,b)-T)<20*u),g.forEach(function(se){se.pts=Qe(se.pts-A,b)}),!s||T<0){if(g=g.filter(se=>se.pts>=0),!g.length)return;r===0?T=0:i&&!f?T=Math.max(0,b):T=g[0].pts}if(e.segmentCodec==="aac"){let se=this.config.maxAudioFramesDrift;for(let fe=0,ge=T;fe<g.length;fe++){let Q=g[fe],j=Q.pts,P=j-ge,k=Math.abs(1e3*P/n);if(P<=-se*u&&f)fe===0&&(I.warn(`Audio frame @ ${(j/n).toFixed(3)}s overlaps nextAudioPts by ${Math.round(1e3*P/n)} ms.`),this.nextAudioPts=T=ge=j);else if(P>=se*u&&k<Jd&&f){let O=Math.round(P/u);ge=j-O*u,ge<0&&(O--,ge+=u),fe===0&&(this.nextAudioPts=T=ge),I.warn(`[mp4-remuxer]: Injecting ${O} audio frame @ ${(ge/n).toFixed(3)}s due to ${Math.round(1e3*P/n)} ms gap.`);for(let B=0;B<O;B++){let K=Math.max(ge,0),J=zs.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);J||(I.log("[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead."),J=Q.unit.subarray()),g.splice(fe,0,{unit:J,pts:K}),ge+=u,fe++}}Q.pts=ge,ge+=u}}let _=null,L=null,U,C=0,M=g.length;for(;M--;)C+=g[M].unit.byteLength;for(let se=0,fe=g.length;se<fe;se++){let ge=g[se],Q=ge.unit,j=ge.pts;if(L!==null){let k=m[se-1];k.duration=Math.round((j-L)/l)}else if(s&&e.segmentCodec==="aac"&&(j=T),_=j,C>0){C+=y;try{U=new Uint8Array(C)}catch(k){this.observer.emit(p.ERROR,p.ERROR,{type:le.MUX_ERROR,details:D.REMUX_ALLOC_ERROR,fatal:!1,error:k,bytes:C,reason:`fail allocating audio mdat ${C}`});return}h||(new DataView(U.buffer).setUint32(0,C),U.set(w.types.mdat,4))}else return;U.set(Q,y);let P=Q.byteLength;y+=P,m.push(new Xs(!0,c,P,0)),L=j}let N=m.length;if(!N)return;let F=m[m.length-1];this.nextAudioPts=T=L+l*F.duration;let H=h?new Uint8Array(0):w.moof(e.sequenceNumber++,_/l,Pe({},e,{samples:m}));e.samples=[];let ce=_/n,W=T/n,ae={data1:H,data2:U,startPTS:ce,endPTS:W,startDTS:ce,endDTS:W,type:"audio",hasAudio:!0,hasVideo:!1,nb:N};return this.isAudioContiguous=!0,ae}remuxEmptyAudio(e,t,s,i){let r=e.inputTimeScale,n=e.samplerate?e.samplerate:r,o=r/n,l=this.nextAudioPts,c=this._initDTS,u=c.baseTime*9e4/c.timescale,d=(l!==null?l:i.startDTS*r)+u,h=i.endDTS*r+u,m=o*Co,f=Math.ceil((h-d)/m),g=zs.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(I.warn("[mp4-remuxer]: remux empty Audio"),!g){I.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");return}let y=[];for(let T=0;T<f;T++){let b=d+T*m;y.push({unit:g,pts:b,dts:b})}return e.samples=y,this.remuxAudio(e,t,s,!1)}};function Qe(a,e){let t;if(e===null)return a;for(e<a?t=-8589934592:t=8589934592;Math.abs(a-e)>4294967296;)a+=t;return a}function eh(a){for(let e=0;e<a.length;e++)if(a[e].key)return e;return-1}function Il(a,e,t,s){let i=a.samples.length;if(!i)return;let r=a.inputTimeScale;for(let o=0;o<i;o++){let l=a.samples[o];l.pts=Qe(l.pts-t.baseTime*r/t.timescale,e*r)/r,l.dts=Qe(l.dts-s.baseTime*r/s.timescale,e*r)/r}let n=a.samples;return a.samples=[],{samples:n}}function Rl(a,e,t){let s=a.samples.length;if(!s)return;let i=a.inputTimeScale;for(let n=0;n<s;n++){let o=a.samples[n];o.pts=Qe(o.pts-t.baseTime*i/t.timescale,e*i)/i}a.samples.sort((n,o)=>n.pts-o.pts);let r=a.samples;return a.samples=[],{samples:r}}var Xs=class{constructor(e,t,s,i){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=s,this.cts=i,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}},ln=class{constructor(){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}destroy(){}resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(e,t,s,i){this.audioCodec=t,this.videoCodec=s,this.generateInitSegment(Iu(e,i)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:s}=this;if(!(e!=null&&e.byteLength)){this.initTracks=void 0,this.initData=void 0;return}let i=this.initData=Zo(e);i.audio&&(t=Do(i.audio,Ee.AUDIO)),i.video&&(s=Do(i.video,Ee.VIDEO));let r={};i.audio&&i.video?r.audiovideo={container:"video/mp4",codec:t+","+s,initSegment:e,id:"main"}:i.audio?r.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:i.video?r.video={container:"video/mp4",codec:s,initSegment:e,id:"main"}:I.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(e,t,s,i,r,n){var o,l;let{initPTS:c,lastEndTime:u}=this,d={audio:void 0,video:void 0,text:i,id3:s,initSegment:void 0};Z(u)||(u=this.lastEndTime=r||0);let h=t.samples;if(!(h!=null&&h.length))return d;let m={initPTS:void 0,timescale:1},f=this.initData;if((o=f)!=null&&o.length||(this.generateInitSegment(h),f=this.initData),!((l=f)!=null&&l.length))return I.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),d;this.emitInitSegment&&(m.tracks=this.initTracks,this.emitInitSegment=!1);let g=wu(h,f),y=Ru(f,h),T=y===null?r:y;(th(c,T,r,g)||m.timescale!==c.timescale&&n)&&(m.initPTS=T-r,c&&c.timescale===1&&I.warn(`Adjusting initPTS by ${m.initPTS-c.baseTime}`),this.initPTS=c={baseTime:m.initPTS,timescale:1});let b=e?T-c.baseTime/c.timescale:u,A=b+g;Du(f,h,c.baseTime/c.timescale),g>0?this.lastEndTime=A:(I.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());let _=!!f.audio,L=!!f.video,U="";_&&(U+="audio"),L&&(U+="video");let C={data1:h,startPTS:b,startDTS:b,endPTS:A,endDTS:A,type:U,hasAudio:_,hasVideo:L,nb:1,dropped:0};return d.audio=C.type==="audio"?C:void 0,d.video=C.type!=="audio"?C:void 0,d.initSegment=m,d.id3=Il(s,r,c,c),i.samples.length&&(d.text=Rl(i,r,c)),d}};function th(a,e,t,s){if(a===null)return!0;let i=Math.max(s,1),r=e-a.baseTime/a.timescale;return Math.abs(r-t)>i}function Do(a,e){let t=a?.codec;if(t&&t.length>4)return t;if(e===Ee.AUDIO){if(t==="ec-3"||t==="ac-3"||t==="alac")return t;if(t==="fLaC"||t==="Opus")return Us(t,!1);let s="mp4a.40.5";return I.info(`Parsed audio codec "${t}" or audio object type not handled. Using "${s}"`),s}return I.warn(`Unhandled video codec "${t}"`),t==="hvc1"||t==="hev1"?"hvc1.1.6.L120.90":t==="av01"?"av01.0.04M.08":"avc1.42e01e"}var yt;try{yt=self.performance.now.bind(self.performance)}catch{I.debug("Unable to use Performance API on this environment"),yt=Wt?.Date.now}var Cs=[{demux:en,remux:ln},{demux:dt,remux:Vt},{demux:Zr,remux:Vt},{demux:on,remux:Vt}];Cs.splice(2,0,{demux:tn,remux:Vt});var Js=class{constructor(e,t,s,i,r){this.async=!1,this.observer=void 0,this.typeSupp
175orted=void 0,this.config=void 0,this.vendor=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.vendor=i,this.id=r}configure(e){this.transmuxConfig=e,this.decrypter&&this.decrypter.reset()}push(e,t,s,i){let r=s.transmuxing;r.executeStart=yt();let n=new Uint8Array(e),{currentTransmuxState:o,transmuxConfig:l}=this;i&&(this.currentTransmuxState=i);let{contiguous:c,discontinuity:u,trackSwitch:d,accurateTimeOffset:h,timeOffset:m,initSegmentChange:f}=i||o,{audioCodec:g,videoCodec:y,defaultInitPts:T,duration:b,initSegmentData:A}=l,_=sh(n,t);if(_&&_.method==="AES-128"){let M=this.getDecrypter();if(M.isSync()){let N=M.softwareDecrypt(n,_.key.buffer,_.iv.buffer);if(s.part>-1&&(N=M.flush()),!N)return r.executeEnd=yt(),br(s);n=new Uint8Array(N)}else return this.decryptionPromise=M.webCryptoDecrypt(n,_.key.buffer,_.iv.buffer).then(N=>{let F=this.push(N,null,s);return this.decryptionPromise=null,F}),this.decryptionPromise}let L=this.needsProbing(u,d);if(L){let M=this.configureTransmuxer(n);if(M)return I.warn(`[transmuxer] ${M.message}`),this.observer.emit(p.ERROR,p.ERROR,{type:le.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,fatal:!1,error:M,reason:M.message}),r.executeEnd=yt(),br(s)}(u||d||f||L)&&this.resetInitSegment(A,g,y,b,t),(u||f||L)&&this.resetInitialTimestamp(T),c||this.resetContiguity();let U=this.transmux(n,_,m,h,s),C=this.currentTransmuxState;return C.contiguous=!0,C.discontinuity=!1,C.trackSwitch=!1,r.executeEnd=yt(),U}flush(e){let t=e.transmuxing;t.executeStart=yt();let{decrypter:s,currentTransmuxState:i,decryptionPromise:r}=this;if(r)return r.then(()=>this.flush(e));let n=[],{timeOffset:o}=i;if(s){let d=s.flush();d&&n.push(this.push(d,null,e))}let{demuxer:l,remuxer:c}=this;if(!l||!c)return t.executeEnd=yt(),[br(e)];let u=l.flush(o);return Ds(u)?u.then(d=>(this.flushRemux(n,d,e),n)):(this.flushRemux(n,u,e),n)}flushRemux(e,t,s){let{audioTrack:i,videoTrack:r,id3Track:n,textTrack:o}=t,{accurateTimeOffset:l,timeOffset:c}=this.currentTransmuxState;I.log(`[transmuxer.ts]: Flushed fragment ${s.sn}${s.part>-1?" p: "+s.part:""} of level ${s.level}`);let u=this.remuxer.remux(i,r,n,o,c,l,!0,this.id);e.push({remuxResult:u,chunkMeta:s}),s.transmuxing.executeEnd=yt()}resetInitialTimestamp(e){let{demuxer:t,remuxer:s}=this;!t||!s||(t.resetTimeStamp(e),s.resetTimeStamp(e))}resetContiguity(){let{demuxer:e,remuxer:t}=this;!e||!t||(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,s,i,r){let{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){let{audioTrack:r,videoTrack:n,id3Track:o,textTrack:l}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,n,o,l,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){let{config:t,observer:s,typeSupported:i,vendor:r}=this,n;for(let h=0,m=Cs.length;h<m;h++){var o;if((o=Cs[h].demux)!=null&&o.probe(e)){n=Cs[h];break}}if(!n)return new Error("Failed to find demuxer by probing fragment data");let l=this.demuxer,c=this.remuxer,u=n.remux,d=n.demux;(!c||!(c instanceof u))&&(this.remuxer=new u(s,t,i,r)),(!l||!(l instanceof d))&&(this.demuxer=new d(s,t,i),this.probe=d.probe)}needsProbing(e,t){return!this.demuxer||!this.remuxer||e||t}getDecrypter(){let e=this.decrypter;return e||(e=this.decrypter=new ls(this.config)),e}};function sh(a,e){let t=null;return a.byteLength>0&&e?.key!=null&&e.iv!==null&&e.method!=null&&(t=e),t}var br=a=>({remuxResult:{},chunkMeta:a});function Ds(a){return"then"in a&&a.then instanceof Function}var cn=class{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}},un=class{constructor(e,t,s,i,r,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOff
175set=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}},wl={exports:{}};(function(a){var e=Object.prototype.hasOwnProperty,t="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(t=!1));function i(l,c,u){this.fn=l,this.context=c,this.once=u||!1}function r(l,c,u,d,h){if(typeof u!="function")throw new TypeError("The listener must be a function");var m=new i(u,d||l,h),f=t?t+c:c;return l._events[f]?l._events[f].fn?l._events[f]=[l._events[f],m]:l._events[f].push(m):(l._events[f]=m,l._eventsCount++),l}function n(l,c){--l._eventsCount===0?l._events=new s:delete l._events[c]}function o(){this._events=new s,this._eventsCount=0}o.prototype.eventNames=function(){var c=[],u,d;if(this._eventsCount===0)return c;for(d in u=this._events)e.call(u,d)&&c.push(t?d.slice(1):d);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(u)):c},o.prototype.listeners=function(c){var u=t?t+c:c,d=this._events[u];if(!d)return[];if(d.fn)return[d.fn];for(var h=0,m=d.length,f=new Array(m);h<m;h++)f[h]=d[h].fn;return f},o.prototype.listenerCount=function(c){var u=t?t+c:c,d=this._events[u];return d?d.fn?1:d.length:0},o.prototype.emit=function(c,u,d,h,m,f){var g=t?t+c:c;if(!this._events[g])return!1;var y=this._events[g],T=arguments.length,b,A;if(y.fn){switch(y.once&&this.removeListener(c,y.fn,void 0,!0),T){case 1:return y.fn.call(y.context),!0;case 2:return y.fn.call(y.context,u),!0;case 3:return y.fn.call(y.context,u,d),!0;case 4:return y.fn.call(y.context,u,d,h),!0;case 5:return y.fn.call(y.context,u,d,h,m),!0;case 6:return y.fn.call(y.context,u,d,h,m,f),!0}for(A=1,b=new Array(T-1);A<T;A++)b[A-1]=arguments[A];y.fn.apply(y.context,b)}else{var _=y.length,L;for(A=0;A<_;A++)switch(y[A].once&&this.removeListener(c,y[A].fn,void 0,!0),T){case 1:y[A].fn.call(y[A].context);break;case 2:y[A].fn.call(y[A].context,u);break;case 3:y[A].fn.call(y[A].context,u,d);break;case 4:y[A].fn.call(y[A].context,u,d,h);break;default:if(!b)for(L=1,b=new Array(T-1);L<T;L++)b[L-1]=arguments[L];y[A].fn.apply(y[A].context,b)}}return!0},o.prototype.on=function(c,u,d){return r(this,c,u,d,!1)},o.prototype.once=function(c,u,d){return r(this,c,u,d,!0)},o.prototype.removeListener=function(c,u,d,h){var m=t?t+c:c;if(!this._events[m])return this;if(!u)return n(this,m),this;var f=this._events[m];if(f.fn)f.fn===u&&(!h||f.once)&&(!d||f.context===d)&&n(this,m);else{for(var g=0,y=[],T=f.length;g<T;g++)(f[g].fn!==u||h&&!f[g].once||d&&f[g].context!==d)&&y.push(f[g]);y.length?this._events[m]=y.length===1?y[0]:y:n(this,m)}return this},o.prototype.removeAllListeners=function(c){var u;return c?(u=t?t+c:c,this._events[u]&&n(this,u)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=t,o.EventEmitter=o,a.exports=o})(wl);var ih=wl.exports,Wn=Xc(ih),Qs=class{constructor(e,t,s,i){this.error=null,this.hls=void 0,this.id=void 0,this.observer=void 0,this.frag=null,this.part=null,this.useWorker=void 0,this.workerContext=null,this.onwmsg=void 0,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0;let r=e.config;this.hls=e,this.id=t,this.useWorker=!!r.enableWorker,this.onTransmuxComplete=s,this.onFlush=i;let n=(c,u)=>{u=u||{},u.frag=this.frag,u.id=this.id,c===p.ERROR&&(this.error=u.error),this.hls.trigger(c,u)};this.observer=new Wn,this.observer.on(p.FRAG_DECRYPTED,n),this.observer.on(p.ERROR,n);let o=Pt(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},l={mpeg:o.isTypeSupported("audio/mpeg"),mp3:o.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:o.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&typeof Worker<"u"&&(r.workerPath||kd())){try{r.workerPath?(I.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=Od(r.workerPath)):(I.log(`injecting Web Worker for "${t}"`),this.workerContext=Pd()),this.onwmsg=d=>this.onWorkerMessage(d);let{worker:u}=this.workerContext;u.addEventListener("message",this.onwmsg),u.onerror=d=>{let h=new Error(`${d.message}  (${d.filename}:${d.lineno})`);r.enableWorker=!1,I.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(p.ERROR,{type:le.OTHER_ERROR,details:D.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:h})}
175,u.postMessage({cmd:"init",typeSupported:l,vendor:"",id:t,config:JSON.stringify(r)})}catch(u){I.warn(`Error setting up "${t}" Web Worker, fallback to inline`,u),this.resetWorker(),this.error=null,this.transmuxer=new Js(this.observer,l,r,"",t)}return}this.transmuxer=new Js(this.observer,l,r,"",t)}resetWorker(){if(this.workerContext){let{worker:e,objectURL:t}=this.workerContext;t&&self.URL.revokeObjectURL(t),e.removeEventListener("message",this.onwmsg),e.onerror=null,e.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{let t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}let e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,s,i,r,n,o,l,c,u){var d,h;c.transmuxing.start=self.performance.now();let{transmuxer:m}=this,f=n?n.start:r.start,g=r.decryptdata,y=this.frag,T=!(y&&r.cc===y.cc),b=!(y&&c.level===y.level),A=y?c.sn-y.sn:-1,_=this.part?c.part-this.part.index:-1,L=A===0&&c.id>1&&c.id===y?.stats.chunkCount,U=!b&&(A===1||A===0&&(_===1||L&&_<=0)),C=self.performance.now();(b||A||r.stats.parsing.start===0)&&(r.stats.parsing.start=C),n&&(_||!U)&&(n.stats.parsing.start=C);let M=!(y&&((d=r.initSegment)==null?void 0:d.url)===((h=y.initSegment)==null?void 0:h.url)),N=new un(T,U,l,b,f,M);if(!U||T||M){I.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${c.sn} p: ${c.part} level: ${c.level} id: ${c.id}
176        discontinuity: ${T}
177        trackSwitch: ${b}
178        contiguous: ${U}
179        accurateTimeOffset: ${l}
180        timeOffset: ${f}
181        initSegmentChange: ${M}`);let F=new cn(s,i,t,o,u);this.configureTransmuxer(F)}if(this.frag=r,this.part=n,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:g,chunkMeta:c,state:N},e instanceof ArrayBuffer?[e]:[]);else if(m){let F=m.push(e,g,c,N);Ds(F)?(m.async=!0,F.then(H=>{this.handleTransmuxComplete(H)}).catch(H=>{this.transmuxerError(H,c,"transmuxer-interface push error")})):(m.async=!1,this.handleTransmuxComplete(F))}}flush(e){e.transmuxing.start=self.performance.now();let{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let s=t.flush(e);Ds(s)||t.async?(Ds(s)||(s=Promise.resolve(s)),s.then(r=>{this.handleFlushResult(r,e)}).catch(r=>{this.transmuxerError(r,e,"transmuxer-interface flush error")})):this.handleFlushResult(s,e)}}transmuxerError(e,t,s){this.hls&&(this.error=e,this.hls.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,fatal:!1,error:e,err:e,reason:s}))}handleFlushResult(e,t){e.forEach(s=>{this.handleTransmuxComplete(s)}),this.onFlush(t)}onWorkerMessage(e){let t=e.data;if(!(t!=null&&t.event)){I.warn(`worker message received with no ${t?"event name":"data"}`);return}let s=this.hls;if(this.hls)switch(t.event){case"init":{var i;let r=(i=this.workerContext)==null?void 0:i.objectURL;r&&self.URL.revokeObjectURL(r);break}case"transmuxComplete":{this.handleTransmuxComplete(t.data);break}case"flush":{this.onFlush(t.data);break}case"workerLog":I[t.data.logType]&&I[t.data.logType](t.data.message);break;default:{t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,s.trigger(t.event,t.data);break}}}configureTransmuxer(e){let{transmuxer:t}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}};function Cl(a,e){if(a.length!==e.length)return!1;for(let t=0;t<a.length;t++)if(!Yt(a[t].attrs,e[t].attrs))return!1;return!0}function Yt(a,e,t){let s=a["STABLE-RENDITION-ID"];return s&&!t?s===e["STABLE-RENDITION-ID"]:!(t||["LANGUAGE","NAME","CHARACTERISTICS","AUTOSELECT","DEFAULT","FORCED","ASSOC-LANGUAGE"]).some(i=>a[i]!==e[i])}function dn(a,e){return e.label.toLowerCase()===a.name.toLowerCase()&&(!e.language||e.language.toLowerCase()===(a.lang||"").toLowerCase())}var _o=100,hn=class extends cs{constructor(e,t,s){super(e,t,s,"[audio-stream-controller]",ne.AUDIO),this.videoBuffer=null,this.videoTrackCC=-1,this.waitingVideoCC=-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.mainDetails=null,this.bufferedTrack=null,this.switchingTrack=null}_registerListeners(){let{hls:e}=this;
181e.on(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.LEVEL_LOADED,this.onLevelLoaded,this),e.on(p.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.on(p.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(p.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(p.ERROR,this.onError,this),e.on(p.BUFFER_RESET,this.onBufferReset,this),e.on(p.BUFFER_CREATED,this.onBufferCreated,this),e.on(p.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(p.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(p.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(p.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){let{hls:e}=this;e.off(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.LEVEL_LOADED,this.onLevelLoaded,this),e.off(p.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),e.off(p.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(p.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(p.ERROR,this.onError,this),e.off(p.BUFFER_RESET,this.onBufferReset,this),e.off(p.BUFFER_CREATED,this.onBufferCreated,this),e.off(p.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(p.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(p.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(p.FRAG_BUFFERED,this.onFragBuffered,this)}onInitPtsFound(e,{frag:t,id:s,initPTS:i,timescale:r}){if(s==="main"){let n=t.cc;this.initPTS[t.cc]={baseTime:i,timescale:r},this.log(`InitPTS for cc: ${n} found from main: ${i}`),this.videoTrackCC=n,this.state===$.WAITING_INIT_PTS&&this.tick()}}startLoad(e){if(!this.levels){this.startPosition=e,this.state=$.STOPPED;return}let t=this.lastCurrentTime;this.stopLoad(),this.setInterval(_o),t>0&&e===-1?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=$.IDLE):(this.loadedmetadata=!1,this.state=$.WAITING_TRACK),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case $.IDLE:this.doTickIdle();break;case $.WAITING_TRACK:{var e;let{levels:s,trackId:i}=this,r=s==null||(e=s[i])==null?void 0:e.details;if(r){if(this.waitForCdnTuneIn(r))break;this.state=$.WAITING_INIT_PTS}break}case $.FRAG_LOADING_WAITING_RETRY:{var t;let s=performance.now(),i=this.retryDate;if(!i||s>=i||(t=this.media)!=null&&t.seeking){let{levels:r,trackId:n}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded(r?.[n]||null),this.state=$.IDLE}break}case $.WAITING_INIT_PTS:{let s=this.waitingData;if(s){let{frag:i,part:r,cache:n,complete:o}=s;if(this.initPTS[i.cc]!==void 0){this.waitingData=null,this.waitingVideoCC=-1,this.state=$.FRAG_LOADING;let l=n.flush(),c={frag:i,part:r,payload:l,networkDetails:null};this._handleFragmentLoadProgress(c),o&&super._handleFragmentLoadComplete(c)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${i.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{let l=this.getLoadPosition(),c=xe.bufferInfo(this.mediaBuffer,l,this.config.maxBufferHole);Hr(c.end,this.config.maxFragLookUpTolerance,i)<0&&(this.log(`Waiting fragment cc (${i.cc}) @ ${i.start} cancelled because another fragment at ${c.end} is needed`),this.clearWaitingFragment())}}else this.state=$.IDLE}}this.onTickEnd()}clearWaitingFragment(){let e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=$.IDLE)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){let{media:e}=this;e!=null&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){let{hls:e,levels:t,media:s,trackId:i}=this,r=e.config;if(!s&&(this.startFragRequested||!r.startFragPrefetch)||!(t!=null&&t[i]))return;let n=t[i],o=n.details;if(!o||o.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(o)){this.state=$.WAITING_TRACK;return}let l=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&l&&(this.bufferFlushed=!1,this.afterBufferFlushed(l,Ee.AUDIO,ne.AUDIO));let c=this.getFwdBufferInfo(l,ne.AUDIO);if(c===null)return;let{bufferedTrack:u,switchingTrack:d}=this;if(!d&&this._streamEnded(c,o)){e.trigger(p.BUFFER_EOS,{type:"audio"}),this.state=$.ENDED;return}let h=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,ne.MAIN),m=c.len,f=this.getMaxBufferLength(h?.len),g=o.fragments,y=g[0].start,T=this.flushing?this.getLoadPosition():c.end;if(d&&s){let L=this.getLoadPosition();u&&!Yt(d.attrs,u.attrs)&&(T=L),o.PTSKnown&&L<y&&(c.end>
181y||c.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),s.currentTime=y+.05)}if(m>=f&&!d&&T<g[g.length-1].start)return;let b=this.getNextFragment(T,o),A=!1;if(b&&this.isLoopLoading(b,T)&&(A=!!b.gap,b=this.getNextFragmentLoopLoading(b,o,c,ne.MAIN,f)),!b){this.bufferFlushed=!0;return}let _=h&&b.start>h.end+o.targetduration;if(_||!(h!=null&&h.len)&&c.len){let L=this.getAppendedFrag(b.start,ne.MAIN);if(L===null||(A||(A=!!L.gap||!!_&&h.len===0),_&&!A||A&&c.nextStart&&c.nextStart<L.end))return}this.loadFragment(b,n,T)}getMaxBufferLength(e){let t=super.getMaxBufferLength();return e?Math.min(Math.max(t,e),this.config.maxMaxBufferLength):t}onMediaDetaching(){this.videoBuffer=null,this.bufferFlushed=this.flushing=!1,super.onMediaDetaching()}onAudioTracksUpdated(e,{audioTracks:t}){this.resetTransmuxer(),this.levels=t.map(s=>new At(s))}onAudioTrackSwitching(e,t){let s=!!t.url;this.trackId=t.id;let{fragCurrent:i}=this;i&&(i.abortRequests(),this.removeUnbufferedFrags(i.start)),this.resetLoadingState(),s?this.setInterval(_o):this.resetTransmuxer(),s?(this.switchingTrack=t,this.state=$.IDLE,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=$.STOPPED),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(e,t){this.mainDetails=t.details,this.cachedTrackLoadedData!==null&&(this.hls.trigger(p.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var s;if(this.mainDetails==null){this.cachedTrackLoadedData=t;return}let{levels:i}=this,{details:r,id:n}=t;if(!i){this.warn(`Audio tracks were reset while loading level ${n}`);return}this.log(`Audio track ${n} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);let o=i[n],l=0;if(r.live||(s=o.details)!=null&&s.live){this.checkLiveUpdate(r);let u=this.mainDetails;if(r.deltaUpdateFailed||!u)return;if(!o.details&&r.hasProgramDateTime&&u.hasProgramDateTime)Ks(r,u),l=r.fragments[0].start;else{var c;l=this.alignPlaylists(r,o.details,(c=this.levelLastLoaded)==null?void 0:c.details)}}o.details=r,this.levelLastLoaded=o,!this.startFragRequested&&(this.mainDetails||!r.live)&&this.setStartPosition(this.mainDetails||r,l),this.state===$.WAITING_TRACK&&!this.waitForCdnTuneIn(r)&&(this.state=$.IDLE),this.tick()}_handleFragmentLoadProgress(e){var t;let{frag:s,part:i,payload:r}
181=e,{config:n,trackId:o,levels:l}=this;if(!l){this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);return}let c=l[o];if(!c){this.warn("Audio track is undefined on fragment load progress");return}let u=c.details;if(!u){this.warn("Audio track details undefined on fragment load progress"),this.removeUnbufferedFrags(s.start);return}let d=n.defaultAudioCodec||c.audioCodec||"mp4a.40.2",h=this.transmuxer;h||(h=this.transmuxer=new Qs(this.hls,ne.AUDIO,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));let m=this.initPTS[s.cc],f=(t=s.initSegment)==null?void 0:t.data;if(m!==void 0){let y=i?i.index:-1,T=y!==-1,b=new os(s.level,s.sn,s.stats.chunkCount,r.byteLength,y,T);h.push(r,f,d,"",s,i,u.totalduration,!1,b,m)}else{this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${u.startSN} ,${u.endSN}],track ${o}`);let{cache:g}=this.waitingData=this.waitingData||{frag:s,part:i,cache:new Vs,complete:!1};g.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=$.WAITING_INIT_PTS}}_handleFragmentLoadComplete(e){if(this.waitingData){this.waitingData.complete=!0;return}super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){let s=t.tracks.audio;s&&(this.mediaBuffer=s.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){let{frag:s,part:i}=t;if(s.type!==ne.AUDIO){if(!this.loadedmetadata&&s.type===ne.MAIN){let r=this.videoBuffer||this.media;r&&xe.getBuffered(r).length&&(this.loadedmetadata=!0)}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(s.sn!=="initSegment"){this.fragPrevious=s;let r=this.switchingTrack;r&&(this.bufferedTrack=r,this.switchingTrack=null,this.hls.trigger(p.AUDIO_TRACK_SWITCHED,Be({},r)))}this.fragBufferedComplete(s,i)}onError(e,t){var s;if(t.fatal){this.state=$.ERROR;return}switch(t.details){case D.FRAG_GAP:case D.FRAG_PARSING_ERROR:case D.FRAG_DECRYPT_ERROR:case D.FRAG_LOAD_ERROR:case D.FRAG_LOAD_TIMEOUT:case D.KEY_LOAD_ERROR:case D.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(ne.AUDIO,t);break;case D.AUDIO_TRACK_LOAD_ERROR:case D.AUDIO_TRACK_LOAD_TIMEOUT:case D.LEVEL_PARSING_ERROR:!t.levelRetry&&this.state===$.WAITING_TRACK&&((s=t.context)==null?void 0:s.type)===ye.AUDIO_TRACK&&(this.state=$.IDLE);break;case D.BUFFER_APPEND_ERROR:case D.BUFFER_FULL_ERROR:if(!t.parent||t.parent!=="audio")return;if(t.details===D.BUFFER_APPEND_ERROR){this.resetLoadingState();return}this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case D.INTERNAL_EXCEPTION:this.recoverWorkerError(t);break}}onBufferFlushing(e,{type:t}){t!==Ee.VIDEO&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==Ee.VIDEO){this.flushing=!1,this.bufferFlushed=!0,this.state===$.ENDED&&(this.state=$.IDLE);let s=this.mediaBuffer||this.media;s&&(this.afterBufferFlushed(s,t,ne.AUDIO),this.tick())}}_handleTransmuxComplete(e){var t;let s="audio",{hls:i}=this,{remuxResult:r,chunkMeta:n}=e,o=this.getCurrentContext(n);if(!o){this.resetWhenMissingContext(n);return}let{frag:l,part:c,level:u}=o,{details:d}=u,{audio:h,text:m,id3:f,initSegment:g}=r;if(this.fragContextChanged(l)||!d){this.fragmentTracker.removeFragment(l);return}if(this.state=$.PARSING,this.switchingTrack&&h&&this.completeAudioSwitch(this.switchingTrack),g!=null&&g.tracks){let y=l.initSegment||l;this._bufferInitSegment(u,g.tracks,y,n),i.trigger(p.FRAG_PARSING_INIT_SEGMENT,{frag:y,id:s,tracks:g.tracks})}if(h){let{startPTS:y,endPTS:T,startDTS:b,endDTS:A}=h;c&&(c.elementaryStreams[Ee.AUDIO]={startPTS:y,endPTS:T,startDTS:b,endDTS:A}),l.setElementaryStreamInfo(Ee.AUDIO,y,T,b,A),this.bufferFragmentData(h,l,c,n)}if(f!=null&&(t=f.samples)!=null&&t.length){let y=Pe({id:s,frag:l,details:d},f);i.trigger(p.FRAG_PARSING_METADATA,y)}if(m){let y=Pe({id:s,frag:l,details:d},m);i.trigger(p.FRAG_PARSING_USERDATA,y)}}_bufferInitSegment(e,t,s,i){if(this.state!==$.PARSING)return;t.video&&delete t.video;let r=t.audio;if(!r)return;r.id="audio";let 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(p.BUFFER_CODECS,t);let o=r.initSegment;if(o!=null&&o.byteLength){let l={type:"audio",frag:s,part:null,chunkMeta:i,parent:s.type,data:o};this.hls.trigger(p.BUFFER_APPENDING,l)}this.tickImmediate()}loadFragment(e,t,s){let i=this.fragmentTracker.getState(e);if(this.fragCurrent=e,this.switchingTrack||i===Ue.NOT_LOADED||i===Ue.PARTIAL){var r;if(e.sn==="initSegment")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=$.WAITING_INIT_PTS;let n=this.mainDetails;n&&n.fragments[0].start!==t.details.fragments[0].start&&Ks(t.details,n)}else this.startFragRequested=!0,super.loadFragment(e,t,s)}else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){let{media:t,bufferedTrack:s}=this,i=s?.attrs,r=e.attrs;t&&i&&(i.CHANNELS!==r.CHANNELS||s.name!==e.name||s.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){let{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(p.AUDIO_TRACK_SWITCHED,Be({},e))}},fn=class extends as{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(){let{hls:e}=this;e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.MANIFEST_PARSED,this.onManifestParsed,this),e.on(p.LEVEL_LOADING,this.onLevelLoading,this),e.on(p.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(p.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(p.ERROR,this.onError,this)}unregisterListeners(){let{hls:e}=this;e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.MANIFEST_PARSED,this.onManifestParsed,this),e.off(p.LEVEL_LOADING,this.onLevelLoading,this),e.off(p.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(p.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(p.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){let{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}let 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){let t=this.hls.levels[e];if(!t)return;let s=t.audioGroups||null,i=this.groupIds,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;let o=this.tracks.filter(h=>!s||s.indexOf(h.groupId)!==-1);if(o.length)this.selectDefaultTrack&&!o.some(h=>h.default)&&(this.selectDefaultTrack=!1),o.forEach((h,m)=>{h.id=m});else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=o;let l=this.hls.config.audioPreference;if(!r&&l){let h=ht(l,o,Ut);if(h>-1)r=o[h];else{let m=ht(l,this.tracks);r=this.tracks[m]}}let c=this.findTrackId(r);c===-1&&r&&(c=this.findTrackId(null));let u={audioTracks:o};this.log(`Updating audio tracks, ${o.length} track(s) found in group(s): ${s?.join(",")}`),this.hls.trigger(p.AUDIO_TRACKS_UPDATED,u);let d=this.trackId;if(c!==-1&&d===-1)this.setAudioTrack(c);else if(o.length&&d===-1){var n;let h=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(h.message),this.hls.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:h})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(e,t){t.fatal||!t.context||t.context.type===ye.AUDIO_TRACK&&t.context.
181id===this.trackId&&(!this.groupIds||this.groupIds.indexOf(t.context.groupId)!==-1)&&(this.requestScheduled=-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){let t=this.hls;if(t.config.audioPreference=e,e){let s=this.allAudioTracks;if(this.selectDefaultTrack=!1,s.length){let i=this.currentTrack;if(i&&Kt(e,i,Ut))return i;let r=ht(e,this.tracksInGroup,Ut);if(r>-1){let n=this.tracksInGroup[r];return this.setAudioTrack(r),n}else if(i){let n=t.loadLevel;n===-1&&(n=t.firstAutoLevel);let o=xd(e,t.levels,s,n,Ut);if(o===-1)return null;t.nextLoadLevel=o}if(e.channels||e.audioCodec){let n=ht(e,s);if(n>-1)return s[n]}}}return null}setAudioTrack(e){let t=this.tracksInGroup;if(e<0||e>=t.length){this.warn(`Invalid audio track id: ${e}`);return}this.clearTimer(),this.selectDefaultTrack=!1;let 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(p.AUDIO_TRACK_SWITCHING,Be({},i)),r))return;let n=this.switchParams(i.url,s?.details,i.details);this.loadPlaylist(n)}findTrackId(e){let t=this.tracksInGroup;for(let s=0;s<t.length;s++){let i=t[s];if(!(this.selectDefaultTrack&&!i.default)&&(!e||Kt(e,i,Ut)))return s}if(e){let{name:s,lang:i,assocLang:r,characteristics:n,audioCodec:o,channels:l}=e;for(let c=0;c<t.length;c++){let u=t[c];if(Kt({name:s,lang:i,assocLang:r,characteristics:n,audioCodec:o,channels:l},u,Ut))return c}for(let c=0;c<t.length;c++){let u=t[c];if(Yt(e.attrs,u.attrs,["LANGUAGE","ASSOC-LANGUAGE","CHARACTERISTICS"]))return c}for(let c=0;c<t.length;c++){let u=t[c];if(Yt(e.attrs,u.attrs,["LANGUAGE"]))return c}}return-1}loadPlaylist(e){let t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){super.loadPlaylist();let s=t.id,i=t.groupId,r=t.url;if(e)try{r=e.addDirectives(r)}catch(n){this.warn(`Could not construct new URL with HLS Delivery Directives: ${n}`)}this.log(`loading audio-track playlist ${s} "${t.name}" lang:${t.lang} group:${i}`),this.clearTimer(),this.hls.trigger(p.AUDIO_TRACK_LOADING,{url:r,id:s,groupId:i,deliveryDirectives:e||null})}}},ko=500,mn=class extends cs{constructor(e,t,s){super(e,t,s,"[subtitle-stream-controller]",ne.SUBTITLE),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){let{hls:e}=this;e.on(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.LEVEL_LOADED,this.onLevelLoaded,this),e.on(p.ERROR,this.onError,this),e.on(p.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(p.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(p.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(p.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(p.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(p.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){let{hls:e}=this;e.off(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.LEVEL_LOADED,this.onLevelLoaded,this),e.off(p.ERROR,this.onError,this),e.off(p.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(p.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(p.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(p.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(p.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(p.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=$.IDLE,this.setInterval(ko),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){let{frag:s,success:i}=t;if(this.fragPrevious=s,this.state=$.IDLE,!i)return;let r=this.tracksBuffered[this.currentTrackId];if(!r)return;let n,o=s.start;for(let c=0;c<r.length;c++)if(o>=r[c].start&&o<=r[c].end){n=r[c];break}let l=s.start+s.duration;n?n.end=l:(n={start:o,end:l},r.push(n)),this.fragmentTracker.fragBuffered(s),this.fragBufferedComplete(s,null)}onBufferFlushing(e,t){let{startOffset:s,endOffset:i}=t;if(s===0&&i!==Number.POSITIVE_INFINITY){let r=i-1;if(r<=0)return;t.endOffsetSubtitles=Math.max(0,r),this.tracksBuffered.forEach(n=>{for(let o=0;o<n.length;){if(n[o].end<=r){n.shift();continue}else if(n[o].start<r)n[o].start=r;else break;o++}}),this.fragmentTracker.removeFragmentsInRange(s,r,ne.SUBTITLE)}}onFragBuffered(e,t){if(!this.loadedmetadata&&t.frag.type===ne.MAIN){var s;(s=this.media)!=null&&s.buffered.length&&(this.loadedmetadata=!0)}}onError(e,t){let s=t.frag;
181s?.type===ne.SUBTITLE&&(t.details===D.FRAG_GAP&&this.fragmentTracker.fragBuffered(s,!0),this.fragCurrent&&this.fragCurrent.abortRequests(),this.state!==$.STOPPED&&(this.state=$.IDLE))}onSubtitleTracksUpdated(e,{subtitleTracks:t}){if(this.levels&&Cl(this.levels,t)){this.levels=t.map(s=>new At(s));return}this.tracksBuffered=[],this.levels=t.map(s=>{let i=new At(s);return this.tracksBuffered[i.id]=[],i}),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,ne.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}let i=this.levels[this.currentTrackId];i!=null&&i.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,i&&this.setInterval(ko)}onSubtitleTrackLoaded(e,t){var s;let{currentTrackId:i,levels:r}=this,{details:n,id:o}=t;if(!r){this.warn(`Subtitle tracks were reset while loading level ${o}`);return}let l=r[o];if(o>=r.length||!l)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 c=0;if(n.live||(s=l.details)!=null&&s.live){let d=this.mainDetails;if(n.deltaUpdateFailed||!d)return;let h=d.fragments[0];if(!l.details)n.hasProgramDateTime&&d.hasProgramDateTime?(Ks(n,d),c=n.fragments[0].start):h&&(c=h.start,Gr(n,c));else{var u;c=this.alignPlaylists(n,l.details,(u=this.levelLastLoaded)==null?void 0:u.details),c===0&&h&&(c=h.start,Gr(n,c))}}l.details=n,this.levelLastLoaded=l,o===i&&(!this.startFragRequested&&(this.mainDetails||!n.live)&&this.setStartPosition(this.mainDetails||n,c),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===$.IDLE&&(Hs(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),l.details=void 0)))}_handleFragmentLoadComplete(e){let{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&&i.method==="AES-128"){let n=performance.now();this.decrypter.decrypt(new Uint8Array(s),i.key.buffer,i.iv.buffer).catch(o=>{throw r.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.FRAG_DECRYPT_ERROR,fatal:!1,error:o,reason:o.message,frag:t}),o}).then(o=>{let l=performance.now();r.trigger(p.FRAG_DECRYPTED,{frag:t,payload:o,stats:{tstart:n,tdecrypt:l}})}).catch(o=>{this.warn(`${o.name}: ${o.message}`),this.state=$.IDLE})}}doTick(){if(!this.media){this.state=$.IDLE;return}if(this.state===$.IDLE){let{currentTrackId:e,levels:t}=this,s=t?.[e];if(!s||!t.length||!s.details)return;let{config:i}=this,r=this.getLoadPosition(),n=xe.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,i.maxBufferHole),{end:o,len:l}=n,c=this.getFwdBufferInfo(this.media,ne.MAIN),u=s.details,d=this.getMaxBufferLength(c?.len)+u.levelTargetDuration;if(l>d)return;let h=u.fragments,m=h.length,f=u.edge,g=null,y=this.fragPrevious;if(o<f){let T=i.maxFragLookUpTolerance,b=o>f-T?0:T;g=Hs(y,h,Math.max(h[0].start,o),b),!g&&y&&y.start<h[0].start&&(g=h[0])}else g=h[m-1];if(!g)return;if(g=this.mapToInitFragWhenRequired(g),g.sn!=="initSegment"){let T=g.sn-u.startSN,b=h[T-1];b&&b.cc===g.cc&&this.fragmentTracker.getState(b)===Ue.NOT_LOADED&&(g=b)}this.fragmentTracker.getState(g)===Ue.NOT_LOADED&&this.loadFragment(g,s,o)}}getMaxBufferLength(e){let t=super.getMaxBufferLength();return e?Math.max(t,e):t}loadFragment(e,t,s){this.fragCurrent=e,e.sn==="initSegment"?this._loadInitSegment(e,t):(this.startFragRequested=!0,super.loadFragment(e,t,s))}get mediaBufferTimeRanges(){return new gn(this.tracksBuffered[this.currentTrackId]||[])}},gn=class{constructor(e){this.buffered=void 0;let t=(s,i,r)=>{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)}}}},pn=class extends as{constructor(e){super(e,"[subtitle-track-controller]"),this.media=null,this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.queuedDefaultTrack=-1,this.asyncPollTrackChange=()=>this.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>
181{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let t=null,s=Is(this.media.textTracks);for(let r=0;r<s.length;r++)if(s[r].mode==="hidden")t=s[r];else if(s[r].mode==="showing"){t=s[r];break}let i=this.findTrackForTextTrack(t);this.subtitleTrack!==i&&this.setSubtitleTrack(i)},this.registerListeners()}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,this.onTextTracksChanged=this.asyncPollTrackChange=null,super.destroy()}get subtitleDisplay(){return this._subtitleDisplay}set subtitleDisplay(e){this._subtitleDisplay=e,this.trackId>-1&&this.toggleTrackModes()}registerListeners(){let{hls:e}=this;e.on(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.MANIFEST_PARSED,this.onManifestParsed,this),e.on(p.LEVEL_LOADING,this.onLevelLoading,this),e.on(p.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(p.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(p.ERROR,this.onError,this)}unregisterListeners(){let{hls:e}=this;e.off(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.MANIFEST_PARSED,this.onManifestParsed,this),e.off(p.LEVEL_LOADING,this.onLevelLoading,this),e.off(p.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(p.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(p.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(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId),Is(this.media.textTracks).forEac
181h(t=>{Gt(t)}),this.subtitleTrack=-1,this.media=null}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){let{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}let 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){let t=this.hls.levels[e];if(!t)return;let s=t.subtitleGroups||null,i=this.groupIds,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;let n=this.tracks.filter(u=>!s||s.indexOf(u.groupId)!==-1);if(n.length)this.selectDefaultTrack&&!n.some(u=>u.default)&&(this.selectDefaultTrack=!1),n.forEach((u,d)=>{u.id=d});else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=n;let o=this.hls.config.subtitlePreference;if(!r&&o){this.selectDefaultTrack=!1;let u=ht(o,n);if(u>-1)r=n[u];else{let d=ht(o,this.tracks);r=this.tracks[d]}}let l=this.findTrackId(r);l===-1&&r&&(l=this.findTrackId(null));let c={subtitleTracks:n};this.log(`Updating subtitle tracks, ${n.length} track(s) found in "${s?.join(",")}" group-id`),this.hls.trigger(p.SUBTITLE_TRACKS_UPDATED,c),l!==-1&&this.trackId===-1&&this.setSubtitleTrack(l)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){let t=this.tracksInGroup,s=this.selectDefaultTrack;for(let i=0;i<t.length;i++){let r=t[i];if(!(s&&!r.default||!s&&!e)&&(!e||Kt(r,e)))return i}if(e){for(let i=0;i<t.length;i++){let r=t[i];if(Yt(e.attrs,r.attrs,["LANGUAGE","ASSOC-LANGUAGE","CHARACTERISTICS"]))return i}for(let i=0;i<t.length;i++){let r=t[i];if(Yt(e.attrs,r.attrs,["LANGUAGE"]))return i}}return-1}findTrackForTextTrack(e){if(e){let t=this.tracksInGroup;for(let s=0;s<t.length;s++){let i=t[s];if(dn(i,e))return s}}return-1}onError(e,t){t.fatal||!t.context||t.context.type===ye.SUBTITLE_TRACK&&t.context.id===this.trackId&&(!this.groupIds||this.groupIds.indexOf(t.context.groupId)!==-1)&&this.checkRetry(t)}get allSubtitleTracks(){return this.tracks}get subtitleTracks(){return this.tracksInGroup}get subtitleTrack(){return this.trackId}set subtitleTrack(e){this.selectDefaultTrack=!1,this.setSubtitleTrack(e)}setSubtitleOption(e){if(this.hls.config.subtitlePreference=e,e){let t=this.allSubtitleTracks;if(this.selectDefaultTrack=!1,t.length){let s=this.currentTrack;if(s&&Kt(e,s))return s;let i=ht(e,this.tracksInGroup);if(i>-1){let r=this.tracksInGroup[i];return this.setSubtitleTrack(i),r}else{if(s)return null;{let r=ht(e,t);if(r>-1)return t[r]}}}}return null}loadPlaylist(e){super.loadPlaylist();let t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){let s=t.id,i=t.groupId,r=t.url;if(e)try{r=e.addDirectives(r)}catch(n){this.warn(`Could not construct new URL with HLS Delivery Directives: ${n}`)}this.log(`Loading subtitle playlist for id ${s}`),this.hls.trigger(p.SUBTITLE_TRACK_LOADING,{url:r,id:s,groupId:i,deliveryDirectives:e||null})}}toggleTrackModes(){let{media:e}=this;if(!e)return;let t=Is(e.textTracks),s=this.currentTrack,i;if(s&&(i=t.filter(r=>dn(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){let r=this.subtitleDisplay?"showing":"hidden";i.mode!==r&&(i.mode=r)}}setSubtitleTrack(e){let t=this.tracksInGroup;if(!this.media){this.queuedDefaultTrack=e;return}if(e<-1||e>=t.length||!Z(e)){this.warn(`Invalid subtitle track id: ${e}`);return}this.clearTimer(),this.selectDefaultTrack=!1;let s=this.currentTrack,i=t[e]||null;if(this.trackId=e,this.currentTrack=i,this.toggleTrackModes(),!i){this.hls.trigger(p.SUBTITLE_TRACK_SWITCH,{id:e});return}let 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}`:""));let{id:n,groupId:o="",name:l,type:c,url:u}=i;this.hls.trigger(p.SUBTITLE_TRACK_SWITCH,{id:n,groupId:o,name:l,type:c,url:u});let d=this.switchParams(i.url,s?.details,i.details);this.loadPlaylist(d)}},yn=class{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,s){let i=this.queues[t];i.push(e),i.length===1&&!s&&this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t,s=new Promise(r=>{t=r}),i={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(i,e),s}executeNext(e){let t=this.queues[e];if(t.length){let s=t[0];try{s.execute()}catch(i){I.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${i}`),s.onError(i);let r=this.buffers[e];r!=null&&r.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}},Po=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,vn=class{constructor(e){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=s=>
181{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=s=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{let{media:s,mediaSource:i}=this;this.log("Media source opened"),s&&(s.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(p.MEDIA_ATTACHED,{media:s,mediaSource:i})),i&&i.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{let{mediaSrc:s,_objectUrl:i}=this;s!==i&&I.error(`Media element src was set while attaching MediaSource (${i} > ${s})`)},this.hls=e;let t="[buffer-controller]";this.appendSource=qu(Pt(e.config.preferManagedMediaSource)),this.log=I.log.bind(I,t),this.warn=I.warn.bind(I,t),this.error=I.error.bind(I,t),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){let{hls:e}=this;e.on(p.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.MANIFEST_PARSED,this.onManifestParsed,this),e.on(p.BUFFER_RESET,this.onBufferReset,this),e.on(p.BUFFER_APPENDING,this.onBufferAppending,this),e.on(p.BUFFER_CODECS,this.onBufferCodecs,this),e.on(p.BUFFER_EOS,this.onBufferEos,this),e.on(p.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(p.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(p.FRAG_PARSED,this.onFragParsed,this),e.on(p.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){let{hls:e}=this;e.off(p.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.MANIFEST_PARSED,this.onManifestParsed,this),e.off(p.BUFFER_RESET,this.onBufferReset,this),e.off(p.BUFFER_APPENDING,this.onBufferAppending,this),e.off(p.BUFFER_CODECS,this.onBufferCodecs,this),e.off(p.BUFFER_EOS,this.onBufferEos,this),e.off(p.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(p.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(p.FRAG_PARSED,this.onFragParsed,this),e.off(p.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new yn(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){let s=2;(t.audio&&!t.video||!t.altAudio)&&(s=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=s,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){let s=this.media=t.media,i=Pt(this.appendSource);if(s&&i){var r;let n=this.mediaSource=new i;this.log(`created media source: ${(r=n.constructor)==null?void 0:r.name}`),n.addEventListener("sourceopen",this._onMediaSourceOpen),n.addEventListener("sourceended",this._onMediaSourceEnded),n.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(n.addEventListener("startstreaming",this._onStartStreaming),n.addEventListener("endstreaming",this._onEndStreaming));let o=this._objectUrl=self.URL.createObjectURL(n);if(this.appendSource)try{s.removeAttribute("src");let l=self.ManagedMediaSource;s.disableRemotePlayback=s.disableRemotePlayback||l&&n instanceof l,Oo(s),rh(s,o),s.load()}catch{s.src=o}else s.src=o;s.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){let{media:e,mediaSource:t,_objectUrl:s}=this;if(t){if(this.log("media source detaching"),t.readyState==="open")try{t.endOfStream()}catch(i){this.warn(`onMediaDetaching: ${i.message} while calling endOfStream`)}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.removeEventListener("startstreaming",this._onStartStreaming),t.removeEventListener("endstreaming",this._onEndStreaming)),e&&(e.removeEventListener("emptied",this._onMediaEmptied),s&&self.URL.revokeObjectURL(s),this.mediaSrc===s?(e.removeAttribute("src"),this.appendSource&&Oo(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(p.MEDIA_DETACHED,void 0)}
181onBufferReset(){this.getSourceBufferTypes().forEach(e=>{this.resetBuffer(e)}),this._initSourceBuffer()}resetBuffer(e){let t=this.sourceBuffer[e];try{if(t){var s;this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,(s=this.mediaSource)!=null&&s.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}}catch(i){this.warn(`onBufferReset ${e}`,i)}}onBufferCodecs(e,t){let s=this.getSourceBufferTypes().length,i=Object.keys(t);if(i.forEach(n=>{if(s){let l=this.tracks[n];if(l&&typeof l.buffer.changeType=="function"){var o;let{id:c,codec:u,levelCodec:d,container:h,metadata:m}=t[n],f=no(l.codec,l.levelCodec),g=f?.replace(Po,"$1"),y=no(u,d),T=(o=y)==null?void 0:o.replace(Po,"$1");if(y&&g!==T){n.slice(0,5)==="audio"&&(y=Us(y,this.appendSource));let b=`${h};codecs=${y}`;this.appendChangeType(n,b),this.log(`switching codec ${f} to ${y}`),this.tracks[n]={buffer:l.buffer,codec:u,container:h,levelCodec:d,metadata:m,id:c}}}}else this.pendingTracks[n]=t[n]}),s)return;let r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${i.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&this.mediaSource.readyState==="open"&&this.checkPendingTracks()}appendChangeType(e,t){let{operationQueue:s}=this,i={execute:()=>{let r=this.sourceBuffer[e];r&&(this.log(`changing ${e} sourceBuffer type to ${t}`),r.changeType(t)),s.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:r=>{this.warn(`Failed to change ${e} SourceBuffer type`,r)}};s.append(i,e,!!this.pendingTracks[e])}onBufferAppending(e,t){let{hls:s,operationQueue:i,tracks:r}=this,{data:n,type:o,frag:l,part:c,chunkMeta:u}=t,d=u.buffering[o],h=self.performance.now();d.start=h;let m=l.stats.buffering,f=c?c.stats.buffering:null;m.start===0&&(m.start=h),f&&f.start===0&&(f.start=h);let g=r.audio,y=!1;o==="audio"&&g?.container==="audio/mpeg"&&(y=!this.lastMpegAudioChunk||u.id===1||this.lastMpegAudioChunk.sn!==u.sn,this.lastMpegAudioChunk=u);let T=l.start,b={execute:()=>{if(d.executeStart=self.performance.now(),y){let A=this.sourceBuffer[o];if(A){let _=T-A.timestampOffset;Math.abs(_)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${T} (delta: ${_}) sn: ${l.sn})`),A.timestampOffset=T)}}this.appendExecutor(n,o)},onStart:()=>{},onComplete:()=>{let A=self.performance.now();d.executeEnd=d.end=A,m.first===0&&(m.first=A),f&&f.first===0&&(f.first=A);let{sourceBuffer:_}=this,L={};for(let U in _)L[U]=xe.getBuffered(_[U]);this.appendErrors[o]=0,o==="audio"||o==="video"?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(p.BUFFER_APPENDED,{type:o,frag:l,part:c,chunkMeta:u,parent:l.type,timeRanges:L})},onError:A=>{let _={type:le.MEDIA_ERROR,parent:l.type,details:D.BUFFER_APPEND_ERROR,sourceBufferName:o,frag:l,part:c,chunkMeta:u,error:A,err:A,fatal:!1};if(A.code===DOMException.QUOTA_EXCEEDED_ERR)_.details=D.BUFFER_FULL_ERROR;else{let L=++this.appendErrors[o];_.details=D.BUFFER_APPEND_ERROR,this.warn(`Failed ${L}/${s.config.appendErrorMaxRetry} times to append segment in "${o}" sourceBuffer`),L>=s.config.appendErrorMaxRetry&&(_.fatal=!0)}s.trigger(p.ERROR,_)}};i.append(b,o,!!this.pendingTracks[o])}onBufferFlushing(e,t){let{operationQueue:s}=this,i=r=>({execute:this.removeExecutor.bind(this,r,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(p.BUFFER_FLUSHED,{type:r})},onError:n=>{this.warn(`Failed to remove from ${r} SourceBuffer`,n)}});t.type?s.append(i(t.type),t.type):this.getSourceBufferTypes().forEach(r=>{s.append(i(r),r)})}onFragParsed(e,t){let{frag:s,part:i}=t,r=[],n=i?i.elementaryStreams:s.elementaryStreams;n[Ee.AUDIOVIDEO]?r.push("audiovideo"):(n[Ee.AUDIO]&&r.push("audio"),n[Ee.VIDEO]&&r.push("video"));let o=()=>{let l=self.performance.now();s.stats.buffering.end=l,i&&(i.stats.buffering.end=l);let c=i?i.stats:s.stats;this.hls.trigger(p.FRAG_BUFFERED,{frag:s,part:i,stats:c,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)}onFragChanged(e,t){this.trimBuffers()}
181onBufferEos(e,t){this.getSourceBufferTypes().reduce((i,r)=>{let n=this.sourceBuffer[r];return n&&(!t.type||t.type===r)&&(n.ending=!0,n.ended||(n.ended=!0,this.log(`${r} sourceBuffer now EOS`))),i&&!!(!n||n.ended)},!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers(()=>{this.getSourceBufferTypes().forEach(r=>{let n=this.sourceBuffer[r];n&&(n.ending=!1)});let{mediaSource:i}=this;if(!i||i.readyState!=="open"){i&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${i.readyState}`);return}this.log("Calling mediaSource.endOfStream()"),i.endOfStream()}))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){let{hls:e,details:t,media:s}=this;if(!s||t===null||!this.getSourceBufferTypes().length)return;let r=e.config,n=s.currentTime,o=t.levelTargetDuration,l=t.live&&r.liveBackBufferLength!==null?r.liveBackBufferLength:r.backBufferLength;if(Z(l)&&l>0){let c=Math.max(l,o),u=Math.floor(n/o)*o-c;this.flushBackBuffer(n,o,u)}if(Z(r.frontBufferFlushThreshold)&&r.frontBufferFlushThreshold>0){let c=Math.max(r.maxBufferLength,r.frontBufferFlushThreshold),u=Math.max(c,o),d=Math.floor(n/o)*o+u;this.flushFrontBuffer(n,o,d)}}flushBackBuffer(e,t,s){let{details:i,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach(o=>{let l=r[o];if(l){let c=xe.getBuffered(l);if(c.length>0&&s>c.start(0)){if(this.hls.trigger(p.BACK_BUFFER_REACHED,{bufferEnd:s}),i!=null&&i.live)this.hls.trigger(p.LIVE_BACK_BUFFER_REACHED,{bufferEnd:s});else if(l.ended&&c.end(c.length-1)-e<t*2){this.log(`Cannot flush ${o} back buffer while SourceBuffer is in ended state`);return}this.hls.trigger(p.BUFFER_FLUSHING,{startOffset:0,endOffset:s,type:o})}}})}flushFrontBuffer(e,t,s){let{sourceBuffer:i}=this;this.getSourceBufferTypes().forEach(n=>{let o=i[n];if(o){let l=xe.getBuffered(o),c=l.length;if(c<2)return;let u=l.start(c-1),d=l.end(c-1);if(s>u||e>=u&&e<=d)return;if(o.ended&&e-d<2*t){this.log(`Cannot flush ${n} front buffer while SourceBuffer is in ended state`);return}this.hls.trigger(p.BUFFER_FLUSHING,{startOffset:u,endOffset:1/0,type:n})}})}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||this.mediaSource.readyState!=="open")return;let{details:e,hls:t,media:s,mediaSource:i}=this,r=e.fragments[0].start+e.totalduration,n=s.duration,o=Z(i.duration)?i.duration:0;e.live&&t.config.liveDurationInfinity?(i.duration=1/0,this.updateSeekableRange(e)):(r>o&&r>n||!Z(n))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),i.duration=r)}updateSeekableRange(e){let t=this.mediaSource,s=e.fragments;if(s.length&&e.live&&t!=null&&t.setLiveSeekableRange){let r=Math.max(0,s[0].start),n=Math.max(r,r+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${r}-${n}.`),t.setLiveSeekableRange(r,n)}}checkPendingTracks(){let{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:s}=this,i=Object.keys(s).length;if(i&&(!e||i===2||"audiovideo"in s)){this.createSourceBuffers(s),this.pendingTracks={};let r=this.getSourceBufferTypes();if(r.length)this.hls.trigger(p.BUFFER_CREATED,{tracks:this.tracks}),r.forEach(n=>{t.executeNext(n)});else{let n=new Error("could not create source buffer for media codec(s)");this.hls.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:n,reason:n.message})}}}createSourceBuffers(e){let{sourceBuffer:t,mediaSource:s}=this;if(!s)throw Error("createSourceBuffers called when mediaSource was null");for(let r in e)if(!t[r]){var i;let n=e[r];if(!n)throw Error(`source buffer exists for track ${r}, however track does not`);let o=((i=n.levelCodec)==null?void 0:i.indexOf(","))===-1?n.levelCodec:n.codec;o&&r.slice(0,5)==="audio"&&(o=Us(o,this.appendSource));let l=`${n.container};codecs=${o}`;this.log(`creating sourceBuffer(${l})`);try{let c=t[r]=s.addSourceBuffer(l),u=r;this.addBufferListener(u,"updatestart",this._onSBUpdateStart),this.addBufferListener(u,"updateend",this._onSBUpdateEnd),this.addBufferListener(u,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(u,"bufferedchange",(d,h)=>{let m=h.removedRanges;m!=null&&m.length&&this.hls.trigger(p.BUFFER_FLUSHED,{type:r})}),this.tracks[r]={buffer:c,codec:o,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(c){this.error(`error while trying to add sourceBuffer: ${c.message}`),this.hls.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:c,sourceBufferName:r,mimeType:l})}}}get mediaSrc(){var e,t;let s=((e=this.media)==null||(t=e.querySelector)==null?void 0:t.call(e,"source"))||this.media;return s?.src}_onSBUpdateStart(e){let{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if(((t=this.mediaSource)==null?void 0:t.readyState)==="closed"){this.resetBuffer(e);return}let{operationQueue:s}=this;s.current(e).onComplete(),s.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var s;let i=new Error(`${e} SourceBuffer error. MediaSource readyState: ${(s=this.mediaSource)==null?void 0:s.readyState}`);this.error(`${i}`,t),this.hls.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:i,fatal:!1});let r=this.operationQueue.current(e);r&&r.onError(i)}removeExecutor(e,t,s){let{media:i,mediaSource:r,operationQueue:n,sourceBuffer:o}=this,l=o[e];if(!i||!r||!l){this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),n.shiftAndExecuteNext(e);return}let c=Z(i.duration)?i.duration:1/0,u=Z(r.duration)?r.duration:1/0,d=Math.max(0,t),h=Math.min(s,c,u);h>
181d&&(!l.ending||l.ended)?(l.ended=!1,this.log(`Removing [${d},${h}] from the ${e} SourceBuffer`),l.remove(d,h)):n.shiftAndExecuteNext(e)}appendExecutor(e,t){let s=this.sourceBuffer[t];if(!s){if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`);return}s.ended=!1,s.appendBuffer(e)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length){this.log("Blocking operation requested, but no SourceBuffers exist"),Promise.resolve().then(e);return}let{operationQueue:s}=this,i=t.map(r=>s.appendBlocker(r));Promise.all(i).then(()=>{e(),t.forEach(r=>{let n=this.sourceBuffer[r];n!=null&&n.updating||s.shiftAndExecuteNext(r)})})}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,s){let i=this.sourceBuffer[e];if(!i)return;let r=s.bind(this,e);this.listeners[e].push({event:t,listener:r}),i.addEventListener(t,r)}removeBufferListeners(e){let t=this.sourceBuffer[e];t&&this.listeners[e].forEach(s=>{t.removeEventListener(s.event,s.listener)})}};function Oo(a){let e=a.querySelectorAll("source");[].slice.call(e).forEach(t=>{a.removeChild(t)})}function rh(a,e){let t=self.document.createElement("source");t.type="video/mp4",t.src=e,a.appendChild(t)}var nh={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},Dl=a=>String.fromCharCode(nh[a]||a),rt=15,pt=100,ah={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},oh={17:2,18:4,21:6,22:8,23:10,19:13,20:15},lh={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},ch={25:2,26:4,29:6,30:8,31:10,27:13,28:15},uh=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],Sn=class{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){let s=typeof t=="function"?t():t;I.log(`${this.time} [${e}] ${s}`)}}},wt=function(e){let t=[];for(let s=0;s<e.length;s++)t.push(e[s].toString(16));return t},Zs=class{constructor(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1}reset(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1}setStyles(e){let t=["foreground","underline","italics","background","flash"];for(let s=0;s<t.length;s++){let i=t[s];e.hasOwnProperty(i)&&(this[i]=e[i])}}isDefault(){return this.foreground==="white"&&!this.underline&&!this.italics&&this.background==="black"&&!this.flash}equals(e){return this.foreground===e.foreground&&this.underline===e.underline&&this.italics===e.italics&&this.background===e.background&&this.flash===e.flash}copy(e){this.foreground=e.foreground,this.underline=e.underline,this.italics=e.italics,this.background=e.background,this.flash=e.flash}toString(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash}},En=class{constructor(){this.uchar=" ",this.penState=new Zs}reset(){this.uchar=" ",this.penState.reset()}setChar(e,t){this.uchar=e,this.penState.copy(t)}setPenState(e){this.penState.copy(e)}equals(e){return this.uchar===e.uchar&&this.penState.equals(e.penState)}copy(e){this.uchar=e.uchar,this.penState.copy(e.penState)}isEmpty(){return this.uchar===" "&&this.penState.isDefault()}},Tn=class{constructor(e){this.chars=[],this.pos=0,this.currPenState=new Zs,this.cueStartTime=null,this.logger=void 0;for(let t=0;t<pt;t++)this.chars.push(new En);this.logger=e}equals(e){for(let t=0;t<pt;t++)if(!this.chars[t].equals(e.chars[t]))return!1;return!0}copy(e){for(let t=0;t<pt;t++)this.chars[t].copy(e.chars[t])}isEmpty(){let e=!0;for(let t=0;t<pt;t++)if(!this.chars[t].isEmpty()){e=!1;break}return e}
vendor: 38,561 bytes, lines 181-192
181setCursor(e){this.pos!==e&&(this.pos=e),this.pos<0?(this.logger.log(3,"Negative cursor position "+this.pos),this.pos=0):this.pos>pt&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=pt)}moveCursor(e){let t=this.pos+e;if(e>1)for(let s=this.pos+1;s<t+1;s++)this.chars[s].setPenState(this.currPenState);this.setCursor(t)}backSpace(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)}insertChar(e){e>=144&&this.backSpace();let t=Dl(e);if(this.pos>=pt){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<pt;t++)this.chars[t].reset()}clear(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()}clearToEndOfRow(){this.clearFromPos(this.pos)}getTextString(){let e=[],t=!0;for(let s=0;s<pt;s++){let i=this.chars[s].uchar;i!==" "&&(t=!1),e.push(i)}return t?"":e.join("")}setPenStyles(e){this.currPenState.setStyles(e),this.chars[this.pos].setPenState(this.currPenState)}},is=class{constructor(e){this.rows=[],this.currRow=rt-1,this.nrRollUpRows=null,this.lastOutputScreen=null,this.logger=void 0;for(let t=0;t<rt;t++)this.rows.push(new Tn(e));this.logger=e}reset(){for(let e=0;e<rt;e++)this.rows[e].clear();this.currRow=rt-1}equals(e){let t=!0;for(let s=0;s<rt;s++)if(!this.rows[s].equals(e.rows[s])){t=!1;break}return t}copy(e){for(let t=0;t<rt;t++)this.rows[t].copy(e.rows[t])}isEmpty(){let e=!0;for(let t=0;t<rt;t++)if(!this.rows[t].isEmpty()){e=!1;break}return e}backSpace(){this.rows[this.currRow].backSpace()}clearToEndOfRow(){this.rows[this.currRow].clearToEndOfRow()}insertChar(e){this.rows[this.currRow].insertChar(e)}setPen(e){this.rows[this.currRow].setPenStyles(e)}moveCursor(e){this.rows[this.currRow].moveCursor(e)}setCursor(e){this.logger.log(2,"setCursor: "+e),this.rows[this.currRow].setCursor(e)}setPAC(e){this.logger.log(2,()=>"pacData = "+JSON.stringify(e));let t=e.row-1;if(this.nrRollUpRows&&t<this.nrRollUpRows-1&&(t=this.nrRollUpRows-1),this.nrRollUpRows&&this.currRow!==t){for(let o=0;o<rt;o++)this.rows[o].clear();let r=this.currRow+1-this.nrRollUpRows,n=this.lastOutputScreen;if(n){let o=n.rows[r].cueStartTime,l=this.logger.time;if(o!==null&&l!==null&&o<l)for(let c=0;c<this.nrRollUpRows;c++)this.rows[t-this.nrRollUpRows+c+1].copy(n.rows[r+c])}}this.currRow=t;let s=this.rows[this.currRow];if(e.indent!==null){let r=e.indent,n=Math.max(r-1,0);s.setCursor(e.indent),e.color=s.chars[n].penState.foreground}let i={foreground:e.color,underline:e.underline,italics:e.italics,background:"black",flash:!1};this.setPen(i)}setBkgData(e){this.logger.log(2,()=>"bkgData = "+JSON.stringify(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());let 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;let t=[],s="",i=-1;for(let r=0;r<rt;r++){let n=this.rows[r].getTextString();n&&(i=r+1,e?t.push("Row "+i+": '"+n+"'"):t.push(n.trim()))}return t.length>0&&(e?s="["+t.join(" | ")+"]":s=t.join(`
182`)),s}getTextAndFormat(){return this.rows}},ei=class{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 is(s),this.nonDisplayedMemory=new is(s),this.lastOutputScreen=new is(s),this.currRollUpRow=this.displayedMemory.rows[rt-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[rt-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;s<e.length;s++)this.writeScreen.insertChar(e[s]);let t=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";this.logger.log(2,()=>t+": "+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"){let 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){let t={flash:!1};if(t.underline=e%2===1,t.italics=e>=46,t.italics)t.foreground="white";else{let s=Math.floor(e/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=i[s]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){let 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))}},ti=class{constructor(e,t,s){this.channels=void 0,this.currentChannel=0,this.cmdHistory=hh(),this.logger=void 0;let i=this.logger=new Sn;this.channels=[null,new ei(e,t,i),new ei(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.length;s+=2){let i=t[s]&127,r=t[s+1]&127,n=!1,o=null;if(i===0&&r===0)continue;this.logger.log(3,()=>"["+wt([t[s],t[s+1]])+"] -> ("+wt([i,r])+")");let l=this.cmdHistory;if(i>=16&&i<=31){if(dh(i,r,l)){xs(null,null,l),this.logger.log(3,()=>"Repeated command ("+wt([i,r])+") is dropped");continue}xs(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 xs(null,null,l);if(!n&&(o=this.parseChars(i,r),o)){let u=this.currentChannel;u&&u>0?this.channels[u].insertChars(o):this.logger.log(2,"No channel found yet. TEXT-MODE?")}!n&&!o&&this.logger.log(2,()=>"Couldn't parse cleaned data "+wt([i,r])+" orig: "+wt([t[s],t[s+1]]))}}parseCmd(e,t){let 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;let 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;let i=this.channels[s];return i?(i.ccMIDROW(t),this.logger.log(3,()=>"MIDROW ("+wt([e,t])+")"),!0):!1}return!1}parsePAC(e,t){let s,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;let n=e<=23?1:2;t>=64&&t<=95?s=n===1?ah[e]:lh[e]:s=n===1?oh[e]:ch[e];let o=this.channels[n];return o?(o.setPAC(this.interpretPAC(s,t)),this.currentChannel=n,!0):!1}interpretPAC(e,t){let s,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 '"+Dl(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 =  "+wt(i).join(",")),i}parseBackgroundAttributes(e,t){let 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,n={};e===16||e===24?(r=Math.floor((t-32)/2),n.background=uh[r],t%2===1&&(n.background=n.background+"_semi")):t===45?n.background="transparent":(n.foreground="black",t===47&&(n.underline=!0));let o=e<=23?1:2;return this.channels[o].setBkgData(n),!0}reset(){for(let e=0;e<Object.keys(this.channels).length;e++){let t=this.channels[e];t&&t.reset()}xs(null,null,this.cmdHistory)}cueSplitAtTime(e){for(let t=0;t<this.channels.length;t++){let s=this.channels[t];s&&s.cueSplitAtTime(e)}}};function xs(a,e,t){t.a=a,t.b=e}function dh(a,e,t){return t.a===a&&t.b===e}function hh(){return{a:null,b:null}}var Ht=class{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}},Yn=function(){if(Wt!=null&&Wt.VTTCue)return self.VTTCue;let a=["","lr","rl"],e=["start","middle","end","left","right"];function t(o,l){if(typeof l!="string"||!Array.isArray(o))return!1;let c=l.toLowerCase();return~o.indexOf(c)?c:!1}function s(o){return t(a,o)}function i(o){return t(e,o)}function r(o,...l){let c=1;for(;c<arguments.length;c++){let u=arguments[c];for(let d in u)o[d]=u[d]}return o}function n(o,l,c){let u=this,d={enumerable:!0};u.hasBeenReset=!1;let h="",m=!1,f=o,g=l,y=c,T=null,b="",A=!0,_="auto",L="start",U=50,C="middle",M=50,N="middle";Object.defineProperty(u,"id",r({},d,{get:function(){return h},set:function(F){h=""+F}})),Object.defineProperty(u,"pauseOnExit",r({},d,{get:function(){return m},set:function(F){m=!!F}})),Object.defineProperty(u,"startTime",r({},d,{get:function(){return f},set:function(F){if(typeof F!="number")throw new TypeError("Start time must be set to a number.");f=F,this.hasBeenReset=!0}})),Object.defineProperty(u,"endTime",r({},d,{get:function(){return g},set:function(F){if(typeof F!="number")throw new TypeError("End time must be set to a number.");g=F,this.hasBeenReset=!0}})),Object.defineProperty(u,"text",r({},d,{get:function(){return y},set:function(F){y=""+F,this.hasBeenReset=!0}})),Object.defineProperty(u,"region",r({},d,{get:function(){return T},set:function(F){T=F,this.hasBeenReset=!0}})),Object.defineProperty(u,"vertical",r({},d,{get:function(){return b},set:function(F){let H=s(F);if(H===!1)throw new SyntaxError("An invalid or illegal string was specified.");b=H,this.hasBeenReset=!0}})),Object.defineProperty(u,"snapToLines",r({},d,{get:function(){return A},set:function(F){A=!!F,this.hasBeenReset=!0}})),Object.defineProperty(u,"line",r({},d,{get:function(){return _},set:function(F){if(typeof F!="number"&&F!=="auto")throw new SyntaxError("An invalid number or illegal string was specified.");_=F,this.hasBeenReset=!0}})),Object.defineProperty(u,"lineAlign",r({},d,{get:function(){return L},set:function(F){let H=i(F);if(!H)throw new SyntaxError("An invalid or illegal string was specified.");L=H,this.hasBeenReset=!0}})),Object.defineProperty(u,"position",r({},d,{get:function(){return U},set:function(F){if(F<0||F>100)throw new Error("Position must be between 0 and 100.");U=F,this.hasBeenReset=!0}})),Object.defineProperty(u,"positionAlign",r({},d,{get:function(){return C},set:function(F){let H=i(F);if(!H)throw new SyntaxError("An invalid or illegal string was specified.");C=H,this.hasBeenReset=!0}})),Object.defineProperty(u,"size",r({},d,{get:function(){return M},set:function(F){if(F<0||F>100)throw new Error("Size must be between 0 and 100.");M=F,this.hasBeenReset=!0}})),Object.defineProperty(u,"align",r({},d,{get:function(){return N},set:function(F){let H=i(F);if(!H)throw new SyntaxError("An invalid or illegal string was specified.");N=H,this.hasBeenReset=!0}})),u.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}(),xn=class{decode(e,t){if(!e)return"";if(typeof e!="string")throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}};function _l(a){function e(s,i,r,n){return(s|0)*3600+(i|0)*60+(r|0)+parseFloat(n||0)}let 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}var bn=class{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<s.length;++i)if(t===s[i]){this.set(e,t);break}}integer(e,t){/^-?\d+$/.test(t)&&this.set(e,parseInt(t,10))}percent(e,t){if(/^([\d]{1,3})(\.[\d]*)?%$/.test(t)){let s=parseFloat(t);if(s>=0&&s<=100)return this.set(e,s),!0}return!1}};function kl(a,e,t,s){let i=s?a.split(s):[a];for(let r in i){if(typeof i[r]!="string")continue;let n=i[r].split(t);if(n.length!==2)continue;let o=n[0],l=n[1];e(o,l)}}var An=new Yn(0,0,""),bs=An.align==="middle"?"middle":"center";function fh(a,e,t){let s=a;function i(){let o=_l(a);if(o===null)throw new Error("Malformed timestamp: "+s);return a=a.replace(/^[^\sa-zA-Z-]+/,""),o}function r(o,l){let c=new bn;kl(o,function(h,m){let f;switch(h){case"region":for(let g=t.length-1;g>=0;g--)if(t[g].id===m){c.set(h,t[g].region);break}break;case"vertical":c.alt(h,m,["rl","lr"]);break;case"line":f=m.split(","),c.integer(h,f[0]),c.percent(h,f[0])&&c.set("snapToLines",!1),c.alt(h,f[0],["auto"]),f.length===2&&c.alt("lineAlign",f[1],["start",bs,"end"]);break;case"position":f=m.split(","),c.percent(h,f[0]),f.length===2&&c.alt("positionAlign",f[1],["start",bs,"end","line-left","line-right","auto"]);break;case"size":c.percent(h,m);break;case"align":c.alt(h,m,["start",bs,"end","left","right"]);break}},/:/,/\s/),l.region=c.get("region",null),l.vertical=c.get("vertical","");let u=c.get("line","auto");u==="auto"&&An.line===-1&&(u=-1),l.line=u,l.lineAlign=c.get("lineAlign","start"),l.snapToLines=c.get("snapToLines",!0),l.size=c.get("size",100),l.align=c.get("align",bs);let d=c.get("position","auto");d==="auto"&&An.position===50&&(d=l.align==="start"||l.align==="left"?0:l.align==="end"||l.align==="right"?100:50),l.position=d}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 Pl(a){return a.replace(/<br(?: \/)?>/gi,`
183`)}var Ln=class{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new xn,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){let t=this;e&&(t.buffer+=t.decoder.decode(e,{stream:!0}));function s(){let r=t.buffer,n=0;for(r=Pl(r);n<r.length&&r[n]!=="\r"&&r[n]!==`
184`;)++n;let o=r.slice(0,n);return r[n]==="\r"&&++n,r[n]===`
185`&&++n,t.buffer=r.slice(n),o}function i(r){kl(r,function(n,o){},/:/)}try{let r="";if(t.state==="INITIAL"){if(!/\r\n|\n/.test(t.buffer))return this;r=s();let o=r.match(/^()?WEBVTT([ \t].*)?$/);if(!(o!=null&&o[0]))throw new Error("Malformed WebVTT signature.");t.state="HEADER"}let n=!1;for(;t.buffer;){if(!/\r\n|\n/.test(t.buffer))return this;switch(n?n=!1:r=s(),t.state){case"HEADER":/:/.test(r)?i(r):r||(t.state="ID");continue;case"NOTE":r||(t.state="ID");continue;case"ID":if(/^NOTE($|[ \t])/.test(r)){t.state="NOTE";break}if(!r)continue;if(t.cue=new Yn(0,0,""),t.state="CUE",r.indexOf("-->")===-1){t.cue.id=r;continue}case"CUE":if(!t.cue){t.state="BADCUE";continue}try{fh(r,t.cue,t.regionList)}catch{t.cue=null,t.state="BADCUE";continue}t.state="CUETEXT";continue;case"CUETEXT":{let 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+=`
186`),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(){let e=this;try{if((e.cue||e.state==="HEADER")&&(e.buffer+=`
187
188`,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}},mh=/\r\n|\n\r|\n|\r/g,Ar=function(e,t,s=0){return e.slice(s,s+t.length)===t},gh=function(e){let t=parseInt(e.slice(-3)),s=parseInt(e.slice(-6,-4)),i=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!Z(t)||!Z(s)||!Z(i)||!Z(r))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*s,t+=60*1e3*i,t+=60*60*1e3*r,t},Lr=function(e){let t=5381,s=e.length;for(;s;)t=t*33^e.charCodeAt(--s);return(t>>>0).toString()};function zn(a,e,t){return Lr(a.toString())+Lr(e.toString())+Lr(t)}var ph=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 yh(a,e,t,s,i,r,n){let o=new Ln,l=ft(new Uint8Array(a)).trim().replace(mh,`
189`).split(`
190`),c=[],u=e?Xd(e.baseTime,e.timescale):0,d="00:00.000",h=0,m=0,f,g=!0;o.oncue=function(y){let T=t[s],b=t.ccOffset,A=(h-u)/9e4;if(T!=null&&T.new&&(m!==void 0?b=t.ccOffset=T.start:ph(t,s,A)),A){if(!e){f=new Error("Missing initPTS for VTT MPEGTS");return}b=A-t.presentationOffset}let _=y.endTime-y.startTime,L=Qe((y.startTime+b-m)*9e4,i*9e4)/9e4;y.startTime=Math.max(L,0),y.endTime=Math.max(L+_,0);let U=y.text.trim();y.text=decodeURIComponent(encodeURIComponent(U)),y.id||(y.id=zn(y.startTime,y.endTime,U)),y.endTime>0&&c.push(y)},o.onparsingerror=function(y){f=y},o.onflush=function(){if(f){n(f);return}r(c)},l.forEach(y=>{if(g)if(Ar(y,"X-TIMESTAMP-MAP=")){g=!1,y.slice(16).split(",").forEach(T=>{Ar(T,"LOCAL:")?d=T.slice(6):Ar(T,"MPEGTS:")&&(h=parseInt(T.slice(7)))});try{m=gh(d)/1e3}catch(T){f=T}return}else y===""&&(g=!1);o.parse(y+`
191`)}),o.flush()}var Ir="stpp.ttml.im1t",Ol=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Fl=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,vh={left:"start",center:"center",right:"end",start:"start",end:"end"};function Fo(a,e,t,s){let i=he(new Uint8Array(a),["mdat"]);if(i.length===0){s(new Error("Could not parse IMSC1 mdat"));return}let r=i.map(o=>ft(o)),n=zd(e.baseTime,1,e.timescale);try{r.forEach(o=>t(Sh(o,n)))}catch(o){s(o)}}function Sh(a,e){let i=new DOMParser().parseFromString(a,"text/xml").getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");let r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(r).reduce((d,h)=>(d[h]=i.getAttribute(`ttp:${h}`)||r[h],d),{}),o=i.getAttribute("xml:space")!=="preserve",l=Mo(Rr(i,"styling","style")),c=Mo(Rr(i,"layout","region")),u=Rr(i,"body","[begin]");return[].map.call(u,d=>{let h=Ml(d,o);if(!h||!d.hasAttribute("begin"))return null;let m=Cr(d.getAttribute("begin"),n),f=Cr(d.getAttribute("dur"),n),g=Cr(d.getAttribute("end"),n);if(m===null)throw No(d);if(g===null){if(f===null)throw No(d);g=m+f}let y=new Yn(m-e,g-e,h);y.id=zn(y.startTime,y.endTime,y.text);let T=c[d.getAttribute("region")],b=l[d.getAttribute("style")],A=Eh(T,b,l),{textAlign:_}=A;if(_){let L=vh[_];L&&(y.lineAlign=L),y.align=_}return Pe(y,A),y}).filter(d=>d!==null)}function Rr(a,e,t){let s=a.getElementsByTagName(e)[0];return s?[].slice.call(s.querySelectorAll(t)):[]}function Mo(a){return a.reduce((e,t)=>{let s=t.getAttribute("xml:id");return s&&(e[s]=t),e},{})}function Ml(a,e){return[].slice.call(a.childNodes).reduce((t,s,i)=>{var r;return s.nodeName==="br"&&i?t+`
192`:(r=s.childNodes)!=null&&r.length?Ml(s,e):e?t+s.textContent.trim().replace(/\s+/g," "):t+s.textContent},"")}function Eh(a,e,t){let s="http://www.w3.org/ns/ttml#styling",i=null,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,l)=>{let c=wr(e,s,l)||wr(a,s,l)||wr(i,s,l);return c&&(o[l]=c),o},{})}function wr(a,e,t){return a&&a.hasAttributeNS(e,t)?a.getAttributeNS(e,t):null}function No(a){return new Error(`Could not parse ttml timestamp ${a}`)}function Cr(a,e){if(!a)return null;let t=_l(a);return t===null&&(Ol.test(a)?t=Th(a,e):Fl.test(a)&&(t=xh(a,e))),t}function Th(a,e){let t=Ol.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 xh(a,e){let t=Fl.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}var In=class{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=Bo(),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(p.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(p.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(p.FRAG_LOADING,this.onFragLoading,this),e.on(p.FRAG_LOADED,this.onFragLoaded,this),e.on(p.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(p.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(p.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(p.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(p.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){let{hls:e}=this;e.off(p.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(p.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(p.FRAG_LOADING,this.onFragLoading,this),e.off(p.FRAG_LOADED,this.onFragLoaded,this),e.off(p.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(p.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(p.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(p.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(p.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){let e=new Ht(this,"textTrack1"),t=new Ht(this,"textTrack2"),s=new Ht(this,"textTrack3"),i=new Ht(this,"textTrack4");this.cea608Parser1=new ti(1,e,t),this.cea608Parser2=new ti(3,s,i)}}addCues(e,t,s,i,r){let n=!1;for(let o=r.length;o--;){let l=r[o],c=bh(l[0],l[1],t,s);if(c>=0&&(l[0]=Math.min(l[0],t),l[1]=Math.max(l[1],s),n=!0,c/(s-t)>.5))return}if(n||r.push([t,s]),this.config.renderTextTracksNatively){let o=this.captionsTracks[e];this.Cues.newCue(o,t,s,i)}else{let o=this.Cues.newCue(null,t,s,i);this.hls.trigger(p.CUES_PARSED,{type:"captions",cues:o,track:e})}}onInitPtsFound(e,{frag:t,id:s,initPTS:i,timescale:r}){let{unparsedVttFrags:n}=this;s==="main"&&(this.initPTS[t.cc]={baseTime:i,timescale:r}),n.length&&(this.unparsedVttFrags=[],n.forEach(o=>{this.onFragLoaded(p.FRAG_LOADED,o)}))}getExistingTrack(e,t){let{media:s}=this;if(s)for(let i=0;i<s.textTracks.length;i++){let r=s.textTracks[i];if(Uo(r,{name:e,lang:t,attrs:{}}))return r}return null}createCaptionsTrack(e){this.config.renderTextTracksNatively?this.createNativeTrack(e):this.createNonNativeTrack(e)}createNativeTrack(e){if(this.captionsTracks[e])return;let{captionsProperties:t,captionsTracks:s,media:i}=this,{label:r,languageCode:n}=t[e],o=this.getExistingTrack(r,n);if(o)s[e]=o,Gt(s[e]),nl(s[e],i);else{let l=this.createTextTrack("captions",r,n);l&&(l[e]=!0,s[e]=l)}}createNonNativeTrack(e){if(this.nonNativeCaptionsTracks[e])return;let t=this.captionsProperties[e];if(!t)return;let s=t.label,i={_id:e,label:s,kind:"captions",default:t.media?!!t.media.default:!1,closedCaptions:t.media};this.nonNativeCaptionsTracks[e]=i,this.hls.trigger(p.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:[i]})}createTextTrack(e,t,s){let i=this.media;if(i)return i.addTextTrack(e,t,s)}onMediaAttaching(e,t){this.media=t.media,this._cleanTracks()}onMediaDetaching(){let{captionsTracks:e}=this;Object.keys(e).forEach(t=>{Gt(e[t]),delete e[t]}),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=Bo(),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(){let{media:e}=this;if(!e)return;let t=e.textTracks;if(t)for(let s=0;s<t.length;s++)Gt(t[s])}onSubtitleTracksUpdated(e,t){let s=t.subtitleTracks||[],i=s.some(r=>r.textCodec===Ir);if(this.config.enableWebVTT||i&&this.config.enableIMSC1){if(Cl(this.tracks,s)){this.tracks=s;return}if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){let n=this.media,o=n?Is(n.textTracks):null;if(this.tracks.forEach((l,c)=>{let u;if(o){let d=null;for(let h=0;h<o.length;h++)if(o[h]&&Uo(o[h],l)){d=o[h],o[h]=null;break}d&&(u=d)}if(u)Gt(u);else{let d=Nl(l);u=this.createTextTrack(d,l.name,l.lang),u&&(u.mode="disabled")}u&&this.textTracks.push(u)}),o!=null&&o.length){let l=o.filter(c=>c!==null).map(c=>c.label);l.length&&I.warn(`Media element contains unused subtitle tracks: ${l.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){let n=this.tracks.map(o=>({label:o.name,kind:o.type.toLowerCase(),default:o.default,subtitleTrack:o}));this.hls.trigger(p.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:n})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach(s=>{let i=/(?:CC|SERVICE)([1-4])/.exec(s.instreamId);if(!i)return;let r=`textTrack${i[1]}`,n=this.captionsProperties[r];n&&(n.label=s.name,s.lang&&(n.languageCode=s.lang),n.media=s)})}closedCaptionsForLevel(e){let t=this.hls.levels[e.level];return t?.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===ne.MAIN){var s,i;let{cea608Parser1:r,cea608Parser2:n,lastSn:o}=this,{cc:l,sn:c}=t.frag,u=(s=(i=t.part)==null?void 0:i.index)!=null?s:-1;r&&n&&(c!==o+1||c===o&&u!==this.lastPartIndex+1||l!==this.lastCc)&&(r.reset(),n.reset()),this.lastCc=l,this.lastSn=c,this.lastPartIndex=u}}onFragLoaded(e,t){let{frag:s,payload:i}=t;if(s.type===ne.SUBTITLE)if(i.byteLength){let r=s.decryptdata,n="stats"in t;if(r==null||!r.encrypted||n){let o=this.tracks[s.level],l=this.vttCCs;l[s.cc]||(l[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),o&&o.textCodec===Ir?this._parseIMSC1(s,i):this._parseVTTs(t)}}else this.hls.trigger(p.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){let s=this.hls;Fo(t,this.initPTS[e.cc],i=>{this._appendCues(i,e.level),s.trigger(p.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})},i=>{I.log(`Failed to parse IMSC1: ${i}`),s.trigger(p.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:i})})}_parseVTTs(e){var t;let{frag:s,payload:i}=e,{initPTS:r,unparsedVttFrags:n}=this,o=r.length-1;if(!r[s.cc]&&o===-1){n.push(e);return}let l=this.hls,c=(t=s.initSegment)!=null&&t.data?et(s.initSegment.data,new Uint8Array(i)):i;yh(c,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,u=>{this._appendCues(u,s.level),l.trigger(p.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})},u=>{let d=u.message==="Missing initPTS for VTT MPEGTS";d?n.push(e):this._fallbackToIMSC1(s,i),I.log(`Failed to parse VTT cue: ${u}`),!(d&&o>s.cc)&&l.trigger(p.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:u})})}_fallbackToIMSC1(e,t){let s=this.tracks[e.level];s.textCodec||Fo(t,this.initPTS[e.cc],()=>{s.textCodec=Ir,this._parseIMSC1(e,t)},()=>{s.textCodec="wvtt"})}_appendCues(e,t){let s=this.hls;if(this.config.renderTextTracksNatively){let i=this.textTracks[t];if(!i||i.mode==="disabled")return;e.forEach(r=>al(i,r))}else{let i=this.tracks[t];if(!i)return;let r=i.default?"default":"subtitles"+t;s.trigger(p.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){let{frag:s}=t;s.type===ne.SUBTITLE&&this.onFragLoaded(p.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();let{cea608Parser1:s,cea608Parser2:i}=this;if(!this.enabled||!s||!i)return;let{frag:r,samples:n}=t;if(!(r.type===ne.MAIN&&this.closedCaptionsForLevel(r)==="NONE"))for(let o=0;o<n.length;o++){let l=n[o].bytes;if(l){let c=this.extractCea608Data(l);s.addData(n[o].pts,c[0]),i.addData(n[o].pts,c[1])}}}onBufferFlushing(e,{startOffset:t,endOffset:s,endOffsetSubtitles:i,type:r}){let{media:n}=this;if(!(!n||n.currentTime<s)){if(!r||r==="video"){let{captionsTracks:o}=this;Object.keys(o).forEach(l=>Nr(o[l],t,s))}if(this.config.renderTextTracksNatively&&t===0&&i!==void 0){let{textTracks:o}=this;Object.keys(o).forEach(l=>Nr(o[l],t,i))}}}extractCea608Data(e){let t=[[],[]],s=e[0]&31,i=2;for(let r=0;r<s;r++){let n=e[i++],o=127&e[i++],l=127&e[i++];if(o===0&&l===0)continue;if((4&n)!==0){let u=3&n;(u===0||u===1)&&(t[u].push(o),t[u].push(l))}}return t}};function Nl(a){return a.characteristics&&/transcribes-spoken-dialog/gi.test(a.characteristics)&&/describes-music-and-sound/gi.test(a.characteristics)?"captions":"subtitles"}function Uo(a,e){return!!a&&a.kind===Nl(e)&&dn(e,a)}function bh(a,e,t,s){return Math.min(e,s)-Math.max(a,t)}function Bo(){return{ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}}}var ds=class{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(){let{hls:e}=this;e.on(p.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(p.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(p.MANIFEST_PARSED,this.onManifestParsed,this),e.on(p.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(p.BUFFER_CODECS,this.onBufferCodecs,this),e.on(p.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){let{hls:e}=this;e.off(p.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(p.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(p.MANIFEST_PARSED,this.onManifestParsed,this),e.off(p.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(p.BUFFER_CODECS,this.onBufferCodecs,this),e.off(p.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){let 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){let s=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,s.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Z(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0){this.clientRect=null;return}let e=this.hls.levels;if(e.length){let t=this.hls,s=this.getMaxLevel(e.length-1);s!==this.autoLevelCapping&&I.log(`Setting autoLevelCapping to ${s}: ${e[s].height}p@${e[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=s,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){let t=this.hls.levels;if(!t.length)return-1;let s=t.filter((i,r)=>this.isLevelAllowed(i)&&r<=e);return this.clientRect=null,ds.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;let e=this.media,t={width:0,height:0};if(e){let 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 e}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;let i=(o,l)=>l?o.width!==l.width||o.height!==l.height:!0,r=e.length-1,n=Math.max(t,s);for(let o=0;o<e.length;o+=1){let l=e[o];if((l.width>=n||l.height>=n)&&i(l,e[o+1])){r=o;break}}return r}},Rn=class{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(p.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(p.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){let s=this.hls.config;if(s.capLevelOnFPSDrop){let 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)}}checkFPS(e,t,s){let i=performance.now();if(t){if(this.lastTime){let r=i-this.lastTime,n=s-this.lastDroppedFrames,o=t-this.lastDecodedFrames,l=1e3*n/r,c=this.hls;if(c.trigger(p.FPS_DROP,{currentDropped:n,currentDecoded:o,totalDroppedFrames:s}),l>0&&n>c.config.fpsDroppedMonitoringThreshold*o){let u=c.currentLevel;I.warn("drop FPS ratio greater than max allowed value for currentLevel: "+u),u>0&&(c.autoLevelCapping===-1||c.autoLevelCapping>=u)&&(u=u-1,c.trigger(p.FPS_DROP_LEVEL_CAPPING,{level:u,droppedLevel:c.currentLevel}),c.autoLevelCapping=u,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=s,this.lastDecodedFrames=t}}checkFPSInterval(){let e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){let t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}
192},As="[eme]",bt=class{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=bt.CDMCleanupPromise?[bt.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=I.debug.bind(I,As),this.log=I.log.bind(I,As),this.warn=I.warn.bind(I,As),this.error=I.error.bind(I,As),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();let e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(p.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(p.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(p.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(p.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(p.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(p.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(p.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(p.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){let{drmSystems:t,widevineLicenseUrl:s}=this.config,i=t[e];if(i)return i.licenseUrl;if(e===Le.WIDEVINE&&s)return s;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){let{drmSystems:t}=this.config,s=t[e];if(s)return s.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){let t=this.hls.levels,s=(n,o,l)=>!!n&&l.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)=>{let l=c=>{let u=c.shift();this.getMediaKeysPromise(u,i,r).then(d=>n({keySystem:u,mediaKeys:d})).catch(d=>{c.length?l(c):d instanceof We?o(d):o(new We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_NO_ACCESS,error:d,fatal:!0},d.message))})};l(e)})}requestMediaKeySystemAccess(e,t){let{requestMediaKeySystemAccessFunc:s}=this.config;if(typeof s!="function"){let i=`Configured requestMediaKeySystemAccess is not a function ${s}`;return jo===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){let i=hu(e,t,s,this.config.drmSystemOptions),r=this.keySystemAccessPromises[e],n=r?.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(i)}`),n=this.requestMediaKeySystemAccess(e,i);let o=this.keySystemAccessPromises[e]={keySystemAccess:n};return n.catch(l=>{this.log(`Failed to obtain access to key-system "${e}": ${l}`)}),n.then(l=>{this.log(`Access for key-system "${l.keySystem}" obtained`);let c=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),o.mediaKeys=l.createMediaKeys().then(u=>(this.log(`Media-keys created for "${e}"`),c.then(d=>d?this.setMediaKeysServerCertificate(u,e,d):u))),o.mediaKeys.catch(u=>{this.error(`Failed to create media-keys for "${e}"}: ${u}`)}),o.mediaKeys})}return n.then(()=>r.mediaKeys)}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:s}){this.log(`Creating key-system session "${t}" keyId: ${ct.hexDump(e.keyId||[])}`);let i=s.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:s,mediaKeysSession:i,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){let t=e.decryptdata;if(t.pssh){let s=this.createMediaKeySessionContext(e),i=this.getKeyIdString(t),r="cenc";this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(s,r,t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(e.keyId===null)throw new Error("keyId is null");return ct.hexDump(e.keyId)}updateKeySession(e,t){var s;let i=e.mediaKeysSession;return this.log(`Updating key-session "${i.sessionId}" for keyID ${ct.hexDump(((s=e.decryptdata)==null?void 0:s.keyId)||[])}
193      } (data length: ${t&&t.byteLength})`),i.update(t)}selectKeySystemFormat(e){let 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){return new Promise((t,s)=>{let i=hr(this.config),r=e.map(Ja).filter(n=>!!n&&i.indexOf(n)!==-1);return this.getKeySystemSelectionPromise(r).then(({keySystem:n})=>{let o=Za(n);o?t(o):s(new Error(`Unable to find format for key-system "${n}"`))}).catch(s)})}loadKey(e){let t=e.keyInfo.decryptdata,s=this.getKeyIdString(t),i=`(keyId: ${s} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${i}`);let r=this.keyIdToKeySessionPromise[s];return r||(r=this.keyIdToKeySessionPromise[s]=this.getKeySystemForKeyPromise(t).then(({keySystem:n,mediaKeys:o})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${i}`),this.attemptSetMediaKeys(n,o).then(()=>{this.throwIfDestroyed();let l=this.createMediaKeySessionContext({keySystem:n,mediaKeys:o,decryptdata:t}),c="cenc";return this.generateRequestWithPreferredKeySession(l,c,t.pssh,"playlist-key")}))),r.catch(n=>this.handleError(n))),r}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof We?this.hls.trigger(p.ERROR,e.data):this.hls.trigger(p.ERROR,{type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}
193getKeySystemForKeyPromise(e){let t=this.getKeyIdString(e),s=this.keyIdToKeySessionPromise[t];if(!s){let i=Ja(e.keyFormat),r=i?[i]:hr(this.config);return this.attemptKeySystemAccess(r)}return s}getKeySystemSelectionPromise(e){if(e.length||(e=hr(this.config)),e.length===0)throw new We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}_onMediaEncrypted(e){let{initDataType:t,initData:s}=e,i=`"${e.type}" event: init data type: "${t}"`;if(this.debug(i),s===null)return;let r,n;if(t==="sinf"&&this.config.drmSystems[Le.FAIRPLAY]){let d=Oe(new Uint8Array(s));try{let h=$n(JSON.parse(d).sinf),m=el(new Uint8Array(h));if(!m)throw new Error("'schm' box missing or not cbcs/cenc with schi > tenc");r=m.subarray(8,24),n=Le.FAIRPLAY}catch(h){this.warn(`${i} Failed to parse sinf: ${h}`);return}}else{let d=Nu(s),h=d.filter(m=>m.systemId===es.WIDEVINE)[0];if(!h){d.length===0||d.some(m=>!m.systemId)?this.warn(`${i} contains incomplete or invalid pssh data`):this.log(`ignoring ${i} for ${d.map(m=>Qa(m.systemId)).join(",")} pssh data in favor of playlist keys`);return}if(n=Qa(h.systemId),h.version===0&&h.data){let m=h.data.length-22;r=h.data.subarray(m,m+16)}}if(!n||!r)return;let o=ct.hexDump(r),{keyIdToKeySessionPromise:l,mediaKeySessions:c}=this,u=l[o];for(let d=0;d<c.length;d++){let h=c[d],m=h.decryptdata;if(!m.keyId)continue;let f=ct.hexDump(m.keyId);if(o===f||m.uri.replace(/-/g,"").indexOf(o)!==-1){if(u=l[f],m.pssh)break;delete l[f],m.pssh=new Uint8Array(s),m.keyId=r,u=l[o]=u.then(()=>this.generateRequestWithPreferredKeySession(h,t,s,"encrypted-event-key-match"));break}}u||(u=l[o]=this.getKeySystemSelectionPromise([n]).then(({keySystem:d,mediaKeys:h})=>{var m;this.throwIfDestroyed();let f=new kt("ISO-23001-7",o,(m=Za(d))!=null?m:"");return f.pssh=new Uint8Array(s),f.keyId=r,this.attemptSetMediaKeys(d,h).then(()=>{this.throwIfDestroyed();let g=this.createMediaKeySessionContext({decryptdata:f,keySystem:d,mediaKeys:h});return this.generateRequestWithPreferredKeySession(g,t,s,"encrypted-event-no-match")})})),u.catch(d=>this.handleError(d))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){let s=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);let i=Promise.all(s).then(()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)});return 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,n;let o=(r=this.config.drmSystems)==null||(n=r[e.keySystem])==null?void 0:n.generateRequest;if(o)try{let f=o.call(this.hls,t,s,e);if(!f)throw new Error("Invalid response from configured generateRequest filter");t=f.initDataType,s=e.decryptdata.pssh=f.initData?new Uint8Array(f.initData):null}catch(f){var l;if(this.warn(f.message),(l=this.hls)!=null&&l.config.debug)throw f}if(s===null)return this.log(`Skipping key-session request for "${i}" (no initData)`),Promise.resolve(e);let c=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${i}": ${c} (init data type: ${t} length: ${s?s.byteLength:null})`);let u=new Wn,d=e._onmessage=f=>{let g=e.mediaKeysSession;if(!g){u.emit("error",new Error("invalid state"));return}let{messageType:y,message:T}=f;this.log(`"${y}" message event for session "${g.sessionId}" message size: ${T.byteLength}`),y==="license-request"||y==="license-renewal"?this.renewLicense(e,T).catch(b=>{this.handleError(b),u.emit("error",b)}):y==="license-release"?e.keySystem===Le.FAIRPLAY&&(this.updateKeySession(e,Or("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${y}"`)},h=e._onkeystatuseschange=f=>{if(!e.mediaKeysSession){u.emit("error",new Error("invalid state"));return}this.onKeyStatusChange(e);let y=e.keyStatus;u.emit("keyStatus",y),y==="expired"&&(this.warn(`${e.keySystem} expired for key ${c}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",d),e.mediaKeysSession.addEventListener("keystatuseschange",h);let m=new Promise((f,g)=>{u.on("error",g),u.on("keyStatus",y=>{y.startsWith("usable")?f():y==="output-restricted"?g(new We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):y==="internal-error"?g(new We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${y}"`)):y==="expired"?g(new Error("key expired while generating request")):this.warn(`unhandled key status change "${y}"`)})});return e.mediaKeysSession.generateRequest(t,s).then(()=>{var f;this.log(`Request generated for key-session "${(f=e.mediaKeysSession)==null?void 0:f.sessionId}" keyId: ${c}`)}).catch(f=>{throw new We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_NO_SESSION,error:f,fatal:!1},`Error generating key-session request: ${f}`)}).then(()=>m).catch(f=>{throw u.removeAllListeners(),this.removeSession(e),f}).then(()=>(u.removeAllListeners(),e))}
vendor: 4,863 bytes, line 193
193onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach((t,s)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${ct.hexDump("buffer"in s?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):new Uint8Array(s))} session keyId: ${ct.hexDump(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t})}fetchServerCertificate(e){let 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)=>{let l={responseType:"arraybuffer",url:r},c=t.certLoadPolicy.default,u={loadPolicy:c,timeout:c.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(h,m,f,g)=>{n(h.data)},onError:(h,m,f,g)=>{o(new We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:f,response:Be({url:l.url,data:void 0},h)},`"${e}" certificate request failed (${r}). Status: ${h.code} (${h.text})`))},onTimeout:(h,m,f)=>{o(new We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:f,response:{url:l.url,data:void 0}},`"${e}" certificate request timed out (${r})`))},onAbort:(h,m,f)=>{o(new Error("aborted"))}};i.load(l,u,d)})):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 We({type:le.KEY_SYSTEM_ERROR,details:D.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 We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:i,fatal:!0},i.message)}))}unpackPlayReadyKeyMessage(e,t){let s=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!s.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;let i=new DOMParser().parseFromString(s,"application/xml"),r=i.querySelectorAll("HttpHeader");if(r.length>0){let u;for(let d=0,h=r.length;d<h;d++){var n,o;u=r[d];let m=(n=u.querySelector("name"))==null?void 0:n.textContent,f=(o=u.querySelector("value"))==null?void 0:o.textContent;m&&f&&e.setRequestHeader(m,f)}}let l=i.querySelector("Challenge"),c=l?.textContent;if(!c)throw new Error("Cannot find <Challenge> in key message");return Or(atob(c))}setupLicenseXHR(e,t,s,i){let 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){let s=this.config.keyLoadPolicy.default;return new Promise((i,r)=>{let n=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${n}`);let 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 l=o.response;this.log(`License received ${l instanceof ArrayBuffer?l.byteLength:l}`);let c=this.config.licenseResponseCallback;if(c)try{l=c.call(this.hls,o,n,e)}catch(u){this.error(u)}i(l)}else{let l=s.errorRetry,c=l?l.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>c||o.status>=400&&o.status<500)r(new We({type:le.KEY_SYSTEM_ERROR,details:D.KEY_SYSTEM_LICENSE_REQUEST_FAILED,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{let u=c-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${u} 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:l,licenseChallenge:c})=>{e.keySystem==Le.PLAYREADY&&(c=this.unpackPlayReadyKeyMessage(l,c)),l.send(c)})})}onMediaAttached(e,t){if(!this.config.emeEnabled)return;let s=t.media;this.media=s,s.addEventListener("encrypted",this.onMediaEncrypted),s.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){let e=this.media,t=this.mediaKeySessions;e&&(e.removeEventListener("encrypted",this.onMediaEncrypted),e.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},kt.clearKeyUriToKeyIdMap();let s=t.length;bt.CDMCleanupPromise=Promise.all(t.map(i=>
193this.removeSession(i)).concat(e?.setMediaKeys(null).catch(i=>{this.log(`Could not clear media keys: ${i}`)}))).then(()=>{s&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)}).catch(i=>{this.log(`Could not close sessions and clear media keys: ${i}`)})}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(!(!t||!this.config.emeEnabled)&&!this.keyFormatPromise){let 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){let{mediaKeysSession:t,licenseXhr:s}=e;if(t){this.log(`Remove licenses and keys and close session ${t.sessionId}`),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;let i=this.mediaKeySessions.indexOf(e);return i>-1&&this.mediaKeySessions.splice(i,1),t.remove().catch(r=>{this.log(`Could not remove session: ${r}`)}).then(()=>t.close()).catch(r=>{this.log(`Could not close session: ${r}`)})}}};bt.CDMCleanupPromise=void 0;var We=class 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}},He;(function(a){a.MANIFEST="m",a.AUDIO="a",a.VIDEO="v",a.MUXED="av",a.INIT="i",a.CAPTION="c",a.TIMED_TEXT="tt",a.KEY="k",a.OTHER="o"})(He||(He={}));var wn;(function(a){a.DASH="d",a.HLS="h",a.SMOOTH="s",a.OTHER="o"})(wn||(wn={}));var Dt;(function(a){a.OBJECT="CMCD-Object",a.REQUEST="CMCD-Request",a.SESSION="CMCD-Session",a.STATUS="CMCD-Status"})(Dt||(Dt={}));var Ah={[Dt.OBJECT]:["br","d","ot","tb"],[Dt.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[Dt.SESSION]:["cid","pr","sf","sid","st","v"],[Dt.STATUS]:["bs","rtp"]},Lt=class{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map(s=>s instanceof Lt?s:new Lt(s))),this.value=e,this.params=t}},si=class{constructor(e){this.description=void 0,this.description=e}},Lh="Dict";function Ih(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 Rh(a,e,t,s){return new Error(`failed to ${a} "${Ih(e)}" as ${t}`,{cause:s})}var $o="Bare Item",wh="Boolean",Ch="Byte Sequence",Dh="Decimal",_h="Integer";function kh(a){return a<-999999999999999||999999999999999<a}var Ph=/[\x00-\x1f\x7f]+/,Oh="Token",Fh="Key";function mt(a,e,t){return Rh("serialize",a,e,t)}function Mh(a){if(typeof a!="boolean")throw mt(a,wh);return a?"?1":"?0"}function Nh(a){return btoa(String.fromCharCode(...a))}function Uh(a){if(ArrayBuffer.isView(a)===!1)throw mt(a,Ch);return`:${Nh(a)}:`}function Ul(a){if(kh(a))throw mt(a,_h);return a.toString()}function Bh(a){return`@${Ul(a.getTime()/1e3)}`}function Bl(a,e){if(a<0)return-Bl(-a,e);let t=Math.pow(10,e);if(Math.abs(a*t%1-.5)<Number.EPSILON){let i=Math.floor(a*t);return(i%2===0?i:i+1)/t}else return Math.round(a*t)/t}function $h(a){let e=Bl(a,3);if(Math.floor(Math.abs(e)).toString().length>12)throw mt(a,Dh);let t=e.toString();return t.includes(".")?t:`${t}.0`}var qh="String";function Gh(a){if(Ph.test(a))throw mt(a,qh);return`"${a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Hh(a){return a.description||a.toString().slice(7,-1)}function qo(a){let e=Hh(a);if(/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e)===!1)throw mt(e,Oh);return e}function Cn(a){switch(typeof a){case"number":if(!Z(a))throw mt(a,$o);return Number.isInteger(a)?Ul(a):$h(a);case"string":return Gh(a);case"symbol":return qo(a);case"boolean":return Mh(a);case"object":if(a instanceof Date)return Bh(a);if(a instanceof Uint8Array)return Uh(a);if(a instanceof si)return qo(a);default:throw mt(a,$o)}}function Dn(a){if(/^[a-z*][a-z0-9\-_.*]*$/.test(a)===!1)throw mt(a,Fh);return a}function Xn(a){return a==null?"":Object.entries(a).map(([e,t])=>t===!0?`;${Dn(e)}`:`;${Dn(e)}=${Cn(t)}`).join("")}function $l(a){return a instanceof Lt?`${Cn(a.value)}${Xn(a.params)}`:Cn(a)}function Kh(a){return`(${a.value.map($l).join(" ")})${Xn(a.params)}`}function Vh(a,e={whitespace:!0}){if(typeof a!="object")throw mt(a,Lh);let t=a instanceof Map?a.entries():Object.entries(a),s=e!=null&&e.whitespace?" ":"";return Array.from(t).map(([i,r])=>{r instanceof Lt||(r=new Lt(r));let n=Dn(i);return r.value===!0?n+=Xn(r.params):(n+="=",Array.isArray(r.value)?n+=Kh(r):n+=$l(r)),n}).join(`,${s}`)}function jh(a,e){return Vh(a,e)}var Wh=a=>a==="ot"||a==="sf"||a==="st",Yh=a=>typeof a=="number"?Z(a):a!=null&&a!==""&&a!==!1;function zh(a,e){let t=new URL(a),s=new URL(e);if(t.origin!==s.origin)return a;let 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("/")}function Xh(){try{return crypto.randomUUID()}catch{try{let 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=>{let r=(t+Math.random()*16)%16|0;return t=Math.floor(t/16),(i=="x"?r:r&3|8).toString(16)})}}}var _s=a=>Math.round(a),Jh=(a,e)=>(e!=null&&e.baseUrl&&(a=zh(a,e.baseUrl)),encodeURIComponent(a)),Ls=a=>_s(a/100)*100,Qh={br:_s,d:_s,bl:Ls,dl:Ls,mtp:Ls,nor:Jh,rtp:Ls,tb:_s};function Zh(a,e){let t={};if(a==null||typeof a!="object")return t;let s=Object.keys(a).sort(),i=Pe({},Qh,e?.formatters),r=e?.filter;
193return s.forEach(n=>{if(r!=null&&r(n))return;let o=a[n],l=i[n];l&&(o=l(o,e)),!(n==="v"&&o===1)&&(n=="pr"&&o===1||Yh(o)&&(Wh(n)&&typeof o=="string"&&(o=new si(o)),t[n]=o))}),t}function ql(a,e={}){return a?jh(Zh(a,e),Pe({whitespace:!1},e)):""}function ef(a,e={}){if(!a)return{};let t=Object.entries(a),s=Object.entries(Ah).concat(Object.entries(e?.customHeaderMap||{})),i=t.reduce((r,n)=>{var o,l;let[c,u]=n,d=((o=s.find(h=>h[1].includes(c)))==null?void 0:o[0])||Dt.REQUEST;return(l=r[d])!=null||(r[d]={}),r[d][c]=u,r},{});return Object.entries(i).reduce((r,[n,o])=>(r[n]=ql(o,e),r),{})}function tf(a,e,t){return Pe(a,ef(e,t))}var sf="CMCD";function rf(a,e={}){if(!a)return"";let t=ql(a,e);return`${sf}=${encodeURIComponent(t)}`}var Go=/CMCD=[^&#]+/;function nf(a,e,t){let s=rf(e,t);if(!s)return a;if(Go.test(a))return a.replace(Go,s);let i=a.includes("?")?"&":"?";return`${a}${i}${s}`}var _n=class{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:He.MANIFEST,su:!this.initialized})}catch(r){I.warn("Could not generate manifest CMCD data.",r)}},this.applyFragmentData=i=>{try{let r=i.frag,n=this.hls.levels[r.level],o=this.getObjectType(r),l={d:r.duration*1e3,ot:o};(o===He.VIDEO||o===He.AUDIO||o==He.MUXED)&&(l.br=n.bitrate/1e3,l.tb=this.getTopBandwidth(o)/1e3,l.bl=this.getBufferLength(o)),this.apply(i,l)}catch(r){I.warn("Could not generate segment CMCD data.",r)}},this.hls=e;let t=this.config=e.config,{cmcd:s}=t;s!=null&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=s.sessionId||Xh(),this.cid=s.contentId,this.useHeaders=s.useHeaders===!0,this.includeKeys=s.includeKeys,this.registerListeners())}registerListeners(){let e=this.hls;e.on(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(p.MEDIA_DETACHED,this.onMediaDetached,this),e.on(p.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){let e=this.hls;e.off(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(p.MEDIA_DETACHED,this.onMediaDetached,this),e.off(p.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=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:wn.HLS,sid:this.sid,cid:this.cid,pr:(e=this.media)==null?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Pe(t,this.createData());let s=t.ot===He.INIT||t.ot===He.VIDEO||t.ot===He.MUXED;this.starved&&s&&(t.bs=!0,t.su=!0,this.starved=!1),t.su==null&&(t.su=this.buffering);let{includeKeys:i}=this;i&&(t=Object.keys(t).reduce((r,n)=>(i.includes(n)&&(r[n]=t[n]),r),{})),this.useHeaders?(e.headers||(e.headers={}),tf(e.headers,t)):e.url=nf(e.url,t)}getObjectType(e){let{type:t}=e;if(t==="subtitle")return He.TIMED_TEXT;if(e.sn==="initSegment")return He.INIT;if(t==="audio")return He.AUDIO;if(t==="main")return this.hls.audioTracks.length?He.VIDEO:He.MUXED}getTopBandwidth(e){let t=0,s,i=this.hls;if(e===He.AUDIO)s=i.audioTracks;else{let r=i.maxAutoLevel,n=r>-1?r+1:i.levels.length;s=i.levels.slice(0,n)}for(let r of s)r.bitrate>t&&(t=r.bitrate);return t>0?t:NaN}getBufferLength(e){let t=this.hls.media,s=e===He.AUDIO?this.audioBuffer:this.videoBuffer;return!s||!t?NaN:xe.bufferInfo(s,t.currentTime,this.config.maxBufferHole).len*1e3}createPlaylistLoader(){let{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(){let{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)}}}},af=3e5,kn=class{constructor(e){this.hls=void 0,this.log=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.log=I.log.bind(I,"[content-steering]:"),this.registerListeners()}registerListeners(){let e=this.hls;e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(p.MANIFEST_PARSED,this.onManifestParsed,this),e.on(p.ERROR,this.onError,this)}unregisterListeners(){let e=this.hls;e&&(e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(p.MANIFEST_PARSED,this.onManifestParsed,this),e.off(p.ERROR,this.onError,this))}
vendor: 7,910 bytes, line 193
193startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){let 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){let 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){let{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){let{errorAction:s}=t;if(s?.action===Ne.SendAlternateToPenaltyBox&&s.flags===it.MoveAllAlternatesMatchingHost){let i=this.levels,r=this.pathwayPriority,n=this.pathwayId;if(t.context){let{groupId:o,pathwayId:l,type:c}=t.context;o&&i?n=this.getPathwayForGroupId(o,c,n):l&&(n=l)}n in this.penalizedPathways||(this.penalizedPathways[n]=performance.now()),!r&&i&&(r=i.reduce((o,l)=>(o.indexOf(l.pathwayId)===-1&&o.push(l.pathwayId),o),[])),r&&r.length>1&&(this.updatePathwayPriority(r),s.resolved=this.pathwayId!==n),s.resolved||I.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${n} levels: ${i&&i.length} priorities: ${JSON.stringify(r)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(t.length===0){let 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,s=this.penalizedPathways,i=performance.now();Object.keys(s).forEach(r=>{i-s[r]>af&&delete s[r]});for(let r=0;r<e.length;r++){let n=e[r];if(n in s)continue;if(n===this.pathwayId)return;let o=this.hls.nextLoadLevel,l=this.hls.levels[o];if(t=this.getLevelsForPathway(n),t.length>0){this.log(`Setting Pathway to "${n}"`),this.pathwayId=n,ul(t),this.hls.trigger(p.LEVELS_UPDATED,{levels:t});let c=this.hls.levels[o];l&&c&&this.levels&&(c.attrs["STABLE-VARIANT-ID"]!==l.attrs["STABLE-VARIANT-ID"]&&c.bitrate!==l.bitrate&&this.log(`Unstable Pathways change from bitrate ${l.bitrate} to ${c.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,s){let i=this.getLevelsForPathway(s).concat(this.levels||[]);for(let r=0;r<i.length;r++)if(t===ye.AUDIO_TRACK&&i[r].hasAudioGroup(e)||t===ye.SUBTITLE_TRACK&&i[r].hasSubtitleGroup(e))return i[r].pathwayId;return s}clonePathways(e){let t=this.levels;if(!t)return;let s={},i={};e.forEach(r=>{let{ID:n,"BASE-ID":o,"URI-REPLACEMENT":l}=r;if(t.some(u=>u.pathwayId===n))return;let c=this.getLevelsForPathway(o).map(u=>{let d=new Re(u.attrs);d["PATHWAY-ID"]=n;let h=d.AUDIO&&`${d.AUDIO}_clone_${n}`,m=d.SUBTITLES&&`${d.SUBTITLES}_clone_${n}`;h&&(s[d.AUDIO]=h,d.AUDIO=h),m&&(i[d.SUBTITLES]=m,d.SUBTITLES=m);let f=Gl(u.uri,d["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",l),g=new At({attrs:d,audioCodec:u.audioCodec,bitrate:u.bitrate,height:u.height,name:u.name,url:f,videoCodec:u.videoCodec,width:u.width});if(u.audioGroups)for(let y=1;y<u.audioGroups.length;y++)g.addGroupId("audio",`${u.audioGroups[y]}_clone_${n}`);if(u.subtitleGroups)for(let y=1;y<u.subtitleGroups.length;y++)g.addGroupId("text",`${u.subtitleGroups[y]}_clone_${n}`);return g});t.push(...c),Ho(this.audioTracks,s,l,n),Ho(this.subtitleTracks,i,l,n)})}loadSteeringManifest(e){let t=this.hls.config,s=t.loader;this.loader&&this.loader.destroy(),this.loader=new s(t);let i;try{i=new self.URL(e)}catch{this.enabled=!1,this.log(`Failed to parse Steering Manifest URI: ${e}`);return}if(i.protocol!=="data:"){let u=(this.hls.bandwidthEstimate||t.abrEwmaDefaultEstimate)|0;i.searchParams.set("_HLS_pathway",this.pathwayId),i.searchParams.set("_HLS_throughput",""+u)}let r={responseType:"json",url:i.href},n=t.steeringManifestLoadPolicy.default,o=n.errorRetry||n.timeoutRetry||{},l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:o.maxNumRetry||0,retryDelay:o.retryDelayMs||0,maxRetryDelay:o.maxRetryDelayMs||0},c={onSuccess:(u,d,h,m)=>{this.log(`Loaded steering manifest: "${i}"`);let f=u.data;if(f.VERSION!==1){this.log(`Steering VERSION ${f.VERSION} not supported!`);return}this.updated=performance.now(),this.timeToLoad=f.TTL;let{"RELOAD-URI":g,"PATHWAY-CLONES":y,"PATHWAY-PRIORITY":T}=f;if(g)try{this.uri=new self.URL(g,i).href}catch{this.enabled=!1,this.log(`Failed to parse Steering Manifest RELOAD-URI: ${g}`);return}this.scheduleRefresh(this.uri||h.url),y&&this.clonePathways(y);let b={steeringManifest:f,url:i.toString()};this.hls.trigger(p.STEERING_MANIFEST_LOADED,b),T&&this.updatePathwayPriority(T)},onError:(u,d,h,m)=>{if(this.log(`Error loading steering manifest: ${u.code} ${u.text} (${d.url})`),this.stopLoad(),u.code===410){this.enabled=!1,this.log(`Steering manifest ${d.url} no longer available`);return}let f=this.timeToLoad*1e3;if(u.code===429){let g=this.loader;if(typeof g?.getResponseHeader=="function"){let y=g.getResponseHeader("Retry-After");y&&(f=parseFloat(y)*1e3)}this.log(`Steering manifest ${d.url} rate limited`);return}this.scheduleRefresh(this.uri||d.url,f)},onTimeout:(u,d,h)=>{this.log(`Timeout loading steering manifest (${d.url})`),this.scheduleRefresh(this.uri||d.url)}};this.log(`Requesting steering manifest: ${i}`),this.loader.load(r,l,c)}scheduleRefresh(e,t=this.timeToLoad*1e3){this.clearTimeout(),this.reloadTimer=self.setTimeout(()=>{var s;let 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 Ho(a,e,t,s){a&&Object.keys(e).forEach(i=>{let r=a.filter(n=>n.groupId===i).map(n=>{let o=Pe({},n);return o.details=void 0,o.attrs=new Re(o.attrs),o.url=o.attrs.URI=Gl(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 Gl(a,e,t,s){let{HOST:i,PARAMS:r,[t]:n}=s,o;e&&(o=n?.[e],o&&(a=o));let l=new self.URL(a);return i&&!o&&(l.host=i),r&&Object.keys(r).sort().forEach(c=>{c&&l.searchParams.set(c,r[c])}),l.href}var of=/^age:\s*[\d.]+\s*$/im,ii=class{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 jt,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){let 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(){let{config:e,context:t}=this;if(!e||!t)return;let s=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0,i.aborted=!1;let r=this.xhrSetup;r?Promise.resolve().then(()=>
193{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=>{this.callbacks.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);let i=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:n}=s.loadPolicy;if(i)for(let 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&&Z(r)?r:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),e.send()}readystatechange(){let{context:e,loader:t,stats:s}=this;if(!e||!t)return;let 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;let n=t.status,o=t.responseType!=="text";if(n>=200&&n<300&&(o&&t.response||t.responseText!==null)){s.loading.end=Math.max(self.performance.now(),s.loading.first);let l=o?t.response:t.responseText,c=t.responseType==="arraybuffer"?l.byteLength:l.length;if(s.loaded=s.total=c,s.bwEstimate=s.total*8e3/(s.loading.end-s.loading.first),!this.callbacks)return;let u=this.callbacks.onProgress;if(u&&u(s,e,l,t),!this.callbacks)return;let d={url:t.responseURL,data:l,code:n};this.callbacks.onSuccess(d,s,e,t)}else{let l=r.loadPolicy.errorRetry,c=s.retry,u={url:e.url,data:void 0,code:n};Gs(l,c,!1,u)?this.retry(l):(I.error(`${n} while loading ${e.url}`),this.callbacks.onError({code:n,text:t.statusText},e,t,s))}}}loadtimeout(){if(!this.config)return;let e=this.config.loadPolicy.timeoutRetry,t=this.stats.retry;if(Gs(e,t,!0))this.retry(e);else{var s;I.warn(`timeout while loading ${(s=this.context)==null?void 0:s.url}`);let i=this.callbacks;i&&(this.abortInternal(),i.onTimeout(this.stats,this.context,this.loader))}}retry(e){let{context:t,stats:s}=this;this.retryDelay=Hn(e,s.retry),s.retry++,I.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){let t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&of.test(this.loader.getAllResponseHeaders())){let 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}};function lf(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch{}return!1}var cf=/(\d+)-(\d+)\/(\d+)/,ri=class{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||ff,this.controller=new self.AbortController,this.stats=new jt}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){let i=this.stats;if(i.loading.start)throw new Error("Loader can only be used once.");i.loading.start=self.performance.now();let r=uf(e,this.controller.signal),n=s.onProgress,o=e.responseType==="arraybuffer",l=o?"byteLength":"length",{maxTimeToFirstByteMs:c,maxLoadTimeMs:u}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=s,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=c&&Z(c)?c:u,this.requestTimeout=self.setTimeout(()=>{this.abortInternal(),s.onTimeout(i,e,this.response)},t.timeout),self.fetch(this.request).then(d=>{this.response=this.loader=d;let h=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=u,this.requestTimeout=self.setTimeout(()=>{this.abortInternal(),s.onTimeout(i,e,this.response)},u-(h-i.loading.start)),!d.ok){let{status:m,statusText:f}=d;throw new Pn(f||"fetch, bad network response",m,d)}return i.loading.first=h,i.total=hf(d.headers)||i.total,n&&Z(t.highWaterMark)?this.loadProgressively(d,i,e,t.highWaterMark,n):o?d.arrayBuffer():e.responseType==="json"?d.json():d.text()}).then(d=>{let h=this.response;if(!h)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);let m=d[l];m&&(i.loaded=i.total=m);let f={url:h.url,data:d,code:h.status};n&&!Z(t.highWaterMark)&&n(i,e,d,h),s.onSuccess(f,i,e,h)}).catch(d=>{if(self.clearTimeout(this.requestTimeout),i.aborted)return;let h=d&&d.code||0,m=d?d.message:null;s.onError({code:h,text:m},e,d?d.details:null,i)})}getCacheAge(){let e=null;if(this.response){let 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){let n=new Vs,o=e.body.getReader(),l=()=>o.read().then(c=>{if(c.done)return n.dataLength&&r(t,s,n.flush(),e),Promise.resolve(new ArrayBuffer(0));let u=c.value,d=u.length;return t.loaded+=d,d<i||n.dataLength?(n.push(u),n.dataLength>=i&&r(t,s,n.flush(),e)):r(t,s,u,e),l()}).catch(()=>Promise.reject());return l()}};function uf(a,e){let t={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(Pe({},a.headers))};return a.rangeEnd&&t.headers.set("Range","bytes="+a.rangeStart+"-"+String(a.rangeEnd-1)),t}function df(a){let e=cf.exec(a);if(e)return parseInt(e[2])-parseInt(e[1])+1}function hf(a){let e=a.get("Content-Range");if(e){let s=df(e);
vendor: 5,402 bytes, line 193
193if(Z(s))return s}let t=a.get("Content-Length");if(t)return parseInt(t)}function ff(a,e){return new self.Request(a.url,e)}var Pn=class extends Error{constructor(e,t,s){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=s}},mf=/\s/,gf={newCue(a,e,t,s){let i=[],r,n,o,l,c,u=self.VTTCue||self.TextTrackCue;for(let h=0;h<s.rows.length;h++)if(r=s.rows[h],o=!0,l=0,c="",!r.isEmpty()){var d;for(let g=0;g<r.chars.length;g++)mf.test(r.chars[g].uchar)&&o?l++:(c+=r.chars[g].uchar,o=!1);r.cueStartTime=e,e===t&&(t+=1e-4),l>=16?l--:l++;let m=Pl(c.trim()),f=zn(e,t,m);a!=null&&(d=a.cues)!=null&&d.getCueById(f)||(n=new u(e,t,m),n.id=f,n.line=h+1,n.align="left",n.position=10+Math.min(80,Math.floor(l*8/32)*10),i.push(n))}return a&&i.length&&(i.sort((h,m)=>h.line==="auto"||m.line==="auto"?0:h.line>8&&m.line>8?m.line-h.line:h.line-m.line),i.forEach(h=>al(a,h))),i}},pf={maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null},Hl=Be(Be({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:60*1e3*1e3,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,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,loader:ii,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:jr,bufferController:vn,capLevelController:ds,errorController:Kr,fpsController:Rn,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:jo,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:pf},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}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},yf()),{},{subtitleStreamController:mn,subtitleTrackController:pn,timelineController:In,audioStreamController:hn,audioTrackController:fn,emeController:bt,cmcdController:_n,contentSteeringController:kn});function yf(){return{cueHandler:gf,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 vf(a,e){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"');let t=On(a),s=["manifest","level","frag"],i=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];
193return s.forEach(r=>{let n=`${r==="level"?"playlist":r}LoadPolicy`,o=e[n]===void 0,l=[];i.forEach(c=>{let u=`${r}Loading${c}`,d=e[u];if(d!==void 0&&o){l.push(u);let h=t[n].default;switch(e[n]={default:h},c){case"TimeOut":h.maxLoadTimeMs=d,h.maxTimeToFirstByteMs=d;break;case"MaxRetry":h.errorRetry.maxNumRetry=d,h.timeoutRetry.maxNumRetry=d;break;case"RetryDelay":h.errorRetry.retryDelayMs=d,h.timeoutRetry.retryDelayMs=d;break;case"MaxRetryTimeout":h.errorRetry.maxRetryDelayMs=d,h.timeoutRetry.maxRetryDelayMs=d;break}}}),l.length&&I.warn(`hls.js config: "${l.join('", "')}" setting(s) are deprecated, use "${n}": ${JSON.stringify(e[n])}`)}),Be(Be({},t),e)}function On(a){return a&&typeof a=="object"?Array.isArray(a)?a.map(On):Object.keys(a).reduce((e,t)=>(e[t]=On(a[t]),e),{}):a}function Sf(a){let e=a.loader;e!==ri&&e!==ii?(I.log("[config]: Custom loader detected, cannot enable progressive streaming"),a.progressive=!1):lf()&&(a.loader=ri,a.progressive=!0,a.enableSoftwareAES=!0,I.log("[config]: Progressive streaming enabled, using FetchLoader"))}var Dr,Fn=class extends as{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(){let{hls:e}=this;e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(p.LEVEL_LOADED,this.onLevelLoaded,this),e.on(p.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(p.FRAG_BUFFERED,this.onFragBuffered,this),e.on(p.ERROR,this.onError,this)}_unregisterListeners(){let{hls:e}=this;e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(p.LEVEL_LOADED,this.onLevelLoaded,this),e.off(p.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(p.FRAG_BUFFERED,this.onFragBuffered,this),e.off(p.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){let s=this.hls.config.preferManagedMediaSource,i=[],r={},n={},o=!1,l=!1,c=!1;t.levels.forEach(u=>{var d,h;let m=u.attrs,{audioCodec:f,videoCodec:g}=u;((d=f)==null?void 0:d.indexOf("mp4a.40.34"))!==-1&&(Dr||(Dr=/chrome|firefox/i.test(navigator.userAgent)),Dr&&(u.audioCodec=f=void 0)),f&&(u.audioCodec=f=Us(f,s)),((h=g)==null?void 0:h.indexOf("avc1"))===0&&(g=u.videoCodec=Vu(g));let{width:y,height:T,unknownCodecs:b}=u;if(o||(o=!!(y&&T)),l||(l=!!g),c||(c=!!f),b!=null&&b.length||f&&!pr(f,"audio",s)||g&&!pr(g,"video",s))return;let{CODECS:A,"FRAME-RATE":_,"HDCP-LEVEL":L,"PATHWAY-ID":U,RESOLUTION:C,"VIDEO-RANGE":M}=m,F=`${`${U||"."}-`}${u.bitrate}-${C}-${_}-${A}-${M}-${L}`;if(r[F])if(r[F].uri!==u.url&&!u.attrs["PATHWAY-ID"]){let H=n[F]+=1;u.attrs["PATHWAY-ID"]=new Array(H+1).join(".");let ce=new At(u);r[F]=ce,i.push(ce)}else r[F].addGroupId("audio",m.AUDIO),r[F].addGroupId("text",m.SUBTITLES);else{let H=new At(u);r[F]=H,n[F]=1,i.push(H)}}),this.filterAndSortMediaOptions(i,t,o,l,c)}filterAndSortMediaOptions(e,t,s,i,r){let n=[],o=[],l=e;if((s||i)&&r&&(l=l.filter(({videoCodec:f,videoRange:g,width:y,height:T})=>(!!f||!!(y&&T))&&td(g))),l.length===0){Promise.resolve().then(()=>{if(this.hls){t.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(t.levels[0].attrs)}`);let f=new Error("no level with compatible codecs found in manifest");this.hls.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:f,reason:f.message})}});return}if(t.audioTracks){let{preferManagedMediaSource:f}=this.hls.config;n=t.audioTracks.filter(g=>!g.audioCodec||pr(g.audioCodec,"audio",f)),Ko(n)}t.subtitles&&(o=t.subtitles,Ko(o));let c=l.slice(0);l.sort((f,g)=>{if(f.attrs["HDCP-LEVEL"]!==g.attrs["HDCP-LEVEL"])return(f.attrs["HDCP-LEVEL"]||"")>(g.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&f.height!==g.height)return f.height-g.height;if(f.frameRate!==g.frameRate)return f.frameRate-g.frameRate;if(f.videoRange!==g.videoRange)return Bs.indexOf(f.videoRange)-Bs.indexOf(g.videoRange);
193if(f.videoCodec!==g.videoCodec){let y=ro(f.videoCodec),T=ro(g.videoCodec);if(y!==T)return T-y}if(f.uri===g.uri&&f.codecSet!==g.codecSet){let y=Ns(f.codecSet),T=Ns(g.codecSet);if(y!==T)return T-y}return f.averageBitrate!==g.averageBitrate?f.averageBitrate-g.averageBitrate:0});let u=c[0];if(this.steering&&(l=this.steering.filterParsedLevels(l),l.length!==c.length)){for(let f=0;f<c.length;f++)if(c[f].pathwayId===l[0].pathwayId){u=c[f];break}}this._levels=l;for(let f=0;f<l.length;f++)if(l[f]===u){var d;this._firstLevel=f;let g=u.bitrate,y=this.hls.bandwidthEstimate;if(this.log(`manifest loaded, ${l.length} level(s) found, first bitrate: ${g}`),((d=this.hls.userConfig)==null?void 0:d.abrEwmaDefaultEstimate)===void 0){let T=Math.min(g,this.hls.config.abrEwmaDefaultEstimateMax);T>y&&y===Hl.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=T)}break}let h=r&&!i,m={levels:l,audioTracks:n,subtitleTracks:o,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:i,altAudio:!h&&n.some(f=>!!f.url)};this.hls.trigger(p.MANIFEST_PARSED,m),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return this._levels.length===0?null:this._levels}get level(){return this.currentLevelIndex}set level(e){let t=this._levels;if(t.length===0)return;if(e<0||e>=t.length){let u=new Error("invalid level idx"),d=e<0;if(this.hls.trigger(p.ERROR,{type:le.OTHER_ERROR,details:D.LEVEL_SWITCH_ERROR,level:e,fatal:d,error:u,reason:u.message}),d)return;e=Math.min(e,t.length-1)}let 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&&n.details&&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:""}`);let l={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(p.LEVEL_SWITCHING,l);let c=n.details;if(!c||c.live){let u=this.switchParams(n.uri,i?.details,c);this.loadPlaylist(u)}}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){let e=this.hls.config.startLevel;return e!==void 0?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){t.fatal||!t.context||t.context.type===ye.LEVEL&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(t!==void 0&&t.type===ne.MAIN){let s=t.elementaryStreams;if(!Object.keys(s).some(r=>!!s[r]))return;let 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;let{level:i,details:r}=t,n=this._levels[i];if(!n){var o;this.warn(`Invalid level index ${i}`),(o=t.deliveryDirectives)!=null&&o.skip&&(r.deltaUpdateFailed=!0);return}i===this.currentLevelIndex?(n.fragmentError===0&&(n.loadError=0),this.playlistLoaded(i,t,n.details)):(s=t.deliveryDirectives)!=null&&s.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();let t=this.currentLevelIndex,s=this.currentLevel;if(s&&this.shouldLoadPlaylist(s)){let i=s.uri;if(e)try{i=e.addDirectives(i)}catch(n){this.warn(`Could not construct new URL with HLS Delivery Directives: ${n}`)}let r=s.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${e?.msn!==void 0?" at sn "+e.msn+" part "+e.part:""} with${r?" Pathway "+r:""} ${i}`),this.clearTimer(),this.hls.trigger(p.LEVEL_LOADING,{url:i,level:t,pathwayId:s.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||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;let s=this._levels.filter((i,r)=>r!==e?!0:(this.steering&&this.steering.removeLevel(i),i===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,i.details&&i.details.fragments.forEac
vendor: 4,376 bytes, line 193
193h(n=>n.level=-1)),!1));ul(s),this._levels=s,this.currentLevelIndex>-1&&(t=this.currentLevel)!=null&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(p.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){let{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(p.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}};function Ko(a){let e={};a.forEach(t=>{let s=t.groupId||"";t.id=e[s]=e[s]||0,e[s]++})}var Mn=class{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(let s in this.keyUriToKeyInfo){let i=this.keyUriToKeyInfo[s].loader;if(i){var t;if(e&&e!==((t=i.context)==null?void 0:t.frag.type))return;i.abort()}}}detach(){for(let e in this.keyUriToKeyInfo){let t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(let e in this.keyUriToKeyInfo){let t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=D.KEY_LOAD_ERROR,s,i,r){return new nt({type:le.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:s,networkDetails:i})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){let{sn:s,cc:i}=e;for(let r=0;r<t.length;r++){let n=t[r];if(i<=n.cc&&(s==="initSegment"||n.sn==="initSegment"||s<n.sn)){this.emeController.selectKeySystemFormat(n).then(o=>{n.setKeyFormat(o)});break}}}}load(e){return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then(t=>this.loadInternal(e,t)):this.loadInternal(e)}loadInternal(e,t){var s,i;t&&e.setKeyFormat(t);let r=e.decryptdata;if(!r){let c=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(e,D.KEY_LOAD_ERROR,c))}let n=r.uri;if(!n)return Promise.reject(this.createKeyLoadError(e,D.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let o=this.keyUriToKeyInfo[n];if((s=o)!=null&&s.decryptdata.key)return r.key=o.decryptdata.key,Promise.resolve({frag:e,keyInfo:o});if((i=o)!=null&&i.keyLoadPromise){var l;switch((l=o.mediaKeySessionContext)==null?void 0:l.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return o.keyLoadPromise.then(c=>(r.key=c.keyInfo.decryptdata.key,{frag:e,keyInfo:o}))}}switch(o=this.keyUriToKeyInfo[n]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return r.keyFormat==="identity"?this.loadKeyHTTP(o,e):this.loadKeyEME(o,e);case"AES-128":return this.loadKeyHTTP(o,e);default:return Promise.reject(this.createKeyLoadError(e,D.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){let s={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){let i=this.emeController.loadKey(s);if(i)return(e.keyLoadPromise=i.then(r=>(e.mediaKeySessionContext=r,s))).catch(r=>{throw e.keyLoadPromise=null,r})}return Promise.resolve(s)}loadKeyHTTP(e,t){let s=this.config,i=s.loader,r=new i(s);return t.keyLoader=e.loader=r,e.keyLoadPromise=new Promise((n,o)=>{let l={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},c=s.keyLoadPolicy.default,u={loadPolicy:c,timeout:c.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(h,m,f,g)=>{let{frag:y,keyInfo:T,url:b}=f;if(!y.decryptdata||T!==this.keyUriToKeyInfo[b])return o(this.createKeyLoadError(y,D.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),g));T.decryptdata.key=y.decryptdata.key=new Uint8Array(h.data),y.keyLoader=null,T.loader=null,n({frag:y,keyInfo:T})},onError:(h,m,f,g)=>{this.resetLoader(m),o(this.createKeyLoadError(t,D.KEY_LOAD_ERROR,new Error(`HTTP Error ${h.code} loading key ${h.text}`),f,Be({url:l.url,data:void 0},h)))},onTimeout:(h,m,f)=>{this.resetLoader(m),o(this.createKeyLoadError(t,D.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),f))},onAbort:(h,m,f)=>{this.resetLoader(m),o(this.createKeyLoadError(t,D.INTERNAL_ABORTED,new Error("key loading aborted"),f))}};r.load(l,u,d)})}
193resetLoader(e){let{frag:t,keyInfo:s,url:i}=e,r=s.loader;t.keyLoader===r&&(t.keyLoader=null,s.loader=null),delete this.keyUriToKeyInfo[i],r&&r.destroy()}};function Kl(){return self.SourceBuffer||self.WebKitSourceBuffer}function Vl(){if(!Pt())return!1;let e=Kl();return!e||e.prototype&&typeof e.prototype.appendBuffer=="function"&&typeof e.prototype.remove=="function"}function Ef(){if(!Vl())return!1;let a=Pt();return typeof a?.isTypeSupported=="function"&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some(e=>a.isTypeSupported(ns(e,"video")))||["mp4a.40.2","fLaC"].some(e=>a.isTypeSupported(ns(e,"audio"))))}function Tf(){var a;let e=Kl();return typeof(e==null||(a=e.prototype)==null?void 0:a.changeType)=="function"}var xf=250,ks=2,bf=.1,Af=.05,Nn=class{constructor(e,t,s,i){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=s,this.hls=i}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){let{config:s,media:i,stalled:r}=this;if(i===null)return;let{currentTime:n,seeking:o}=i,l=this.seeking&&!o,c=!this.seeking&&o;if(this.seeking=o,n!==e){if(this.moved=!0,o||(this.nudgeRetry=0),r!==null){if(this.stallReported){let y=self.performance.now()-r;I.warn(`playback not stuck anymore @${n}, after ${Math.round(y)}ms`),this.stallReported=!1}this.stalled=null}return}if(c||l){this.stalled=null;return}if(i.paused&&!o||i.ended||i.playbackRate===0||!xe.getBuffered(i).length){this.nudgeRetry=0;return}let u=xe.bufferInfo(i,n,0),d=u.nextStart||0;if(o){let y=u.len>ks,T=!d||t&&t.start<=n||d-n>ks&&!this.fragmentTracker.getPartialFragment(n);if(y||T)return;this.moved=!1}if(!this.moved&&this.stalled!==null){var h;if(!(u.len>0)&&!d)return;let T=Math.max(d,u.start||0)-n,b=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,_=(b==null||(h=b.details)==null?void 0:h.live)?b.details.targetduration*2:ks,L=this.fragmentTracker.getPartialFragment(n);if(T>0&&(T<=_||L)){i.paused||this._trySkipBufferHole(L);return}}let m=self.performance.now();if(r===null){this.stalled=m;return}let f=m-r;if(!o&&f>=xf&&(this._reportStall(u),!this.media))return;let g=xe.bufferInfo(i,n,s.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(e,t){let{config:s,fragmentTracker:i,media:r}=this;if(r===null)return;let n=r.currentTime,o=i.getPartialFragment(n);o&&(this._trySkipBufferHole(o)||!this.media)||(e.len>s.maxBufferHole||e.nextStart&&e.nextStart-n<s.maxBufferHole)&&t>s.highBufferWatchdogPeriod*1e3&&(I.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){let{hls:t,media:s,stallReported:i}=this;if(!i&&s){this.stallReported=!0;let r=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${JSON.stringify(e)})`);I.warn(r.message),t.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.BUFFER_STALLED_ERROR,fatal:!1,error:r,buffer:e.len})}}
193_trySkipBufferHole(e){let{config:t,hls:s,media:i}=this;if(i===null)return 0;let r=i.currentTime,n=xe.bufferInfo(i,r,0),o=r<n.start?n.start:n.nextStart;if(o){let l=n.len<=t.maxBufferHole,c=n.len>0&&n.len<1&&i.readyState<3,u=o-r;if(u>0&&(l||c)){if(u>t.maxBufferHole){let{fragmentTracker:h}=this,m=!1;if(r===0){let f=h.getAppendedFrag(0,ne.MAIN);f&&o<f.end&&(m=!0)}if(!m){let f=e||h.getAppendedFrag(r,ne.MAIN);if(f){let g=!1,y=f.end;for(;y<o;){let T=h.getPartialFragment(y);if(T)y+=T.duration;else{g=!0;break}}if(g)return 0}}}let d=Math.max(o+Af,r+bf);if(I.warn(`skipping hole, adjusting currentTime from ${r} to ${d}`),this.moved=!0,this.stalled=null,i.currentTime=d,e&&!e.gap){let h=new Error(`fragment loaded with buffer holes, seeking from ${r} to ${d}`);s.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.BUFFER_SEEK_OVER_HOLE,fatal:!1,error:h,reason:h.message,frag:e})}return d}}return 0}_tryNudgeBuffer(){let{config:e,hls:t,media:s,nudgeRetry:i}=this;if(s===null)return;let r=s.currentTime;if(this.nudgeRetry++,i<e.nudgeMaxRetry){let n=r+(i+1)*e.nudgeOffset,o=new Error(`Nudging 'currentTime' from ${r} to ${n}`);I.warn(o.message),s.currentTime=n,t.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.BUFFER_NUDGE_ON_STALL,error:o,fatal:!1})}else{let n=new Error(`Playhead still not moving while enough data buffered @${r} after ${e.nudgeMaxRetry} nudges`);I.error(n.message),t.trigger(p.ERROR,{type:le.MEDIA_ERROR,details:D.BUFFER_STALLED_ERROR,error:n,fatal:!0})}}},Lf=100,Un=class extends cs{constructor(e,t,s){super(e,t,s,"[stream-controller]",ne.MAIN),this.audioCodecSwap=!1,this.gapController=null,this.level=-1,this._forceStartLoad=!1,this.altAudio=!1,this.audioOnly=!1,this.fragPlaying=null,this.onvplaying=null,this.onvseeked=null,this.fragLastKbps=0,this.couldBacktrack=!1,this.backtrackFragment=null,this.audioCodecSwitch=!1,this.videoBuffer=null,this._registerListeners()}_registerListeners(){let{hls:e}=this;e.on(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(p.MANIFEST_LOADING,this.onManifestLoading,this),e.on(p.MANIFEST_PARSED,this.onManifestParsed,this),e.on(p.LEVEL_LOADING,this.onLevelLoading,this),e.on(p.LEVEL_LOADED,this.onLevelLoaded,this),e.on(p.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.on(p.ERROR,this.onError,this),e.on(p.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.on(p.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.on(p.BUFFER_CREATED,this.onBufferCreated,this),e.on(p.BUFFER_FLUSHED,this.onBufferFlushed,this),e.on(p.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(p.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){let{hls:e}=this;e.off(p.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(p.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(p.MANIFEST_LOADING,this.onManifestLoading,this),e.off(p.MANIFEST_PARSED,this.onManifestParsed,this),e.off(p.LEVEL_LOADED,this.onLevelLoaded,this),e.off(p.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),e.off(p.ERROR,this.onError,this),e.off(p.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),e.off(p.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),e.off(p.BUFFER_CREATED,this.onBufferCreated,this),e.off(p.BUFFER_FLUSHED,this.onBufferFlushed,this),e.off(p.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(p.FRAG_BUFFERED,this.onFragBuffered,this)}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying()}startLoad(e){if(this.levels){let{lastCurrentTime:t,hls:s}=this;if(this.stopLoad(),this.setInterval(Lf),this.level=-1,!this.startFragRequested){let i=s.startLevel;i===-1&&(s.config.testBandwidth&&this.levels.length>1?(i=0,this.bitrateTest=!0):i=s.firstAutoLevel),s.nextLoadLevel=i,this.level=s.loadLevel,this.loadedmetadata=!1}t>0&&e===-1&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=$.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=$.STOPPED}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case $.WAITING_LEVEL:{let{levels:t,level:s}=this,i=t?.[s],r=i?.details;if(r&&(!r.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(r))break;this.state=$.IDLE;break}else if(this.hls.nextLoadLevel!==this.level){this.state=$.IDLE;break}break}case $.FRAG_LOADING_WAITING_RETRY:{var e;let t=self.performance.now(),s=this.retryDate;if(!s||t>=s||(e=this.media)!=null&&e.seeking){let{levels:i,level:r}=this,n=i?.[r];this.resetStartWhenNotLoaded(n||null),this.state=$.IDLE}}break}this.state===$.IDLE&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){let{hls:e,levelLastLoaded:t,levels:s,media:i}=this;if(t===null||!i&&(this.startFragRequested||!e.config.startFragPrefetch)||this.altAudio&&this.audioOnly)return;let r=e.nextLoadLevel;if(!(s!=null&&s[r]))return;let n=s[r],o=this.getMainFwdBufferInfo();if(o===null)return;let l=this.getLevelDetails();if(l&&this._streamEnded(o,l)){let g={};this.altAudio&&(g.type="video"),this.hls.trigger(p.BUFFER_EOS,g),this.state=$.ENDED;return}e.loadLevel!==r&&e.manualLevel===-1&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;let c=n.details;if(!c||this.state===$.WAITING_LEVEL||c.live&&this.levelLastLoaded!==n){this.level=r,this.state=$.WAITING_LEVEL;return}let u=o.len,d=this.getMaxBufferLength(n.maxBitrate);
193if(u>=d)return;this.backtrackFragment&&this.backtrackFragment.start>o.end&&(this.backtrackFragment=null);let h=this.backtrackFragment?this.backtrackFragment.start:o.end,m=this.getNextFragment(h,c);if(this.couldBacktrack&&!this.fragPrevious&&m&&m.sn!=="initSegment"&&this.fragmentTracker.getState(m)!==Ue.OK){var f;let y=((f=this.backtrackFragment)!=null?f:m).sn-c.startSN,T=c.fragments[y-1];T&&m.cc===T.cc&&(m=T,this.fragmentTracker.removeFragment(T))}else this.backtrackFragment&&o.len&&(this.backtrackFragment=null);if(m&&this.isLoopLoading(m,h)){if(!m.gap){let y=this.audioOnly&&!this.altAudio?Ee.AUDIO:Ee.VIDEO,T=(y===Ee.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;T&&this.afterBufferFlushed(T,y,ne.MAIN)}m=this.getNextFragmentLoopLoading(m,c,o,ne.MAIN,d)}m&&(m.initSegment&&!m.initSegment.data&&!this.bitrateTest&&(m=m.initSegment),this.loadFragment(m,n,h))}loadFragment(e,t,s){let i=this.fragmentTracker.getState(e);this.fragCurrent=e,i===Ue.NOT_LOADED||i===Ue.PARTIAL?e.sn==="initSegment"?this._loadInitSegment(e,t):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)):(this.startFragRequested=!0,super.loadFragment(e,t,s)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,ne.MAIN)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){let{levels:e,media:t}=this;if(t!=null&&t.readyState){let s,i=this.getAppendedFrag(t.currentTime);i&&i.start>1&&this.flushMainBuffer(0,i.start-1);let r=this.getLevelDetails();if(r!=null&&r.live){let o=this.getMainFwdBufferInfo();if(!o||o.len<r.targetduration*2)return}if(!t.paused&&e){let o=this.hls.nextLoadLevel,l=e[o],c=this.fragLastKbps;c&&this.fragCurrent?s=this.fragCurrent.duration*l.maxBitrate/(1e3*c)+1:s=0}else s=0;let n=this.getBufferedFrag(t.currentTime+s);if(n){let o=this.followingBufferedFrag(n);if(o){this.abortCurrentFrag();let l=o.maxStartPTS?o.maxStartPTS:o.start,c=o.duration,u=Math.max(n.end,l+Math.min(Math.max(c-this.config.maxFragLookUpTolerance,c*(this.couldBacktrack?.5:.125)),c*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(u,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){let e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case $.KEY_LOADING:case $.FRAG_LOADING:case $.FRAG_LOADING_WAITING_RETRY:case $.PARSING:case $.PARSED:this.state=$.IDLE;break}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);let s=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),s.addEventListener("playing",this.onvplaying),s.addEventListener("seeked",this.onvseeked),this.gapController=new Nn(this.config,s,this.fragmentTracker,this.hls)}onMediaDetaching(){let{media:e}=this;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){let e=this.media,t=e?e.currentTime:null;Z(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);let s=this.getMainFwdBufferInfo();if(s===null||s.len===0){this.warn(`Main forward buffer length on "seeked" event ${s?s.len:"empty"})`);return}this.tick()}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(p.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1}onManifestParsed(e,t){let s=!1,i=!1;
193t.levels.forEach(r=>{let n=r.audioCodec;n&&(s=s||n.indexOf("mp4a.40.2")!==-1,i=i||n.indexOf("mp4a.40.5")!==-1)}),this.audioCodecSwitch=s&&i&&!Tf(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1}onLevelLoading(e,t){let{levels:s}=this;if(!s||this.state!==$.IDLE)return;let i=s[t.level];(!i.details||i.details.live&&this.levelLastLoaded!==i||this.waitForCdnTuneIn(i.details))&&(this.state=$.WAITING_LEVEL)}onLevelLoaded(e,t){var s;let{levels:i}=this,r=t.level,n=t.details,o=n.totalduration;if(!i){this.warn(`Levels were reset while loading level ${r}`);return}this.log(`Level ${r} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${o}`);let l=i[r],c=this.fragCurrent;c&&(this.state===$.FRAG_LOADING||this.state===$.FRAG_LOADING_WAITING_RETRY)&&c.level!==t.level&&c.loader&&this.abortCurrentFrag();let u=0;if(n.live||(s=l.details)!=null&&s.live){var d;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;u=this.alignPlaylists(n,l.details,(d=this.levelLastLoaded)==null?void 0:d.details)}if(l.details=n,this.levelLastLoaded=l,this.hls.trigger(p.LEVEL_UPDATED,{details:n,level:r}),this.state===$.WAITING_LEVEL){if(this.waitForCdnTuneIn(n))return;this.state=$.IDLE}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,u),this.tick()}_handleFragmentLoadProgress(e){var t;let{frag:s,part:i,payload:r}=e,{levels:n}=this;if(!n){this.warn(`Levels were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);return}let o=n[s.level],l=o.details;if(!l){this.warn(`Dropping fragment ${s.sn} of level ${s.level} after level details were reset`),this.fragmentTracker.removeFragment(s);return}let c=o.videoCodec,u=l.PTSKnown||!l.live,d=(t=s.initSegment)==null?void 0:t.data,h=this._getAudioCodec(o),m=this.transmuxer=this.transmuxer||new Qs(this.hls,ne.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=i?i.index:-1,g=f!==-1,y=new os(s.level,s.sn,s.stats.chunkCount,r.byteLength,f,g),T=this.initPTS[s.cc];m.push(r,d,h,c,s,i,l.totalduration,u,y,T)}onAudioTrackSwitching(e,t){let s=this.altAudio;if(!!!t.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;let n=this.fragCurrent;n&&(this.log("Switching to main audio track, cancel main fragment load"),n.abortRequests(),this.fragmentTracker.removeFragment(n)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();let r=this.hls;s&&(r.trigger(p.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),r.trigger(p.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){let s=t.id,i=!!this.hls.audioTracks[s].url;if(i){let r=this.videoBuffer;r&&this.mediaBuffer!==r&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=r)}this.altAudio=i,this.tick()}onBufferCreated(e,t){let s=t.tracks,i,r,n=!1;for(let o in s){let l=s[o];if(l.id==="main"){if(r=o,i=l,o==="video"){let c=s[o];c&&(this.videoBuffer=c.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){let{frag:s,part:i}=t;if(s&&s.type!==ne.MAIN)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}`),this.state===$.PARSED&&(this.state=$.IDLE);return}let r=i?i.stats:s.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),s.sn!=="initSegment"&&(this.fragPrevious=s),this.fragBufferedComplete(s,i)}onError(e,t){var s;if(t.fatal){this.state=$.ERROR;return}switch(t.details){case D.FRAG_GAP:case D.FRAG_PARSING_ERROR:case D.FRAG_DECRYPT_ERROR:case D.FRAG_LOAD_ERROR:case D.FRAG_LOAD_TIMEOUT:case D.KEY_LOAD_ERROR:case D.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(ne.MAIN,t);break;case D.LEVEL_LOAD_ERROR:case D.LEVEL_LOAD_TIMEOUT:case D.LEVEL_PARSING_ERROR:!t.levelRetry&&this.state===$.WAITING_LEVEL&&((s=t.context)==null?void 0:s.type)===ye.LEVEL&&(this.state=$.IDLE);break;case D.BUFFER_APPEND_ERROR:case D.BUFFER_FULL_ERROR:if(!t.parent||t.parent!=="main")return;if(t.details===D.BUFFER_APPEND_ERROR){this.resetLoadingState();return}this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case D.INTERNAL_EXCEPTION:this.recoverWorkerError(t);break}}
193checkBuffer(){let{media:e,gapController:t}=this;if(!(!e||!t||!e.readyState)){if(this.loadedmetadata||!xe.getBuffered(e).length){let s=this.state!==$.IDLE?this.fragCurrent:null;t.poll(this.lastCurrentTime,s)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=$.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==Ee.AUDIO||this.audioOnly&&!this.altAudio){let s=(t===Ee.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(s,t,ne.MAIN),this.tick()}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){let{media:e}=this;if(!e)return;let t=e.currentTime,s=this.startPosition;if(s>=0&&t<s){if(e.seeking){this.log(`could not seek to ${s}, already seeking at ${t}`);return}let i=xe.getBuffered(e),n=(i.length?i.start(0):0)-s;n>0&&(n<this.config.maxBufferHole||n<this.config.maxFragLookUpTolerance)&&(this.log(`adjusting start position by ${n} to match buffer start`),s+=n,this.startPosition=s),this.log(`seek to target start position ${s} from current time ${t}`),e.currentTime=s}}_getAudioCodec(e){let t=this.config.defaultAudioCodec||e.audioCodec;return this.audioCodecSwap&&t&&(this.log("Swapping audio codec"),t.indexOf("mp4a.40.5")!==-1?t="mp4a.40.2":t="mp4a.40.5"),t}_loadBitrateTestFrag(e,t){e.bitrateTest=!0,this._doFragLoad(e,t).then(s=>{let{hls:i}=this;if(!s||this.fragContextChanged(e))return;t.fragmentError=0,this.state=$.IDLE,this.startFragRequested=!1,this.bitrateTest=!1;let r=e.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),i.trigger(p.FRAG_LOADED,s),e.bitrateTest=!1})}_handleTransmuxComplete(e){var t;let s="main",{hls:i}=this,{remuxResult:r,chunkMeta:n}=e,o=this.getCurrentContext(n);if(!o){this.resetWhenMissingContext(n);return}let{frag:l,part:c,level:u}=o,{video:d,text:h,id3:m,initSegment:f}=r,{details:g}=u,y=this.altAudio?void 0:r.audio;if(this.fragContextChanged(l)){this.fragmentTracker.removeFragment(l);return}if(this.state=$.PARSING,f){if(f!=null&&f.tracks){let A=l.initSegment||l;this._bufferInitSegment(u,f.tracks,A,n),i.trigger(p.FRAG_PARSING_INIT_SEGMENT,{frag:A,id:s,tracks:f.tracks})}let T=f.initPTS,b=f.timescale;Z(T)&&(this.initPTS[l.cc]={baseTime:T,timescale:b},i.trigger(p.INIT_PTS_FOUND,{frag:l,id:s,initPTS:T,timescale:b}))}if(d&&g&&l.sn!=="initSegment"){let T=g.fragments[l.sn-1-g.startSN],b=l.sn===g.startSN,A=!T||l.cc>T.cc;if(r.independent!==!1){let{startPTS:_,endPTS:L,startDTS:U,endDTS:C}=d;if(c)c.elementaryStreams[d.type]={startPTS:_,endPTS:L,startDTS:U,endDTS:C};else if(d.firstKeyFrame&&d.independent&&n.id===1&&!A&&(this.couldBacktrack=!0),d.dropped&&d.independent){let M=this.getMainFwdBufferInfo(),N=(M?M.end:this.getLoadPosition())+this.config.maxBufferHole,F=d.firstKeyFramePTS?d.firstKeyFramePTS:_;if(!b&&N<F-this.config.maxBufferHole&&!A){this.backtrack(l);return}else A&&(l.gap=!0);l.setElementaryStreamInfo(d.type,l.start,L,l.start,C,!0)}else b&&_>ks&&(l.gap=!0);l.setElementaryStreamInfo(d.type,_,L,U,C),this.backtrackFragment&&(this.backtrackFragment=l),this.bufferFragmentData(d,l,c,n,b||A)}else if(b||A)l.gap=!0;else{this.backtrack(l);return}}if(y){let{startPTS:T,endPTS:b,startDTS:A,endDTS:_}=y;c&&(c.elementaryStreams[Ee.AUDIO]={startPTS:T,endPTS:b,startDTS:A,endDTS:_}),l.setElementaryStreamInfo(Ee.AUDIO,T,b,A,_),this.bufferFragmentData(y,l,c,n)}if(g&&m!=null&&(t=m.samples)!=null&&t.length){let T={id:s,frag:l,details:g,samples:m.samples};i.trigger(p.FRAG_PARSING_METADATA,T)}if(g&&h){let T={id:s,frag:l,details:g,samples:h.samples};i.trigger(p.FRAG_PARSING_USERDATA,T)}}_bufferInitSegment(e,t,s,i){if(this.state!==$.PARSING)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;let{audio:r,video:n,audiovideo:o}=t;if(r){let l=e.audioCodec,c=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){l&&(l.indexOf("mp4a.40.5")!==-1?l="mp4a.40.2":l="mp4a.40.5");let u=r.metadata;u&&"channelCount"in u&&(u.channelCount||1)!==1&&c.indexOf("firefox")===-1&&(l="mp4a.40.5")}l&&l.indexOf("mp4a.40.5")!==-1&&c.indexOf("android")!==-1&&r.container!=="audio/mpeg"&&(l="mp4a.40.2",this.log(`Android: force audio codec to ${l}`)),e.audioCodec&&e.audioCodec!==l&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${l}"`),r.levelCodec=l,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${l||""}/${e.audioCodec||""}/${r.codec}]`)}n&&(n.levelCodec=e.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${e.videoCodec||""}/${n.codec}]`)),o&&this.log(`Init audiovideo buffer, container:${o.container}, codecs[level/parsed]=[${e.codecs}/${o.codec}]`),this.hls.trigger(p.BUFFER_CODECS,t),Object.keys(t).forEach(l=>{let u=t[l].initSegment;u!=null&&u.byteLength&&this.hls.trigger(p.BUFFER_APPENDING,{type:l,data:u,frag:s,part:null,chunkMeta:i,parent:s.type})}),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,ne.MAIN)}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=$.IDLE}checkFragmentChanged(){let e=this.media,t=null;if(e&&e.readyState>1&&e.seeking===!1){let s=e.currentTime;if(xe.isBuffered(e,s)?t=this.getAppendedFrag(s):xe.isBuffered(e,s+.1)&&
193(t=this.getAppendedFrag(s+.1)),t){this.backtrackFragment=null;let i=this.fragPlaying,r=t.level;(!i||t.sn!==i.sn||i.level!==r)&&(this.fragPlaying=t,this.hls.trigger(p.FRAG_CHANGED,{frag:t}),(!i||i.level!==r)&&this.hls.trigger(p.LEVEL_SWITCHED,{level:r}))}}}get nextLevel(){let e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){let e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){let e=this.media;if(e){let t=e.currentTime,s=this.currentFrag;if(s&&Z(t)&&Z(s.programDateTime)){let i=s.programDateTime+(t-s.start)*1e3;return new Date(i)}}return null}get currentLevel(){let e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){let e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}},xt=class{static get version(){return"1.5.17"}static isMSESupported(){return Vl()}static isSupported(){return Ef()}static getMediaSource(){return Pt()}static get Events(){return p}static get ErrorTypes(){return le}static get ErrorDetails(){return D}static get DefaultConfig(){return xt.defaultConfig?xt.defaultConfig:Hl}static set DefaultConfig(e){xt.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Wn,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.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0,ru(e.debug||!1,"Hls instance");let t=this.config=vf(xt.DefaultConfig,e);this.userConfig=e,t.progressive&&Sf(t);let{abrController:s,bufferController:i,capLevelController:r,errorController:n,fpsController:o}=t,l=new n(this),c=this.abrController=new s(this),u=this.bufferController=new i(this),d=this.capLevelController=new r(this),h=new o(this),m=new Mr(this),f=new Br(this),g=t.contentSteeringController,y=g?new g(this):null,T=this.levelController=new Fn(this,y),b=new Yr(this),A=new Mn(this.config),_=this.streamController=new Un(this,b,A);d.setStreamController(_),h.setStreamController(_);let L=[m,T,_];y&&L.splice(1,0,y),this.networkControllers=L;let U=[c,u,d,h,f,b];this.audioTrackController=this.createController(t.audioTrackController,L);let C=t.audioStreamController;C&&L.push(new C(this,b,A)),this.subtitleTrackController=this.createController(t.subtitleTrackController,L);let M=t.subtitleStreamController;M&&L.push(new M(this,b,A)),this.createController(t.timelineController,U),A.emeController=this.emeController=this.createController(t.emeController,U),this.cmcdController=this.createController(t.cmcdController,U),this.latencyController=this.createController($r,U),this.coreComponents=U,L.push(l);let N=l.onErrorOut;typeof N=="function"&&this.on(p.ERROR,N,l)}createController(e,t){if(e){let 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(I.error("An internal error happened while handling event "+e+'. Error message: "'+s.message+'". Here is a stacktrace:',s),!this.triggeringException){this.triggeringException=!0;let i=e===p.ERROR;this.trigger(p.ERROR,{type:le.OTHER_ERROR,details:D.INTERNAL_EXCEPTION,fatal:i,event:e,error:s}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){I.log("destroy"),this.trigger(p.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.forEac
193h(t=>t.destroy()),this.coreComponents.length=0;let e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){I.log("attachMedia"),this._media=e,this.trigger(p.MEDIA_ATTACHING,{media:e})}detachMedia(){I.log("detachMedia"),this.trigger(p.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();let t=this.media,s=this.url,i=this.url=Bn.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,I.log(`loadSource:${i}`),t&&s&&(s!==i||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(p.MANIFEST_LOADING,{url:e})}startLoad(e=-1){I.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach(t=>{t.startLoad(e)})}stopLoad(){I.log("stopLoad"),this.started=!1,this.networkControllers.forEach(e=>{e.stopLoad()})}resumeBuffering(){this.started&&this.networkControllers.forEach(e=>{"fragmentLoader"in e&&e.startLoad(-1)})}pauseBuffering(){this.networkControllers.forEach(e=>{"fragmentLoader"in e&&e.stopLoad()})}swapAudioCodec(){I.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){I.log("recoverMediaError");let e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){let e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){I.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){I.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){I.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){I.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){let e=this.levelController.startLevel;return e===-1&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){I.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){let 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(){let{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){let{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(I.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){ed(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(){let{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;let s=e.length;for(let i=0;i<s;i++)if(e[i].maxBitrate>=t)return i;return 0}get maxAutoLevel(){let{levels:e,autoLevelCapping:t,maxHdcpLevel:s}=this,i;if(t===-1&&e!=null&&e.length?i=e.length-1:i=t,s)for(let r=i;r--;){let 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()}setAudioOption(e){var t;return(t=this.audioTrackController)==null?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return(t=this.subtitleTrackController)==null||t.setSubtitleOption(e),null}get allAudioTracks(){let e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){let e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){let e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){let t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){let e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){let e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){let e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){let t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){let e=this.subtitleTrackController;return e?e.subtitleDisplay:!1}set subtitleDisplay(e){let 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}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}};xt.defaultConfig=void 0;var Jn=class extends HTMLElement{constructor(){super(),this.init()}renderCertifications=async function(e=[],t=[],s){let i=t.reduce((l,c)=>(l[c.group_id]=c,l),{}),r=this.querySelectorAll("#loader");r.length>0&&r.forEach(l=>{l.style.display="none"});let n=s?.replace("focus-",""),o=document.querySelectorAll("#available-now-list li a");
193if(e.length||(document.querySelector('[data-state="certs-only-empty"]').removeAttribute("style"),o.forEach(c=>{c.parentElement.removeAttribute("style")})),e.length){let l=[];e.forEach(h=>{i[h.Accredible_Group_ID__c]&&l.push(h.Program__r.Alias__c.toLowerCase())});let c=document.querySelector("#current-focus-list"),u=document.querySelectorAll("#current-focus-list li a");s&&(c.style.display=""),u.forEach(h=>{let m=h.dataset.alias,f=h.parentElement;m===n&&(f.removeAttribute("style"),h.setAttribute("href",`/certifications/${m.toLowerCase()}/focus`))});let d=document.querySelectorAll("#earned-certifications-list li a");d&&d.forEach(h=>{let m=h.dataset.alias,f=h.parentElement;l.includes(m)&&f.removeAttribute("style")}),o.forEach(h=>{let m=h.dataset.alias,f=h.parentElement;!l.includes(m)&&m!==n&&f.removeAttribute("style")})}};renderDeletedCertifications(e=[]){if(document.querySelector("#deleted-certs ul").innerHTML="",!e.length){document.querySelector("#deleted-certs").style.display="none";return}document.querySelector("#deleted-certs").style.display="",e.forEach(t=>{let s=document.createElement("li"),i=`
194        <strong>${t.Program_Name__c||t.Program_Alias__c}</strong> was deleted on <strong>${new Date(t.Deleted_On__c).toLocaleDateString()}</strong>.
195      `;i+="<ul>",t.Reason_for_Deletion__c&&(i+=`<li>Reason: <em>${t.Reason_for_Deletion__c}</em>.</li>`),t.Expires_On__c&&new Date(t.Expires_On__c)<new Date(t.Deleted_On__c)&&(i+=`<li>Your certificate expired on <em>${new Date(t.Expires_On__c).toLocaleDateString()}</strong>.</em></li>`),t.CPE_Credits__c&&t.CPE_Credits__c<t.CPE_Required__c&&(i+="<li>",t.CPE_Status__c&&(i+=`At the time of deletion, your CPE status was <strong>${t.CPE_Status__c}</strong>. `),i+=`You had completed <strong>${t.CPE_Credits__c}</strong>`,t.Program_Name__c&&t.CPE_Required__c?i+=` out of <strong>${t.CPE_Required__c}</strong> CPE credits required for this program.`:i+=` CPE credit${t.CPE_Credits__c>1?"s":""}.`,i+="</li>"),i+="</ul>",s.innerHTML=i,document.querySelector("#deleted-certs ul").appendChild(s)})}init=async function(){let e=getUser();if(!e||e.tags.includes("free"))return;let t=e.tags.find(s=>s.indexOf("focus-")===0);t||document.querySelector('[data-state="no-focus"]').removeAttribute("style"),t&&document.querySelector('[data-state="has-focus"]').removeAttribute("style");try{let s="/.netlify/functions/certifications";this.dataset.certification&&(s+=`?certification=${encodeURIComponent(this.dataset.certification)}`);let r=await(await window.fetch(s,{credentials:"same-origin"})).json();this.renderCertifications(r.certifications,r.certificates,t),this.renderDeletedCertifications(r.deletedCertifications)}catch(s){console.log(s)}}};customElements.define("certificates-overview-focus",Jn);var Qn=class extends HTMLElement{constructor(){super(),this.defaultState={index:-1,maxIndex:0,validationErrors:[],fieldGroups:[],fields:[],hasControls:!1};let e={name:"",showProgress:!0,showControls:!0,id:""};this.groupStructures=[{...e,type:"fieldGroup"},{...e,type:"contentGroup",showProgress:!1}],this.fieldStructure={name:"",id:"",type:"",value:null},this.state={},this.stateSubscribers=[],this.maxIndex=0,this.groupIndexKey="data-stepped-form-index",this.setInitialState().then(()=>{this.start()})}setInitialState(){return this.id?(this.state=this.getStoredData(this.defaultState),Promise.resolve()):(console.warn("Stepped Form: If you want localStorage to save this form\u2019s data, you need to add an `id` attribute to the <stepped-form>."),Promise.reject())}getStoredData(e=null){if(localStorage.getItem(this.id))try{return JSON.parse(localStorage.getItem(this.id))}catch{return e}else return e}setStorage(){if(!this.id){console.error("Stepped Form: If you want localStorage to save this form\u2019s data, you need to add an `id` attribute to the <stepped-form>.");return}try{localStorage.setItem(this.id,JSON.stringify(this.state))}catch{console.error("Stepped Form: couldn\u2019t store data")}}clearStorage(){try{this.id&&localStorage.removeItem(this.id)}catch{console.error("Stepped Form: couldn\u2019t clear local storate data")}}subscribeFieldToState(e){e.addEventListener("change",t=>{try{let s=[...this.state.fields];s.find(i=>i.id===e.id).value=e.value,s.find(i=>i.id===e.id).checked=e.checked,this.state.fields=s}catch(s){console.error("Error setting field value in state",s)}})}
195wireUpControls(){let e=this.querySelector("[data-stepped-form-controls]");if(!e)return;let t=e.querySelectorAll("[data-stepped-form-direction]");t.length&&(this.state.hasControls=!0,e.removeAttribute("style"),this.updateControls(),t.forEach(s=>{s.addEventListener("click",async i=>{if(i.currentTarget.getAttribute("type")==="submit")if(this.processFieldErrors(),this.state.validationErrors.length)i.preventDefault();else{[...e.children].forEach(n=>n.style.display="none");let r=this.querySelector("[data-stepped-form-loader]");r&&r.removeAttribute("style"),this.clearStorage()}if(i.currentTarget.getAttribute("type")==="button")switch(i.preventDefault(),i.currentTarget.getAttribute("data-stepped-form-direction")){case"forwards":this.state.validationErrors.length?this.processFieldErrors():this.state.index<this.maxIndex-1&&(this.state.index=this.state.index+1);break;case"backwards":this.state.index>0&&(this.state.index=this.state.index-1);break}this.updateControls()})})),this.stateSubscribers.push((s,i)=>{s.index!==i.index&&this.updateControls()})}updateControls(){this.querySelectorAll("[data-stepped-form-direction]").forEach(t=>{switch(t.getAttribute("data-stepped-form-direction")){case"forwards":let s=t.querySelector("span");s||(s=constrolsItems),s.textContent=this.state.index<this.maxIndex-1?"Continue":"Submit",t.setAttribute("type",this.state.index<this.maxIndex-1?"button":"submit");break;case"backwards":this.state.index<=0?t.setAttribute("style","opacity: 0; pointer-events: none"):t.removeAttribute("style");break}})}respondToIndexChange(){let e=[...this.querySelectorAll(`[${this.groupIndexKey}]`)],t=this.querySelector(`[${this.groupIndexKey}="${this.state.index}"]`),s=this.state.fieldGroups[this.state.index];e.forEach(r=>r.style.display="none"),t.style.display="block";let i=this.querySelector("progress");i&&(i.value=this.state.index>0?this.state.index/(this.maxIndex-1)*100:0),s.showProgress?i.style.display="":i.style.display="none",document.body.setAttribute("data-stepped-form-index",this.state.index)}processFieldErrors(){let e=[];this.state.fields.forEach(t=>{let s=this.querySelector(`[id="${t.id}"]`);if(this.processFieldError(s))s.removeAttribute("data-stepped-form-error-field");else{s.setAttribute("data-stepped-form-error-field","");let i=s.closest(`[${this.groupIndexKey}]`);i&&(i.setAttribute("data-stepped-form-error-state",""),e.push(parseInt(i.getAttribute(this.groupIndexKey))))}}),e=[...new Set(e)],e.length?this.state.validationErrors=e.sort((t,s)=>t-s):(this.state.validationErrors=[],this.state.index=this.maxIndex-1)}processFieldError(e){if(e.getAttribute("type")==="checkbox"||e.getAttribute("type")==="radio"){if(!e.closest("[data-stepped-form-required-group]"))return!0;let s=[...this.querySelectorAll(`[name="${e.getAttribute("name")}"]`)];return s.length?s.filter(r=>r.checked).length>0:e.checked}else return e.checkValidity()}respondToFieldErrors(){this.state.validationErrors.length?(this.state.index!==this.state.validationErrors[0]&&(this.state.index=this.state.validationErrors[0]),this.querySelector("[data-validation-message]").innerHTML=`
196      <div class="banner mb-xl" data-type="error">
197        <p>Please make sure all required fields are filled out. Optional fields are marked as optional.</p>
198      </div>
199    `):this.hideRequiredFieldBanner||(this.querySelector("[data-validation-message]").innerHTML=`
200      <div class="banner mb-xl">
201        <p>All fields are required unless marked as optional.</p>
202      </div>
203    `)}start(){let e=this.querySelectorAll("[data-stepped-form-group]");if(e.length||console.error("Stepped Form: No field groups found. Make sure you add data-stepped-form-group to your `<fieldset>`"),e=[...e].filter(s=>s.children.length),this.state.fieldGroups=[],e.forEach((s,i)=>{s.setAttribute(this.groupIndexKey,i);let r=this.groupStructures.find(n=>n.type===s.getAttribute("data-stepped-form-group"));if(!r){console.error(`Stepped Form: Group with index ${i} did not match a group structure. Check its data-stepped-form-group attribute.`);return}this.state.fieldGroups.push(r),this.maxIndex=this.maxIndex+1}),this.state.fields.length)this.state.fields.forEach(s=>{let i=this.querySelector(`[id="${s.id}"]`);i&&(i.value=s.value,i.checked=s.checked,this.subscribeFieldToState(i))});else{let s=this.querySelectorAll("[name]");
203s.length&&s.forEach(i=>{this.state.fields.push({...this.fieldStructure,id:i.id,name:i.name,value:i.value,type:i.getAttribute("type"),checked:i.checked}),this.subscribeFieldToState(i)})}let t=this;this.state=new Proxy(t.state,{set(s,i,r){let n={...s};return s[i]=r,t.stateSubscribers.forEach(o=>o(s,n)),s}}),this.stateSubscribers.push(()=>{this.setStorage(),this.respondToFieldErrors()}),this.stateSubscribers.push((s,i)=>{s.index!==i.index&&this.respondToIndexChange()}),this.state.index<0?this.state.index=0:this.respondToIndexChange(),this.setStorage(),this.wireUpControls()}get hideRequiredFieldBanner(){return this.getAttribute("data-hide-required-field-banner")==="true"}};customElements.define("stepped-form",Qn);var Zn=class extends HTMLElement{slug;membership;isPremium;observer;observationInterval;constructor(){super(),this.slug=this.determineSlug(),this.membership=this.determineMembership(),this.isPremium=this.determinePremium(),this.shouldObserveResource()&&this.observeResourceInView()}determineSlug(){return location.pathname.replace(/\//g,"")}determineMembership(){let e=getUser();return e?.tags?.includes("paid")?"paid":e?.sfid?"free":"none"}determinePremium(){return this.getAttribute("data-premium")==="true"}cleanupResources(){this.observer&&(this.observer.disconnect(),this.observer=null),this.observationInterval&&(clearInterval(this.observationInterval),this.observationInterval=null)}shouldObserveResource(){return this.membership!="paid"&&(this.membership==="none"||this.isPremium)}observeResourceInView(){let e=!1,t=document.querySelector(".region");this.observer=new IntersectionObserver(i=>{i.forEach(r=>{e=r.isIntersecting})}),this.observer.observe(t);let s=0;this.observationInterval=setInterval(()=>{if(s>=1){this.isPremium?this.setCookie("possible-upgrade-driver",this.slug,1):sessionStorage.setItem("possible-free-driver",this.slug),this.cleanupResources();return}e&&(s+=1)},1e3),setTimeout(()=>{this.cleanupResources()},1e4)}setCookie(e,t,s){let i=new Date(Date.now()+s*864e5).toUTCString();document.cookie=`${encodeURIComponent(e)}=${encodeURIComponent(t)}; expires=${i}; path=/; Secure; SameSite=Strict`}};customElements.define("motivation-insight",Zn);var ea=class extends HTMLElement{constructor(){super(),this.inactivityDuration=1e4,this.checkInterval=50,this.lastActivityTime=performance.now(),this.checkInactivityInterval=null}connectedCallback(){this.shouldDisplayModal()&&(this.setupActivityListeners(),this.startInactivityCheck())}shouldDisplayModal(){return!getUser()&&!localStorage.getItem("starterKitIncentiveSeen")}displayModal(){this.querySelector("modal-window#starter-kit-incentive").open(),localStorage.setItem("starterKitIncentiveSeen","true"),this.cleanup()}setupActivityListeners(){let e=()=>{this.lastActivityTime=performance.now()};document.addEventListener("mousemove",e),document.addEventListener("scroll",e)}startInactivityCheck(){this.checkInactivityInterval=setInterval(()=>{performance.now()-this.lastActivityTime>=this.inactivityDuration&&this.shouldDisplayModal()&&this.displayModal()},this.checkInterval)}cleanup(){clearInterval(this.checkInactivityInterval),document.removeEventListener("mousemove",this.updateActivity),document.removeEventListener("scroll",this.updateActivity)}};customElements.define("starter-kit-incentive",ea);var If=!1,ze=(...a)=>If&&console.log(...a),ta=class extends HTMLElement{constructor(){super(),this.inactivityDuration=parseInt(this.getAttribute("data-inactivity")||"10000",10),this.checkInterval=50,this.lastActivityTime=performance.now(),this.checkInactivityInterval=null,this.updateActivity=()=>{this.lastActivityTime=performance.now()}}connectedCallback(){ze(`[modal-presenter] connected: ${this.modalId} (type: ${this.modalType})`),this.shouldDisplayModal()&&(ze(`[modal-presenter] ${this.modalId} \u2014 will show after ${this.inactivityDuration}ms inactivity`),this.setupActivityListeners(),this.startInactivityCheck())}disconnectedCallback(){this.cleanup()}get modalType(){return this.getAttribute("data-modal-type")}get modalId(){return this.getAttribute("data-modal-id")||"modal-presenter"}get storageKey(){return`modalPresenter_${this.modalId}_seen`}get surveyContactField(){return this.getAttribute("data-survey-contact-field")||null}
203get surveyEncouragement(){return this.getAttribute("data-survey-encouragement")||null}get startDate(){return this.getAttribute("data-start-date")||null}get endDate(){return this.getAttribute("data-end-date")||null}shouldDisplayModal(){return sessionStorage.getItem(this.storageKey)?(ze(`[modal-presenter] ${this.modalId} \u2014 blocked: already seen this session`),!1):this.modalType==="survey"?this.shouldShowSurvey():(ze(`[modal-presenter] ${this.modalId} \u2014 blocked: unknown modal type "${this.modalType}"`),!1)}shouldShowSurvey(){if(!this.isWithinDateRange())return ze(`[modal-presenter] ${this.modalId} \u2014 blocked: outside date range (start: ${this.startDate}, end: ${this.endDate})`),!1;let e=X();if(!e)return ze(`[modal-presenter] ${this.modalId} \u2014 blocked: no user (not logged in)`),!1;let t=this.surveyContactField;if(!t)return ze(`[modal-presenter] ${this.modalId} \u2014 blocked: no surveyContactField configured`),!1;let s=e[t],i=this.surveyEncouragement;if(ze(`[modal-presenter] ${this.modalId} \u2014 checking encouragement`,{contactField:t,fieldValue:s,encouragement:i}),i){if(ze(i),(typeof s=="string"?s.split(";"):[]).includes(i))return ze(`[modal-presenter] ${this.modalId} \u2014 blocked: encouragement "${i}" already present`),!1}else if(s)return ze(`[modal-presenter] ${this.modalId} \u2014 blocked: field "${t}" is truthy`),!1;return ze(`[modal-presenter] ${this.modalId} \u2014 passed all checks, will show`),!0}isWithinDateRange(){let e=new Date;if(this.startDate){let t=new Date(this.startDate);if(e<t)return!1}if(this.endDate){let t=new Date(this.endDate);if(e>t)return!1}return!0}displayModal(){let e=this.querySelector(`modal-window#${this.modalId}`);if(!e){ze(`[modal-presenter] ${this.modalId} \u2014 error: modal-window element not found`);return}ze(`[modal-presenter] ${this.modalId} \u2014 opening modal`),e.open(),sessionStorage.setItem(this.storageKey,"true"),this.cleanup()}setupActivityListeners(){document.addEventListener("mousemove",this.updateActivity),document.addEventListener("scroll",this.updateActivity)}startInactivityCheck(){this.checkInactivityInterval=setInterval(()=>{performance.now()-this.lastActivityTime>=this.inactivityDuration&&this.shouldDisplayModal()&&this.displayModal()},this.checkInterval)}cleanup(){clearInterval(this.checkInactivityInterval),this.checkInactivityInterval=null,document.removeEventListener("mousemove",this.updateActivity),document.removeEventListener("scroll",this.updateActivity)}};customElements.define("modal-presenter",ta);var sa=class extends HTMLElement{constructor(){super()}connectedCallback(){this.checkQueryStringAndUpdateContent()}checkQueryStringAndUpdateContent(){let e=this.getAttribute("key"),t=this.getAttribute("value"),s=this.getAttribute("label-text"),i=new URLSearchParams(window.location.search),r=this.querySelectorAll("[data-toggle]");i.get(e)===t&&(r.forEach(n=>n.style.display="block"),s&&this.querySelectorAll("[data-label]").forEach(o=>{o.textContent=s}))}};customElements.define("show-on-query-string",sa);var ia=class extends HTMLElement{constructor(){super();let e=`${this.key}=`,t="";for(let s of document.cookie.split(";"))s=s.trim(),s.indexOf(e)===0&&(t=s.substring(e.length,s.length));t.length&&(this.innerText=decodeURIComponent(t),this.clearAfterInjection&&(document.cookie=this.key+"=; expires=Thu, 01 Jan 1970 00:00:01 GMT; SameSite=None; Secure"))}get key(){return this.getAttribute("data-key")||""}get clearAfterInjection(){return this.hasAttribute("data-clear")}};customElements.define("inject-cookie-value",ia);var ra=class extends HTMLElement{q;
203constructor(){super(),this.q=new URLSearchParams(window.location.search),this.init()}exit=function(){console.log("exiting"),location.replace(this.q.get("url"))};init=async function(){this.q.get("url")||location.replace("/membership/");try{gtag("event","checkout",{productName:this.q.get("product"),coupon:this.q.get("coupon")})}catch(s){console.error(s)}let e=this,t=setInterval(()=>{if(window.Intercom?.booted){try{var s=new Date,i=s.getFullYear()+"-"+(s.getMonth()+1)+"-"+s.getDate()+" "+s.getHours()+":"+s.getMinutes()+":"+s.getSeconds(),r={page_title:document.title,page_url:document.location.pathname,product:this.q.get("product"),purchased_at:i};typeof Intercom=="function"&&Intercom("trackEvent","Checkout",r),clearInterval(t)}catch(n){console.error(n)}e.exit()}},100);setTimeout(function(){e.exit(!1)},1e3)}};customElements.define("checkout-init",ra);var na=class extends HTMLElement{q;constructor(){super(),this.q=new URLSearchParams(window.location.search),this.init()}init=async function(){let e=this.q.get("url");e&&(this.querySelector("#continueButton").href=e),gtag("event","purchase",{currency:this.q.get("currency")||"USD",transaction_id:this.q.get("tansactionId"),value:Number(this.q.get("price")),items:[{item_id:this.q.get("product"),item_name:this.q.get("product"),quantity:1,currency:this.q.get("currency")||"USD",price:Number(this.q.get("price"))}]}),rewardful("convert",{email:this.q.get("email")});let t=setInterval(()=>{if(window.Intercom?.booted){var s=new Date,i=s.getFullYear()+"-"+(s.getMonth()+1)+"-"+s.getDate()+" "+s.getHours()+":"+s.getMinutes()+":"+s.getSeconds(),r={page_title:document.title,page_url:document.location.pathname,product:this.q.get("product"),amount:Number(this.q.get("price")),purchased_at:i};window.Intercom("trackEvent","Purchase",r),clearInterval(t)}},100);(window.CE_API||(window.CE_API=[])).push(function(){CE2.converted("5638edaa-9647-4e6b-9773-59467c9c5819")})}};customElements.define("checkout-success",na);var oa=class extends HTMLElement{constructor(){super();let e=this.querySelector('[type="submit"]'),t=this.querySelector("form"),s=`
204      <div id="loader" class="loader" role="status">
205        <svg aria-hidden="true" focusable="false" width="110" height="110" viewBox="0 0 110 110" fill="none" xmlns="http://www.w3.org/2000/svg">
206          <path class="loader__track" d="M109.167,55C109.167,25.085 84.915,0.833 55,0.833C25.085,0.833 0.833,25.085 0.833,55C0.833,84.915 25.085,109.167 55,109.167C84.915,109.167 109.167,84.915 109.167,55ZM18.248,55C18.248,34.702 34.702,18.248 55,18.248C75.298,18.248 91.752,34.702 91.752,55C91.752,75.297 75.298,91.752 55,91.752C34.702,91.752 18.248,75.297 18.248,55Z" />
207          <path class="loader__bar" d="M98.968,43.45C101.393,42.813 102.862,40.321 102.008,37.963C100.293,33.232 97.871,28.778 94.817,24.757C90.845,19.528 85.883,15.133 80.212,11.822C74.542,8.511 68.275,6.349 61.77,5.46C56.767,4.777 51.698,4.856 46.734,5.688C44.261,6.102 42.813,8.607 43.45,11.032C44.087,13.458 46.569,14.881 49.05,14.516C52.851,13.958 56.719,13.936 60.54,14.458C65.864,15.186 70.993,16.955 75.633,19.664C80.273,22.374 84.335,25.971 87.585,30.25C89.917,33.321 91.8,36.7 93.181,40.285C94.083,42.625 96.542,44.087 98.968,43.45Z" />
208        </svg>
209        <span class="sr-only">Loading...</span>
210      </div>
211    `;t&&e&&t.addEventListener("submit",i=>{e.outerHTML=s})}};customElements.define("form-loading-state",oa);var la=class extends HTMLElement{#e=null;#t=null;constructor(){super();let e=navigator.share,t=navigator.clipboard,s=this.querySelector("#shareButton"),i=this.querySelector("#copyButton");e&&(s.classList.remove("hidden"),s.addEventListener("click",r=>this.shareUrl())),t&&(i.classList.remove("hidden"),i.addEventListener("click",r=>this.copyUrl()))}copyUrl(){let e=copyButton.dataset.url,t=this.querySelector("#copyFeedback");navigator.clipboard.writeText(e),t.classList.remove("hidden"),setTimeout(function(){t.classList.add("hidden")},3e3)}shareUrl(){let e=shareButton.dataset.url;navigator.share({title:"OCEG Event URL",text:"OCEG Event URL:",url:e})}};customElements.define("event-reward",la);var ca=class extends HTMLElement{constructor(){super(),this.days=0,this.hours=0,this.minutes=0,this.seconds=0,this.isComplete=!1,this.slottedHTML=this.innerHTML}static get observedAttributes(){return["data-date-string","data-title"]}connectedCallback(){this.updateCountdown(),this.timer=setInterval(()=>this.updateCountdown(),1e3)}disconnectedCallback(){clearInterval(this.timer)}attributeChangedCallback(e,t,s){t!==s&&this.updateCountdown()}updateCountdown(){let e=this.getAttribute("data-date-string"),t=new Date,s=new Date(e),i=Math.floor((s-t)/1e3);this.isComplete=i<=0,this.isComplete&&(i=0,clearInterval(this.timer));let r=i*1e3;this.days=Math.floor(r/(1e3*60*60*24)),this.hours=Math.floor(r/(1e3*60*60)%24),this.minutes=Math.floor(r/1e3/60%60),this.seconds=Math.floor(r/1e3%60),this.render()}padNumber(e){return e<10&&e>=0?`0${e}`:e}render(){let e=this.getAttribute("data-title")||"";this.innerHTML=this.isComplete?this.slottedHTML:`
212      <div class="countdown flow">
213        ${e.length?`<h3 class="text-step-1">${e}</h3>`:""}
214        <div class="countdown__sections">
215          <div class="countdown__section flow">
216            <div class="countdown__number">${this.padNumber(this.days)}</div>
217            <div class="countdown__label">Days</div>
218          </div>
219          <div class="countdown__section flow">
220            <div class="countdown__number">${this.padNumber(this.hours)}</div>
221            <div class="countdown__label">Hours</div>
222          </div>
223          <div class="countdown__section flow">
224            <div class="countdown__number">${this.padNumber(this.minutes)}</div>
225            <div class="countdown__label">Minutes</div>
226          </div>
227          <div class="countdown__section flow">
228            <div class="countdown__number">${this.padNumber(this.seconds)}</div>
229            <div class="countdown__label">Seconds</div>
230          </div>
231        </div>
232        
233      </div>
234    `}};customElements.define("count-down",ca);var ai=a=>{if(!a)return"";let e=a.cloneNode(!0);return e.querySelectorAll(".visually-hidden, .sr-only, [hidden]").forEach(t=>t.remove()),e.textContent.replace(/\s+/g," ").trim()},ua=a=>String(a).replace(/[&<>"]/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[e]),jl=(a,e,t)=>{let s=a.querySelector(".modal");return[`${e.name} <${e.email}>`,`OCEG asked: ${ai(s.querySelector(".modal__heading h2"))}`,`OCEG elaborated and asked: ${[...s.querySelectorAll(".modal__inner p")].map(ai).filter(
234Boolean).join(" ")}`,`${e.name} responded: ${t}`]},Wl=(a,e,t,s)=>[`<div class="consent-option-${ua(t)}">`,...a.map(i=>`<p>${ua(i)}</p>`),s?`<p><img src="${s}" style="max-width:100%" alt="${ua(`The renewal consent form as presented to ${e.name}`)}"></p>`:"","</div>"].filter(Boolean).join(`
235`),Rf=async a=>{let e=await fetch(`/user/renewal-consent-screenshot?${new URLSearchParams(a)}`);if(!e.ok)throw new Error(`Consent screenshot failed: ${e.status}`);let t=(await e.text()).trim();if(!t.startsWith("data:image/"))throw new Error("Consent screenshot was not an image");return t},da=class extends HTMLElement{constructor(){super();let e=X();!e||e.tags?.includes("renewal-consent-yes")||e.tags?.includes("autopay-off")||!e.subscriptions?.includes("all-access-pass-annual-renew")||e.membershipEndDate<new Date("2025-04-01").getTime()/1e3||(this.querySelectorAll(".modal__subtitle").forEach(t=>{t.querySelector("[data-user-name]").textContent=e.name||"",t.querySelector("[data-user-email]").textContent=e.email||"",t.querySelector("[data-user-separator]").hidden=!(e.name&&e.email)}),this.querySelectorAll("form button[type=submit]").forEach(t=>{t.setAttribute("disabled","disabled")}),this.querySelectorAll('form input[type="radio"]').forEach(t=>{t.addEventListener("change",()=>{t.closest("form").querySelector("button[type=submit]").removeAttribute("disabled")})}),this.querySelector("form#renewal-consent-step-1").addEventListener("submit",async t=>{t.preventDefault();let s=t.currentTarget.querySelector("input[type=radio]:checked"),i=s.dataset.consentOption,r=ai(s.closest("label").querySelector("span")),n,o;switch(i){case"reminder-yes":case"reminder-no":n="renewal-consent-yes",o="renewal-consent-no";break;case"switch-nonrenewing":this.querySelector("form#renewal-consent-step-1 modal-window").close(),this.querySelector("form#renewal-consent-step-2 modal-window").open();let u=await fetch("/user/billing-last-receipt",{headers:{Accept:"application/json"}});if(this.querySelector("form#renewal-consent-step-2 .loader").classList.add("visually-hidden"),this.querySelector("form#renewal-consent-step-2 #contents").classList.remove("visually-hidden"),u.ok){let d=await u.json(),h=(d.amount_paid/100).toFixed(2),m=(d.total_discount_amounts||[]).reduce((T,b)=>T+b.amount,0)||0,f=(m/100).toFixed(2),g=parseInt(this.querySelector("[data-nonrenewing-price]").dataset.nonrenewingPrice,10),y=((g-m-d.amount_paid)/100).toFixed(2);f>0?this.querySelector("#amount-discounts-wrapper").classList.remove("visually-hidden"):this.querySelector("#amount-discounts-wrapper").classList.add("visually-hidden"),this.querySelector("#amount-discounts").textContent=`$${f}`,this.querySelector("#amount-paid").textContent=`$${h}`,this.querySelectorAll("#amount-difference").forEach(T=>T.textContent=`$${y}`),this.dataset.migrateSubscriptionId=d.parent.subscription_details?.subscription}else console.error("Failed to load last invoice");return}let l=jl(t.currentTarget,e,r),c;try{c=await Rf({selection:i,date:new Date().toISOString()})}catch(u){console.error(u)}try{await fetch("/.netlify/functions/me",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tagsToAdd:n?[n]:[],tagsToRemove:o?[o]:[],formEntry:{id:"RENEWALCONSENT",name:"Renewal Consent",contents:l.join(`
236
237`),richContent:Wl(l,e,i,c)}})})}catch(u){return console.error(u),!1}finally{window.location.replace(window.location.pathname+"?tagcheck=premium")}}),this.querySelector("form#renewal-consent-step-2").addEventListener("submit",async t=>{t.preventDefault();let s=t.currentTarget.querySelector("input[type=radio]:checked"),i=s.dataset.consentOption,r=ai(s.closest("label").querySelector("span")),n,o;switch(i){case"keep-renewing":n="renewal-consent-yes",o="renewal-consent-no";break;case"migrate-invoice":n="renewal-consent-no",o="renewal-consent-yes";break}let l=jl(t.currentTarget,e,r);try{await fetch("/.netlify/functions/me",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tagsToAdd:n?[n]:[],tagsToRemove:o?[o]:[],formEntry:{id:"RENEWALCONSENT",name:"Renewal Consent",contents:l.join(`
238
239`),richContent:Wl(l,e,i)}})})}catch(c){return console.error(c),!1}finally{i==="migrate-invoice"?window.location.href=`/buy?product=aap-nonrenew&migrate=${this.dataset.migrateSubscriptionId}`:window.location.replace(window.location.pathname+"?tagcheck=premium")}}
239),this.querySelector("form#renewal-consent-step-1 modal-window").open())}};customElements.define("renewal-consent",da);var ha=class extends HTMLElement{#e="certification-expiration-consent-yes";constructor(){super(),this.querySelector("form").addEventListener("submit",async e=>{e.preventDefault();try{let t=X(),s=[];t.tags?.includes(this.#e)||s.push(this.#e),await fetch("/.netlify/functions/me",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tagsToAdd:s,formEntry:{id:"CERT-EXP-ACK",name:"Acknowledgement of Certificate Expiration Policy",contents:this.querySelector(".prose.flow").innerText}})})}catch(t){return console.error(t),!1}finally{this.querySelector("modal-window").close()}})}};customElements.define("certificate-expiration",ha);var fa=class extends HTMLElement{membership;banner;dismissButton;constructor(){super()}connectedCallback(){this.init()}disconnectedCallback(){this.dismissButton&&this.dismissButton.removeEventListener("click",this.handleDismissClick)}setCookie(e,t,s){let i=new Date(Date.now()+s*864e5).toUTCString();document.cookie=`${e}=${t}; expires=${i}; path=/`}getCookie(e){return document.cookie.split("; ").find(t=>t.startsWith(e+"="))?.split("=")[1]}dismissBanner(){this.banner&&this.banner.classList.add("visually-hidden")}showBanner(){this.banner&&this.banner.classList.remove("visually-hidden")}determineMembership(){let e=X();return e?.tags?.includes("paid")?"paid":e?.sfid?"free":"none"}handleDismissClick=()=>{this.setCookie("cookie_notice_acknowledged","true",365),this.dismissBanner()};init(){this.membership=this.determineMembership(),this.banner=this.querySelector("#cookie-banner");let e=this.getCookie("cookie_notice_acknowledged");this.membership!=="none"||e||(this.showBanner(),this.dismissButton=this.querySelector("#cookie-dismiss"),this.dismissButton?.addEventListener("click",this.handleDismissClick))}};customElements.define("site-consent",fa);var ma=class extends HTMLElement{constructor(){super(),this.initialize()}async initialize(){let e=this.querySelector("[data-invoice-loader]"),t=new URLSearchParams(window.location.search),s;if(t.has("seats")){history.replaceState({},"",`${location.pathname}`);let i=await fetch(`/.netlify/functions/buy_invoice?${t.toString()}`,{method:"GET",headers:{Accept:"application/json"}});if(!i.ok){console.error("Failed to fetch invoice data:",i.statusText),e.innerHTML='<p class="error">Failed to load invoice data. Please try again later.</p>';return}s=await i.json(),history.replaceState({},"",`${location.pathname}?invoice-url=${encodeURIComponent(s.invoice_url)}&invoice-pdf=${encodeURIComponent(s.invoice_pdf)}&invoice-email=${encodeURIComponent(s.invoice_email)}`)}else if(t.has("invoice-url"))s={invoice_url:t.get("invoice-url"),invoice_pdf:t.get("invoice-pdf"),invoice_email:t.get("invoice-email")};else{e.innerHTML='<p class="error">We could not generate an invoice. Please try again</p>';return}this.querySelector("#invoice_email").innerHTML=s.invoice_email,this.querySelector("#btn_hosted_page").setAttribute("href",s.invoice_url),this.querySelector("#btn_pdf").setAttribute("href",s.invoice_pdf),e.classList.add("visually-hidden"),this.querySelector("[data-central-prose-column]").classList.remove("visually-hidden")}};customElements.define("bundle-invoice",ma);var ga=class extends HTMLElement{constructor(){super();let e=new URLSearchParams(window.location.search);this.querySelector("input[name=sub]").value=e.get("sub"),this.querySelector("form").addEventListener("submit",t=>(this.querySelector("button[type=submit]").setAttribute("disabled","disabled"),!0))}};customElements.define("bundle-add-seats",ga);qa();wa();Ba();Ga();Ha();Wa();Ya();document.fonts.onloadingdone=({fontfaces:a})=>{a.find(t=>t.family==="Raptor V2 Premium Black")&&document.body.setAttribute("font-special-loaded","")};if(document.body.querySelector("mux-player")){let a=document.createElement("script");a.src="https://unpkg.com/@mux/mux-player",document.head.appendChild(a)}})();
240/*! Bundled license information:
241
242@algolia/recommend/dist/recommend.umd.js:
243  (*! recommend.umd.js | 4.24.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript *)
244
245algoliasearch/dist/algoliasearch.umd.js:
246  (*! algoliasearch.umd.js | 4.24.0 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript *)
247*/

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